diff --git a/DEPS b/DEPS index ec383d1..3493e64 100644 --- a/DEPS +++ b/DEPS
@@ -308,11 +308,11 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling V8 # and whatever else without interference from each other. - 'src_internal_revision': '51784961a549aa3eff970c32af08734422989955', + 'src_internal_revision': 'f5dce23de2e76a39aeabd5418dfcda30b6c8106a', # 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': 'a3a016537a8c512df42b50522e78710b320c0faf', + 'skia_revision': 'd221c1591d5939b8a3072769cab9507a7a6ba36c', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling V8 # and whatever else without interference from each other. @@ -320,11 +320,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': 'd71b8ee0f0e26b14a8fa642460df2635c2d7db2f', + 'angle_revision': '6861da63bb01592964789d531dd8a71a06057547', # 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': '632c096c22930608f334235c9e1f83d444406bb4', + 'swiftshader_revision': '764410d4d65546fd1e536b02059b1f714a390720', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling PDFium # and whatever else without interference from each other. @@ -387,7 +387,7 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling chromium_variations # and whatever else without interference from each other. - 'chromium_variations_revision': 'fd8265d81da88a9c01d40378393da538d67a749e', + 'chromium_variations_revision': '82bb2737369855a67042a9da0fc35105b2007c95', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling CrossBench # and whatever else without interference from each other. @@ -403,7 +403,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': 'f61a43042a8433b9487b37813b0bc19494a01dd7', + 'devtools_frontend_revision': '01cc0edfe78cb9f14cdfd7d5cb5cb14af1e6b2af', # 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. @@ -827,7 +827,7 @@ 'src/clank': { 'url': Var('chrome_git') + '/clank/internal/apps.git' + '@' + - '4ccf9ec2cc92967d39ca0e3d0b0158bfd7937c81', + '9fac960efbf41bbdaa05ce10d5caaf74f2ee6347', 'condition': 'checkout_android and checkout_src_internal', }, @@ -836,7 +836,7 @@ }, 'src/ios/third_party/earl_grey2/src': { - 'url': Var('chromium_git') + '/external/github.com/google/EarlGrey.git' + '@' + '26acfe36928095395dfcb6ff3d0578550bd868ac', + 'url': Var('chromium_git') + '/external/github.com/google/EarlGrey.git' + '@' + '2e38085850ae38e4b0d9325759a38a1f414f815f', 'condition': 'checkout_ios', }, @@ -1192,13 +1192,13 @@ }, 'src/third_party/depot_tools': - Var('chromium_git') + '/chromium/tools/depot_tools.git' + '@' + 'af97284b58afb6bdb7dd2b353bc651c718ce5bb4', + Var('chromium_git') + '/chromium/tools/depot_tools.git' + '@' + '6aaae85821254406042a11254d49b14c9d1b44f3', 'src/third_party/devtools-frontend/src': Var('chromium_git') + '/devtools/devtools-frontend' + '@' + Var('devtools_frontend_revision'), 'src/third_party/devtools-frontend-internal': { - 'url': Var('chrome_git') + '/devtools/devtools-internal.git' + '@' + '84f68106afc210db30fb1efa8f76425cb067e82b', + 'url': Var('chrome_git') + '/devtools/devtools-internal.git' + '@' + 'e823faa7a77921dfb5fd356b41ce9685b1ab919f', 'condition': 'checkout_src_internal', }, @@ -1652,7 +1652,7 @@ Var('chromium_git') + '/external/github.com/cisco/openh264' + '@' + '09a4f3ec842a8932341b195c5b01e141c8a16eb7', 'src/third_party/openscreen/src': - Var('chromium_git') + '/openscreen' + '@' + 'dcd61dfe0e1e6c27d6d48fd4a29a9117e7d4b666', + Var('chromium_git') + '/openscreen' + '@' + '29abac6cf360ba375bba7f88826b75dade7a4a7d', 'src/third_party/openxr/src': { 'url': Var('chromium_git') + '/external/github.com/KhronosGroup/OpenXR-SDK' + '@' + '95fe35ffb383710a6e0567e958ead9a3b66e930c', @@ -1811,7 +1811,7 @@ 'dep_type': 'cipd', }, - 'src/third_party/vulkan-deps': '{chromium_git}/vulkan-deps@6066c0d57a8bd7d68060336c7b01eeb9a1271589', + 'src/third_party/vulkan-deps': '{chromium_git}/vulkan-deps@aa20d192b8c4e4a617d93d809cc416e0429acacd', 'src/third_party/vulkan_memory_allocator': Var('chromium_git') + '/external/github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator.git' + '@' + '56300b29fbfcc693ee6609ddad3fdd5b7a449a21', @@ -1851,7 +1851,7 @@ Var('chromium_git') + '/external/github.com/gpuweb/cts.git' + '@' + '0da8f2f1189d05814b5bbfd770f362928f2fb829', 'src/third_party/webrtc': - Var('webrtc_git') + '/src.git' + '@' + '85bea5a11bf3e771b335671b9875b8a9b033f223', + Var('webrtc_git') + '/src.git' + '@' + 'b95dcde6f8b22436e3af68297f23e42fe65756d4', # Wuffs' canonical repository is at github.com/google/wuffs, but we use # Skia's mirror of Wuffs, the same as in upstream Skia's DEPS file. @@ -4065,7 +4065,7 @@ 'src/components/optimization_guide/internal': { 'url': Var('chrome_git') + '/chrome/components/optimization_guide.git' + '@' + - 'a2e21ab67af8c7fd133c90ec13d3b248640c199e', + 'e306a767178bbe3e17c4404a2713992423162b39', 'condition': 'checkout_src_internal', }, @@ -4125,7 +4125,7 @@ 'src/ios_internal': { 'url': Var('chrome_git') + '/chrome/ios_internal.git' + '@' + - '4e9a9e1ff027107175ef685b140354acc5bfc1a9', + '2e8862517f6676771a2aaa26c8155238ac1981af', 'condition': 'checkout_ios and checkout_src_internal', },
diff --git a/android_webview/browser/state_serializer.cc b/android_webview/browser/state_serializer.cc index fc61440..52873fff 100644 --- a/android_webview/browser/state_serializer.cc +++ b/android_webview/browser/state_serializer.cc
@@ -161,15 +161,17 @@ pickle->WriteString(entry.GetBaseURLForDataURL().spec()); if (state_version >= internal::AW_STATE_VERSION_DATA_URL) { - std::string_view view; + const char* data = nullptr; + size_t size = 0; const scoped_refptr<const base::RefCountedString>& s = entry.GetDataURLAsString(); if (s) { - view = base::as_string_view(*s); + data = s->front_as<char>(); + size = s->size(); } // Even when |entry.GetDataForDataURL()| is null we still need to write a // zero-length entry to ensure the fields all line up when read back in. - pickle->WriteData(view.data(), view.size()); + pickle->WriteData(data, size); } pickle->WriteBool(static_cast<int>(entry.GetIsOverridingUserAgent())); @@ -314,7 +316,7 @@ return false; if (size > 0) { scoped_refptr<base::RefCountedString> ref = new base::RefCountedString(); - ref->as_string().assign(data, size); + ref->data().assign(data, size); entry->SetDataURLAsString(ref); } }
diff --git a/android_webview/browser/state_serializer_unittest.cc b/android_webview/browser/state_serializer_unittest.cc index cdb3d70..7a999d0 100644 --- a/android_webview/browser/state_serializer_unittest.cc +++ b/android_webview/browser/state_serializer_unittest.cc
@@ -52,7 +52,7 @@ entry->SetBaseURLForDataURL(base_url_for_data_url); { scoped_refptr<base::RefCountedString> s = new base::RefCountedString(); - s->as_string() = data_url_as_string; + s->data().assign(data_url_as_string); entry->SetDataURLAsString(s); } entry->SetIsOverridingUserAgent(is_overriding_user_agent); @@ -138,8 +138,8 @@ EXPECT_EQ(entry->GetHasPostData(), copy->GetHasPostData()); EXPECT_EQ(entry->GetOriginalRequestURL(), copy->GetOriginalRequestURL()); EXPECT_EQ(entry->GetBaseURLForDataURL(), copy->GetBaseURLForDataURL()); - EXPECT_EQ(entry->GetDataURLAsString()->as_string(), - copy->GetDataURLAsString()->as_string()); + EXPECT_EQ(entry->GetDataURLAsString()->data(), + copy->GetDataURLAsString()->data()); EXPECT_EQ(entry->GetIsOverridingUserAgent(), copy->GetIsOverridingUserAgent()); EXPECT_EQ(entry->GetTimestamp(), copy->GetTimestamp()); @@ -278,7 +278,7 @@ huge_data_url.replace(0, strlen(url::kDataScheme), url::kDataScheme); { scoped_refptr<base::RefCountedString> s = new base::RefCountedString(); - s->as_string().assign(huge_data_url); + s->data().assign(huge_data_url); entry->SetDataURLAsString(s); } @@ -293,7 +293,7 @@ bool result = internal::RestoreNavigationEntryFromPickle( &iterator, copy.get(), context.get()); EXPECT_TRUE(result); - EXPECT_EQ(huge_data_url, copy->GetDataURLAsString()->as_string()); + EXPECT_EQ(huge_data_url, copy->GetDataURLAsString()->data()); } } // namespace android_webview
diff --git a/ash/BUILD.gn b/ash/BUILD.gn index f0c52f89..8626d68 100644 --- a/ash/BUILD.gn +++ b/ash/BUILD.gn
@@ -1071,6 +1071,7 @@ "picker/views/picker_widget.h", "picker/views/picker_zero_state_view.cc", "picker/views/picker_zero_state_view.h", + "picker/views/picker_zero_state_view_delegate.h", "policy/policy_recommendation_restorer.cc", "policy/policy_recommendation_restorer.h", "power/hid_battery_util.cc",
diff --git a/ash/app_list/views/app_list_folder_view.cc b/ash/app_list/views/app_list_folder_view.cc index f20406e..68abf73 100644 --- a/ash/app_list/views/app_list_folder_view.cc +++ b/ash/app_list/views/app_list_folder_view.cc
@@ -626,8 +626,9 @@ ~ScrollViewWithMaxHeight() override = default; // views::View: - gfx::Size CalculatePreferredSize() const override { - gfx::Size size = views::ScrollView::CalculatePreferredSize(); + gfx::Size CalculatePreferredSize( + const views::SizeBounds& available_size) const override { + gfx::Size size = views::ScrollView::CalculatePreferredSize(available_size); const int tile_height = folder_view_->items_grid_view()->GetTotalTileSize(/*page=*/0).height(); // Show a maximum of 4 full rows, plus a little bit of the next row to make
diff --git a/ash/assistant/ui/main_stage/suggestion_container_view.cc b/ash/assistant/ui/main_stage/suggestion_container_view.cc index 56154d3..0f1fa4d 100644 --- a/ash/assistant/ui/main_stage/suggestion_container_view.cc +++ b/ash/assistant/ui/main_stage/suggestion_container_view.cc
@@ -122,7 +122,8 @@ AssistantSuggestionsController::Get()->GetModel()->RemoveObserver(this); } -gfx::Size SuggestionContainerView::CalculatePreferredSize() const { +gfx::Size SuggestionContainerView::CalculatePreferredSize( + const views::SizeBounds& available_size) const { return gfx::Size(INT_MAX, GetHeightForWidth(INT_MAX)); }
diff --git a/ash/assistant/ui/main_stage/suggestion_container_view.h b/ash/assistant/ui/main_stage/suggestion_container_view.h index fa7c3456..65de3f1 100644 --- a/ash/assistant/ui/main_stage/suggestion_container_view.h +++ b/ash/assistant/ui/main_stage/suggestion_container_view.h
@@ -45,7 +45,8 @@ ~SuggestionContainerView() override; // AnimatedContainerView: - gfx::Size CalculatePreferredSize() const override; + gfx::Size CalculatePreferredSize( + const views::SizeBounds& available_size) const override; int GetHeightForWidth(int width) const override; void OnContentsPreferredSizeChanged(views::View* content_view) override; void OnAssistantControllerDestroying() override;
diff --git a/ash/assistant/ui/main_stage/ui_element_container_view.cc b/ash/assistant/ui/main_stage/ui_element_container_view.cc index c010a89..cc1e7e1 100644 --- a/ash/assistant/ui/main_stage/ui_element_container_view.cc +++ b/ash/assistant/ui/main_stage/ui_element_container_view.cc
@@ -94,7 +94,8 @@ UiElementContainerView::~UiElementContainerView() = default; -gfx::Size UiElementContainerView::CalculatePreferredSize() const { +gfx::Size UiElementContainerView::CalculatePreferredSize( + const views::SizeBounds& available_size) const { return gfx::Size(INT_MAX, GetHeightForWidth(INT_MAX)); }
diff --git a/ash/assistant/ui/main_stage/ui_element_container_view.h b/ash/assistant/ui/main_stage/ui_element_container_view.h index 915a5a5..ec5c818 100644 --- a/ash/assistant/ui/main_stage/ui_element_container_view.h +++ b/ash/assistant/ui/main_stage/ui_element_container_view.h
@@ -41,7 +41,8 @@ void OnOverflowIndicatorVisibilityChanged(bool is_visible); // AnimatedContainerView: - gfx::Size CalculatePreferredSize() const override; + gfx::Size CalculatePreferredSize( + const views::SizeBounds& available_size) const override; int GetHeightForWidth(int width) const override; gfx::Size GetMinimumSize() const override; void Layout(PassKey) override;
diff --git a/ash/constants/ash_features.cc b/ash/constants/ash_features.cc index 6fff71a..90c7152b 100644 --- a/ash/constants/ash_features.cc +++ b/ash/constants/ash_features.cc
@@ -1937,11 +1937,6 @@ "MultiZoneRgbKeyboard", base::FEATURE_ENABLED_BY_DEFAULT); -// Enables support for multilingual assistive typing on ChromeOS. -BASE_FEATURE(kMultilingualTyping, - "MultilingualTyping", - base::FEATURE_DISABLED_BY_DEFAULT); - // Enables Nearby Connections to specificy KeepAlive interval and timeout while // also making the Nearby Connections WebRTC defaults longer. BASE_FEATURE(kNearbyKeepAliveFix,
diff --git a/ash/constants/ash_features.h b/ash/constants/ash_features.h index 81a9ae7..ca55bbd 100644 --- a/ash/constants/ash_features.h +++ b/ash/constants/ash_features.h
@@ -586,7 +586,6 @@ extern const base::FeatureParam<base::TimeDelta> kMultiDeviceSetupNotificationTimeLimit; COMPONENT_EXPORT(ASH_CONSTANTS) BASE_DECLARE_FEATURE(kMultiZoneRgbKeyboard); -COMPONENT_EXPORT(ASH_CONSTANTS) BASE_DECLARE_FEATURE(kMultilingualTyping); COMPONENT_EXPORT(ASH_CONSTANTS) BASE_DECLARE_FEATURE(kNearbyKeepAliveFix); COMPONENT_EXPORT(ASH_CONSTANTS) BASE_DECLARE_FEATURE(kNearbyPresence); COMPONENT_EXPORT(ASH_CONSTANTS) BASE_DECLARE_FEATURE(kNotificationLimit);
diff --git a/ash/picker/views/picker_view.cc b/ash/picker/views/picker_view.cc index 62d792a6..70ea330 100644 --- a/ash/picker/views/picker_view.cc +++ b/ash/picker/views/picker_view.cc
@@ -208,6 +208,15 @@ performance_metrics_.StopRecording(); } +void PickerView::SelectZeroStateCategory(PickerCategory category) { + SelectCategory(category); +} + +void PickerView::SelectSuggestedZeroStateResult( + const PickerSearchResult& result) { + SelectSearchResult(result); +} + gfx::Rect PickerView::GetTargetBounds(const gfx::Rect& anchor_bounds, PickerLayoutType layout_type) { return GetPickerViewBounds(anchor_bounds, layout_type, size(), @@ -345,16 +354,13 @@ views::MaximumFlexSizeRule::kUnbounded) .WithWeight(1)); - // `base::Unretained` is safe here because this class owns - // `zero_state_view_`, `category_view_` and `search_results_view`_. zero_state_view_ = contents_view_->AddPage(std::make_unique<PickerZeroStateView>( - delegate_->GetAvailableCategories(), - delegate_->ShouldShowSuggestedResults(), kPickerSize.width(), - base::BindRepeating(&PickerView::SelectCategory, - base::Unretained(this)), - base::BindRepeating(&PickerView::SelectSearchResult, - base::Unretained(this)))); + this, delegate_->GetAvailableCategories(), + delegate_->ShouldShowSuggestedResults(), kPickerSize.width())); + + // `base::Unretained` is safe here because this class owns + // `zero_state_view_`, `category_view_` and `search_results_view`_. category_view_ = contents_view_->AddPage(std::make_unique<PickerCategoryView>( kPickerSize.width(), base::BindOnce(&PickerView::SelectSearchResult, base::Unretained(this)),
diff --git a/ash/picker/views/picker_view.h b/ash/picker/views/picker_view.h index 90080967..07183fc5 100644 --- a/ash/picker/views/picker_view.h +++ b/ash/picker/views/picker_view.h
@@ -12,6 +12,7 @@ #include "ash/picker/metrics/picker_performance_metrics.h" #include "ash/picker/model/picker_search_results_section.h" #include "ash/picker/views/picker_key_event_handler.h" +#include "ash/picker/views/picker_zero_state_view_delegate.h" #include "ash/public/cpp/ash_web_view.h" #include "ash/public/cpp/picker/picker_category.h" #include "base/memory/weak_ptr.h" @@ -39,7 +40,8 @@ class SystemShadow; // View for the Picker widget. -class ASH_EXPORT PickerView : public views::WidgetDelegateView { +class ASH_EXPORT PickerView : public views::WidgetDelegateView, + public PickerZeroStateViewDelegate { METADATA_HEADER(PickerView, views::WidgetDelegateView) public: @@ -63,6 +65,11 @@ void AddedToWidget() override; void RemovedFromWidget() override; + // PickerZeroStateViewDelegate: + void SelectZeroStateCategory(PickerCategory category) override; + void SelectSuggestedZeroStateResult( + const PickerSearchResult& result) override; + // Returns the target bounds for this Picker view. The target bounds try to // vertically align `search_field_view_` with `anchor_bounds`. `anchor_bounds` // and returned bounds should be in screen coordinates.
diff --git a/ash/picker/views/picker_zero_state_view.cc b/ash/picker/views/picker_zero_state_view.cc index b858b13..aa69848 100644 --- a/ash/picker/views/picker_zero_state_view.cc +++ b/ash/picker/views/picker_zero_state_view.cc
@@ -19,6 +19,7 @@ #include "ash/picker/views/picker_section_list_view.h" #include "ash/picker/views/picker_section_view.h" #include "ash/picker/views/picker_strings.h" +#include "ash/picker/views/picker_zero_state_view_delegate.h" #include "ash/public/cpp/picker/picker_category.h" #include "ash/resources/vector_icons/vector_icons.h" #include "ash/strings/grit/ash_strings.h" @@ -78,12 +79,11 @@ std::unique_ptr<PickerListItemView> CreateListItemViewForSearchResult( const PickerSearchResult& result, - PickerZeroStateView::SelectSearchResultCallback callback) { + PickerListItemView::SelectItemCallback callback) { // Only supports Clipboard results right now. if (auto* data = std::get_if<PickerSearchResult::ClipboardData>(&result.data())) { - return CreateListItemViewForClipboardResult( - *data, base::BindRepeating(std::move(callback), result)); + return CreateListItemViewForClipboardResult(*data, std::move(callback)); } return nullptr; } @@ -91,12 +91,11 @@ } // namespace PickerZeroStateView::PickerZeroStateView( + PickerZeroStateViewDelegate* delegate, base::span<const PickerCategory> available_categories, bool show_suggested_results, - int picker_view_width, - SelectCategoryCallback select_category_callback, - SelectSearchResultCallback select_result_callback) - : select_result_callback_(std::move(select_result_callback)) { + int picker_view_width) + : delegate_(delegate) { SetLayoutManager(std::make_unique<views::FlexLayout>()) ->SetOrientation(views::LayoutOrientation::kVertical); @@ -113,7 +112,8 @@ for (PickerCategory category : available_categories) { auto item_view = std::make_unique<PickerListItemView>( - base::BindRepeating(select_category_callback, category)); + base::BindRepeating(&PickerZeroStateView::OnCategorySelected, + weak_ptr_factory_.GetWeakPtr(), category)); item_view->SetPrimaryText(GetLabelForPickerCategory(category)); item_view->SetLeadingIcon(GetIconForPickerCategory(category)); GetOrCreateSectionView(category)->AddListItem(std::move(item_view)); @@ -249,6 +249,15 @@ return section_view; } +void PickerZeroStateView::OnCategorySelected(PickerCategory category) { + delegate_->SelectZeroStateCategory(category); +} + +void PickerZeroStateView::OnSuggestedResultSelected( + const PickerSearchResult& result) { + delegate_->SelectSuggestedZeroStateResult(result); +} + void PickerZeroStateView::SetPseudoFocusedView(views::View* view) { if (pseudo_focused_view_ == view) { return; @@ -298,8 +307,10 @@ } for (const auto& result : results) { if (std::unique_ptr<PickerListItemView> item_view = - CreateListItemViewForSearchResult(result, - select_result_callback_)) { + CreateListItemViewForSearchResult( + result, base::BindRepeating( + &PickerZeroStateView::OnSuggestedResultSelected, + weak_ptr_factory_.GetWeakPtr(), result))) { suggested_section_view_->AddListItem(std::move(item_view)); } }
diff --git a/ash/picker/views/picker_zero_state_view.h b/ash/picker/views/picker_zero_state_view.h index a3fcc16..faa66b0 100644 --- a/ash/picker/views/picker_zero_state_view.h +++ b/ash/picker/views/picker_zero_state_view.h
@@ -29,25 +29,17 @@ class PickerSearchResult; class PickerSectionListView; class PickerSectionView; +class PickerZeroStateViewDelegate; class ASH_EXPORT PickerZeroStateView : public PickerPageView { METADATA_HEADER(PickerZeroStateView, PickerPageView) public: - // Indicates the user has selected a category. - using SelectCategoryCallback = - base::RepeatingCallback<void(PickerCategory category)>; - - // Indicates the user has selected a result. - using SelectSearchResultCallback = - base::RepeatingCallback<void(const PickerSearchResult& result)>; - explicit PickerZeroStateView( + PickerZeroStateViewDelegate* delegate, base::span<const PickerCategory> available_categories, bool show_suggested_results, - int picker_view_width, - SelectCategoryCallback select_category_callback, - SelectSearchResultCallback select_result_callback); + int picker_view_width); PickerZeroStateView(const PickerZeroStateView&) = delete; PickerZeroStateView& operator=(const PickerZeroStateView&) = delete; ~PickerZeroStateView() override; @@ -70,6 +62,9 @@ } private: + void OnCategorySelected(PickerCategory category); + void OnSuggestedResultSelected(const PickerSearchResult& result); + // Gets or creates the section to contain `category`. PickerSectionView* GetOrCreateSectionView(PickerCategory category); @@ -79,7 +74,7 @@ void OnFetchSuggestedResults(std::vector<PickerSearchResult> result); - SelectSearchResultCallback select_result_callback_; + raw_ptr<PickerZeroStateViewDelegate> delegate_; // The section list view, contains the section views. raw_ptr<PickerSectionListView> section_list_view_ = nullptr;
diff --git a/ash/picker/views/picker_zero_state_view_delegate.h b/ash/picker/views/picker_zero_state_view_delegate.h new file mode 100644 index 0000000..fe741189 --- /dev/null +++ b/ash/picker/views/picker_zero_state_view_delegate.h
@@ -0,0 +1,26 @@ +// Copyright 2024 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef ASH_PICKER_VIEWS_PICKER_ZERO_STATE_VIEW_DELEGATE_H_ +#define ASH_PICKER_VIEWS_PICKER_ZERO_STATE_VIEW_DELEGATE_H_ + +#include "ash/ash_export.h" +#include "ash/public/cpp/picker/picker_category.h" + +namespace ash { + +class PickerSearchResult; + +// Delegate for `PickerZeroStateView`. +class ASH_EXPORT PickerZeroStateViewDelegate { + public: + virtual void SelectZeroStateCategory(PickerCategory category) = 0; + + virtual void SelectSuggestedZeroStateResult( + const PickerSearchResult& result) = 0; +}; + +} // namespace ash + +#endif // ASH_PICKER_VIEWS_PICKER_ZERO_STATE_VIEW_DELEGATE_H_
diff --git a/ash/picker/views/picker_zero_state_view_unittest.cc b/ash/picker/views/picker_zero_state_view_unittest.cc index 367408f..5b86013b 100644 --- a/ash/picker/views/picker_zero_state_view_unittest.cc +++ b/ash/picker/views/picker_zero_state_view_unittest.cc
@@ -13,6 +13,7 @@ #include "ash/picker/views/picker_category_type.h" #include "ash/picker/views/picker_item_view.h" #include "ash/picker/views/picker_section_view.h" +#include "ash/picker/views/picker_zero_state_view_delegate.h" #include "ash/public/cpp/picker/picker_category.h" #include "ash/public/cpp/picker/picker_search_result.h" #include "ash/style/ash_color_provider.h" @@ -30,13 +31,16 @@ namespace ash { namespace { +using ::testing::AllOf; using ::testing::Contains; using ::testing::ElementsAre; +using ::testing::Field; using ::testing::IsEmpty; using ::testing::IsNull; using ::testing::Key; using ::testing::Not; using ::testing::Property; +using ::testing::VariantWith; constexpr int kPickerWidth = 320; @@ -51,14 +55,23 @@ PickerCategory::kUnitsMaths, }}; +class MockZeroStateViewDelegate : public PickerZeroStateViewDelegate { + public: + MOCK_METHOD(void, SelectZeroStateCategory, (PickerCategory), (override)); + MOCK_METHOD(void, + SelectSuggestedZeroStateResult, + (const PickerSearchResult&), + (override)); +}; + class PickerZeroStateViewTest : public views::ViewsTestBase { private: AshColorProvider ash_color_provider_; }; TEST_F(PickerZeroStateViewTest, CreatesCategorySections) { - PickerZeroStateView view(kAllCategories, true, kPickerWidth, - base::DoNothing(), base::DoNothing()); + MockZeroStateViewDelegate mock_delegate; + PickerZeroStateView view(&mock_delegate, kAllCategories, true, kPickerWidth); EXPECT_THAT(view.section_views_for_testing(), ElementsAre(Key(PickerCategoryType::kEditors), @@ -70,10 +83,10 @@ TEST_F(PickerZeroStateViewTest, LeftClickSelectsCategory) { std::unique_ptr<views::Widget> widget = CreateTestWidget(); widget->SetFullscreen(true); - base::test::TestFuture<PickerCategory> future; + MockZeroStateViewDelegate mock_delegate; auto* view = widget->SetContentsView(std::make_unique<PickerZeroStateView>( - std::vector<PickerCategory>{PickerCategory::kExpressions}, false, - kPickerWidth, future.GetRepeatingCallback(), base::DoNothing())); + &mock_delegate, std::vector<PickerCategory>{PickerCategory::kExpressions}, + false, kPickerWidth)); widget->Show(); ASSERT_THAT(view->section_views_for_testing(), Contains(Key(PickerCategoryType::kGeneral))); @@ -82,13 +95,15 @@ ->second->item_views_for_testing(), Not(IsEmpty())); + EXPECT_CALL(mock_delegate, + SelectZeroStateCategory(PickerCategory::kExpressions)) + .Times(1); + PickerItemView* category_view = view->section_views_for_testing() .find(PickerCategoryType::kGeneral) ->second->item_views_for_testing()[0]; ViewDrawnWaiter().Wait(category_view); LeftClickOn(*category_view); - - EXPECT_EQ(future.Get(), PickerCategory::kExpressions); } TEST_F(PickerZeroStateViewTest, ShowsClipboardItems) { @@ -110,23 +125,31 @@ std::unique_ptr<views::Widget> widget = CreateTestWidget(); widget->SetFullscreen(true); base::test::TestFuture<const PickerSearchResult&> future; + MockZeroStateViewDelegate mock_delegate; auto* view = widget->SetContentsView(std::make_unique<PickerZeroStateView>( - kAllCategories, true, kPickerWidth, base::DoNothing(), - future.GetRepeatingCallback())); + &mock_delegate, kAllCategories, true, kPickerWidth)); widget->Show(); - EXPECT_THAT(view->SuggestedSectionForTesting(), Not(IsNull())); + EXPECT_CALL( + mock_delegate, + SelectSuggestedZeroStateResult(Property( + "data", &ash::PickerSearchResult::data, + VariantWith<ash::PickerSearchResult::ClipboardData>(AllOf( + Field("item_id", &ash::PickerSearchResult::ClipboardData::item_id, + item_id), + Field("display_format", + &ash::PickerSearchResult::ClipboardData::display_format, + PickerSearchResult::ClipboardData::DisplayFormat::kText), + Field("display_text", + &ash::PickerSearchResult::ClipboardData::display_text, + u"test")))))) + .Times(1); + + ASSERT_THAT(view->SuggestedSectionForTesting(), Not(IsNull())); PickerItemView* item_view = view->SuggestedSectionForTesting()->item_views_for_testing()[0]; - ViewDrawnWaiter().Wait(item_view); LeftClickOn(*item_view); - - EXPECT_EQ( - future.Get(), - PickerSearchResult::Clipboard( - item_id, PickerSearchResult::ClipboardData::DisplayFormat::kText, - u"test", /*display_image=*/{})); } TEST_F(PickerZeroStateViewTest, HidesSuggestedSectionWhenNoItemsToDisplay) { @@ -139,9 +162,9 @@ std::unique_ptr<views::Widget> widget = CreateTestWidget(); widget->SetFullscreen(true); + MockZeroStateViewDelegate mock_delegate; auto* view = widget->SetContentsView(std::make_unique<PickerZeroStateView>( - kAllCategories, true, kPickerWidth, base::DoNothing(), - base::DoNothing())); + &mock_delegate, kAllCategories, true, kPickerWidth)); widget->Show(); EXPECT_THAT(view->SuggestedSectionForTesting(), IsNull()); @@ -150,9 +173,9 @@ TEST_F(PickerZeroStateViewTest, DoesntShowClipboardItems) { std::unique_ptr<views::Widget> widget = CreateTestWidget(); widget->SetFullscreen(true); + MockZeroStateViewDelegate mock_delegate; auto* view = widget->SetContentsView(std::make_unique<PickerZeroStateView>( - kAllCategories, false, kPickerWidth, base::DoNothing(), - base::DoNothing())); + &mock_delegate, kAllCategories, false, kPickerWidth)); widget->Show(); EXPECT_THAT(view->SuggestedSectionForTesting(), IsNull());
diff --git a/ash/quick_pair/repository/fast_pair/proto_conversions.cc b/ash/quick_pair/repository/fast_pair/proto_conversions.cc index 95f68d05..12ccbb0 100644 --- a/ash/quick_pair/repository/fast_pair/proto_conversions.cc +++ b/ash/quick_pair/repository/fast_pair/proto_conversions.cc
@@ -56,7 +56,8 @@ StoredDiscoveryItem_State_STATE_ENABLED); auto image_memory = device_metadata->image().As1xPNGBytes(); - std::string png_encoded_image(base::as_string_view(*image_memory)); + std::string png_encoded_image(image_memory->front_as<char>(), + image_memory->size()); discovery_item.set_icon_png(png_encoded_image); discovery_item.add_stored_relevances()->mutable_relevance()->set_evaluation(
diff --git a/ash/style/style_viewer/pagination_instances_grid_view_factory.cc b/ash/style/style_viewer/pagination_instances_grid_view_factory.cc index 937435e..e9c3267 100644 --- a/ash/style/style_viewer/pagination_instances_grid_view_factory.cc +++ b/ash/style/style_viewer/pagination_instances_grid_view_factory.cc
@@ -119,7 +119,8 @@ ~PaginationTestScrollView() override = default; // views::ScrollView: - gfx::Size CalculatePreferredSize() const override { + gfx::Size CalculatePreferredSize( + const views::SizeBounds& available_size) const override { return gfx::Size(kPageWidth, kPageHeight); }
diff --git a/ash/system/input_device_settings/input_device_settings_notification_controller_unittest.cc b/ash/system/input_device_settings/input_device_settings_notification_controller_unittest.cc index acbfae5..d676c7e 100644 --- a/ash/system/input_device_settings/input_device_settings_notification_controller_unittest.cc +++ b/ash/system/input_device_settings/input_device_settings_notification_controller_unittest.cc
@@ -17,6 +17,7 @@ #include "ash/system/toast/anchored_nudge_manager_impl.h" #include "ash/test/ash_test_base.h" #include "base/containers/contains.h" +#include "base/run_loop.h" #include "base/values.h" #include "testing/gmock/include/gmock/gmock.h" #include "testing/gtest/include/gtest/gtest.h" @@ -96,6 +97,7 @@ void CancelNudge(const std::string& id) { Shell::Get()->anchored_nudge_manager()->Cancel(id); + base::RunLoop().RunUntilIdle(); } } // namespace @@ -568,22 +570,17 @@ TEST_F(InputDeviceSettingsNotificationControllerTest, ShowTopRowRewritingNudge) { - const AnchoredNudge* nudge = - Shell::Get()->anchored_nudge_manager()->GetNudgeIfShown( - kTopRowKeyNoMatchNudgeId); - ASSERT_FALSE(nudge); + AnchoredNudgeManagerImpl* nudge_manager = + Shell::Get()->anchored_nudge_manager(); + ASSERT_TRUE(nudge_manager); + EXPECT_FALSE(nudge_manager->GetNudgeIfShown(kTopRowKeyNoMatchNudgeId)); controller()->ShowTopRowRewritingNudge(); - const AnchoredNudge* nudge_shown = - Shell::Get()->anchored_nudge_manager()->GetNudgeIfShown( - kTopRowKeyNoMatchNudgeId); - ASSERT_TRUE(nudge_shown); - EXPECT_TRUE(nudge_shown->GetVisible()); + EXPECT_TRUE(nudge_manager->GetNudgeIfShown(kTopRowKeyNoMatchNudgeId)); } -// TODO(crbug.com/334987779): Re-enable this test TEST_F(InputDeviceSettingsNotificationControllerTest, - DISABLED_ShowSixPackKeyRewritingNudge) { + ShowSixPackKeyRewritingNudge) { const AnchoredNudge* nudge = Shell::Get()->anchored_nudge_manager()->GetNudgeIfShown( kSixPackKeyNoMatchNudgeId); @@ -601,106 +598,89 @@ prefs::kKeyboardDefaultChromeOSSettings, std::move(remappings)); AnchoredNudgeManagerImpl* nudge_manager = Shell::Get()->anchored_nudge_manager(); - EXPECT_TRUE(nudge_manager); + ASSERT_TRUE(nudge_manager); // Display nudge for VKEY_INSERT. controller()->ShowSixPackKeyRewritingNudge( ui::VKEY_INSERT, ui::mojom::SixPackShortcutModifier::kSearch); - const AnchoredNudge* nudge_shown = - nudge_manager->GetNudgeIfShown(kSixPackKeyNoMatchNudgeId); - ASSERT_TRUE(nudge_shown); - EXPECT_TRUE(nudge_shown->GetVisible()); + + EXPECT_TRUE(nudge_manager->GetNudgeIfShown(kSixPackKeyNoMatchNudgeId)); EXPECT_EQ( nudge_manager->GetNudgeBodyTextForTest(kSixPackKeyNoMatchNudgeId), l10n_util::GetStringUTF16( IDS_ASH_SETTINGS_KEYBOARD_USE_FN_KEY_FOR_SEARCH_PLUS_SHIFT_BACKSPACE_NUDGE_DESCRIPTION)); CancelNudge(kSixPackKeyNoMatchNudgeId); - EXPECT_FALSE(nudge_shown->GetVisible()); + EXPECT_FALSE(nudge_manager->GetNudgeIfShown(kSixPackKeyNoMatchNudgeId)); // Display nudge for VKEY_DELETE. controller()->ShowSixPackKeyRewritingNudge( ui::VKEY_DELETE, ui::mojom::SixPackShortcutModifier::kSearch); // Modifier not match, nudge should not show. - EXPECT_FALSE(nudge_shown->GetVisible()); + EXPECT_FALSE(nudge_manager->GetNudgeIfShown(kSixPackKeyNoMatchNudgeId)); controller()->ShowSixPackKeyRewritingNudge( ui::VKEY_DELETE, ui::mojom::SixPackShortcutModifier::kAlt); - EXPECT_TRUE(nudge_shown); - EXPECT_TRUE(nudge_shown->GetVisible()); + EXPECT_TRUE(nudge_manager->GetNudgeIfShown(kSixPackKeyNoMatchNudgeId)); EXPECT_EQ( nudge_manager->GetNudgeBodyTextForTest(kSixPackKeyNoMatchNudgeId), l10n_util::GetStringUTF16( IDS_ASH_SETTINGS_KEYBOARD_USE_FN_KEY_FOR_ALT_PLUS_BACKSPACE_NUDGE_DESCRIPTION)); CancelNudge(kSixPackKeyNoMatchNudgeId); - EXPECT_FALSE(nudge_shown->GetVisible()); + EXPECT_FALSE(nudge_manager->GetNudgeIfShown(kSixPackKeyNoMatchNudgeId)); // Display nudge for VKEY_HOME. - EXPECT_FALSE(nudge_shown->GetVisible()); controller()->ShowSixPackKeyRewritingNudge( ui::VKEY_HOME, ui::mojom::SixPackShortcutModifier::kSearch); - EXPECT_TRUE(nudge_shown); - EXPECT_TRUE(nudge_shown->GetVisible()); + EXPECT_TRUE(nudge_manager->GetNudgeIfShown(kSixPackKeyNoMatchNudgeId)); EXPECT_EQ( nudge_manager->GetNudgeBodyTextForTest(kSixPackKeyNoMatchNudgeId), l10n_util::GetStringUTF16( IDS_ASH_SETTINGS_KEYBOARD_USE_FN_KEY_FOR_SEARCH_PLUS_LEFT_NUDGE_DESCRIPTION)); CancelNudge(kSixPackKeyNoMatchNudgeId); - EXPECT_FALSE(nudge_shown->GetVisible()); + EXPECT_FALSE(nudge_manager->GetNudgeIfShown(kSixPackKeyNoMatchNudgeId)); // Display nudge for VKEY_END. - EXPECT_FALSE(nudge_shown->GetVisible()); controller()->ShowSixPackKeyRewritingNudge( ui::VKEY_END, ui::mojom::SixPackShortcutModifier::kSearch); - EXPECT_TRUE(nudge_shown); - EXPECT_TRUE(nudge_shown->GetVisible()); + EXPECT_TRUE(nudge_manager->GetNudgeIfShown(kSixPackKeyNoMatchNudgeId)); EXPECT_EQ( nudge_manager->GetNudgeBodyTextForTest(kSixPackKeyNoMatchNudgeId), l10n_util::GetStringUTF16( IDS_ASH_SETTINGS_KEYBOARD_USE_FN_KEY_FOR_SEARCH_PLUS_RIGHT_NUDGE_DESCRIPTION)); CancelNudge(kSixPackKeyNoMatchNudgeId); - EXPECT_FALSE(nudge_shown->GetVisible()); + EXPECT_FALSE(nudge_manager->GetNudgeIfShown(kSixPackKeyNoMatchNudgeId)); // Display nudge for VKEY_PRIOR. - EXPECT_FALSE(nudge_shown->GetVisible()); controller()->ShowSixPackKeyRewritingNudge( ui::VKEY_PRIOR, ui::mojom::SixPackShortcutModifier::kAlt); - EXPECT_TRUE(nudge_shown); - EXPECT_TRUE(nudge_shown->GetVisible()); + EXPECT_TRUE(nudge_manager->GetNudgeIfShown(kSixPackKeyNoMatchNudgeId)); EXPECT_EQ( nudge_manager->GetNudgeBodyTextForTest(kSixPackKeyNoMatchNudgeId), l10n_util::GetStringUTF16( IDS_ASH_SETTINGS_KEYBOARD_USE_FN_KEY_FOR_ALT_PLUS_UP_NUDGE_DESCRIPTION)); CancelNudge(kSixPackKeyNoMatchNudgeId); - EXPECT_FALSE(nudge_shown->GetVisible()); + EXPECT_FALSE(nudge_manager->GetNudgeIfShown(kSixPackKeyNoMatchNudgeId)); // Six pack key VKEY_NEXT is not in the prefDict, should not show anything. - EXPECT_FALSE(nudge_shown->GetVisible()); controller()->ShowSixPackKeyRewritingNudge( ui::VKEY_NEXT, ui::mojom::SixPackShortcutModifier::kSearch); - EXPECT_TRUE(nudge_shown); - EXPECT_FALSE(nudge_shown->GetVisible()); + EXPECT_FALSE(nudge_manager->GetNudgeIfShown(kSixPackKeyNoMatchNudgeId)); // Call the method with a non six pack key, should not show anything. // Six pack key VKEY_NEXT is not in the prefDict, should not show anything. - EXPECT_FALSE(nudge_shown->GetVisible()); controller()->ShowSixPackKeyRewritingNudge( ui::VKEY_BRIGHTNESS_UP, ui::mojom::SixPackShortcutModifier::kSearch); - EXPECT_TRUE(nudge_shown); - EXPECT_FALSE(nudge_shown->GetVisible()); + EXPECT_FALSE(nudge_manager->GetNudgeIfShown(kSixPackKeyNoMatchNudgeId)); } TEST_F(InputDeviceSettingsNotificationControllerTest, ShowCapsLockRewritingNudge) { - const AnchoredNudge* nudge = - Shell::Get()->anchored_nudge_manager()->GetNudgeIfShown( - kCapsLockNoMatchNudgeId); - ASSERT_FALSE(nudge); + AnchoredNudgeManagerImpl* nudge_manager = + Shell::Get()->anchored_nudge_manager(); + ASSERT_TRUE(nudge_manager); + EXPECT_FALSE(nudge_manager->GetNudgeIfShown(kCapsLockNoMatchNudgeId)); controller()->ShowCapsLockRewritingNudge(); - const AnchoredNudge* nudge_shown = - Shell::Get()->anchored_nudge_manager()->GetNudgeIfShown( - kCapsLockNoMatchNudgeId); - ASSERT_TRUE(nudge_shown); - EXPECT_TRUE(nudge_shown->GetVisible()); + EXPECT_TRUE(nudge_manager->GetNudgeIfShown(kCapsLockNoMatchNudgeId)); } } // namespace ash
diff --git a/ash/system/media/quick_settings_media_view.cc b/ash/system/media/quick_settings_media_view.cc index c7cee77..ffbc55c 100644 --- a/ash/system/media/quick_settings_media_view.cc +++ b/ash/system/media/quick_settings_media_view.cc
@@ -60,7 +60,8 @@ ~MediaScrollView() override = default; // views::ScrollView: - gfx::Size CalculatePreferredSize() const override { + gfx::Size CalculatePreferredSize( + const views::SizeBounds& available_size) const override { return gfx::Size(kMediaViewWidth, media_view_->GetMediaViewHeight()); }
diff --git a/ash/system/session/logout_button_tray.cc b/ash/system/session/logout_button_tray.cc index c748ebc..692b61f 100644 --- a/ash/system/session/logout_button_tray.cc +++ b/ash/system/session/logout_button_tray.cc
@@ -92,8 +92,7 @@ void LogoutButtonTray::OnThemeChanged() { TrayBackgroundView::OnThemeChanged(); const auto* color_provider = GetColorProvider(); - button_->SetBgColorOverride( - color_provider->GetColor(cros_tokens::kColorAlert)); + button_->SetBgColorIdOverride(cros_tokens::kColorAlert); button_->SetEnabledTextColors( color_provider->GetColor(cros_tokens::kColorPrimaryInverted)); }
diff --git a/ash/wallpaper/wallpaper_utils/wallpaper_file_utils.cc b/ash/wallpaper/wallpaper_utils/wallpaper_file_utils.cc index d08a214..a7f09aa 100644 --- a/ash/wallpaper/wallpaper_utils/wallpaper_file_utils.cc +++ b/ash/wallpaper/wallpaper_utils/wallpaper_file_utils.cc
@@ -38,7 +38,7 @@ if (image_metadata.empty()) { return gfx::JPEGCodec::Encode(bitmap, kDefaultEncodingQuality, - &(*output)->as_vector()); + &(*output)->data()); } SkPixmap pixmap; @@ -51,7 +51,7 @@ return gfx::JPEGCodec::Encode(pixmap, kDefaultEncodingQuality, SkJpegEncoder::Downsample::k420, - &(*output)->as_vector(), xmpMetadata.get()); + &(*output)->data(), xmpMetadata.get()); } // Resizes `image` to a resolution which is nearest to `preferred_width` and
diff --git a/ash/webui/demo_mode_app_ui/demo_mode_app_untrusted_ui_unittests.cc b/ash/webui/demo_mode_app_ui/demo_mode_app_untrusted_ui_unittests.cc index 027c891..1e79359f 100644 --- a/ash/webui/demo_mode_app_ui/demo_mode_app_untrusted_ui_unittests.cc +++ b/ash/webui/demo_mode_app_ui/demo_mode_app_untrusted_ui_unittests.cc
@@ -42,7 +42,8 @@ void VerifyDataResponse(std::string expected_response, base::OnceClosure quit_closure, scoped_refptr<base::RefCountedMemory> data_response) { - EXPECT_EQ(base::as_string_view(*data_response), expected_response); + std::string result(data_response->front_as<char>(), data_response->size()); + EXPECT_EQ(result, expected_response); std::move(quit_closure).Run(); } @@ -109,4 +110,4 @@ } } // namespace -} // namespace ash +} // namespace ash \ No newline at end of file
diff --git a/ash/wm/gestures/wm_gesture_handler.cc b/ash/wm/gestures/wm_gesture_handler.cc index 264faf4..9c0d8b9 100644 --- a/ash/wm/gestures/wm_gesture_handler.cc +++ b/ash/wm/gestures/wm_gesture_handler.cc
@@ -14,9 +14,12 @@ #include "ash/wm/window_util.h" #include "base/metrics/user_metrics.h" #include "base/time/time.h" +#include "ui/aura/client/window_types.h" #include "ui/base/l10n/l10n_util.h" #include "ui/events/event.h" #include "ui/events/types/event_type.h" +#include "ui/wm/core/capture_controller.h" +#include "ui/wm/public/activation_client.h" namespace ash { @@ -271,6 +274,16 @@ : false; } + // If the event should be captured by other normal window, do not handle + // this event as overview handling gesture. If it is captured by non-normal + // window (e.g. menu/popup), we can force enter overview mode. + aura::Window* capture_window = + ::wm::CaptureController::Get()->GetCaptureWindow(); + if (capture_window && + capture_window->GetType() == aura::client::WINDOW_TYPE_NORMAL) { + return false; + } + if (std::fabs(scroll_x) < std::fabs(scroll_y)) { return Handle3FingerVerticalScroll(scroll_y); }
diff --git a/ash/wm/gestures/wm_gesture_handler_unittest.cc b/ash/wm/gestures/wm_gesture_handler_unittest.cc index 9caec07..0839d7e7 100644 --- a/ash/wm/gestures/wm_gesture_handler_unittest.cc +++ b/ash/wm/gestures/wm_gesture_handler_unittest.cc
@@ -30,6 +30,7 @@ #include "base/files/file_path.h" #include "base/test/scoped_feature_list.h" #include "components/prefs/pref_service.h" +#include "ui/aura/client/window_types.h" #include "ui/aura/window.h" #include "ui/events/devices/device_hotplug_event_observer.h" #include "ui/events/devices/input_device.h" @@ -37,6 +38,7 @@ #include "ui/events/event_constants.h" #include "ui/events/test/event_generator.h" #include "ui/views/widget/widget.h" +#include "ui/wm/core/capture_controller.h" namespace ash { @@ -263,6 +265,80 @@ EXPECT_TRUE(InOverviewSession()); } +TEST_F(WmGestureHandlerTest, EnterOverviewWithNormalCaptureWindow) { + base::TimeTicks timestamp = base::TimeTicks::Now(); + constexpr int num_fingers = 3; + base::TimeDelta step_delay(base::Milliseconds(5)); + + // If 3 finger scroll event while there is a capture window is set to the + // normal type window, we should not handle the event as entering overview + // mode. + std::unique_ptr<aura::Window> normal_window = + CreateTestWindow(gfx::Rect(100, 100)); + ::wm::CaptureController::Get()->SetCapture(normal_window.get()); + + ui::ScrollEvent fling_cancel(ui::ET_SCROLL_FLING_CANCEL, gfx::Point(), + timestamp, 0, 0, 0, 0, 0, num_fingers); + GetEventGenerator()->Dispatch(&fling_cancel); + + // Send ET_SCROLL events to initializae ScrollData. + for (int i = 0; i < 10; ++i) { + timestamp += step_delay; + ui::ScrollEvent move(ui::ET_SCROLL, gfx::Point(), timestamp, 0, 0, + GetOffsetY(10), 0, GetOffsetY(10), num_fingers); + GetEventGenerator()->Dispatch(&move); + } + + timestamp += step_delay; + + ui::ScrollEvent fling_start(ui::ET_SCROLL_FLING_START, gfx::Point(), + timestamp, 0, 0, GetOffsetY(-10), 0, + GetOffsetY(-10), num_fingers); + GetEventGenerator()->Dispatch(&fling_start); + EXPECT_FALSE(InOverviewSession()); + ::wm::CaptureController::Get()->ReleaseCapture(normal_window.get()); +} + +TEST_F(WmGestureHandlerTest, EnterOverviewWithPopupCaptureWindow) { + base::TimeTicks timestamp = base::TimeTicks::Now(); + constexpr int num_fingers = 3; + base::TimeDelta step_delay(base::Milliseconds(5)); + + // If 3 finger scroll event while there is a capture window is set to the + // window by not normal, we should ignore the capture state and handle the + // event as entering overview mode. + std::unique_ptr<aura::Window> normal_window = + CreateTestWindow(gfx::Rect(100, 100)); + std::unique_ptr<aura::Window> popup_window = + std::make_unique<aura::Window>(nullptr, aura::client::WINDOW_TYPE_POPUP); + popup_window->Init(ui::LAYER_NOT_DRAWN); + popup_window->SetBounds(gfx::Rect(100, 100)); + normal_window->AddChild(popup_window.get()); + popup_window->Show(); + ::wm::CaptureController::Get()->SetCapture(popup_window.get()); + + ui::ScrollEvent fling_cancel(ui::ET_SCROLL_FLING_CANCEL, gfx::Point(), + timestamp, 0, 0, 0, 0, 0, num_fingers); + GetEventGenerator()->Dispatch(&fling_cancel); + + // Send ET_SCROLL events to initializae ScrollData. + for (int i = 0; i < 10; ++i) { + timestamp += step_delay; + ui::ScrollEvent move(ui::ET_SCROLL, gfx::Point(), timestamp, 0, 0, + GetOffsetY(10), 0, GetOffsetY(10), num_fingers); + GetEventGenerator()->Dispatch(&move); + } + + timestamp += step_delay; + + ui::ScrollEvent fling_start(ui::ET_SCROLL_FLING_START, gfx::Point(), + timestamp, 0, 0, GetOffsetY(-10), 0, + GetOffsetY(-10), num_fingers); + GetEventGenerator()->Dispatch(&fling_start); + EXPECT_TRUE(InOverviewSession()); + ::wm::CaptureController::Get()->ReleaseCapture(popup_window.get()); +} + // Test switch desk is disabled when screen is pinned. TEST_F(WmGestureHandlerTest, LockedModeNoSwitchDesk) { auto* desk_controller = DesksController::Get();
diff --git a/base/memory/ref_counted_memory.cc b/base/memory/ref_counted_memory.cc index 3ca8854..b43e5091 100644 --- a/base/memory/ref_counted_memory.cc +++ b/base/memory/ref_counted_memory.cc
@@ -13,76 +13,100 @@ bool RefCountedMemory::Equals( const scoped_refptr<RefCountedMemory>& other) const { - return other && AsSpan() == other->AsSpan(); + return other.get() && size() == other->size() && + (size() == 0 || (memcmp(front(), other->front(), size()) == 0)); } RefCountedMemory::RefCountedMemory() = default; + RefCountedMemory::~RefCountedMemory() = default; -RefCountedStaticMemory::RefCountedStaticMemory() = default; -RefCountedStaticMemory::~RefCountedStaticMemory() = default; - -RefCountedStaticMemory::RefCountedStaticMemory(base::span<const uint8_t> bytes) - : bytes_(bytes) {} - -base::span<const uint8_t> RefCountedStaticMemory::AsSpan() const { - return bytes_; +const unsigned char* RefCountedStaticMemory::front() const { + return data_; } +size_t RefCountedStaticMemory::size() const { + return length_; +} + +RefCountedStaticMemory::~RefCountedStaticMemory() = default; + RefCountedBytes::RefCountedBytes() = default; -RefCountedBytes::~RefCountedBytes() = default; -RefCountedBytes::RefCountedBytes(std::vector<uint8_t> initializer) - : bytes_(std::move(initializer)) {} +RefCountedBytes::RefCountedBytes(const std::vector<unsigned char>& initializer) + : data_(initializer) {} -RefCountedBytes::RefCountedBytes(base::span<const uint8_t> initializer) - : bytes_(initializer.begin(), initializer.end()) {} +RefCountedBytes::RefCountedBytes(base::span<const unsigned char> initializer) + : data_(initializer.begin(), initializer.end()) {} -RefCountedBytes::RefCountedBytes(const uint8_t* p, size_t size) - : bytes_(p, p + size) {} +RefCountedBytes::RefCountedBytes(const unsigned char* p, size_t size) + : data_(p, p + size) {} -RefCountedBytes::RefCountedBytes(size_t size) : bytes_(size, 0u) {} +RefCountedBytes::RefCountedBytes(size_t size) : data_(size, 0) {} scoped_refptr<RefCountedBytes> RefCountedBytes::TakeVector( - std::vector<uint8_t>* to_destroy) { + std::vector<unsigned char>* to_destroy) { auto bytes = MakeRefCounted<RefCountedBytes>(); - bytes->bytes_.swap(*to_destroy); + bytes->data_.swap(*to_destroy); return bytes; } -base::span<const uint8_t> RefCountedBytes::AsSpan() const { - return bytes_; +const unsigned char* RefCountedBytes::front() const { + // STL will assert if we do front() on an empty vector, but calling code + // expects a NULL. + return size() ? &data_.front() : nullptr; } +size_t RefCountedBytes::size() const { + return data_.size(); +} + +RefCountedBytes::~RefCountedBytes() = default; + RefCountedString::RefCountedString() = default; + RefCountedString::~RefCountedString() = default; -RefCountedString::RefCountedString(std::string str) : string_(std::move(str)) {} +RefCountedString::RefCountedString(std::string str) : data_(std::move(str)) {} -base::span<const uint8_t> RefCountedString::AsSpan() const { - return base::as_byte_span(string_); +const unsigned char* RefCountedString::front() const { + return data_.empty() ? nullptr + : reinterpret_cast<const unsigned char*>(data_.data()); +} + +size_t RefCountedString::size() const { + return data_.size(); } RefCountedString16::RefCountedString16() = default; + RefCountedString16::~RefCountedString16() = default; RefCountedString16::RefCountedString16(std::u16string str) - : string_(std::move(str)) {} + : data_(std::move(str)) {} -base::span<const uint8_t> RefCountedString16::AsSpan() const { - return base::as_byte_span(string_); +const unsigned char* RefCountedString16::front() const { + return reinterpret_cast<const unsigned char*>(data_.data()); +} + +size_t RefCountedString16::size() const { + return data_.size() * sizeof(char16_t); } RefCountedSharedMemoryMapping::RefCountedSharedMemoryMapping( ReadOnlySharedMemoryMapping mapping) - : mapping_(std::move(mapping)) { - DCHECK_GT(mapping_.size(), 0u); + : mapping_(std::move(mapping)), size_(mapping_.size()) { + DCHECK_GT(size_, 0U); } RefCountedSharedMemoryMapping::~RefCountedSharedMemoryMapping() = default; -base::span<const uint8_t> RefCountedSharedMemoryMapping::AsSpan() const { - return mapping_.GetMemoryAsSpan<const uint8_t>(); +const unsigned char* RefCountedSharedMemoryMapping::front() const { + return static_cast<const unsigned char*>(mapping_.memory()); +} + +size_t RefCountedSharedMemoryMapping::size() const { + return size_; } // static
diff --git a/base/memory/ref_counted_memory.h b/base/memory/ref_counted_memory.h index aebcebd..8705d9d 100644 --- a/base/memory/ref_counted_memory.h +++ b/base/memory/ref_counted_memory.h
@@ -12,7 +12,6 @@ #include <vector> #include "base/base_export.h" -#include "base/compiler_specific.h" #include "base/containers/span.h" #include "base/memory/ref_counted.h" #include "base/memory/shared_memory_mapping.h" @@ -24,76 +23,56 @@ // A generic interface to memory. This object is reference counted because most // of its subclasses own the data they carry, and this interface needs to // support heterogeneous containers of these different types of memory. -// -// The RefCountedMemory class provides a const view of the data it holds, as it -// does not require all subclassing implementations to hold mutable data. If a -// mutable view is required, the code must maintain awareness of the subclass -// type, and can access it through there, such as: -// - RefCountedBytes provides `as_vector()` to give mutable access to its data. -// - RefCountedString provides `as_string()` to give mutable access to its data. class BASE_EXPORT RefCountedMemory : public RefCountedThreadSafe<RefCountedMemory> { public: - // Returns true if `other` is byte for byte equal. + // Retrieves a pointer to the beginning of the data we point to. If the data + // is empty, this will return NULL. + virtual const unsigned char* front() const = 0; + + // Size of the memory pointed to. + virtual size_t size() const = 0; + + // Returns true if |other| is byte for byte equal. bool Equals(const scoped_refptr<RefCountedMemory>& other) const; - // Allow explicit conversion to `base::span<const uint8_t>`. Use a span to - // access the data in a safe way, rather than calling `data()` explicitly. - // - // Example: - // ``` - // auto data = base::MakeRefCounted<base::RefCountedBytes>( - // std::vector<uint8_t>{1, 2, 3}); - // base::span<const uint8_t> v = base::span(data); - // v[2] = uint8_t{4}; - // ``` - const uint8_t* data() const LIFETIME_BOUND { return AsSpan().data(); } - size_t size() const { return AsSpan().size(); } - - using iterator = base::span<const uint8_t>::iterator; - iterator begin() const LIFETIME_BOUND { return AsSpan().begin(); } - iterator end() const LIFETIME_BOUND { return AsSpan().end(); } - - // TODO(danakj): Remove all callers and remove this. - const uint8_t* front() const LIFETIME_BOUND { return AsSpan().data(); } - - // The data/size members (or begin/end) give conversion to span already, but - // we provide this operator as an optimization to combine two virtual method - // calls into one. - explicit operator base::span<const uint8_t>() const LIFETIME_BOUND { - return AsSpan(); + // Handy method to simplify calling front() with a reinterpret_cast. + template<typename T> const T* front_as() const { + return reinterpret_cast<const T*>(front()); } + const unsigned char* data() const { return front(); } + + const unsigned char* begin() const { return data(); } + const unsigned char* end() const { return data() + size(); } + protected: friend class RefCountedThreadSafe<RefCountedMemory>; RefCountedMemory(); virtual ~RefCountedMemory(); - - virtual base::span<const uint8_t> AsSpan() const LIFETIME_BOUND = 0; }; -// An implementation of RefCountedMemory, for pointing to memory with a static -// lifetime. Since the memory exists for the life of the program, the class can -// not and does not need to take ownership of it. +// An implementation of RefCountedMemory, where the ref counting does not +// matter. class BASE_EXPORT RefCountedStaticMemory : public RefCountedMemory { public: - RefCountedStaticMemory(); - explicit RefCountedStaticMemory(base::span<const uint8_t> bytes); - - // TODO(crbug.com/40284755): Remove this overload, use the span ctor instead. + RefCountedStaticMemory() : data_(nullptr), length_(0) {} RefCountedStaticMemory(const void* data, size_t length) - : UNSAFE_BUFFERS(bytes_(static_cast<const uint8_t*>(data), length)) {} + : data_(static_cast<const unsigned char*>(length ? data : nullptr)), + length_(length) {} RefCountedStaticMemory(const RefCountedStaticMemory&) = delete; RefCountedStaticMemory& operator=(const RefCountedStaticMemory&) = delete; + // RefCountedMemory: + const unsigned char* front() const override; + size_t size() const override; + private: ~RefCountedStaticMemory() override; - // RefCountedMemory: - base::span<const uint8_t> AsSpan() const LIFETIME_BOUND override; - - base::span<const uint8_t> bytes_; + const unsigned char* data_; + size_t length_; }; // An implementation of RefCountedMemory, where the data is stored in a STL @@ -103,13 +82,11 @@ RefCountedBytes(); // Constructs a RefCountedBytes object by copying from |initializer|. - explicit RefCountedBytes(std::vector<uint8_t> initializer); - explicit RefCountedBytes(base::span<const uint8_t> initializer); + explicit RefCountedBytes(const std::vector<unsigned char>& initializer); + explicit RefCountedBytes(base::span<const unsigned char> initializer); // Constructs a RefCountedBytes object by copying |size| bytes from |p|. - // - // TODO(crbug.com/40284755): Remove this overload, use the span ctor instead. - RefCountedBytes(const uint8_t* p, size_t size); + RefCountedBytes(const unsigned char* p, size_t size); // Constructs a RefCountedBytes object by zero-initializing a new vector of // |size| bytes. @@ -121,22 +98,28 @@ // Constructs a RefCountedBytes object by performing a swap. (To non // destructively build a RefCountedBytes, use the constructor that takes a // vector.) - // - // TODO(danakj): This can be removed, as callers can now move() the vector to - // the ctor instead. static scoped_refptr<RefCountedBytes> TakeVector( - std::vector<uint8_t>* to_destroy); + std::vector<unsigned char>* to_destroy); - const std::vector<uint8_t>& as_vector() const { return bytes_; } - std::vector<uint8_t>& as_vector() { return bytes_; } + // RefCountedMemory: + const unsigned char* front() const override; + size_t size() const override; + + const std::vector<unsigned char>& data() const { return data_; } + std::vector<unsigned char>& data() { return data_; } + + // Non-const versions of front() and front_as() that are simply shorthand for + // data().data(). + unsigned char* front() { return data_.data(); } + template <typename T> + T* front_as() { + return reinterpret_cast<T*>(front()); + } private: ~RefCountedBytes() override; - // RefCountedMemory: - base::span<const uint8_t> AsSpan() const LIFETIME_BOUND override; - - std::vector<uint8_t> bytes_; + std::vector<unsigned char> data_; }; // An implementation of RefCountedMemory, where the bytes are stored in a STL @@ -149,16 +132,17 @@ RefCountedString(const RefCountedString&) = delete; RefCountedString& operator=(const RefCountedString&) = delete; - const std::string& as_string() const { return string_; } - std::string& as_string() { return string_; } + // RefCountedMemory: + const unsigned char* front() const override; + size_t size() const override; + + const std::string& data() const { return data_; } + std::string& data() { return data_; } private: ~RefCountedString() override; - // RefCountedMemory: - base::span<const uint8_t> AsSpan() const LIFETIME_BOUND override; - - std::string string_; + std::string data_; }; // An implementation of RefCountedMemory, where the bytes are stored in a @@ -171,16 +155,15 @@ RefCountedString16(const RefCountedString16&) = delete; RefCountedString16& operator=(const RefCountedString16&) = delete; - const std::u16string& as_string() const { return string_; } - std::u16string& as_string() { return string_; } + // RefCountedMemory: + const unsigned char* front() const override; + size_t size() const override; - private: + protected: ~RefCountedString16() override; - // RefCountedMemory: - base::span<const uint8_t> AsSpan() const LIFETIME_BOUND override; - - std::u16string string_; + private: + std::u16string data_; }; // An implementation of RefCountedMemory, where the bytes are stored in @@ -195,18 +178,20 @@ RefCountedSharedMemoryMapping& operator=( const RefCountedSharedMemoryMapping&) = delete; - // Convenience method to map all of `region` and take ownership of the - // mapping. Returns a null `scoped_refptr` if the map operation fails. + // Convenience method to map all of |region| and take ownership of the + // mapping. Returns an empty scoped_refptr if the map operation fails. static scoped_refptr<RefCountedSharedMemoryMapping> CreateFromWholeRegion( const ReadOnlySharedMemoryRegion& region); + // RefCountedMemory: + const unsigned char* front() const override; + size_t size() const override; + private: ~RefCountedSharedMemoryMapping() override; - // RefCountedMemory: - base::span<const uint8_t> AsSpan() const LIFETIME_BOUND override; - const ReadOnlySharedMemoryMapping mapping_; + const size_t size_; }; } // namespace base
diff --git a/base/memory/ref_counted_memory_unittest.cc b/base/memory/ref_counted_memory_unittest.cc index f2ffe2c..f347249 100644 --- a/base/memory/ref_counted_memory_unittest.cc +++ b/base/memory/ref_counted_memory_unittest.cc
@@ -13,24 +13,27 @@ #include "testing/gmock/include/gmock/gmock.h" #include "testing/gtest/include/gtest/gtest.h" +using testing::Each; using testing::ElementsAre; namespace base { +namespace { + +void ConvertToByteSpanAndCheckSize(span<const uint8_t> data, + size_t expected_size) { + EXPECT_EQ(expected_size, data.size()); +} + +} // namespace + TEST(RefCountedMemoryUnitTest, RefCountedStaticMemory) { - { - auto mem = MakeRefCounted<RefCountedStaticMemory>( - base::byte_span_from_cstring("static mem")); + auto mem = MakeRefCounted<RefCountedStaticMemory>("static mem00", 10); - EXPECT_THAT(base::span(*mem), - ElementsAre('s', 't', 'a', 't', 'i', 'c', ' ', 'm', 'e', 'm')); - } - { - auto mem = MakeRefCounted<RefCountedStaticMemory>("static mem00", 10); + EXPECT_EQ(10U, mem->size()); + EXPECT_EQ("static mem", std::string(mem->front_as<char>(), mem->size())); - EXPECT_THAT(base::span(*mem), - ElementsAre('s', 't', 'a', 't', 'i', 'c', ' ', 'm', 'e', 'm')); - } + ConvertToByteSpanAndCheckSize(*mem, 10); } TEST(RefCountedMemoryUnitTest, RefCountedBytes) { @@ -41,40 +44,54 @@ EXPECT_EQ(0U, data.size()); - EXPECT_THAT(base::span(*mem), ElementsAre(45, 99)); + ASSERT_EQ(2U, mem->size()); + EXPECT_EQ(45U, mem->front()[0]); + EXPECT_EQ(99U, mem->front()[1]); scoped_refptr<RefCountedMemory> mem2; { - const uint8_t kData[] = {12, 11, 99}; - mem2 = MakeRefCounted<RefCountedBytes>(base::span(kData)); + const unsigned char kData[] = {12, 11, 99}; + mem2 = MakeRefCounted<RefCountedBytes>(kData, std::size(kData)); } + ASSERT_EQ(3U, mem2->size()); + EXPECT_EQ(12U, mem2->front()[0]); + EXPECT_EQ(11U, mem2->front()[1]); + EXPECT_EQ(99U, mem2->front()[2]); - EXPECT_THAT(base::span(*mem2), ElementsAre(12, 11, 99)); + ConvertToByteSpanAndCheckSize(*mem2, 3); } TEST(RefCountedMemoryUnitTest, RefCountedBytesMutable) { auto mem = MakeRefCounted<RefCountedBytes>(10); - EXPECT_THAT(base::span(*mem), ElementsAre(0, 0, 0, 0, 0, 0, 0, 0, 0, 0)); + ASSERT_EQ(10U, mem->size()); + EXPECT_THAT(mem->data(), Each(0U)); - // Test non-const version of as_vector(). - mem->as_vector()[1u] = 1; + // Test non-const versions of data(), front() and front_as<>(). + mem->data()[0] = 1; + mem->front()[1] = 2; + mem->front_as<char>()[2] = 3; - EXPECT_THAT(base::span(*mem), ElementsAre(0, 1, 0, 0, 0, 0, 0, 0, 0, 0)); + EXPECT_THAT(mem->data(), ElementsAre(1, 2, 3, 0, 0, 0, 0, 0, 0, 0)); } TEST(RefCountedMemoryUnitTest, RefCountedString) { scoped_refptr<RefCountedMemory> mem = base::MakeRefCounted<base::RefCountedString>(std::string("destroy me")); - EXPECT_EQ(base::span(*mem), base::span_from_cstring("destroy me")); + ASSERT_EQ(10U, mem->size()); + EXPECT_EQ('d', mem->front()[0]); + EXPECT_EQ('e', mem->front()[1]); + EXPECT_EQ('e', mem->front()[9]); + + ConvertToByteSpanAndCheckSize(*mem, 10); } TEST(RefCountedMemoryUnitTest, Equals) { scoped_refptr<RefCountedMemory> mem1 = base::MakeRefCounted<base::RefCountedString>(std::string("same")); - std::vector<uint8_t> d2 = {'s', 'a', 'm', 'e'}; + std::vector<unsigned char> d2 = {'s', 'a', 'm', 'e'}; scoped_refptr<RefCountedMemory> mem2 = RefCountedBytes::TakeVector(&d2); EXPECT_TRUE(mem1->Equals(mem2));
diff --git a/base/test/trace_event_analyzer.cc b/base/test/trace_event_analyzer.cc index ca34d905..7f3ac459 100644 --- a/base/test/trace_event_analyzer.cc +++ b/base/test/trace_event_analyzer.cc
@@ -28,7 +28,7 @@ base::trace_event::TraceResultBuffer* buffer, const scoped_refptr<base::RefCountedString>& json, bool has_more_events) { - buffer->AddFragment(json->as_string()); + buffer->AddFragment(json->data()); if (!has_more_events) std::move(quit_closure).Run(); }
diff --git a/base/test/trace_event_analyzer_unittest.cc b/base/test/trace_event_analyzer_unittest.cc index 929cabf..e6b08ba2 100644 --- a/base/test/trace_event_analyzer_unittest.cc +++ b/base/test/trace_event_analyzer_unittest.cc
@@ -46,7 +46,7 @@ base::WaitableEvent* flush_complete_event, const scoped_refptr<base::RefCountedString>& json_events_str, bool has_more_events) { - buffer_.AddFragment(json_events_str->as_string()); + buffer_.AddFragment(json_events_str->data()); if (!has_more_events) flush_complete_event->Signal(); }
diff --git a/base/test/trace_to_file.cc b/base/test/trace_to_file.cc index f271596..da2fb76 100644 --- a/base/test/trace_to_file.cc +++ b/base/test/trace_to_file.cc
@@ -79,7 +79,7 @@ trace_event::TraceResultBuffer* buffer, const scoped_refptr<RefCountedString>& json_events_str, bool has_more_events) { - buffer->AddFragment(json_events_str->as_string()); + buffer->AddFragment(json_events_str->data()); if (!has_more_events) std::move(quit_closure).Run(); }
diff --git a/base/trace_event/trace_event_memory_overhead.cc b/base/trace_event/trace_event_memory_overhead.cc index 0c2dfc8..1ba4c5e 100644 --- a/base/trace_event/trace_event_memory_overhead.cc +++ b/base/trace_event/trace_event_memory_overhead.cc
@@ -91,7 +91,7 @@ void TraceEventMemoryOverhead::AddRefCountedString( const RefCountedString& str) { Add(kOther, sizeof(RefCountedString)); - AddString(str.as_string()); + AddString(str.data()); } void TraceEventMemoryOverhead::AddValue(const Value& value) {
diff --git a/base/trace_event/trace_event_unittest.cc b/base/trace_event/trace_event_unittest.cc index c9711b9..5df0bed 100644 --- a/base/trace_event/trace_event_unittest.cc +++ b/base/trace_event/trace_event_unittest.cc
@@ -198,12 +198,12 @@ bool has_more_events) { num_flush_callbacks_++; if (num_flush_callbacks_ > 1) { - EXPECT_FALSE(events_str->as_string().empty()); + EXPECT_FALSE(events_str->data().empty()); } AutoLock lock(lock_); json_output_.json_output.clear(); trace_buffer_.Start(); - trace_buffer_.AddFragment(events_str->as_string()); + trace_buffer_.AddFragment(events_str->data()); trace_buffer_.Finish(); std::optional<Value> root = base::JSONReader::Read(
diff --git a/base/trace_event/trace_log.cc b/base/trace_event/trace_log.cc index 8465a63..b80b33f 100644 --- a/base/trace_event/trace_log.cc +++ b/base/trace_event/trace_log.cc
@@ -372,7 +372,7 @@ TraceLog::OutputCallback flush_callback) : flush_task_runner_(flush_task_runner), flush_callback_(std::move(flush_callback)) { - buffer_->as_string().reserve(kBufferReserveCapacity); + buffer_->data().reserve(kBufferReserveCapacity); } ~JsonStringOutputWriter() override { Flush(/*has_more=*/false); } @@ -383,22 +383,22 @@ DCHECK_EQ(string, kJsonPrefix); did_strip_prefix_ = true; return perfetto::trace_processor::util::OkStatus(); - } else if (buffer_->as_string().empty() && + } else if (buffer_->data().empty() && !strncmp(string.c_str(), kJsonJoiner, strlen(kJsonJoiner))) { // We only remove the leading joiner comma for the first chunk in a buffer // since the consumer is expected to insert commas between the buffers we // provide. - buffer_->as_string() += string.substr(strlen(kJsonJoiner)); + buffer_->data() += string.substr(strlen(kJsonJoiner)); } else if (!strncmp(string.c_str(), kJsonSuffix, strlen(kJsonSuffix))) { return perfetto::trace_processor::util::OkStatus(); } else { - buffer_->as_string() += string; + buffer_->data() += string; } - if (buffer_->as_string().size() > kBufferLimitInBytes) { + if (buffer_->data().size() > kBufferLimitInBytes) { Flush(/*has_more=*/true); // Reset the buffer_ after moving it above. buffer_ = new RefCountedString(); - buffer_->as_string().reserve(kBufferReserveCapacity); + buffer_->data().reserve(kBufferReserveCapacity); } return perfetto::trace_processor::util::OkStatus(); } @@ -1384,7 +1384,7 @@ if (proto_output_callback_) { scoped_refptr<RefCountedString> chunk = new RefCountedString(); if (size) - chunk->as_string().assign(data, size); + chunk->data().assign(data, size); proto_output_callback_.Run(std::move(chunk), has_more); if (!has_more) { proto_output_callback_.Reset(); @@ -1424,18 +1424,18 @@ // to let the caller know the completion of flush. scoped_refptr<RefCountedString> json_events_str_ptr = new RefCountedString(); const size_t kReserveCapacity = kTraceEventBufferSizeInBytes * 5 / 4; - json_events_str_ptr->as_string().reserve(kReserveCapacity); + json_events_str_ptr->data().reserve(kReserveCapacity); while (const TraceBufferChunk* chunk = logged_events->NextChunk()) { for (size_t j = 0; j < chunk->size(); ++j) { size_t size = json_events_str_ptr->size(); if (size > kTraceEventBufferSizeInBytes) { flush_output_callback.Run(json_events_str_ptr, true); json_events_str_ptr = new RefCountedString(); - json_events_str_ptr->as_string().reserve(kReserveCapacity); + json_events_str_ptr->data().reserve(kReserveCapacity); } else if (size) { - json_events_str_ptr->as_string().append(",\n"); + json_events_str_ptr->data().append(",\n"); } - chunk->GetEventAt(j)->AppendAsJSON(&(json_events_str_ptr->as_string()), + chunk->GetEventAt(j)->AppendAsJSON(&(json_events_str_ptr->data()), argument_filter_predicate); } }
diff --git a/cc/paint/skottie_text_property_value.h b/cc/paint/skottie_text_property_value.h index bfb9b34..e18d47d 100644 --- a/cc/paint/skottie_text_property_value.h +++ b/cc/paint/skottie_text_property_value.h
@@ -36,7 +36,7 @@ bool operator!=(const SkottieTextPropertyValue& other) const; void SetText(std::string text); - const std::string& text() const { return text_->as_string(); } + const std::string& text() const { return text_->data(); } void set_box(gfx::RectF box) { box_ = std::move(box); } const gfx::RectF& box() const { return box_; }
diff --git a/cc/test/transfer_cache_test_helper.cc b/cc/test/transfer_cache_test_helper.cc index 436d007..1247c994 100644 --- a/cc/test/transfer_cache_test_helper.cc +++ b/cc/test/transfer_cache_test_helper.cc
@@ -115,7 +115,7 @@ // Serialize data. uint32_t size = client_entry.SerializedSize(); auto data = base::HeapArray<uint8_t>::Uninit(size); - auto span = base::make_span(data.data(), size); + auto span = base::make_span(data); bool success = client_entry.Serialize(span); DCHECK(success); CreateEntryDirect(key, span);
diff --git a/chrome/VERSION b/chrome/VERSION index 9774bf1..291c767 100644 --- a/chrome/VERSION +++ b/chrome/VERSION
@@ -1,4 +1,4 @@ MAJOR=126 MINOR=0 -BUILD=6425 +BUILD=6426 PATCH=0
diff --git a/chrome/app/vector_icons/BUILD.gn b/chrome/app/vector_icons/BUILD.gn index 7c282de94..ab4faa41 100644 --- a/chrome/app/vector_icons/BUILD.gn +++ b/chrome/app/vector_icons/BUILD.gn
@@ -108,6 +108,7 @@ "incognito_menu_art.icon", "incognito_profile.icon", "incognito_refresh_menu.icon", + "info.icon", "ink_highlighter.icon", "input.icon", "install_desktop_chrome_refresh.icon",
diff --git a/chrome/app/vector_icons/info.icon b/chrome/app/vector_icons/info.icon new file mode 100644 index 0000000..46f351d --- /dev/null +++ b/chrome/app/vector_icons/info.icon
@@ -0,0 +1,52 @@ +// Copyright 2024 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +CANVAS_DIMENSIONS, 960, +FILL_RULE_NONZERO, +MOVE_TO, 440, 680, +R_H_LINE_TO, 80, +R_V_LINE_TO, -240, +R_H_LINE_TO, -80, +R_V_LINE_TO, 240, +CLOSE, +R_MOVE_TO, 40, -320, +R_QUADRATIC_TO, 17, 0, 28.5f, -11.5f, +QUADRATIC_TO_SHORTHAND, 520, 320, +R_QUADRATIC_TO, 0, -17, -11.5f, -28.5f, +QUADRATIC_TO_SHORTHAND, 480, 280, +R_QUADRATIC_TO, -17, 0, -28.5f, 11.5f, +QUADRATIC_TO_SHORTHAND, 440, 320, +R_QUADRATIC_TO, 0, 17, 11.5f, 28.5f, +QUADRATIC_TO_SHORTHAND, 480, 360, +CLOSE, +R_MOVE_TO, 0, 520, +R_QUADRATIC_TO, -83, 0, -156, -31.5f, +QUADRATIC_TO_SHORTHAND, 197, 763, +R_QUADRATIC_TO, -54, -54, -85.5f, -127, +QUADRATIC_TO_SHORTHAND, 80, 480, +R_QUADRATIC_TO, 0, -83, 31.5f, -156, +QUADRATIC_TO_SHORTHAND, 197, 197, +R_QUADRATIC_TO, 54, -54, 127, -85.5f, +QUADRATIC_TO_SHORTHAND, 480, 80, +R_QUADRATIC_TO, 83, 0, 156, 31.5f, +QUADRATIC_TO_SHORTHAND, 763, 197, +R_QUADRATIC_TO, 54, 54, 85.5f, 127, +QUADRATIC_TO_SHORTHAND, 880, 480, +R_QUADRATIC_TO, 0, 83, -31.5f, 156, +QUADRATIC_TO_SHORTHAND, 763, 763, +R_QUADRATIC_TO, -54, 54, -127, 85.5f, +QUADRATIC_TO_SHORTHAND, 480, 880, +CLOSE, +R_MOVE_TO, 0, -80, +R_QUADRATIC_TO, 134, 0, 227, -93, +R_QUADRATIC_TO, 93, -93, 93, -227, +R_QUADRATIC_TO, 0, -134, -93, -227, +R_QUADRATIC_TO, -93, -93, -227, -93, +R_QUADRATIC_TO, -134, 0, -227, 93, +R_QUADRATIC_TO, -93, 93, -93, 227, +R_QUADRATIC_TO, 0, 134, 93, 227, +R_QUADRATIC_TO, 93, 93, 227, 93, +CLOSE, +R_MOVE_TO, 0, -320, +CLOSE
diff --git a/chrome/app/vector_icons/input.icon b/chrome/app/vector_icons/input.icon index 2120e4e..102a6c8 100644 --- a/chrome/app/vector_icons/input.icon +++ b/chrome/app/vector_icons/input.icon
@@ -2,31 +2,38 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -CANVAS_DIMENSIONS, 20, -MOVE_TO, 16.55f, 3, -H_LINE_TO, 3.46f, -CUBIC_TO, 2.66f, 3, 2, 3.7f, 2, 4.56f, -R_V_LINE_TO, 3.11f, -R_H_LINE_TO, 2, -V_LINE_TO, 5, -R_H_LINE_TO, 12, -R_V_LINE_TO, 10, -H_LINE_TO, 4, -R_V_LINE_TO, -2.66f, -H_LINE_TO, 2, -R_V_LINE_TO, 3.12f, -CUBIC_TO, 2, 16.32f, 2.66f, 17, 3.46f, 17, -R_H_LINE_TO, 13.09f, -R_CUBIC_TO, 0.8f, 0, 1.46f, -0.68f, 1.46f, -1.54f, -R_V_LINE_TO, -10.9f, -CUBIC_TO, 18, 3.69f, 17.35f, 3, 16.55f, 3, +CANVAS_DIMENSIONS, 960, +FILL_RULE_NONZERO, +MOVE_TO, 160, 800, +R_QUADRATIC_TO, -33, 0, -56.5f, -23.5f, +QUADRATIC_TO_SHORTHAND, 80, 720, +R_V_LINE_TO, -120, +R_H_LINE_TO, 80, +R_V_LINE_TO, 120, +R_H_LINE_TO, 640, +R_V_LINE_TO, -480, +H_LINE_TO, 160, +R_V_LINE_TO, 120, +H_LINE_TO, 80, +R_V_LINE_TO, -120, +R_QUADRATIC_TO, 0, -33, 23.5f, -56.5f, +QUADRATIC_TO_SHORTHAND, 160, 160, +R_H_LINE_TO, 640, +R_QUADRATIC_TO, 33, 0, 56.5f, 23.5f, +QUADRATIC_TO_SHORTHAND, 880, 240, +R_V_LINE_TO, 480, +R_QUADRATIC_TO, 0, 33, -23.5f, 56.5f, +QUADRATIC_TO_SHORTHAND, 800, 800, +H_LINE_TO, 160, CLOSE, -MOVE_TO, 9.14f, 13, -R_LINE_TO, 3.04f, -3, -R_LINE_TO, -3.04f, -3, -R_V_LINE_TO, 2.25f, -H_LINE_TO, 2, -R_V_LINE_TO, 1.5f, -R_H_LINE_TO, 7.14f, -V_LINE_TO, 13, +R_MOVE_TO, 300, -140, +R_LINE_TO, -56, -58, +R_LINE_TO, 83, -82, +H_LINE_TO, 80, +R_V_LINE_TO, -80, +R_H_LINE_TO, 407, +R_LINE_TO, -83, -82, +R_LINE_TO, 56, -58, +R_LINE_TO, 180, 180, +R_LINE_TO, -180, 180, CLOSE
diff --git a/chrome/app/vector_icons/speaker.icon b/chrome/app/vector_icons/speaker.icon index f784900..d61e367 100644 --- a/chrome/app/vector_icons/speaker.icon +++ b/chrome/app/vector_icons/speaker.icon
@@ -2,33 +2,59 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -CANVAS_DIMENSIONS, 20, -MOVE_TO, 14.29f, 3, -H_LINE_TO, 5.71f, -CUBIC_TO, 4.77f, 3, 4, 3.68f, 4, 4.5f, -R_V_LINE_TO, 12, -R_CUBIC_TO, 0, 0.83f, 0.77f, 1.49f, 1.71f, 1.49f, -R_LINE_TO, 8.57f, 0.01f, -R_CUBIC_TO, 0.94f, 0, 1.71f, -0.67f, 1.71f, -1.5f, -R_V_LINE_TO, -12, -R_CUBIC_TO, 0, -0.82f, -0.77f, -1.5f, -1.71f, -1.5f, +CANVAS_DIMENSIONS, 960, +FILL_RULE_NONZERO, +MOVE_TO, 680, 880, +H_LINE_TO, 280, +R_QUADRATIC_TO, -33, 0, -56.5f, -23.5f, +QUADRATIC_TO_SHORTHAND, 200, 800, +R_V_LINE_TO, -640, +R_QUADRATIC_TO, 0, -33, 23.5f, -56.5f, +QUADRATIC_TO_SHORTHAND, 280, 80, +R_H_LINE_TO, 400, +R_QUADRATIC_TO, 33, 0, 56.5f, 23.5f, +QUADRATIC_TO_SHORTHAND, 760, 160, +R_V_LINE_TO, 640, +R_QUADRATIC_TO, 0, 33, -23.5f, 56.5f, +QUADRATIC_TO_SHORTHAND, 680, 880, CLOSE, -MOVE_TO, 6, 16, -V_LINE_TO, 5, -R_H_LINE_TO, 8, -R_V_LINE_TO, 11, -H_LINE_TO, 6, +R_MOVE_TO, 0, -80, +R_V_LINE_TO, -640, +H_LINE_TO, 280, +R_V_LINE_TO, 640, +R_H_LINE_TO, 400, CLOSE, -R_MOVE_TO, 4, -7, -R_ARC_TO, 3, 3, 0, 1, 0, 0, 6, -R_ARC_TO, 3, 3, 0, 1, 0, 0, -6, +MOVE_TO, 480, 360, +R_QUADRATIC_TO, 33, 0, 56.5f, -23.5f, +QUADRATIC_TO_SHORTHAND, 560, 280, +R_QUADRATIC_TO, 0, -33, -23.5f, -56.5f, +QUADRATIC_TO_SHORTHAND, 480, 200, +R_QUADRATIC_TO, -33, 0, -56.5f, 23.5f, +QUADRATIC_TO_SHORTHAND, 400, 280, +R_QUADRATIC_TO, 0, 33, 23.5f, 56.5f, +QUADRATIC_TO_SHORTHAND, 480, 360, CLOSE, -R_MOVE_TO, 0, 2, -R_ARC_TO, 1, 1, 0, 1, 1, 0, 2, -R_ARC_TO, 1, 1, 0, 0, 1, 0, -2, +R_MOVE_TO, 0, 400, +R_QUADRATIC_TO, 66, 0, 113, -47, +R_QUADRATIC_TO, 47, -47, 47, -113, +R_QUADRATIC_TO, 0, -66, -47, -113, +R_QUADRATIC_TO, -47, -47, -113, -47, +R_QUADRATIC_TO, -66, 0, -113, 47, +R_QUADRATIC_TO, -47, 47, -47, 113, +R_QUADRATIC_TO, 0, 66, 47, 113, +R_QUADRATIC_TO, 47, 47, 113, 47, CLOSE, -R_MOVE_TO, 0, -3, -R_CUBIC_TO, 0.55f, 0, 1, -0.45f, 1, -1, -R_CUBIC_TO, 0, -0.55f, -0.45f, -1, -1, -1, -R_ARC_TO, 1, 1, 0, 1, 0, 0, 2, +R_MOVE_TO, 0, -80, +R_QUADRATIC_TO, -33, 0, -56.5f, -23.5f, +QUADRATIC_TO_SHORTHAND, 400, 600, +R_QUADRATIC_TO, 0, -33, 23.5f, -56.5f, +QUADRATIC_TO_SHORTHAND, 480, 520, +R_QUADRATIC_TO, 33, 0, 56.5f, 23.5f, +QUADRATIC_TO_SHORTHAND, 560, 600, +R_QUADRATIC_TO, 0, 33, -23.5f, 56.5f, +QUADRATIC_TO_SHORTHAND, 480, 680, +CLOSE, +MOVE_TO, 280, 160, +R_V_LINE_TO, 640, +R_V_LINE_TO, -640, CLOSE
diff --git a/chrome/app/vector_icons/speaker_group.icon b/chrome/app/vector_icons/speaker_group.icon index c39b100..ff23be9 100644 --- a/chrome/app/vector_icons/speaker_group.icon +++ b/chrome/app/vector_icons/speaker_group.icon
@@ -2,43 +2,69 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -CANVAS_DIMENSIONS, 20, -MOVE_TO, 14, 4, -R_V_LINE_TO, 9, -R_LINE_TO, -6, -0.01f, -V_LINE_TO, 4, -R_H_LINE_TO, 6, +CANVAS_DIMENSIONS, 960, +FILL_RULE_NONZERO, +MOVE_TO, 400, 680, +R_H_LINE_TO, 360, +R_V_LINE_TO, -560, +H_LINE_TO, 400, +R_V_LINE_TO, 560, CLOSE, -R_MOVE_TO, 0.57f, -2, -H_LINE_TO, 7.43f, -ARC_TO, 1.44f, 1.44f, 0, 0, 0, 6, 3.44f, -R_V_LINE_TO, 10.1f, -R_CUBIC_TO, 0, 0.8f, 0.64f, 1.45f, 1.43f, 1.45f, -LINE_TO, 14.57f, 15, -ARC_TO, 1.44f, 1.44f, 0, 0, 0, 16, 13.56f, -V_LINE_TO, 3.44f, -ARC_TO, 1.44f, 1.44f, 0, 0, 0, 14.57f, 2, +R_MOVE_TO, 0, 80, +R_QUADRATIC_TO, -33, 0, -56.5f, -23.5f, +QUADRATIC_TO_SHORTHAND, 320, 680, +R_V_LINE_TO, -560, +R_QUADRATIC_TO, 0, -33, 23.5f, -56.5f, +QUADRATIC_TO_SHORTHAND, 400, 40, +R_H_LINE_TO, 360, +R_QUADRATIC_TO, 33, 0, 56.5f, 23.5f, +QUADRATIC_TO_SHORTHAND, 840, 120, +R_V_LINE_TO, 560, +R_QUADRATIC_TO, 0, 33, -23.5f, 56.5f, +QUADRATIC_TO_SHORTHAND, 760, 760, +H_LINE_TO, 400, CLOSE, -MOVE_TO, 11, 7, -R_ARC_TO, 1, 1, 0, 1, 1, 0, -2, -R_ARC_TO, 1, 1, 0, 0, 1, 0, 2, +R_MOVE_TO, 180, -460, +R_QUADRATIC_TO, 25, 0, 42.5f, -17.5f, +QUADRATIC_TO_SHORTHAND, 640, 240, +R_QUADRATIC_TO, 0, -25, -17.5f, -42.5f, +QUADRATIC_TO_SHORTHAND, 580, 180, +R_QUADRATIC_TO, -25, 0, -42.5f, 17.5f, +QUADRATIC_TO_SHORTHAND, 520, 240, +R_QUADRATIC_TO, 0, 25, 17.5f, 42.5f, +QUADRATIC_TO_SHORTHAND, 580, 300, CLOSE, -R_MOVE_TO, 0, 5, -R_CUBIC_TO, -1.1f, 0, -2, -0.9f, -2, -2, -R_CUBIC_TO, 0, -1.1f, 0.9f, -2, 2, -2, -R_CUBIC_TO, 1.1f, 0, 2, 0.9f, 2, 2, -R_CUBIC_TO, 0, 1.1f, -0.9f, 2, -2, 2, +R_MOVE_TO, 0, 340, +R_QUADRATIC_TO, 58, 0, 99, -41, +R_QUADRATIC_TO, 41, -41, 41, -99, +R_QUADRATIC_TO, 0, -58, -41, -99, +R_QUADRATIC_TO, -41, -41, -99, -41, +R_QUADRATIC_TO, -58, 0, -99, 41, +R_QUADRATIC_TO, -41, 41, -41, 99, +R_QUADRATIC_TO, 0, 58, 41, 99, +R_QUADRATIC_TO, 41, 41, 99, 41, CLOSE, -R_MOVE_TO, 0, -1, -R_ARC_TO, 1, 1, 0, 1, 0, 0, -2, -R_ARC_TO, 1, 1, 0, 0, 0, 0, 2, +R_MOVE_TO, 0, -80, +R_QUADRATIC_TO, -25, 0, -42.5f, -17.5f, +QUADRATIC_TO_SHORTHAND, 520, 500, +R_QUADRATIC_TO, 0, -25, 17.5f, -42.5f, +QUADRATIC_TO_SHORTHAND, 580, 440, +R_QUADRATIC_TO, 25, 0, 42.5f, 17.5f, +QUADRATIC_TO_SHORTHAND, 640, 500, +R_QUADRATIC_TO, 0, 25, -17.5f, 42.5f, +QUADRATIC_TO_SHORTHAND, 580, 560, CLOSE, -MOVE_TO, 5, 4, -H_LINE_TO, 3, -R_V_LINE_TO, 12.44f, -CUBIC_TO, 3, 17.3f, 3.68f, 18, 4.52f, 18, -H_LINE_TO, 12, -R_V_LINE_TO, -2, -H_LINE_TO, 5, -V_LINE_TO, 4, +R_MOVE_TO, 60, 360, +H_LINE_TO, 240, +R_QUADRATIC_TO, -33, 0, -56.5f, -23.5f, +QUADRATIC_TO_SHORTHAND, 160, 840, +R_V_LINE_TO, -640, +R_H_LINE_TO, 80, +R_V_LINE_TO, 640, +R_H_LINE_TO, 400, +R_V_LINE_TO, 80, +CLOSE, +MOVE_TO, 400, 120, +R_V_LINE_TO, 560, +R_V_LINE_TO, -560, CLOSE
diff --git a/chrome/app/vector_icons/tv.icon b/chrome/app/vector_icons/tv.icon index 0bab71b..84f9fb5 100644 --- a/chrome/app/vector_icons/tv.icon +++ b/chrome/app/vector_icons/tv.icon
@@ -2,24 +2,33 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -CANVAS_DIMENSIONS, 20, -MOVE_TO, 7.06f, 15, -H_LINE_TO, 4, -R_ARC_TO, 2, 2, 0, 0, 1, -2, -2, -V_LINE_TO, 5, -R_ARC_TO, 2, 2, 0, 0, 1, 2, -2, -R_H_LINE_TO, 12, -R_ARC_TO, 2, 2, 0, 0, 1, 2, 2, -R_V_LINE_TO, 8, -R_ARC_TO, 2, 2, 0, 0, 1, -2, 2, -R_H_LINE_TO, -2.97f, -R_LINE_TO, 0.97f, 2, -H_LINE_TO, 6, -R_LINE_TO, 1.06f, -2, +CANVAS_DIMENSIONS, 960, +FILL_RULE_NONZERO, +MOVE_TO, 320, 840, +R_V_LINE_TO, -80, +H_LINE_TO, 160, +R_QUADRATIC_TO, -33, 0, -56.5f, -23.5f, +QUADRATIC_TO_SHORTHAND, 80, 680, +R_V_LINE_TO, -480, +R_QUADRATIC_TO, 0, -33, 23.5f, -56.5f, +QUADRATIC_TO_SHORTHAND, 160, 120, +R_H_LINE_TO, 640, +R_QUADRATIC_TO, 33, 0, 56.5f, 23.5f, +QUADRATIC_TO_SHORTHAND, 880, 200, +R_V_LINE_TO, 480, +R_QUADRATIC_TO, 0, 33, -23.5f, 56.5f, +QUADRATIC_TO_SHORTHAND, 800, 760, +H_LINE_TO, 640, +R_V_LINE_TO, 80, +H_LINE_TO, 320, CLOSE, -MOVE_TO, 16, 13, -V_LINE_TO, 5, -H_LINE_TO, 4, -R_V_LINE_TO, 8, -R_H_LINE_TO, 12, +MOVE_TO, 160, 680, +R_H_LINE_TO, 640, +R_V_LINE_TO, -480, +H_LINE_TO, 160, +R_V_LINE_TO, 480, +CLOSE, +R_MOVE_TO, 0, 0, +R_V_LINE_TO, -480, +R_V_LINE_TO, 480, CLOSE
diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc index fe0c8e2..0376236c 100644 --- a/chrome/browser/about_flags.cc +++ b/chrome/browser/about_flags.cc
@@ -5515,10 +5515,6 @@ flag_descriptions::kJapaneseOSSettingsName, flag_descriptions::kJapaneseOSSettingsDescription, kOsCrOS, FEATURE_VALUE_TYPE(ash::features::kJapaneseOSSettings)}, - {"enable-cros-multilingual-typing", - flag_descriptions::kMultilingualTypingName, - flag_descriptions::kMultilingualTypingDescription, kOsCrOS, - FEATURE_VALUE_TYPE(ash::features::kMultilingualTyping)}, {"enable-cros-on-device-grammar-check", flag_descriptions::kCrosOnDeviceGrammarCheckName, flag_descriptions::kCrosOnDeviceGrammarCheckDescription, kOsCrOS,
diff --git a/chrome/browser/android/favicon_helper_unittest.cc b/chrome/browser/android/favicon_helper_unittest.cc index c1a9c5131..58cf8cde 100644 --- a/chrome/browser/android/favicon_helper_unittest.cc +++ b/chrome/browser/android/favicon_helper_unittest.cc
@@ -31,7 +31,7 @@ // Create bitmap and fill with |color|. scoped_refptr<base::RefCountedBytes> data(new base::RefCountedBytes()); gfx::PNGCodec::EncodeBGRASkBitmap(gfx::test::CreateBitmap(size, color), false, - &data->as_vector()); + &data->data()); result.bitmap_data = data; result.pixel_size = gfx::Size(size, size);
diff --git a/chrome/browser/app_controller_mac.h b/chrome/browser/app_controller_mac.h index 4d7a57e..e9a4f011 100644 --- a/chrome/browser/app_controller_mac.h +++ b/chrome/browser/app_controller_mac.h
@@ -122,10 +122,6 @@ - (HistoryMenuBridge*)historyMenuBridge; - (TabMenuBridge*)tabMenuBridge; -// Initializes the AppShimMenuController. This enables changing the menu bar for -// apps. -- (void)initAppShimMenuController; - // Called when the user has changed browser windows, meaning the backing profile // may have changed. This can cause a rebuild of the user-data menus. This is a // no-op if the new profile is the same as the current one. This can be either
diff --git a/chrome/browser/app_controller_mac.mm b/chrome/browser/app_controller_mac.mm index d6625511..737ff732 100644 --- a/chrome/browser/app_controller_mac.mm +++ b/chrome/browser/app_controller_mac.mm
@@ -69,7 +69,6 @@ #include "chrome/browser/ui/browser_mac.h" #include "chrome/browser/ui/browser_window.h" #include "chrome/browser/ui/chrome_pages.h" -#import "chrome/browser/ui/cocoa/apps/app_shim_menu_controller_mac.h" #include "chrome/browser/ui/cocoa/apps/quit_with_apps_controller_mac.h" #import "chrome/browser/ui/cocoa/bookmarks/bookmark_menu_bridge.h" #import "chrome/browser/ui/cocoa/confirm_quit.h" @@ -585,9 +584,6 @@ std::unique_ptr<HistoryMenuBridge> _historyMenuBridge; - // Controller that manages main menu items for packaged apps. - AppShimMenuController* __strong _appShimMenuController; - // The profile menu, which appears right before the Help menu. It is only // available when multiple profiles is enabled. ProfileMenuController* __strong _profileMenuController; @@ -907,7 +903,6 @@ _profileAttributesStorageObserver.reset(); [self unregisterEventHandlers]; - _appShimMenuController = nil; _profileBookmarkMenuBridgeMap.clear(); } @@ -1063,10 +1058,6 @@ [self setUpdateCheckInterval]; - // Start managing the menu for app windows. This needs to be done here because - // main menu item titles are not yet initialized in awakeFromNib. - [self initAppShimMenuController]; - // If enabled, keep Chrome alive when apps are open instead of quitting all // apps. _quitWithAppsController = new QuitWithAppsController(); @@ -1872,11 +1863,6 @@ return _tabMenuBridge.get(); } -- (void)initAppShimMenuController { - if (!_appShimMenuController) - _appShimMenuController = [[AppShimMenuController alloc] init]; -} - - (void)setLastProfile:(Profile*)profile { if (profile == _lastProfile) return;
diff --git a/chrome/browser/apps/app_preload_service/app_preload_service.cc b/chrome/browser/apps/app_preload_service/app_preload_service.cc index e38934fe..144656a 100644 --- a/chrome/browser/apps/app_preload_service/app_preload_service.cc +++ b/chrome/browser/apps/app_preload_service/app_preload_service.cc
@@ -233,25 +233,22 @@ // If the app is already installed with the relevant install reason, we do not // need to reinstall it. This avoids extra work in the case where we are // retrying the flow after an install error for a different app. - - // TODO(crbug.com/329144520) Implement already installed check for android. - if (app.GetPlatform() == PackageType::kArc) { - return true; - } - InstallReason expected_reason = app.IsDefaultApp() ? InstallReason::kDefault : InstallReason::kOem; AppServiceProxy* proxy = AppServiceProxyFactory::GetForProfile(profile_); bool installed = false; - proxy->AppRegistryCache().ForOneApp( - app.GetWebAppId(), [&installed, expected_reason](const AppUpdate& app) { + proxy->AppRegistryCache().ForEachApp( + [&installed, expected_reason, app](const apps::AppUpdate& update) { // It's possible that if APS requests the same app to be installed for // multiple reasons, this check could incorrectly return false, as App // Service only reports the highest priority install reason. This is // acceptable since the check is just an optimization. - installed = apps_util::IsInstalled(app.Readiness()) && - app.InstallReason() == expected_reason; + if (update.InstallerPackageId() == app.GetPackageId() && + apps_util::IsInstalled(update.Readiness()) && + update.InstallReason() == expected_reason) { + installed = true; + } }); return !installed;
diff --git a/chrome/browser/apps/app_preload_service/preload_app_definition.cc b/chrome/browser/apps/app_preload_service/preload_app_definition.cc index 4c9787c..73f4c4b2 100644 --- a/chrome/browser/apps/app_preload_service/preload_app_definition.cc +++ b/chrome/browser/apps/app_preload_service/preload_app_definition.cc
@@ -4,9 +4,9 @@ #include "chrome/browser/apps/app_preload_service/preload_app_definition.h" +#include "base/notreached.h" #include "base/strings/string_util.h" #include "chrome/browser/apps/app_preload_service/proto/app_preload.pb.h" -#include "chrome/browser/web_applications/web_app_helpers.h" #include "components/services/app_service/public/cpp/package_id.h" #include "url/gurl.h" @@ -23,6 +23,10 @@ const PreloadAppDefinition&) = default; PreloadAppDefinition::~PreloadAppDefinition() = default; +std::optional<PackageId> PreloadAppDefinition::GetPackageId() const { + return package_id_; +} + std::string PreloadAppDefinition::GetName() const { return app_proto_.name(); } @@ -80,11 +84,6 @@ return GURL(package_id_->identifier()); } -std::string PreloadAppDefinition::GetWebAppId() const { - DCHECK_EQ(GetPlatform(), PackageType::kWeb); - return web_app::GenerateAppIdFromManifestId(GetWebAppManifestId()); -} - AppInstallData PreloadAppDefinition::ToAppInstallData() const { AppInstallData result(package_id_.value()); result.name = GetName(); @@ -103,6 +102,9 @@ std::ostream& operator<<(std::ostream& os, const PreloadAppDefinition& app) { os << std::boolalpha; + os << "- Package ID: " + << (app.GetPackageId() ? app.GetPackageId()->ToString() : std::string()) + << std::endl; os << "- Name: " << app.GetName() << std::endl; os << "- Platform: " << EnumToString(app.GetPlatform()) << std::endl; os << "- OEM: " << app.IsOemApp() << std::endl;
diff --git a/chrome/browser/apps/app_preload_service/preload_app_definition.h b/chrome/browser/apps/app_preload_service/preload_app_definition.h index 83bbfd76..2f3e3df 100644 --- a/chrome/browser/apps/app_preload_service/preload_app_definition.h +++ b/chrome/browser/apps/app_preload_service/preload_app_definition.h
@@ -26,6 +26,7 @@ PreloadAppDefinition& operator=(const PreloadAppDefinition&); ~PreloadAppDefinition(); + std::optional<PackageId> GetPackageId() const; std::string GetName() const; PackageType GetPlatform() const; bool IsDefaultApp() const; @@ -54,8 +55,6 @@ // called if `GetPlatform()` returns `AppType::kWeb`. GURL GetWebAppManifestId() const; - std::string GetWebAppId() const; - AppInstallData ToAppInstallData() const; private:
diff --git a/chrome/browser/apps/app_preload_service/preload_app_definition_unittest.cc b/chrome/browser/apps/app_preload_service/preload_app_definition_unittest.cc index 774120a..f306cb6 100644 --- a/chrome/browser/apps/app_preload_service/preload_app_definition_unittest.cc +++ b/chrome/browser/apps/app_preload_service/preload_app_definition_unittest.cc
@@ -209,15 +209,6 @@ "https://example.com/path/of/manifest_id"); } -TEST_F(PreloadAppDefinitionTest, GetWebAppId) { - proto::AppPreloadListResponse_App app; - app.set_package_id("web:https://example.com/path/of/manifest_id"); - - PreloadAppDefinition app_def(app); - - ASSERT_EQ(app_def.GetWebAppId(), "pckfllnaogmpbmijcjpenfdglaikbiea"); -} - TEST_F(PreloadAppDefinitionTest, ToAppInstallData) { proto::AppPreloadListResponse_App app; app.set_name("Example App");
diff --git a/chrome/browser/apps/app_service/app_icon/app_icon_source.cc b/chrome/browser/apps/app_service/app_icon/app_icon_source.cc index 9d59913..ae555d39 100644 --- a/chrome/browser/apps/app_service/app_icon/app_icon_source.cc +++ b/chrome/browser/apps/app_service/app_icon/app_icon_source.cc
@@ -35,7 +35,8 @@ IDR_APP_DEFAULT_ICON, apps_util::GetPrimaryDisplayUIScaleFactor()); base::RefCountedBytes* image_bytes = new base::RefCountedBytes(); - image_bytes->as_vector().assign(contents.begin(), contents.end()); + image_bytes->data().assign(contents.data(), + contents.data() + contents.size()); std::move(callback).Run(image_bytes); }
diff --git a/chrome/browser/apps/app_service/metrics/app_platform_metrics.cc b/chrome/browser/apps/app_service/metrics/app_platform_metrics.cc index 9d97319..1115446 100644 --- a/chrome/browser/apps/app_service/metrics/app_platform_metrics.cc +++ b/chrome/browser/apps/app_service/metrics/app_platform_metrics.cc
@@ -26,6 +26,7 @@ #include "chrome/browser/ash/guest_os/guest_os_shelf_utils.h" #include "chrome/browser/ash/profiles/profile_helper.h" #include "chrome/browser/profiles/profile.h" +#include "chrome/browser/web_applications/web_app_id_constants.h" #include "chrome/browser/web_applications/web_app_utils.h" #include "chromeos/components/mgs/managed_guest_session_utils.h" #include "components/app_constants/constants.h" @@ -1214,6 +1215,13 @@ .Record(ukm::UkmRecorder::Get()); } + // UMA for Mall app. + if (it.second.app_id == web_app::kMallAppId) { + base::UmaHistogramCustomTimes("Apps.AppDiscovery.MallUsageTime", + it.second.running_time, base::Seconds(1), + base::Hours(2), 100); + } + // Also reset time in the pref store now that we have reported this data. ClearAppsUsageTimeForInstance(it.first.ToString()); }
diff --git a/chrome/browser/apps/app_service/metrics/app_platform_metrics.h b/chrome/browser/apps/app_service/metrics/app_platform_metrics.h index a5ba771..084235a 100644 --- a/chrome/browser/apps/app_service/metrics/app_platform_metrics.h +++ b/chrome/browser/apps/app_service/metrics/app_platform_metrics.h
@@ -71,8 +71,6 @@ std::string GetAppTypeHistogramNameV2(apps::AppTypeNameV2 app_type_name); -const std::set<apps::AppTypeName>& GetAppTypeNameSet(); - ApplicationInstallTime ConvertInstallTimeToProtoApplicationInstallTime( InstallTime install_time);
diff --git a/chrome/browser/apps/app_service/metrics/app_platform_metrics_utils.cc b/chrome/browser/apps/app_service/metrics/app_platform_metrics_utils.cc index 6d2c4f5f..2beceea 100644 --- a/chrome/browser/apps/app_service/metrics/app_platform_metrics_utils.cc +++ b/chrome/browser/apps/app_service/metrics/app_platform_metrics_utils.cc
@@ -68,6 +68,9 @@ {apps::kExtensionHistogramName, apps::AppTypeName::kExtension}, {apps::kStandaloneBrowserExtensionHistogramName, apps::AppTypeName::kStandaloneBrowserExtension}, + {apps::kStandaloneBrowserWebAppHistogramName, + apps::AppTypeName::kStandaloneBrowserWebApp}, + {apps::kBruschettaHistogramName, apps::AppTypeName::kBruschetta}, }); constexpr char kInstallReasonUnknownHistogram[] = "Unknown";
diff --git a/chrome/browser/apps/app_service/metrics/app_platform_metrics_utils.h b/chrome/browser/apps/app_service/metrics/app_platform_metrics_utils.h index 97e8410..7053cf17 100644 --- a/chrome/browser/apps/app_service/metrics/app_platform_metrics_utils.h +++ b/chrome/browser/apps/app_service/metrics/app_platform_metrics_utils.h
@@ -19,8 +19,9 @@ namespace apps { // This is used for logging, so do not remove or reorder existing entries. -// This should be kept in sync with GetAppTypeNameSet in -// c/b/apps/app_service/app_platform_metrics_service.cc. +// This should be kept in sync with: +// * c/b/apps/app_service/metrics/app_platform_metrics_utils.cc:kAppTypeNameMap +// * tools/metrics/histograms/metadata/apps/histograms.xml:AppType enum class AppTypeName { kUnknown = 0, kArc = 1,
diff --git a/chrome/browser/ash/BUILD.gn b/chrome/browser/ash/BUILD.gn index 6f68b13..3526785 100644 --- a/chrome/browser/ash/BUILD.gn +++ b/chrome/browser/ash/BUILD.gn
@@ -2770,8 +2770,8 @@ "policy/remote_commands/user_commands_factory_ash.h", "policy/reporting/app_install_event_log_manager_wrapper.cc", "policy/reporting/app_install_event_log_manager_wrapper.h", - "policy/reporting/arc_app_install_event_encrypted_reporter.cc", - "policy/reporting/arc_app_install_event_encrypted_reporter.h", + "policy/reporting/arc_app_install_encrypted_event_reporter.cc", + "policy/reporting/arc_app_install_encrypted_event_reporter.h", "policy/reporting/arc_app_install_event_log.cc", "policy/reporting/arc_app_install_event_log.h", "policy/reporting/arc_app_install_event_log_collector.cc", @@ -6023,7 +6023,7 @@ "policy/remote_commands/fake_cros_network_config_base.h", "policy/remote_commands/user_command_arc_job_unittest.cc", "policy/reporting/app_install_event_log_manager_wrapper_unittest.cc", - "policy/reporting/arc_app_install_event_encrypted_reporter_unittest.cc", + "policy/reporting/arc_app_install_encrypted_event_reporter_unittest.cc", "policy/reporting/arc_app_install_event_log_collector_unittest.cc", "policy/reporting/arc_app_install_event_log_manager_unittest.cc", "policy/reporting/arc_app_install_event_log_unittest.cc",
diff --git a/chrome/browser/ash/PRESUBMIT.py b/chrome/browser/ash/PRESUBMIT.py new file mode 100644 index 0000000..54ab747 --- /dev/null +++ b/chrome/browser/ash/PRESUBMIT.py
@@ -0,0 +1,88 @@ +# Copyright 2024 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +PRESUBMIT_VERSION = '2.0.0' +USE_PYTHON3 = True + +def _CheckDepsFileProhibitingChromeExists(input_api, output_api): + """Enforce that each top-level directory in //chrome/browser/ash has DEPS file + which prohibits //chrome. + + This ensures that any new //chrome dependencies added in this directory are + reviewed by a //chrome OWNER. There is an active effort to refactor + //chrome/browser/ash to break these dependencies; see b/332804822. + """ + _CHROME_BROWSER_ASH = input_api.os_path.join('chrome', 'browser', 'ash') + + missing_deps_files = set() + deps_files_not_prohibiting_chrome = set() + + for f in input_api.AffectedFiles(False): + # Path relative to chrome/browser/ash. + # Example: For 'chrome/browser/ash/foo/bar/baz.h' => 'foo/bar/baz.h'. + relative_path = input_api.os_path.relpath(f.LocalPath(), + _CHROME_BROWSER_ASH) + + # Split path for this relative path. + # Example: For 'foo/bar/baz.h' => ['foo' 'bar/baz.h']. + splitPath = relative_path.split(input_api.os_path.sep, 1) + + # If the split path contains 1 or fewer elements, it is not in a + # subdirectory (e.g., len == 1 would be a file directly in + # //chrome/browser/ash). + if len(splitPath) <= 1: + continue + + relative_deps_files_path = input_api.os_path.join(splitPath[0], 'DEPS') + deps_file_path = input_api.os_path.join(input_api.PresubmitLocalPath(), + relative_deps_files_path) + + if not input_api.os_path.exists(deps_file_path): + missing_deps_files.add( + input_api.os_path.join(_CHROME_BROWSER_ASH, relative_deps_files_path)) + continue + + # If the affected file is not a DEPS file, move onto the next file to check. + if f.LocalPath() != deps_file_path: + continue + + # If the affected file *is* a DEPS file, confirm that it has a "-chrome" + # rule, prohibiting new //chrome dependencies. + prohibit_chrome_pattern = input_api.re.compile(r'\"\-chrome\"') + if not prohibit_chrome_pattern.search(input_api.ReadFile(deps_file_path)): + deps_files_not_prohibiting_chrome.add( + input_api.os_path.join(_CHROME_BROWSER_ASH, relative_deps_files_path)) + + results = [] + if missing_deps_files: + dir_text = '' + for dir in missing_deps_files: + dir_text += dir + ', ' + dir_text = dir_text[:-2] + results.append(output_api.PresubmitError( + "Subdirectories in //chrome/browser/ash require a DEPS file. Please " + "create DEPS files: [%s]. See b/332805865 and " + "//tools/chromeos/gen_deps.sh for details." % (dir_text) + )) + + if deps_files_not_prohibiting_chrome: + deps_text = '' + for deps_file in deps_files_not_prohibiting_chrome: + deps_text += deps_file + ', ' + deps_text = deps_text[:-2] + results.append(output_api.PresubmitError( + "DEPS files in subdirectories of in //chrome/browser/ash must prohibit " + "new //chrome dependencies. Please ensure a \"-chrome\" rule is added " + "in [%s]. See b/332805865 and //tools/chromeos/gen_deps.sh for " + " details." % (deps_text) + )) + + return results + +def CheckChangeOnUpload(input_api, output_api): + return _CheckDepsFileProhibitingChromeExists(input_api, output_api) + + +def CheckChangeOnCommit(input_api, output_api): + return _CheckDepsFileProhibitingChromeExists(input_api, output_api)
diff --git a/chrome/browser/ash/PRESUBMIT_test.py b/chrome/browser/ash/PRESUBMIT_test.py new file mode 100755 index 0000000..df6ab0cd --- /dev/null +++ b/chrome/browser/ash/PRESUBMIT_test.py
@@ -0,0 +1,121 @@ +#!/usr/bin/env python3 +# Copyright 2024 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import os.path +import sys +import unittest + +import PRESUBMIT + +# Switch to src/ directory to import test mocks. +file_path = os.path.dirname(os.path.abspath(__file__)) +sys.path.insert(0, os.path.join(file_path, '..', '..', '..')) +from PRESUBMIT_test_mocks import (MockInputApi, MockOutputApi, MockAffectedFile, + MockFile) + +_CHROME_BROWSER_ASH = os.path.join('chrome', 'browser', 'ash') + +class DepsFileProhibitingChromeExistsFileTest(unittest.TestCase): + def assertDepsFilesWithErrors(self, input_api, expected_missing_deps_files, + expected_deps_files_missing_chrome): + # Restore path that was changed to import test mocks above. + input_api.presubmit_local_path = _CHROME_BROWSER_ASH + + # Create mock files for all affected files so that os_path.exists() works. + input_api.CreateMockFileInPath( + [x.LocalPath() for x in input_api.AffectedFiles(include_deletes=True)]) + + results = PRESUBMIT._CheckDepsFileProhibitingChromeExists( + input_api, MockOutputApi()) + self.assertTrue(len(results) <= 2) + + missing_deps_file_pattern = input_api.re.compile( + r'.*require a DEPS file.*\[(.*)\].*') + missing_chrome_rule_pattern = input_api.re.compile( + r'.*must prohibit new \/\/chrome dependencies.*\[(.*)\].*') + + missing_deps_files = [] + deps_files_missing_chrome = [] + + for r in results: + regex_results = missing_deps_file_pattern.search(r.message) + if regex_results: + missing_deps_files = regex_results.group(1).split(', ') + + regex_results = missing_chrome_rule_pattern.search(r.message) + if missing_chrome_rule_pattern.search(r.message): + deps_files_missing_chrome = regex_results.group(1).split(', ') + + self.assertEqual(set(missing_deps_files), set(expected_missing_deps_files)) + self.assertEqual(set(deps_files_missing_chrome), + set(expected_deps_files_missing_chrome)) + + # No files created; no errors expected. + def testNoFiles(self): + input_api = MockInputApi() + self.assertDepsFilesWithErrors(input_api, [], []) + + # Create files in new subdirectories without DEPS files. + def testFileInDirectoryWithNoDeps(self): + input_api = MockInputApi() + input_api.files = [ + MockAffectedFile( + input_api.os_path.join(_CHROME_BROWSER_ASH, 'foo', 'bar.h'), ''), + MockAffectedFile( + input_api.os_path.join(_CHROME_BROWSER_ASH, 'bar', 'baz.h'), ''), + ] + self.assertDepsFilesWithErrors( + input_api, + [ + input_api.os_path.join(_CHROME_BROWSER_ASH, 'foo', 'DEPS'), + input_api.os_path.join(_CHROME_BROWSER_ASH, 'bar', 'DEPS'), + ], []) + + # Create files in a new subdirectories with DEPS files not prohibiting + # //chrome. + def testFileInDirectoryNotProhibitingChrome(self): + DEPS_FILE_NOT_PROHIBITING_CHROME = ['include_rules = []'] + + input_api = MockInputApi() + input_api.files = [ + MockAffectedFile( + input_api.os_path.join(_CHROME_BROWSER_ASH, 'foo', 'bar.h'), ''), + MockAffectedFile( + input_api.os_path.join(_CHROME_BROWSER_ASH, 'foo', 'DEPS'), + DEPS_FILE_NOT_PROHIBITING_CHROME), + MockAffectedFile( + input_api.os_path.join(_CHROME_BROWSER_ASH, 'bar', 'baz.h'), ''), + MockAffectedFile( + input_api.os_path.join(_CHROME_BROWSER_ASH, 'bar', 'DEPS'), + DEPS_FILE_NOT_PROHIBITING_CHROME), + ] + self.assertDepsFilesWithErrors( + input_api, [], + [ + input_api.os_path.join(_CHROME_BROWSER_ASH, 'foo', 'DEPS'), + input_api.os_path.join(_CHROME_BROWSER_ASH, 'bar', 'DEPS'), + ]) + + # Create files in a new subdirectories with DEPS files prohibiting //chrome. + def testFilesWithDepsFilesProhibitingChrome(self): + DEPS_FILE_PROHIBITING_CHROME = ['include_rules = [ "-chrome", ]'] + + input_api = MockInputApi() + input_api.files = [ + MockAffectedFile( + input_api.os_path.join(_CHROME_BROWSER_ASH, 'foo', 'bar.h'), ''), + MockAffectedFile( + input_api.os_path.join(_CHROME_BROWSER_ASH, 'foo', 'DEPS'), + DEPS_FILE_PROHIBITING_CHROME), + MockAffectedFile( + input_api.os_path.join(_CHROME_BROWSER_ASH, 'bar', 'baz.h'), ''), + MockAffectedFile( + input_api.os_path.join(_CHROME_BROWSER_ASH, 'bar', 'DEPS'), + DEPS_FILE_PROHIBITING_CHROME), + ] + self.assertDepsFilesWithErrors(input_api, [], []) + +if __name__ == '__main__': + unittest.main()
diff --git a/chrome/browser/ash/child_accounts/web_approvals_integration_test.cc b/chrome/browser/ash/child_accounts/web_approvals_integration_test.cc index d795dcf..7320a02 100644 --- a/chrome/browser/ash/child_accounts/web_approvals_integration_test.cc +++ b/chrome/browser/ash/child_accounts/web_approvals_integration_test.cc
@@ -33,7 +33,9 @@ std::string GetMatureSite() { return delegate_.test_data().mature_site; } }; -IN_PROC_BROWSER_TEST_F(WebApprovalsIntegrationTest, TestMatureSiteBlocked) { +// Flaky: b/334993995 +IN_PROC_BROWSER_TEST_F(WebApprovalsIntegrationTest, + DISABLED_TestMatureSiteBlocked) { SetupContextWidget(); login_mixin().Login();
diff --git a/chrome/browser/ash/customization/customization_wallpaper_util.cc b/chrome/browser/ash/customization/customization_wallpaper_util.cc index e03879c..2ffaff6 100644 --- a/chrome/browser/ash/customization/customization_wallpaper_util.cc +++ b/chrome/browser/ash/customization/customization_wallpaper_util.cc
@@ -38,8 +38,9 @@ image, skia::ImageOperations::RESIZE_LANCZOS3, size); scoped_refptr<base::RefCountedBytes> image_data = new base::RefCountedBytes(); gfx::JPEGCodec::Encode(*resized_image.bitmap(), 90 /*quality=*/, - &image_data->as_vector()); - return base::WriteFile(file_path, *image_data); + &image_data->data()); + return base::WriteFile( + file_path, base::make_span(image_data->front(), image_data->size())); } // Returns true if both file paths exist.
diff --git a/chrome/browser/ash/events/event_rewriter_delegate_impl.cc b/chrome/browser/ash/events/event_rewriter_delegate_impl.cc index d13efd75..d52d7dc 100644 --- a/chrome/browser/ash/events/event_rewriter_delegate_impl.cc +++ b/chrome/browser/ash/events/event_rewriter_delegate_impl.cc
@@ -75,6 +75,10 @@ const std::string& pref_name) const { // `modifier_key` and `device_id` are unused when the flag is disabled. if (!ash::features::IsInputDeviceSettingsSplitEnabled()) { + if (pref_name.empty()) { + return std::nullopt; + } + // If we're at the login screen, try to get the pref from the global prefs // dictionary. int value;
diff --git a/chrome/browser/ash/events/event_rewriter_unittest.cc b/chrome/browser/ash/events/event_rewriter_unittest.cc index c6158481..2441119 100644 --- a/chrome/browser/ash/events/event_rewriter_unittest.cc +++ b/chrome/browser/ash/events/event_rewriter_unittest.cc
@@ -63,6 +63,7 @@ #include "ui/events/ash/pref_names.h" #include "ui/events/devices/device_data_manager.h" #include "ui/events/devices/device_data_manager_test_api.h" +#include "ui/events/devices/input_device.h" #include "ui/events/devices/keyboard_device.h" #include "ui/events/devices/touchpad_device.h" #include "ui/events/event.h" @@ -327,6 +328,10 @@ ui::DomKey::CAPS_LOCK, ui::VKEY_CAPITAL, ui::EF_MOD3_DOWN>; +using KeyFunction = TestKey<ui::DomCode::FN, + ui::DomKey::FN, + ui::VKEY_FUNCTION, + ui::EF_FUNCTION_DOWN>; // Function keys. using KeyEscape = @@ -683,6 +688,8 @@ ui::VKEY_LWIN}, {ui::EF_MOD3_DOWN, ui::DomCode::CAPS_LOCK, ui::DomKey::CAPS_LOCK, ui::VKEY_CAPITAL}, + {ui::EF_FUNCTION_DOWN, ui::DomCode::FN, ui::DomKey::FN, + ui::VKEY_FUNCTION}, }; // Send modifier key press events to update rewriter's modifier flag state. @@ -1693,6 +1700,86 @@ input_method_manager_mock_->set_mod3_used(false); } +TEST_P(EventRewriterTest, TestRewriteToFunction) { + // Remap RightAlt to Control + Preferences::RegisterProfilePrefs(prefs()->registry()); + IntegerPrefMember control; + InitModifierKeyPref(&control, ::prefs::kLanguageRemapControlKeyTo, + ui::mojom::ModifierKey::kControl, + ui::mojom::ModifierKey::kFunction); + + IntegerPrefMember search; + InitModifierKeyPref(&search, ::prefs::kLanguageRemapSearchKeyTo, + ui::mojom::ModifierKey::kMeta, + ui::mojom::ModifierKey::kFunction); + + for (const auto& keyboard : kChromeKeyboardVariants) { + SCOPED_TRACE(keyboard.name); + SetUpKeyboard(keyboard); + + // A + rewritten modifiers produce events with function flag down. + EXPECT_EQ(KeyA::Typed(ui::EF_FUNCTION_DOWN), + RunRewriter(KeyA::Typed(), ui::EF_CONTROL_DOWN)); + EXPECT_EQ(KeyA::Typed(ui::EF_FUNCTION_DOWN), + RunRewriter(KeyA::Typed(), ui::EF_COMMAND_DOWN)); + + // After command + control are released, events are not affected. + EXPECT_EQ(KeyA::Typed(), RunRewriter(KeyA::Typed())); + } +} + +TEST_P(EventRewriterTest, TestRewriteFromFunction) { + // Function is only available when InputDeviceSettingsSplit is enabled. + scoped_feature_list_.InitAndEnableFeature( + features::kInputDeviceSettingsSplit); + + // Remap Function to Control + InitModifierKeyPref(nullptr, "", ui::mojom::ModifierKey::kFunction, + ui::mojom::ModifierKey::kControl); + + for (const auto& keyboard : kChromeKeyboardVariants) { + SCOPED_TRACE(keyboard.name); + SetUpKeyboard(keyboard); + + EXPECT_EQ(KeyLControl::Typed(), RunRewriter(KeyFunction::Typed())); + + // A + rewritten modifiers produce events with function flag down. + EXPECT_EQ(KeyA::Typed(ui::EF_CONTROL_DOWN), + RunRewriter(KeyA::Typed(), ui::EF_FUNCTION_DOWN)); + // After command + control are released, events are not affected. + EXPECT_EQ(KeyA::Typed(), RunRewriter(KeyA::Typed())); + } + + // Remap Function to CapsLock + InitModifierKeyPref(nullptr, "", ui::mojom::ModifierKey::kFunction, + ui::mojom::ModifierKey::kCapsLock); + + for (const auto& keyboard : kChromeKeyboardVariants) { + SCOPED_TRACE(keyboard.name); + SetUpKeyboard(keyboard); + + // Toggle CapsLock on + EXPECT_EQ(KeyCapsLock::Typed(ui::EF_CAPS_LOCK_ON), + RunRewriter(KeyFunction::Typed(ui::EF_CAPS_LOCK_ON))); + + // Toggle CapsLock off + EXPECT_EQ(KeyCapsLock::Typed(), RunRewriter(KeyFunction::Typed())); + } + + // Remap Function to Void + InitModifierKeyPref(nullptr, "", ui::mojom::ModifierKey::kFunction, + ui::mojom::ModifierKey::kVoid); + + for (const auto& keyboard : kChromeKeyboardVariants) { + SCOPED_TRACE(keyboard.name); + SetUpKeyboard(keyboard); + + EXPECT_EQ(KeyUnknown::Typed(), RunRewriter(KeyFunction::Typed())); + } + + scoped_feature_list_.Reset(); +} + // TODO(crbug.com/1179893): Remove once the feature is enabled permanently. TEST_P(EventRewriterTest, TestRewriteExtendedKeysAltVariantsOld) { Preferences::RegisterProfilePrefs(prefs()->registry());
diff --git a/chrome/browser/ash/exo/chrome_security_delegate_unittest.cc b/chrome/browser/ash/exo/chrome_security_delegate_unittest.cc index 2a6e2320..ad97c426 100644 --- a/chrome/browser/ash/exo/chrome_security_delegate_unittest.cc +++ b/chrome/browser/ash/exo/chrome_security_delegate_unittest.cc
@@ -50,15 +50,12 @@ } void Capture(std::string* result, scoped_refptr<base::RefCountedMemory> data) { - *result = std::string(base::as_string_view(*data)); + *result = std::string(data->front_as<char>(), data->size()); } void CaptureUTF16(std::string* result, scoped_refptr<base::RefCountedMemory> data) { - base::span<const uint8_t> bytes = *data; - std::u16string str(bytes.size() / 2u, u'\0'); - base::as_writable_byte_span(str).copy_from(bytes); - *result = base::UTF16ToUTF8(str); + base::UTF16ToUTF8(data->front_as<char16_t>(), data->size() / 2, result); } } // namespace
diff --git a/chrome/browser/ash/file_system_provider/cloud_file_system.cc b/chrome/browser/ash/file_system_provider/cloud_file_system.cc index 7dd09fa5..cdba973 100644 --- a/chrome/browser/ash/file_system_provider/cloud_file_system.cc +++ b/chrome/browser/ash/file_system_provider/cloud_file_system.cc
@@ -37,10 +37,6 @@ return GURL("chrome://content-cache/"); } -const base::FilePath RootFilePath() { - return base::FilePath("/"); -} - std::ostream& operator<<(std::ostream& out, const std::vector<base::FilePath>& entry_paths) { for (size_t i = 0; i < entry_paths.size(); ++i) { @@ -119,26 +115,9 @@ file_system_->GetFileSystemInfo(), base::BindOnce(&CloudFileSystem::OnContentCacheInitialized, weak_ptr_factory_.GetWeakPtr())); - - // Add watcher to keep content cache up to date. Notifications are received - // though Notify() so no notification_callback is needed. - AddWatcher(GetContentCacheURL(), RootFilePath(), - /*recursive=*/true, /*persistent=*/false, - base::BindOnce([](base::File::Error result) { - VLOG(1) << "Added file watcher on root: " << result; - }), - base::DoNothing()); } -CloudFileSystem::~CloudFileSystem() { - if (content_cache_) { - RemoveWatcher(GetContentCacheURL(), RootFilePath(), - /*recursive=*/true, - base::BindOnce([](base::File::Error result) { - VLOG(1) << "Removed file watcher on root: " << result; - })); - } -} +CloudFileSystem::~CloudFileSystem() = default; void CloudFileSystem::OnContentCacheInitialized( base::FileErrorOr<std::unique_ptr<ContentCache>> error_or_cache) { @@ -146,6 +125,7 @@ << "Error initializing the content cache: " << error_or_cache.error(); if (error_or_cache.has_value()) { content_cache_ = std::move(error_or_cache.value()); + // TODO(b/328679875): Add watcher for every file in the cache. } } @@ -257,18 +237,37 @@ auto readchunk_success_callback = base::BindRepeating( std::move(callback), bytes_read, has_more, base::File::FILE_OK); + const OpenedCloudFile& opened_cloud_file = it->second; if (!content_cache_->StartWriteBytes( - it->second, buffer, offset, bytes_read, + opened_cloud_file, buffer, offset, bytes_read, base::BindOnce(&CloudFileSystem::OnBytesWrittenToCache, weak_ptr_factory_.GetWeakPtr(), + opened_cloud_file.file_path, readchunk_success_callback))) { readchunk_success_callback.Run(); } } void CloudFileSystem::OnBytesWrittenToCache( + const base::FilePath& file_path, base::RepeatingCallback<void()> readchunk_success_callback, base::File::Error result) { + if (result == base::File::FILE_OK) { + Watchers::const_iterator watcher = + GetWatchers()->find(WatcherKey(file_path, /*recursive=*/false)); + if (watcher == GetWatchers()->end() || + !watcher->second.subscribers.contains(GetContentCacheURL())) { + // This file is newly added to the cache so watch it to track any changes. + // Notifications are received though Notify() so no notification_callback + // is needed. + AddWatcher(GetContentCacheURL(), file_path, + /*recursive=*/false, /*persistent=*/false, + base::BindOnce([](base::File::Error result) { + VLOG(1) << "Added file watcher on file: " << result; + }), + base::DoNothing()); + } + } readchunk_success_callback.Run(); }
diff --git a/chrome/browser/ash/file_system_provider/cloud_file_system.h b/chrome/browser/ash/file_system_provider/cloud_file_system.h index d080053..91d0090 100644 --- a/chrome/browser/ash/file_system_provider/cloud_file_system.h +++ b/chrome/browser/ash/file_system_provider/cloud_file_system.h
@@ -168,6 +168,7 @@ // successfully read the file, if the content cache fails to write the file to // disk this should not stop further FSP requests. void OnBytesWrittenToCache( + const base::FilePath& file_path, base::RepeatingCallback<void()> readchunk_success_callback, base::File::Error result);
diff --git a/chrome/browser/ash/file_system_provider/cloud_file_system_unittest.cc b/chrome/browser/ash/file_system_provider/cloud_file_system_unittest.cc index 30d3a11f..b4fb572 100644 --- a/chrome/browser/ash/file_system_provider/cloud_file_system_unittest.cc +++ b/chrome/browser/ash/file_system_provider/cloud_file_system_unittest.cc
@@ -32,7 +32,7 @@ using testing::_; using testing::Field; using testing::IsEmpty; -using testing::IsTrue; +using testing::IsFalse; using testing::Return; using OpenFileFuture = @@ -65,6 +65,7 @@ class MockContentCache : public ContentCache { public: + MOCK_METHOD(void, SetMaxCacheSize, (size_t max_cache_size), (override)); MOCK_METHOD(bool, StartReadBytes, (const OpenedCloudFile& file, @@ -160,10 +161,11 @@ void ReadFileSuccessfully(CloudFileSystem& cloud_file_system, int file_handle, - scoped_refptr<net::IOBuffer> buffer) { + scoped_refptr<net::IOBuffer> buffer, + int64_t offset = 0, + int length = 1) { ReadFileFuture read_file_future; - cloud_file_system.ReadFile(file_handle, buffer.get(), /*offset=*/0, - /*length=*/1, + cloud_file_system.ReadFile(file_handle, buffer.get(), offset, length, read_file_future.GetRepeatingCallback()); EXPECT_EQ(read_file_future.Get<int>(), 1); EXPECT_EQ(read_file_future.Get<base::File::Error>(), base::File::FILE_OK); @@ -192,37 +194,7 @@ std::unique_ptr<TestingProfile> profile_; }; -// Test that there always exists a self-added recursive watcher on root when -// there is a CacheManager. -TEST_F(FileSystemProviderCloudFileSystemTest, - WatcherOnRootIsAddedWhenCacheManagerExists) { - EXPECT_CALL(mock_cache_manager_, - InitializeForProvider( - GetFileSystemInfo(/*with_mock_cache_manager=*/true), _)) - .Times(1); - std::unique_ptr<CloudFileSystem> cloud_file_system = - CreateCloudFileSystem(/*with_mock_cache_manager=*/true); - - // Expect recursive root watcher added. - EXPECT_THAT(cloud_file_system->GetWatchers(), - Pointee(ElementsAre(Pair( - _, AllOf(Field(&Watcher::entry_path, base::FilePath("/")), - Field(&Watcher::recursive, IsTrue())))))); -} - -// Test that there is not a recursive watcher on root when there isn't a -// CacheManager. -TEST_F(FileSystemProviderCloudFileSystemTest, - WatcherOnRootIsNotAddedWhenCacheManagerDoesNotExist) { - EXPECT_CALL(mock_cache_manager_, InitializeForProvider(_, _)).Times(0); - std::unique_ptr<CloudFileSystem> cloud_file_system = - CreateCloudFileSystem(/*with_mock_cache_manager=*/false); - - // Expect no watchers are added. - EXPECT_THAT(cloud_file_system->GetWatchers(), Pointee(IsEmpty())); -} - -TEST_F(FileSystemProviderCloudFileSystemTest, FirstReadFileWritesToCache) { +TEST_F(FileSystemProviderCloudFileSystemTest, ContiguousReadsWriteToCache) { auto [mock_content_cache, cloud_file_system] = CreateMockContentCacheAndCloudFileSystem(); @@ -251,7 +223,40 @@ return true; }); - ReadFileSuccessfully(*cloud_file_system, file_handle, buffer); + // Read the first chunk. + ReadFileSuccessfully(*cloud_file_system, file_handle, buffer, /*offset=*/0, + /*length=*/1); + + // Expect watcher added for file. + EXPECT_THAT( + cloud_file_system->GetWatchers(), + Pointee(ElementsAre(Pair( + _, AllOf(Field(&Watcher::entry_path, base::FilePath(kFakeFilePath)), + Field(&Watcher::recursive, IsFalse())))))); + + // Read the next chunk. + EXPECT_CALL(*mock_content_cache, + StartReadBytes(_, buffer.get(), /*offset=*/1, + /*length=*/1, IsNotNullCallback())) + .WillOnce(Return(false)); + EXPECT_CALL(*mock_content_cache, + StartWriteBytes(_, buffer.get(), /*offset=*/1, + /*length=*/1, IsNotNullCallback())) + .WillOnce([](const OpenedCloudFile& file, net::IOBuffer* buffer, + int64_t offset, int length, FileErrorCallback callback) { + std::move(callback).Run(base::File::FILE_OK); + return true; + }); + ReadFileSuccessfully(*cloud_file_system, file_handle, buffer, /*offset=*/1, + /*length=*/1); + + // Expect no new watcher added for the file. + EXPECT_THAT( + cloud_file_system->GetWatchers(), + Pointee(ElementsAre(Pair( + _, AllOf(Field(&Watcher::entry_path, base::FilePath(kFakeFilePath)), + Field(&Watcher::recursive, IsFalse())))))); + CloseFileSuccessfully(*cloud_file_system, file_handle); } @@ -316,6 +321,9 @@ .WillOnce(Return(false)); ReadFileSuccessfully(*cloud_file_system, file_handle, buffer); + // Expect no watcher is added. + EXPECT_THAT(cloud_file_system->GetWatchers(), Pointee(IsEmpty())); + CloseFileSuccessfully(*cloud_file_system, file_handle); } @@ -336,6 +344,9 @@ EXPECT_CALL(*mock_content_cache, StartWriteBytes(_, _, _, _, _)).Times(0); ReadFileSuccessfully(*cloud_file_system, file_handle, buffer); + // Expect no watcher is added. + EXPECT_THAT(cloud_file_system->GetWatchers(), Pointee(IsEmpty())); + CloseFileSuccessfully(*cloud_file_system, file_handle); } @@ -374,6 +385,8 @@ EXPECT_EQ(read_file_future.Get<int>(), 0); EXPECT_EQ(read_file_future.Get<base::File::Error>(), base::File::FILE_ERROR_INVALID_OPERATION); + // Expect no watcher is added. + EXPECT_THAT(cloud_file_system->GetWatchers(), Pointee(IsEmpty())); CloseFileSuccessfully(*cloud_file_system, file_handle); }
diff --git a/chrome/browser/ash/file_system_provider/content_cache/content_cache.h b/chrome/browser/ash/file_system_provider/content_cache/content_cache.h index 64a9baa..56d0275 100644 --- a/chrome/browser/ash/file_system_provider/content_cache/content_cache.h +++ b/chrome/browser/ash/file_system_provider/content_cache/content_cache.h
@@ -25,6 +25,12 @@ public: virtual ~ContentCache() = default; + // Sets the maximum size of the cache. No new items will be inserted once the + // capacity is reached. + // TODO(b/328679426): Evict items if the new max size is less than the number + // of items already in the cache. + virtual void SetMaxCacheSize(size_t max_cache_size) = 0; + // Start reading bytes defined by `file` from the content cache. Returns true // when the bytes exist in the content cache and can be read (the actual bytes // will be stored in the `buffer` and `callback` invoked on finish) and false
diff --git a/chrome/browser/ash/file_system_provider/content_cache/content_cache_impl.cc b/chrome/browser/ash/file_system_provider/content_cache/content_cache_impl.cc index 8b458c5..f3f17476 100644 --- a/chrome/browser/ash/file_system_provider/content_cache/content_cache_impl.cc +++ b/chrome/browser/ash/file_system_provider/content_cache/content_cache_impl.cc
@@ -55,12 +55,14 @@ } // namespace ContentCacheImpl::ContentCacheImpl(const base::FilePath& root_dir, - BoundContextDatabase context_db) + BoundContextDatabase context_db, + size_t max_cache_size) : root_dir_(root_dir), io_task_runner_(base::ThreadPool::CreateSequencedTaskRunner( {base::MayBlock(), base::TaskPriority::BEST_EFFORT, base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN})), - context_db_(std::move(context_db)) {} + context_db_(std::move(context_db)), + max_cache_size_(max_cache_size) {} ContentCacheImpl::~ContentCacheImpl() { context_db_.Reset(); @@ -68,8 +70,16 @@ std::unique_ptr<ContentCache> ContentCacheImpl::Create( const base::FilePath& root_dir, - BoundContextDatabase context_db) { - return std::make_unique<ContentCacheImpl>(root_dir, std::move(context_db)); + BoundContextDatabase context_db, + size_t max_cache_size) { + return std::make_unique<ContentCacheImpl>(root_dir, std::move(context_db), + max_cache_size); +} + +void ContentCacheImpl::SetMaxCacheSize(size_t max_cache_size) { + // TODO(b/328679426): Evict items if the new max size is less than the number + // of items already in the cache. + max_cache_size_ = max_cache_size; } bool ContentCacheImpl::StartReadBytes( @@ -163,8 +173,16 @@ ContentLRUCache::iterator it = lru_cache_.Get(file.file_path); if (it == lru_cache_.end()) { - // No `CacheFileContext` as this is the first write to the cache, let's - // create it with the supplied version_tag. + // The file doesn't exist in the cache yet. + + if (lru_cache_.size() >= max_cache_size_) { + // TODO(b/328679426): Evict files instead of preventing all new + // insertions. + VLOG(1) << "Cache is already at capacity"; + return false; + } + + // Let's create `CacheFileContext` with the supplied version_tag. it = lru_cache_.Put( PathContextPair(file.file_path, CacheFileContext(file.version_tag))); }
diff --git a/chrome/browser/ash/file_system_provider/content_cache/content_cache_impl.h b/chrome/browser/ash/file_system_provider/content_cache/content_cache_impl.h index 7b4a83e6..db7af68e 100644 --- a/chrome/browser/ash/file_system_provider/content_cache/content_cache_impl.h +++ b/chrome/browser/ash/file_system_provider/content_cache/content_cache_impl.h
@@ -16,13 +16,17 @@ #include "chrome/browser/ash/file_system_provider/provided_file_system_interface.h" namespace ash::file_system_provider { +namespace { +constexpr size_t kMaxCacheSize = 500; +} // namespace // The content cache for every mounted FSP. This will serve as the single point // of orchestration between the LRU cache and the disk persistence layer. class ContentCacheImpl : public ContentCache { public: ContentCacheImpl(const base::FilePath& root_dir, - BoundContextDatabase context_db); + BoundContextDatabase context_db, + size_t max_cache_size); ContentCacheImpl(const ContentCacheImpl&) = delete; ContentCacheImpl& operator=(const ContentCacheImpl&) = delete; @@ -30,8 +34,12 @@ ~ContentCacheImpl() override; // Creates a `ContentCache` with the concrete implementation. - static std::unique_ptr<ContentCache> Create(const base::FilePath& root_dir, - BoundContextDatabase context_db); + static std::unique_ptr<ContentCache> Create( + const base::FilePath& root_dir, + BoundContextDatabase context_db, + size_t max_cache_size = kMaxCacheSize); + + void SetMaxCacheSize(size_t max_cache_size) override; bool StartReadBytes( const OpenedCloudFile& file, @@ -77,6 +85,7 @@ scoped_refptr<base::SequencedTaskRunner> io_task_runner_; BoundContextDatabase context_db_; + size_t max_cache_size_; base::WeakPtrFactory<ContentCacheImpl> weak_ptr_factory_{this}; };
diff --git a/chrome/browser/ash/file_system_provider/content_cache/content_cache_impl_unittest.cc b/chrome/browser/ash/file_system_provider/content_cache/content_cache_impl_unittest.cc index 79561697..8471829 100644 --- a/chrome/browser/ash/file_system_provider/content_cache/content_cache_impl_unittest.cc +++ b/chrome/browser/ash/file_system_provider/content_cache/content_cache_impl_unittest.cc
@@ -46,7 +46,7 @@ EXPECT_TRUE(future.Get()); content_cache_ = - std::make_unique<ContentCacheImpl>(temp_dir_.GetPath(), std::move(db)); + ContentCacheImpl::Create(temp_dir_.GetPath(), std::move(db)); } void TearDown() override { content_cache_.reset(); } @@ -156,6 +156,37 @@ } TEST_F(FileSystemProviderContentCacheImplTest, + StartWriteBytesForNewFileShouldFailIfCacheFull) { + content_cache_->SetMaxCacheSize(2); + + // Inserts file into cache. 1 space left. + WriteFileToCache(base::FilePath("random-path1"), /*version_tag=*/"versionA"); + // Inserts another file into cache. 0 spaces left. + WriteFileToCache(base::FilePath("random-path2"), /*version_tag=*/"versionA"); + + // Expect third insertion to fail. + OpenedCloudFile file3(base::FilePath("random-path3"), + OpenFileMode::OPEN_FILE_MODE_READ, + /*version_tag=*/"versionA"); + EXPECT_FALSE(content_cache_->StartWriteBytes(file3, /*buffer=*/nullptr, + /*offset=*/0, kDefaultChunkSize, + base::DoNothing())); + + // Should still be able to write to existing files in the cache. + OpenedCloudFile file1(base::FilePath("random-path1"), + OpenFileMode::OPEN_FILE_MODE_READ, + /*version_tag=*/"versionA"); + TestFuture<base::File::Error> future; + scoped_refptr<net::IOBufferWithSize> buffer = + InitializeBufferWithRandBytes(kDefaultChunkSize); + EXPECT_TRUE(content_cache_->StartWriteBytes(file1, buffer.get(), + /*offset=*/512, kDefaultChunkSize, + future.GetCallback())); + // Contiguous file write should succeed. + EXPECT_EQ(future.Get(), base::File::FILE_OK); +} + +TEST_F(FileSystemProviderContentCacheImplTest, StartReadBytesShouldFailOnFirstRead) { OpenedCloudFile file(base::FilePath("not-in-cache"), OpenFileMode::OPEN_FILE_MODE_READ, /*version_tag=*/"");
diff --git a/chrome/browser/ash/file_system_provider/fake_provided_file_system.cc b/chrome/browser/ash/file_system_provider/fake_provided_file_system.cc index 78aa74a..34bb5a3b 100644 --- a/chrome/browser/ash/file_system_provider/fake_provided_file_system.cc +++ b/chrome/browser/ash/file_system_provider/fake_provided_file_system.cc
@@ -535,15 +535,20 @@ const WatcherKey key(entry_watcher, recursive); const Watchers::iterator it = watchers_.find(key); if (it != watchers_.end()) { - std::move(callback).Run(base::File::FILE_OK); return PostAbortableTask( base::BindOnce(std::move(callback), base::File::FILE_OK)); } + Subscriber subscriber; + subscriber.origin = origin; + subscriber.persistent = persistent; + subscriber.notification_callback = std::move(notification_callback); + // Add watcher. Watcher* const watcher = &watchers_[key]; watcher->entry_path = entry_watcher; watcher->recursive = recursive; + watcher->subscribers[origin] = subscriber; // Notify observers. for (auto& observer : observers_) {
diff --git a/chrome/browser/ash/input_method/native_input_method_engine_without_ime_service_browsertest.cc b/chrome/browser/ash/input_method/native_input_method_engine_without_ime_service_browsertest.cc index 43eb575..3c5341a1 100644 --- a/chrome/browser/ash/input_method/native_input_method_engine_without_ime_service_browsertest.cc +++ b/chrome/browser/ash/input_method/native_input_method_engine_without_ime_service_browsertest.cc
@@ -102,8 +102,7 @@ public: NativeInputMethodEngineWithoutImeServiceTest() : input_method_(this) { feature_list_.InitWithFeatures( - /*enabled_features=*/{features::kMultilingualTyping, - features::kOnDeviceGrammarCheck}, + /*enabled_features=*/{features::kOnDeviceGrammarCheck}, /*disabled_features=*/{}); }
diff --git a/chrome/browser/ash/login/supervised_user_login_integration_test.cc b/chrome/browser/ash/login/supervised_user_login_integration_test.cc index 1628d81..5750542 100644 --- a/chrome/browser/ash/login/supervised_user_login_integration_test.cc +++ b/chrome/browser/ash/login/supervised_user_login_integration_test.cc
@@ -73,7 +73,9 @@ } }; -IN_PROC_BROWSER_TEST_F(SupervisedUserLoginIntegrationTest, TestUnicornLogin) { +// Flaky: b/334993995 +IN_PROC_BROWSER_TEST_F(SupervisedUserLoginIntegrationTest, + DISABLED_TestUnicornLogin) { SetupContextWidget(); login_mixin().Login(); @@ -83,7 +85,9 @@ VerifyPolicies(); } -IN_PROC_BROWSER_TEST_F(SupervisedUserLoginIntegrationTest, TestGellerLogin) { +// Flaky: b/334993995 +IN_PROC_BROWSER_TEST_F(SupervisedUserLoginIntegrationTest, + DISABLED_TestGellerLogin) { SetupContextWidget(); delegate_.set_user_type( @@ -95,7 +99,9 @@ VerifyPolicies(); } -IN_PROC_BROWSER_TEST_F(SupervisedUserLoginIntegrationTest, TestGriffinLogin) { +// Flaky: b/334993995 +IN_PROC_BROWSER_TEST_F(SupervisedUserLoginIntegrationTest, + DISABLED_TestGriffinLogin) { SetupContextWidget(); delegate_.set_user_type(
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 1dbe9acd..997c3d9 100644 --- a/chrome/browser/ash/login/users/avatar/user_image_loader.cc +++ b/chrome/browser/ash/login/users/avatar/user_image_loader.cc
@@ -297,7 +297,7 @@ auto encoded = base::MakeRefCounted<base::RefCountedBytes>(); if (!gfx::PNGCodec::EncodeBGRASkBitmap( bitmap, /*discard_transparency=*/false, - &encoded->as_vector())) { + &encoded->data())) { return std::make_unique<user_manager::UserImage>(); }
diff --git a/chrome/browser/ash/login/users/avatar/user_image_loader_unittest.cc b/chrome/browser/ash/login/users/avatar/user_image_loader_unittest.cc index a6822fe..f3ad64f 100644 --- a/chrome/browser/ash/login/users/avatar/user_image_loader_unittest.cc +++ b/chrome/browser/ash/login/users/avatar/user_image_loader_unittest.cc
@@ -60,9 +60,8 @@ task_environment_.GetMainThreadTaskRunner(), image_path, base::BindLambdaForTesting( [&](std::unique_ptr<user_manager::UserImage> user_image) { - EXPECT_EQ( - original_contents, - std::string(base::as_string_view(*user_image->image_bytes()))); + auto data = user_image->image_bytes()->data(); + EXPECT_EQ(original_contents, std::string(data.begin(), data.end())); EXPECT_EQ(user_manager::UserImage::FORMAT_WEBP, user_image->image_format()); EXPECT_EQ(16, user_image->image().width());
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 defb65f..3d0b38e 100644 --- a/chrome/browser/ash/login/users/chrome_user_manager_impl.cc +++ b/chrome/browser/ash/login/users/chrome_user_manager_impl.cc
@@ -107,7 +107,6 @@ #include "content/public/browser/browser_thread.h" #include "content/public/common/content_switches.h" #include "google_apis/gaia/gaia_auth_util.h" -#include "ui/base/l10n/l10n_util.h" #include "ui/wm/core/wm_core_switches.h" namespace ash { @@ -148,12 +147,6 @@ } } -// Runs on SequencedWorkerPool thread. Passes resolved locale to UI thread. -void ResolveLocale(const std::string& raw_locale, - std::string* resolved_locale) { - std::ignore = l10n_util::CheckAndResolveLocale(raw_locale, resolved_locale); -} - bool GetUserLockAttributes(const user_manager::User* user, MultiUserSignInPolicy* policy) { Profile* const profile = ProfileHelper::Get()->GetProfileByUser(user); @@ -988,17 +981,6 @@ user_manager::kSupervisedUserDomain; } -void ChromeUserManagerImpl::ScheduleResolveLocale( - const std::string& locale, - base::OnceClosure on_resolved_callback, - std::string* out_resolved_locale) const { - base::ThreadPool::PostTaskAndReply( - FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT}, - base::BindOnce(ResolveLocale, locale, - base::Unretained(out_resolved_locale)), - std::move(on_resolved_callback)); -} - bool ChromeUserManagerImpl::IsValidDefaultUserImageId(int image_index) const { return default_user_image::IsValidIndex(image_index); }
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 0a27b60..519c231 100644 --- a/chrome/browser/ash/login/users/chrome_user_manager_impl.h +++ b/chrome/browser/ash/login/users/chrome_user_manager_impl.h
@@ -79,9 +79,6 @@ void AsyncRemoveCryptohome(const AccountId& account_id) const override; bool IsDeprecatedSupervisedAccountId( const AccountId& account_id) const override; - void ScheduleResolveLocale(const std::string& locale, - base::OnceClosure on_resolved_callback, - std::string* out_resolved_locale) const override; bool IsValidDefaultUserImageId(int image_index) const override; user_manager::MultiUserSignInPolicyController* GetMultiUserSignInPolicyController() override;
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 78962c0..da0fa6f 100644 --- a/chrome/browser/ash/login/users/fake_chrome_user_manager.cc +++ b/chrome/browser/ash/login/users/fake_chrome_user_manager.cc
@@ -283,14 +283,6 @@ user_manager::kSupervisedUserDomain; } -void FakeChromeUserManager::ScheduleResolveLocale( - const std::string& locale, - base::OnceClosure on_resolved_callback, - std::string* out_resolved_locale) const { - NOTIMPLEMENTED(); - return; -} - bool FakeChromeUserManager::IsValidDefaultUserImageId(int image_index) const { return default_user_image::IsValidIndex(image_index); }
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 ab80d97..59c179b 100644 --- a/chrome/browser/ash/login/users/fake_chrome_user_manager.h +++ b/chrome/browser/ash/login/users/fake_chrome_user_manager.h
@@ -123,9 +123,6 @@ void AsyncRemoveCryptohome(const AccountId& account_id) const override; bool IsDeprecatedSupervisedAccountId( const AccountId& account_id) const override; - void ScheduleResolveLocale(const std::string& locale, - base::OnceClosure on_resolved_callback, - std::string* out_resolved_locale) const override; bool IsValidDefaultUserImageId(int image_index) const override; user_manager::MultiUserSignInPolicyController* GetMultiUserSignInPolicyController() override;
diff --git a/chrome/browser/ash/multi_screen_capture/DEPS b/chrome/browser/ash/multi_screen_capture/DEPS new file mode 100644 index 0000000..28ac3258 --- /dev/null +++ b/chrome/browser/ash/multi_screen_capture/DEPS
@@ -0,0 +1,20 @@ +include_rules = [ + # ChromeOS should not depend on //chrome. See //docs/chromeos/code.md for + # details. + "-chrome", + + # This directory is in //chrome, which violates the rule above. Allow this + # directory to #include its own files. + "+chrome/browser/ash/multi_screen_capture", + + # Existing dependencies within //chrome. There is an active effort to + # refactor //chrome/browser/ash to break these dependencies; see b/332804822. + # Whenever possible, avoid adding new //chrome dependencies to this list. + # + # Files residing in certain directories (e.g., //chrome/browser) are listed + # individually. Other dependencies within //chrome are listed on a per- + # directory basis. See //tools/chromeos/gen_deps.sh for details. + "+chrome/browser/ash/policy/multi_screen_capture", + "+chrome/browser/media/webrtc", + "+chrome/browser/profiles", +]
diff --git a/chrome/browser/ash/net/secure_dns_manager.cc b/chrome/browser/ash/net/secure_dns_manager.cc index f6e9fff..21b92e9 100644 --- a/chrome/browser/ash/net/secure_dns_manager.cc +++ b/chrome/browser/ash/net/secure_dns_manager.cc
@@ -32,13 +32,6 @@ #include "third_party/cros_system_api/dbus/shill/dbus-constants.h" namespace ash { -namespace { - -// A wildcard character to allow secure DNS automatic mode on any IP addresses. -// TODO(b/333757554): Update to Shill D-Bus constant after M-125 branch cut. -constexpr std::string_view kSecureDNSMatchAnyIPAddress = "*"; - -} // namespace SecureDnsManager::SecureDnsManager(PrefService* pref_service) : pref_service_(pref_service) { @@ -112,8 +105,10 @@ // wildcard character denoting that it matches any IP addresses. In automatic // upgrade mode, the corresponding name servers will be populated using the // applicable providers. - const auto addr = - mode == SecureDnsConfig::kModeSecure ? "" : kSecureDNSMatchAnyIPAddress; + const std::string_view addr = + mode == SecureDnsConfig::kModeSecure + ? "" + : shill::kDNSProxyDOHProvidersMatchAnyIPAddress; for (const auto& doh_template : base::SplitString( templates, " ", base::TRIM_WHITESPACE, base::SPLIT_WANT_NONEMPTY)) { doh_providers.Set(doh_template, addr);
diff --git a/chrome/browser/ash/os_feedback/chrome_os_feedback_delegate.cc b/chrome/browser/ash/os_feedback/chrome_os_feedback_delegate.cc index 455c7ca..b603cbe0 100644 --- a/chrome/browser/ash/os_feedback/chrome_os_feedback_delegate.cc +++ b/chrome/browser/ash/os_feedback/chrome_os_feedback_delegate.cc
@@ -297,8 +297,9 @@ } scoped_refptr<base::RefCountedMemory> png_data = GetScreenshotData(); - if (report->include_screenshot && png_data) { - feedback_data->set_image(std::string(base::as_string_view(*png_data))); + if (report->include_screenshot && png_data && png_data.get()) { + feedback_data->set_image( + std::string(png_data->front_as<char>(), png_data->size())); } // Append consent value to report. For cross platform implementations see:
diff --git a/chrome/browser/ash/policy/enrollment/auto_enrollment_type_checker.cc b/chrome/browser/ash/policy/enrollment/auto_enrollment_type_checker.cc index 8c611e8..92d64ca8 100644 --- a/chrome/browser/ash/policy/enrollment/auto_enrollment_type_checker.cc +++ b/chrome/browser/ash/policy/enrollment/auto_enrollment_type_checker.cc
@@ -144,8 +144,7 @@ // switch for a particular version, we can increment it after fixing the logic. // The devices running new code will not be affected by kill switch and we can // test our fixes. -// TODO(b/265923216): Change to 1 to launch unified state determination. -const int kCodeVersion = 0; +const int kCodeVersion = 1; // When set to true, unified state determination is disabled. std::optional<bool> g_unified_state_determination_kill_switch;
diff --git a/chrome/browser/ash/policy/enrollment/auto_enrollment_type_checker_unittest.cc b/chrome/browser/ash/policy/enrollment/auto_enrollment_type_checker_unittest.cc index 69ac9ba..2b09e219 100644 --- a/chrome/browser/ash/policy/enrollment/auto_enrollment_type_checker_unittest.cc +++ b/chrome/browser/ash/policy/enrollment/auto_enrollment_type_checker_unittest.cc
@@ -663,8 +663,7 @@ base::test::TestFuture<void> future; test_url_loader_factory_.AddResponse( "https://www.gstatic.com/chromeos-usd-experiment/v1.json", - // TODO(b/265923216): Change to 0 when kCodeVersion is 1. - R"({"disable_up_to_version": -1})", net::HTTP_OK); + R"({"disable_up_to_version": 0})", net::HTTP_OK); AutoEnrollmentTypeChecker::Initialize(test_shared_loader_factory_, future.GetCallback()); @@ -707,7 +706,9 @@ } bool IsOfficialGoogleOS() { - return device_os_ != DeviceOs::Nonchrome && google_branded_; + return google_branded_ && (device_os_ == DeviceOs::Chrome || + device_os_ == DeviceOs::FlexWithoutFRE || + device_os_ == DeviceOs::FlexWithFRE); } const DeviceOs device_os_ = std::get<0>(GetParam());
diff --git a/chrome/browser/ash/policy/remote_commands/device_command_screenshot_job_unittest.cc b/chrome/browser/ash/policy/remote_commands/device_command_screenshot_job_unittest.cc index fa138ba5..ee7d6e23 100644 --- a/chrome/browser/ash/policy/remote_commands/device_command_screenshot_job_unittest.cc +++ b/chrome/browser/ash/policy/remote_commands/device_command_screenshot_job_unittest.cc
@@ -124,7 +124,7 @@ reinterpret_cast<const unsigned char*>(bmp.getPixels()), color_format, gfx::Size(bmp.width(), bmp.height()), static_cast<int>(bmp.rowBytes()), false, - std::vector<gfx::PNGCodec::Comment>(), &png_bytes->as_vector())) { + std::vector<gfx::PNGCodec::Comment>(), &png_bytes->data())) { LOG(ERROR) << "Failed to encode image"; } return png_bytes;
diff --git a/chrome/browser/ash/policy/reporting/app_install_event_log_manager_wrapper.cc b/chrome/browser/ash/policy/reporting/app_install_event_log_manager_wrapper.cc index a631e76..860fa2c6 100644 --- a/chrome/browser/ash/policy/reporting/app_install_event_log_manager_wrapper.cc +++ b/chrome/browser/ash/policy/reporting/app_install_event_log_manager_wrapper.cc
@@ -90,7 +90,7 @@ {.event_type = ::reporting::EventType::kUser, .destination = ::reporting::Destination::ARC_INSTALL}) .SetSourceInfo(std::move(source_info))); - encrypted_reporter_ = std::make_unique<ArcAppInstallEventEncryptedReporter>( + encrypted_reporter_ = std::make_unique<ArcAppInstallEncryptedEventReporter>( std::move(report_queue), profile_); }
diff --git a/chrome/browser/ash/policy/reporting/app_install_event_log_manager_wrapper.h b/chrome/browser/ash/policy/reporting/app_install_event_log_manager_wrapper.h index fc4e15c6..3a69aad 100644 --- a/chrome/browser/ash/policy/reporting/app_install_event_log_manager_wrapper.h +++ b/chrome/browser/ash/policy/reporting/app_install_event_log_manager_wrapper.h
@@ -9,7 +9,7 @@ #include "base/callback_list.h" #include "base/memory/raw_ptr.h" -#include "chrome/browser/ash/policy/reporting/arc_app_install_event_encrypted_reporter.h" +#include "chrome/browser/ash/policy/reporting/arc_app_install_encrypted_event_reporter.h" #include "chrome/browser/ash/policy/reporting/arc_app_install_event_log_manager.h" #include "chrome/browser/ash/policy/reporting/arc_app_install_event_logger.h" #include "chrome/browser/policy/messaging_layer/proto/synced/app_install_events.pb.h" @@ -92,7 +92,7 @@ // Handles collection, storage and upload of app push-install event logs. std::unique_ptr<ArcAppInstallEventLogManager> log_manager_; - std::unique_ptr<ArcAppInstallEventEncryptedReporter> encrypted_reporter_; + std::unique_ptr<ArcAppInstallEncryptedEventReporter> encrypted_reporter_; // Pref change observer. PrefChangeRegistrar pref_change_registrar_;
diff --git a/chrome/browser/ash/policy/reporting/arc_app_install_event_encrypted_reporter.cc b/chrome/browser/ash/policy/reporting/arc_app_install_encrypted_event_reporter.cc similarity index 89% rename from chrome/browser/ash/policy/reporting/arc_app_install_event_encrypted_reporter.cc rename to chrome/browser/ash/policy/reporting/arc_app_install_encrypted_event_reporter.cc index 7d024a9c..d795de6 100644 --- a/chrome/browser/ash/policy/reporting/arc_app_install_event_encrypted_reporter.cc +++ b/chrome/browser/ash/policy/reporting/arc_app_install_encrypted_event_reporter.cc
@@ -2,7 +2,7 @@ // Copyright 2024 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/ash/policy/reporting/arc_app_install_event_encrypted_reporter.h" +#include "chrome/browser/ash/policy/reporting/arc_app_install_encrypted_event_reporter.h" #include "ash/constants/ash_switches.h" #include "base/command_line.h" @@ -19,7 +19,7 @@ namespace policy { -ArcAppInstallEventEncryptedReporter::ArcAppInstallEventEncryptedReporter( +ArcAppInstallEncryptedEventReporter::ArcAppInstallEncryptedEventReporter( std::unique_ptr<reporting::ReportQueue, base::OnTaskRunnerDeleter> report_queue, Profile* profile) @@ -28,12 +28,12 @@ CHECK(report_queue_); } -ArcAppInstallEventEncryptedReporter::~ArcAppInstallEventEncryptedReporter() { +ArcAppInstallEncryptedEventReporter::~ArcAppInstallEncryptedEventReporter() { logger_.reset(); } // ArcAppInstallEventLogger::Delegate: -void ArcAppInstallEventEncryptedReporter::Add( +void ArcAppInstallEncryptedEventReporter::Add( const std::set<std::string>& packages, const em::AppInstallReportLogEvent& event) { // Only report pending installations, successful installations, or failures. @@ -73,7 +73,7 @@ } } -void ArcAppInstallEventEncryptedReporter::GetAndroidId( +void ArcAppInstallEncryptedEventReporter::GetAndroidId( ArcAppInstallEventLogger::Delegate::AndroidIdCallback callback) const { arc::GetAndroidId(std::move(callback)); }
diff --git a/chrome/browser/ash/policy/reporting/arc_app_install_event_encrypted_reporter.h b/chrome/browser/ash/policy/reporting/arc_app_install_encrypted_event_reporter.h similarity index 71% rename from chrome/browser/ash/policy/reporting/arc_app_install_event_encrypted_reporter.h rename to chrome/browser/ash/policy/reporting/arc_app_install_encrypted_event_reporter.h index 120290f..87a20a53 100644 --- a/chrome/browser/ash/policy/reporting/arc_app_install_event_encrypted_reporter.h +++ b/chrome/browser/ash/policy/reporting/arc_app_install_encrypted_event_reporter.h
@@ -1,8 +1,8 @@ // Copyright 2024 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CHROME_BROWSER_ASH_POLICY_REPORTING_ARC_APP_INSTALL_EVENT_ENCRYPTED_REPORTER_H_ -#define CHROME_BROWSER_ASH_POLICY_REPORTING_ARC_APP_INSTALL_EVENT_ENCRYPTED_REPORTER_H_ +#ifndef CHROME_BROWSER_ASH_POLICY_REPORTING_ARC_APP_INSTALL_ENCRYPTED_EVENT_REPORTER_H_ +#define CHROME_BROWSER_ASH_POLICY_REPORTING_ARC_APP_INSTALL_ENCRYPTED_EVENT_REPORTER_H_ #include "chrome/browser/ash/policy/reporting/arc_app_install_event_logger.h" #include "components/reporting/client/report_queue.h" @@ -16,21 +16,21 @@ // - AppInstallReportLogEvent::INSTALLATION_STARTED // - AppInstallReportLogEvent::INSTALLATION_FAILED // - AppInstallReportLogEvent::SERVER_REQUEST -class ArcAppInstallEventEncryptedReporter +class ArcAppInstallEncryptedEventReporter : public ArcAppInstallEventLogger::Delegate { public: - explicit ArcAppInstallEventEncryptedReporter( + explicit ArcAppInstallEncryptedEventReporter( std::unique_ptr<reporting::ReportQueue, base::OnTaskRunnerDeleter> report_queue, Profile* profile); - ArcAppInstallEventEncryptedReporter( - const ArcAppInstallEventEncryptedReporter&) = delete; + ArcAppInstallEncryptedEventReporter( + const ArcAppInstallEncryptedEventReporter&) = delete; - ArcAppInstallEventEncryptedReporter operator=( - const ArcAppInstallEventEncryptedReporter&) = delete; + ArcAppInstallEncryptedEventReporter operator=( + const ArcAppInstallEncryptedEventReporter&) = delete; - ~ArcAppInstallEventEncryptedReporter() override; + ~ArcAppInstallEncryptedEventReporter() override; // ArcAppInstallEventLogger::Delegate void Add( @@ -49,4 +49,4 @@ } // namespace policy -#endif // CHROME_BROWSER_ASH_POLICY_REPORTING_ARC_APP_INSTALL_EVENT_ENCRYPTED_REPORTER_H_ +#endif // CHROME_BROWSER_ASH_POLICY_REPORTING_ARC_APP_INSTALL_ENCRYPTED_EVENT_REPORTER_H_
diff --git a/chrome/browser/ash/policy/reporting/arc_app_install_event_encrypted_reporter_unittest.cc b/chrome/browser/ash/policy/reporting/arc_app_install_encrypted_event_reporter_unittest.cc similarity index 96% rename from chrome/browser/ash/policy/reporting/arc_app_install_event_encrypted_reporter_unittest.cc rename to chrome/browser/ash/policy/reporting/arc_app_install_encrypted_event_reporter_unittest.cc index 4b7111e..b73bf1e 100644 --- a/chrome/browser/ash/policy/reporting/arc_app_install_event_encrypted_reporter_unittest.cc +++ b/chrome/browser/ash/policy/reporting/arc_app_install_encrypted_event_reporter_unittest.cc
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/ash/policy/reporting/arc_app_install_event_encrypted_reporter.h" +#include "chrome/browser/ash/policy/reporting/arc_app_install_encrypted_event_reporter.h" #include <memory> @@ -101,7 +101,7 @@ EXPECT_CALL(*report_queue.get(), AddRecord).Times(3); auto reporter = - ArcAppInstallEventEncryptedReporter(std::move(report_queue), &profile_); + ArcAppInstallEncryptedEventReporter(std::move(report_queue), &profile_); reporter.Add(packages, std::move(event_success)); reporter.Add(packages, std::move(event_started));
diff --git a/chrome/browser/ash/system_web_apps/apps/personalization_app/personalization_app_user_provider_impl_unittest.cc b/chrome/browser/ash/system_web_apps/apps/personalization_app/personalization_app_user_provider_impl_unittest.cc index ea14c41..fd52eaa 100644 --- a/chrome/browser/ash/system_web_apps/apps/personalization_app/personalization_app_user_provider_impl_unittest.cc +++ b/chrome/browser/ash/system_web_apps/apps/personalization_app/personalization_app_user_provider_impl_unittest.cc
@@ -428,7 +428,7 @@ // The BigBuffer data received from the observer should be equal to the test // image encoded to png. ASSERT_GT(expected_data.size(), 0u); - EXPECT_EQ(expected_data, base::span(*encoded_png)); + EXPECT_EQ(expected_data, encoded_png->data()); } TEST_F(PersonalizationAppUserProviderImplTest,
diff --git a/chrome/browser/ash/system_web_apps/test_support/test_system_web_app_url_data_source.cc b/chrome/browser/ash/system_web_apps/test_support/test_system_web_app_url_data_source.cc index 9e8bb79a..17c7e26f 100644 --- a/chrome/browser/ash/system_web_apps/test_support/test_system_web_app_url_data_source.cc +++ b/chrome/browser/ash/system_web_apps/test_support/test_system_web_app_url_data_source.cc
@@ -80,13 +80,13 @@ scoped_refptr<base::RefCountedString> ref_contents( new base::RefCountedString); if (id == "manifest.json") - ref_contents->as_string() = kManifestText; + ref_contents->data() = kManifestText; else if (id == "pwa.html") - ref_contents->as_string() = kPwaHtml; + ref_contents->data() = kPwaHtml; else if (id == "sw.js") - ref_contents->as_string() = kSwJs; + ref_contents->data() = kSwJs; else if (id == "page2.html") - ref_contents->as_string() = kPage2Html; + ref_contents->data() = kPage2Html; else NOTREACHED();
diff --git a/chrome/browser/ash/wallpaper/wallpaper_drivefs_delegate_impl_browsertest.cc b/chrome/browser/ash/wallpaper/wallpaper_drivefs_delegate_impl_browsertest.cc index 33c88c0..516d241 100644 --- a/chrome/browser/ash/wallpaper/wallpaper_drivefs_delegate_impl_browsertest.cc +++ b/chrome/browser/ash/wallpaper/wallpaper_drivefs_delegate_impl_browsertest.cc
@@ -47,7 +47,7 @@ scoped_refptr<base::RefCountedBytes> EncodeImage(const gfx::ImageSkia& image) { auto output = base::MakeRefCounted<base::RefCountedBytes>(); SkBitmap bitmap = *(image.bitmap()); - gfx::JPEGCodec::Encode(bitmap, /*quality=*/90, &(output)->as_vector()); + gfx::JPEGCodec::Encode(bitmap, /*quality=*/90, &(output)->data()); return output; }
diff --git a/chrome/browser/chrome_browser_interface_binders.cc b/chrome/browser/chrome_browser_interface_binders.cc index f5a1dd7..0eb8c2b 100644 --- a/chrome/browser/chrome_browser_interface_binders.cc +++ b/chrome/browser/chrome_browser_interface_binders.cc
@@ -16,6 +16,7 @@ #include "chrome/browser/ash/drive/file_system_util.h" #include "chrome/browser/browser_process.h" #include "chrome/browser/buildflags.h" +#include "chrome/browser/bundz_translation/translation_manager_impl.h" #include "chrome/browser/cart/commerce_hint_service.h" #include "chrome/browser/companion/core/features.h" #include "chrome/browser/dom_distiller/dom_distiller_service_factory.h" @@ -103,9 +104,11 @@ #include "services/image_annotation/public/mojom/image_annotation.mojom.h" #include "services/screen_ai/buildflags/buildflags.h" #include "third_party/blink/public/common/features.h" +#include "third_party/blink/public/common/features_generated.h" #include "third_party/blink/public/mojom/credentialmanagement/credential_manager.mojom.h" #include "third_party/blink/public/mojom/lcp_critical_path_predictor/lcp_critical_path_predictor.mojom.h" #include "third_party/blink/public/mojom/loader/navigation_predictor.mojom.h" +#include "third_party/blink/public/mojom/on_device_translation/translation_manager.mojom.h" #include "third_party/blink/public/mojom/payments/payment_credential.mojom.h" #include "third_party/blink/public/mojom/payments/payment_request.mojom.h" #include "third_party/blink/public/mojom/prerender/prerender.mojom.h" @@ -1084,6 +1087,11 @@ map->Add<blink::mojom::WebPrintingService>( base::BindRepeating(&printing::CreateWebPrintingServiceForFrame)); #endif + + if (base::FeatureList::IsEnabled(blink::features::kEnableTranslationAPI)) { + map->Add<blink::mojom::TranslationManager>( + base::BindRepeating(&TranslationManagerImpl::Create)); + } } void PopulateChromeWebUIFrameBinders(
diff --git a/chrome/browser/chromeos/mahi/mahi_content_extraction_delegate.cc b/chrome/browser/chromeos/mahi/mahi_content_extraction_delegate.cc index 8e5eaa1c..68f2f5e 100644 --- a/chrome/browser/chromeos/mahi/mahi_content_extraction_delegate.cc +++ b/chrome/browser/chromeos/mahi/mahi_content_extraction_delegate.cc
@@ -15,7 +15,9 @@ #include "base/task/thread_pool.h" #include "base/time/time.h" #include "chrome/browser/chromeos/mahi/mahi_browser_util.h" +#include "chrome/browser/profiles/profile_manager.h" #include "chrome/browser/screen_ai/screen_ai_service_router.h" +#include "chrome/browser/screen_ai/screen_ai_service_router_factory.h" #include "chromeos/components/mahi/public/mojom/content_extraction.mojom.h" #include "chromeos/constants/chromeos_features.h" #include "chromeos/crosapi/mojom/mahi.mojom.h" @@ -32,7 +34,6 @@ #include "base/strings/string_util.h" #include "base/strings/utf_string_conversions.h" #include "chrome/browser/download/download_prefs.h" -#include "chrome/browser/profiles/profile_manager.h" #endif namespace mahi { @@ -75,11 +76,13 @@ EnsureServiceIsConnected(); // Builds connection with screen ai service. - screen_ai_service_router_.GetServiceStateAsync( - screen_ai::ScreenAIServiceRouter::Service::kMainContentExtraction, - base::BindOnce( - &MahiContentExtractionDelegate::OnScreenAIServiceInitialized, - weak_pointer_factory_.GetWeakPtr())); + screen_ai::ScreenAIServiceRouterFactory::GetForBrowserContext( + ProfileManager::GetActiveUserProfile()) + ->GetServiceStateAsync( + screen_ai::ScreenAIServiceRouter::Service::kMainContentExtraction, + base::BindOnce( + &MahiContentExtractionDelegate::OnScreenAIServiceInitialized, + weak_pointer_factory_.GetWeakPtr())); } MahiContentExtractionDelegate::~MahiContentExtractionDelegate() = default; @@ -222,8 +225,9 @@ screen_ai_receiver; auto screen_ai_remote = screen_ai_receiver.InitWithNewPipeAndPassRemote(); - screen_ai_service_router_.BindMainContentExtractor( - std::move(screen_ai_receiver)); + screen_ai::ScreenAIServiceRouterFactory::GetForBrowserContext( + ProfileManager::GetActiveUserProfile()) + ->BindMainContentExtractor(std::move(screen_ai_receiver)); remote_content_extraction_service_factory_->OnScreen2xReady( std::move(screen_ai_remote)); }
diff --git a/chrome/browser/chromeos/mahi/mahi_content_extraction_delegate.h b/chrome/browser/chromeos/mahi/mahi_content_extraction_delegate.h index e0352c2..afcfa00 100644 --- a/chrome/browser/chromeos/mahi/mahi_content_extraction_delegate.h +++ b/chrome/browser/chromeos/mahi/mahi_content_extraction_delegate.h
@@ -10,7 +10,6 @@ #include "base/memory/weak_ptr.h" #include "base/task/sequenced_task_runner.h" #include "base/unguessable_token.h" -#include "chrome/browser/screen_ai/screen_ai_service_router.h" #include "chromeos/components/mahi/public/mojom/content_extraction.mojom.h" #include "chromeos/crosapi/mojom/mahi.mojom-forward.h" #include "mojo/public/cpp/bindings/remote.h" @@ -74,10 +73,6 @@ mojo::Remote<mojom::ContentExtractionService> remote_content_extraction_service_; - // Router for the screen ai models. We need it to get the content extraction - // model. - screen_ai::ScreenAIServiceRouter screen_ai_service_router_; - // This is the callback function to notifies the `MahiWebContentManager` with // the distillability check result. base::RepeatingCallback<void(const base::UnguessableToken&, bool)>
diff --git a/chrome/browser/devtools/device/usb/android_usb_device.cc b/chrome/browser/devtools/device/usb/android_usb_device.cc index b570d4d..cce1739 100644 --- a/chrome/browser/devtools/device/usb/android_usb_device.cc +++ b/chrome/browser/devtools/device/usb/android_usb_device.cc
@@ -286,13 +286,9 @@ // Queue body. if (!message->body.empty()) { auto body_buffer = base::MakeRefCounted<base::RefCountedBytes>(body_length); - { - auto& v = body_buffer->as_vector(); - memcpy(v.data(), message->body.data(), message->body.length()); - if (append_zero) { - v[body_length - 1] = 0; - } - } + memcpy(body_buffer->front(), message->body.data(), message->body.length()); + if (append_zero) + body_buffer->data()[body_length - 1] = 0; outgoing_queue_.push(body_buffer); if (android_device_info_.zero_mask && (body_length & android_device_info_.zero_mask) == 0) { @@ -311,10 +307,10 @@ BulkMessage message = outgoing_queue_.front(); outgoing_queue_.pop(); - DumpMessage(true, message->data(), message->size()); + DumpMessage(true, message->front(), message->size()); device_->GenericTransferOut( - android_device_info_.outbound_address, message->as_vector(), kUsbTimeout, + android_device_info_.outbound_address, message->data(), kUsbTimeout, base::BindOnce(&AndroidUsbDevice::OutgoingMessageSent, weak_factory_.GetWeakPtr())); }
diff --git a/chrome/browser/enterprise/data_protection/print_utils.cc b/chrome/browser/enterprise/data_protection/print_utils.cc index 424275a..3f5246c 100644 --- a/chrome/browser/enterprise/data_protection/print_utils.cc +++ b/chrome/browser/enterprise/data_protection/print_utils.cc
@@ -130,7 +130,7 @@ std::move(on_verdict).Run(/*allowed=*/true); return; } - std::memcpy(region.mapping.memory(), print_data->data(), print_data->size()); + std::memcpy(region.mapping.memory(), print_data->front(), print_data->size()); scanning_data.page = std::move(region.region); auto on_scan_result = base::BindOnce(
diff --git a/chrome/browser/extensions/api/developer_private/extension_info_generator.cc b/chrome/browser/extensions/api/developer_private/extension_info_generator.cc index 634dc05..9667817 100644 --- a/chrome/browser/extensions/api/developer_private/extension_info_generator.cc +++ b/chrome/browser/extensions/api/developer_private/extension_info_generator.cc
@@ -916,7 +916,10 @@ std::string ExtensionInfoGenerator::GetIconUrlFromImage( const gfx::Image& image) { - std::string base_64 = base::Base64Encode(*image.As1xPNGBytes()); + scoped_refptr<base::RefCountedMemory> data; + data = image.As1xPNGBytes(); + std::string base_64 = base::Base64Encode( + std::string_view(data->front_as<char>(), data->size())); const char kDataUrlPrefix[] = "data:image/png;base64,"; return GURL(kDataUrlPrefix + base_64).spec(); }
diff --git a/chrome/browser/extensions/api/virtual_keyboard_private/chrome_virtual_keyboard_delegate.cc b/chrome/browser/extensions/api/virtual_keyboard_private/chrome_virtual_keyboard_delegate.cc index f221501..6929694 100644 --- a/chrome/browser/extensions/api/virtual_keyboard_private/chrome_virtual_keyboard_delegate.cc +++ b/chrome/browser/extensions/api/virtual_keyboard_private/chrome_virtual_keyboard_delegate.cc
@@ -526,9 +526,6 @@ base::FeatureList::IsEnabled( ash::features::kSystemJapanesePhysicalTyping))); features.Append(GenerateFeatureFlag( - "multilingualtyping", - base::FeatureList::IsEnabled(ash::features::kMultilingualTyping))); - features.Append(GenerateFeatureFlag( "autocorrectparamstuning", base::FeatureList::IsEnabled(ash::features::kAutocorrectParamsTuning))); features.Append(
diff --git a/chrome/browser/extensions/chrome_url_request_util.cc b/chrome/browser/extensions/chrome_url_request_util.cc index 754c77f..14e8c038 100644 --- a/chrome/browser/extensions/chrome_url_request_util.cc +++ b/chrome/browser/extensions/chrome_url_request_util.cc
@@ -49,7 +49,8 @@ base::CompareCase::INSENSITIVE_ASCII)) { // All of our HTML files should be UTF-8 and for other resource types // (like images), charset doesn't matter. - DCHECK(base::IsStringUTF8(base::as_string_view(*data))); + DCHECK(base::IsStringUTF8(base::StringPiece( + reinterpret_cast<const char*>(data->front()), data->size()))); *out_charset = "utf-8"; } } @@ -68,8 +69,9 @@ : nullptr; if (replacements) { - std::string temp_str = ui::ReplaceTemplateExpressions( - base::as_string_view(*bytes), *replacements); + base::StringPiece input(reinterpret_cast<const char*>(bytes->front()), + bytes->size()); + std::string temp_str = ui::ReplaceTemplateExpressions(input, *replacements); DCHECK(!temp_str.empty()); return base::MakeRefCounted<base::RefCountedString>(std::move(temp_str)); } else { @@ -181,7 +183,7 @@ std::nullopt); size_t write_size = data->size(); - MojoResult result = producer_handle->WriteData(data->data(), &write_size, + MojoResult result = producer_handle->WriteData(data->front(), &write_size, MOJO_WRITE_DATA_FLAG_NONE); OnFileWritten(result); }
diff --git a/chrome/browser/extensions/extension_web_ui.cc b/chrome/browser/extensions/extension_web_ui.cc index 41451fdc..8352344e 100644 --- a/chrome/browser/extensions/extension_web_ui.cc +++ b/chrome/browser/extensions/extension_web_ui.cc
@@ -275,7 +275,7 @@ for (const gfx::ImageSkiaRep& image_rep : image_reps) { auto bitmap_data = base::MakeRefCounted<base::RefCountedBytes>(); if (gfx::PNGCodec::EncodeBGRASkBitmap(image_rep.GetBitmap(), false, - &bitmap_data->as_vector())) { + &bitmap_data->data())) { favicon_base::FaviconRawBitmapResult bitmap_result; bitmap_result.bitmap_data = bitmap_data; bitmap_result.pixel_size = gfx::Size(image_rep.pixel_width(),
diff --git a/chrome/browser/facilitated_payments/ui/android/internal/BUILD.gn b/chrome/browser/facilitated_payments/ui/android/internal/BUILD.gn index ed5c977..963a8803 100644 --- a/chrome/browser/facilitated_payments/ui/android/internal/BUILD.gn +++ b/chrome/browser/facilitated_payments/ui/android/internal/BUILD.gn
@@ -24,11 +24,15 @@ srcjar_deps = [ ":jni" ] deps = [ + ":java_resources", "//chrome/android:chrome_app_java_resources", "//chrome/browser/facilitated_payments/ui/android:public_java", + "//chrome/browser/touch_to_fill/common/android:java", + "//chrome/browser/touch_to_fill/common/android:java_resources", "//components/browser_ui/bottomsheet/android:java", "//content/public/android:content_full_java", "//third_party/androidx:androidx_annotation_annotation_java", + "//third_party/androidx:androidx_appcompat_appcompat_resources_java", "//third_party/androidx:androidx_recyclerview_recyclerview_java", "//third_party/jni_zero:jni_zero_java", "//ui/android:ui_java", @@ -36,6 +40,13 @@ ] } +android_resources("java_resources") { + sources = [ + "java/res/layout/facilitated_payments_payment_methods_sheet_header_item.xml", + "java/res/values/dimens.xml", + ] +} + robolectric_library("junit") { testonly = true resources_package = "org.chromium.chrome.browser.facilitated_payments"
diff --git a/chrome/browser/facilitated_payments/ui/android/internal/java/res/layout/facilitated_payments_payment_methods_sheet_header_item.xml b/chrome/browser/facilitated_payments/ui/android/internal/java/res/layout/facilitated_payments_payment_methods_sheet_header_item.xml new file mode 100644 index 0000000..1270c783 --- /dev/null +++ b/chrome/browser/facilitated_payments/ui/android/internal/java/res/layout/facilitated_payments_payment_methods_sheet_header_item.xml
@@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +Copyright 2024 The Chromium Authors +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" + android:layout_height="wrap_content" + android:layout_width="match_parent" + android:layout_marginHorizontal="8dp" + android:layout_marginBottom="16dp" + android:orientation="vertical"> + + <ImageView + android:id="@+id/branding_icon" + android:layout_width="wrap_content" + android:layout_height="@dimen/facilitated_payments_product_icon_height" + android:layout_marginVertical="@dimen/facilitated_payments_product_icon_margin_vertical" + android:importantForAccessibility="no" + android:layout_gravity="center_horizontal"/> +</LinearLayout>
diff --git a/chrome/browser/facilitated_payments/ui/android/internal/java/res/values/dimens.xml b/chrome/browser/facilitated_payments/ui/android/internal/java/res/values/dimens.xml new file mode 100644 index 0000000..42a294d1 --- /dev/null +++ b/chrome/browser/facilitated_payments/ui/android/internal/java/res/values/dimens.xml
@@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +Copyright 2024 The Chromium Authors +Use of this source code is governed by a BSD-style license that can be +found in the LICENSE file. +--> + +<resources> + <dimen name="facilitated_payments_product_icon_height">32dp</dimen> + <dimen name="facilitated_payments_product_icon_margin_vertical">12dp</dimen> +</resources>
diff --git a/chrome/browser/facilitated_payments/ui/android/internal/java/src/org/chromium/chrome/browser/facilitated_payments/FacilitatedPaymentsPaymentMethodsCoordinator.java b/chrome/browser/facilitated_payments/ui/android/internal/java/src/org/chromium/chrome/browser/facilitated_payments/FacilitatedPaymentsPaymentMethodsCoordinator.java index 32123cb..dc866d45 100644 --- a/chrome/browser/facilitated_payments/ui/android/internal/java/src/org/chromium/chrome/browser/facilitated_payments/FacilitatedPaymentsPaymentMethodsCoordinator.java +++ b/chrome/browser/facilitated_payments/ui/android/internal/java/src/org/chromium/chrome/browser/facilitated_payments/FacilitatedPaymentsPaymentMethodsCoordinator.java
@@ -4,6 +4,7 @@ package org.chromium.chrome.browser.facilitated_payments; +import static org.chromium.chrome.browser.facilitated_payments.FacilitatedPaymentsPaymentMethodsProperties.ItemType.HEADER; import static org.chromium.chrome.browser.facilitated_payments.FacilitatedPaymentsPaymentMethodsProperties.SHEET_ITEMS; import static org.chromium.chrome.browser.facilitated_payments.FacilitatedPaymentsPaymentMethodsProperties.VISIBLE; @@ -15,6 +16,7 @@ import org.chromium.ui.modelutil.MVCListAdapter.ModelList; import org.chromium.ui.modelutil.PropertyModel; import org.chromium.ui.modelutil.PropertyModelChangeProcessor; +import org.chromium.ui.modelutil.SimpleRecyclerViewAdapter; /** * Implements the FacilitatedPaymentsPaymentMethodsComponent. It uses a bottom sheet to let the user @@ -57,6 +59,22 @@ ::bindFacilitatedPaymentsPaymentMethodsView); } + /** + * Register payment methods items to RecyclerViewAdapter. + * + * @param model The observed {@link PropertyModel}. Its data need to be reflected in the view. + * @param view The {@link FacilitatedPaymentsPaymentMethodsView} to update. + */ + public static void setUpPaymentMethodsItems( + PropertyModel model, FacilitatedPaymentsPaymentMethodsView view) { + SimpleRecyclerViewAdapter adapter = new SimpleRecyclerViewAdapter(model.get(SHEET_ITEMS)); + adapter.registerType( + HEADER, + FacilitatedPaymentsPaymentMethodsViewBinder::createHeaderItemView, + FacilitatedPaymentsPaymentMethodsViewBinder::bindHeaderView); + view.getSheetItemListView().setAdapter(adapter); + } + PropertyModel createModel() { return new PropertyModel.Builder(FacilitatedPaymentsPaymentMethodsProperties.ALL_KEYS) .with(VISIBLE, false)
diff --git a/chrome/browser/facilitated_payments/ui/android/internal/java/src/org/chromium/chrome/browser/facilitated_payments/FacilitatedPaymentsPaymentMethodsMediator.java b/chrome/browser/facilitated_payments/ui/android/internal/java/src/org/chromium/chrome/browser/facilitated_payments/FacilitatedPaymentsPaymentMethodsMediator.java index 3eda646..e8aece1 100644 --- a/chrome/browser/facilitated_payments/ui/android/internal/java/src/org/chromium/chrome/browser/facilitated_payments/FacilitatedPaymentsPaymentMethodsMediator.java +++ b/chrome/browser/facilitated_payments/ui/android/internal/java/src/org/chromium/chrome/browser/facilitated_payments/FacilitatedPaymentsPaymentMethodsMediator.java
@@ -4,8 +4,13 @@ package org.chromium.chrome.browser.facilitated_payments; +import static org.chromium.chrome.browser.facilitated_payments.FacilitatedPaymentsPaymentMethodsProperties.HeaderProperties.IMAGE_DRAWABLE_ID; +import static org.chromium.chrome.browser.facilitated_payments.FacilitatedPaymentsPaymentMethodsProperties.SHEET_ITEMS; import static org.chromium.chrome.browser.facilitated_payments.FacilitatedPaymentsPaymentMethodsProperties.VISIBLE; +import org.chromium.chrome.browser.facilitated_payments.FacilitatedPaymentsPaymentMethodsProperties.HeaderProperties; +import org.chromium.ui.modelutil.MVCListAdapter.ListItem; +import org.chromium.ui.modelutil.MVCListAdapter.ModelList; import org.chromium.ui.modelutil.PropertyModel; /** @@ -20,6 +25,18 @@ } void showSheet() { + ModelList sheetItems = mModel.get(SHEET_ITEMS); + sheetItems.clear(); + + sheetItems.add(0, buildHeader()); mModel.set(VISIBLE, true); } + + private ListItem buildHeader() { + return new ListItem( + FacilitatedPaymentsPaymentMethodsProperties.ItemType.HEADER, + new PropertyModel.Builder(HeaderProperties.ALL_KEYS) + .with(IMAGE_DRAWABLE_ID, R.drawable.google_pay) + .build()); + } }
diff --git a/chrome/browser/facilitated_payments/ui/android/internal/java/src/org/chromium/chrome/browser/facilitated_payments/FacilitatedPaymentsPaymentMethodsView.java b/chrome/browser/facilitated_payments/ui/android/internal/java/src/org/chromium/chrome/browser/facilitated_payments/FacilitatedPaymentsPaymentMethodsView.java index 72db420..475ee3a 100644 --- a/chrome/browser/facilitated_payments/ui/android/internal/java/src/org/chromium/chrome/browser/facilitated_payments/FacilitatedPaymentsPaymentMethodsView.java +++ b/chrome/browser/facilitated_payments/ui/android/internal/java/src/org/chromium/chrome/browser/facilitated_payments/FacilitatedPaymentsPaymentMethodsView.java
@@ -5,74 +5,42 @@ package org.chromium.chrome.browser.facilitated_payments; import android.content.Context; +import android.view.LayoutInflater; import android.view.View; +import android.widget.RelativeLayout; -import androidx.annotation.Nullable; -import androidx.recyclerview.widget.RecyclerView; +import androidx.annotation.Px; -import org.chromium.components.browser_ui.bottomsheet.BottomSheetContent; +import org.chromium.chrome.browser.touch_to_fill.common.TouchToFillViewBase; import org.chromium.components.browser_ui.bottomsheet.BottomSheetController; +import java.util.Set; + /** - * This class is responsible for rendering the bottom sheet which displays the FacilitatedPayments + * This class is responsible for rendering the bottom sheet which displays the facilitated payments * instruments. It is a View in this Model-View-Controller component and doesn't inherit but holds * Android Views. */ -class FacilitatedPaymentsPaymentMethodsView implements BottomSheetContent { - private final BottomSheetController mBottomSheetController; - private final View mView; - - private RecyclerView mSheetItemListView; - +class FacilitatedPaymentsPaymentMethodsView extends TouchToFillViewBase { + /** + * Constructs a FacilitatedPaymentsPaymentMethodsView which creates, modifies, and shows the + * bottom sheet. + * + * @param context A {@link Context} used to load resources and inflate the sheet. + * @param bottomSheetController The {@link BottomSheetController} used to show/hide the sheet. + */ FacilitatedPaymentsPaymentMethodsView( Context context, BottomSheetController bottomSheetController) { - mBottomSheetController = bottomSheetController; - mView = new View(context); - mSheetItemListView = new RecyclerView(context); - } - - public boolean setVisible(boolean isVisible) { - if (isVisible) { - if (!mBottomSheetController.requestShowContent(this, true)) { - return false; - } - } else { - mBottomSheetController.hideContent(this, true); - } - return true; - } - - @Override - public View getContentView() { - return mView; - } - - public void setSheetItemListAdapter(RecyclerView.Adapter adapter) { - mSheetItemListView.setAdapter(adapter); - } - - @Nullable - @Override - public View getToolbarView() { - return null; + super( + bottomSheetController, + (RelativeLayout) + LayoutInflater.from(context).inflate(R.layout.touch_to_fill_sheet, null), + true); } @Override public int getVerticalScrollOffset() { - return 0; - } - - @Override - public void destroy() {} - - @Override - public int getPriority() { - return ContentPriority.HIGH; - } - - @Override - public boolean swipeToDismissEnabled() { - return false; + return getSheetItemListView().computeVerticalScrollOffset(); } @Override @@ -96,6 +64,31 @@ } @Override + protected View getHandlebar() { + return getContentView().findViewById(R.id.drag_handlebar); + } + + @Override + protected int getConclusiveMarginHeightPx() { + return getContentView().getResources().getDimensionPixelSize(R.dimen.ttf_sheet_padding); + } + + @Override + protected @Px int getSideMarginPx() { + return getContentView().getResources().getDimensionPixelSize(R.dimen.ttf_sheet_padding); + } + + @Override + protected Set<Integer> listedItemTypes() { + return Set.of(FacilitatedPaymentsPaymentMethodsProperties.ItemType.PAYMENT_INSTRUMENT); + } + + @Override + protected int footerItemType() { + return FacilitatedPaymentsPaymentMethodsProperties.ItemType.FOOTER; + } + + @Override public boolean hasCustomLifecycle() { return true; }
diff --git a/chrome/browser/facilitated_payments/ui/android/internal/java/src/org/chromium/chrome/browser/facilitated_payments/FacilitatedPaymentsPaymentMethodsViewBinder.java b/chrome/browser/facilitated_payments/ui/android/internal/java/src/org/chromium/chrome/browser/facilitated_payments/FacilitatedPaymentsPaymentMethodsViewBinder.java index 0057287..973c035 100644 --- a/chrome/browser/facilitated_payments/ui/android/internal/java/src/org/chromium/chrome/browser/facilitated_payments/FacilitatedPaymentsPaymentMethodsViewBinder.java +++ b/chrome/browser/facilitated_payments/ui/android/internal/java/src/org/chromium/chrome/browser/facilitated_payments/FacilitatedPaymentsPaymentMethodsViewBinder.java
@@ -4,12 +4,19 @@ package org.chromium.chrome.browser.facilitated_payments; +import static org.chromium.chrome.browser.facilitated_payments.FacilitatedPaymentsPaymentMethodsProperties.HeaderProperties.IMAGE_DRAWABLE_ID; import static org.chromium.chrome.browser.facilitated_payments.FacilitatedPaymentsPaymentMethodsProperties.SHEET_ITEMS; import static org.chromium.chrome.browser.facilitated_payments.FacilitatedPaymentsPaymentMethodsProperties.VISIBLE; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; + +import androidx.appcompat.content.res.AppCompatResources; + import org.chromium.ui.modelutil.PropertyKey; import org.chromium.ui.modelutil.PropertyModel; -import org.chromium.ui.modelutil.SimpleRecyclerViewAdapter; /** * Provides functions that map {@link FacilitatedPaymentsPaymentMethodsProperties} changes in a @@ -30,9 +37,41 @@ if (propertyKey == VISIBLE) { view.setVisible(model.get(VISIBLE)); } else if (propertyKey == SHEET_ITEMS) { - SimpleRecyclerViewAdapter adapter = - new SimpleRecyclerViewAdapter(model.get(SHEET_ITEMS)); - view.setSheetItemListAdapter(adapter); + FacilitatedPaymentsPaymentMethodsCoordinator.setUpPaymentMethodsItems(model, view); + } else { + assert false : "Unhandled update to property:" + propertyKey; + } + } + + private FacilitatedPaymentsPaymentMethodsViewBinder() {} + + /** + * Factory used to create a new header inside the ListView inside the + * FacilitatedPaymentsPaymentMethodsView. + * + * @param parent The parent {@link ViewGroup} of the new item. + */ + static View createHeaderItemView(ViewGroup parent) { + return LayoutInflater.from(parent.getContext()) + .inflate( + R.layout.facilitated_payments_payment_methods_sheet_header_item, + parent, + false); + } + + /** + * Called whenever a property in the given model changes. It updates the given view accordingly. + * + * @param model The observed {@link PropertyModel}. Its data need to be reflected in the view. + * @param view The {@link View} of the header to update. + * @param key The {@link PropertyKey} which changed. + */ + static void bindHeaderView(PropertyModel model, View view, PropertyKey propertyKey) { + if (propertyKey == IMAGE_DRAWABLE_ID) { + ImageView sheetHeaderImage = view.findViewById(R.id.branding_icon); + sheetHeaderImage.setImageDrawable( + AppCompatResources.getDrawable( + view.getContext(), model.get(IMAGE_DRAWABLE_ID))); } else { assert false : "Unhandled update to property:" + propertyKey; }
diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.json index 481449ba..d3c651c 100644 --- a/chrome/browser/flag-metadata.json +++ b/chrome/browser/flag-metadata.json
@@ -2641,11 +2641,6 @@ "expiry_milestone": 120 }, { - "name": "enable-cros-multilingual-typing", - "owners": [ "tranbaoduy@chromium.org", "essential-inputs-team@google.com" ], - "expiry_milestone": 116 - }, - { "name": "enable-cros-on-device-grammar-check", "owners": [ "jiwan@chromium.org", "essential-inputs-team@google.com" ], "expiry_milestone": 116
diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc index f85b326..bf86fd3f 100644 --- a/chrome/browser/flag_descriptions.cc +++ b/chrome/browser/flag_descriptions.cc
@@ -6932,10 +6932,6 @@ const char kMultiZoneRgbKeyboardDescription[] = "Enable multi-zone RGB keyboard customization on supported devices."; -const char kMultilingualTypingName[] = "Multilingual typing on CrOS"; -const char kMultilingualTypingDescription[] = - "Enables support for multilingual assistive typing on ChromeOS."; - const char kNearbySharingSelfShareName[] = "Nearby Sharing Self Share"; const char kNearbySharingSelfShareDescription[] = "Enables Self Share auto-accept and UI features to allow seamless sharing "
diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h index 8df54ba7..5a8eb4e 100644 --- a/chrome/browser/flag_descriptions.h +++ b/chrome/browser/flag_descriptions.h
@@ -4028,9 +4028,6 @@ extern const char kMultiZoneRgbKeyboardName[]; extern const char kMultiZoneRgbKeyboardDescription[]; -extern const char kMultilingualTypingName[]; -extern const char kMultilingualTypingDescription[]; - extern const char kNearbySharingSelfShareName[]; extern const char kNearbySharingSelfShareDescription[];
diff --git a/chrome/browser/lens/lens_overlay/lens_overlay_image_helper.cc b/chrome/browser/lens/lens_overlay/lens_overlay_image_helper.cc index 65a2940..f126d8a 100644 --- a/chrome/browser/lens/lens_overlay/lens_overlay_image_helper.cc +++ b/chrome/browser/lens/lens_overlay/lens_overlay_image_helper.cc
@@ -94,8 +94,7 @@ int compression_quality, scoped_refptr<base::RefCountedBytes>* output) { *output = base::MakeRefCounted<base::RefCountedBytes>(); - return gfx::JPEGCodec::Encode(image, compression_quality, - &(*output)->as_vector()); + return gfx::JPEGCodec::Encode(image, compression_quality, &(*output)->data()); } lens::ImageData DownscaleAndEncodeBitmap(const SkBitmap& image) {
diff --git a/chrome/browser/page_load_metrics/observers/lcp_critical_path_predictor_page_load_metrics_observer.cc b/chrome/browser/page_load_metrics/observers/lcp_critical_path_predictor_page_load_metrics_observer.cc index 07b6cf97..5ebf17f3 100644 --- a/chrome/browser/page_load_metrics/observers/lcp_critical_path_predictor_page_load_metrics_observer.cc +++ b/chrome/browser/page_load_metrics/observers/lcp_critical_path_predictor_page_load_metrics_observer.cc
@@ -158,8 +158,8 @@ } // Take the learned LCPP here so that we can report it after overwriting it // with the new data below. - std::optional<predictors::LcppData> lcpp_data_prelearn = - predictor ? predictor->GetLcppData(*commit_url_) : std::nullopt; + std::optional<predictors::LcppStat> lcpp_stat_prelearn = + predictor ? predictor->GetLcppStat(*commit_url_) : std::nullopt; // TODO(crbug.com/40517495): kSpeculativePreconnectFeature flag can also // affect this. Unflag the feature. @@ -184,7 +184,7 @@ GetDelegate(), largest_contentful_paint.Time().value()); PAGE_LOAD_HISTOGRAM(internal::kHistogramLCPPLargestContentfulPaint, corrected); - ReportUMAForTimingPredictor(std::move(lcpp_data_prelearn)); + ReportUMAForTimingPredictor(std::move(lcpp_stat_prelearn)); } } @@ -285,14 +285,14 @@ void LcpCriticalPathPredictorPageLoadMetricsObserver:: ReportUMAForTimingPredictor( - std::optional<predictors::LcppData> lcpp_data_prelearn) { - if (!lcpp_data_inputs_.has_value() || !commit_url_ || !lcpp_data_prelearn || - !IsValidLcppStat(lcpp_data_prelearn->lcpp_stat())) { + std::optional<predictors::LcppStat> lcpp_stat_prelearn) { + if (!lcpp_data_inputs_.has_value() || !commit_url_ || !lcpp_stat_prelearn || + !IsValidLcppStat(*lcpp_stat_prelearn)) { return; } std::optional<blink::mojom::LCPCriticalPathPredictorNavigationTimeHint> hint = - ConvertLcppDataToLCPCriticalPathPredictorNavigationTimeHint( - *lcpp_data_prelearn); + ConvertLcppStatToLCPCriticalPathPredictorNavigationTimeHint( + *lcpp_stat_prelearn); if (!hint || !hint->lcp_element_locators.size()) { return; }
diff --git a/chrome/browser/page_load_metrics/observers/lcp_critical_path_predictor_page_load_metrics_observer.h b/chrome/browser/page_load_metrics/observers/lcp_critical_path_predictor_page_load_metrics_observer.h index 6ef4c04c..6f81120 100644 --- a/chrome/browser/page_load_metrics/observers/lcp_critical_path_predictor_page_load_metrics_observer.h +++ b/chrome/browser/page_load_metrics/observers/lcp_critical_path_predictor_page_load_metrics_observer.h
@@ -111,7 +111,7 @@ void OnFirstContentfulPaintInPage( const page_load_metrics::mojom::PageLoadTiming& timing) override; void ReportUMAForTimingPredictor( - std::optional<predictors::LcppData> lcpp_data_prelearn); + std::optional<predictors::LcppStat> lcpp_stat_prelearn); // True if the page is prerendered. bool is_prerender_ = false;
diff --git a/chrome/browser/page_load_metrics/observers/lcp_critical_path_predictor_page_load_metrics_observer_unittest.cc b/chrome/browser/page_load_metrics/observers/lcp_critical_path_predictor_page_load_metrics_observer_unittest.cc index 412063a..ca671c58 100644 --- a/chrome/browser/page_load_metrics/observers/lcp_critical_path_predictor_page_load_metrics_observer_unittest.cc +++ b/chrome/browser/page_load_metrics/observers/lcp_critical_path_predictor_page_load_metrics_observer_unittest.cc
@@ -125,9 +125,9 @@ auto* loading_predictor = predictors::LoadingPredictorFactory::GetForProfile( Profile::FromBrowserContext(browser_context())); - std::optional<predictors::LcppData> lcpp_data = - loading_predictor->resource_prefetch_predictor()->GetLcppData(url); - EXPECT_EQ(learn_lcpp, lcpp_data.has_value()) << location.ToString(); + std::optional<predictors::LcppStat> lcpp_stat = + loading_predictor->resource_prefetch_predictor()->GetLcppStat(url); + EXPECT_EQ(learn_lcpp, lcpp_stat.has_value()) << location.ToString(); base::Histogram::Count expected_count = record_uma ? 1 : 0; tester()->histogram_tester().ExpectTotalCount(
diff --git a/chrome/browser/predictors/lcp_critical_path_predictor/lcp_critical_path_predictor_util.cc b/chrome/browser/predictors/lcp_critical_path_predictor/lcp_critical_path_predictor_util.cc index 468bcdd..ce1b78d 100644 --- a/chrome/browser/predictors/lcp_critical_path_predictor/lcp_critical_path_predictor_util.cc +++ b/chrome/browser/predictors/lcp_critical_path_predictor/lcp_critical_path_predictor_util.cc
@@ -50,17 +50,17 @@ return true; } -// Returns LCP element locators in the past loads for a given `data`. The +// Returns LCP element locators in the past loads for a given `stat`. The // returned LCP element locators are ordered by descending frequency (the // most frequent one comes first). If there is no data, it returns an empty // vector. -std::vector<std::string> PredictLcpElementLocators(const LcppData& data) { +std::vector<std::string> PredictLcpElementLocators(const LcppStat& stat) { // We do not use `ConvertToFrequencyStringPair` for the following code // because the core part of the code is converting `std::map` to // `std::vector<std::pair<double, std::string>>`, which we need the different // logic due to the `bytes` protobuf type. const auto& buckets = - data.lcpp_stat().lcp_element_locator_stat().lcp_element_locator_buckets(); + stat.lcp_element_locator_stat().lcp_element_locator_buckets(); std::vector<std::pair<double, std::string>> lcp_element_locators_with_frequency; lcp_element_locators_with_frequency.reserve(buckets.size()); @@ -81,13 +81,13 @@ return lcp_element_locators; } -// Returns LCP influencer scripts from past loads for a given `data`. +// Returns LCP influencer scripts from past loads for a given `stat`. // The returned script urls are ordered by descending frequency (the most // frequent one comes first). If there is no data, it returns an empty // vector. -std::vector<GURL> PredictLcpInfluencerScripts(const LcppData& data) { +std::vector<GURL> PredictLcpInfluencerScripts(const LcppStat& stat) { std::vector<std::pair<double, std::string>> lcp_script_urls_with_frequency = - ConvertToFrequencyStringPair(data.lcpp_stat().lcp_script_url_stat()); + ConvertToFrequencyStringPair(stat.lcp_script_url_stat()); std::vector<GURL> lcp_script_urls; lcp_script_urls.reserve(lcp_script_urls_with_frequency.size()); @@ -556,16 +556,16 @@ } // namespace std::optional<blink::mojom::LCPCriticalPathPredictorNavigationTimeHint> -ConvertLcppDataToLCPCriticalPathPredictorNavigationTimeHint( - const LcppData& lcpp_data) { +ConvertLcppStatToLCPCriticalPathPredictorNavigationTimeHint( + const LcppStat& lcpp_stat) { std::vector<std::string> lcp_element_locators = - PredictLcpElementLocators(lcpp_data); + PredictLcpElementLocators(lcpp_stat); std::vector<GURL> lcp_influencer_scripts = - PredictLcpInfluencerScripts(lcpp_data); - std::vector<GURL> fetched_fonts = PredictFetchedFontUrls(lcpp_data); + PredictLcpInfluencerScripts(lcpp_stat); + std::vector<GURL> fetched_fonts = PredictFetchedFontUrls(lcpp_stat); std::vector<GURL> preconnect_origins = - PredictPreconnectableOrigins(lcpp_data); - std::vector<GURL> unused_preloads = PredictUnusedPreloads(lcpp_data); + PredictPreconnectableOrigins(lcpp_stat); + std::vector<GURL> unused_preloads = PredictUnusedPreloads(lcpp_stat); if (!lcp_element_locators.empty() || !lcp_influencer_scripts.empty() || !fetched_fonts.empty() || !preconnect_origins.empty() || @@ -578,12 +578,12 @@ return std::nullopt; } -std::vector<GURL> PredictFetchedFontUrls(const LcppData& data) { +std::vector<GURL> PredictFetchedFontUrls(const LcppStat& stat) { if (!base::FeatureList::IsEnabled(blink::features::kLCPPFontURLPredictor)) { return std::vector<GURL>(); } std::vector<std::pair<double, std::string>> font_urls_with_frequency = - ConvertToFrequencyStringPair(data.lcpp_stat().fetched_font_url_stat()); + ConvertToFrequencyStringPair(stat.fetched_font_url_stat()); const double threshold = blink::features::kLCPPFontURLPredictorFrequencyThreshold.Get(); @@ -639,10 +639,10 @@ return font_urls; } -std::vector<GURL> PredictPreconnectableOrigins(const LcppData& data) { +std::vector<GURL> PredictPreconnectableOrigins(const LcppStat& stat) { std::vector<std::pair<double, std::string>> - preconnect_origins_with_frequency = ConvertToFrequencyStringPair( - data.lcpp_stat().preconnect_origin_stat()); + preconnect_origins_with_frequency = + ConvertToFrequencyStringPair(stat.preconnect_origin_stat()); const double frequency_threshold = blink::features::kLCPPAutoPreconnectFrequencyThreshold.Get(); @@ -673,10 +673,10 @@ return preconnect_origins; } -std::vector<GURL> PredictFetchedSubresourceUrls(const LcppData& data) { +std::vector<GURL> PredictFetchedSubresourceUrls(const LcppStat& stat) { std::vector<GURL> subresource_urls; - for (const auto& [frequency, subresource_url] : ConvertToFrequencyStringPair( - data.lcpp_stat().fetched_subresource_url_stat())) { + for (const auto& [frequency, subresource_url] : + ConvertToFrequencyStringPair(stat.fetched_subresource_url_stat())) { GURL parsed_url(subresource_url); if (!parsed_url.is_valid() || !parsed_url.SchemeIsHTTPOrHTTPS()) { continue; @@ -686,7 +686,7 @@ return subresource_urls; } -std::vector<GURL> PredictUnusedPreloads(const LcppData& data) { +std::vector<GURL> PredictUnusedPreloads(const LcppStat& stat) { const double frequency_threshold = blink::features::kLCPPDeferUnusedPreloadFrequencyThreshold.Get(); std::vector<GURL> unused_preloads; @@ -695,7 +695,7 @@ } for (const auto& [frequency, url] : - ConvertToFrequencyStringPair(data.lcpp_stat().unused_preload_stat())) { + ConvertToFrequencyStringPair(stat.unused_preload_stat())) { // The frequencies are reverse sorted by `ConvertToFrequencyStringPair`. if (frequency < frequency_threshold) { break;
diff --git a/chrome/browser/predictors/lcp_critical_path_predictor/lcp_critical_path_predictor_util.h b/chrome/browser/predictors/lcp_critical_path_predictor/lcp_critical_path_predictor_util.h index 04d399d..ab743b71 100644 --- a/chrome/browser/predictors/lcp_critical_path_predictor/lcp_critical_path_predictor_util.h +++ b/chrome/browser/predictors/lcp_critical_path_predictor/lcp_critical_path_predictor_util.h
@@ -13,35 +13,35 @@ namespace predictors { -// Converts LcppData to LCPCriticalPathPredictorNavigationTimeHint +// Converts LcppStat to LCPCriticalPathPredictorNavigationTimeHint // so that it can be passed to the renderer via the navigation handle. std::optional<blink::mojom::LCPCriticalPathPredictorNavigationTimeHint> -ConvertLcppDataToLCPCriticalPathPredictorNavigationTimeHint( - const LcppData& data); +ConvertLcppStatToLCPCriticalPathPredictorNavigationTimeHint( + const LcppStat& data); -// Returns possible fonts from past loads for a given `data`. +// Returns possible fonts from past loads for a given `stat`. // The returned urls are ordered by descending frequency (the most // frequent one comes first). If there is no data, it returns an empty // vector. -std::vector<GURL> PredictFetchedFontUrls(const LcppData& data); +std::vector<GURL> PredictFetchedFontUrls(const LcppStat& stat); -// Returns possible preconnects based on past loads for a given `data`. +// Returns possible preconnects based on past loads for a given `stat`. // The returned origins are ordered by descending frequency (the most // frequent one comes first). If there is no data, it returns an empty // vector. -std::vector<GURL> PredictPreconnectableOrigins(const LcppData& data); +std::vector<GURL> PredictPreconnectableOrigins(const LcppStat& stat); -// Returns possible subresource URLs from past loads for a given `data`. +// Returns possible subresource URLs from past loads for a given `stat`. // The returned URLs are ordered by descending frequency (the most // frequent one comes first). If there is no data, it returns an empty // vector. -std::vector<GURL> PredictFetchedSubresourceUrls(const LcppData& data); +std::vector<GURL> PredictFetchedSubresourceUrls(const LcppStat& stat); -// Returns possible unused preload URLs from past loads for a given `data`. +// Returns possible unused preload URLs from past loads for a given `stat`. // The returned URLs are ordered by descending frequency (the most // frequent one comes first). If there is no data, it returns an empty // vector. -std::vector<GURL> PredictUnusedPreloads(const LcppData& data); +std::vector<GURL> PredictUnusedPreloads(const LcppStat& stat); // An input to update LcppData. struct LcppDataInputs {
diff --git a/chrome/browser/predictors/lcp_critical_path_predictor/lcp_critical_path_predictor_util_unittest.cc b/chrome/browser/predictors/lcp_critical_path_predictor/lcp_critical_path_predictor_util_unittest.cc index e786abb5..4caa59af 100644 --- a/chrome/browser/predictors/lcp_critical_path_predictor/lcp_critical_path_predictor_util_unittest.cc +++ b/chrome/browser/predictors/lcp_critical_path_predictor/lcp_critical_path_predictor_util_unittest.cc
@@ -358,8 +358,8 @@ base::test::ScopedFeatureList feature_list; feature_list.InitWithFeaturesAndParameters( {{blink::features::kLCPPFontURLPredictor, {}}}, {}); - LcppData lcpp_data; - EXPECT_EQ(std::vector<GURL>(), PredictFetchedFontUrls(lcpp_data)); + LcppStat lcpp_stat; + EXPECT_EQ(std::vector<GURL>(), PredictFetchedFontUrls(lcpp_stat)); } TEST(PredictFetchedFontUrls, Simple) { @@ -369,14 +369,12 @@ {{blink::features::kLCPPFontURLPredictorFrequencyThreshold.name, "0.5"}, {blink::features::kLCPPFontURLPredictorMaxPreloadCount.name, "10"}}}}, {}); - LcppData lcpp_data; - lcpp_data.mutable_lcpp_stat() - ->mutable_fetched_font_url_stat() - ->mutable_main_buckets() - ->insert({"https://example.com/a.woff", 0.9}); + LcppStat lcpp_stat; + lcpp_stat.mutable_fetched_font_url_stat()->mutable_main_buckets()->insert( + {"https://example.com/a.woff", 0.9}); std::vector<GURL> expected; expected.emplace_back("https://example.com/a.woff"); - EXPECT_EQ(expected, PredictFetchedFontUrls(lcpp_data)); + EXPECT_EQ(expected, PredictFetchedFontUrls(lcpp_stat)); } TEST(PredictFetchedFontUrls, BrokenFontNames) { @@ -386,10 +384,9 @@ {{blink::features::kLCPPFontURLPredictorFrequencyThreshold.name, "0.5"}, {blink::features::kLCPPFontURLPredictorMaxPreloadCount.name, "10"}}}}, {}); - LcppData lcpp_data; - auto* main_buckets = lcpp_data.mutable_lcpp_stat() - ->mutable_fetched_font_url_stat() - ->mutable_main_buckets(); + LcppStat lcpp_stat; + auto* main_buckets = + lcpp_stat.mutable_fetched_font_url_stat()->mutable_main_buckets(); // Duplicated. main_buckets->insert({"https://example.com/a.woff", 0.9}); main_buckets->insert({"https://example.com/a.woff", 0.8}); @@ -399,7 +396,7 @@ main_buckets->insert({"wss://example.com/", 0.9}); std::vector<GURL> expected; expected.emplace_back("https://example.com/a.woff"); - EXPECT_EQ(expected, PredictFetchedFontUrls(lcpp_data)); + EXPECT_EQ(expected, PredictFetchedFontUrls(lcpp_stat)); } TEST(PredictFetchedFontUrls, Threshold) { @@ -409,15 +406,14 @@ {{blink::features::kLCPPFontURLPredictorFrequencyThreshold.name, "0.5"}, {blink::features::kLCPPFontURLPredictorMaxPreloadCount.name, "10"}}}}, {}); - LcppData lcpp_data; - auto* main_buckets = lcpp_data.mutable_lcpp_stat() - ->mutable_fetched_font_url_stat() - ->mutable_main_buckets(); + LcppStat lcpp_stat; + auto* main_buckets = + lcpp_stat.mutable_fetched_font_url_stat()->mutable_main_buckets(); main_buckets->insert({"https://example.com/a.woff", 0.9}); main_buckets->insert({"https://example.com/b.woff", 0.1}); std::vector<GURL> expected; expected.emplace_back("https://example.com/a.woff"); - EXPECT_EQ(expected, PredictFetchedFontUrls(lcpp_data)); + EXPECT_EQ(expected, PredictFetchedFontUrls(lcpp_stat)); } TEST(PredictFetchedFontUrls, MaxUrls) { @@ -429,15 +425,14 @@ "0.5"}, {blink::features::kLCPPFontURLPredictorMaxPreloadCount.name, "1"}}}}, {}); - LcppData lcpp_data; - auto* main_buckets = lcpp_data.mutable_lcpp_stat() - ->mutable_fetched_font_url_stat() - ->mutable_main_buckets(); + LcppStat lcpp_stat; + auto* main_buckets = + lcpp_stat.mutable_fetched_font_url_stat()->mutable_main_buckets(); main_buckets->insert({"https://example.com/a.woff", 0.9}); main_buckets->insert({"https://example.com/b.woff", 0.8}); std::vector<GURL> expected; expected.emplace_back("https://example.com/a.woff"); - EXPECT_EQ(expected, PredictFetchedFontUrls(lcpp_data)); + EXPECT_EQ(expected, PredictFetchedFontUrls(lcpp_stat)); } { // Use MaxUrls as a kill switch. base::test::ScopedFeatureList feature_list; @@ -447,14 +442,13 @@ "0.5"}, {blink::features::kLCPPFontURLPredictorMaxPreloadCount.name, "0"}}}}, {}); - LcppData lcpp_data; - auto* main_buckets = lcpp_data.mutable_lcpp_stat() - ->mutable_fetched_font_url_stat() - ->mutable_main_buckets(); + LcppStat lcpp_stat; + auto* main_buckets = + lcpp_stat.mutable_fetched_font_url_stat()->mutable_main_buckets(); main_buckets->insert({"https://example.com/a.woff", 0.9}); main_buckets->insert({"https://example.com/b.woff", 0.8}); std::vector<GURL> expected; - EXPECT_EQ(expected, PredictFetchedFontUrls(lcpp_data)); + EXPECT_EQ(expected, PredictFetchedFontUrls(lcpp_stat)); } } @@ -463,34 +457,31 @@ } TEST(PredictFetchedSubresourceUrls, SingleEntry) { - LcppData lcpp_data; - lcpp_data.mutable_lcpp_stat() - ->mutable_fetched_subresource_url_stat() + LcppStat lcpp_stat; + lcpp_stat.mutable_fetched_subresource_url_stat() ->mutable_main_buckets() ->insert({"https://example.com/a.jpeg", 0.9}); EXPECT_EQ(std::vector<GURL>({GURL("https://example.com/a.jpeg")}), - PredictFetchedSubresourceUrls(lcpp_data)); + PredictFetchedSubresourceUrls(lcpp_stat)); } TEST(PredictFetchedSubresourceUrls, SortedByFrequencyInDescendingOrder) { - LcppData lcpp_data; - auto* buckets = lcpp_data.mutable_lcpp_stat() - ->mutable_fetched_subresource_url_stat() - ->mutable_main_buckets(); + LcppStat lcpp_stat; + auto* buckets = + lcpp_stat.mutable_fetched_subresource_url_stat()->mutable_main_buckets(); buckets->insert({"https://example.com/c.jpeg", 0.1}); buckets->insert({"https://example.com/a.jpeg", 0.3}); buckets->insert({"https://example.com/b.jpeg", 0.2}); EXPECT_EQ(std::vector<GURL>({GURL("https://example.com/a.jpeg"), GURL("https://example.com/b.jpeg"), GURL("https://example.com/c.jpeg")}), - PredictFetchedSubresourceUrls(lcpp_data)); + PredictFetchedSubresourceUrls(lcpp_stat)); } TEST(PredictFetchedSubresourceUrls, FilterUrls) { - LcppData lcpp_data; - auto* buckets = lcpp_data.mutable_lcpp_stat() - ->mutable_fetched_subresource_url_stat() - ->mutable_main_buckets(); + LcppStat lcpp_stat; + auto* buckets = + lcpp_stat.mutable_fetched_subresource_url_stat()->mutable_main_buckets(); buckets->insert({"https://example.com/a.jpeg", 0.1}); buckets->insert({"https://example.com/b.jpeg", 0.2}); // Not an HTTP/HTTPS. @@ -500,15 +491,15 @@ EXPECT_EQ(4U, buckets->size()); EXPECT_EQ(std::vector<GURL>({GURL("https://example.com/b.jpeg"), GURL("https://example.com/a.jpeg")}), - PredictFetchedSubresourceUrls(lcpp_data)); + PredictFetchedSubresourceUrls(lcpp_stat)); } TEST(PredictPreconnectableOrigins, Empty) { base::test::ScopedFeatureList feature_list; feature_list.InitWithFeaturesAndParameters( {{blink::features::kLCPPAutoPreconnectLcpOrigin, {}}}, {}); - LcppData lcpp_data; - EXPECT_EQ(std::vector<GURL>(), PredictPreconnectableOrigins(lcpp_data)); + LcppStat lcpp_stat; + EXPECT_EQ(std::vector<GURL>(), PredictPreconnectableOrigins(lcpp_stat)); } TEST(PredictPreconnectableOrigins, Simple) { @@ -519,14 +510,12 @@ {blink::features::kkLCPPAutoPreconnectMaxPreconnectOriginsCount.name, "10"}}}}, {}); - LcppData lcpp_data; - lcpp_data.mutable_lcpp_stat() - ->mutable_preconnect_origin_stat() - ->mutable_main_buckets() - ->insert({"https://example.com", 0.9}); + LcppStat lcpp_stat; + lcpp_stat.mutable_preconnect_origin_stat()->mutable_main_buckets()->insert( + {"https://example.com", 0.9}); std::vector<GURL> expected; expected.emplace_back("https://example.com"); - EXPECT_EQ(expected, PredictPreconnectableOrigins(lcpp_data)); + EXPECT_EQ(expected, PredictPreconnectableOrigins(lcpp_stat)); } TEST(PredictPreconnectableOrigins, SortedByFrequencyInDescendingOrder) { @@ -537,17 +526,16 @@ {blink::features::kkLCPPAutoPreconnectMaxPreconnectOriginsCount.name, "10"}}}}, {}); - LcppData lcpp_data; - auto* buckets = lcpp_data.mutable_lcpp_stat() - ->mutable_preconnect_origin_stat() - ->mutable_main_buckets(); + LcppStat lcpp_stat; + auto* buckets = + lcpp_stat.mutable_preconnect_origin_stat()->mutable_main_buckets(); buckets->insert({"https://example.com", 0.1}); buckets->insert({"https://example2.com", 0.3}); buckets->insert({"https://example3.com", 0.2}); EXPECT_EQ(std::vector<GURL>({GURL("https://example2.com"), GURL("https://example3.com"), GURL("https://example.com")}), - PredictPreconnectableOrigins(lcpp_data)); + PredictPreconnectableOrigins(lcpp_stat)); } TEST(PredictPreconnectableOrigins, Threshold) { @@ -558,15 +546,14 @@ {blink::features::kkLCPPAutoPreconnectMaxPreconnectOriginsCount.name, "10"}}}}, {}); - LcppData lcpp_data; - auto* main_buckets = lcpp_data.mutable_lcpp_stat() - ->mutable_preconnect_origin_stat() - ->mutable_main_buckets(); + LcppStat lcpp_stat; + auto* main_buckets = + lcpp_stat.mutable_preconnect_origin_stat()->mutable_main_buckets(); main_buckets->insert({"https://example1.com", 0.9}); main_buckets->insert({"https://example2.com", 0.1}); std::vector<GURL> expected; expected.emplace_back("https://example1.com"); - EXPECT_EQ(expected, PredictPreconnectableOrigins(lcpp_data)); + EXPECT_EQ(expected, PredictPreconnectableOrigins(lcpp_stat)); } TEST(PredictPreconnectableOrigins, MaxUrls) { @@ -578,15 +565,14 @@ {blink::features::kkLCPPAutoPreconnectMaxPreconnectOriginsCount.name, "1"}}}}, {}); - LcppData lcpp_data; - auto* main_buckets = lcpp_data.mutable_lcpp_stat() - ->mutable_preconnect_origin_stat() - ->mutable_main_buckets(); + LcppStat lcpp_stat; + auto* main_buckets = + lcpp_stat.mutable_preconnect_origin_stat()->mutable_main_buckets(); main_buckets->insert({"https://example.com", 0.9}); main_buckets->insert({"https://example1.com", 0.8}); std::vector<GURL> expected; expected.emplace_back("https://example.com"); - EXPECT_EQ(expected, PredictPreconnectableOrigins(lcpp_data)); + EXPECT_EQ(expected, PredictPreconnectableOrigins(lcpp_stat)); } { // Use MaxUrls as a kill switch. base::test::ScopedFeatureList feature_list; @@ -596,14 +582,13 @@ {blink::features::kkLCPPAutoPreconnectMaxPreconnectOriginsCount.name, "0"}}}}, {}); - LcppData lcpp_data; - auto* main_buckets = lcpp_data.mutable_lcpp_stat() - ->mutable_preconnect_origin_stat() - ->mutable_main_buckets(); + LcppStat lcpp_stat; + auto* main_buckets = + lcpp_stat.mutable_preconnect_origin_stat()->mutable_main_buckets(); main_buckets->insert({"https://example1.com", 0.9}); main_buckets->insert({"https://example2.com", 0.8}); std::vector<GURL> expected; - EXPECT_EQ(expected, PredictPreconnectableOrigins(lcpp_data)); + EXPECT_EQ(expected, PredictPreconnectableOrigins(lcpp_stat)); } } @@ -615,10 +600,9 @@ {blink::features::kkLCPPAutoPreconnectMaxPreconnectOriginsCount.name, "10"}}}}, {}); - LcppData lcpp_data; - auto* buckets = lcpp_data.mutable_lcpp_stat() - ->mutable_preconnect_origin_stat() - ->mutable_main_buckets(); + LcppStat lcpp_stat; + auto* buckets = + lcpp_stat.mutable_preconnect_origin_stat()->mutable_main_buckets(); buckets->insert({"https://example1.com", 0.9}); buckets->insert({"https://example2.com", 0.8}); // Not an HTTP/HTTPS. @@ -628,7 +612,7 @@ EXPECT_EQ(4U, buckets->size()); EXPECT_EQ(std::vector<GURL>( {GURL("https://example1.com"), GURL("https://example2.com")}), - PredictPreconnectableOrigins(lcpp_data)); + PredictPreconnectableOrigins(lcpp_stat)); } TEST(PredictUnusedPreloads, Empty) { @@ -650,13 +634,11 @@ "0.5"}}}}, {}); - LcppData lcpp_data; - lcpp_data.mutable_lcpp_stat() - ->mutable_unused_preload_stat() - ->mutable_main_buckets() - ->insert({"https://example.com/a.jpeg", 0.9}); + LcppStat lcpp_stat; + lcpp_stat.mutable_unused_preload_stat()->mutable_main_buckets()->insert( + {"https://example.com/a.jpeg", 0.9}); EXPECT_EQ(std::vector<GURL>({GURL("https://example.com/a.jpeg")}), - PredictUnusedPreloads(lcpp_data)); + PredictUnusedPreloads(lcpp_stat)); } TEST(PredictUnusedPreloads, SortedByFrequencyInDescendingOrder) { @@ -667,17 +649,16 @@ "0"}}}}, {}); - LcppData lcpp_data; - auto* buckets = lcpp_data.mutable_lcpp_stat() - ->mutable_unused_preload_stat() - ->mutable_main_buckets(); + LcppStat lcpp_stat; + auto* buckets = + lcpp_stat.mutable_unused_preload_stat()->mutable_main_buckets(); buckets->insert({"https://example.com/c.jpeg", 0.1}); buckets->insert({"https://example.com/a.jpeg", 0.3}); buckets->insert({"https://example.com/b.jpeg", 0.2}); EXPECT_EQ(std::vector<GURL>({GURL("https://example.com/a.jpeg"), GURL("https://example.com/b.jpeg"), GURL("https://example.com/c.jpeg")}), - PredictUnusedPreloads(lcpp_data)); + PredictUnusedPreloads(lcpp_stat)); } TEST(PredictUnusedPreloads, FilterUrls) { @@ -688,10 +669,9 @@ "0"}}}}, {}); - LcppData lcpp_data; - auto* buckets = lcpp_data.mutable_lcpp_stat() - ->mutable_unused_preload_stat() - ->mutable_main_buckets(); + LcppStat lcpp_stat; + auto* buckets = + lcpp_stat.mutable_unused_preload_stat()->mutable_main_buckets(); buckets->insert({"https://example.com/a.jpeg", 0.1}); buckets->insert({"https://example.com/b.jpeg", 0.2}); // Not an HTTP/HTTPS. @@ -701,7 +681,7 @@ EXPECT_EQ(4U, buckets->size()); EXPECT_EQ(std::vector<GURL>({GURL("https://example.com/b.jpeg"), GURL("https://example.com/a.jpeg")}), - PredictUnusedPreloads(lcpp_data)); + PredictUnusedPreloads(lcpp_stat)); } TEST(PredictUnusedPreloads, Threshold) { @@ -712,14 +692,13 @@ "0.5"}}}}, {}); - LcppData lcpp_data; - auto* buckets = lcpp_data.mutable_lcpp_stat() - ->mutable_unused_preload_stat() - ->mutable_main_buckets(); + LcppStat lcpp_stat; + auto* buckets = + lcpp_stat.mutable_unused_preload_stat()->mutable_main_buckets(); buckets->insert({"https://example.com/a.jpeg", 0.9}); buckets->insert({"https://example.com/b.jpeg", 0.1}); EXPECT_EQ(std::vector<GURL>({GURL("https://example.com/a.jpeg")}), - PredictUnusedPreloads(lcpp_data)); + PredictUnusedPreloads(lcpp_stat)); } TEST(LcppKeyTest, InvalidURLs) {
diff --git a/chrome/browser/predictors/loading_predictor.cc b/chrome/browser/predictors/loading_predictor.cc index f9f0e61..a5c15735 100644 --- a/chrome/browser/predictors/loading_predictor.cc +++ b/chrome/browser/predictors/loading_predictor.cc
@@ -218,15 +218,15 @@ // without optimization guide. if (base::FeatureList::IsEnabled( blink::features::kLCPPAutoPreconnectLcpOrigin)) { - std::optional<LcppData> lcpp_data = - resource_prefetch_predictor()->GetLcppData(url); - if (lcpp_data) { + std::optional<LcppStat> lcpp_stat = + resource_prefetch_predictor()->GetLcppStat(url); + if (lcpp_stat) { auto network_anonymization_key = net::NetworkAnonymizationKey::CreateSameSite( net::SchemefulSite(url::Origin::Create(url))); size_t count = 0; for (const GURL& preconnect_origin : - PredictPreconnectableOrigins(*lcpp_data)) { + PredictPreconnectableOrigins(*lcpp_stat)) { prediction.requests.emplace_back(url::Origin::Create(preconnect_origin), 1, network_anonymization_key); ++count; @@ -244,14 +244,14 @@ base::FeatureList::IsEnabled(features::kLoadingPredictorPrefetch) && features::kLoadingPredictorPrefetchSubresourceType.Get() == features::PrefetchSubresourceType::kAll) { - std::optional<LcppData> lcpp_data = - resource_prefetch_predictor()->GetLcppData(url); - if (lcpp_data) { + std::optional<LcppStat> lcpp_stat = + resource_prefetch_predictor()->GetLcppStat(url); + if (lcpp_stat) { auto network_anonymization_key = net::NetworkAnonymizationKey::CreateSameSite( net::SchemefulSite(url::Origin::Create(url))); size_t count = 0; - for (const GURL& font_url : PredictFetchedFontUrls(*lcpp_data)) { + for (const GURL& font_url : PredictFetchedFontUrls(*lcpp_stat)) { prediction.prefetch_requests.emplace_back( font_url, network_anonymization_key, network::mojom::RequestDestination::kFont); @@ -556,10 +556,10 @@ return; } - std::optional<LcppData> lcpp_data = - resource_prefetch_predictor()->GetLcppData(top_frame_main_resource_url); + std::optional<LcppStat> lcpp_stat = + resource_prefetch_predictor()->GetLcppStat(top_frame_main_resource_url); - if (!lcpp_data || !IsValidLcppStat(lcpp_data->lcpp_stat())) { + if (!lcpp_stat || !IsValidLcppStat(*lcpp_stat)) { return; } @@ -571,7 +571,7 @@ } prewarm_http_disk_cache_manager_->MaybePrewarmResources( - top_frame_main_resource_url, PredictFetchedSubresourceUrls(*lcpp_data)); + top_frame_main_resource_url, PredictFetchedSubresourceUrls(*lcpp_stat)); } } // namespace predictors
diff --git a/chrome/browser/predictors/loading_predictor_browsertest.cc b/chrome/browser/predictors/loading_predictor_browsertest.cc index fadf233..433929d 100644 --- a/chrome/browser/predictors/loading_predictor_browsertest.cc +++ b/chrome/browser/predictors/loading_predictor_browsertest.cc
@@ -913,13 +913,13 @@ const base::Location& from_here, const GURL& url, size_t expected_locator_count) { - auto lcpp_data = - loading_predictor()->resource_prefetch_predictor()->GetLcppData(url); + auto lcpp_stat = + loading_predictor()->resource_prefetch_predictor()->GetLcppStat(url); std::vector<std::string> locators; - if (lcpp_data) { + if (lcpp_stat) { std::optional<blink::mojom::LCPCriticalPathPredictorNavigationTimeHint> - hint = ConvertLcppDataToLCPCriticalPathPredictorNavigationTimeHint( - *lcpp_data); + hint = ConvertLcppStatToLCPCriticalPathPredictorNavigationTimeHint( + *lcpp_stat); if (hint) { locators = hint->lcp_element_locators; }
diff --git a/chrome/browser/predictors/loading_predictor_tab_helper.cc b/chrome/browser/predictors/loading_predictor_tab_helper.cc index b0425e0..669578f 100644 --- a/chrome/browser/predictors/loading_predictor_tab_helper.cc +++ b/chrome/browser/predictors/loading_predictor_tab_helper.cc
@@ -181,22 +181,22 @@ if (!navigation_url.is_valid() || !navigation_url.SchemeIsHTTPOrHTTPS()) { return; } - std::optional<LcppData> lcpp_data = - predictor.resource_prefetch_predictor()->GetLcppData(navigation_url); - if (!lcpp_data) { + std::optional<LcppStat> lcpp_stat = + predictor.resource_prefetch_predictor()->GetLcppStat(navigation_url); + if (!lcpp_stat) { base::UmaHistogramEnumeration( "LoadingPredictor.SetLCPPNavigationHint.Status", LcppHintStatus::kNoLcppData); return; } - if (!IsValidLcppStat(lcpp_data->lcpp_stat())) { + if (!IsValidLcppStat(*lcpp_stat)) { base::UmaHistogramEnumeration( "LoadingPredictor.SetLCPPNavigationHint.Status", LcppHintStatus::kInvalidLcppStat); return; } std::optional<blink::mojom::LCPCriticalPathPredictorNavigationTimeHint> hint = - ConvertLcppDataToLCPCriticalPathPredictorNavigationTimeHint(*lcpp_data); + ConvertLcppStatToLCPCriticalPathPredictorNavigationTimeHint(*lcpp_stat); if (hint) { navigation_handle.SetLCPPNavigationHint(*hint); base::UmaHistogramEnumeration(
diff --git a/chrome/browser/predictors/resource_prefetch_predictor.cc b/chrome/browser/predictors/resource_prefetch_predictor.cc index e1f7602c..983725c 100644 --- a/chrome/browser/predictors/resource_prefetch_predictor.cc +++ b/chrome/browser/predictors/resource_prefetch_predictor.cc
@@ -395,7 +395,7 @@ return has_any_prediction; } -std::optional<LcppData> ResourcePrefetchPredictor::GetLcppData( +std::optional<LcppStat> ResourcePrefetchPredictor::GetLcppStat( const GURL& url) const { DCHECK_CURRENTLY_ON(BrowserThread::UI); // The `initialization_state_` can be not `INITIALIZED` in the very first @@ -414,7 +414,7 @@ if (!lcpp_data_->TryGetData(key, &data)) { return std::nullopt; } - return data; + return data.lcpp_stat(); } void ResourcePrefetchPredictor::CreateCaches(
diff --git a/chrome/browser/predictors/resource_prefetch_predictor.h b/chrome/browser/predictors/resource_prefetch_predictor.h index 9b78dc72..b730f8dc 100644 --- a/chrome/browser/predictors/resource_prefetch_predictor.h +++ b/chrome/browser/predictors/resource_prefetch_predictor.h
@@ -207,8 +207,8 @@ // Deletes all URLs from the predictor database and caches. void DeleteAllUrls(); - // Returns LcppData for the `url`, or std::nullopt on failure. - std::optional<LcppData> GetLcppData(const GURL& url) const; + // Returns LcppStat for the `url`, or std::nullopt on failure. + std::optional<LcppStat> GetLcppStat(const GURL& url) const; private: friend class LoadingPredictor;
diff --git a/chrome/browser/printing/pwg_raster_converter.cc b/chrome/browser/printing/pwg_raster_converter.cc index 7df2387..56b59fb 100644 --- a/chrome/browser/printing/pwg_raster_converter.cc +++ b/chrome/browser/printing/pwg_raster_converter.cc
@@ -105,7 +105,7 @@ // TODO(thestig): Write `data` into shared memory in the first place, to avoid // this memcpy(). - memcpy(memory.mapping.memory(), data->data(), data->size()); + memcpy(memory.mapping.memory(), data->front(), data->size()); pdf_to_pwg_raster_converter_remote_->Convert( std::move(memory.region), settings_, bitmap_settings_, base::BindOnce(&PwgRasterConverterHelper::RunCallback, this));
diff --git a/chrome/browser/profiles/profile_attributes_storage.cc b/chrome/browser/profiles/profile_attributes_storage.cc index 6458ff3..2476d03 100644 --- a/chrome/browser/profiles/profile_attributes_storage.cc +++ b/chrome/browser/profiles/profile_attributes_storage.cc
@@ -1014,9 +1014,9 @@ base::OnceClosure callback) { cached_avatar_images_[key] = image; + std::unique_ptr<ImageData> data(new ImageData); scoped_refptr<base::RefCountedMemory> png_data = image.As1xPNGBytes(); - auto data = std::make_unique<ImageData>(png_data->size()); - base::span(*data).copy_from(*png_data); + data->assign(png_data->front(), png_data->front() + png_data->size()); // Remove the file from the list of downloads in progress. Note that this list // only contains the high resolution avatars, and not the Gaia profile images.
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/BUILD.gn b/chrome/browser/resources/chromeos/accessibility/chromevox/BUILD.gn index 3c328537..b07865a 100644 --- a/chrome/browser/resources/chromeos/accessibility/chromevox/BUILD.gn +++ b/chrome/browser/resources/chromeos/accessibility/chromevox/BUILD.gn
@@ -82,6 +82,7 @@ "panel/panel.ts", "panel/panel_captions.ts", "panel/panel_interface.ts", + "panel/panel_menu.ts", "panel/panel_menu_item.ts", "panel/panel_mode.ts", "third_party/tamachiyomi/ja_phonetic_data.ts", @@ -172,7 +173,6 @@ "common/settings_manager.js", "common/tree_dumper.js", "panel/menu_manager.js", - "panel/panel_menu.js", ] # Closure library modules needed by chromevox.
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/panel/panel_menu.js b/chrome/browser/resources/chromeos/accessibility/chromevox/panel/panel_menu.ts similarity index 61% rename from chrome/browser/resources/chromeos/accessibility/chromevox/panel/panel_menu.js rename to chrome/browser/resources/chromeos/accessibility/chromevox/panel/panel_menu.ts index 615bb84..f4caa45 100644 --- a/chrome/browser/resources/chromeos/accessibility/chromevox/panel/panel_menu.js +++ b/chrome/browser/resources/chromeos/accessibility/chromevox/panel/panel_menu.ts
@@ -11,12 +11,27 @@ import {PanelMenuItem} from './panel_menu_item.js'; +type MenuCallback = () => Promise<void>; + export class PanelMenu { + menuBarItemElement: HTMLDivElement; + menuContainerElement: HTMLDivElement; + menuElement: HTMLTableElement; + menuMsg: string; + + /** The current active menu item index, or -1 if none. */ + protected activeIndex_ = -1; + private enabled_ = true; + protected items_: PanelMenuItem[] = []; /** - * @param {string} menuMsg The msg id of the menu. + * The return value from setTimeout for a function to update the + * scroll bars after an item has been added to a menu. Used so that we + * don't re-layout too many times. */ - constructor(menuMsg) { - /** @type {string} */ + private updateScrollbarsTimeout_: number | null = null; + + /** @param menuMsg The msg id of the menu. */ + constructor(menuMsg: string) { this.menuMsg = menuMsg; // The item in the menu bar containing the menu's title. this.menuBarItemElement = document.createElement('div'); @@ -39,75 +54,45 @@ this.menuElement.setAttribute('aria-label', menuTitle); this.menuContainerElement.appendChild(this.menuElement); - /** - * The items in the menu. - * @type {!Array<!PanelMenuItem>} - * @private - */ - this.items_ = []; - - /** - * The return value from setTimeout for a function to update the - * scroll bars after an item has been added to a menu. Used so that we - * don't re-layout too many times. - * @type {?number} - * @private - */ - this.updateScrollbarsTimeout_ = null; - - /** - * The current active menu item index, or -1 if none. - * @type {number} - * @private - */ - this.activeIndex_ = -1; - this.menuElement.addEventListener( 'keypress', this.onKeyPress_.bind(this), true); - - /** @private {boolean} */ - this.enabled_ = true; } /** - * @param {string} menuItemTitle The title of the menu item. - * @param {string|undefined} menuItemShortcut The keystrokes to select this + * @param menuItemTitle The title of the menu item. + * @param menuItemShortcut The keystrokes to select this * item. - * @param {string|undefined} menuItemBraille - * @param {string|undefined} gesture - * @param {function(): !Promise} callback The function to call if this item + * @param callback The function to call if this item * is selected. - * @param {string=} opt_id An optional id for the menu item element. - * @return {!PanelMenuItem} The menu item just created. + * @param id An optional id for the menu item element. + * @return The menu item just created. */ addMenuItem( - menuItemTitle, menuItemShortcut, menuItemBraille, gesture, callback, - opt_id) { + menuItemTitle: string, menuItemShortcut: string | undefined, + menuItemBraille: string | undefined, gesture: string | undefined, + callback: MenuCallback, id?: string): PanelMenuItem { const menuItem = new PanelMenuItem( menuItemTitle, menuItemShortcut, menuItemBraille, gesture, callback, - opt_id); + id); + const menuElement = menuItem.element as Node; this.items_.push(menuItem); - this.menuElement.appendChild(menuItem.element); + this.menuElement.appendChild(menuElement); // Sync the active index with focus. - menuItem.element.addEventListener( - 'focus', (function(index, event) { - this.activeIndex_ = index; - }).bind(this, this.items_.length - 1), - false); + const lastItemIndex = this.items_.length - 1; + menuElement.addEventListener( + 'focus', () => this.activeIndex_ = lastItemIndex, false); // Update the container height, adding a scroll bar if necessary - but // to avoid excessive layout, schedule this once per batch of adding // menu items rather than after each add. if (!this.updateScrollbarsTimeout_) { - this.updateScrollbarsTimeout_ = setTimeout( - (function() { - const menuBounds = this.menuElement.getBoundingClientRect(); - const maxHeight = window.innerHeight - menuBounds.top; - this.menuContainerElement.style.maxHeight = maxHeight + 'px'; - this.updateScrollbarsTimeout_ = null; - }).bind(this), - 0); + this.updateScrollbarsTimeout_ = setTimeout(() => { + const menuBounds = this.menuElement.getBoundingClientRect(); + const maxHeight = window.innerHeight - menuBounds.top; + this.menuContainerElement.style.maxHeight = maxHeight + 'px'; + this.updateScrollbarsTimeout_ = null; + }, 0); } return menuItem; @@ -116,21 +101,21 @@ /** * Activate this menu, which means showing it and positioning it on the * screen underneath its title in the menu bar. - * @param {boolean} activateFirstItem Whether or not we should activate the - * menu's - * first item. + * @param activateFirstItem Whether or not we should activate the menu's + * first item. */ - activate(activateFirstItem) { + activate(activateFirstItem: boolean): void { if (!this.enabled_) { this.menuBarItemElement.focus(); return; } this.menuContainerElement.style.visibility = 'visible'; - this.menuContainerElement.style.opacity = 1; + this.menuContainerElement.style.opacity = String(1); this.menuBarItemElement.classList.add('active'); + // TODO(b/314203187): Not null asserted, check that this is correct. const barBounds = - this.menuBarItemElement.parentElement.getBoundingClientRect(); + this.menuBarItemElement.parentElement!.getBoundingClientRect(); const titleBounds = this.menuBarItemElement.getBoundingClientRect(); const menuBounds = this.menuElement.getBoundingClientRect(); @@ -154,13 +139,14 @@ * When activated, focus gets placed on the menuBarItem (title element) * instead of the first menu item. */ - disable() { + disable(): void { this.enabled_ = false; this.menuBarItemElement.classList.add('disabled'); - this.menuBarItemElement.setAttribute('aria-disabled', true); - this.menuBarItemElement.setAttribute('tabindex', 0); + this.menuBarItemElement.setAttribute('aria-disabled', String(true)); + this.menuBarItemElement.setAttribute('tabindex', String(0)); + // TODO(b/314203187): Not null asserted, check that this is correct. this.menuBarItemElement.setAttribute( - 'aria-label', this.menuBarItemElement.textContent); + 'aria-label', this.menuBarItemElement.textContent!); this.activeIndex_ = -1; } @@ -168,34 +154,31 @@ * Hide this menu. Make it invisible first to minimize spurious * accessibility events before the next menu activates. */ - deactivate() { - this.menuContainerElement.style.opacity = 0.001; + deactivate(): void { + this.menuContainerElement.style.opacity = String(0.001); this.menuBarItemElement.classList.remove('active'); this.activeIndex_ = -1; - setTimeout( - (function() { - this.menuContainerElement.style.visibility = 'hidden'; - }).bind(this), - 0); + setTimeout(() => this.menuContainerElement.style.visibility = 'hidden', 0); } /** * Make a specific menu item index active. - * @param {number} itemIndex The index of the menu item. + * @param itemIndex The index of the menu item. */ - activateItem(itemIndex) { + activateItem(itemIndex: number): void { this.activeIndex_ = itemIndex; if (this.activeIndex_ >= 0 && this.activeIndex_ < this.items_.length) { - this.items_[this.activeIndex_].element.focus(); + // TODO(b/314203187): Not null asserted, check that this is correct. + this.items_[this.activeIndex_].element!.focus(); } } /** * Advanced the active menu item index by a given number. - * @param {number} delta The number to add to the active menu item index. + * @param delta The number to add to the active menu item index. */ - advanceItemBy(delta) { + advanceItemBy(delta: number): void { if (!this.enabled_) { return; } @@ -219,42 +202,34 @@ return; } - this.items_[this.activeIndex_].element.focus(); + // TODO(b/314203187): Not null asserted, check that this is correct. + this.items_[this.activeIndex_].element!.focus(); } - /** - * Sets the active menu item index to be 0. - */ - scrollToTop() { + /** Sets the active menu item index to be 0. */ + scrollToTop(): void { this.activeIndex_ = 0; - this.items_[this.activeIndex_].element.focus(); + // TODO(b/314203187): Not null asserted, check that this is correct. + this.items_[this.activeIndex_].element!.focus(); } - /** - * Sets the active menu item index to be the last index. - */ - scrollToBottom() { + /** Sets the active menu item index to be the last index. */ + scrollToBottom(): void { this.activeIndex_ = this.items_.length - 1; - this.items_[this.activeIndex_].element.focus(); + // TODO(b/314203187): Not null asserted, check that this is correct. + this.items_[this.activeIndex_].element!.focus(); } - /** - * Get the callback for the active menu item. - * @return {?function() : !Promise} The callback. - */ - getCallbackForCurrentItem() { + /** Get the callback for the active menu item. */ + getCallbackForCurrentItem(): MenuCallback | null { if (this.activeIndex_ >= 0 && this.activeIndex_ < this.items_.length) { return this.items_[this.activeIndex_].callback; } return null; } - /** - * Get the callback for a menu item given its DOM element. - * @param {Element} element The DOM element. - * @return {?function() : !Promise} The callback. - */ - getCallbackForElement(element) { + /** Get the callback for a menu item given its DOM element. */ + getCallbackForElement(element: HTMLElement): MenuCallback | null { for (let i = 0; i < this.items_.length; i++) { if (element === this.items_[i].element) { return this.items_[i].callback; @@ -263,10 +238,8 @@ return null; } - /** - * Handles key presses for first letter accelerators. - */ - onKeyPress_(evt) { + /** Handles key presses for first letter accelerators. */ + private onKeyPress_(evt: KeyboardEvent): void { if (!this.items_.length) { return; } @@ -281,28 +254,19 @@ } } - /** - * @return {boolean} The enabled state of this menu. - */ - get enabled() { + get enabled(): boolean { return this.enabled_; } - /** - * @return {!Array<!PanelMenuItem>} - */ - get items() { + get items(): PanelMenuItem[] { return this.items_; } /** * Starting at |startIndex|, looks for an enabled menu item. - * @param {number} startIndex - * @param {number} delta - * @return {number} The index of the enabled item. -1 if not found. - * @private + * @return The index of the enabled item. -1 if not found. */ - findEnabledItemIndex_(startIndex, delta) { + private findEnabledItemIndex_(startIndex: number, delta: number): number { const endIndex = (delta > 0) ? this.items_.length : -1; while (startIndex !== endIndex) { if (this.items_[startIndex].enabled) { @@ -316,8 +280,7 @@ export class PanelNodeMenu extends PanelMenu { - /** @override */ - activate(activateFirstItem) { + override activate(activateFirstItem: boolean): void { super.activate(false); if (activateFirstItem) { // The active index might have been set prior to this call in @@ -327,8 +290,7 @@ } } - /** @param {!PanelNodeMenuItemData} data */ - addItemFromData(data) { + addItemFromData(data: PanelNodeMenuItemData): void { this.addMenuItem(data.title, '', '', '', async () => { if (data.callbackId) { BridgeCallbackManager.performCallback(data.callbackId); @@ -345,12 +307,15 @@ * ChromeVox menus. */ export class PanelSearchMenu extends PanelMenu { + searchBar: HTMLInputElement; + + private searchResultCounter_ = 0; + /** - * @param {!string} menuMsg The msg id of the menu. + * @param menuMsg The msg id of the menu. */ - constructor(menuMsg) { + constructor(menuMsg: string) { super(menuMsg); - this.searchResultCounter_ = 0; // Add id attribute to the menu so we can associate it with search bar. this.menuElement.setAttribute('id', 'search-results'); @@ -378,120 +343,112 @@ this.menuContainerElement.insertBefore(menuItem, this.menuElement); } - /** @override */ - activate(activateFirstItem) { + override activate(_activateFirstItem: boolean): void { PanelMenu.prototype.activate.call(this, false); if (this.searchBar.value === '') { this.clear(); } - if (this.items_.length > 0) { + if (this.items.length > 0) { this.activateItem(this.activeIndex_); } this.searchBar.focus(); } - /** @override */ - activateItem(index) { + override activateItem(index: number): void { this.resetItemAtActiveIndex(); - if (this.items_.length === 0) { + if (this.items.length === 0) { return; } if (index >= 0) { - index = (index + this.items_.length) % this.items_.length; + index = (index + this.items.length) % this.items.length; } else { if (index >= this.activeIndex_) { index = 0; } else { - index = this.items_.length - 1; + index = this.items.length - 1; } } this.activeIndex_ = index; - const item = this.items_[this.activeIndex_]; - this.searchBar.setAttribute('aria-activedescendant', item.element.id); - item.element.classList.add('active'); + const item = this.items[this.activeIndex_]; + // TODO(b/314203187): Not null asserted, check that this is correct. + this.searchBar.setAttribute('aria-activedescendant', item.element!.id); + item.element!.classList.add('active'); // Scroll item into view, if necessary. Only check y-axis. - const itemBounds = item.element.getBoundingClientRect(); + const itemBounds = item.element!.getBoundingClientRect(); const menuBarBounds = this.menuBarItemElement.getBoundingClientRect(); const topThreshold = menuBarBounds.bottom; const bottomThreshold = window.innerHeight; if (itemBounds.bottom > bottomThreshold) { // Item is too far down, so align to top. - item.element.scrollIntoView(true /* alignToTop */); + item.element!.scrollIntoView(true /* alignToTop */); } else if (itemBounds.top < topThreshold) { // Item is too far up, so align to bottom. - item.element.scrollIntoView(false /* alignToTop */); + item.element!.scrollIntoView(false /* alignToTop */); } } - /** @override */ - addMenuItem( - menuItemTitle, menuItemShortcut, menuItemBraille, gesture, callback, - opt_id) { + override addMenuItem( + menuItemTitle: string, menuItemShortcut: string | undefined, + menuItemBraille: string | undefined, gesture: string | undefined, + callback: MenuCallback, _id?: string): PanelMenuItem { this.searchResultCounter_ += 1; const item = PanelMenu.prototype.addMenuItem.call( this, menuItemTitle, menuItemShortcut, menuItemBraille, gesture, callback, 'result-number-' + this.searchResultCounter_.toString()); // Ensure that item styling is updated on mouse hovers. - item.element.addEventListener('mouseover', event => { - this.resetItemAtActiveIndex(); - }, true); + // TODO(b/314203187): Not null asserted, check that this is correct. + item.element!.addEventListener( + 'mouseover', () => this.resetItemAtActiveIndex(), true); return item; } - /** @override */ - advanceItemBy(delta) { + override advanceItemBy(delta: number): void { this.activateItem(this.activeIndex_ + delta); } - /** - * Clears this menu's contents. - */ - clear() { + /** Clears this menu's contents. */ + clear(): void { this.items_ = []; this.activeIndex_ = -1; while (this.menuElement.children.length !== 0) { - this.menuElement.removeChild(this.menuElement.firstChild); + this.menuElement.removeChild(this.menuElement.firstChild as Node); } this.searchBar.setAttribute('aria-activedescendant', ''); } /** * A convenience method to add a copy of an existing PanelMenuItem. - * @param {!PanelMenuItem} item The item we want to copy. - * @return {!PanelMenuItem} The menu item that was just created. + * @param item The item we want to copy. + * @return The menu item that was just created. */ - copyAndAddMenuItem(item) { + copyAndAddMenuItem(item: PanelMenuItem): PanelMenuItem { return this.addMenuItem( item.menuItemTitle, item.menuItemShortcut, item.menuItemBraille, item.gesture, item.callback); } - /** @override */ - deactivate() { + override deactivate(): void { this.resetItemAtActiveIndex(); PanelMenu.prototype.deactivate.call(this); } - /** - * Resets the item at this.activeIndex_. - */ - resetItemAtActiveIndex() { + /** Resets the item at this.activeIndex_. */ + resetItemAtActiveIndex(): void { // Sanity check. if (this.activeIndex_ < 0 || this.activeIndex_ >= this.items.length) { return; } - this.items_[this.activeIndex_].element.classList.remove('active'); + // TODO(b/314203187): Not null asserted, check that this is correct. + this.items_[this.activeIndex_].element!.classList.remove('active'); } - /** @override */ - scrollToTop() { + override scrollToTop(): void { this.activateItem(0); } - /** @override */ - scrollToBottom() { + override scrollToBottom(): void { this.activateItem(this.items_.length - 1); } }
diff --git a/chrome/browser/resources/privacy_sandbox/privacy_sandbox_dialog_consent_step.ts b/chrome/browser/resources/privacy_sandbox/privacy_sandbox_dialog_consent_step.ts index 77d8dfd..e591f31 100644 --- a/chrome/browser/resources/privacy_sandbox/privacy_sandbox_dialog_consent_step.ts +++ b/chrome/browser/resources/privacy_sandbox/privacy_sandbox_dialog_consent_step.ts
@@ -4,6 +4,7 @@ import 'chrome://resources/cr_elements/cr_shared_style.css.js'; import 'chrome://resources/cr_elements/cr_button/cr_button.js'; +import 'chrome://resources/cr_elements/icons.html.js'; import 'chrome://resources/polymer/v3_0/iron-icon/iron-icon.js'; import './strings.m.js'; import './shared_style.css.js';
diff --git a/chrome/browser/resources/privacy_sandbox/privacy_sandbox_dialog_notice_step.ts b/chrome/browser/resources/privacy_sandbox/privacy_sandbox_dialog_notice_step.ts index df2b7f8f..4b5d689 100644 --- a/chrome/browser/resources/privacy_sandbox/privacy_sandbox_dialog_notice_step.ts +++ b/chrome/browser/resources/privacy_sandbox/privacy_sandbox_dialog_notice_step.ts
@@ -4,6 +4,8 @@ import 'chrome://resources/cr_elements/cr_shared_style.css.js'; import 'chrome://resources/cr_elements/cr_button/cr_button.js'; +import 'chrome://resources/cr_elements/icons.html.js'; +import 'chrome://resources/polymer/v3_0/iron-icon/iron-icon.js'; import './strings.m.js'; import './shared_style.css.js'; import './privacy_sandbox_dialog_learn_more.js';
diff --git a/chrome/browser/resources/privacy_sandbox/privacy_sandbox_notice_dialog_app.ts b/chrome/browser/resources/privacy_sandbox/privacy_sandbox_notice_dialog_app.ts index 52a7de0..2601fd7 100644 --- a/chrome/browser/resources/privacy_sandbox/privacy_sandbox_notice_dialog_app.ts +++ b/chrome/browser/resources/privacy_sandbox/privacy_sandbox_notice_dialog_app.ts
@@ -4,6 +4,8 @@ import 'chrome://resources/cr_elements/cr_shared_style.css.js'; import 'chrome://resources/cr_elements/cr_button/cr_button.js'; +import 'chrome://resources/cr_elements/icons.html.js'; +import 'chrome://resources/polymer/v3_0/iron-icon/iron-icon.js'; import './strings.m.js'; import './shared_style.css.js'; import './privacy_sandbox_dialog_learn_more.js';
diff --git a/chrome/browser/resources/settings/safety_hub/safety_hub_entry_point.html b/chrome/browser/resources/settings/safety_hub/safety_hub_entry_point.html index 6edd36a..6ddb7a0 100644 --- a/chrome/browser/resources/settings/safety_hub/safety_hub_entry_point.html +++ b/chrome/browser/resources/settings/safety_hub/safety_hub_entry_point.html
@@ -1,5 +1,5 @@ <style include="cr-shared-style"> - :host { + #module { padding: 8px 16px; } </style>
diff --git a/chrome/browser/resources/side_panel/read_anything/app.ts b/chrome/browser/resources/side_panel/read_anything/app.ts index b1b590d..01f56e7 100644 --- a/chrome/browser/resources/side_panel/read_anything/app.ts +++ b/chrome/browser/resources/side_panel/read_anything/app.ts
@@ -127,6 +127,19 @@ readAnythingApp.updateSelection(); }; + chrome.readingMode.updateVoicePackStatus = (lang: string, status: string) => { + const readAnythingApp = document.querySelector('read-anything-app'); + assert(readAnythingApp, 'no app'); + readAnythingApp.updateVoicePackStatus(lang, status); + }; + + chrome.readingMode.updateVoicePackStatusFromInstallResponse = + (lang: string, status: string) => { + const readAnythingApp = document.querySelector('read-anything-app'); + assert(readAnythingApp, 'no app'); + readAnythingApp.updateVoicePackStatusFromInstallResponse(lang, status); + }; + chrome.readingMode.updateTheme = () => { const readAnythingApp = document.querySelector('read-anything-app'); assert(readAnythingApp, 'no app'); @@ -158,6 +171,13 @@ }; } +export enum VoicePackStatus { + NOT_INSTALLED, + INSTALLING, + INSTALLED, + ERROR, +} + export enum PauseActionSource { DEFAULT, BUTTON_CLICK, @@ -259,6 +279,8 @@ private localeToDisplayName: {[locale: string]: string}; + private voicePackInstallStatus: {[language: string]: VoicePackStatus} = {}; + // State for speech synthesis paused/play state needs to be tracked explicitly // because there are bugs with window.speechSynthesis.paused and // window.speechSynthesis.speaking on some platforms. @@ -717,6 +739,41 @@ } } + updateVoicePackStatusFromInstallResponse(lang: string, status: string) { + // Do not rely on this status from Install response. It has responded + // "installed" for voices that are not installed. Instead, rely on the + // status from GetVoicePackStatus. + // TODO (b/323159502) Trigger ChromeOS system notification that voice has + // been installed + if (lang && status === 'kInstalled') { + // TODO (b/335472298) Handle voice menu downloading voice spinners. Keep + // in mind that this status is not reliable, and to explicitly check that + // the Natural voices have been installed. + } + } + + updateVoicePackStatus(lang: string, status: string) { + if (!lang) { + return; + } + // The following possible values of "status" is a union of enum values of + // enum InstallationState and enum ErrorCode in read_anything.mojom + let voicePackStatus: VoicePackStatus; + if (status === 'kNotInstalled') { + voicePackStatus = VoicePackStatus.NOT_INSTALLED; + } else if (status === 'kInstalling') { + voicePackStatus = VoicePackStatus.INSTALLING; + } else if (status === 'kInstalled') { + voicePackStatus = VoicePackStatus.INSTALLED; + } else { + // TODO (b/331795122) Handle install errors on the UI + voicePackStatus = VoicePackStatus.ERROR; + } + this.voicePackInstallStatus = + {...this.voicePackInstallStatus, [lang]: voicePackStatus}; + // TODO (b/335472298) Handle voice menu downloading voice spinners + } + private onSpeechRateChange_(event: CustomEvent<{rate: number}>) { this.updateSpeechRate_(event.detail.rate); }
diff --git a/chrome/browser/resources/side_panel/read_anything/read_anything.d.ts b/chrome/browser/resources/side_panel/read_anything/read_anything.d.ts index a01dad5..2c6014d 100644 --- a/chrome/browser/resources/side_panel/read_anything/read_anything.d.ts +++ b/chrome/browser/resources/side_panel/read_anything/read_anything.d.ts
@@ -246,6 +246,13 @@ // toolbar and are ready to consume. function updateTheme(): void; + // Called with the response of sendGetVoicePackInfoRequest() + function updateVoicePackStatus(lang: string, status: string): void; + + // Called with the response of sendInstallVoicePackRequest() + function updateVoicePackStatusFromInstallResponse( + lang: string, status: string): void; + // Ping that the theme choices of the user have been retrieved from // preferences and can be used to set up the page. function restoreSettingsFromPrefs(): void; @@ -298,6 +305,16 @@ function getDisplayNameForLocale(locale: string, displayLocale: string): string; + // Sends an async request to get the status of a Natural voice pack for a + // specific language. The response is sent back to the UI via + // updateVoicePackStatus() + function sendGetVoicePackInfoRequest(language: string): void; + + // Sends an async request to install a Natural voice pack for a + // specific language. The response is sent back to the UI via + // updateVoicePackStatusFromInstallResponse() + function sendInstallVoicePackRequest(language: string): void; + // Log UmaHistogramLong function logMetric(time: number, metricName: string): void; }
diff --git a/chrome/browser/resources/webui_gallery/demos/buttons/buttons_demo.ts b/chrome/browser/resources/webui_gallery/demos/buttons/buttons_demo.ts index 1336e726..4fdb9e8 100644 --- a/chrome/browser/resources/webui_gallery/demos/buttons/buttons_demo.ts +++ b/chrome/browser/resources/webui_gallery/demos/buttons/buttons_demo.ts
@@ -6,7 +6,9 @@ import '//resources/cr_elements/cr_expand_button/cr_expand_button.js'; import '//resources/cr_elements/cr_icon_button/cr_icon_button.js'; import '//resources/cr_elements/icons.html.js'; +import '//resources/cr_elements/icons_lit.html.js'; import '//resources/polymer/v3_0/iron-collapse/iron-collapse.js'; +import '//resources/polymer/v3_0/iron-icon/iron-icon.js'; import '../demo.css.js'; import {PolymerElement} from '//resources/polymer/v3_0/polymer/polymer_bundled.min.js';
diff --git a/chrome/browser/resources/webui_gallery/demos/cr_icons/cr_icons_demo.html b/chrome/browser/resources/webui_gallery/demos/cr_icons/cr_icons_demo.html index 638788a..df05c91 100644 --- a/chrome/browser/resources/webui_gallery/demos/cr_icons/cr_icons_demo.html +++ b/chrome/browser/resources/webui_gallery/demos/cr_icons/cr_icons_demo.html
@@ -16,7 +16,7 @@ justify-content: center; } - .icon iron-icon, + .icon cr-icon, .icon .cr-icon { margin-block-end: 12px; } @@ -30,40 +30,40 @@ } </style> -<h1>cr iron-icons</h1> +<h1>cr cr-icons</h1> <div class="demos"> - <div>Commonly used iron-icons across WebUI built with SVG.</div> + <div>Commonly used cr-icons across WebUI built with SVG.</div> <div class="icons" style$=" --iron-icon-fill-color: [[iconColor_]]; --iron-icon-height: [[iconSize_]]px; --iron-icon-width: [[iconSize_]]px; "> - <template is="dom-repeat" items="[[ironIcons_]]" as="icon"> + <template is="dom-repeat" items="[[icons_]]" as="icon"> <div class="icon"> - <iron-icon icon="[[icon]]"></iron-icon> + <cr-icon icon="[[icon]]"></cr-icon> <div class="label">[[icon]]</div> </div> </template> </div> </div> -<h1>Custom iron-icons</h1> +<h1>Custom cr-icons</h1> <div class="demos"> - <div>An example of a custom iconset for an app using iron-iconset-svg.</div> - <iron-iconset-svg name="desserts"> + <div>An example of a custom iconset for an app using cr-iconset.</div> + <cr-iconset name="desserts"> <svg> <defs> <g id="cake"><path d="M4 22q-.425 0-.712-.288Q3 21.425 3 21v-5q0-.825.587-1.413Q4.175 14 5 14v-4q0-.825.588-1.413Q6.175 8 7 8h4V6.55q-.45-.3-.725-.725Q10 5.4 10 4.8q0-.375.15-.738.15-.362.45-.662L12 2l1.4 1.4q.3.3.45.662.15.363.15.738 0 .6-.275 1.025-.275.425-.725.725V8h4q.825 0 1.413.587Q19 9.175 19 10v4q.825 0 1.413.587Q21 15.175 21 16v5q0 .425-.288.712Q20.425 22 20 22Zm3-8h10v-4H7Zm-2 6h14v-4H5Zm2-6h10Zm-2 6h14Zm14-6H5h14Z"></g> </defs> </svg> - </iron-iconset-svg> + </cr-iconset> <div class="icons" style$=" --iron-icon-fill-color: [[iconColor_]]; --iron-icon-height: [[iconSize_]]px; --iron-icon-width: [[iconSize_]]px; "> <div class="icon"> - <iron-icon icon="desserts:cake"></iron-icon> + <cr-icon icon="desserts:cake"></cr-icon> <div class="label">desserts:cake</div> </div> </div>
diff --git a/chrome/browser/resources/webui_gallery/demos/cr_icons/cr_icons_demo.ts b/chrome/browser/resources/webui_gallery/demos/cr_icons/cr_icons_demo.ts index 67168f9e..0015cb58 100644 --- a/chrome/browser/resources/webui_gallery/demos/cr_icons/cr_icons_demo.ts +++ b/chrome/browser/resources/webui_gallery/demos/cr_icons/cr_icons_demo.ts
@@ -3,13 +3,14 @@ // found in the LICENSE file. import '//resources/cr_elements/cr_icons.css.js'; +import '//resources/cr_elements/cr_icon/cr_icon.js'; +import '//resources/cr_elements/cr_icon/cr_iconset.js'; import '//resources/cr_elements/cr_input/cr_input.js'; -import '//resources/cr_elements/icons.html.js'; -import '//resources/polymer/v3_0/iron-icon/iron-icon.js'; +import '//resources/cr_elements/icons_lit.html.js'; import '../demo.css.js'; +import type {CrIconsetElement} from '//resources/cr_elements/cr_icon/cr_iconset.js'; import {assert} from '//resources/js/assert.js'; -import type {IronIconsetSvgElement} from '//resources/polymer/v3_0/iron-iconset-svg/iron-iconset-svg.js'; import {PolymerElement} from '//resources/polymer/v3_0/polymer/polymer_bundled.min.js'; import {getTemplate} from './cr_icons_demo.html.js'; @@ -28,7 +29,7 @@ crIcons_: Array, iconColor_: String, iconSize_: String, - ironIcons_: Array, + icons_: Array, }; } @@ -43,22 +44,29 @@ ]; private iconColor_: string = '#000000'; private iconSize_: string = '24'; - private ironIcons_: string[] = []; + private icons_: string[] = []; override ready() { super.ready(); + function getIconNames(iconset: CrIconsetElement) { + return Array.from(iconset.querySelectorAll('g[id]')) + .map((el: Element) => { + return `${iconset.name}:${el.id}`; + }); + } + // Iconsets are appended to the document's head element when they are // imported. - const crIconsSet = document.head.querySelector<IronIconsetSvgElement>( - 'iron-iconset-svg[name=cr]'); + const crIconsSet = document.head.querySelector<CrIconsetElement>( + 'cr-iconset[name=cr]'); assert(crIconsSet); - this.push('ironIcons_', ...crIconsSet.getIconNames()); + this.push('icons_', ...getIconNames(crIconsSet)); - const cr20IconsSet = document.head.querySelector<IronIconsetSvgElement>( - 'iron-iconset-svg[name=cr20]'); + const cr20IconsSet = document.head.querySelector<CrIconsetElement>( + 'cr-iconset[name=cr20]'); assert(cr20IconsSet); - this.push('ironIcons_', ...cr20IconsSet.getIconNames()); + this.push('icons_', ...getIconNames(cr20IconsSet)); } private onIconColorInput_(e: Event) {
diff --git a/chrome/browser/search/most_visited_iframe_source_unittest.cc b/chrome/browser/search/most_visited_iframe_source_unittest.cc index 26faf542..94c3ba48 100644 --- a/chrome/browser/search/most_visited_iframe_source_unittest.cc +++ b/chrome/browser/search/most_visited_iframe_source_unittest.cc
@@ -77,7 +77,7 @@ std::string response_string() { if (response_.get()) { - return std::string(base::as_string_view(*response_)); + return std::string(response_->front_as<char>(), response_->size()); } return ""; }
diff --git a/chrome/browser/shortcuts/BUILD.gn b/chrome/browser/shortcuts/BUILD.gn index 578a615..0a55d2c 100644 --- a/chrome/browser/shortcuts/BUILD.gn +++ b/chrome/browser/shortcuts/BUILD.gn
@@ -7,58 +7,10 @@ assert(!is_android) source_set("shortcuts") { - sources = [ - "create_shortcut_for_current_web_contents_task.h", - "document_icon_fetcher.cc", - "document_icon_fetcher.h", - "fetch_icons_from_document_task.cc", - "fetch_icons_from_document_task.h", - "platform_util_mac.h", - "platform_util_mac.mm", - ] + sources = [ "create_shortcut_for_current_web_contents_task.h" ] deps = [ "//base", - "//components/webapps/common", - "//components/webapps/common:mojo_bindings", "//content/public/browser", - "//mojo/public/cpp/bindings", - "//skia", - "//third_party/blink/public/common", - "//ui/gfx", - "//url", - ] -} - -source_set("browser_tests") { - testonly = true - - sources = [ "document_icon_fetcher_browsertest.cc" ] - - defines = [ "HAS_OUT_OF_PROC_TEST_RUNNER" ] - - deps = [ - ":shortcuts", - "//base", - "//chrome/browser/ui:ui", - "//chrome/test:test_support_ui", - "//content/public/browser", - "//skia", - "//testing/gtest:gtest", - "//ui/gfx:test_support", - "//url", - ] -} - -source_set("unit_tests") { - testonly = true - - sources = [ "platform_util_mac_unittest.mm" ] - - deps = [ - ":shortcuts", - "//base", - "//base/test:test_support", - "//testing/gtest", ] }
diff --git a/chrome/browser/shortcuts/document_icon_fetcher.cc b/chrome/browser/shortcuts/document_icon_fetcher.cc deleted file mode 100644 index 9ae1be2..0000000 --- a/chrome/browser/shortcuts/document_icon_fetcher.cc +++ /dev/null
@@ -1,81 +0,0 @@ -// Copyright 2024 The Chromium Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "chrome/browser/shortcuts/document_icon_fetcher.h" - -#include <iterator> -#include <memory> - -#include "base/containers/flat_map.h" -#include "base/functional/bind.h" -#include "base/functional/callback.h" -#include "base/functional/callback_forward.h" -#include "base/location.h" -#include "base/memory/weak_ptr.h" -#include "base/task/sequenced_task_runner.h" -#include "base/types/expected.h" -#include "base/types/pass_key.h" -#include "chrome/browser/shortcuts/fetch_icons_from_document_task.h" -#include "content/public/browser/document_user_data.h" -#include "content/public/browser/web_contents.h" -#include "third_party/skia/include/core/SkBitmap.h" - -namespace shortcuts { - -// static -void DocumentIconFetcher::FetchIcons(content::WebContents& web_contents, - FetchIconsFromDocumentCallback callback) { - DocumentIconFetcher* fetch_manager = - DocumentIconFetcher::GetOrCreateForCurrentDocument( - web_contents.GetPrimaryMainFrame()); - fetch_manager->RunTask(std::move(callback)); -} - -DocumentIconFetcher::~DocumentIconFetcher() { - in_destruction_ = true; - // All of the tasks callbacks call `DocumentIconFetcher::OnTaskComplete` below - // directly. Save them & call them synchronously after the tasks are - // destroyed to prevent map modification during iteration. - std::vector<FetchIconsFromDocumentCallback> pending_callbacks; - for (const auto& [id, task] : fetch_tasks_) { - pending_callbacks.push_back(task->TakeCallback()); - } - fetch_tasks_.clear(); - for (FetchIconsFromDocumentCallback& callback : pending_callbacks) { - CHECK(callback); - // This calls `DocumentIconFetcher::OnTaskComplete` below. - std::move(callback).Run( - base::unexpected(FetchIconsForDocumentError::kDocumentDestroyed)); - } -} - -DOCUMENT_USER_DATA_KEY_IMPL(DocumentIconFetcher); - -DocumentIconFetcher::DocumentIconFetcher(content::RenderFrameHost* rfh) - : content::DocumentUserData<DocumentIconFetcher>(rfh) {} - -void DocumentIconFetcher::RunTask(FetchIconsFromDocumentCallback callback) { - std::unique_ptr<FetchIconsFromDocumentTask> task = - std::make_unique<FetchIconsFromDocumentTask>( - base::PassKey<DocumentIconFetcher>(), render_frame_host()); - int task_id = next_task_id_; - next_task_id_++; - const auto& [iter, _] = fetch_tasks_.emplace(task_id, std::move(task)); - // Note: the callback may be called synchronously. - iter->second->Start(base::BindOnce(&DocumentIconFetcher::OnTaskComplete, - weak_factory_.GetWeakPtr(), task_id, - std::move(callback))); -} - -void DocumentIconFetcher::OnTaskComplete( - int id, - FetchIconsFromDocumentCallback original_callback, - FetchIconsFromDocumentResult result) { - int num_erased = fetch_tasks_.erase(id); - CHECK(num_erased > 0 || in_destruction_); - base::SequencedTaskRunner::GetCurrentDefault()->PostTask( - FROM_HERE, base::BindOnce(std::move(original_callback), result)); -} - -} // namespace shortcuts
diff --git a/chrome/browser/shortcuts/document_icon_fetcher.h b/chrome/browser/shortcuts/document_icon_fetcher.h deleted file mode 100644 index f057bbe..0000000 --- a/chrome/browser/shortcuts/document_icon_fetcher.h +++ /dev/null
@@ -1,56 +0,0 @@ -// Copyright 2024 The Chromium Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef CHROME_BROWSER_SHORTCUTS_DOCUMENT_ICON_FETCHER_H_ -#define CHROME_BROWSER_SHORTCUTS_DOCUMENT_ICON_FETCHER_H_ - -#include <memory> - -#include "base/containers/flat_map.h" -#include "base/functional/callback_forward.h" -#include "base/memory/weak_ptr.h" -#include "chrome/browser/shortcuts/fetch_icons_from_document_task.h" -#include "content/public/browser/document_user_data.h" - -namespace content { -class WebContents; -} - -namespace shortcuts { - -// This object is responsible for fetching all available icons from a given -// document. -class DocumentIconFetcher - : public content::DocumentUserData<DocumentIconFetcher> { - public: - // Fetches all icons for the top level primary frame of the given web - // contents. `callback` will always be called (even on document destruction), - // and always called asynchronously. - static void FetchIcons(content::WebContents& web_contents, - FetchIconsFromDocumentCallback callback); - - ~DocumentIconFetcher() override; - - private: - friend DocumentUserData; - DOCUMENT_USER_DATA_KEY_DECL(); - - explicit DocumentIconFetcher(content::RenderFrameHost* rfh); - - void RunTask(FetchIconsFromDocumentCallback callback); - - void OnTaskComplete(int id, - FetchIconsFromDocumentCallback original_callback, - FetchIconsFromDocumentResult result); - - bool in_destruction_ = false; - int next_task_id_ = 0; - base::flat_map<int, std::unique_ptr<FetchIconsFromDocumentTask>> fetch_tasks_; - - base::WeakPtrFactory<DocumentIconFetcher> weak_factory_{this}; -}; - -} // namespace shortcuts - -#endif // CHROME_BROWSER_SHORTCUTS_DOCUMENT_ICON_FETCHER_H_
diff --git a/chrome/browser/shortcuts/document_icon_fetcher_browsertest.cc b/chrome/browser/shortcuts/document_icon_fetcher_browsertest.cc deleted file mode 100644 index b93d0f8..0000000 --- a/chrome/browser/shortcuts/document_icon_fetcher_browsertest.cc +++ /dev/null
@@ -1,162 +0,0 @@ -// Copyright 2024 The Chromium Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "chrome/browser/shortcuts/document_icon_fetcher.h" - -#include <memory> - -#include "base/base_paths.h" -#include "base/files/file_util.h" -#include "base/path_service.h" -#include "base/test/gmock_expected_support.h" -#include "base/test/test_future.h" -#include "base/types/expected.h" -#include "chrome/browser/shortcuts/fetch_icons_from_document_task.h" -#include "chrome/browser/ui/browser.h" -#include "chrome/browser/ui/browser_commands.h" -#include "chrome/test/base/in_process_browser_test.h" -#include "chrome/test/base/ui_test_utils.h" -#include "content/public/test/browser_test.h" -#include "net/test/embedded_test_server/embedded_test_server.h" -#include "testing/gmock/include/gmock/gmock.h" -#include "testing/gtest/include/gtest/gtest.h" -#include "third_party/skia/include/core/SkBitmap.h" -#include "ui/gfx/codec/png_codec.h" -#include "ui/gfx/color_utils.h" -#include "ui/gfx/test/sk_gmock_support.h" - -namespace shortcuts { -namespace { -constexpr char kPageNoIcons[] = "/shortcuts/no_icons_page.html"; -constexpr char kPageWithIcons[] = "/shortcuts/page_icons.html"; - -class DocumentIconFetcherTest : public InProcessBrowserTest { - public: - void SetUpOnMainThread() override { - default_favicon_server_.AddDefaultHandlers(base::FilePath( - FILE_PATH_LITERAL("chrome/test/data/shortcuts/default_icon_has_two"))); - ASSERT_TRUE(embedded_https_test_server().Start()); - ASSERT_TRUE(default_favicon_server_.Start()); - } - - GURL GetPageWithDefaultFavicon() { - return default_favicon_server_.GetURL("/index.html"); - } - - base::expected<SkBitmap, std::string> LoadImageFromTestFile( - const base::FilePath& relative_path_from_chrome_data) { - base::ScopedAllowBlockingForTesting allow_blocking; - // Load image data from test directory. - base::FilePath chrome_src_dir; - if (!base::PathService::Get(base::DIR_SRC_TEST_DATA_ROOT, - &chrome_src_dir)) { - return base::unexpected("Could not find src directory."); - } - - base::FilePath image_path = - chrome_src_dir.Append(FILE_PATH_LITERAL("chrome/test/data")) - .Append(relative_path_from_chrome_data); - if (!base::PathExists(image_path)) { - return base::unexpected( - base::StrCat({"Path does not exist: ", image_path.AsUTF8Unsafe()})); - } - std::string image_data; - if (!base::ReadFileToString(image_path, &image_data)) { - return base::unexpected("Could not read file."); - } - - SkBitmap image; - if (!gfx::PNGCodec::Decode( - reinterpret_cast<const uint8_t*>(image_data.data()), - image_data.size(), &image)) { - return base::unexpected("Could not decode file."); - } - return image; - } - - private: - net::EmbeddedTestServer default_favicon_server_{ - net::EmbeddedTestServer::TYPE_HTTPS}; -}; - -IN_PROC_BROWSER_TEST_F(DocumentIconFetcherTest, PageNoIcons) { - ASSERT_TRUE(ui_test_utils::NavigateToURL( - browser(), embedded_https_test_server().GetURL(kPageNoIcons))); - - base::test::TestFuture<FetchIconsFromDocumentResult> future; - DocumentIconFetcher::FetchIcons( - *browser()->tab_strip_model()->GetActiveWebContents(), - future.GetCallback()); - ASSERT_TRUE(future.Wait()); - EXPECT_TRUE(future.Get().has_value()); - EXPECT_THAT(future.Get().value(), testing::IsEmpty()); -} - -IN_PROC_BROWSER_TEST_F(DocumentIconFetcherTest, IconMetadata) { - ASSERT_TRUE(ui_test_utils::NavigateToURL( - browser(), embedded_https_test_server().GetURL(kPageWithIcons))); - - base::test::TestFuture<FetchIconsFromDocumentResult> future; - - DocumentIconFetcher::FetchIcons( - *browser()->tab_strip_model()->GetActiveWebContents(), - future.GetCallback()); - ASSERT_TRUE(future.Wait()); - ASSERT_TRUE(future.Get().has_value()); - std::vector<SkBitmap> images = future.Get().value(); - - SkBitmap expected_green; - ASSERT_OK_AND_ASSIGN(expected_green, - LoadImageFromTestFile(base::FilePath( - FILE_PATH_LITERAL("shortcuts/green.png")))); - SkBitmap expected_noise; - ASSERT_OK_AND_ASSIGN(expected_noise, - LoadImageFromTestFile(base::FilePath( - FILE_PATH_LITERAL("shortcuts/noise.png")))); - EXPECT_THAT(images, testing::UnorderedElementsAre( - gfx::test::EqualsBitmap(expected_green), - gfx::test::EqualsBitmap(expected_noise))); -} - -IN_PROC_BROWSER_TEST_F(DocumentIconFetcherTest, DefaultFavicon) { - ASSERT_TRUE( - ui_test_utils::NavigateToURL(browser(), GetPageWithDefaultFavicon())); - - base::test::TestFuture<FetchIconsFromDocumentResult> future; - DocumentIconFetcher::FetchIcons( - *browser()->tab_strip_model()->GetActiveWebContents(), - future.GetCallback()); - ASSERT_TRUE(future.Wait()); - EXPECT_TRUE(future.Get().has_value()); - std::vector<SkBitmap> images = future.Get().value(); - SkBitmap expected_16; - ASSERT_OK_AND_ASSIGN( - expected_16, LoadImageFromTestFile(base::FilePath(FILE_PATH_LITERAL( - "shortcuts/default_icon_has_two/16_favicon_part.png")))); - SkBitmap expected_32; - ASSERT_OK_AND_ASSIGN( - expected_32, LoadImageFromTestFile(base::FilePath(FILE_PATH_LITERAL( - "shortcuts/default_icon_has_two/32_favicon_part.png")))); - EXPECT_THAT(images, testing::UnorderedElementsAre( - gfx::test::EqualsBitmap(expected_16), - gfx::test::EqualsBitmap(expected_32))); -} - -IN_PROC_BROWSER_TEST_F(DocumentIconFetcherTest, WebContentsClosed) { - base::test::TestFuture<FetchIconsFromDocumentResult> future; - chrome::NewTab(browser()); - ASSERT_TRUE(ui_test_utils::NavigateToURL( - browser(), embedded_https_test_server().GetURL(kPageWithIcons))); - DocumentIconFetcher::FetchIcons( - *browser()->tab_strip_model()->GetActiveWebContents(), - future.GetCallback()); - chrome::CloseTab(browser()); - ASSERT_TRUE(future.Wait()); - EXPECT_THAT( - future.Get(), - base::test::ErrorIs(FetchIconsForDocumentError::kDocumentDestroyed)); -} - -} // namespace -} // namespace shortcuts
diff --git a/chrome/browser/shortcuts/fetch_icons_from_document_task.cc b/chrome/browser/shortcuts/fetch_icons_from_document_task.cc deleted file mode 100644 index 653a96e..0000000 --- a/chrome/browser/shortcuts/fetch_icons_from_document_task.cc +++ /dev/null
@@ -1,124 +0,0 @@ -// Copyright 2024 The Chromium Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "chrome/browser/shortcuts/fetch_icons_from_document_task.h" - -#include "base/functional/bind.h" -#include "base/functional/callback.h" -#include "base/location.h" -#include "base/memory/raw_ref.h" -#include "base/types/expected.h" -#include "components/webapps/common/web_page_metadata.mojom.h" -#include "components/webapps/common/web_page_metadata_agent.mojom.h" -#include "content/public/browser/render_frame_host.h" -#include "content/public/browser/web_contents.h" -#include "mojo/public/cpp/bindings/associated_remote.h" -#include "third_party/blink/public/common/associated_interfaces/associated_interface_provider.h" -#include "third_party/blink/public/mojom/favicon/favicon_url.mojom.h" -#include "third_party/skia/include/core/SkBitmap.h" -#include "ui/gfx/geometry/size.h" - -namespace shortcuts { - -FetchIconsFromDocumentTask::FetchIconsFromDocumentTask( - base::PassKey<DocumentIconFetcher>, - content::RenderFrameHost& rfh) - : frame_host_(rfh) { - CHECK(frame_host_->IsInPrimaryMainFrame()); -} - -FetchIconsFromDocumentTask::~FetchIconsFromDocumentTask() = default; - -void FetchIconsFromDocumentTask::Start( - FetchIconsFromDocumentCallback callback) { - callback_ = std::move(callback); - mojo::AssociatedRemote<webapps::mojom::WebPageMetadataAgent> metadata_agent; - frame_host_->GetRemoteAssociatedInterfaces()->GetInterface(&metadata_agent); - - // Set the error handler so that we can run abort this task if the WebContents - // or the RenderFrameHost are destroyed and the connection to - // ChromeRenderFrame is lost. - metadata_agent.set_disconnect_handler( - base::BindOnce(&FetchIconsFromDocumentTask::OnMetadataFetchError, - weak_factory_.GetWeakPtr())); - - // Bind the InterfacePtr into the callback so that it's kept alive - // until there's either a connection error or a response. - auto* web_page_metadata_proxy = metadata_agent.get(); - web_page_metadata_proxy->GetWebPageMetadata( - base::BindOnce(&FetchIconsFromDocumentTask::OnWebPageMetadataObtained, - weak_factory_.GetWeakPtr(), std::move(metadata_agent))); -} - -FetchIconsFromDocumentCallback FetchIconsFromDocumentTask::TakeCallback() { - return std::move(callback_); -} - -void FetchIconsFromDocumentTask::OnWebPageMetadataObtained( - mojo::AssociatedRemote<webapps::mojom::WebPageMetadataAgent> metadata_agent, - webapps::mojom::WebPageMetadataPtr web_page_metadata) { - metadata_fetch_complete_ = true; - std::vector<GURL> icons; - for (const auto& icon_info : web_page_metadata->icons) { - icons.push_back(icon_info->url); - } - for (const auto& favicon_url : frame_host_->FaviconURLs()) { - icons.push_back(favicon_url->icon_url); - } - - // Eliminate duplicates. - base::flat_set<GURL> icon_set(std::move(icons)); - num_pending_image_requests_ = icon_set.size(); - - content::WebContents* web_contents = - content::WebContents::FromRenderFrameHost(&frame_host_.get()); - for (const GURL& url : icon_set) { - web_contents->DownloadImageInFrame( - frame_host_->GetGlobalId(), url, /*is_favicon=*/true, - /*preferred_size=*/gfx::Size(), - /*max_bitmap_size=*/0, /*bypass_cache=*/false, - base::BindOnce(&FetchIconsFromDocumentTask::DidDownloadFavicon, - weak_factory_.GetWeakPtr())); - } - MaybeCompleteImageDownloadAndSelfDestruct(); -} - -void FetchIconsFromDocumentTask::DidDownloadFavicon( - int id, - int http_status_code, - const GURL& image_url, - const std::vector<SkBitmap>& bitmaps, - const std::vector<gfx::Size>& sizes) { - icons_.reserve(icons_.size() + bitmaps.size()); - for (const SkBitmap& bitmap : bitmaps) { - if (bitmap.drawsNothing()) { - continue; - } - icons_.push_back(bitmap); - } - --num_pending_image_requests_; - MaybeCompleteImageDownloadAndSelfDestruct(); -} - -void FetchIconsFromDocumentTask::MaybeCompleteImageDownloadAndSelfDestruct() { - if (!metadata_fetch_complete_ || num_pending_image_requests_ > 0) { - return; - } - OnCompleteSelfDestruct(base::ok(std::move(icons_))); -} - -void FetchIconsFromDocumentTask::OnCompleteSelfDestruct(Result result, - base::Location here) { - if (!callback_) { - return; - } - std::move(callback_).Run(std::move(result)); -} - -void FetchIconsFromDocumentTask::OnMetadataFetchError() { - OnCompleteSelfDestruct( - base::unexpected(FetchIconsForDocumentError::kMetadataFetchFailed)); -} - -} // namespace shortcuts
diff --git a/chrome/browser/shortcuts/fetch_icons_from_document_task.h b/chrome/browser/shortcuts/fetch_icons_from_document_task.h deleted file mode 100644 index 7ef5b9a..0000000 --- a/chrome/browser/shortcuts/fetch_icons_from_document_task.h +++ /dev/null
@@ -1,101 +0,0 @@ -// Copyright 2024 The Chromium Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef CHROME_BROWSER_SHORTCUTS_FETCH_ICONS_FROM_DOCUMENT_TASK_H_ -#define CHROME_BROWSER_SHORTCUTS_FETCH_ICONS_FROM_DOCUMENT_TASK_H_ - -#include <vector> - -#include "base/functional/callback_forward.h" -#include "base/memory/raw_ref.h" -#include "base/memory/weak_ptr.h" -#include "base/types/expected.h" -#include "base/types/pass_key.h" -#include "base/values.h" -#include "components/webapps/common/web_page_metadata.mojom-forward.h" -#include "components/webapps/common/web_page_metadata_agent.mojom-forward.h" -#include "mojo/public/cpp/bindings/associated_remote.h" - -class SkBitmap; -class GURL; - -namespace base { -class Location; -} - -namespace content { -class RenderFrameHost; -} - -namespace gfx { -class Size; -} - -namespace shortcuts { -class DocumentIconFetcher; - -enum class FetchIconsForDocumentError { - kDocumentDestroyed, - kMetadataFetchFailed -}; -using FetchIconsFromDocumentResult = - base::expected<std::vector<SkBitmap>, FetchIconsForDocumentError>; -using FetchIconsFromDocumentCallback = - base::OnceCallback<void(FetchIconsFromDocumentResult)>; - -// Fetch all icons for the current RenderFrameHost document. -// Invariants: -// - The `frame_host_` provided to this class must be alive for the lifetime of -// this class. -// - The `callback` may be called synchronously. -// - The `callback` will be NOT be called on destruction. To handle that, the -// user -// of this class must use the `TakeCallback()` method to extract the callback. -class FetchIconsFromDocumentTask { - public: - using Result = FetchIconsFromDocumentResult; - - // `rfh` must be the primary main frame. - FetchIconsFromDocumentTask(base::PassKey<DocumentIconFetcher>, - content::RenderFrameHost& rfh); - ~FetchIconsFromDocumentTask(); - - // The `callback` may be called synchronously. - void Start(FetchIconsFromDocumentCallback callback); - - FetchIconsFromDocumentCallback TakeCallback(); - - private: - void OnWebPageMetadataObtained( - mojo::AssociatedRemote<webapps::mojom::WebPageMetadataAgent> - metadata_agent, - webapps::mojom::WebPageMetadataPtr web_page_metadata); - - void DownloadIcon(const GURL& url); - - void DidDownloadFavicon(int id, - int http_status_code, - const GURL& image_url, - const std::vector<SkBitmap>& bitmaps, - const std::vector<gfx::Size>& sizes); - - void MaybeCompleteImageDownloadAndSelfDestruct(); - - void OnCompleteSelfDestruct(Result result, base::Location here = FROM_HERE); - - void OnMetadataFetchError(); - - base::raw_ref<content::RenderFrameHost> frame_host_; - FetchIconsFromDocumentCallback callback_; - - bool metadata_fetch_complete_ = false; - int num_pending_image_requests_ = 0; - std::vector<SkBitmap> icons_; - - base::WeakPtrFactory<FetchIconsFromDocumentTask> weak_factory_{this}; -}; - -} // namespace shortcuts - -#endif // CHROME_BROWSER_SHORTCUTS_FETCH_ICONS_FROM_DOCUMENT_TASK_H_
diff --git a/chrome/browser/shortcuts/platform_util_mac.h b/chrome/browser/shortcuts/platform_util_mac.h deleted file mode 100644 index 21a3b69..0000000 --- a/chrome/browser/shortcuts/platform_util_mac.h +++ /dev/null
@@ -1,39 +0,0 @@ -// Copyright 2024 The Chromium Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef CHROME_BROWSER_SHORTCUTS_PLATFORM_UTIL_MAC_H_ -#define CHROME_BROWSER_SHORTCUTS_PLATFORM_UTIL_MAC_H_ - -#include "base/functional/callback_forward.h" - -@class NSError; -@class NSImage; -@class NSURL; - -namespace base { -class FilePath; -} - -namespace shortcuts { - -// Wrapper around NSWorkspace setIcon:forFile: that can be called from any -// thread. While the underlying NSWorkspace method can also be called from any -// thread, it is not reentrancy safe (i.e. multiple calls to it need to be -// sequenced). This wrapper takes care of the sequencing needed. The `callback` -// will be called on the calling sequence. -void SetIconForFile(NSImage* image, - const base::FilePath& file, - base::OnceCallback<void(bool)> callback); - -// Wrapper around NSWorkspace setDefaultApplicationAtURL:toOpenFileAtURL:. The -// NSWorkspace method only exists on macOS 12.0 and newer; this method polyfills -// its implementation for older macOS versions. -void SetDefaultApplicationToOpenFile( - NSURL* file_url, - NSURL* application_url, - base::OnceCallback<void(NSError*)> callback); - -} // namespace shortcuts - -#endif // CHROME_BROWSER_SHORTCUTS_PLATFORM_UTIL_MAC_H_
diff --git a/chrome/browser/shortcuts/platform_util_mac.mm b/chrome/browser/shortcuts/platform_util_mac.mm deleted file mode 100644 index 11d4416..0000000 --- a/chrome/browser/shortcuts/platform_util_mac.mm +++ /dev/null
@@ -1,66 +0,0 @@ -// Copyright 2024 The Chromium Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "chrome/browser/shortcuts/platform_util_mac.h" - -#import <AppKit/AppKit.h> - -#import "base/apple/foundation_util.h" -#include "base/files/file_path.h" -#include "base/functional/callback.h" -#include "base/functional/callback_helpers.h" -#include "base/task/bind_post_task.h" -#include "base/task/lazy_thread_pool_task_runner.h" -#include "base/task/sequenced_task_runner.h" -#include "base/task/task_traits.h" - -namespace shortcuts { - -namespace { -base::LazyThreadPoolSequencedTaskRunner g_set_icon_task_runner = - LAZY_THREAD_POOL_SEQUENCED_TASK_RUNNER_INITIALIZER( - base::TaskTraits({base::MayBlock(), base::TaskPriority::USER_VISIBLE, - base::TaskShutdownBehavior::BLOCK_SHUTDOWN})); -} // namespace - -void SetIconForFile(NSImage* image, - const base::FilePath& file, - base::OnceCallback<void(bool)> callback) { - g_set_icon_task_runner.Get()->PostTaskAndReplyWithResult( - FROM_HERE, - base::BindOnce( - [](NSImage* image, const base::FilePath& file) { - return [NSWorkspace.sharedWorkspace - setIcon:image - forFile:base::apple::FilePathToNSString(file) - options:NSExcludeQuickDrawElementsIconCreationOption]; - }, - image, file), - std::move(callback)); -} - -void SetDefaultApplicationToOpenFile( - NSURL* file_url, - NSURL* application_url, - base::OnceCallback<void(NSError*)> callback) { - if (@available(macOS 12.0, *)) { - [NSWorkspace.sharedWorkspace - setDefaultApplicationAtURL:application_url - toOpenFileAtURL:file_url - completionHandler:base::CallbackToBlock( - base::BindPostTaskToCurrentDefault( - std::move(callback)))]; - } else { - // Older macOS versions don't have a nice API for this, but doing what - // setDefaultApplicationAtURL:toOpenFileAtURL: does directly seems to work - // just fine on those versions as well, so that is what this branch does. - NSError* error = nil; - [file_url setResourceValue:application_url - forKey:@"_NSURLStrongBindingKey" - error:&error]; - base::BindPostTaskToCurrentDefault(std::move(callback)).Run(error); - } -} - -} // namespace shortcuts
diff --git a/chrome/browser/shortcuts/platform_util_mac_unittest.mm b/chrome/browser/shortcuts/platform_util_mac_unittest.mm deleted file mode 100644 index 5658a1d..0000000 --- a/chrome/browser/shortcuts/platform_util_mac_unittest.mm +++ /dev/null
@@ -1,90 +0,0 @@ -// Copyright 2024 The Chromium Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "chrome/browser/shortcuts/platform_util_mac.h" - -#import <AppKit/AppKit.h> - -#import "base/apple/foundation_util.h" -#include "base/files/scoped_temp_file.h" -#include "base/test/task_environment.h" -#include "base/test/test_future.h" -#include "testing/gtest/include/gtest/gtest.h" -#import "testing/gtest_mac.h" - -namespace shortcuts { - -namespace { -NSImage* GetNSImageForColor(NSColor* color) { - return [NSImage imageWithSize:NSMakeSize(32, 32) - flipped:NO - drawingHandler:^(NSRect rect) { - [color set]; - NSRectFill(rect); - return YES; - }]; -} - -NSColor* ColorFromImage(NSImage* image) { - NSBitmapImageRep* bitmap = - [[NSBitmapImageRep alloc] initWithData:image.TIFFRepresentation]; - NSColor* color = [bitmap colorAtX:0 y:0]; - return color; -} -} // namespace - -TEST(ShortcutsPlatformUtilMacTest, SetIconForFile) { - base::test::TaskEnvironment task_environment; - - base::ScopedTempFile test_file1; - ASSERT_TRUE(test_file1.Create()); - base::ScopedTempFile test_file2; - ASSERT_TRUE(test_file2.Create()); - - base::test::TestFuture<bool> result1; - SetIconForFile(GetNSImageForColor(NSColor.redColor), test_file1.path(), - result1.GetCallback()); - base::test::TestFuture<bool> result2; - SetIconForFile(GetNSImageForColor(NSColor.blueColor), test_file2.path(), - result2.GetCallback()); - - EXPECT_TRUE(result1.Get()); - EXPECT_TRUE(result2.Get()); - - NSImage* image1 = [NSWorkspace.sharedWorkspace - iconForFile:base::apple::FilePathToNSString(test_file1.path())]; - NSColor* color1 = ColorFromImage(image1); - EXPECT_EQ(1.0f, color1.redComponent); - EXPECT_EQ(0.0f, color1.greenComponent); - EXPECT_EQ(0.0f, color1.blueComponent); - NSImage* image2 = [NSWorkspace.sharedWorkspace - iconForFile:base::apple::FilePathToNSString(test_file2.path())]; - NSColor* color2 = ColorFromImage(image2); - EXPECT_EQ(0.0f, color2.redComponent); - EXPECT_EQ(0.0f, color2.greenComponent); - EXPECT_EQ(1.0f, color2.blueComponent); -} - -TEST(ShortcutsPlatformUtilMacTest, SetDefaultApplicationToOpenFile) { - base::test::TaskEnvironment task_environment; - - base::ScopedTempFile test_file; - ASSERT_TRUE(test_file.Create()); - NSURL* file_url = base::apple::FilePathToNSURL(test_file.path()); - - // This test needs an arbitrary (but valid) url for an application. Safari - // always exists, so is as good as any app to use. - NSURL* app_url = [NSWorkspace.sharedWorkspace - URLForApplicationWithBundleIdentifier:@"com.apple.Safari"]; - - base::test::TestFuture<NSError*> result; - SetDefaultApplicationToOpenFile(file_url, app_url, result.GetCallback()); - EXPECT_FALSE(result.Get()); - - NSURL* got_app_url = - [NSWorkspace.sharedWorkspace URLForApplicationToOpenURL:file_url]; - EXPECT_NSEQ(app_url, got_app_url); -} - -} // namespace shortcuts
diff --git a/chrome/browser/support_tool/screenshot_data_collector_unittest.cc b/chrome/browser/support_tool/screenshot_data_collector_unittest.cc index 45c1d56c..c032212 100644 --- a/chrome/browser/support_tool/screenshot_data_collector_unittest.cc +++ b/chrome/browser/support_tool/screenshot_data_collector_unittest.cc
@@ -109,5 +109,5 @@ ReadFileContents(output_dir.Append(FILE_PATH_LITERAL("screenshot")) .AddExtension(FILE_PATH_LITERAL(".jpg")), output_file_contents); - EXPECT_EQ(output_file_contents, jpeg_data_->as_string()); + EXPECT_EQ(output_file_contents, jpeg_data_->data()); }
diff --git a/chrome/browser/themes/browser_theme_pack.cc b/chrome/browser/themes/browser_theme_pack.cc index 3535a0b..4420a8f 100644 --- a/chrome/browser/themes/browser_theme_pack.cc +++ b/chrome/browser/themes/browser_theme_pack.cc
@@ -437,8 +437,9 @@ PngMap::const_iterator exact_png_it = png_map_.find(scale_factor); if (exact_png_it != png_map_.end()) { SkBitmap bitmap; - if (!gfx::PNGCodec::Decode(exact_png_it->second->data(), - exact_png_it->second->size(), &bitmap)) { + if (!gfx::PNGCodec::Decode(exact_png_it->second->front(), + exact_png_it->second->size(), + &bitmap)) { NOTREACHED(); return gfx::ImageSkiaRep(); } @@ -468,7 +469,7 @@ bitmap_map_.find(available_scale_factor); if (available_bitmap_it == bitmap_map_.end()) { SkBitmap available_bitmap; - if (!gfx::PNGCodec::Decode(available_png_it->second->data(), + if (!gfx::PNGCodec::Decode(available_png_it->second->front(), available_png_it->second->size(), &available_bitmap)) { NOTREACHED(); @@ -1545,7 +1546,7 @@ image_memory_[raw_id] = raw_data; } else { SkBitmap bitmap; - if (gfx::PNGCodec::Decode(raw_data->data(), raw_data->size(), + if (gfx::PNGCodec::Decode(raw_data->front(), raw_data->size(), &bitmap)) { image_skia.AddRepresentation(gfx::ImageSkiaRep( bitmap, ui::GetScaleForResourceScaleFactor(scale_factor))); @@ -1983,7 +1984,8 @@ void BrowserThemePack::AddRawImagesTo(const RawImages& images, RawDataForWriting* out) const { for (const auto& pair : images) { - (*out)[pair.first] = base::as_string_view(*pair.second); + (*out)[pair.first] = + std::string_view(pair.second->front_as<char>(), pair.second->size()); } } @@ -2074,7 +2076,8 @@ int available_raw_id = GetRawIDByPersistentID(prs_id, available_scale_factor); RawImages::const_iterator it = image_memory_.find(available_raw_id); SkBitmap available_bitmap; - if (!gfx::PNGCodec::Decode(it->second->data(), it->second->size(), + if (!gfx::PNGCodec::Decode(it->second->front(), + it->second->size(), &available_bitmap)) { NOTREACHED() << "Unable to decode theme image for prs_id=" << prs_id << " for scale_factor=" << available_scale_factor;
diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn index c8592dd..00911d7 100644 --- a/chrome/browser/ui/BUILD.gn +++ b/chrome/browser/ui/BUILD.gn
@@ -4488,8 +4488,6 @@ "cocoa/applescript/tab_applescript.mm", "cocoa/applescript/window_applescript.h", "cocoa/applescript/window_applescript.mm", - "cocoa/apps/app_shim_menu_controller_mac.h", - "cocoa/apps/app_shim_menu_controller_mac.mm", "cocoa/apps/quit_with_apps_controller_mac.cc", "cocoa/apps/quit_with_apps_controller_mac.h", "cocoa/apps/titlebar_background_view.h",
diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/AutocompleteMediator.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/AutocompleteMediator.java index f6bf81e..44bec2b 100644 --- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/AutocompleteMediator.java +++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/AutocompleteMediator.java
@@ -6,6 +6,7 @@ import android.content.Context; import android.content.Intent; +import android.content.res.Configuration; import android.content.res.Resources; import android.os.Handler; import android.os.SystemClock; @@ -20,7 +21,9 @@ import androidx.annotation.VisibleForTesting; import org.chromium.base.ActivityState; +import org.chromium.base.ApiCompatibilityUtils; import org.chromium.base.Callback; +import org.chromium.base.ContextUtils; import org.chromium.base.ThreadUtils; import org.chromium.base.TraceEvent; import org.chromium.base.metrics.RecordUserAction; @@ -852,13 +855,22 @@ && !mListPropertyModel.get(SuggestionListProperties.VISIBLE)) { mDelegate.setKeyboardVisibility(true, false); updateOmniboxSuggestionsVisibility(true); - mAnimationDriver.onShowAnimationAboutToStart(); + if (isKeyboardShowAnimationAboutToStart()) { + mAnimationDriver.onShowAnimationAboutToStart(); + } } mListPropertyModel.set(SuggestionListProperties.LIST_IS_FINAL, isFinal); measureSuggestionRequestToUiModelTime(isFinal); } + private boolean isKeyboardShowAnimationAboutToStart() { + return mContext.getResources().getConfiguration().keyboard == Configuration.KEYBOARD_NOKEYS + // IME animation dispatch is broken in multi-window pre API level 34. + && !ApiCompatibilityUtils.isInMultiWindowMode( + ContextUtils.activityFromContext(mContext)); + } + /** * Load the url corresponding to the typed omnibox text. *
diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/AutocompleteMediatorUnitTest.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/AutocompleteMediatorUnitTest.java index 304fa45..57b5f47c 100644 --- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/AutocompleteMediatorUnitTest.java +++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/AutocompleteMediatorUnitTest.java
@@ -23,6 +23,8 @@ import static org.mockito.Mockito.verifyNoMoreInteractions; import static org.mockito.Mockito.when; +import android.app.Activity; +import android.content.res.Configuration; import android.os.Handler; import android.util.SparseArray; import android.view.View; @@ -41,6 +43,8 @@ import org.mockito.Mock; import org.mockito.junit.MockitoJUnit; import org.mockito.junit.MockitoRule; +import org.robolectric.Robolectric; +import org.robolectric.Shadows; import org.robolectric.annotation.Config; import org.robolectric.annotation.Implementation; import org.robolectric.annotation.Implements; @@ -49,6 +53,7 @@ import org.chromium.base.ActivityState; import org.chromium.base.ContextUtils; +import org.chromium.base.MathUtils; import org.chromium.base.metrics.RecordHistogram; import org.chromium.base.supplier.ObservableSupplierImpl; import org.chromium.base.test.BaseRobolectricTestRunner; @@ -72,6 +77,8 @@ import org.chromium.chrome.browser.tabmodel.TabModel; import org.chromium.chrome.browser.tabmodel.TabModelUtils; import org.chromium.chrome.browser.tabmodel.TabWindowManager; +import org.chromium.components.browser_ui.widget.InsetObserver; +import org.chromium.components.browser_ui.widget.InsetObserverSupplier; import org.chromium.components.favicon.LargeIconBridge; import org.chromium.components.favicon.LargeIconBridgeJni; import org.chromium.components.metrics.OmniboxEventProtos.OmniboxEventProto.PageClassification; @@ -140,7 +147,7 @@ private @Mock ActivityLifecycleDispatcher mActivityLifecycleDispatcher; private @Mock WindowAndroid mWindowAndroid; private @Mock OmniboxSuggestionsDropdownEmbedder mEmbedder; - + private @Mock InsetObserver mInsetObserver; private @Captor ArgumentCaptor<OmniboxLoadUrlParams> mOmniboxLoadUrlParamsCaptor; private PropertyModel mListModel; @@ -149,6 +156,7 @@ private AutocompleteResult mAutocompleteResult; private ModelList mSuggestionModels; private ObservableSupplierImpl<TabWindowManager> mTabWindowManagerSupplier; + private Activity mActivity = Robolectric.buildActivity(Activity.class).setup().get(); // TemplateUrlServiceFactory shadow that can return <null> TemplateUrlService. @Implements(TemplateUrlServiceFactory.class) @@ -201,10 +209,11 @@ mListModel.set(SuggestionListProperties.SUGGESTION_MODELS, mSuggestionModels); mTabWindowManagerSupplier = new ObservableSupplierImpl<>(); + InsetObserverSupplier.setInstanceForTesting(mInsetObserver); mMediator = new AutocompleteMediator( - ContextUtils.getApplicationContext(), + mActivity, mAutocompleteDelegate, mTextStateProvider, mListModel, @@ -426,6 +435,39 @@ @Test @SmallTest + @EnableFeatures(ChromeFeatureList.ANIMATE_SUGGESTIONS_LIST_APPEARANCE) + public void updateSuggestionsList_triggersAnimation() { + mListModel.set(SuggestionListProperties.ALPHA, 1.0f); + mMediator.onNativeInitialized(); + + mMediator.onSuggestionsReceived( + AutocompleteResult.fromCache(mSuggestionsList, null), "", true); + assertEquals(mListModel.get(SuggestionListProperties.ALPHA), 0.0f, MathUtils.EPSILON); + } + + @Test + @SmallTest + @EnableFeatures(ChromeFeatureList.ANIMATE_SUGGESTIONS_LIST_APPEARANCE) + public void updateSuggestionsList_doesNotTriggerAnimationWhenSystemAnimationNotRun() { + mListModel.set(SuggestionListProperties.ALPHA, 1.0f); + mMediator.onNativeInitialized(); + + mActivity.getResources().getConfiguration().keyboard = Configuration.KEYBOARD_QWERTY; + mMediator.onSuggestionsReceived( + AutocompleteResult.fromCache(mSuggestionsList, null), "", true); + assertEquals(mListModel.get(SuggestionListProperties.ALPHA), 1.0f, MathUtils.EPSILON); + + mActivity.getResources().getConfiguration().keyboard = Configuration.KEYBOARD_NOKEYS; + mListModel.set(SuggestionListProperties.VISIBLE, false); + Shadows.shadowOf(mActivity).setInMultiWindowMode(true); + + mMediator.onSuggestionsReceived( + AutocompleteResult.fromCache(mSuggestionsList, null), "", true); + assertEquals(mListModel.get(SuggestionListProperties.ALPHA), 1.0f, MathUtils.EPSILON); + } + + @Test + @SmallTest public void onTextChanged_emptyTextTriggersZeroSuggest() { mMediator.setAutocompleteProfile(mProfile);
diff --git a/chrome/browser/ui/ash/picker/picker_client_impl.cc b/chrome/browser/ui/ash/picker/picker_client_impl.cc index a1b9b3c..a4b19aef 100644 --- a/chrome/browser/ui/ash/picker/picker_client_impl.cc +++ b/chrome/browser/ui/ash/picker/picker_client_impl.cc
@@ -43,6 +43,7 @@ #include "chrome/browser/ui/webui/ash/emoji/emoji_picker.mojom-forward.h" #include "chrome/browser/ui/webui/ash/emoji/emoji_picker.mojom-shared.h" #include "chromeos/ash/components/browser_context_helper/browser_context_helper.h" +#include "chromeos/constants/chromeos_features.h" #include "components/user_manager/user.h" #include "components/user_manager/user_manager.h" #include "content/public/browser/storage_partition.h" @@ -155,6 +156,10 @@ } ash::input_method::EditorMediator* GetEditorMediator(Profile* profile) { + if (!chromeos::features::IsOrcaEnabled()) { + return nullptr; + } + return ash::input_method::EditorMediatorFactory::GetInstance()->GetForProfile( profile); }
diff --git a/chrome/browser/ui/ash/picker/picker_client_impl_unittest.cc b/chrome/browser/ui/ash/picker/picker_client_impl_unittest.cc index aa2796c9..f4497d6 100644 --- a/chrome/browser/ui/ash/picker/picker_client_impl_unittest.cc +++ b/chrome/browser/ui/ash/picker/picker_client_impl_unittest.cc
@@ -12,6 +12,7 @@ #include "ash/picker/picker_controller.h" #include "base/files/file_util.h" #include "base/functional/bind.h" +#include "base/test/scoped_feature_list.h" #include "base/test/test_future.h" #include "chrome/browser/ash/drive/drive_integration_service.h" #include "chrome/browser/ash/drive/drivefs_test_support.h" @@ -30,6 +31,7 @@ #include "chromeos/ash/components/disks/disk_mount_manager.h" #include "chromeos/ash/components/disks/fake_disk_mount_manager.h" #include "chromeos/ash/components/drivefs/fake_drivefs.h" +#include "chromeos/constants/chromeos_features.h" #include "components/bookmarks/browser/bookmark_model.h" #include "components/bookmarks/test/bookmark_test_helpers.h" #include "components/history/core/browser/history_database_params.h" @@ -486,7 +488,18 @@ }; TEST_F(PickerClientImplEditorTest, + CacheEditorContextReturnsNullCallbackWhenEditorFlagDisabled) { + ash::PickerController controller; + PickerClientImpl client(&controller, user_manager()); + GetEditorMediator(profile()).OverrideEditorModeForTesting( + ash::input_method::EditorMode::kBlocked); + + EXPECT_TRUE(client.CacheEditorContext().is_null()); +} + +TEST_F(PickerClientImplEditorTest, CacheEditorContextReturnsNullCallbackWhenBlocked) { + base::test::ScopedFeatureList features(chromeos::features::kOrcaDogfood); ash::PickerController controller; PickerClientImpl client(&controller, user_manager()); GetEditorMediator(profile()).OverrideEditorModeForTesting( @@ -497,6 +510,7 @@ TEST_F(PickerClientImplEditorTest, CacheEditorContextReturnsCallbackWhenNotBlocked) { + base::test::ScopedFeatureList features(chromeos::features::kOrcaDogfood); ash::PickerController controller; PickerClientImpl client(&controller, user_manager()); GetEditorMediator(profile()).OverrideEditorModeForTesting( @@ -506,6 +520,7 @@ } TEST_F(PickerClientImplEditorTest, CacheEditorContextCachesCaretBounds) { + base::test::ScopedFeatureList features(chromeos::features::kOrcaDogfood); ash::PickerController controller; PickerClientImpl client(&controller, user_manager()); GetEditorMediator(profile()).OverrideEditorModeForTesting(
diff --git a/chrome/browser/ui/browser_focus_uitest.cc b/chrome/browser/ui/browser_focus_uitest.cc index 8afe724..b797e69 100644 --- a/chrome/browser/ui/browser_focus_uitest.cc +++ b/chrome/browser/ui/browser_focus_uitest.cc
@@ -29,6 +29,7 @@ #include "chrome/browser/ui/location_bar/location_bar.h" #include "chrome/browser/ui/tabs/tab_strip_model.h" #include "chrome/browser/ui/view_ids.h" +#include "chrome/browser/ui/views/frame/browser_view.h" #include "chrome/common/chrome_paths.h" #include "chrome/common/url_constants.h" #include "chrome/test/base/chrome_test_utils.h" @@ -53,12 +54,17 @@ #include "ui/base/test/ui_controls.h" #include "ui/base/ui_base_features.h" #include "ui/views/focus/focus_manager.h" +#include "ui/views/test/widget_activation_waiter.h" #include "ui/views/widget/widget.h" #if BUILDFLAG(IS_MAC) #include "base/mac/mac_util.h" #endif +#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_CHROMEOS_LACROS) +#include "base/test/scoped_feature_list.h" +#endif + namespace { constexpr char kGetFocusedElementJS[] = "getFocusedElement();"; @@ -135,6 +141,72 @@ const char kStealFocusPage[] = "/focus/page_steals_focus.html"; const char kTypicalPage[] = "/focus/typical_page.html"; +class BrowserFocusBasicTest : public InProcessBrowserTest { + public: + BrowserFocusBasicTest() { + // interactive_ui_tests set `ui_test_utils::BringBrowserWindowToFront()` for + // the setup function, which interferes with what the test wants to test so + // unset it. + set_global_browser_set_up_function(nullptr); +#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_CHROMEOS_LACROS) + // For CHROME_HEADLESS, which is currently used for browser tests, native + // window occlusion is turned off. Turn it on to match the production + // environment. + base::FieldTrialParams field_trial_params{ + { features::kApplyNativeOcclusionToCompositorType.Get(), + features::kApplyNativeOcclusionToCompositorTypeRelease }}; + scoped_feature_list_.InitWithFeaturesAndParameters( + /*enabled_features=*/ + {{features::kAlwaysTrackNativeWindowOcclusionForTest, {}}, + { features::kApplyNativeOcclusionToCompositor, + field_trial_params }}, + /*disabled_features=*/{}); +#endif + } + + views::Widget* GetWidgetForBrowser(Browser* browser) { + BrowserView* browser_view = BrowserView::GetBrowserViewForBrowser(browser); + CHECK(browser_view); + views::Widget* widget = browser_view->GetWidget(); + CHECK(widget); + return widget; + } + + bool IsBrowserActive(Browser* browser) { + return GetWidgetForBrowser(browser)->IsActive(); + } + + private: +#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_CHROMEOS_LACROS) + base::test::ScopedFeatureList scoped_feature_list_; +#endif +}; + +// A basic test to check that a newly opened browser window has focus and the +// focus is on the omnibox. +IN_PROC_BROWSER_TEST_F(BrowserFocusBasicTest, BrowserFocusedOnCreation) { + // Ensure that the initialization of the browser window is completed. + ui_test_utils::CreateAsyncWidgetRequestWaiter(*browser()).Wait(); + // Widget activation happens asynchronously after window creation on some + // platforms like Linux so absorb the difference by waiting for the + // activation. + views::test::WaitForWidgetActive(GetWidgetForBrowser(browser()), true); + // Check that when a browser is created, it's active. + EXPECT_TRUE(IsBrowserActive(browser())); + EXPECT_TRUE(ui_test_utils::IsViewFocused(browser(), VIEW_ID_OMNIBOX)); + + // Use `chrome::OpenEmptyWindow()` instead of directly creating a `Browser` + // instance with `Browser::Create()` and calling `BrowserView::Show()` like + // some tests do because this is what the production code does when opening a + // new window. The difference is that it makes sure that there is at least one + // tab on the window before calling `BrowserView::Show()`. + Browser* browser2 = chrome::OpenEmptyWindow(browser()->profile()); + ui_test_utils::CreateAsyncWidgetRequestWaiter(*browser2).Wait(); + views::test::WaitForWidgetActive(GetWidgetForBrowser(browser2), true); + EXPECT_TRUE(IsBrowserActive(browser2)); + EXPECT_TRUE(ui_test_utils::IsViewFocused(browser2, VIEW_ID_OMNIBOX)); +} + class BrowserFocusTest : public InProcessBrowserTest { public: // InProcessBrowserTest overrides:
diff --git a/chrome/browser/ui/cocoa/apps/app_shim_menu_controller_mac.h b/chrome/browser/ui/cocoa/apps/app_shim_menu_controller_mac.h deleted file mode 100644 index 863e570..0000000 --- a/chrome/browser/ui/cocoa/apps/app_shim_menu_controller_mac.h +++ /dev/null
@@ -1,47 +0,0 @@ -// Copyright 2013 The Chromium Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef CHROME_BROWSER_UI_COCOA_APPS_APP_SHIM_MENU_CONTROLLER_MAC_H_ -#define CHROME_BROWSER_UI_COCOA_APPS_APP_SHIM_MENU_CONTROLLER_MAC_H_ - -#import <Cocoa/Cocoa.h> - -#include <string> - -@class DoppelgangerMenuItem; - -// This controller listens to NSWindowDidBecomeMainNotification and -// NSWindowDidResignMainNotification and modifies the main menu bar to mimic a -// main menu for the app. When an app window becomes main, all Chrome menu items -// are hidden and menu items for the app are appended to the main menu. When the -// app window resigns main, its menu items are removed and all Chrome menu items -// are unhidden. -@interface AppShimMenuController : NSObject { - @private - // The extension id of the currently focused packaged app. - std::string _appId; - - // Items that need a doppelganger. - DoppelgangerMenuItem* __strong _aboutDoppelganger; - DoppelgangerMenuItem* __strong _hideDoppelganger; - DoppelgangerMenuItem* __strong _quitDoppelganger; - DoppelgangerMenuItem* __strong _newDoppelganger; - DoppelgangerMenuItem* __strong _openDoppelganger; - DoppelgangerMenuItem* __strong _closeWindowDoppelganger; - DoppelgangerMenuItem* __strong _allToFrontDoppelganger; - - // Menu items for the currently focused packaged app. - NSMenuItem* __strong _appMenuItem; - NSMenuItem* __strong _fileMenuItem; - NSMenuItem* __strong _editMenuItem; - NSMenuItem* __strong _windowMenuItem; - - // Additional menu items for hosted apps. - NSMenuItem* __strong _viewMenuItem; - NSMenuItem* __strong _historyMenuItem; -} - -@end - -#endif // CHROME_BROWSER_UI_COCOA_APPS_APP_SHIM_MENU_CONTROLLER_MAC_H_
diff --git a/chrome/browser/ui/cocoa/apps/app_shim_menu_controller_mac.mm b/chrome/browser/ui/cocoa/apps/app_shim_menu_controller_mac.mm deleted file mode 100644 index 7139810..0000000 --- a/chrome/browser/ui/cocoa/apps/app_shim_menu_controller_mac.mm +++ /dev/null
@@ -1,547 +0,0 @@ -// Copyright 2013 The Chromium Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#import "chrome/browser/ui/cocoa/apps/app_shim_menu_controller_mac.h" - -#include "base/apple/scoped_nsautorelease_pool.h" -#include "base/containers/adapters.h" -#include "base/strings/sys_string_conversions.h" -#include "base/strings/utf_string_conversions.h" -#include "chrome/app/chrome_command_ids.h" -#include "chrome/browser/apps/app_shim/app_shim_manager_mac.h" -#include "chrome/browser/apps/platform_apps/app_window_registry_util.h" -#include "chrome/browser/profiles/profile.h" -#include "chrome/browser/ui/browser.h" -#include "chrome/browser/ui/browser_finder.h" -#include "chrome/browser/web_applications/web_app_helpers.h" -#include "chrome/grit/generated_resources.h" -#include "extensions/browser/app_window/app_window.h" -#include "extensions/browser/app_window/native_app_window.h" -#include "extensions/browser/extension_registry.h" -#include "extensions/common/extension.h" -#include "ui/base/l10n/l10n_util.h" -#include "ui/base/l10n/l10n_util_mac.h" - -using extensions::Extension; -using extensions::ExtensionRegistry; - -namespace { - -// Gets an item from the main menu given the tag of the top level item -// |menu_tag| and the tag of the item |item_tag|. -NSMenuItem* GetItemByTag(NSInteger menu_tag, NSInteger item_tag) { - return [[[[NSApp mainMenu] itemWithTag:menu_tag] submenu] - itemWithTag:item_tag]; -} - -// Finds a top level menu item using |menu_tag| and creates a new NSMenuItem -// with the same title. -NSMenuItem* NewTopLevelItemFrom(NSInteger menu_tag) { - NSMenuItem* original = [[NSApp mainMenu] itemWithTag:menu_tag]; - NSMenuItem* item = [[NSMenuItem alloc] initWithTitle:[original title] - action:nil - keyEquivalent:@""]; - DCHECK([original hasSubmenu]); - NSMenu* sub_menu = [[NSMenu alloc] initWithTitle:[[original submenu] title]]; - [item setSubmenu:sub_menu]; - return item; -} - -// Finds an item using |menu_tag| and |item_tag| and adds a duplicate of it to -// the submenu of |top_level_item|. -void AddDuplicateItem(NSMenuItem* top_level_item, - NSInteger menu_tag, - NSInteger item_tag) { - NSMenuItem* item = [GetItemByTag(menu_tag, item_tag) copy]; - DCHECK(item); - [[top_level_item submenu] addItem:item]; -} - -// Finds an item with |item_tag| and removes it from the submenu of -// |top_level_item|. -void RemoveMenuItemWithTag(NSMenuItem* top_level_item, - NSInteger item_tag, - bool remove_following_separator) { - NSMenu* submenu = [top_level_item submenu]; - NSInteger index = [submenu indexOfItemWithTag:item_tag]; - if (index < 0) - return; - - [submenu removeItemAtIndex:index]; - - if (!remove_following_separator || index == [submenu numberOfItems]) - return; - - NSMenuItem* nextItem = [submenu itemAtIndex:index]; - if ([nextItem isSeparatorItem]) - [submenu removeItem:nextItem]; -} - -// Sets the menu item with |item_tag| in |top_level_item| visible. -// If |has_alternate| is true, the item immediately following |item_tag| is -// assumed to be its (only) alternate. Since AppKit is unable to hide items -// with alternates, |has_alternate| will cause -[NSMenuItem alternate] to be -// removed when hiding and restored when showing. -void SetItemWithTagVisible(NSMenuItem* top_level_item, - NSInteger item_tag, - bool visible, - bool has_alternate) { - NSMenu* submenu = [top_level_item submenu]; - NSMenuItem* menu_item = [submenu itemWithTag:item_tag]; - DCHECK(menu_item); - - if (visible != [menu_item isHidden]) - return; - - if (!has_alternate) { - [menu_item setHidden:!visible]; - return; - } - - NSInteger next_index = [submenu indexOfItem:menu_item] + 1; - DCHECK_LT(next_index, [submenu numberOfItems]); - - NSMenuItem* alternate_item = [submenu itemAtIndex:next_index]; - if (!visible) { - // When hiding (only), we can verify the assumption that the item following - // |item_tag| is actually an alternate. - DCHECK([alternate_item isAlternate]); - } - - // The alternate item visibility should always be in sync. - DCHECK_EQ([alternate_item isHidden], [menu_item isHidden]); - [alternate_item setAlternate:visible]; - [alternate_item setHidden:!visible]; - [menu_item setHidden:!visible]; -} - -// Retrieve the Extension and (optionally) Profile for an NSWindow. -const Extension* GetExtensionForNSWindow(NSWindow* window, - Profile** profile = nullptr) { - if (extensions::AppWindow* app_window = - AppWindowRegistryUtil::GetAppWindowForNativeWindowAnyProfile( - window)) { - if (profile) - *profile = Profile::FromBrowserContext(app_window->browser_context()); - return app_window->GetExtension(); - } - // If there is no corresponding AppWindow, this could be a hosted app, so - // check for a browser. - if (Browser* browser = chrome::FindBrowserWithWindow(window)) { - const std::string app_id = - web_app::GetAppIdFromApplicationName(browser->app_name()); - if (profile) - *profile = browser->profile(); - ExtensionRegistry* registry = ExtensionRegistry::Get(browser->profile()); - const Extension* extension = registry->enabled_extensions().GetByID(app_id); - if (extension && - (extension->is_platform_app() || extension->is_hosted_app())) { - return extension; - } - } - return nullptr; -} - -extensions::AppWindowRegistry::AppWindowList GetAppWindowsForNSWindow( - NSWindow* window) { - Profile* profile = nullptr; - if (const Extension* extension = GetExtensionForNSWindow(window, &profile)) { - return extensions::AppWindowRegistry::Get(profile)->GetAppWindowsForApp( - extension->id()); - } - return extensions::AppWindowRegistry::AppWindowList(); -} - -} // namespace - -// Used by AppShimMenuController to manage menu items that are a copy of a -// Chrome menu item but with a different action. This manages unsetting and -// restoring the original item's key equivalent, so that we can use the same -// key equivalent in the copied item with a different action. If |resourceId_| -// is non-zero, this will also update the title to include the app name. -// If the copy (menuItem) has no key equivalent, and the title does not have the -// app name, then enableForApp and disable do not need to be called. I.e. the -// doppelganger just copies the item and sets a new action. -@interface DoppelgangerMenuItem : NSObject { - @private - NSMenuItem* __strong _menuItem; - NSMenuItem* __strong _sourceItem; - NSString* __strong _sourceKeyEquivalent; - int _resourceId; -} - -@property(readonly, nonatomic) NSMenuItem* menuItem; - -// Get the source item using the tags and create the menu item. -- (instancetype)initWithController:(AppShimMenuController*)controller - menuTag:(NSInteger)menuTag - itemTag:(NSInteger)itemTag - resourceId:(int)resourceId - action:(SEL)action - keyEquivalent:(NSString*)keyEquivalent; -// Retain the source item given |menuTag| and |sourceItemTag|. Copy -// the menu item given |menuTag| and |targetItemTag|. -// This is useful when we want a doppelganger with a different source item. -// For example, if there are conflicting key equivalents. -- (instancetype)initWithMenuTag:(NSInteger)menuTag - sourceItemTag:(NSInteger)sourceItemTag - targetItemTag:(NSInteger)targetItemTag - keyEquivalent:(NSString*)keyEquivalent; -// Set the title using |resourceId_| and unset the source item's key equivalent. -- (void)enableForApp:(const Extension*)app; -// Restore the source item's key equivalent. -- (void)disable; -@end - -@implementation DoppelgangerMenuItem - -- (NSMenuItem*)menuItem { - return _menuItem; -} - -- (instancetype)initWithController:(AppShimMenuController*)controller - menuTag:(NSInteger)menuTag - itemTag:(NSInteger)itemTag - resourceId:(int)resourceId - action:(SEL)action - keyEquivalent:(NSString*)keyEquivalent { - if ((self = [super init])) { - _sourceItem = GetItemByTag(menuTag, itemTag); - DCHECK(_sourceItem); - _sourceKeyEquivalent = [[_sourceItem keyEquivalent] copy]; - _menuItem = [[NSMenuItem alloc] initWithTitle:[_sourceItem title] - action:action - keyEquivalent:keyEquivalent]; - [_menuItem setTarget:controller]; - [_menuItem setTag:itemTag]; - _resourceId = resourceId; - } - return self; -} - -- (instancetype)initWithMenuTag:(NSInteger)menuTag - sourceItemTag:(NSInteger)sourceItemTag - targetItemTag:(NSInteger)targetItemTag - keyEquivalent:(NSString*)keyEquivalent { - if ((self = [super init])) { - _menuItem = [GetItemByTag(menuTag, targetItemTag) copy]; - _sourceItem = GetItemByTag(menuTag, sourceItemTag); - DCHECK(_menuItem); - DCHECK(_sourceItem); - _sourceKeyEquivalent = [[_sourceItem keyEquivalent] copy]; - } - return self; -} - -- (void)enableForApp:(const Extension*)app { - // It seems that two menu items that have the same key equivalent must also - // have the same action for the keyboard shortcut to work. (This refers to the - // original keyboard shortcut, regardless of any overrides set in OSX). - // In order to let the app menu items have a different action, we remove the - // key equivalent of the original items and restore them later. - [_sourceItem setKeyEquivalent:@""]; - if (!_resourceId) - return; - - [_menuItem setTitle:l10n_util::GetNSStringF(_resourceId, - base::UTF8ToUTF16(app->name()))]; -} - -- (void)disable { - // Restore the keyboard shortcut to Chrome. This just needs to be set back to - // the original keyboard shortcut, regardless of any overrides in OSX. The - // overrides still work as they are based on the title of the menu item. - [_sourceItem setKeyEquivalent:_sourceKeyEquivalent]; -} - -@end - -@interface AppShimMenuController () -// Construct the NSMenuItems for apps. -- (void)buildAppMenuItems; -// Register for NSWindow notifications. -- (void)registerEventHandlers; -// If the window is an app window, add or remove menu items. -- (void)windowMainStatusChanged:(NSNotification*)notification; -// Called when |app| becomes the main window in the Chrome process. -- (void)appBecameMain:(const Extension*)app; -// Called when there is no main window, or if the main window is not an app. -- (void)chromeBecameMain; -// Add menu items for an app and hide Chrome menu items. -- (void)addMenuItems:(const Extension*)app; -// If the window belongs to the currently focused app, remove the menu items and -// unhide Chrome menu items. -- (void)removeMenuItems; -// If the currently focused window belongs to a platform app, quit the app. -- (void)quitCurrentPlatformApp; -// If the currently focused window belongs to a platform app, hide the app. -- (void)hideCurrentPlatformApp; -// If the currently focused window belongs to a platform app, focus the app. -- (void)focusCurrentPlatformApp; -@end - -@implementation AppShimMenuController - -- (instancetype)init { - if ((self = [super init])) { - [self buildAppMenuItems]; - [self registerEventHandlers]; - } - return self; -} - -- (void)dealloc { - [NSNotificationCenter.defaultCenter removeObserver:self]; -} - -- (void)buildAppMenuItems { - _aboutDoppelganger = - [[DoppelgangerMenuItem alloc] initWithController:self - menuTag:IDC_CHROME_MENU - itemTag:IDC_ABOUT - resourceId:IDS_ABOUT_MAC - action:nil - keyEquivalent:@""]; - _hideDoppelganger = [[DoppelgangerMenuItem alloc] - initWithController:self - menuTag:IDC_CHROME_MENU - itemTag:IDC_HIDE_APP - resourceId:IDS_HIDE_APP_MAC - action:@selector(hideCurrentPlatformApp) - keyEquivalent:@"h"]; - _quitDoppelganger = [[DoppelgangerMenuItem alloc] - initWithController:self - menuTag:IDC_CHROME_MENU - itemTag:IDC_EXIT - resourceId:IDS_EXIT_MAC - action:@selector(quitCurrentPlatformApp) - keyEquivalent:@"q"]; - _newDoppelganger = - [[DoppelgangerMenuItem alloc] initWithController:self - menuTag:IDC_FILE_MENU - itemTag:IDC_NEW_WINDOW - resourceId:0 - action:nil - keyEquivalent:@"n"]; - // Since the "Close Window" menu item will have the same shortcut as "Close - // Tab" on the Chrome menu, we need to create a doppelganger. - _closeWindowDoppelganger = - [[DoppelgangerMenuItem alloc] initWithMenuTag:IDC_FILE_MENU - sourceItemTag:IDC_CLOSE_TAB - targetItemTag:IDC_CLOSE_WINDOW - keyEquivalent:@"w"]; - // For apps, the "Window" part of "New Window" is dropped to match the default - // menu set given to Cocoa Apps. - [[_newDoppelganger menuItem] setTitle:l10n_util::GetNSString(IDS_NEW_MAC)]; - _openDoppelganger = - [[DoppelgangerMenuItem alloc] initWithController:self - menuTag:IDC_FILE_MENU - itemTag:IDC_OPEN_FILE - resourceId:0 - action:nil - keyEquivalent:@"o"]; - _allToFrontDoppelganger = [[DoppelgangerMenuItem alloc] - initWithController:self - menuTag:IDC_WINDOW_MENU - itemTag:IDC_ALL_WINDOWS_FRONT - resourceId:0 - action:@selector(focusCurrentPlatformApp) - keyEquivalent:@""]; - - // The app's menu. - _appMenuItem = [[NSMenuItem alloc] initWithTitle:@"" - action:nil - keyEquivalent:@""]; - NSMenu* appMenu = [[NSMenu alloc] initWithTitle:@""]; - [_appMenuItem setSubmenu:appMenu]; - [appMenu setAutoenablesItems:NO]; - - [appMenu addItem:[_aboutDoppelganger menuItem]]; - [[_aboutDoppelganger menuItem] setEnabled:NO]; // Not implemented yet. - [appMenu addItem:[NSMenuItem separatorItem]]; - [appMenu addItem:[_hideDoppelganger menuItem]]; - [appMenu addItem:[NSMenuItem separatorItem]]; - [appMenu addItem:[_quitDoppelganger menuItem]]; - - // File menu. - _fileMenuItem = NewTopLevelItemFrom(IDC_FILE_MENU); - [[_fileMenuItem submenu] addItem:[_newDoppelganger menuItem]]; - [[_fileMenuItem submenu] addItem:[_openDoppelganger menuItem]]; - [[_fileMenuItem submenu] addItem:[NSMenuItem separatorItem]]; - [[_fileMenuItem submenu] addItem:[_closeWindowDoppelganger menuItem]]; - - // Edit menu. We copy the menu because the last two items, "Start Dictation" - // and "Special Characters" are added by OSX, so we can't copy them - // explicitly. - _editMenuItem = [[[NSApp mainMenu] itemWithTag:IDC_EDIT_MENU] copy]; - - // View menu. Remove "Always Show Bookmark Bar" and separator. - _viewMenuItem = [[[NSApp mainMenu] itemWithTag:IDC_VIEW_MENU] copy]; - RemoveMenuItemWithTag(_viewMenuItem, IDC_SHOW_BOOKMARK_BAR, YES); - - // History menu. - _historyMenuItem = NewTopLevelItemFrom(IDC_HISTORY_MENU); - AddDuplicateItem(_historyMenuItem, IDC_HISTORY_MENU, IDC_BACK); - AddDuplicateItem(_historyMenuItem, IDC_HISTORY_MENU, IDC_FORWARD); - - // Window menu. - _windowMenuItem = NewTopLevelItemFrom(IDC_WINDOW_MENU); - AddDuplicateItem(_windowMenuItem, IDC_WINDOW_MENU, IDC_MINIMIZE_WINDOW); - AddDuplicateItem(_windowMenuItem, IDC_WINDOW_MENU, IDC_MAXIMIZE_WINDOW); - [[_windowMenuItem submenu] addItem:[NSMenuItem separatorItem]]; - [[_windowMenuItem submenu] addItem:[_allToFrontDoppelganger menuItem]]; -} - -- (void)registerEventHandlers { - [[NSNotificationCenter defaultCenter] - addObserver:self - selector:@selector(windowMainStatusChanged:) - name:NSWindowDidBecomeMainNotification - object:nil]; - - [[NSNotificationCenter defaultCenter] - addObserver:self - selector:@selector(windowMainStatusChanged:) - name:NSWindowDidResignMainNotification - object:nil]; -} - -- (void)windowMainStatusChanged:(NSNotification*)notification { - // A Yosemite AppKit bug causes this notification to be sent during the - // -dealloc for a specific NSWindow. Any autoreleases sent to that window - // must be drained before the window finishes -dealloc. In this method, an - // autorelease is sent by the invocation of [NSApp windows]. - // http://crbug.com/406944. - base::apple::ScopedNSAutoreleasePool pool; - - NSString* name = [notification name]; - if ([name isEqualToString:NSWindowDidBecomeMainNotification]) { - id window = [notification object]; - // Ignore is_browser: if a window becomes main that does not belong to an - // extension or browser, treat it the same as switching to a browser. - const Extension* extension = GetExtensionForNSWindow(window); - if (extension) - [self appBecameMain:extension]; - else - [self chromeBecameMain]; - } else if ([name isEqualToString:NSWindowDidResignMainNotification]) { - // When a window resigns main status, reset back to the Chrome menu. - // In the past we've tried: - // - Only doing this when a window closes, but this would not be triggered - // when an app becomes hidden (Cmd+h), and there are no Chrome windows to - // become main. - // - Scanning [NSApp windows] to predict whether we could - // expect another Chrome window to become main, and skip the reset. However, - // panels need to do strange things during window close to ensure panels - // never get chosen for key status over a browser window (which is likely - // because they are given an elevated [NSWindow level]). Trying to handle - // this case is not robust. - // - // Unfortunately, resetting the menu to Chrome - // unconditionally means that if another packaged app window becomes key, - // the menu will flicker. TODO(tapted): Investigate restoring the logic when - // the panel code is removed. - [self chromeBecameMain]; - } else { - NOTREACHED(); - } -} - -- (void)appBecameMain:(const Extension*)app { - if (_appId == app->id()) - return; - - if (!_appId.empty()) - [self removeMenuItems]; - - _appId = app->id(); - [self addMenuItems:app]; -} - -- (void)chromeBecameMain { - if (_appId.empty()) - return; - - _appId.clear(); - [self removeMenuItems]; -} - -- (void)addMenuItems:(const Extension*)app { - DCHECK_EQ(_appId, app->id()); - NSString* title = base::SysUTF8ToNSString(app->name()); - - // Hide Chrome menu items. - NSMenu* mainMenu = [NSApp mainMenu]; - for (NSMenuItem* item in [mainMenu itemArray]) - [item setHidden:YES]; - - [_aboutDoppelganger enableForApp:app]; - [_hideDoppelganger enableForApp:app]; - [_quitDoppelganger enableForApp:app]; - [_newDoppelganger enableForApp:app]; - [_openDoppelganger enableForApp:app]; - [_closeWindowDoppelganger enableForApp:app]; - - [_appMenuItem setTitle:base::SysUTF8ToNSString(_appId)]; - [[_appMenuItem submenu] setTitle:title]; - - [mainMenu addItem:_appMenuItem]; - [mainMenu addItem:_fileMenuItem]; - - SetItemWithTagVisible(_editMenuItem, - IDC_CONTENT_CONTEXT_PASTE_AND_MATCH_STYLE, - app->is_hosted_app(), true); - SetItemWithTagVisible(_editMenuItem, IDC_FIND_MENU, app->is_hosted_app(), - false); - [mainMenu addItem:_editMenuItem]; - - if (app->is_hosted_app()) { - [mainMenu addItem:_viewMenuItem]; - [mainMenu addItem:_historyMenuItem]; - } - [mainMenu addItem:_windowMenuItem]; -} - -- (void)removeMenuItems { - NSMenu* mainMenu = [NSApp mainMenu]; - [mainMenu removeItem:_appMenuItem]; - [mainMenu removeItem:_fileMenuItem]; - if ([mainMenu indexOfItem:_viewMenuItem] >= 0) - [mainMenu removeItem:_viewMenuItem]; - if ([mainMenu indexOfItem:_historyMenuItem] >= 0) - [mainMenu removeItem:_historyMenuItem]; - [mainMenu removeItem:_editMenuItem]; - [mainMenu removeItem:_windowMenuItem]; - - // Restore the Chrome main menu bar. - for (NSMenuItem* item in [mainMenu itemArray]) - [item setHidden:NO]; - - [_aboutDoppelganger disable]; - [_hideDoppelganger disable]; - [_quitDoppelganger disable]; - [_newDoppelganger disable]; - [_openDoppelganger disable]; - [_closeWindowDoppelganger disable]; -} - -- (void)quitCurrentPlatformApp { - auto windows = GetAppWindowsForNSWindow([NSApp keyWindow]); - for (extensions::AppWindow* window : base::Reversed(windows)) - window->GetBaseWindow()->Close(); -} - -- (void)hideCurrentPlatformApp { - auto windows = GetAppWindowsForNSWindow([NSApp keyWindow]); - for (extensions::AppWindow* window : base::Reversed(windows)) - window->GetBaseWindow()->Hide(); -} - -- (void)focusCurrentPlatformApp { - auto windows = GetAppWindowsForNSWindow([NSApp keyWindow]); - for (extensions::AppWindow* window : base::Reversed(windows)) - window->GetBaseWindow()->Show(); -} - -@end
diff --git a/chrome/browser/ui/cocoa/apps/app_shim_menu_controller_mac_browsertest.mm b/chrome/browser/ui/cocoa/apps/app_shim_menu_controller_mac_browsertest.mm deleted file mode 100644 index 96d6f36..0000000 --- a/chrome/browser/ui/cocoa/apps/app_shim_menu_controller_mac_browsertest.mm +++ /dev/null
@@ -1,249 +0,0 @@ -// Copyright 2013 The Chromium Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#import "chrome/browser/ui/cocoa/apps/app_shim_menu_controller_mac.h" - -#import <Cocoa/Cocoa.h> - -#import "base/apple/foundation_util.h" -#import "base/apple/scoped_objc_class_swizzler.h" -#include "base/command_line.h" -#include "base/memory/raw_ptr.h" -#include "base/strings/sys_string_conversions.h" -#include "chrome/app/chrome_command_ids.h" -#include "chrome/browser/apps/app_shim/app_shim_manager_mac.h" -#include "chrome/browser/apps/platform_apps/app_browsertest_util.h" -#include "chrome/browser/extensions/extension_service.h" -#include "chrome/browser/extensions/launch_util.h" -#include "chrome/browser/profiles/profile.h" -#include "chrome/browser/ui/browser_list.h" -#include "chrome/browser/ui/browser_window.h" -#include "content/public/test/browser_test.h" -#include "extensions/browser/app_window/app_window_registry.h" -#include "extensions/browser/app_window/native_app_window.h" -#include "extensions/browser/uninstall_reason.h" -#include "extensions/common/extension.h" -#include "extensions/test/extension_test_message_listener.h" -#import "ui/base/test/scoped_fake_nswindow_focus.h" - -namespace { - -class AppShimMenuControllerBrowserTest - : public extensions::PlatformAppBrowserTest { - public: - AppShimMenuControllerBrowserTest(const AppShimMenuControllerBrowserTest&) = - delete; - AppShimMenuControllerBrowserTest& operator=( - const AppShimMenuControllerBrowserTest&) = delete; - - protected: - // The apps that can be installed and launched by SetUpApps(). - enum AvailableApps { PACKAGED_1 = 0x1, PACKAGED_2 = 0x2, HOSTED = 0x4 }; - - AppShimMenuControllerBrowserTest() = default; - - // Start testing apps and wait for them to launch. |flags| is a bitmask of - // AvailableApps. - void SetUpApps(int flags) { - - if (flags & PACKAGED_1) { - ExtensionTestMessageListener listener_1("Launched"); - app_1_ = InstallAndLaunchPlatformApp("minimal_id"); - ASSERT_TRUE(listener_1.WaitUntilSatisfied()); - } - - if (flags & PACKAGED_2) { - ExtensionTestMessageListener listener_2("Launched"); - app_2_ = InstallAndLaunchPlatformApp("minimal"); - ASSERT_TRUE(listener_2.WaitUntilSatisfied()); - } - - if (flags & HOSTED) { - hosted_app_ = InstallHostedApp(); - - // Explicitly set the launch type to open in a new window. - extensions::SetLaunchType(profile(), hosted_app_->id(), - extensions::LAUNCH_TYPE_WINDOW); - LaunchHostedApp(hosted_app_); - } - - initial_menu_item_count_ = [[[NSApp mainMenu] itemArray] count]; - } - - void CheckHasAppMenus(const extensions::Extension* app) const { - NSArray* item_array = [[NSApp mainMenu] itemArray]; - ASSERT_EQ(initial_menu_item_count_, [item_array count]); - - // The extra app menus are added from the start when NSApp has an activation - // policy. - const int kExtraTopLevelItems = 4; - for (NSUInteger i = 0; i < initial_menu_item_count_ - kExtraTopLevelItems; - ++i) { - EXPECT_TRUE([item_array[i] isHidden]); - } - - NSMenuItem* app_menu = - item_array[initial_menu_item_count_ - kExtraTopLevelItems]; - EXPECT_EQ(app->id(), base::SysNSStringToUTF8([app_menu title])); - EXPECT_EQ(app->name(), - base::SysNSStringToUTF8([[app_menu submenu] title])); - for (NSUInteger i = initial_menu_item_count_ - kExtraTopLevelItems; - i < initial_menu_item_count_; ++i) { - NSMenuItem* menu = item_array[i]; - EXPECT_GT([[menu submenu] numberOfItems], 0); - EXPECT_FALSE([menu isHidden]); - } - } - - void CheckNoAppMenus() const { - const int kExtraTopLevelItems = 4; - NSArray* item_array = [[NSApp mainMenu] itemArray]; - EXPECT_EQ(initial_menu_item_count_ - kExtraTopLevelItems, - [item_array count]); - for (NSUInteger i = 0; i < initial_menu_item_count_ - kExtraTopLevelItems; - ++i) { - EXPECT_FALSE([item_array[i] isHidden]); - } - } - - void CheckEditMenu(const extensions::Extension* app) const { - const int edit_menu_index = initial_menu_item_count_ + 2; - - NSMenuItem* edit_menu = [[NSApp mainMenu] itemArray][edit_menu_index]; - NSMenu* edit_submenu = [edit_menu submenu]; - NSMenuItem* paste_match_style_menu_item = - [edit_submenu itemWithTag:IDC_CONTENT_CONTEXT_PASTE_AND_MATCH_STYLE]; - NSMenuItem* find_menu_item = [edit_submenu itemWithTag:IDC_FIND_MENU]; - if (app->is_hosted_app()) { - EXPECT_FALSE([paste_match_style_menu_item isHidden]); - EXPECT_FALSE([find_menu_item isHidden]); - } else { - EXPECT_TRUE([paste_match_style_menu_item isHidden]); - EXPECT_TRUE([find_menu_item isHidden]); - } - } - - extensions::AppWindow* FirstWindowForApp(const extensions::Extension* app) { - extensions::AppWindowRegistry::AppWindowList window_list = - extensions::AppWindowRegistry::Get(profile()) - ->GetAppWindowsForApp(app->id()); - EXPECT_FALSE(window_list.empty()); - return window_list.front(); - } - - raw_ptr<const extensions::Extension, AcrossTasksDanglingUntriaged> app_1_ = - nullptr; - raw_ptr<const extensions::Extension, AcrossTasksDanglingUntriaged> app_2_ = - nullptr; - raw_ptr<const extensions::Extension, AcrossTasksDanglingUntriaged> - hosted_app_ = nullptr; - NSUInteger initial_menu_item_count_ = 0; -}; - -// Test that focusing an app window changes the menu bar. -// Disabled; https://crbug.com/1493413. -IN_PROC_BROWSER_TEST_F(AppShimMenuControllerBrowserTest, - DISABLED_PlatformAppFocusUpdatesMenuBar) { - SetUpApps(PACKAGED_1 | PACKAGED_2); - // When an app is focused, all Chrome menu items should be hidden, and a menu - // item for the app should be added. - extensions::AppWindow* app_1_app_window = FirstWindowForApp(app_1_); - [[NSNotificationCenter defaultCenter] - postNotificationName:NSWindowDidBecomeMainNotification - object:app_1_app_window->GetNativeWindow() - .GetNativeNSWindow()]; - CheckHasAppMenus(app_1_); - - // When another app is focused, the menu item for the app should change. - extensions::AppWindow* app_2_app_window = FirstWindowForApp(app_2_); - [[NSNotificationCenter defaultCenter] - postNotificationName:NSWindowDidBecomeMainNotification - object:app_2_app_window->GetNativeWindow() - .GetNativeNSWindow()]; - CheckHasAppMenus(app_2_); - - // When a browser window is focused, the menu items for the app should be - // removed. - BrowserWindow* chrome_window = - (*BrowserList::GetInstance()->begin())->window(); - [[NSNotificationCenter defaultCenter] - postNotificationName:NSWindowDidBecomeMainNotification - object:chrome_window->GetNativeWindow() - .GetNativeNSWindow()]; - CheckNoAppMenus(); - - // When an app window is closed and there are no other app windows, the menu - // items for the app should be removed. - app_1_app_window->GetBaseWindow()->Close(); - chrome_window->Close(); - [[NSNotificationCenter defaultCenter] - postNotificationName:NSWindowDidBecomeMainNotification - object:app_2_app_window->GetNativeWindow() - .GetNativeNSWindow()]; - CheckHasAppMenus(app_2_); - [[NSNotificationCenter defaultCenter] - postNotificationName:NSWindowDidResignMainNotification - object:app_2_app_window->GetNativeWindow() - .GetNativeNSWindow()]; - app_2_app_window->GetBaseWindow()->Close(); - CheckNoAppMenus(); -} - -// Test that closing windows without main status do not update the menu. -// Disabled; https://crbug.com/1322740. -IN_PROC_BROWSER_TEST_F(AppShimMenuControllerBrowserTest, - DISABLED_ClosingBackgroundWindowLeavesMenuBar) { - // Start with app1 active. - SetUpApps(PACKAGED_1); - extensions::AppWindow* app_1_app_window = FirstWindowForApp(app_1_); - - { - ui::test::ScopedFakeNSWindowFocus fake_focus; - [app_1_app_window->GetNativeWindow().GetNativeNSWindow() makeMainWindow]; - CheckHasAppMenus(app_1_); - - // Closing a background window without focusing it should not change menus. - BrowserWindow* chrome_window = - (*BrowserList::GetInstance()->begin())->window(); - chrome_window->Close(); - [[NSNotificationCenter defaultCenter] - postNotificationName:NSWindowWillCloseNotification - object:chrome_window->GetNativeWindow() - .GetNativeNSWindow()]; - CheckHasAppMenus(app_1_); - - // |fake_focus| going out of scope sends NSWindowWillResignMainNotification. - } - app_1_app_window->GetBaseWindow()->Close(); - CheckNoAppMenus(); -} - -// Test that uninstalling an app restores the main menu. -// Disabled per crbug.com/1513792. -IN_PROC_BROWSER_TEST_F(AppShimMenuControllerBrowserTest, - DISABLED_ExtensionUninstallUpdatesMenuBar) { - SetUpApps(PACKAGED_1 | PACKAGED_2); - - FirstWindowForApp(app_2_)->GetBaseWindow()->Close(); - (*BrowserList::GetInstance()->begin())->window()->Close(); - NSWindow* app_1_window = - FirstWindowForApp(app_1_)->GetNativeWindow().GetNativeNSWindow(); - - ui::test::ScopedFakeNSWindowFocus fake_focus; - [app_1_window makeMainWindow]; - - CheckHasAppMenus(app_1_); - extension_service()->UninstallExtension( - app_1_->id(), extensions::UNINSTALL_REASON_FOR_TESTING, - nullptr /* nullptr */); - - // OSX will send NSWindowWillResignMainNotification when a main window is - // closed. - [[NSNotificationCenter defaultCenter] - postNotificationName:NSWindowDidResignMainNotification - object:app_1_window]; - CheckNoAppMenus(); -} - -} // namespace
diff --git a/chrome/browser/ui/lens/lens_overlay_controller.cc b/chrome/browser/ui/lens/lens_overlay_controller.cc index 4eb07d5..057317e 100644 --- a/chrome/browser/ui/lens/lens_overlay_controller.cc +++ b/chrome/browser/ui/lens/lens_overlay_controller.cc
@@ -450,7 +450,7 @@ return; } current_screenshot_data_uri_ = - webui::MakeDataURIForImage(data->as_vector(), "jpeg"); + webui::MakeDataURIForImage(data->data(), "jpeg"); ShowOverlayWidget();
diff --git a/chrome/browser/ui/tab_contents/core_tab_helper.cc b/chrome/browser/ui/tab_contents/core_tab_helper.cc index 50fa4f2..926d5255 100644 --- a/chrome/browser/ui/tab_contents/core_tab_helper.cc +++ b/chrome/browser/ui/tab_contents/core_tab_helper.cc
@@ -143,10 +143,12 @@ // Get the front and end of the image bytes in order to store them in the // search_args to be sent as part of the PostContent in the request + size_t image_bytes_size = image.As1xPNGBytes()->size(); + const unsigned char* image_bytes_begin = image.As1xPNGBytes()->front(); + const unsigned char* image_bytes_end = image_bytes_begin + image_bytes_size; content_type = "image/png"; image_format = lens::mojom::ImageFormat::PNG; - auto bytes = image.As1xPNGBytes(); - data.assign(bytes->begin(), bytes->end()); + data.assign(image_bytes_begin, image_bytes_end); return data; }
diff --git a/chrome/browser/ui/views/content_setting_site_row_view.cc b/chrome/browser/ui/views/content_setting_site_row_view.cc index 79c0caf8..b6ec152 100644 --- a/chrome/browser/ui/views/content_setting_site_row_view.cc +++ b/chrome/browser/ui/views/content_setting_site_row_view.cc
@@ -84,7 +84,7 @@ const favicon_base::FaviconRawBitmapResult& favicon_result) { if (favicon_result.is_valid()) { favicon_->SetImage(ui::ImageModel::FromImage( - gfx::Image::CreateFrom1xPNGBytes(favicon_result.bitmap_data->data(), + gfx::Image::CreateFrom1xPNGBytes(favicon_result.bitmap_data->front(), favicon_result.bitmap_data->size()))); } else { favicon_->SetImage(ui::ImageModel::FromVectorIcon(
diff --git a/chrome/browser/ui/views/download/download_shelf_view.cc b/chrome/browser/ui/views/download/download_shelf_view.cc index b94bae97..7c97ce4 100644 --- a/chrome/browser/ui/views/download/download_shelf_view.cc +++ b/chrome/browser/ui/views/download/download_shelf_view.cc
@@ -271,7 +271,7 @@ void DownloadShelfView::ConfigureButtonForTheme(views::MdTextButton* button) { const auto* const cp = GetColorProvider(); DCHECK(cp); - button->SetBgColorOverride(cp->GetColor(kColorDownloadShelfButtonBackground)); + button->SetBgColorIdOverride(kColorDownloadShelfButtonBackground); button->SetEnabledTextColors(cp->GetColor(kColorDownloadShelfButtonText)); }
diff --git a/chrome/browser/ui/views/extensions/extensions_menu_main_page_view.cc b/chrome/browser/ui/views/extensions/extensions_menu_main_page_view.cc index 51584ffe..451eefc2 100644 --- a/chrome/browser/ui/views/extensions/extensions_menu_main_page_view.cc +++ b/chrome/browser/ui/views/extensions/extensions_menu_main_page_view.cc
@@ -25,6 +25,7 @@ #include "extensions/common/extension_id.h" #include "ui/base/l10n/l10n_util.h" #include "ui/base/metadata/metadata_impl_macros.h" +#include "ui/base/ui_base_types.h" #include "ui/gfx/geometry/insets.h" #include "ui/gfx/text_constants.h" #include "ui/gfx/vector_icon_types.h" @@ -418,12 +419,18 @@ views::MaximumFlexSizeRule::kUnbounded)), views::Builder<views::MdTextButton>() .SetCallback(base::BindRepeating(dismiss_callback_, id)) + .SetStyle(ui::ButtonStyle::kText) + .SetBgColorIdOverride( + kColorExtensionsMenuHighlightedBackground) .SetText(l10n_util::GetStringUTF16( IDS_EXTENSIONS_MENU_REQUESTS_ACCESS_SECTION_DISMISS_BUTTON_TEXT)) .SetTooltipText(l10n_util::GetStringUTF16( IDS_EXTENSIONS_MENU_REQUESTS_ACCESS_SECTION_DISMISS_BUTTON_TOOLTIP)), views::Builder<views::MdTextButton>() .SetCallback(base::BindRepeating(allow_callback_, id)) + .SetStyle(ui::ButtonStyle::kText) + .SetBgColorIdOverride( + kColorExtensionsMenuHighlightedBackground) .SetText(l10n_util::GetStringUTF16( IDS_EXTENSIONS_MENU_REQUESTS_ACCESS_SECTION_ALLOW_BUTTON_TEXT)) .SetTooltipText(l10n_util::GetStringUTF16(
diff --git a/chrome/browser/ui/views/global_media_controls/cast_device_selector_view.cc b/chrome/browser/ui/views/global_media_controls/cast_device_selector_view.cc index 57ed60f5..91e86e4 100644 --- a/chrome/browser/ui/views/global_media_controls/cast_device_selector_view.cc +++ b/chrome/browser/ui/views/global_media_controls/cast_device_selector_view.cc
@@ -4,7 +4,10 @@ #include "chrome/browser/ui/views/global_media_controls/cast_device_selector_view.h" +#include "chrome/browser/ui/views/controls/hover_button.h" +#include "chrome/browser/ui/views/global_media_controls/media_item_ui_helper.h" #include "chrome/browser/ui/views/global_media_controls/media_notification_device_entry_ui.h" +#include "chrome/browser/ui/views/media_router/cast_dialog_helper.h" #include "components/global_media_controls/public/views/media_item_ui_updated_view.h" #include "components/strings/grit/components_strings.h" #include "components/vector_icons/vector_icons.h" @@ -17,16 +20,20 @@ namespace { constexpr gfx::Size kPreferredSize{370, 0}; +constexpr gfx::Size kCloseButtonSize{20, 20}; constexpr int kBackgroundBorderThickness = 1; constexpr int kBackgroundCornerRadius = 8; +constexpr int kDeviceEntryCornerRadius = 4; +constexpr int kBackgroundSeparator = 8; +constexpr int kDeviceContainerSeparator = 4; +constexpr int kDeviceEntrySeparator = 8; +constexpr int kCloseButtonIconSize = 16; +constexpr int kDeviceEntryIconSize = 20; constexpr gfx::Insets kBackgroundInsets = gfx::Insets::VH(16, 8); constexpr gfx::Insets kCastToRowInsets = gfx::Insets::VH(0, 8); -constexpr int kCloseButtonIconSize = 16; -constexpr gfx::Size kCloseButtonSize = gfx::Size(20, 20); - } // namespace CastDeviceSelectorView::CastDeviceSelectorView( @@ -47,7 +54,8 @@ media_color_theme_.device_selector_background_color_id, kBackgroundCornerRadius)); SetLayoutManager(std::make_unique<views::BoxLayout>( - views::BoxLayout::Orientation::kVertical, kBackgroundInsets)); + views::BoxLayout::Orientation::kVertical, kBackgroundInsets, + kBackgroundSeparator)); // |cast_to_row| holds the cast to label and the close button. auto* cast_to_row = AddChildView(std::make_unique<views::BoxLayoutView>()); @@ -79,6 +87,7 @@ AddChildView(std::make_unique<views::BoxLayoutView>()); device_container_view_->SetOrientation( views::BoxLayout::Orientation::kVertical); + device_container_view_->SetBetweenChildSpacing(kDeviceContainerSeparator); if (show_devices) { ShowDevices(); @@ -120,11 +129,10 @@ std::vector<global_media_controls::mojom::DevicePtr> devices) { device_container_view_->RemoveAllChildViews(); for (const auto& device : devices) { - auto device_view = std::make_unique<CastDeviceEntryViewAsh>( + auto device_view = BuildCastDeviceEntryView( base::BindRepeating(&CastDeviceSelectorView::OnCastDeviceSelected, base::Unretained(this), device->id), - media_color_theme_.primary_foreground_color_id, - media_color_theme_.secondary_foreground_color_id, device); + base::UTF8ToUTF16(device->name), device->icon); device_container_view_->AddChildView(std::move(device_view)); } if (media_item_ui_updated_view_) { @@ -137,6 +145,31 @@ /////////////////////////////////////////////////////////////////////////////// // CastDeviceSelectorView implementations: +std::unique_ptr<HoverButton> CastDeviceSelectorView::BuildCastDeviceEntryView( + views::Button::PressedCallback callback, + const std::u16string& text, + global_media_controls::mojom::IconType icon) { + std::unique_ptr<HoverButton> device_entry_button; + if (icon == global_media_controls::mojom::IconType::kThrobber) { + device_entry_button = std::make_unique<HoverButton>( + std::move(callback), media_router::CreateThrobber(), text); + } else { + device_entry_button = std::make_unique<HoverButton>( + std::move(callback), + ui::ImageModel::FromVectorIcon( + GetVectorIcon(icon), + media_color_theme_.secondary_foreground_color_id, + kDeviceEntryIconSize), + text); + } + device_entry_button->SetLabelStyle(views::style::STYLE_BODY_2); + device_entry_button->SetEnabledTextColorIds( + media_color_theme_.secondary_foreground_color_id); + device_entry_button->SetImageLabelSpacing(kDeviceEntrySeparator); + device_entry_button->SetFocusRingCornerRadius(kDeviceEntryCornerRadius); + return device_entry_button; +} + void CastDeviceSelectorView::OnCastDeviceSelected( const std::string& device_id) { if (device_list_host_) { @@ -167,5 +200,9 @@ return close_button_; } +views::View* CastDeviceSelectorView::GetDeviceContainerViewForTesting() { + return device_container_view_; +} + BEGIN_METADATA(CastDeviceSelectorView) END_METADATA
diff --git a/chrome/browser/ui/views/global_media_controls/cast_device_selector_view.h b/chrome/browser/ui/views/global_media_controls/cast_device_selector_view.h index 7a6ebd7..a0c9f7e 100644 --- a/chrome/browser/ui/views/global_media_controls/cast_device_selector_view.h +++ b/chrome/browser/ui/views/global_media_controls/cast_device_selector_view.h
@@ -21,6 +21,8 @@ class BoxLayoutView; } // namespace views +class HoverButton; + // CastDeviceSelectorView holds a list of devices available for casting the // given media session. This is used within MediaDialogView on non-CrOS desktop // platforms and replaces MediaItemUIDeviceSelectorView when the @@ -58,10 +60,16 @@ // Helper functions for testing: global_media_controls::MediaActionButton* GetCloseButtonForTesting(); + views::View* GetDeviceContainerViewForTesting(); private: - friend class CastDeviceSelectorViewTest; + // Build a device entry view for the given device information. + std::unique_ptr<HoverButton> BuildCastDeviceEntryView( + views::Button::PressedCallback callback, + const std::u16string& text, + global_media_controls::mojom::IconType icon); + // Callback for when a device is selected by user. void OnCastDeviceSelected(const std::string& device_id); // Update the visibility of the whole view which changes its size too.
diff --git a/chrome/browser/ui/views/global_media_controls/cast_device_selector_view_unittest.cc b/chrome/browser/ui/views/global_media_controls/cast_device_selector_view_unittest.cc index 851043d..560f1155 100644 --- a/chrome/browser/ui/views/global_media_controls/cast_device_selector_view_unittest.cc +++ b/chrome/browser/ui/views/global_media_controls/cast_device_selector_view_unittest.cc
@@ -61,6 +61,7 @@ return devices; } + MockDeviceListHost* device_list_host() { return device_list_host_.get(); } CastDeviceSelectorView* view() { return cast_device_selector_view_; } private: @@ -100,3 +101,16 @@ gfx::Point(), ui::EventTimeForNow(), 0, 0)); EXPECT_FALSE(view()->GetVisible()); } + +TEST_F(CastDeviceSelectorViewTest, DeviceEntryCheck) { + CreateCastDeviceSelectorView(/*show_devices=*/true); + view()->OnDevicesUpdated(CreateDevices()); + EXPECT_NE(view()->GetDeviceContainerViewForTesting(), nullptr); + for (views::View* child : + view()->GetDeviceContainerViewForTesting()->children()) { + EXPECT_CALL(*device_list_host(), SelectDevice(kTestDeviceId)); + views::test::ButtonTestApi(static_cast<views::Button*>(child)) + .NotifyClick(ui::MouseEvent(ui::ET_MOUSE_PRESSED, gfx::Point(), + gfx::Point(), ui::EventTimeForNow(), 0, 0)); + } +}
diff --git a/chrome/browser/ui/views/global_media_controls/media_item_ui_helper.cc b/chrome/browser/ui/views/global_media_controls/media_item_ui_helper.cc index a53a6199..941ea46d 100644 --- a/chrome/browser/ui/views/global_media_controls/media_item_ui_helper.cc +++ b/chrome/browser/ui/views/global_media_controls/media_item_ui_helper.cc
@@ -6,6 +6,7 @@ #include <string> +#include "chrome/app/vector_icons/vector_icons.h" #include "chrome/browser/media/router/media_router_feature.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/ui/global_media_controls/cast_media_notification_item.h" @@ -311,3 +312,21 @@ theme.focus_ring_color_id = ui::kColorSysStateFocusRing; return theme; } + +const gfx::VectorIcon& GetVectorIcon( + global_media_controls::mojom::IconType icon) { + switch (icon) { + case global_media_controls::mojom::IconType::kInfo: + return kInfoIcon; + case global_media_controls::mojom::IconType::kSpeaker: + return kSpeakerIcon; + case global_media_controls::mojom::IconType::kSpeakerGroup: + return kSpeakerGroupIcon; + case global_media_controls::mojom::IconType::kInput: + return kInputIcon; + case global_media_controls::mojom::IconType::kThrobber: + case global_media_controls::mojom::IconType::kTv: + case global_media_controls::mojom::IconType::kUnknown: + return kTvIcon; + } +}
diff --git a/chrome/browser/ui/views/global_media_controls/media_item_ui_helper.h b/chrome/browser/ui/views/global_media_controls/media_item_ui_helper.h index b9cc04d0..8aa4251 100644 --- a/chrome/browser/ui/views/global_media_controls/media_item_ui_helper.h +++ b/chrome/browser/ui/views/global_media_controls/media_item_ui_helper.h
@@ -21,6 +21,10 @@ class BrowserContext; } // namespace content +namespace gfx { +struct VectorIcon; +} // namespace gfx + namespace global_media_controls { class MediaItemUIDeviceSelector; class MediaItemUIFooter; @@ -112,4 +116,8 @@ // Returns the MediaColorTheme for the updated media UI. media_message_center::MediaColorTheme GetMediaColorTheme(); +// Return the vector icon for display for the given cast device icon type. +const gfx::VectorIcon& GetVectorIcon( + global_media_controls::mojom::IconType icon); + #endif // CHROME_BROWSER_UI_VIEWS_GLOBAL_MEDIA_CONTROLS_MEDIA_ITEM_UI_HELPER_H_
diff --git a/chrome/browser/ui/views/global_media_controls/media_notification_device_entry_ui.cc b/chrome/browser/ui/views/global_media_controls/media_notification_device_entry_ui.cc index 1e70d59..97634fa8a 100644 --- a/chrome/browser/ui/views/global_media_controls/media_notification_device_entry_ui.cc +++ b/chrome/browser/ui/views/global_media_controls/media_notification_device_entry_ui.cc
@@ -8,6 +8,7 @@ #include "base/functional/callback_forward.h" #include "base/strings/utf_string_conversions.h" #include "chrome/app/vector_icons/vector_icons.h" +#include "chrome/browser/ui/views/global_media_controls/media_item_ui_helper.h" #include "chrome/browser/ui/views/media_router/cast_dialog_helper.h" #include "components/global_media_controls/public/mojom/device_service.mojom.h" #include "components/vector_icons/vector_icons.h" @@ -53,26 +54,6 @@ } } -const gfx::VectorIcon* GetVectorIcon( - global_media_controls::mojom::IconType icon) { - switch (icon) { - case global_media_controls::mojom::IconType::kInfo: - return &vector_icons::kInfoOutlineIcon; - case global_media_controls::mojom::IconType::kSpeaker: - return &kSpeakerIcon; - case global_media_controls::mojom::IconType::kSpeakerGroup: - return &kSpeakerGroupIcon; - case global_media_controls::mojom::IconType::kInput: - return &kInputIcon; - case global_media_controls::mojom::IconType::kTv: - return &kTvIcon; - // In these cases the icon is a placeholder and doesn't actually get shown. - case global_media_controls::mojom::IconType::kThrobber: - case global_media_controls::mojom::IconType::kUnknown: - return &kTvIcon; - } -} - // foreground_color_id is only set for CastDeviceEntryViewAsh. std::unique_ptr<views::ImageView> CreateIconView( const gfx::VectorIcon* icon, @@ -96,7 +77,7 @@ if (icon == global_media_controls::mojom::IconType::kThrobber) { return media_router::CreateThrobber(); } - return CreateIconView(GetVectorIcon(icon), foreground_color_id); + return CreateIconView(&GetVectorIcon(icon), foreground_color_id); } std::unique_ptr<views::ImageView> GetAudioDeviceIcon() { @@ -178,7 +159,7 @@ SkColor foreground_color, SkColor background_color, const global_media_controls::mojom::DevicePtr& device) - : DeviceEntryUI(device->id, device->name, GetVectorIcon(device->icon)), + : DeviceEntryUI(device->id, device->name, &GetVectorIcon(device->icon)), HoverButton(std::move(callback), CreateIconView(device->icon), base::UTF8ToUTF16(device->name), @@ -230,7 +211,7 @@ ui::ColorId foreground_color_id, ui::ColorId background_color_id, const global_media_controls::mojom::DevicePtr& device) - : DeviceEntryUI(device->id, device->name, GetVectorIcon(device->icon)), + : DeviceEntryUI(device->id, device->name, &GetVectorIcon(device->icon)), HoverButton(std::move(callback), CreateIconView(device->icon, foreground_color_id), base::UTF8ToUTF16(device->name)),
diff --git a/chrome/browser/ui/views/permissions/permission_prompt_bubble_two_origins_view.cc b/chrome/browser/ui/views/permissions/permission_prompt_bubble_two_origins_view.cc index 6cfef0d6..2ab7ec3c 100644 --- a/chrome/browser/ui/views/permissions/permission_prompt_bubble_two_origins_view.cc +++ b/chrome/browser/ui/views/permissions/permission_prompt_bubble_two_origins_view.cc
@@ -219,7 +219,7 @@ if (favicon_result.is_valid()) { favicon_right_->SetImage(ui::ImageModel::FromImage( - gfx::Image::CreateFrom1xPNGBytes(favicon_result.bitmap_data->data(), + gfx::Image::CreateFrom1xPNGBytes(favicon_result.bitmap_data->front(), favicon_result.bitmap_data->size()))); } MaybeShow(); @@ -233,7 +233,7 @@ if (favicon_result.is_valid()) { favicon_left_->SetImage(ui::ImageModel::FromImage( - gfx::Image::CreateFrom1xPNGBytes(favicon_result.bitmap_data->data(), + gfx::Image::CreateFrom1xPNGBytes(favicon_result.bitmap_data->front(), favicon_result.bitmap_data->size()))); } MaybeShow();
diff --git a/chrome/browser/ui/views/tabs/tab_scrubber_chromeos.cc b/chrome/browser/ui/views/tabs/tab_scrubber_chromeos.cc index 03da7046..79c5143 100644 --- a/chrome/browser/ui/views/tabs/tab_scrubber_chromeos.cc +++ b/chrome/browser/ui/views/tabs/tab_scrubber_chromeos.cc
@@ -23,6 +23,7 @@ #include "ui/events/event.h" #include "ui/events/event_utils.h" #include "ui/events/gesture_detection/gesture_configuration.h" +#include "ui/views/widget/widget.h" #include "ui/wm/public/activation_client.h" #if BUILDFLAG(IS_CHROMEOS_ASH) @@ -88,10 +89,13 @@ // event passed from wayland. ui::EventType event_type = is_fling_scroll_event ? ui::ET_SCROLL_FLING_START : ui::ET_SCROLL; + // Set `y_offset` as zero so that its absolute value is always not larger than + // that of `x_offset` to represent the horizontal scroll. + constexpr float y_offset = 0.f; ui::ScrollEvent event(event_type, gfx::PointF(), gfx::PointF(), ui::EventTimeForNow(), - /*flags=*/0, x_offset, - /*y_offset=*/0.f, /*x_offset_ordinal=*/0.f, + /*flags=*/0, x_offset, y_offset, + /*x_offset_ordinal=*/0.f, /*y_offset_ordinal=*/0.f, kFingerCount); OnScrollEvent(&event); } @@ -155,6 +159,12 @@ return; } + // If the scroll is vertical, do not start scrubbing. + if (!scrubbing_ && + std::abs(event->x_offset()) < std::abs(event->y_offset())) { + return; + } + // We are handling the event. event->SetHandled(); @@ -202,6 +212,14 @@ if (browser != browser_) return; +#if BUILDFLAG(IS_CHROMEOS_ASH) + if (browser_) { + BrowserView::GetBrowserViewForBrowser(browser_) + ->GetWidget() + ->ReleaseCapture(); + } +#endif // BUILDFLAG(IS_CHROMEOS_ASH) + activate_timer_.Stop(); swipe_x_ = -1; swipe_y_ = -1; @@ -273,6 +291,13 @@ } tab_strip_->AddObserver(this); + +#if BUILDFLAG(IS_CHROMEOS_ASH) + // Capture the event so that the scroll event will not be handled by other + // clients. This is required to work well with overview mode gesture, and not + // needed for Lacros since the overview mode handling is done on Ash. + browser_view->GetWidget()->SetCapture(/*view=*/nullptr); +#endif // BUILDFLAG(IS_CHROMEOS_ASH) } bool TabScrubberChromeOS::FinishScrub(bool activate) { @@ -281,6 +306,11 @@ if (browser_ && browser_->window()) { BrowserView* browser_view = BrowserView::GetBrowserViewForBrowser(browser_); + +#if BUILDFLAG(IS_CHROMEOS_ASH) + browser_view->GetWidget()->ReleaseCapture(); +#endif // BUILDFLAG(IS_CHROMEOS_ASH) + TabStrip* tab_strip = browser_view->tabstrip(); if (activate && highlighted_tab_ != -1) { Tab* tab = tab_strip->tab_at(highlighted_tab_);
diff --git a/chrome/browser/ui/views/tabs/tab_scrubber_chromeos_browsertest.cc b/chrome/browser/ui/views/tabs/tab_scrubber_chromeos_browsertest.cc index aefefe9..424271af 100644 --- a/chrome/browser/ui/views/tabs/tab_scrubber_chromeos_browsertest.cc +++ b/chrome/browser/ui/views/tabs/tab_scrubber_chromeos_browsertest.cc
@@ -604,6 +604,48 @@ EXPECT_EQ(0, browser()->tab_strip_model()->active_index()); } +IN_PROC_BROWSER_TEST_F(TabScrubberChromeOSTest, VerticalAndHorizontalScroll) { + auto event_generator = CreateEventGenerator(browser()); + constexpr int kOffset = 100; + + { + // If y offset is larger than x offset, the event should be recognized as a + // vertical scroll and should not begin scrubbing. + ui::ScrollEvent vertical_scroll_event( + ui::ET_SCROLL, gfx::Point(0, 0), ui::EventTimeForNow(), 0, + /*x_offset=*/0, /*y_offset=*/kOffset, + /*x_offset_ordinal_=*/0, /*y_offset=*/kOffset, + kScrubbingGestureFingerCount); + event_generator->Dispatch(&vertical_scroll_event); + EXPECT_FALSE(vertical_scroll_event.handled()); + } + + { + // If x offset is larger than y offset, the event should be recognized as a + // horizontal scroll and should begin scrubbing. + ui::ScrollEvent horizontal_scroll_event( + ui::ET_SCROLL, gfx::Point(0, 0), ui::EventTimeForNow(), 0, + /*x_offset=*/kOffset, /*y_offset=*/0, + /*x_offset_ordinal_=*/kOffset, /*y_offset=*/0, + kScrubbingGestureFingerCount); + event_generator->Dispatch(&horizontal_scroll_event); + EXPECT_TRUE(horizontal_scroll_event.handled()); + } + + { + // Finish scrubbing by dispatching fling scroll event. For finishing the + // event, it is not required to be horizontal scroll. This happens for + // example when the user start scrubbing with a horizontal scroll and the + // fingers go up at the end of the scroll. + ui::ScrollEvent fling_scroll_event( + ui::ET_SCROLL_FLING_START, gfx::Point(0, 0), ui::EventTimeForNow(), 0, + /*x_offset=*/0, /*y_offset=*/kOffset, + /*x_offset_ordinal_=*/0, /*y_offset=*/kOffset, 0); + event_generator->Dispatch(&fling_scroll_event); + EXPECT_TRUE(fling_scroll_event.handled()); + } +} + // Check scroll events other than 3-fingers scroll are not handled by // TabScrubber. IN_PROC_BROWSER_TEST_F(TabScrubberChromeOSTest, EventHandling) {
diff --git a/chrome/browser/ui/views/webid/account_selection_bubble_view.cc b/chrome/browser/ui/views/webid/account_selection_bubble_view.cc index 7a243ab7..7d7b9b2f 100644 --- a/chrome/browser/ui/views/webid/account_selection_bubble_view.cc +++ b/chrome/browser/ui/views/webid/account_selection_bubble_view.cc
@@ -93,12 +93,12 @@ if (color_utils::GetContrastRatio(dialog_background_color, *brand_background_color_) < color_utils::kMinimumVisibleContrastRatio) { - SetBgColorOverride(std::nullopt); + SetBgColorOverrideDeprecated(std::nullopt); SetEnabledTextColors(std::nullopt); return; } - SetBgColorOverride(*brand_background_color_); + SetBgColorOverrideDeprecated(*brand_background_color_); SkColor text_color; if (brand_text_color_) { // IdpNetworkRequestManager ensures that `brand_text_color_` is only set
diff --git a/chrome/browser/ui/views/webid/account_selection_bubble_view_unittest.cc b/chrome/browser/ui/views/webid/account_selection_bubble_view_unittest.cc index 2832886..22c4d97 100644 --- a/chrome/browser/ui/views/webid/account_selection_bubble_view_unittest.cc +++ b/chrome/browser/ui/views/webid/account_selection_bubble_view_unittest.cc
@@ -592,7 +592,7 @@ views::MdTextButton* button = static_cast<views::MdTextButton*>(chooser_children[1]); ASSERT_TRUE(button); - EXPECT_EQ(*(button->GetBgColorOverride()), bg_color); + EXPECT_EQ(*(button->GetBgColorOverrideDeprecated()), bg_color); } TEST_F(AccountSelectionBubbleViewTest, @@ -639,7 +639,7 @@ static_cast<views::MdTextButton*>(chooser_children[1]); ASSERT_TRUE(button); // The button color is not customized by the IDP. - EXPECT_FALSE(button->GetBgColorOverride()); + EXPECT_FALSE(button->GetBgColorOverrideDeprecated()); } TEST_F(AccountSelectionBubbleViewTest, Verifying) {
diff --git a/chrome/browser/ui/views/webid/fedcm_account_selection_view_desktop.cc b/chrome/browser/ui/views/webid/fedcm_account_selection_view_desktop.cc index da7bd0c..2200554e 100644 --- a/chrome/browser/ui/views/webid/fedcm_account_selection_view_desktop.cc +++ b/chrome/browser/ui/views/webid/fedcm_account_selection_view_desktop.cc
@@ -272,6 +272,17 @@ "IdpClosePopupToBrowserShowAccountsDuration", base::TimeTicks::Now() - idp_close_popup_time_); } + + if (GetDialogType() == DialogType::MODAL && + (state_ == State::SINGLE_ACCOUNT_PICKER || + state_ == State::MULTI_ACCOUNT_PICKER)) { + // This is a placeholder assuming the tab containing the account chooser + // will be closed. This will be updated upon user action i.e. clicking on + // account row, cancel button or use other account button. If we do not + // receive any of these actions by time the dialog is closed, it means our + // placeholder assumption is true i.e. the user has closed the tab. + modal_account_chooser_state_ = AccountChooserResult::kTabClosed; + } } void FedCmAccountSelectionView::OnAccountsDisplayed() { @@ -603,6 +614,10 @@ return; } + if (modal_account_chooser_state_) { + modal_account_chooser_state_ = AccountChooserResult::kAccountRow; + } + // If the account is a returning user or if the account is selected from UI // which shows the disclosure text or if the dialog doesn't need to ask for // the user's permission to share their id/email/name/picture, show the @@ -676,12 +691,21 @@ return; } - UMA_HISTOGRAM_BOOLEAN("Blink.FedCm.CloseVerifySheet.Desktop", - state_ == State::VERIFYING); + if (GetDialogType() == DialogType::BUBBLE) { + UMA_HISTOGRAM_BOOLEAN("Blink.FedCm.CloseVerifySheet.Desktop", + state_ == State::VERIFYING); - // Record the sheet type that the user was closing. - UMA_HISTOGRAM_ENUMERATION("Blink.FedCm.ClosedSheetType.Desktop", - GetSheetType(), SheetType::COUNT); + // Record the sheet type that the user was closing. + UMA_HISTOGRAM_ENUMERATION("Blink.FedCm.ClosedSheetType.Desktop", + GetSheetType(), SheetType::COUNT); + } + + // Check that state_ at the time of closing is an account chooser, otherwise, + // closing other dialogs can override the modal_account_chooser_state_. + if (modal_account_chooser_state_ && (state_ == State::SINGLE_ACCOUNT_PICKER || + state_ == State::MULTI_ACCOUNT_PICKER)) { + modal_account_chooser_state_ = AccountChooserResult::kCancelButton; + } // This may have been set to false when the user triggers the use other // account pop-up on the modal to prevent dismissing when the user closes the @@ -700,11 +724,19 @@ } delegate_->OnLoginToIdP(idp_config_url, idp_login_url); - is_mismatch_continue_clicked_ = true; - popup_window_state_ = - PopupWindowResult::kAccountsNotReceivedAndPopupNotClosedByIdp; - UMA_HISTOGRAM_ENUMERATION("Blink.FedCm.IdpSigninStatus.MismatchDialogResult", - MismatchDialogResult::kContinued); + + if (state_ == State::IDP_SIGNIN_STATUS_MISMATCH) { + is_mismatch_continue_clicked_ = true; + popup_window_state_ = + PopupWindowResult::kAccountsNotReceivedAndPopupNotClosedByIdp; + UMA_HISTOGRAM_ENUMERATION( + "Blink.FedCm.IdpSigninStatus.MismatchDialogResult", + MismatchDialogResult::kContinued); + } + + if (modal_account_chooser_state_) { + modal_account_chooser_state_ = AccountChooserResult::kUseOtherAccountButton; + } } void FedCmAccountSelectionView::OnGotIt(const ui::Event& event) { @@ -896,6 +928,12 @@ *popup_window_state_); } + // If a modal account chooser was open, record the outcome. + if (modal_account_chooser_state_) { + UMA_HISTOGRAM_ENUMERATION("Blink.FedCm.Button.AccountChooserResult", + *modal_account_chooser_state_); + } + ResetAccountSelectionView(); input_protector_.reset();
diff --git a/chrome/browser/ui/views/webid/fedcm_account_selection_view_desktop.h b/chrome/browser/ui/views/webid/fedcm_account_selection_view_desktop.h index d4f349a..dc1a7be 100644 --- a/chrome/browser/ui/views/webid/fedcm_account_selection_view_desktop.h +++ b/chrome/browser/ui/views/webid/fedcm_account_selection_view_desktop.h
@@ -163,6 +163,8 @@ IdpSigninStatusPopupClosedAfterAccountsPopulated); FRIEND_TEST_ALL_PREFIXES(FedCmAccountSelectionViewDesktopTest, ClosePopupAfterVerifyingSheetShouldNotify); + FRIEND_TEST_ALL_PREFIXES(FedCmAccountSelectionViewDesktopTest, + AccountChooserResultMetric); enum class State { // User is shown message that they are not currently signed-in to IdP. @@ -227,6 +229,19 @@ kMaxValue = kAccountsNotReceivedAndPopupNotClosedByIdp }; + // This enum describes the outcome an account chooser and is used for + // histograms. Do not remove or modify existing values, but you may add new + // values at the end. This enum should be kept in sync with + // FedCmAccountChooserResult in tools/metrics/histograms/enums.xml. + enum class AccountChooserResult { + kAccountRow, + kCancelButton, + kUseOtherAccountButton, + kTabClosed, + + kMaxValue = kTabClosed + }; + // views::WidgetObserver: void OnWidgetDestroying(views::Widget* widget) override; @@ -339,6 +354,10 @@ // This is nullopt when no popup window has been opened. std::optional<PopupWindowResult> popup_window_state_; + // The current state of the modal account chooser, if initiated by user. This + // is nullopt when no modal account chooser has been opened. + std::optional<AccountChooserResult> modal_account_chooser_state_; + // An AccountSelectionViewBase to render bubble dialogs for widget flows, // otherwise returns an AccountSelectionViewBase to render modal dialogs // for button flows.
diff --git a/chrome/browser/ui/views/webid/fedcm_account_selection_view_desktop_unittest.cc b/chrome/browser/ui/views/webid/fedcm_account_selection_view_desktop_unittest.cc index a186ba5..99fb01c 100644 --- a/chrome/browser/ui/views/webid/fedcm_account_selection_view_desktop_unittest.cc +++ b/chrome/browser/ui/views/webid/fedcm_account_selection_view_desktop_unittest.cc
@@ -283,6 +283,7 @@ dialog_widget_.reset(CreateTestWidget().release()); account_selection_view_ = std::make_unique<TestAccountSelectionView>(dialog_widget_.get()); + histogram_tester_ = std::make_unique<base::HistogramTester>(); } IdentityProviderDisplayData CreateIdentityProviderDisplayData( @@ -303,6 +304,29 @@ request_permission, has_login_status_mismatch); } + std::vector<content::IdentityRequestAccount> CreateAccount( + LoginState login_state, + std::string account_id = kAccountId1) { + return {{account_id, "", "", "", GURL(), + /*login_hints=*/std::vector<std::string>(), + /*domain_hints=*/std::vector<std::string>(), + /*labels=*/std::vector<std::string>(), /*login_state=*/login_state, + /*browser_trusted_login_state=*/login_state}}; + } + + content::IdentityProviderData CreateIdentityProviderData( + std::vector<content::IdentityRequestAccount> accounts, + bool has_login_status_mismatch = false, + bool request_permission = true) { + return {kIdpEtldPlusOne, + accounts, + content::IdentityProviderMetadata(), + content::ClientMetadata(GURL(), GURL(), GURL()), + blink::mojom::RpContext::kSignIn, + request_permission, + has_login_status_mismatch}; + } + std::unique_ptr<TestFedCmAccountSelectionView> CreateAndShow( const std::vector<content::IdentityRequestAccount>& accounts, SignInMode sign_in_mode, @@ -421,8 +445,7 @@ views::ViewsTestBase::WidgetAutoclosePtr dialog_widget_; std::unique_ptr<TestAccountSelectionView> account_selection_view_; std::unique_ptr<StubAccountSelectionViewDelegate> delegate_; - - base::HistogramTester histogram_tester_; + std::unique_ptr<base::HistogramTester> histogram_tester_; }; TEST_F(FedCmAccountSelectionViewDesktopTest, SingleAccountFlow) { @@ -695,12 +718,12 @@ const std::vector<Account>& accounts = idp_data.accounts; std::unique_ptr<TestFedCmAccountSelectionView> controller = CreateAndShow(accounts, SignInMode::kAuto); - histogram_tester_.ExpectTotalCount("Blink.FedCm.ClosedSheetType.Desktop", 0); + histogram_tester_->ExpectTotalCount("Blink.FedCm.ClosedSheetType.Desktop", 0); AccountSelectionViewBase::Observer* observer = static_cast<AccountSelectionViewBase::Observer*>(controller.get()); observer->OnCloseButtonClicked(CreateMouseEvent()); - histogram_tester_.ExpectUniqueSample( + histogram_tester_->ExpectUniqueSample( "Blink.FedCm.ClosedSheetType.Desktop", static_cast<int>(FedCmAccountSelectionView::SheetType::AUTO_REAUTHN), 1); } @@ -711,7 +734,7 @@ MismatchDialogDismissedByCloseIconMetric) { std::unique_ptr<TestFedCmAccountSelectionView> controller = CreateAndShowMismatchDialog(); - histogram_tester_.ExpectTotalCount( + histogram_tester_->ExpectTotalCount( "Blink.FedCm.IdpSigninStatus.MismatchDialogResult", 0); // Emulate user clicking the close icon. @@ -719,7 +742,7 @@ views::Widget::ClosedReason::kCloseButtonClicked); controller->OnWidgetDestroying(dialog_widget_.get()); - histogram_tester_.ExpectUniqueSample( + histogram_tester_->ExpectUniqueSample( "Blink.FedCm.IdpSigninStatus.MismatchDialogResult", static_cast<int>(FedCmAccountSelectionView::MismatchDialogResult:: kDismissedByCloseIcon), @@ -732,14 +755,14 @@ MismatchDialogDismissedForOtherReasonsMetric) { std::unique_ptr<TestFedCmAccountSelectionView> controller = CreateAndShowMismatchDialog(); - histogram_tester_.ExpectTotalCount( + histogram_tester_->ExpectTotalCount( "Blink.FedCm.IdpSigninStatus.MismatchDialogResult", 0); // Emulate user closing the mismatch dialog for an unspecified reason. dialog_widget_->CloseWithReason(views::Widget::ClosedReason::kUnspecified); controller->OnWidgetDestroying(dialog_widget_.get()); - histogram_tester_.ExpectUniqueSample( + histogram_tester_->ExpectUniqueSample( "Blink.FedCm.IdpSigninStatus.MismatchDialogResult", static_cast<int>(FedCmAccountSelectionView::MismatchDialogResult:: kDismissedForOtherReasons), @@ -752,11 +775,11 @@ { std::unique_ptr<TestFedCmAccountSelectionView> controller = CreateAndShowMismatchDialog(); - histogram_tester_.ExpectTotalCount( + histogram_tester_->ExpectTotalCount( "Blink.FedCm.IdpSigninStatus.MismatchDialogResult", 0); } - histogram_tester_.ExpectUniqueSample( + histogram_tester_->ExpectUniqueSample( "Blink.FedCm.IdpSigninStatus.MismatchDialogResult", static_cast<int>(FedCmAccountSelectionView::MismatchDialogResult:: kDismissedForOtherReasons), @@ -771,14 +794,14 @@ CreateAndShowMismatchDialog(); AccountSelectionViewBase::Observer* observer = static_cast<AccountSelectionViewBase::Observer*>(controller.get()); - histogram_tester_.ExpectTotalCount( + histogram_tester_->ExpectTotalCount( "Blink.FedCm.IdpSigninStatus.MismatchDialogResult", 0); // Emulate user clicking on "Continue" button in the mismatch dialog. observer->OnLoginToIdP(GURL(kConfigUrl), GURL(kLoginUrl), CreateMouseEvent()); CreateAndShowPopupWindow(*controller); - histogram_tester_.ExpectUniqueSample( + histogram_tester_->ExpectUniqueSample( "Blink.FedCm.IdpSigninStatus.MismatchDialogResult", static_cast<int>( FedCmAccountSelectionView::MismatchDialogResult::kContinued), @@ -795,7 +818,7 @@ CreateAndShowMismatchDialog(); AccountSelectionViewBase::Observer* observer = static_cast<AccountSelectionViewBase::Observer*>(controller.get()); - histogram_tester_.ExpectTotalCount( + histogram_tester_->ExpectTotalCount( "Blink.FedCm.IdpSigninStatus.MismatchDialogResult", 0); // Emulate user clicking on "Continue" button in the mismatch dialog. @@ -804,7 +827,7 @@ CreateAndShowPopupWindow(*controller); } - histogram_tester_.ExpectUniqueSample( + histogram_tester_->ExpectUniqueSample( "Blink.FedCm.IdpSigninStatus.MismatchDialogResult", static_cast<int>( FedCmAccountSelectionView::MismatchDialogResult::kContinued), @@ -840,11 +863,11 @@ // an accounts dialog yet. EXPECT_FALSE(dialog_widget_->IsVisible()); - histogram_tester_.ExpectTotalCount( + histogram_tester_->ExpectTotalCount( "Blink.FedCm.IdpSigninStatus." "IdpClosePopupToBrowserShowAccountsDuration", 0); - histogram_tester_.ExpectTotalCount( + histogram_tester_->ExpectTotalCount( "Blink.FedCm.IdpSigninStatus.PopupWindowResult", 0); // Emulate IdP sending the IdP sign-in status header which updates the @@ -861,10 +884,10 @@ EXPECT_FALSE(account_selection_view_->show_back_button_); } - histogram_tester_.ExpectTotalCount( + histogram_tester_->ExpectTotalCount( "Blink.FedCm.IdpSigninStatus.IdpClosePopupToBrowserShowAccountsDuration", 1); - histogram_tester_.ExpectUniqueSample( + histogram_tester_->ExpectUniqueSample( "Blink.FedCm.IdpSigninStatus.PopupWindowResult", static_cast<int>(FedCmAccountSelectionView::PopupWindowResult:: kAccountsReceivedAndPopupClosedByIdp), @@ -904,11 +927,11 @@ // been closed yet. EXPECT_FALSE(dialog_widget_->IsVisible()); - histogram_tester_.ExpectTotalCount( + histogram_tester_->ExpectTotalCount( "Blink.FedCm.IdpSigninStatus." "IdpClosePopupToBrowserShowAccountsDuration", 0); - histogram_tester_.ExpectTotalCount( + histogram_tester_->ExpectTotalCount( "Blink.FedCm.IdpSigninStatus.PopupWindowResult", 0); // Emulate IdP closing the pop-up window. @@ -918,11 +941,11 @@ EXPECT_TRUE(dialog_widget_->IsVisible()); } - histogram_tester_.ExpectTotalCount( + histogram_tester_->ExpectTotalCount( "Blink.FedCm.IdpSigninStatus." "IdpClosePopupToBrowserShowAccountsDuration", 1); - histogram_tester_.ExpectUniqueSample( + histogram_tester_->ExpectUniqueSample( "Blink.FedCm.IdpSigninStatus.PopupWindowResult", static_cast<int>(FedCmAccountSelectionView::PopupWindowResult:: kAccountsReceivedAndPopupClosedByIdp), @@ -954,11 +977,11 @@ Show(*controller, idp_data.accounts, SignInMode::kExplicit, blink::mojom::RpMode::kWidget); - histogram_tester_.ExpectTotalCount( + histogram_tester_->ExpectTotalCount( "Blink.FedCm.IdpSigninStatus.PopupWindowResult", 0); } - histogram_tester_.ExpectUniqueSample( + histogram_tester_->ExpectUniqueSample( "Blink.FedCm.IdpSigninStatus.PopupWindowResult", static_cast<int>(FedCmAccountSelectionView::PopupWindowResult:: kAccountsReceivedAndPopupNotClosedByIdp), @@ -985,11 +1008,11 @@ // Emulate IdentityProvider.close() being called in the pop-up window. controller->CloseModalDialog(); - histogram_tester_.ExpectTotalCount( + histogram_tester_->ExpectTotalCount( "Blink.FedCm.IdpSigninStatus.PopupWindowResult", 0); } - histogram_tester_.ExpectUniqueSample( + histogram_tester_->ExpectUniqueSample( "Blink.FedCm.IdpSigninStatus.PopupWindowResult", static_cast<int>(FedCmAccountSelectionView::PopupWindowResult:: kAccountsNotReceivedAndPopupClosedByIdp), @@ -1013,11 +1036,11 @@ CreateMouseEvent()); CreateAndShowPopupWindow(*controller); - histogram_tester_.ExpectTotalCount( + histogram_tester_->ExpectTotalCount( "Blink.FedCm.IdpSigninStatus.PopupWindowResult", 0); } - histogram_tester_.ExpectUniqueSample( + histogram_tester_->ExpectUniqueSample( "Blink.FedCm.IdpSigninStatus.PopupWindowResult", static_cast<int>(FedCmAccountSelectionView::PopupWindowResult:: kAccountsNotReceivedAndPopupNotClosedByIdp), @@ -1207,19 +1230,10 @@ IdentityProviderDisplayData idp_data = CreateIdentityProviderDisplayData( {{kAccountId1, LoginState::kSignUp}, {kAccountId2, LoginState::kSignUp}}); - std::vector<content::IdentityRequestAccount> new_accounts = { - {kAccountId1, "", "", "", GURL(), - /*login_hints=*/std::vector<std::string>(), - /*domain_hints=*/std::vector<std::string>(), - /*labels=*/std::vector<std::string>(), LoginState::kSignUp}}; - content::IdentityProviderData new_idp_data = { - kIdpEtldPlusOne, - new_accounts, - content::IdentityProviderMetadata(), - content::ClientMetadata(GURL(), GURL(), GURL()), - blink::mojom::RpContext::kSignIn, - /*request_permission=*/true, - /*has_login_status_mismatch=*/false}; + std::vector<content::IdentityRequestAccount> new_accounts = + CreateAccount(LoginState::kSignUp); + content::IdentityProviderData new_idp_data = + CreateIdentityProviderData(new_accounts); Show(*controller, idp_data.accounts, SignInMode::kExplicit, blink::mojom::RpMode::kWidget, new_idp_data); @@ -1267,19 +1281,10 @@ IdentityProviderDisplayData idp_data2 = CreateIdentityProviderDisplayData( {{kAccountId1, LoginState::kSignUp}, {kAccountId2, LoginState::kSignUp}}); // The new account would be kAccountId2. - std::vector<content::IdentityRequestAccount> new_accounts = { - {kAccountId2, "", "", "", GURL(), - /*login_hints=*/std::vector<std::string>(), - /*domain_hints=*/std::vector<std::string>(), - /*labels=*/std::vector<std::string>(), LoginState::kSignUp}}; - content::IdentityProviderData new_idp_data = { - kIdpEtldPlusOne, - new_accounts, - content::IdentityProviderMetadata(), - content::ClientMetadata(GURL(), GURL(), GURL()), - blink::mojom::RpContext::kSignIn, - /*request_permission=*/true, - /*has_login_status_mismatch=*/false}; + std::vector<content::IdentityRequestAccount> new_accounts = + CreateAccount(LoginState::kSignUp, kAccountId2); + content::IdentityProviderData new_idp_data = + CreateIdentityProviderData(new_accounts); Show(*controller, idp_data2.accounts, SignInMode::kExplicit, blink::mojom::RpMode::kWidget, new_idp_data); @@ -1331,19 +1336,10 @@ IdentityProviderDisplayData idp_data2 = CreateIdentityProviderDisplayData( {{kAccountId1, LoginState::kSignUp}, {kAccountId2, LoginState::kSignUp}}); // The new account would be kAccountId2. - std::vector<content::IdentityRequestAccount> new_accounts = { - {kAccountId2, "", "", "", GURL(), - /*login_hints=*/std::vector<std::string>(), - /*domain_hints=*/std::vector<std::string>(), - /*labels=*/std::vector<std::string>(), LoginState::kSignUp}}; - content::IdentityProviderData new_idp_data = { - kIdpEtldPlusOne, - new_accounts, - content::IdentityProviderMetadata(), - content::ClientMetadata(GURL(), GURL(), GURL()), - blink::mojom::RpContext::kSignIn, - /*request_permission=*/true, - /*has_login_status_mismatch=*/false}; + std::vector<content::IdentityRequestAccount> new_accounts = + CreateAccount(LoginState::kSignUp, kAccountId2); + content::IdentityProviderData new_idp_data = + CreateIdentityProviderData(new_accounts); Show(*controller, idp_data2.accounts, SignInMode::kExplicit, blink::mojom::RpMode::kButton, new_idp_data); @@ -1389,20 +1385,10 @@ IdentityProviderDisplayData idp_data2 = CreateIdentityProviderDisplayData( {{kAccountId1, LoginState::kSignUp}, {kAccountId2, LoginState::kSignUp}}); // The new account would be kAccountId2 whose login state is kSignIn. - std::vector<content::IdentityRequestAccount> new_accounts = { - {kAccountId2, "", "", "", GURL(), - /*login_hints=*/std::vector<std::string>(), - /*domain_hints=*/std::vector<std::string>(), - /*labels=*/std::vector<std::string>(), LoginState::kSignIn, - LoginState::kSignIn}}; - content::IdentityProviderData new_idp_data = { - kIdpEtldPlusOne, - new_accounts, - content::IdentityProviderMetadata(), - content::ClientMetadata(GURL(), GURL(), GURL()), - blink::mojom::RpContext::kSignIn, - /*request_permission=*/true, - /*has_login_status_mismatch=*/false}; + std::vector<content::IdentityRequestAccount> new_accounts = + CreateAccount(LoginState::kSignIn, kAccountId2); + content::IdentityProviderData new_idp_data = + CreateIdentityProviderData(new_accounts); Show(*controller, idp_data2.accounts, SignInMode::kExplicit, blink::mojom::RpMode::kButton, new_idp_data); @@ -1429,21 +1415,10 @@ // pop-up window and sending new accounts. controller->CloseModalDialog(); - std::vector<content::IdentityRequestAccount> new_accounts = { - {kAccountId1, "", "", "", GURL(), - /*login_hints=*/std::vector<std::string>(), - /*domain_hints=*/std::vector<std::string>(), - /*labels=*/std::vector<std::string>(), - /*login_state=*/LoginState::kSignIn, - /*browser_trusted_login_state=*/LoginState::kSignIn}}; - content::IdentityProviderData new_idp_data = { - kIdpEtldPlusOne, - new_accounts, - content::IdentityProviderMetadata(), - content::ClientMetadata(GURL(), GURL(), GURL()), - blink::mojom::RpContext::kSignIn, - /*request_permission=*/true, - /*has_login_status_mismatch=*/false}; + std::vector<content::IdentityRequestAccount> new_accounts = + CreateAccount(LoginState::kSignIn); + content::IdentityProviderData new_idp_data = + CreateIdentityProviderData(new_accounts); Show(*controller, new_accounts, SignInMode::kExplicit, blink::mojom::RpMode::kButton, new_idp_data); @@ -1470,21 +1445,10 @@ // pop-up window and sending new accounts. controller->CloseModalDialog(); - std::vector<content::IdentityRequestAccount> new_accounts = { - {kAccountId1, "", "", "", GURL(), - /*login_hints=*/std::vector<std::string>(), - /*domain_hints=*/std::vector<std::string>(), - /*labels=*/std::vector<std::string>(), - /*login_state=*/LoginState::kSignIn, - /*browser_trusted_login_state=*/LoginState::kSignUp}}; - content::IdentityProviderData new_idp_data = { - kIdpEtldPlusOne, - new_accounts, - content::IdentityProviderMetadata(), - content::ClientMetadata(GURL(), GURL(), GURL()), - blink::mojom::RpContext::kSignIn, - /*request_permission=*/true, - /*has_login_status_mismatch=*/false}; + std::vector<content::IdentityRequestAccount> new_accounts = + CreateAccount(LoginState::kSignUp); + content::IdentityProviderData new_idp_data = + CreateIdentityProviderData(new_accounts); Show(*controller, new_accounts, SignInMode::kExplicit, blink::mojom::RpMode::kButton, new_idp_data); @@ -2078,3 +2042,141 @@ account_selection_view_->sheet_type_); } } + +// Tests that the correct account chooser result metrics are recorded. +TEST_F(FedCmAccountSelectionViewDesktopTest, AccountChooserResultMetric) { + IdentityProviderDisplayData idp_data = + CreateIdentityProviderDisplayData({{kAccountId1, LoginState::kSignUp}}); + auto CheckForSampleAndReset( + [&](FedCmAccountSelectionView::AccountChooserResult result) { + histogram_tester_->ExpectUniqueSample( + "Blink.FedCm.Button.AccountChooserResult", static_cast<int>(result), + 1); + histogram_tester_ = std::make_unique<base::HistogramTester>(); + }); + + // The AccountChooserResult metric is recorded in OnDismiss, therefore, we + // check for the histogram after the TestFedCmAccountSelectionView goes out + // of scope. + { + // User clicks on account row. + std::unique_ptr<TestFedCmAccountSelectionView> controller = + CreateAndShow(idp_data.accounts, SignInMode::kExplicit, + blink::mojom::RpMode::kButton); + AccountSelectionViewBase::Observer* observer = + static_cast<AccountSelectionViewBase::Observer*>(controller.get()); + observer->OnAccountSelected(idp_data.accounts[0], idp_data, + CreateMouseEvent()); + } + CheckForSampleAndReset( + FedCmAccountSelectionView::AccountChooserResult::kAccountRow); + + { + // User clicks on cancel button. + std::unique_ptr<TestFedCmAccountSelectionView> controller = + CreateAndShow(idp_data.accounts, SignInMode::kExplicit, + blink::mojom::RpMode::kButton); + AccountSelectionViewBase::Observer* observer = + static_cast<AccountSelectionViewBase::Observer*>(controller.get()); + observer->OnCloseButtonClicked(CreateMouseEvent()); + } + CheckForSampleAndReset( + FedCmAccountSelectionView::AccountChooserResult::kCancelButton); + + { + // User clicks on use other account button. + std::unique_ptr<TestFedCmAccountSelectionView> controller = + CreateAndShow(idp_data.accounts, SignInMode::kExplicit, + blink::mojom::RpMode::kButton); + AccountSelectionViewBase::Observer* observer = + static_cast<AccountSelectionViewBase::Observer*>(controller.get()); + observer->OnLoginToIdP(GURL(kConfigUrl), GURL(kLoginUrl), + CreateMouseEvent()); + } + CheckForSampleAndReset( + FedCmAccountSelectionView::AccountChooserResult::kUseOtherAccountButton); + + { + // User closes the tab or window. + std::unique_ptr<TestFedCmAccountSelectionView> controller = + CreateAndShow(idp_data.accounts, SignInMode::kExplicit, + blink::mojom::RpMode::kButton); + } + CheckForSampleAndReset( + FedCmAccountSelectionView::AccountChooserResult::kTabClosed); + + { + // Widget flow should not record a sample. + std::unique_ptr<TestFedCmAccountSelectionView> controller = + CreateAndShow(idp_data.accounts, SignInMode::kExplicit, + blink::mojom::RpMode::kWidget); + } + histogram_tester_->ExpectTotalCount("Blink.FedCm.Button.AccountChooserResult", + 0); + + { + // Non-returning user signing in via IDP sign-in pop-up should not record a + // sample. + std::unique_ptr<TestFedCmAccountSelectionView> controller = + CreateAndShowLoadingDialog(); + AccountSelectionViewBase::Observer* observer = + static_cast<AccountSelectionViewBase::Observer*>(controller.get()); + + // Emulate the login to IdP flow. + observer->OnLoginToIdP(GURL(kConfigUrl), GURL(kLoginUrl), + CreateMouseEvent()); + CreateAndShowPopupWindow(*controller); + + // Emulate user completing the sign-in flow and IdP prompts closing the + // pop-up window and sending new accounts. + controller->CloseModalDialog(); + + std::vector<content::IdentityRequestAccount> new_accounts = + CreateAccount(LoginState::kSignUp); + content::IdentityProviderData new_idp_data = + CreateIdentityProviderData(new_accounts); + + Show(*controller, new_accounts, SignInMode::kExplicit, + blink::mojom::RpMode::kButton, new_idp_data); + + // User is shown the request permission dialog, skipping the account + // chooser. + EXPECT_EQ(TestAccountSelectionView::SheetType::kRequestPermission, + account_selection_view_->sheet_type_); + } + histogram_tester_->ExpectTotalCount("Blink.FedCm.Button.AccountChooserResult", + 0); + + { + // Returning user signing in via IDP sign-in pop-up should not record a + // sample. + std::unique_ptr<TestFedCmAccountSelectionView> controller = + CreateAndShowLoadingDialog(); + AccountSelectionViewBase::Observer* observer = + static_cast<AccountSelectionViewBase::Observer*>(controller.get()); + + // Emulate the login to IdP flow. + observer->OnLoginToIdP(GURL(kConfigUrl), GURL(kLoginUrl), + CreateMouseEvent()); + CreateAndShowPopupWindow(*controller); + + // Emulate user completing the sign-in flow and IdP prompts closing the + // pop-up window and sending new accounts. + controller->CloseModalDialog(); + + std::vector<content::IdentityRequestAccount> new_accounts = + CreateAccount(LoginState::kSignIn); + content::IdentityProviderData new_idp_data = + CreateIdentityProviderData(new_accounts); + + Show(*controller, new_accounts, SignInMode::kExplicit, + blink::mojom::RpMode::kButton, new_idp_data); + + // User is shown the verifying dialog, skipping both the account chooser and + // request permission dialog. + EXPECT_EQ(TestAccountSelectionView::SheetType::kVerifying, + account_selection_view_->sheet_type_); + } + histogram_tester_->ExpectTotalCount("Blink.FedCm.Button.AccountChooserResult", + 0); +}
diff --git a/chrome/browser/ui/webui/ash/mako/mako_rewrite_view.cc b/chrome/browser/ui/webui/ash/mako/mako_rewrite_view.cc index ee59eb0..3291884 100644 --- a/chrome/browser/ui/webui/ash/mako/mako_rewrite_view.cc +++ b/chrome/browser/ui/webui/ash/mako/mako_rewrite_view.cc
@@ -85,6 +85,14 @@ GetWidget()->SetBounds(widget_bounds); } +void MakoRewriteView::SetContentsBounds(content::WebContents* source, + const gfx::Rect& bounds) { + if (views::WebView* web_view_ptr = web_view()) { + web_view_ptr->SetPreferredSize(bounds.size()); + } + GetWidget()->SetBounds(bounds); +} + void MakoRewriteView::ShowUI() { WebUIBubbleDialogView::ShowUI(); // TODO(b/321585877): Remove feature flag for dragging support.
diff --git a/chrome/browser/ui/webui/ash/mako/mako_rewrite_view.h b/chrome/browser/ui/webui/ash/mako/mako_rewrite_view.h index e9e4c98..712ee7d2 100644 --- a/chrome/browser/ui/webui/ash/mako/mako_rewrite_view.h +++ b/chrome/browser/ui/webui/ash/mako/mako_rewrite_view.h
@@ -34,6 +34,8 @@ void DraggableRegionsChanged( const std::vector<blink::mojom::DraggableRegionPtr>& regions, content::WebContents* contents) override; + void SetContentsBounds(content::WebContents* source, + const gfx::Rect& new_size) override; // MakoBubbleEventHandler::Delegate const std::optional<SkRegion> GetDraggableRegion() override;
diff --git a/chrome/browser/ui/webui/ash/settings/pages/a11y/accessibility_section.cc b/chrome/browser/ui/webui/ash/settings/pages/a11y/accessibility_section.cc index ab1a469e..54cbdc6 100644 --- a/chrome/browser/ui/webui/ash/settings/pages/a11y/accessibility_section.cc +++ b/chrome/browser/ui/webui/ash/settings/pages/a11y/accessibility_section.cc
@@ -1432,6 +1432,11 @@ "ChromeOS.Settings.Accessibility.ReducedAnimations.Enabled", value.GetBool()); return true; + case mojom::Setting::kPdfOcrOnOff: + base::UmaHistogramBoolean( + "ChromeOS.Settings.Accessibility.PdfOcr.Enabled", + value.GetBool()); + return true; default: return false; }
diff --git a/chrome/browser/ui/webui/ash/user_image_source.cc b/chrome/browser/ui/webui/ash/user_image_source.cc index 98fae4b..ecf41dfe 100644 --- a/chrome/browser/ui/webui/ash/user_image_source.cc +++ b/chrome/browser/ui/webui/ash/user_image_source.cc
@@ -84,10 +84,10 @@ gfx::ImageSkia* image = ui::ResourceBundle::GetSharedInstance().GetImageSkiaNamed(resource_id); float scale = ui::GetScaleForResourceScaleFactor(scale_factor); - auto data = base::MakeRefCounted<base::RefCountedBytes>(); + scoped_refptr<base::RefCountedBytes> data(new base::RefCountedBytes); gfx::PNGCodec::EncodeBGRASkBitmap(image->GetRepresentation(scale).GetBitmap(), false /* discard transparency */, - &data->as_vector()); + &data->data()); return data; } @@ -114,7 +114,7 @@ } scoped_refptr<base::RefCountedBytes> data(new base::RefCountedBytes); gfx::PNGCodec::EncodeBGRASkBitmap(bitmap, false /* discard transparency */, - &data->as_vector()); + &data->data()); return data; } @@ -143,7 +143,7 @@ scoped_refptr<base::RefCountedBytes> data(new base::RefCountedBytes); gfx::PNGCodec::EncodeBGRASkBitmap(*user->GetImage().bitmap(), false /* discard transparency */, - &data->as_vector()); + &data->data()); return data; } }
diff --git a/chrome/browser/ui/webui/extensions/extension_icon_source.cc b/chrome/browser/ui/webui/extensions/extension_icon_source.cc index 0e39174..a80e3f2 100644 --- a/chrome/browser/ui/webui/extensions/extension_icon_source.cc +++ b/chrome/browser/ui/webui/extensions/extension_icon_source.cc
@@ -46,7 +46,7 @@ scoped_refptr<base::RefCountedMemory> BitmapToMemory(const SkBitmap* image) { auto image_bytes = base::MakeRefCounted<base::RefCountedBytes>(); - gfx::PNGCodec::EncodeBGRASkBitmap(*image, false, &image_bytes->as_vector()); + gfx::PNGCodec::EncodeBGRASkBitmap(*image, false, &image_bytes->data()); return image_bytes; } @@ -251,9 +251,8 @@ std::move(request->callback).Run(bitmap_result.bitmap_data.get()); ClearData(request_id); } else { - FinalizeImage(ToBitmap(bitmap_result.bitmap_data->data(), - bitmap_result.bitmap_data->size()), - request_id); + FinalizeImage(ToBitmap(bitmap_result.bitmap_data->front(), + bitmap_result.bitmap_data->size()), request_id); } }
diff --git a/chrome/browser/ui/webui/fileicon_source.cc b/chrome/browser/ui/webui/fileicon_source.cc index 2c5a10d..5bd039c 100644 --- a/chrome/browser/ui/webui/fileicon_source.cc +++ b/chrome/browser/ui/webui/fileicon_source.cc
@@ -89,7 +89,7 @@ scoped_refptr<base::RefCountedBytes> icon_data(new base::RefCountedBytes); gfx::PNGCodec::EncodeBGRASkBitmap( icon->ToImageSkia()->GetRepresentation(scale_factor).GetBitmap(), false, - &icon_data->as_vector()); + &icon_data->data()); std::move(callback).Run(icon_data.get()); } else { @@ -138,7 +138,7 @@ scoped_refptr<base::RefCountedBytes> icon_data(new base::RefCountedBytes); gfx::PNGCodec::EncodeBGRASkBitmap( icon.ToImageSkia()->GetRepresentation(details.scale_factor).GetBitmap(), - false, &icon_data->as_vector()); + false, &icon_data->data()); std::move(details.callback).Run(icon_data.get()); } else {
diff --git a/chrome/browser/ui/webui/interstitials/interstitial_ui.cc b/chrome/browser/ui/webui/interstitials/interstitial_ui.cc index f21d71a..0b3c1eb 100644 --- a/chrome/browser/ui/webui/interstitials/interstitial_ui.cc +++ b/chrome/browser/ui/webui/interstitials/interstitial_ui.cc
@@ -577,7 +577,7 @@ IDR_SECURITY_INTERSTITIAL_UI_HTML); } scoped_refptr<base::RefCountedString> html_bytes = new base::RefCountedString; - html_bytes->as_string() = html; + html_bytes->data().assign(html.begin(), html.end()); std::move(callback).Run(html_bytes.get()); }
diff --git a/chrome/browser/ui/webui/new_tab_page/new_tab_page_handler.cc b/chrome/browser/ui/webui/new_tab_page/new_tab_page_handler.cc index d8b91e7..195b1e6a 100644 --- a/chrome/browser/ui/webui/new_tab_page/new_tab_page_handler.cc +++ b/chrome/browser/ui/webui/new_tab_page/new_tab_page_handler.cc
@@ -1377,7 +1377,7 @@ } auto image_doodle = new_tab_page::mojom::AllModeImageDoodle::New(); image_doodle->light = MakeImageDoodle( - logo->metadata.type, logo->encoded_image->as_string(), + logo->metadata.type, logo->encoded_image->data(), logo->metadata.mime_type, logo->metadata.animated_url, logo->metadata.width_px, logo->metadata.height_px, "#ffffff", logo->metadata.share_button_x, logo->metadata.share_button_y, @@ -1386,7 +1386,7 @@ logo->metadata.cta_log_url); if (logo->dark_encoded_image) { image_doodle->dark = MakeImageDoodle( - logo->metadata.type, logo->dark_encoded_image->as_string(), + logo->metadata.type, logo->dark_encoded_image->data(), logo->metadata.dark_mime_type, logo->metadata.dark_animated_url, logo->metadata.dark_width_px, logo->metadata.dark_height_px, logo->metadata.dark_background_color,
diff --git a/chrome/browser/ui/webui/new_tab_page/untrusted_source.cc b/chrome/browser/ui/webui/new_tab_page/untrusted_source.cc index 7e95371..6e74e2c 100644 --- a/chrome/browser/ui/webui/new_tab_page/untrusted_source.cc +++ b/chrome/browser/ui/webui/new_tab_page/untrusted_source.cc
@@ -44,8 +44,10 @@ ui::ResourceBundle& bundle = ui::ResourceBundle::GetSharedInstance(); scoped_refptr<base::RefCountedMemory> bytes = bundle.LoadDataResourceBytes(resource_id); + base::StringPiece string_piece(reinterpret_cast<const char*>(bytes->front()), + bytes->size()); return ui::ReplaceTemplateExpressions( - base::as_string_view(*bytes), replacements, + string_piece, replacements, /* skip_unexpected_placeholder_check= */ true); }
diff --git a/chrome/browser/ui/webui/ntp/ntp_resource_cache.cc b/chrome/browser/ui/webui/ntp/ntp_resource_cache.cc index 870aad36..a385abe 100644 --- a/chrome/browser/ui/webui/ntp/ntp_resource_cache.cc +++ b/chrome/browser/ui/webui/ntp/ntp_resource_cache.cc
@@ -87,8 +87,10 @@ std::string ReplaceTemplateExpressions( const scoped_refptr<base::RefCountedMemory>& bytes, const ui::TemplateReplacements& replacements) { - return ui::ReplaceTemplateExpressions(base::as_string_view(*bytes), - replacements); + return ui::ReplaceTemplateExpressions( + base::StringPiece(reinterpret_cast<const char*>(bytes->front()), + bytes->size()), + replacements); } } // namespace
diff --git a/chrome/browser/ui/webui/print_preview/extension_printer_handler_unittest.cc b/chrome/browser/ui/webui/print_preview/extension_printer_handler_unittest.cc index 8220870..a6a2c76 100644 --- a/chrome/browser/ui/webui/print_preview/extension_printer_handler_unittest.cc +++ b/chrome/browser/ui/webui/print_preview/extension_printer_handler_unittest.cc
@@ -288,7 +288,7 @@ std::string RefCountedMemoryToString( scoped_refptr<base::RefCountedMemory> memory) { - return std::string(base::as_string_view(*memory)); + return std::string(memory->front_as<char>(), memory->size()); } // Fake PwgRasterConverter used in the tests. @@ -322,7 +322,7 @@ return; } - memory.mapping.GetMemoryAsSpan<uint8_t>().copy_from(*data); + memcpy(memory.mapping.memory(), data->front(), data->size()); conversion_settings_ = conversion_settings; bitmap_settings_ = bitmap_settings; std::move(callback).Run(std::move(memory.region));
diff --git a/chrome/browser/ui/webui/print_preview/print_preview_handler.cc b/chrome/browser/ui/webui/print_preview/print_preview_handler.cc index 705accaa..1a1296f 100644 --- a/chrome/browser/ui/webui/print_preview/print_preview_handler.cc +++ b/chrome/browser/ui/webui/print_preview/print_preview_handler.cc
@@ -730,6 +730,7 @@ return; } DCHECK(data->size()); + DCHECK(data->front()); // After validating |settings|, record metrics. const mojom::RequestPrintPreviewParams* request_params = GetRequestParams();
diff --git a/chrome/browser/ui/webui/print_preview/print_preview_handler_unittest.cc b/chrome/browser/ui/webui/print_preview/print_preview_handler_unittest.cc index 375729b4..54651b6 100644 --- a/chrome/browser/ui/webui/print_preview/print_preview_handler_unittest.cc +++ b/chrome/browser/ui/webui/print_preview/print_preview_handler_unittest.cc
@@ -409,7 +409,8 @@ base::Value::Dict settings, scoped_refptr<base::RefCountedMemory> data, const std::string& callback_id) override { - ASSERT_EQ(base::as_string_view(*data), kTestData); + ASSERT_EQ(base::StringPiece(data->front_as<const char>(), data->size()), + kTestData); print_called_after_scan_ = true; PrintPreviewHandler::FinishHandleDoPrint(user_action, std::move(settings), data, callback_id);
diff --git a/chrome/browser/ui/webui/sanitized_image_source.cc b/chrome/browser/ui/webui/sanitized_image_source.cc index 0f7b0001..163ff18 100644 --- a/chrome/browser/ui/webui/sanitized_image_source.cc +++ b/chrome/browser/ui/webui/sanitized_image_source.cc
@@ -347,10 +347,10 @@ const bool success = encode_type == RequestAttributes::EncodeType::kWebP ? gfx::WebpCodec::Encode(bitmap, /*quality=*/90, - &encoded->as_vector()) + &encoded->data()) : gfx::PNGCodec::EncodeBGRASkBitmap( bitmap, /*discard_transparency=*/false, - &encoded->as_vector()); + &encoded->data()); return success ? encoded : base::MakeRefCounted<base::RefCountedBytes>(); },
diff --git a/chrome/browser/ui/webui/search_engine_choice/search_engine_choice_ui_browsertest.cc b/chrome/browser/ui/webui/search_engine_choice/search_engine_choice_ui_browsertest.cc index 5713b7d..af8b179d 100644 --- a/chrome/browser/ui/webui/search_engine_choice/search_engine_choice_ui_browsertest.cc +++ b/chrome/browser/ui/webui/search_engine_choice/search_engine_choice_ui_browsertest.cc
@@ -297,7 +297,13 @@ base::CallbackListSubscription create_services_subscription_; }; -IN_PROC_BROWSER_TEST_P(SearchEngineChoiceUIPixelTest, InvokeUi_default) { +// TODO(crbug.com/335549659): Re-enable test. +#if BUILDFLAG(IS_WIN) +#define MAYBE_InvokeUi_default DISABLED_InvokeUi_default +#else +#define MAYBE_InvokeUi_default InvokeUi_default +#endif +IN_PROC_BROWSER_TEST_P(SearchEngineChoiceUIPixelTest, MAYBE_InvokeUi_default) { ShowAndVerifyUi(); }
diff --git a/chrome/browser/ui/webui/test_files_request_filter.cc b/chrome/browser/ui/webui/test_files_request_filter.cc index 906a1173..5d94301 100644 --- a/chrome/browser/ui/webui/test_files_request_filter.cc +++ b/chrome/browser/ui/webui/test_files_request_filter.cc
@@ -43,7 +43,7 @@ &contents)); base::RefCountedString* ref_contents = new base::RefCountedString(); - ref_contents->as_string() = contents; + ref_contents->data() = contents; std::move(callback).Run(ref_contents); }
diff --git a/chrome/browser/ui/webui/theme_source.cc b/chrome/browser/ui/webui/theme_source.cc index b7a7542..04e8979 100644 --- a/chrome/browser/ui/webui/theme_source.cc +++ b/chrome/browser/ui/webui/theme_source.cc
@@ -73,7 +73,7 @@ DCHECK_CURRENTLY_ON(content::BrowserThread::UI); const gfx::ImageSkiaRep& rep = image.GetRepresentation(scale); gfx::PNGCodec::EncodeBGRASkBitmap( - rep.GetBitmap(), false /* discard transparency */, &data->as_vector()); + rep.GetBitmap(), false /* discard transparency */, &data->data()); } } // namespace
diff --git a/chrome/browser/ui/webui/top_chrome/webui_contents_wrapper.cc b/chrome/browser/ui/webui/top_chrome/webui_contents_wrapper.cc index ed6d9f8..1e5b78c7 100644 --- a/chrome/browser/ui/webui/top_chrome/webui_contents_wrapper.cc +++ b/chrome/browser/ui/webui/top_chrome/webui_contents_wrapper.cc
@@ -213,6 +213,13 @@ } } +void WebUIContentsWrapper::SetContentsBounds(content::WebContents* source, + const gfx::Rect& bounds) { + if (host_) { + host_->SetContentsBounds(source, bounds); + } +} + void WebUIContentsWrapper::PrimaryPageChanged(content::Page& page) { if (webui_resizes_host_) { EnableAutoResizeForWebContents(web_contents_.get());
diff --git a/chrome/browser/ui/webui/top_chrome/webui_contents_wrapper.h b/chrome/browser/ui/webui/top_chrome/webui_contents_wrapper.h index 22a8449..e878fa6 100644 --- a/chrome/browser/ui/webui/top_chrome/webui_contents_wrapper.h +++ b/chrome/browser/ui/webui/top_chrome/webui_contents_wrapper.h
@@ -65,6 +65,8 @@ virtual void DraggableRegionsChanged( const std::vector<blink::mojom::DraggableRegionPtr>& regions, content::WebContents* contents) {} + virtual void SetContentsBounds(content::WebContents* source, + const gfx::Rect& bounds) {} }; WebUIContentsWrapper(const GURL& webui_url, @@ -105,6 +107,8 @@ void DraggableRegionsChanged( const std::vector<blink::mojom::DraggableRegionPtr>& regions, content::WebContents* contents) override; + void SetContentsBounds(content::WebContents* source, + const gfx::Rect& bounds) override; // content::WebContentsObserver: void PrimaryPageChanged(content::Page& page) override;
diff --git a/chrome/browser/web_applications/BUILD.gn b/chrome/browser/web_applications/BUILD.gn index ef596c7..747624c 100644 --- a/chrome/browser/web_applications/BUILD.gn +++ b/chrome/browser/web_applications/BUILD.gn
@@ -447,7 +447,6 @@ "//chrome/browser/browsing_data:constants", "//chrome/browser/favicon", "//chrome/browser/profiles:profile", - "//chrome/browser/shortcuts", "//chrome/common", "//chrome/common:chrome_features", "//chrome/common:non_code_constants", @@ -712,7 +711,6 @@ "//content/test:test_support", "//services/data_decoder/public/cpp:test_support", "//testing/gtest", - "//ui/gfx:test_support", "//ui/webui", ] if (is_chromeos_ash) {
diff --git a/chrome/browser/web_applications/commands/fetch_manifest_and_install_command_unittest.cc b/chrome/browser/web_applications/commands/fetch_manifest_and_install_command_unittest.cc index 4c021cd..449bf07c 100644 --- a/chrome/browser/web_applications/commands/fetch_manifest_and_install_command_unittest.cc +++ b/chrome/browser/web_applications/commands/fetch_manifest_and_install_command_unittest.cc
@@ -56,7 +56,6 @@ #include "ui/color/color_provider_utils.h" #include "ui/gfx/color_utils.h" #include "ui/gfx/geometry/size.h" -#include "ui/gfx/test/sk_gmock_support.h" #if BUILDFLAG(IS_CHROMEOS_ASH) #include "ash/components/arc/mojom/intent_helper.mojom.h" @@ -72,6 +71,54 @@ namespace web_app { namespace { +MATCHER_P(EqualsBitmap, expected_bmp, "") { + // Number of pixels with an error + int error_pixels_count = 0; + + gfx::Rect error_bounding_rect = gfx::Rect(); + + // Check that bitmaps have identical dimensions. + if (arg.width() != expected_bmp.width()) { + *result_listener << "where widths do not match, actual: " << arg.width() + << ", expected: " << expected_bmp.width(); + return false; + } + if (arg.height() != expected_bmp.height()) { + *result_listener << "where heights do not match, actual: " << arg.height() + << ", expected: " << expected_bmp.height(); + return false; + } + + for (int x = 0; x < arg.width(); ++x) { + for (int y = 0; y < arg.height(); ++y) { + SkColor actual_color = arg.getColor(x, y); + SkColor expected_color = expected_bmp.getColor(x, y); + if (actual_color != expected_color) { + ++error_pixels_count; + error_bounding_rect.Union(gfx::Rect(x, y, 1, 1)); + } + } + } + + if (error_pixels_count != 0) { + *result_listener << "Number of pixel with an error: " << error_pixels_count + << "\nError Bounding Box : " + << error_bounding_rect.ToString() << "\n"; + int sample_x = expected_bmp.width() / 2; + int sample_y = expected_bmp.height() / 2; + std::string expected_color = color_utils::SkColorToRgbaString( + expected_bmp.getColor(sample_x, sample_y)); + std::string actual_color = + color_utils::SkColorToRgbaString(arg.getColor(sample_x, sample_y)); + *result_listener << "Sample pixel comparison at " << sample_x << "x" + << sample_y << ": Expected " << expected_color + << ", actual " << actual_color; + return false; + } + + return true; +} + class FetchManifestAndInstallCommandTest : public WebAppTest { public: const GURL kWebAppUrl = GURL("https://example.com/path/index.html"); @@ -997,7 +1044,7 @@ ASSERT_TRUE(icons_future.Wait()); std::map<SquareSizePx, SkBitmap> bitmaps = icons_future.Get(); EXPECT_THAT(bitmaps[icon_size::k256], - gfx::test::EqualsBitmap(GenerateExpected256Icon())); + EqualsBitmap(GenerateExpected256Icon())); EXPECT_EQ(IsDiyApp(), provider()->registrar_unsafe().IsDiyApp(app_id));
diff --git a/chrome/browser/web_applications/os_integration/web_app_shortcut_mac.mm b/chrome/browser/web_applications/os_integration/web_app_shortcut_mac.mm index 6b14fbf..c2553ac 100644 --- a/chrome/browser/web_applications/os_integration/web_app_shortcut_mac.mm +++ b/chrome/browser/web_applications/os_integration/web_app_shortcut_mac.mm
@@ -52,7 +52,6 @@ #include "cc/paint/paint_flags.h" #import "chrome/browser/mac/dock.h" #include "chrome/browser/shell_integration.h" -#include "chrome/browser/shortcuts/platform_util_mac.h" #include "chrome/browser/web_applications/os_integration/icns_encoder.h" #include "chrome/browser/web_applications/os_integration/os_integration_test_override.h" #include "chrome/browser/web_applications/os_integration/web_app_shortcut.h" @@ -721,7 +720,7 @@ using ResourceIDToImage = std::map<int, NSImageRep*>; -// Generates a map of NSImageReps used by SetWorkspaceIconOnWorkerThread and +// Generates a map of NSImageReps used by SetWorkspaceIconOnFILEThread and // passes it to |io_task|. Since ui::ResourceBundle can only be used on UI // thread, this function also needs to run on UI thread, and the gfx::Images // need to be converted to NSImageReps on the UI thread due to non-thread-safety @@ -735,15 +734,18 @@ std::make_unique<ResourceIDToImage>(); // These resource ID should match to the ones used by - // SetWorkspaceIconOnWorkerThread below. + // SetWorkspaceIconOnFILEThread below. for (int id : {IDR_APPS_FOLDER_16, IDR_APPS_FOLDER_32, IDR_APPS_FOLDER_OVERLAY_128, IDR_APPS_FOLDER_OVERLAY_512}) { gfx::Image image = resource_bundle.GetNativeImageNamed(id); (*result)[id] = ImageRepForGFXImage(image); } - internals::GetShortcutIOTaskRunner()->PostTask( - FROM_HERE, base::BindOnce(std::move(io_task), std::move(result))); + base::ThreadPool::PostTask( + FROM_HERE, + {base::MayBlock(), base::TaskPriority::USER_VISIBLE, + base::TaskShutdownBehavior::BLOCK_SHUTDOWN}, + base::BindOnce(std::move(io_task), std::move(result))); } void SetWorkspaceIconOnWorkerThread(const base::FilePath& apps_directory, @@ -776,8 +778,10 @@ if (with_overlay) [folder_icon_image addRepresentation:with_overlay]; } - shortcuts::SetIconForFile(folder_icon_image, apps_directory, - base::DoNothing()); + [NSWorkspace.sharedWorkspace + setIcon:folder_icon_image + forFile:base::apple::FilePathToNSString(apps_directory) + options:0]; } // Adds a localized strings file for the Chrome Apps directory using the current @@ -1589,8 +1593,8 @@ LOG(ERROR) << "Couldn't find an Applications directory to copy app to."; return false; } - // Only set folder icons and a localized name once, as nothing should be - // changing the folder icon and name. + // Only set folder icons and a localized name once. This avoids concurrent + // calls to -[NSWorkspace setIcon:..], which is not reentrant. if (!g_have_localized_app_dir_name) { g_have_localized_app_dir_name = UpdateAppShortcutsSubdirLocalizedName(applications_dir);
diff --git a/chrome/browser/web_applications/web_app_icon_manager.cc b/chrome/browser/web_applications/web_app_icon_manager.cc index 9f71ebc..5347292 100644 --- a/chrome/browser/web_applications/web_app_icon_manager.cc +++ b/chrome/browser/web_applications/web_app_icon_manager.cc
@@ -242,14 +242,14 @@ TRACE_EVENT0("ui", "web_app_icon_manager::ReadIconBlocking"); base::FilePath icon_file = GetIconFileName(web_apps_directory, icon_id); auto icon_data = base::MakeRefCounted<base::RefCountedString>(); - if (!utils->ReadFileToString(icon_file, &icon_data->as_string())) { + if (!utils->ReadFileToString(icon_file, &icon_data->data())) { return {.error_log = {CreateError( {"Could not read icon file: ", icon_file.AsUTF8Unsafe()})}}; } TypedResult<SkBitmap> result; - if (!gfx::PNGCodec::Decode(icon_data->data(), icon_data->size(), + if (!gfx::PNGCodec::Decode(icon_data->front(), icon_data->size(), &result.value)) { return {.error_log = {CreateError({"Could not decode icon data for file: ", icon_file.AsUTF8Unsafe()})}};
diff --git a/chrome/browser/webauthn/enclave_authenticator_browsertest.cc b/chrome/browser/webauthn/enclave_authenticator_browsertest.cc index 8fedd02..a3b7364d 100644 --- a/chrome/browser/webauthn/enclave_authenticator_browsertest.cc +++ b/chrome/browser/webauthn/enclave_authenticator_browsertest.cc
@@ -639,8 +639,9 @@ DownloadAuthenticationFactorsRegistrationStateResult::State::kRecoverable; registration_state_result.key_version = kSecretVersion; registration_state_result.gpm_pin_metadata = trusted_vault::GpmPinMetadata( - "public key", EnclaveManager::MakeWrappedPINForTesting( - kSecurityDomainSecret, "123456")); + "public key", + EnclaveManager::MakeWrappedPINForTesting(kSecurityDomainSecret, "123456"), + /*expiry=*/base::Time::Now() + base::Seconds(10000)); SetMockVaultConnectionOnRequestDelegate(std::move(registration_state_result)); security_domain_service_->pretend_there_are_members();
diff --git a/chrome/browser/webauthn/enclave_manager.cc b/chrome/browser/webauthn/enclave_manager.cc index 7f6ad4c7..d5e4806 100644 --- a/chrome/browser/webauthn/enclave_manager.cc +++ b/chrome/browser/webauthn/enclave_manager.cc
@@ -4,6 +4,7 @@ #include "chrome/browser/webauthn/enclave_manager.h" +#include <cstdint> #include <utility> #include <variant> @@ -14,6 +15,7 @@ #include "base/files/important_file_writer.h" #include "base/functional/overloaded.h" #include "base/memory/ref_counted.h" +#include "base/sequence_checker.h" #include "base/stl_util.h" #include "base/strings/strcat.h" #include "base/strings/stringprintf.h" @@ -60,6 +62,7 @@ #include "google_apis/gaia/gaia_auth_util.h" #include "google_apis/gaia/gaia_constants.h" #include "google_apis/gaia/google_service_auth_error.h" +#include "net/base/features.h" #include "net/base/url_util.h" #include "net/traffic_annotation/network_traffic_annotation.h" #include "services/network/public/cpp/resource_request.h" @@ -90,6 +93,7 @@ struct EnclaveManager::PendingAction { EnclaveManager::Callback callback; bool want_registration = false; + bool renew_pin = false; std::unique_ptr<StoreKeysArgs> store_keys_args; bool setup_account = false; std::string pin; // the PIN to add to an account. @@ -174,6 +178,13 @@ return base::span<const uint8_t, N>(data, N); } +template <size_t N> +std::array<uint8_t, N> ToArray(base::span<const uint8_t, N> in) { + std::array<uint8_t, N> ret; + base::ranges::copy(in, ret.begin()); + return ret; +} + std::vector<uint8_t> ToVector(const std::string& s) { const auto span = ToSpan(s); return std::vector<uint8_t>(span.begin(), span.end()); @@ -469,6 +480,22 @@ return requests; } +// Build an enclave request to renew a PIN. +cbor::Value BuildPINRenewalRequest(std::string cert_xml, + std::string sig_xml, + base::span<const uint8_t> wrapped_secret, + base::span<const uint8_t> wrapped_pin) { + cbor::Value::MapValue request; + request.emplace(enclave::kRequestCommandKey, + enclave::kRecoveryKeyStoreRewrapCommandName); + request.emplace(enclave::kRecoveryKeyStoreCertXml, ToVector(cert_xml)); + request.emplace(enclave::kRecoveryKeyStoreSigXml, ToVector(sig_xml)); + request.emplace(enclave::kRequestWrappedSecretKey, wrapped_secret); + request.emplace(enclave::kRequestWrappedPINDataKey, wrapped_pin); + + return cbor::Value(std::move(request)); +} + cbor::Value ConcatEnclaveRequests(cbor::Value::ArrayValue head, cbor::Value::ArrayValue tail) { for (auto& request : tail) { @@ -677,13 +704,28 @@ return cert_path; } +// Stores public metadata about a PIN. This is recorded in, for example, the +// Vault metadata so that MagicArch can show the correct UI and accept GPM PIN +// entries. +struct PinMetadata { + static PinMetadata FromProto(const EnclaveLocalState::WrappedPIN& pin) { + return PinMetadata{ + .n = pin.hash_difficulty(), + .is_six_digits = + pin.form() == EnclaveLocalState::WrappedPIN::FORM_SIX_DIGITS, + .salt = ToArray<16>(ToSizedSpan<16>(pin.hash_salt()))}; + } + + int n = 0; // The scrypt `N` parameter. + bool is_six_digits = false; + std::array<uint8_t, 16> salt; +}; + // Convert the response to an enclave "recovery_key_store/wrap" command, into a // protobuf that can be sent to the recovery key store service. std::optional<std::unique_ptr<trusted_vault_pb::Vault>> RecoveryKeyStoreWrapResponseToProto( - base::span<const uint8_t> scrypt_salt, - int scrypt_n, - bool is_six_digits, + const PinMetadata& pin_metadata, const cbor::Value& recovery_key_store_wrap_response) { if (!recovery_key_store_wrap_response.is_map()) { return std::nullopt; @@ -750,12 +792,12 @@ asymmetric_key_pair->set_wrapping_key(VecToString(wrapped_wrapping_key)); trusted_vault_pb::VaultMetadata metadata; - metadata.set_lskf_type(is_six_digits + metadata.set_lskf_type(pin_metadata.is_six_digits ? trusted_vault_pb::VaultMetadata::PIN : trusted_vault_pb::VaultMetadata::PASSWORD); metadata.set_hash_type(trusted_vault_pb::VaultMetadata::SCRYPT); - metadata.set_hash_salt(VecToString(scrypt_salt)); - metadata.set_hash_difficulty(scrypt_n); + metadata.set_hash_salt(VecToString(pin_metadata.salt)); + metadata.set_hash_difficulty(pin_metadata.n); metadata.set_cert_path(std::move(*cert_path)); std::string metadata_bytes; @@ -818,37 +860,35 @@ auto ret = std::make_unique<EnclaveLocalState::WrappedPIN>(); ret->set_claim_key(VecToString(claim_key)); ret->set_generation(generation); - ret->set_form(this->is_six_digits + ret->set_form(this->metadata.is_six_digits ? EnclaveLocalState::WrappedPIN::FORM_SIX_DIGITS : EnclaveLocalState::WrappedPIN::FORM_ARBITRARY); ret->set_hash(EnclaveLocalState::WrappedPIN::HASH_SCRYPT); - ret->set_hash_difficulty(this->n); - ret->set_hash_salt(VecToString(this->salt)); + ret->set_hash_difficulty(this->metadata.n); + ret->set_hash_salt(VecToString(this->metadata.salt)); return ret; } - int n = 0; // The scrypt `N` parameter. - bool is_six_digits = false; - uint8_t salt[16]; + PinMetadata metadata; uint8_t hashed[32]; }; std::unique_ptr<HashedPIN> HashPINSlowly(std::string_view pin) { auto hashed = std::make_unique<HashedPIN>(); - RAND_bytes(hashed->salt, sizeof(hashed->salt)); + RAND_bytes(hashed->metadata.salt.data(), hashed->metadata.salt.size()); // This is the primary work factor in scrypt. This value matches // the original recommended parameters. Those are a little out // of date in 2024, but Android is using 4096. Since this work // factor falls on the server when MagicArch is used, I've stuck // with this norm. - hashed->n = 16384; - hashed->is_six_digits = + hashed->metadata.n = 16384; + hashed->metadata.is_six_digits = pin.size() == 6 && base::ranges::all_of(pin, [](char c) -> bool { return c >= '0' && c <= '9'; }); - CHECK(EVP_PBE_scrypt(pin.data(), pin.size(), hashed->salt, - sizeof(hashed->salt), hashed->n, 8, 1, + CHECK(EVP_PBE_scrypt(pin.data(), pin.size(), hashed->metadata.salt.data(), + hashed->metadata.salt.size(), hashed->metadata.n, 8, 1, /*max_mem=*/0, hashed->hashed, sizeof(hashed->hashed))); return hashed; } @@ -891,6 +931,46 @@ return wrapped_pin; } +// Parse a Vault and security domain member keys from a CBOR map. These maps +// result from enclave operations that return a Vault for insertion into the +// security domain. +static std::optional<std::pair<std::unique_ptr<trusted_vault_pb::Vault>, + trusted_vault::MemberKeysSource>> +ParseVaultAndMemberResponse(const int32_t key_version, + const PinMetadata& pin_metadata, + const cbor::Value::MapValue& response) { + auto it = response.find(cbor::Value("wrapped")); + if (it == response.end()) { + FIDO_LOG(ERROR) << "response missing 'wrapped'"; + return std::nullopt; + } + std::optional<std::unique_ptr<trusted_vault_pb::Vault>> vault = + RecoveryKeyStoreWrapResponseToProto(pin_metadata, it->second); + if (!vault) { + FIDO_LOG(ERROR) << "Failed to translate response into an UpdateVaultProto"; + return std::nullopt; + } + + it = response.find(cbor::Value("wrapped_sds")); + if (it == response.end() || !it->second.is_bytestring()) { + FIDO_LOG(ERROR) << "response has invalid 'wrapped_sds'"; + return std::nullopt; + } + const std::vector<uint8_t>& wrapped_sds = it->second.GetBytestring(); + + it = response.find(cbor::Value("member_proof")); + if (it == response.end() || !it->second.is_bytestring()) { + FIDO_LOG(ERROR) << "response has invalid 'member_proof'"; + return std::nullopt; + } + const std::vector<uint8_t>& member_proof = it->second.GetBytestring(); + + auto member_keys_source = trusted_vault::PrecomputedMemberKeys( + key_version, wrapped_sds, member_proof); + + return std::make_pair(std::move(*vault), std::move(member_keys_source)); +} + } // namespace // StateMachine performs a sequence of actions, as specified by the public @@ -940,6 +1020,7 @@ kJoiningPINToDomain, kJoiningUpdatedPINToDomain, kChangingPIN, + kRenewingPIN, }; enum class FetchedFile { @@ -1055,6 +1136,10 @@ case State::kJoiningUpdatedPINToDomain: DoJoiningUpdatedPINToDomain(std::move(event)); break; + + case State::kRenewingPIN: + DoRenewingPIN(std::move(event)); + break; } FIDO_LOG(EVENT) << ToString(initial_state) << " -" << event_str << "-> " @@ -1122,6 +1207,8 @@ return "ChangingPIN"; case State::kJoiningUpdatedPINToDomain: return "JoiningUpdatedPINToDomain"; + case State::kRenewingPIN: + return "RenewingPIN"; } } @@ -1263,6 +1350,18 @@ return; } + if (action_->renew_pin) { + if (!user_->registered()) { + state_ = State::kStop; + return; + } + + is_pin_renewal_ = true; + state_ = State::kDownloadingRecoveryKeyStoreKeys; + DownloadRecoveryKeyStoreKeys(); + return; + } + success_ = true; state_ = State::kStop; } @@ -1579,17 +1678,8 @@ } wrapped_pin_proto_ = hashed_pin_->ToWrappedPIN(generation); - cert_xml_loader_ = FetchURL( - manager_->url_loader_factory_.get(), - device::enclave::kRecoveryKeyStoreCertFileURL, - base::BindOnce(&StateMachine::FetchComplete, - weak_ptr_factory_.GetWeakPtr(), FetchedFile::kCertFile)); - sig_xml_loader_ = FetchURL( - manager_->url_loader_factory_.get(), - device::enclave::kRecoveryKeyStoreSigFileURL, - base::BindOnce(&StateMachine::FetchComplete, - weak_ptr_factory_.GetWeakPtr(), FetchedFile::kSigFile)); state_ = State::kDownloadingRecoveryKeyStoreKeys; + DownloadRecoveryKeyStoreKeys(); } void DoDownloadingRecoveryKeyStoreKeys(Event event) { @@ -1640,13 +1730,15 @@ std::string token = std::move(absl::get_if<AccessToken>(&event)->value()); if (is_pin_update_) { - // The commands to send to the enclave are different if changing a PIN. SendPINChangeRequest(std::move(token)); - return; + } else if (is_pin_renewal_) { + SendPINRenewalRequest(std::move(token)); + } else { + SendPINWrappingRequest(std::move(token)); } + } - // We have everything needed to make the enclave request to wrap the hashed - // PIN for transmission to the recovery key store. + void SendPINWrappingRequest(std::string token) { state_ = State::kWrappingPIN; enclave::Transact( manager_->network_context_factory_, enclave::GetEnclaveIdentity(), @@ -1704,6 +1796,19 @@ weak_ptr_factory_.GetWeakPtr())); } + void SendPINRenewalRequest(std::string token) { + state_ = State::kRenewingPIN; + enclave::Transact( + manager_->network_context_factory_, enclave::GetEnclaveIdentity(), + std::move(token), std::nullopt, + BuildPINRenewalRequest(std::move(*cert_xml_), std::move(*sig_xml_), + GetCurrentWrappedSecretForUser(user_).second, + ToSpan(user_->wrapped_pin().wrapped_pin())), + manager_->HardwareKeySigningCallback(), + base::BindOnce(&StateMachine::OnEnclaveResponse, + weak_ptr_factory_.GetWeakPtr())); + } + void DoWrappingPIN(Event event) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); @@ -1728,8 +1833,7 @@ ->second; std::optional<std::unique_ptr<trusted_vault_pb::Vault>> vault = - RecoveryKeyStoreWrapResponseToProto(hashed_pin_->salt, hashed_pin_->n, - hashed_pin_->is_six_digits, + RecoveryKeyStoreWrapResponseToProto(hashed_pin_->metadata, recovery_key_store_wrap_response); if (!vault) { FIDO_LOG(ERROR) @@ -1772,7 +1876,8 @@ return; } - if (!is_pin_update_) { + const bool updating_pin_member = is_pin_update_ || is_pin_renewal_; + if (!updating_pin_member) { CHECK(wrapped_pin_proto_->wrapped_pin().empty()); wrapped_pin_proto_->set_wrapped_pin(BuildWrappedPIN( *hashed_pin_, /*generation=*/0, @@ -1791,18 +1896,18 @@ const std::string previous_pin_public_key = user_->pin_public_key(); // If changing the PIN, there must be a previous PIN member public key. // If setting a first PIN, there must not be one. - CHECK(!previous_pin_public_key.empty() == is_pin_update_); + CHECK_EQ(!previous_pin_public_key.empty(), updating_pin_member); user_->set_pin_public_key(vault_public_key); - state_ = is_pin_update_ ? State::kJoiningUpdatedPINToDomain - : State::kJoiningPINToDomain; + state_ = updating_pin_member ? State::kJoiningUpdatedPINToDomain + : State::kJoiningPINToDomain; std::optional<trusted_vault::MemberKeysSource> member_keys_source = std::move(member_keys_source_); - // If changing a PIN then `member_keys_source` will have been populated by - // the enclave. Otherwise a new PIN is being set and + // If changing or renewing a PIN then `member_keys_source` will have been + // populated by the enclave. Otherwise a new PIN is being set and // `store_keys_args_for_joining_` will contain the security domain secret, // which is sufficient for calculating the member keys. - CHECK_EQ(member_keys_source.has_value(), is_pin_update_); + CHECK_EQ(member_keys_source.has_value(), updating_pin_member); if (!member_keys_source) { member_keys_source = trusted_vault::GetTrustedVaultKeysWithVersions( store_keys_args_for_joining_->keys, @@ -1812,7 +1917,8 @@ *primary_account_info_, std::move(*member_keys_source), *secure_box_pub_key, trusted_vault::GpmPinMetadata(previous_pin_public_key, - std::move(wrapped_pin_proto_serialized)), + std::move(wrapped_pin_proto_serialized), + /*expiry=*/base::Time()), base::BindOnce(&StateMachine::OnJoinedSecurityDomain, weak_ptr_factory_.GetWeakPtr())); } @@ -1892,51 +1998,59 @@ wrapped_pin_proto_->set_wrapped_pin( VecToString(wrapped_pin_value.GetBytestring())); - const cbor::Value& wrap_as_member_response_value = - response.GetArray()[1] - .GetMap() + UploadVaultAndMemberFromResponse(hashed_pin_->metadata, + response.GetArray()[1]); + } + + void DoRenewingPIN(Event event) { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + + state_ = State::kStop; + if (absl::holds_alternative<Failure>(event)) { + return; + } + + cbor::Value response = + std::move(absl::get_if<EnclaveResponse>(&event)->value()); + if (!IsAllOk(response, 1)) { + FIDO_LOG(ERROR) << "PIN renewal resulted in error response: " + << cbor::DiagnosticWriter::Write(response); + return; + } + + // The new wrapped PIN is the same as the current one. + wrapped_pin_proto_ = + std::make_unique<EnclaveLocalState::WrappedPIN>(user_->wrapped_pin()); + + UploadVaultAndMemberFromResponse( + PinMetadata::FromProto(*wrapped_pin_proto_), response.GetArray()[0]); + } + + // Start the process of uploading a Vault, and inserting it into the security + // domain, based on an enclave response. The `response` value should be an + // element from an enclave's response array. I.e. including the "ok" wrapping. + // It's assumed that `IsAllOk` has been checked and that the response is not + // an error. The `vault_` and `member_keys_source_` fields will be updated on + // success. + bool UploadVaultAndMemberFromResponse(const PinMetadata& pin_metadata, + const cbor::Value& response) { + const cbor::Value& response_value = + response.GetMap() .find(cbor::Value(enclave::kResponseSuccessKey)) ->second; - if (!wrap_as_member_response_value.is_map()) { - FIDO_LOG(ERROR) << "wrap_as_member response was not a map"; - return; + if (!response_value.is_map()) { + FIDO_LOG(ERROR) << "response was not a map"; + return false; } - const cbor::Value::MapValue& wrap_as_member_response = - wrap_as_member_response_value.GetMap(); - - auto it = wrap_as_member_response.find(cbor::Value("wrapped")); - if (it == wrap_as_member_response.end()) { - FIDO_LOG(ERROR) << "wrap_as_member response missing 'wrapped'"; - return; + const int32_t key_version = GetCurrentWrappedSecretForUser(user_).first; + std::optional<std::pair<std::unique_ptr<trusted_vault_pb::Vault>, + trusted_vault::MemberKeysSource>> + result = ParseVaultAndMemberResponse(key_version, pin_metadata, + response_value.GetMap()); + if (!result) { + return false; } - std::optional<std::unique_ptr<trusted_vault_pb::Vault>> vault = - RecoveryKeyStoreWrapResponseToProto(hashed_pin_->salt, hashed_pin_->n, - hashed_pin_->is_six_digits, - it->second); - if (!vault) { - FIDO_LOG(ERROR) - << "Failed to translate response into an UpdateVaultProto"; - return; - } - vault_ = std::move(*vault); - - it = wrap_as_member_response.find(cbor::Value("wrapped_sds")); - if (it == wrap_as_member_response.end() || !it->second.is_bytestring()) { - FIDO_LOG(ERROR) << "wrap_as_member has invalid 'wrapped_sds'"; - return; - } - const std::vector<uint8_t>& wrapped_sds = it->second.GetBytestring(); - - it = wrap_as_member_response.find(cbor::Value("member_proof")); - if (it == wrap_as_member_response.end() || !it->second.is_bytestring()) { - FIDO_LOG(ERROR) << "wrap_as_member has invalid 'member_proof'"; - return; - } - const std::vector<uint8_t>& member_proof = it->second.GetBytestring(); - - int32_t key_version = GetCurrentWrappedSecretForUser(user_).first; - member_keys_source_ = trusted_vault::PrecomputedMemberKeys( - key_version, wrapped_sds, member_proof); + std::tie(vault_, member_keys_source_) = std::move(*result); state_ = State::kWaitingForRecoveryKeyStore; recovery_key_store_request_ = @@ -1951,6 +2065,7 @@ machine->Process(status); }, weak_ptr_factory_.GetWeakPtr())); + return true; } void JoinSecurityDomain() { @@ -2043,6 +2158,19 @@ return VecToString(EncryptWrappedPIN(security_domain_secret, cbor_bytes)); } + void DownloadRecoveryKeyStoreKeys() { + cert_xml_loader_ = FetchURL( + manager_->url_loader_factory_.get(), + device::enclave::kRecoveryKeyStoreCertFileURL, + base::BindOnce(&StateMachine::FetchComplete, + weak_ptr_factory_.GetWeakPtr(), FetchedFile::kCertFile)); + sig_xml_loader_ = FetchURL( + manager_->url_loader_factory_.get(), + device::enclave::kRecoveryKeyStoreSigFileURL, + base::BindOnce(&StateMachine::FetchComplete, + weak_ptr_factory_.GetWeakPtr(), FetchedFile::kSigFile)); + } + const raw_ptr<EnclaveManager> manager_; // local_state_ contains a copy of the EnclaveManager's state from when this // StateMachine was created. @@ -2076,6 +2204,8 @@ // True if a PIN is being hashed in order to change it, rather than to set // a new PIN on an account. bool is_pin_update_ = false; + // True if the GPM PIN is being renewed without knowing or changing it. + bool is_pin_renewal_ = false; // If changing a PIN, this holds a ReAuthentication Proof Token (RAPT), if // the user is authenticating the request via doing a GAIA reauth. std::optional<std::string> rapt_; @@ -2246,6 +2376,18 @@ Act(); } +void EnclaveManager::RenewPIN(EnclaveManager::Callback callback) { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + CHECK(user_->registered()); + CHECK(user_->has_wrapped_pin()); + + auto action = std::make_unique<PendingAction>(); + action->callback = std::move(callback); + action->renew_pin = true; + pending_actions_.emplace_back(std::move(action)); + Act(); +} + void EnclaveManager::GetHardwareKeyForSignature( base::OnceCallback<void( scoped_refptr<unexportable_keys::RefCountedUnexportableSigningKey>)>
diff --git a/chrome/browser/webauthn/enclave_manager.h b/chrome/browser/webauthn/enclave_manager.h index 44e0f55..fc89b5b0 100644 --- a/chrome/browser/webauthn/enclave_manager.h +++ b/chrome/browser/webauthn/enclave_manager.h
@@ -152,6 +152,8 @@ void ChangePIN(std::string updated_pin, std::optional<std::string> rapt, Callback callback); + // Renew the current PIN. Requires `has_wrapped_pin` to be true. + void RenewPIN(Callback callback); // Get a callback to sign with the registered "hw" key. Only valid to call if // `is_ready`.
diff --git a/chrome/browser/webauthn/enclave_manager_unittest.cc b/chrome/browser/webauthn/enclave_manager_unittest.cc index d718c20d..4be409b 100644 --- a/chrome/browser/webauthn/enclave_manager_unittest.cc +++ b/chrome/browser/webauthn/enclave_manager_unittest.cc
@@ -626,7 +626,8 @@ BoolCallback add_callback; ASSERT_TRUE(manager_.AddDeviceToAccount( trusted_vault::GpmPinMetadata(std::string(kTestPINPublicKey), - GetTestWrappedPIN().SerializeAsString()), + GetTestWrappedPIN().SerializeAsString(), + /*expiry=*/base::Time()), add_callback.callback())); add_callback.WaitForCallback(); @@ -652,7 +653,8 @@ // A wrapped PIN that isn't a valid protobuf should be rejected. EXPECT_FALSE(manager_.AddDeviceToAccount( trusted_vault::GpmPinMetadata(std::string(kTestPINPublicKey), - "nonsense wrapped PIN"), + "nonsense wrapped PIN", + /*expiry=*/base::Time()), add_callback.callback())); // A valid protobuf, but which fails invariants, should be rejected. @@ -660,7 +662,8 @@ wrapped_pin.set_wrapped_pin("too short"); EXPECT_FALSE(manager_.AddDeviceToAccount( trusted_vault::GpmPinMetadata(std::string(kTestPINPublicKey), - wrapped_pin.SerializeAsString()), + wrapped_pin.SerializeAsString(), + /*expiry=*/base::Time()), add_callback.callback())); } @@ -805,7 +808,8 @@ BoolCallback add_callback; ASSERT_TRUE(manager_.AddDeviceToAccount( trusted_vault::GpmPinMetadata(std::string(kTestPINPublicKey), - GetTestWrappedPIN().SerializeAsString()), + GetTestWrappedPIN().SerializeAsString(), + /*expiry=*/base::Time()), add_callback.callback())); add_callback.WaitForCallback(); EXPECT_FALSE(std::get<0>(add_callback.result().value())); @@ -826,6 +830,37 @@ EXPECT_FALSE(std::get<0>(add_callback.result().value())); } +TEST_F(EnclaveManagerTest, RenewPIN) { + ASSERT_TRUE(Register()); + + const std::string pin = "123456"; + + BoolCallback setup_callback; + manager_.SetupWithPIN(pin, setup_callback.callback()); + setup_callback.WaitForCallback(); + ASSERT_TRUE(manager_.is_ready()); + ASSERT_TRUE(manager_.has_wrapped_pin()); + + EXPECT_EQ(security_domain_service_->num_physical_members(), 1u); + EXPECT_EQ(security_domain_service_->num_pin_members(), 1u); + + BoolCallback renew_callback; + manager_.RenewPIN(renew_callback.callback()); + renew_callback.WaitForCallback(); + EXPECT_TRUE(std::get<0>(renew_callback.result().value())); + + // The number of PIN members must not have increased because the upload should + // have reused the vault handle etc of the original. + EXPECT_EQ(security_domain_service_->num_physical_members(), 1u); + EXPECT_EQ(security_domain_service_->num_pin_members(), 1u); + + const std::optional<std::vector<uint8_t>> security_domain_secret = + FakeMagicArch::RecoverWithPIN(pin, *security_domain_service_, + *recovery_key_store_); + CHECK(security_domain_secret.has_value()); + EXPECT_EQ(manager_.TakeSecret()->second, *security_domain_secret); +} + // Tests that rely on `ScopedMockUnexportableKeyProvider` only work on // platforms where EnclaveManager uses `GetUnexportableKeyProvider`, as opposed // to `GetSoftwareUnsecureUnexportableKeyProvider`.
diff --git a/chrome/browser/webauthn/gpm_enclave_controller.cc b/chrome/browser/webauthn/gpm_enclave_controller.cc index 9925d3f..6e8fec7 100644 --- a/chrome/browser/webauthn/gpm_enclave_controller.cc +++ b/chrome/browser/webauthn/gpm_enclave_controller.cc
@@ -4,6 +4,7 @@ #include "chrome/browser/webauthn/gpm_enclave_controller.h" +#include "base/i18n/time_formatting.h" #include "base/strings/utf_string_conversions.h" #include "base/task/thread_pool.h" #include "chrome/browser/net/system_network_context_manager.h" @@ -377,7 +378,12 @@ FIDO_LOG(EVENT) << "Download account state result: " << state_str << ", key_version: " << result.key_version.value_or(0) - << ", has PIN: " << result.gpm_pin_metadata.has_value(); + << ", has PIN: " << result.gpm_pin_metadata.has_value() + << ", expiry: " + << (result.gpm_pin_metadata.has_value() + ? base::TimeFormatAsIso8601( + result.gpm_pin_metadata->expiry) + : "<none>"); if (result.gpm_pin_metadata) { pin_metadata_ = std::move(result.gpm_pin_metadata);
diff --git a/chrome/browser/xsurface_provider/android/java/src/org/chromium/chrome/browser/xsurface_provider/ProcessScopeDependencyProviderImpl.java b/chrome/browser/xsurface_provider/android/java/src/org/chromium/chrome/browser/xsurface_provider/ProcessScopeDependencyProviderImpl.java index f6e309993..7760eff 100644 --- a/chrome/browser/xsurface_provider/android/java/src/org/chromium/chrome/browser/xsurface_provider/ProcessScopeDependencyProviderImpl.java +++ b/chrome/browser/xsurface_provider/android/java/src/org/chromium/chrome/browser/xsurface_provider/ProcessScopeDependencyProviderImpl.java
@@ -5,6 +5,8 @@ package org.chromium.chrome.browser.xsurface_provider; import android.content.Context; +import android.net.ConnectivityManager; +import android.net.NetworkCapabilities; import androidx.annotation.Nullable; import androidx.annotation.VisibleForTesting; @@ -32,6 +34,7 @@ private final @Nullable LibraryResolver mLibraryResolver; private final PrivacyPreferencesManager mPrivacyPreferencesManager; private final String mApiKey; + private final ConnectivityManager mConnectivityManager; private static boolean sEnableAppFlowDebugging; @@ -48,6 +51,8 @@ } else { mLibraryResolver = null; } + mConnectivityManager = + (ConnectivityManager) mContext.getSystemService(Context.CONNECTIVITY_SERVICE); } @Override @@ -193,6 +198,17 @@ return sEnableAppFlowDebugging; } + @Override + public boolean isNetworkOnline() { + NetworkCapabilities capabilities = + mConnectivityManager.getNetworkCapabilities( + mConnectivityManager.getActiveNetwork()); + return capabilities != null + && capabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) + && capabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED) + && capabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_NOT_SUSPENDED); + } + @VisibleForTesting public static void setEnableAppFlowDebugging(boolean enable) { sEnableAppFlowDebugging = enable;
diff --git a/chrome/build/android-arm32.pgo.txt b/chrome/build/android-arm32.pgo.txt index 8be39e33..4131eb2b 100644 --- a/chrome/build/android-arm32.pgo.txt +++ b/chrome/build/android-arm32.pgo.txt
@@ -1 +1 @@ -chrome-android32-main-1713376773-43d7ce96b696638803b20e56b1ff70a14fef9c10-8cc1a248d1d7e9332208a6174ed0d44ee621affa.profdata +chrome-android32-main-1713397897-ea7f8ee2d790f07efbdacf084eb763eae582bdfb-f29000031566649b8b556aaacd29de0c72815056.profdata
diff --git a/chrome/build/lacros64.pgo.txt b/chrome/build/lacros64.pgo.txt index 7695fa40..203d81f4 100644 --- a/chrome/build/lacros64.pgo.txt +++ b/chrome/build/lacros64.pgo.txt
@@ -1 +1 @@ -chrome-chromeos-amd64-generic-main-1713355171-82b9fffaaaf88e5be6e6386b342d9944098829fa-3b980d0bd50a84f848f2bf420646bf9fbcbb1b98.profdata +chrome-chromeos-amd64-generic-main-1713398652-0acc8709c6d81b447327cd91a25831bb3d66c59a-c5099ca899261d2fcd68eb95d0570fa651dd6924.profdata
diff --git a/chrome/build/linux.pgo.txt b/chrome/build/linux.pgo.txt index af497f7..63adbcbd 100644 --- a/chrome/build/linux.pgo.txt +++ b/chrome/build/linux.pgo.txt
@@ -1 +1 @@ -chrome-linux-main-1713376773-7b0566891c51886cbdb77315dbb14db01a5e90e1-8cc1a248d1d7e9332208a6174ed0d44ee621affa.profdata +chrome-linux-main-1713397897-10dbf240db2f9878c7047ee93914740c364f23ea-f29000031566649b8b556aaacd29de0c72815056.profdata
diff --git a/chrome/build/win32.pgo.txt b/chrome/build/win32.pgo.txt index 885be35c..476aed6 100644 --- a/chrome/build/win32.pgo.txt +++ b/chrome/build/win32.pgo.txt
@@ -1 +1 @@ -chrome-win32-main-1713376773-0a2138f96e5d869c1903f37004a43d6ebfd3852e-8cc1a248d1d7e9332208a6174ed0d44ee621affa.profdata +chrome-win32-main-1713397897-8fd73f876686ca33d89172f4fd7a785fb9577d6b-f29000031566649b8b556aaacd29de0c72815056.profdata
diff --git a/chrome/build/win64.pgo.txt b/chrome/build/win64.pgo.txt index b9ee36b..4b1de17 100644 --- a/chrome/build/win64.pgo.txt +++ b/chrome/build/win64.pgo.txt
@@ -1 +1 @@ -chrome-win64-main-1713376773-ca688a73be5affd1e7003c753db25cbe2adae9e3-8cc1a248d1d7e9332208a6174ed0d44ee621affa.profdata +chrome-win64-main-1713397897-b2dc7451d7b0a056d6205a12951ec438f70f844b-f29000031566649b8b556aaacd29de0c72815056.profdata
diff --git a/chrome/renderer/accessibility/read_anything_app_controller.cc b/chrome/renderer/accessibility/read_anything_app_controller.cc index fc58798b..68758f09 100644 --- a/chrome/renderer/accessibility/read_anything_app_controller.cc +++ b/chrome/renderer/accessibility/read_anything_app_controller.cc
@@ -787,7 +787,11 @@ .SetMethod("getDisplayNameForLocale", &ReadAnythingAppController::GetDisplayNameForLocale) .SetMethod("logMetric", - &ReadAnythingAppController::LogUmaHistogramLongTimes); + &ReadAnythingAppController::LogUmaHistogramLongTimes) + .SetMethod("sendGetVoicePackInfoRequest", + &ReadAnythingAppController::SendGetVoicePackInfoRequest) + .SetMethod("sendInstallVoicePackRequest", + &ReadAnythingAppController::SendInstallVoicePackRequest); } ui::AXNodeID ReadAnythingAppController::RootId() const { @@ -1054,8 +1058,15 @@ } void ReadAnythingAppController::OnGetVoicePackInfoResponse( - read_anything::mojom::VoicePackInfoPtr voice_pack_info) const { - // TODO (b/40927698) Send the voice_pack_info to the read-aloud UI + read_anything::mojom::VoicePackInfoPtr voice_pack_info) { + std::string status = + voice_pack_info->pack_state->is_installation_state() + ? base::ToString( + voice_pack_info->pack_state->get_installation_state()) + : base::ToString(voice_pack_info->pack_state->get_error_code()); + + ExecuteJavaScript("chrome.readingMode.updateVoicePackStatus(\'" + + voice_pack_info->language + "\', \'" + status + "\');"); } void ReadAnythingAppController::SendInstallVoicePackRequest( @@ -1067,12 +1078,21 @@ } void ReadAnythingAppController::OnInstallVoicePackResponse( - read_anything::mojom::VoicePackInfoPtr voice_pack_info) const { - // TODO (b/40927698) Send the voice_pack_info to the read-aloud UI. + read_anything::mojom::VoicePackInfoPtr voice_pack_info) { // TODO (b/40927698) Investigate the fact that VoicePackManager doesn't return // the expected pack_state. Even when a voice is unavailable and not // installed, it responds "INSTALLED" in the InstallVoicePackCallback. So we // probably need to rely on GetVoicePackInfo for the pack_state. + + std::string status = + voice_pack_info->pack_state->is_installation_state() + ? base::ToString( + voice_pack_info->pack_state->get_installation_state()) + : base::ToString(voice_pack_info->pack_state->get_error_code()); + + ExecuteJavaScript( + "chrome.readingMode.updateVoicePackStatusFromInstallResponse(\'" + + voice_pack_info->language + "\', \'" + status + "\');"); } std::string ReadAnythingAppController::GetAltText(
diff --git a/chrome/renderer/accessibility/read_anything_app_controller.h b/chrome/renderer/accessibility/read_anything_app_controller.h index 5757341..05f8154 100644 --- a/chrome/renderer/accessibility/read_anything_app_controller.h +++ b/chrome/renderer/accessibility/read_anything_app_controller.h
@@ -155,10 +155,10 @@ std::string GetAltText(ui::AXNodeID ax_node_id) const; void SendGetVoicePackInfoRequest(const std::string& language) const; void OnGetVoicePackInfoResponse( - read_anything::mojom::VoicePackInfoPtr voice_pack_info) const; + read_anything::mojom::VoicePackInfoPtr voice_pack_info); void SendInstallVoicePackRequest(const std::string& language) const; void OnInstallVoicePackResponse( - read_anything::mojom::VoicePackInfoPtr voice_pack_info) const; + read_anything::mojom::VoicePackInfoPtr voice_pack_info); bool ShouldBold(ui::AXNodeID ax_node_id) const; bool IsOverline(ui::AXNodeID ax_node_id) const; bool IsLeafNode(ui::AXNodeID ax_node_id) const;
diff --git a/chrome/renderer/accessibility/read_anything_app_model.cc b/chrome/renderer/accessibility/read_anything_app_model.cc index eaca3b73..f24964b 100644 --- a/chrome/renderer/accessibility/read_anything_app_model.cc +++ b/chrome/renderer/accessibility/read_anything_app_model.cc
@@ -1347,8 +1347,12 @@ segment.text_start = 0; segment.text_end = index_in_new_node; current_granularity.AddSegment(segment); + int current_text_length = current_granularity.text.length(); current_granularity.text += anchor_node->GetTextContentUTF16().substr(0, index_in_new_node); + current_granularity.index_map.insert( + {{current_text_length, current_granularity.text.length()}, + segment.id}); current_text_index_ = index_in_new_node; if (current_text_index_ != (int)base_text.length()) { // If we're in the middle of the node, there's no need to attempt @@ -1386,8 +1390,11 @@ segment.text_start = start_index; segment.text_end = new_current_text_index; current_granularity.AddSegment(segment); + int current_text_length = current_granularity.text.length(); current_granularity.text += anchor_node->GetTextContentUTF16().substr( start_index, current_text_index_ - start_index); + current_granularity.index_map.insert( + {{current_text_length, current_granularity.text.length()}, segment.id}); // After adding the most recent granularity segment, if we're not at the // end of the node, the current nodes can be returned, as we know there's @@ -1607,3 +1614,27 @@ (position->CompareTo(*other).value_or(-1) == 0) && (position->text_offset() == other->text_offset()); } + +ui::AXNodeID ReadAnythingAppModel::GetNodeIdForCurrentSegmentIndex( + int index) const { + // If the granularity index isn't valid, return an invalid id. + if (processed_granularity_index_ >= + processed_granularities_on_current_page_.size()) { + return ui::kInvalidAXNodeID; + } + + ReadAnythingAppModel::ReadAloudCurrentGranularity current_granularity = + processed_granularities_on_current_page_[processed_granularity_index_]; + std::map<std::pair<int, int>, ui::AXNodeID> index_map = + current_granularity.index_map; + for (const auto& [range, id] : index_map) { + if (range.first <= index && range.second >= index) { + // If the given index is within a range, return the associated node id. + return id; + } + } + + // If the index isn't part of the current granularity's ranges, return an + // invalid id. + return ui::kInvalidAXNodeID; +}
diff --git a/chrome/renderer/accessibility/read_anything_app_model.h b/chrome/renderer/accessibility/read_anything_app_model.h index d48a37a..65a1441 100644 --- a/chrome/renderer/accessibility/read_anything_app_model.h +++ b/chrome/renderer/accessibility/read_anything_app_model.h
@@ -103,6 +103,20 @@ // TypeScript also store the node ids as a vector for easier retrieval. std::vector<ui::AXNodeID> node_ids; + // Map of text start and end indices of text to a specific AXNodeID. + // The text for a given segment may span multiple AXNodes, such as + // Node 1: This is a + // Node 2: link + // Node 3: in a separate node. + // which is presented as a single segment when using sentence granularity. + // However, when we get word callbacks, we get them in terms of the text + // index across the entire segment of text, not by node. Therefore, this + // mapping helps us better parse callbacks for different types of + // granularity highlighting. + // TODO(b/40927698): Investigate using this to replace + // highlightedNodeToOffsetInParent in app.ts + std::map<std::pair<int, int>, ui::AXNodeID> index_map; + // The human readable text represented by this segment of node ids. This // is stored separately for easier retrieval for non-sentence granularity // highlighting. @@ -279,6 +293,17 @@ // next sentence is equivalent to text.substr(0, <returned_index>). int GetNextSentence(const std::u16string& text); + // Given a text index for the current granularity, return the AXNodeID for + // that part of the text. + // For example, if a current granularity segment has text: + // "Hello darkness, my old friend." + // Composed of nodes: + // Node: {id: 113, text: "Hello darkness, "} + // Node: {id: 207, text: "my old friend."} + // Then GetNodeIdForCurrentSegmentIndex for index=0-16 will return "113" + // and for index=17-29 will return "207" + ui::AXNodeID GetNodeIdForCurrentSegmentIndex(int index) const; + // PDF handling. void set_is_pdf(bool is_pdf) { is_pdf_ = is_pdf; } bool is_pdf() const { return is_pdf_; }
diff --git a/chrome/renderer/accessibility/read_anything_app_model_browsertest.cc b/chrome/renderer/accessibility/read_anything_app_model_browsertest.cc index d966c49..5689530 100644 --- a/chrome/renderer/accessibility/read_anything_app_model_browsertest.cc +++ b/chrome/renderer/accessibility/read_anything_app_model_browsertest.cc
@@ -244,6 +244,23 @@ return model_->GetNextSentence(text); } + ui::AXNodeID GetNodeIdForCurrentSegmentIndex(int index) { + ui::AXNodeID id = model_->GetNodeIdForCurrentSegmentIndex(index); + return id; + } + + std::vector<ui::AXNodeID> GetCurrentText() { + return model_->GetCurrentText(); + } + + void MovePositionToNextGranularity() { + return model_->MovePositionToNextGranularity(); + } + + void MovePositionToPreviousGranularity() { + return model_->MovePositionToPreviousGranularity(); + } + int GetCurrentTextStartIndex(ui::AXNodeID id) { return model_->GetCurrentTextStartIndex(id); } @@ -1739,3 +1756,203 @@ new_position = GetNextNodePosition(current_granularity); EXPECT_EQ(new_position->anchor_id(), static_text2.id); } + +TEST_F(ReadAnythingAppModelTest, + GetNodeIdForCurrentSegmentIndex_ReturnsCorrectNodes) { + std::u16string sentence1 = u"Never feel heavy "; + std::u16string sentence2 = u"or earthbound, "; + std::u16string sentence3 = u"no worries or doubts interfere."; + ui::AXTreeUpdate update; + SetUpdateTreeID(&update); + ui::AXNodeData static_text1; + static_text1.id = 2; + static_text1.role = ax::mojom::Role::kStaticText; + static_text1.SetNameChecked(sentence1); + + ui::AXNodeData static_text2; + static_text2.id = 3; + static_text2.role = ax::mojom::Role::kStaticText; + static_text2.SetNameChecked(sentence2); + + ui::AXNodeData static_text3; + static_text3.id = 4; + static_text3.role = ax::mojom::Role::kStaticText; + static_text3.SetNameChecked(sentence3); + update.nodes = {static_text1, static_text2, static_text3}; + AccessibilityEventReceived({update}); + ProcessDisplayNodes({static_text1.id, static_text2.id, static_text3.id}); + InitAXPosition(update.nodes[0].id); + + // Before there are any processed granularities, + // GetNodeIdForCurrentSegmentIndex should return an invalid id. + EXPECT_EQ(GetNodeIdForCurrentSegmentIndex(1), ui::kInvalidAXNodeID); + + std::vector<ui::AXNodeID> node_ids = GetCurrentText(); + EXPECT_EQ((int)node_ids.size(), 3); + + // Spot check that indices 0->sentence1.length() map to the first node id. + EXPECT_EQ(GetNodeIdForCurrentSegmentIndex(0), static_text1.id); + EXPECT_EQ(GetNodeIdForCurrentSegmentIndex(7), static_text1.id); + EXPECT_EQ(GetNodeIdForCurrentSegmentIndex(sentence1.length()), + static_text1.id); + + // Spot check that indices in sentence 2 map to the second node id. + EXPECT_EQ(GetNodeIdForCurrentSegmentIndex(sentence1.length() + 1), + static_text2.id); + EXPECT_EQ(GetNodeIdForCurrentSegmentIndex(26), static_text2.id); + EXPECT_EQ( + GetNodeIdForCurrentSegmentIndex(sentence1.length() + sentence2.length()), + static_text2.id); + + // Spot check that indices in sentence 3 map to the third node id. + EXPECT_EQ(GetNodeIdForCurrentSegmentIndex(sentence1.length() + + sentence2.length() + 1), + static_text3.id); + EXPECT_EQ(GetNodeIdForCurrentSegmentIndex(40), static_text3.id); + EXPECT_EQ(GetNodeIdForCurrentSegmentIndex( + sentence1.length() + sentence2.length() + sentence3.length()), + static_text3.id); + + // Out-of-bounds nodes return invalid. + EXPECT_EQ( + GetNodeIdForCurrentSegmentIndex(sentence1.length() + sentence2.length() + + sentence3.length() + 1), + ui::kInvalidAXNodeID); + EXPECT_EQ(GetNodeIdForCurrentSegmentIndex(535), ui::kInvalidAXNodeID); + EXPECT_EQ(GetNodeIdForCurrentSegmentIndex(-10), ui::kInvalidAXNodeID); +} + +TEST_F(ReadAnythingAppModelTest, + GetNodeIdForCurrentSegmentIndex_AfterNext_ReturnsCorrectNodes) { + std::u16string sentence1 = u"Never feel heavy or earthbound. "; + std::u16string sentence2 = u"No worries or doubts "; + std::u16string sentence3 = u"interfere."; + ui::AXTreeUpdate update; + SetUpdateTreeID(&update); + ui::AXNodeData static_text1; + static_text1.id = 2; + static_text1.role = ax::mojom::Role::kStaticText; + static_text1.SetNameChecked(sentence1); + + ui::AXNodeData static_text2; + static_text2.id = 3; + static_text2.role = ax::mojom::Role::kStaticText; + static_text2.SetNameChecked(sentence2); + + ui::AXNodeData static_text3; + static_text3.id = 4; + static_text3.role = ax::mojom::Role::kStaticText; + static_text3.SetNameChecked(sentence3); + update.nodes = {static_text1, static_text2, static_text3}; + AccessibilityEventReceived({update}); + ProcessDisplayNodes({static_text1.id, static_text2.id, static_text3.id}); + InitAXPosition(update.nodes[0].id); + + // Before there are any processed granularities, + // GetNodeIdForCurrentSegmentIndex should return an invalid id. + EXPECT_EQ(GetNodeIdForCurrentSegmentIndex(1), ui::kInvalidAXNodeID); + + std::vector<ui::AXNodeID> node_ids = GetCurrentText(); + EXPECT_EQ((int)node_ids.size(), 1); + + // Spot check that indices 0->sentence1.length() map to the first node id. + EXPECT_EQ(GetNodeIdForCurrentSegmentIndex(0), static_text1.id); + EXPECT_EQ(GetNodeIdForCurrentSegmentIndex(7), static_text1.id); + EXPECT_EQ(GetNodeIdForCurrentSegmentIndex(sentence1.length()), + static_text1.id); + EXPECT_EQ(GetNodeIdForCurrentSegmentIndex(sentence1.length() + 1), + ui::kInvalidAXNodeID); + + // Move to the next granularity. + MovePositionToNextGranularity(); + node_ids = GetCurrentText(); + EXPECT_EQ((int)node_ids.size(), 2); + + // Spot check that indices in sentence 2 map to the second node id. + EXPECT_EQ(GetNodeIdForCurrentSegmentIndex(0), static_text2.id); + EXPECT_EQ(GetNodeIdForCurrentSegmentIndex(7), static_text2.id); + EXPECT_EQ(GetNodeIdForCurrentSegmentIndex(sentence2.length()), + static_text2.id); + + // Spot check that indices in sentence 3 map to the third node id. + EXPECT_EQ(GetNodeIdForCurrentSegmentIndex(sentence2.length() + 1), + static_text3.id); + EXPECT_EQ(GetNodeIdForCurrentSegmentIndex(27), static_text3.id); + EXPECT_EQ( + GetNodeIdForCurrentSegmentIndex(sentence2.length() + sentence3.length()), + static_text3.id); + + // Out-of-bounds nodes return invalid. + EXPECT_EQ(GetNodeIdForCurrentSegmentIndex(sentence2.length() + + sentence3.length() + 1), + ui::kInvalidAXNodeID); +} + +TEST_F(ReadAnythingAppModelTest, + GetNodeIdForCurrentSegmentIndex_AfterPrevious_ReturnsCorrectNodes) { + std::u16string sentence1 = u"There's nothing but you "; + std::u16string sentence2 = u"looking down on the view from up here. "; + std::u16string sentence3 = u"Stretch out with the wind behind you."; + ui::AXTreeUpdate update; + SetUpdateTreeID(&update); + ui::AXNodeData static_text1; + static_text1.id = 2; + static_text1.role = ax::mojom::Role::kStaticText; + static_text1.SetNameChecked(sentence1); + + ui::AXNodeData static_text2; + static_text2.id = 3; + static_text2.role = ax::mojom::Role::kStaticText; + static_text2.SetNameChecked(sentence2); + + ui::AXNodeData static_text3; + static_text3.id = 4; + static_text3.role = ax::mojom::Role::kStaticText; + static_text3.SetNameChecked(sentence3); + update.nodes = {static_text1, static_text2, static_text3}; + AccessibilityEventReceived({update}); + ProcessDisplayNodes({static_text1.id, static_text2.id, static_text3.id}); + InitAXPosition(update.nodes[0].id); + + // Before there are any processed granularities, + // GetNodeIdForCurrentSegmentIndex should return an invalid id. + EXPECT_EQ(GetNodeIdForCurrentSegmentIndex(1), ui::kInvalidAXNodeID); + + std::vector<ui::AXNodeID> node_ids = GetCurrentText(); + EXPECT_EQ((int)node_ids.size(), 2); + + // Move forward. + MovePositionToNextGranularity(); + node_ids = GetCurrentText(); + EXPECT_EQ((int)node_ids.size(), 1); + + // Spot check that indices 0->sentence3.length() map to the third node id. + EXPECT_EQ(GetNodeIdForCurrentSegmentIndex(0), static_text3.id); + EXPECT_EQ(GetNodeIdForCurrentSegmentIndex(7), static_text3.id); + EXPECT_EQ(GetNodeIdForCurrentSegmentIndex(sentence3.length()), + static_text3.id); + + // Move backwards. + MovePositionToPreviousGranularity(); + node_ids = GetCurrentText(); + EXPECT_EQ((int)node_ids.size(), 2); + + // Spot check that indices in sentence 1 map to the first node id. + EXPECT_EQ(GetNodeIdForCurrentSegmentIndex(0), static_text1.id); + EXPECT_EQ(GetNodeIdForCurrentSegmentIndex(6), static_text1.id); + EXPECT_EQ(GetNodeIdForCurrentSegmentIndex(sentence1.length()), + static_text1.id); + + // Spot check that indices in sentence 2 map to the second node id. + EXPECT_EQ(GetNodeIdForCurrentSegmentIndex(sentence1.length() + 1), + static_text2.id); + EXPECT_EQ(GetNodeIdForCurrentSegmentIndex(27), static_text2.id); + EXPECT_EQ( + GetNodeIdForCurrentSegmentIndex(sentence1.length() + sentence2.length()), + static_text2.id); + + // Out-of-bounds nodes return invalid. + EXPECT_EQ(GetNodeIdForCurrentSegmentIndex(sentence1.length() + + sentence2.length() + 1), + ui::kInvalidAXNodeID); +}
diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn index 958c811..1b55f1f 100644 --- a/chrome/test/BUILD.gn +++ b/chrome/test/BUILD.gn
@@ -3333,7 +3333,6 @@ "../browser/ui/cocoa/applescript/browsercrapplication+applescript_browsertest.mm", "../browser/ui/cocoa/applescript/tab_applescript_browsertest.mm", "../browser/ui/cocoa/applescript/window_applescript_browsertest.mm", - "../browser/ui/cocoa/apps/app_shim_menu_controller_mac_browsertest.mm", "../browser/ui/cocoa/apps/native_app_window_cocoa_browsertest.mm", "../browser/ui/cocoa/browser_window_mac_browsertest.mm", "../browser/ui/cocoa/color_panel_cocoa_unittest.mm", @@ -3509,10 +3508,7 @@ "../browser/lifetime/application_lifetime_browsertest.cc", "../browser/ui/views/enable_link_capturing_infobar_browsertest.cc", ] - deps += [ - "//chrome/browser/apps/link_capturing", - "//chrome/browser/shortcuts:browser_tests", - ] + deps += [ "//chrome/browser/apps/link_capturing" ] } if (is_win || is_chromeos || is_mac) { @@ -9351,7 +9347,6 @@ deps += [ "//chrome/browser/extensions:cws_item_service_proto", "//chrome/browser/extensions:test_support", - "//chrome/browser/shortcuts:unit_tests", "//chrome/browser/ui/web_applications:unit_tests", "//chrome/browser/web_applications:unit_tests", "//chrome/browser/web_applications:web_applications_unit_tests",
diff --git a/chrome/test/data/pdf/navigator_test.ts b/chrome/test/data/pdf/navigator_test.ts index 2a7a7fcc..90c4d21 100644 --- a/chrome/test/data/pdf/navigator_test.ts +++ b/chrome/test/data/pdf/navigator_test.ts
@@ -275,7 +275,7 @@ chrome.test.succeed(); }, - async function testNavigateInvalidUrls() { + async function testNavigateDisallowedSchemes() { const url = 'https://example.com/some-web-document.pdf'; // From non-file: to file: @@ -284,7 +284,7 @@ await doNavigationUrlTests(url, 'chrome://version', undefined); await doNavigationUrlTests( - url, 'javascript:// this is not a document.pdf', undefined); + url, 'javascript://this-is-not-a-document.pdf', undefined); await doNavigationUrlTests( url, 'this-is-not-a-valid-scheme://path.pdf', undefined);
diff --git a/chrome/test/data/shortcuts/default_icon_has_two/16_favicon_part.png b/chrome/test/data/shortcuts/default_icon_has_two/16_favicon_part.png deleted file mode 100644 index 4d217e8..0000000 --- a/chrome/test/data/shortcuts/default_icon_has_two/16_favicon_part.png +++ /dev/null Binary files differ
diff --git a/chrome/test/data/shortcuts/default_icon_has_two/32_favicon_part.png b/chrome/test/data/shortcuts/default_icon_has_two/32_favicon_part.png deleted file mode 100644 index 81e1fa4..0000000 --- a/chrome/test/data/shortcuts/default_icon_has_two/32_favicon_part.png +++ /dev/null Binary files differ
diff --git a/chrome/test/data/shortcuts/default_icon_has_two/favicon.ico b/chrome/test/data/shortcuts/default_icon_has_two/favicon.ico deleted file mode 100644 index e27eec3..0000000 --- a/chrome/test/data/shortcuts/default_icon_has_two/favicon.ico +++ /dev/null Binary files differ
diff --git a/chrome/test/data/shortcuts/default_icon_has_two/index.html b/chrome/test/data/shortcuts/default_icon_has_two/index.html deleted file mode 100644 index 94d7fa4..0000000 --- a/chrome/test/data/shortcuts/default_icon_has_two/index.html +++ /dev/null
@@ -1,11 +0,0 @@ -<html> - -<title>Page without default favicon</title> - -<head></head> - -<body> - <h1>This page has a default favicon, with two icons inside it.</h1> -</body> - -</html> \ No newline at end of file
diff --git a/chrome/test/data/shortcuts/green.png b/chrome/test/data/shortcuts/green.png deleted file mode 100644 index c7510d38..0000000 --- a/chrome/test/data/shortcuts/green.png +++ /dev/null Binary files differ
diff --git a/chrome/test/data/shortcuts/no_icons_page.html b/chrome/test/data/shortcuts/no_icons_page.html deleted file mode 100644 index 42d323d..0000000 --- a/chrome/test/data/shortcuts/no_icons_page.html +++ /dev/null
@@ -1,10 +0,0 @@ -<html> -<title>Page without icons</title> - -<head></head> - -<body> - <h1>This page has no icons.</h1> -</body> - -</html> \ No newline at end of file
diff --git a/chrome/test/data/shortcuts/noise.png b/chrome/test/data/shortcuts/noise.png deleted file mode 100644 index 81acb31..0000000 --- a/chrome/test/data/shortcuts/noise.png +++ /dev/null Binary files differ
diff --git a/chrome/test/data/shortcuts/page_icons.html b/chrome/test/data/shortcuts/page_icons.html deleted file mode 100644 index 40f787d91..0000000 --- a/chrome/test/data/shortcuts/page_icons.html +++ /dev/null
@@ -1,13 +0,0 @@ -<html> -<title>Page with icon links</title> - -<head> - <link rel="apple-touch-icon" href="green.png" /> - <link rel="icon" href="noise.png" /> -</head> - -<body> - <h1>Page with icon links</h1> -</body> - -</html> \ No newline at end of file
diff --git a/chromeos/tast_control.gni b/chromeos/tast_control.gni index 9cab175..bfa34f8 100644 --- a/chromeos/tast_control.gni +++ b/chromeos/tast_control.gni
@@ -167,4 +167,8 @@ # b/324521903 temporary disabled until the test fixes tast_disabled_tests_from_chrome_all += [ "secagentd.AuthenticationEvents.mainline@octopus" ] + + # b/274341001: By design, ui.ChromeCrashEarly.strict fails on non-official + # builds. + tast_disabled_tests_from_lacros_all += [ "ui.ChromeCrashEarly.strict_lacros" ] }
diff --git a/clank b/clank index 4ccf9ec..9fac960 160000 --- a/clank +++ b/clank
@@ -1 +1 @@ -Subproject commit 4ccf9ec2cc92967d39ca0e3d0b0158bfd7937c81 +Subproject commit 9fac960efbf41bbdaa05ce10d5caaf74f2ee6347
diff --git a/components/dbus/properties/types.cc b/components/dbus/properties/types.cc index d9f4aff6..888ebf8 100644 --- a/components/dbus/properties/types.cc +++ b/components/dbus/properties/types.cc
@@ -146,7 +146,8 @@ bool DbusByteArray::IsEqual(const DbusType& other_type) const { const DbusByteArray* other = static_cast<const DbusByteArray*>(&other_type); - return value_->Equals(other->value_); + return value_->size() == other->value_->size() && + !memcmp(value_->front(), other->value_->front(), value_->size()); } void DbusByteArray::Write(dbus::MessageWriter* writer) const {
diff --git a/components/favicon/core/favicon_backend.cc b/components/favicon/core/favicon_backend.cc index 53a940a..b09db7b 100644 --- a/components/favicon/core/favicon_backend.cc +++ b/components/favicon/core/favicon_backend.cc
@@ -565,7 +565,7 @@ for (size_t i = 0; i < bitmaps.size(); ++i) { scoped_refptr<base::RefCountedBytes> bitmap_data(new base::RefCountedBytes); if (!gfx::PNGCodec::EncodeBGRASkBitmap(bitmaps[i], false, - &bitmap_data->as_vector())) { + &bitmap_data->data())) { continue; } to_add.push_back(std::make_pair(
diff --git a/components/favicon/core/favicon_handler_unittest.cc b/components/favicon/core/favicon_handler_unittest.cc index 2bc6dcf..b4f0eb59 100644 --- a/components/favicon/core/favicon_handler_unittest.cc +++ b/components/favicon/core/favicon_handler_unittest.cc
@@ -100,7 +100,7 @@ int edge_size = gfx::kFaviconSize, SkColor color = SK_ColorRED) { scoped_refptr<base::RefCountedBytes> data(new base::RefCountedBytes()); - data->as_vector() = FillBitmapWithEdgeSize(edge_size, color); + data->data() = FillBitmapWithEdgeSize(edge_size, color); FaviconRawBitmapResult bitmap_result; bitmap_result.expired = expired; bitmap_result.bitmap_data = data;
diff --git a/components/favicon/core/favicon_util.cc b/components/favicon/core/favicon_util.cc index 618e197..a4ee3d5 100644 --- a/components/favicon/core/favicon_util.cc +++ b/components/favicon/core/favicon_util.cc
@@ -19,7 +19,7 @@ favicon_base::FaviconImageResult result; if (bitmap_result.is_valid()) { result.image = gfx::Image::CreateFrom1xPNGBytes( - bitmap_result.bitmap_data->data(), bitmap_result.bitmap_data->size()); + bitmap_result.bitmap_data->front(), bitmap_result.bitmap_data->size()); result.icon_url = bitmap_result.icon_url; std::move(callback).Run(result); return;
diff --git a/components/favicon/core/history_ui_favicon_request_handler_impl_unittest.cc b/components/favicon/core/history_ui_favicon_request_handler_impl_unittest.cc index a39cc2d..ad93431 100644 --- a/components/favicon/core/history_ui_favicon_request_handler_impl_unittest.cc +++ b/components/favicon/core/history_ui_favicon_request_handler_impl_unittest.cc
@@ -39,7 +39,7 @@ scoped_refptr<base::RefCountedBytes> data(new base::RefCountedBytes()); gfx::PNGCodec::EncodeBGRASkBitmap( gfx::test::CreateBitmap(desired_size_in_pixel, SK_ColorRED), false, - &data->as_vector()); + &data->data()); favicon_base::FaviconRawBitmapResult result; result.bitmap_data = data; result.icon_url = icon_url;
diff --git a/components/favicon/core/large_icon_service_impl_unittest.cc b/components/favicon/core/large_icon_service_impl_unittest.cc index 633165a..b7264e7 100644 --- a/components/favicon/core/large_icon_service_impl_unittest.cc +++ b/components/favicon/core/large_icon_service_impl_unittest.cc
@@ -76,7 +76,7 @@ // Create bitmap and fill with |color|. scoped_refptr<base::RefCountedBytes> data(new base::RefCountedBytes()); gfx::PNGCodec::EncodeBGRASkBitmap(gfx::test::CreateBitmap(w, h, color), false, - &data->as_vector()); + &data->data()); result.bitmap_data = data; result.pixel_size = gfx::Size(w, h);
diff --git a/components/favicon/core/large_icon_worker.cc b/components/favicon/core/large_icon_worker.cc index 2ae56e0..221d23c 100644 --- a/components/favicon/core/large_icon_worker.cc +++ b/components/favicon/core/large_icon_worker.cc
@@ -36,7 +36,7 @@ const favicon_base::FaviconRawBitmapResult& db_result, int desired_size) { gfx::Image image = gfx::Image::CreateFrom1xPNGBytes( - db_result.bitmap_data->data(), db_result.bitmap_data->size()); + db_result.bitmap_data->front(), db_result.bitmap_data->size()); if (desired_size == 0 || db_result.pixel_size.width() == desired_size) { return image;
diff --git a/components/favicon_base/favicon_util.cc b/components/favicon_base/favicon_util.cc index cdbe236d..56ab7b77 100644 --- a/components/favicon_base/favicon_util.cc +++ b/components/favicon_base/favicon_util.cc
@@ -204,8 +204,9 @@ continue; SkBitmap bitmap; - if (gfx::PNGCodec::Decode(png_data[i].bitmap_data->data(), - png_data[i].bitmap_data->size(), &bitmap)) { + if (gfx::PNGCodec::Decode(png_data[i].bitmap_data->front(), + png_data[i].bitmap_data->size(), + &bitmap)) { bitmaps.push_back(bitmap); } } @@ -232,8 +233,9 @@ scoped_refptr<base::RefCountedBytes> png_bytes(new base::RefCountedBytes()); if (gfx::PNGCodec::EncodeBGRASkBitmap( resized_image_skia_reps[i].GetBitmap(), false, - &png_bytes->as_vector())) { - png_reps.emplace_back(png_bytes, resized_image_skia_reps[i].scale()); + &png_bytes->data())) { + png_reps.push_back( + gfx::ImagePNGRep(png_bytes, resized_image_skia_reps[i].scale())); } }
diff --git a/components/feedback/content/content_tracing_manager_browsertest.cc b/components/feedback/content/content_tracing_manager_browsertest.cc index f7d4abb..95014451 100644 --- a/components/feedback/content/content_tracing_manager_browsertest.cc +++ b/components/feedback/content/content_tracing_manager_browsertest.cc
@@ -106,7 +106,7 @@ EXPECT_EQ(trace_id, 1); tracing_manager->GetTraceData(trace_id, future.GetCallback()); // The actual trace data varies. - EXPECT_TRUE(future.Get()->size() > 0u); + EXPECT_TRUE(future.Get()->data().size() > 0); } // Test that FeedbackData.CompressSystemInfo will not gather trace data when the
diff --git a/components/feedback/feedback_data.cc b/components/feedback/feedback_data.cc index 4975ebf6..08f7fe6 100644 --- a/components/feedback/feedback_data.cc +++ b/components/feedback/feedback_data.cc
@@ -131,9 +131,7 @@ if (tracing_manager_) tracing_manager_->DiscardTraceData(trace_id); - std::string s; - std::swap(s, trace_data->as_string()); - AddFile(kTraceFilename, std::move(s)); + AddFile(kTraceFilename, std::move(trace_data->data())); set_category_tag(kPerformanceCategoryTag); --pending_op_count_;
diff --git a/components/global_media_controls/BUILD.gn b/components/global_media_controls/BUILD.gn index e3cf8ac..3bf33e1f 100644 --- a/components/global_media_controls/BUILD.gn +++ b/components/global_media_controls/BUILD.gn
@@ -61,6 +61,8 @@ sources = [ "media_item_manager_impl.cc", "media_item_manager_impl.h", + "media_view_utils.cc", + "media_view_utils.h", "public/media_item_ui_observer_set.cc", "public/media_session_item_producer.cc", "public/media_session_notification_item.cc", @@ -86,6 +88,7 @@ sources = [ "media_item_manager_impl_unittest.cc", + "media_view_utils_unittest.cc", "public/media_session_item_producer_unittest.cc", "public/media_session_notification_item_unittest.cc", "public/views/media_action_button_unittest.cc", @@ -96,6 +99,10 @@ "public/views/media_progress_view_unittest.cc", ] + if (is_chromeos_ash) { + sources += [ "public/views/chapter_item_view_unittest.cc" ] + } + deps = [ ":global_media_controls", ":test_support",
diff --git a/components/global_media_controls/media_view_utils.cc b/components/global_media_controls/media_view_utils.cc new file mode 100644 index 0000000..3fdc31d8 --- /dev/null +++ b/components/global_media_controls/media_view_utils.cc
@@ -0,0 +1,83 @@ +// Copyright 2024 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "components/global_media_controls/media_view_utils.h" + +#include <algorithm> +#include <string> + +#include "base/i18n/number_formatting.h" +#include "base/i18n/time_formatting.h" +#include "base/i18n/unicodestring.h" +#include "base/no_destructor.h" +#include "base/strings/string_number_conversions.h" +#include "base/time/time.h" +#include "third_party/icu/source/i18n/unicode/measfmt.h" +#include "third_party/icu/source/i18n/unicode/measunit.h" +#include "third_party/icu/source/i18n/unicode/measure.h" + +namespace global_media_controls { + +namespace { + +// Returns a singleton `icu::MeasureFormat` object, so that it doesn't have to +// be recreated each time when formatting a time duration. +const icu::MeasureFormat& GetMeasureFormat() { + static const base::NoDestructor<icu::MeasureFormat> measure_format([] { + UErrorCode status = U_ZERO_ERROR; + icu::MeasureFormat measure_format( + icu::Locale::getDefault(), UMeasureFormatWidth::UMEASFMT_WIDTH_NUMERIC, + status); + CHECK(U_SUCCESS(status)); + return measure_format; + }()); + return *measure_format; +} + +} // namespace + +gfx::Size ScaleImageSizeToFitView(const gfx::Size& image_size, + const gfx::Size& view_size) { + const float scale = + std::max(view_size.width() / static_cast<float>(image_size.width()), + view_size.height() / static_cast<float>(image_size.height())); + return gfx::ScaleToFlooredSize(image_size, scale); +} + +std::u16string GetFormattedDuration(const base::TimeDelta& duration) { + UErrorCode status = U_ZERO_ERROR; + + std::vector<icu::Measure> measures; + + const int64_t total_seconds = + base::ClampRound<int64_t>(duration.InSecondsF()); + const int64_t hours = total_seconds / base::Time::kSecondsPerHour; + if (hours != 0) { + measures.emplace_back(hours, icu::MeasureUnit::createHour(status), status); + } + + const int64_t minutes = + (total_seconds - hours * base::Time::kSecondsPerHour) / + base::Time::kSecondsPerMinute; + measures.emplace_back(minutes, icu::MeasureUnit::createMinute(status), + status); + + const int64_t seconds = total_seconds % base::Time::kSecondsPerMinute; + measures.emplace_back(seconds, icu::MeasureUnit::createSecond(status), + status); + + icu::UnicodeString formatted; + icu::FieldPosition ignore(icu::FieldPosition::DONT_CARE); + GetMeasureFormat().formatMeasures(&measures[0], measures.size(), formatted, + ignore, status); + + if (U_SUCCESS(status)) { + return base::i18n::UnicodeStringToString16(formatted); + } + + // If any step has error, returns the duration in seconds. + return base::NumberToString16(std::ceil(duration.InSecondsF())); +} + +} // namespace global_media_controls
diff --git a/components/global_media_controls/media_view_utils.h b/components/global_media_controls/media_view_utils.h new file mode 100644 index 0000000..10072895 --- /dev/null +++ b/components/global_media_controls/media_view_utils.h
@@ -0,0 +1,45 @@ +// Copyright 2024 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef COMPONENTS_GLOBAL_MEDIA_CONTROLS_MEDIA_VIEW_UTILS_H_ +#define COMPONENTS_GLOBAL_MEDIA_CONTROLS_MEDIA_VIEW_UTILS_H_ + +#include <string> + +#include "base/component_export.h" +#include "base/time/time.h" +#include "services/media_session/public/mojom/media_session.mojom.h" +#include "third_party/icu/source/i18n/unicode/measfmt.h" +#include "ui/gfx/geometry/size.h" + +namespace global_media_controls { + +// The corner radius of the images in the media views. +inline constexpr int kArtworkCornerRadius = 12; + +// View ID's. +// Buttons are using the `MediaSessionAction` enum as their view IDs. To avoid +// conflicts, the other views' IDs start from the +// `MediaSessionAction::kMaxValue`. +inline constexpr int kChapterItemViewTitleId = + static_cast<int>(media_session::mojom::MediaSessionAction::kMaxValue) + 1; +inline constexpr int kChapterItemViewStartTimeId = kChapterItemViewTitleId + 1; + +// If the image does not fit the view, scale the image to fill the view even if +// part of the image is cropped. +gfx::Size ScaleImageSizeToFitView(const gfx::Size& image_size, + const gfx::Size& view_size); + +// Adapts the functionality of `base::TimeDurationFormat` to format a +// `TimeDelta` object. Returns a formatted time string (e.g., "0:30", "3:30", +// "3:03:30"). +// Uses the Singleton `GetMeasureFormat()` for efficient formatting. This avoids +// recreating `measure_format` on each function call. Provides a default +// formatted string if the `formatMeasures()` function encounters an error. +COMPONENT_EXPORT(GLOBAL_MEDIA_CONTROLS) +std::u16string GetFormattedDuration(const base::TimeDelta& duration); + +} // namespace global_media_controls + +#endif // COMPONENTS_GLOBAL_MEDIA_CONTROLS_MEDIA_VIEW_UTILS_H_
diff --git a/components/global_media_controls/media_view_utils_unittest.cc b/components/global_media_controls/media_view_utils_unittest.cc new file mode 100644 index 0000000..2ffaf53 --- /dev/null +++ b/components/global_media_controls/media_view_utils_unittest.cc
@@ -0,0 +1,36 @@ +// Copyright 2024 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "components/global_media_controls/media_view_utils.h" + +#include "base/time/time.h" +#include "ui/views/test/views_test_base.h" + +namespace global_media_controls { + +using MediaViewUtilsUnitTest = testing::Test; + +TEST_F(MediaViewUtilsUnitTest, FormatDurationWithHours) { + auto long_duration = base::Seconds(5698721); + EXPECT_EQ(u"1,582:58:41", GetFormattedDuration(long_duration)); + + auto with_zero_duration = base::Seconds(3600); + EXPECT_EQ(u"1:00:00", GetFormattedDuration(with_zero_duration)); +} + +TEST_F(MediaViewUtilsUnitTest, FormatDurationWithoutHours) { + auto long_duration = base::Seconds(3538); + EXPECT_EQ(u"58:58", GetFormattedDuration(long_duration)); + + auto with_zero_duration = base::Seconds(61); + EXPECT_EQ(u"1:01", GetFormattedDuration(with_zero_duration)); + + auto no_minute_duration = base::Seconds(3); + EXPECT_EQ(u"0:03", GetFormattedDuration(no_minute_duration)); + + auto zero_duration = base::Seconds(0); + EXPECT_EQ(u"0:00", GetFormattedDuration(zero_duration)); +} + +} // namespace global_media_controls
diff --git a/components/global_media_controls/public/views/chapter_item_view.cc b/components/global_media_controls/public/views/chapter_item_view.cc index f581bbb..78977be 100644 --- a/components/global_media_controls/public/views/chapter_item_view.cc +++ b/components/global_media_controls/public/views/chapter_item_view.cc
@@ -9,11 +9,13 @@ #include "base/containers/fixed_flat_map.h" #include "base/functional/bind.h" #include "base/strings/utf_string_conversions.h" +#include "components/global_media_controls/media_view_utils.h" #include "ui/base/metadata/metadata_header_macros.h" #include "ui/base/metadata/metadata_impl_macros.h" #include "ui/compositor/layer.h" #include "ui/events/event.h" #include "ui/gfx/geometry/insets.h" +#include "ui/gfx/geometry/size.h" #include "ui/views/accessibility/view_accessibility.h" #include "ui/views/background.h" #include "ui/views/controls/highlight_path_generator.h" @@ -25,7 +27,8 @@ namespace global_media_controls { namespace { -constexpr auto kItemCornerRadius = gfx::RoundedCornersF(12); +constexpr auto kItemCornerRadius = gfx::RoundedCornersF(kArtworkCornerRadius); +constexpr gfx::Size kImageSize(64, 40); // A `HighlightPathGenerator` that uses caller-supplied rounded rect corners. class RoundedCornerHighlightPathGenerator @@ -57,8 +60,7 @@ const media_message_center::MediaColorTheme& theme, base::RepeatingCallback<void(const base::TimeDelta time)> on_chapter_pressed) - : title_(chapter.title()), - start_time_(chapter.startTime()), + : chapter_(chapter), theme_(theme), on_chapter_pressed_callback_(std::move(on_chapter_pressed)) { SetCallback(base::BindRepeating(&ChapterItemView::PerformAction, @@ -78,12 +80,13 @@ .AddChildren( views::Builder<views::ImageView>() .CopyAddressTo(&artwork_view_) - .SetPreferredSize(gfx::Size(64, 40)), + .SetPreferredSize(kImageSize), views::Builder<views::BoxLayoutView>() .SetOrientation(views::BoxLayout::Orientation::kVertical) .AddChildren( views::Builder<views::Label>() - .SetText(title_) + .SetText(chapter.title()) + .SetID(kChapterItemViewTitleId) .SetFontList(gfx::FontList( {"Google Sans"}, gfx::Font::NORMAL, 13, gfx::Font::Weight::NORMAL)) @@ -91,8 +94,9 @@ .SetEnabledColorId( theme_.primary_foreground_color_id), views::Builder<views::Label>() - .SetText(base::ASCIIToUTF16(base::NumberToString( - (start_time_.InSeconds())))) + .SetText( + GetFormattedDuration(chapter.startTime())) + .SetID(kChapterItemViewStartTimeId) .SetFontList(gfx::FontList( {"Google Sans"}, gfx::Font::NORMAL, 12, gfx::Font::Weight::NORMAL)) @@ -109,12 +113,27 @@ ChapterItemView::~ChapterItemView() = default; void ChapterItemView::UpdateArtwork(const gfx::ImageSkia& image) { - artwork_view_->SetVisible(true); + if (image.isNull()) { + // Hide the image so the other contents will adjust to fill the container. + artwork_view_->SetVisible(false); + } + + // Rescales the image. + artwork_view_->SetImageSize( + ScaleImageSizeToFitView(image.size(), kImageSize)); artwork_view_->SetImage(ui::ImageModel::FromImageSkia(image)); + + // Draws the image with rounded corners. + auto path = SkPath().addRoundRect( + RectToSkRect(gfx::Rect(kImageSize.width(), kImageSize.height())), + kArtworkCornerRadius, kArtworkCornerRadius); + artwork_view_->SetClipPath(path); + + artwork_view_->SetVisible(true); } void ChapterItemView::PerformAction(const ui::Event& event) { - on_chapter_pressed_callback_.Run(start_time_); + on_chapter_pressed_callback_.Run(chapter_.startTime()); } void ChapterItemView::SetUpFocusHighlight(
diff --git a/components/global_media_controls/public/views/chapter_item_view.h b/components/global_media_controls/public/views/chapter_item_view.h index 45ba869..88c9861 100644 --- a/components/global_media_controls/public/views/chapter_item_view.h +++ b/components/global_media_controls/public/views/chapter_item_view.h
@@ -5,8 +5,6 @@ #ifndef COMPONENTS_GLOBAL_MEDIA_CONTROLS_PUBLIC_VIEWS_CHAPTER_ITEM_VIEW_H_ #define COMPONENTS_GLOBAL_MEDIA_CONTROLS_PUBLIC_VIEWS_CHAPTER_ITEM_VIEW_H_ -#include <string> - #include "base/memory/raw_ptr.h" #include "components/media_message_center/notification_theme.h" #include "services/media_session/public/cpp/chapter_information.h" @@ -33,9 +31,8 @@ // Updates the image of this chapter item view. void UpdateArtwork(const gfx::ImageSkia& image); - // For testing: - std::u16string get_title_for_testing() const { return title_; } - base::TimeDelta get_start_time_for_testing() const { return start_time_; } + // Gets the chapter information. + media_session::ChapterInformation chapter() { return chapter_; } private: // Jumps to the `start_time_` to play this chapter. @@ -46,8 +43,8 @@ // same corner rounding as the view. void SetUpFocusHighlight(const gfx::RoundedCornersF& item_corner_radius); - const std::u16string title_; - const base::TimeDelta start_time_; + // The passed in chapter information. + const media_session::ChapterInformation chapter_; // The color theme for all the colors in this view. const media_message_center::MediaColorTheme theme_;
diff --git a/components/global_media_controls/public/views/chapter_item_view_unittest.cc b/components/global_media_controls/public/views/chapter_item_view_unittest.cc new file mode 100644 index 0000000..7cb16a72 --- /dev/null +++ b/components/global_media_controls/public/views/chapter_item_view_unittest.cc
@@ -0,0 +1,88 @@ +// Copyright 2024 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "components/global_media_controls/public/views/chapter_item_view.h" + +#include <memory> +#include <string> + +#include "base/time/time.h" +#include "components/global_media_controls/media_view_utils.h" +#include "testing/gmock/include/gmock/gmock.h" +#include "ui/events/base_event_utils.h" +#include "ui/views/controls/label.h" +#include "ui/views/test/button_test_api.h" +#include "ui/views/test/views_test_base.h" +#include "ui/views/view_utils.h" + +namespace global_media_controls { + +namespace { + +// Consts for this test. +const std::u16string kChapterTitle = u"Chapter 1"; +const base::TimeDelta kChapterStartTime = base::Seconds(3661); + +} // anonymous namespace + +class ChapterItemViewTest : public views::ViewsTestBase { + public: + // Mock callback: + MOCK_METHOD(void, OnChapterPressed, (const base::TimeDelta time), ()); + + void SetUp() override { + ViewsTestBase::SetUp(); + + widget_ = CreateTestWidget(); + + media_session::MediaImage test_image; + test_image.src = GURL("https://www.google.com"); + media_session::ChapterInformation test_chapter( + /*title=*/kChapterTitle, /*startTime=*/kChapterStartTime, + /*artwork=*/{test_image}); + + view_ = widget_->SetContentsView(std::make_unique<ChapterItemView>( + test_chapter, media_message_center::MediaColorTheme(), + /*on_chapter_pressed=*/ + base::BindRepeating(&ChapterItemViewTest::OnChapterPressed, + base::Unretained(this)))); + + widget_->SetBounds(gfx::Rect(500, 500)); + widget_->Show(); + } + + void TearDown() override { + view_ = nullptr; + widget_.reset(); + + ViewsTestBase::TearDown(); + } + + ChapterItemView* view() const { return view_; } + + private: + std::unique_ptr<views::Widget> widget_; + raw_ptr<ChapterItemView> view_ = nullptr; +}; + +TEST_F(ChapterItemViewTest, Labels) { + EXPECT_EQ(views::AsViewClass<views::Label>( + view()->GetViewByID(kChapterItemViewTitleId)) + ->GetText(), + kChapterTitle); + EXPECT_EQ(views::AsViewClass<views::Label>( + view()->GetViewByID(kChapterItemViewStartTimeId)) + ->GetText(), + u"1:01:01"); +} + +TEST_F(ChapterItemViewTest, ClickOnView) { + EXPECT_CALL(*this, OnChapterPressed(kChapterStartTime)).Times(1); + views::test::ButtonTestApi(view()).NotifyClick( + ui::MouseEvent(ui::ET_MOUSE_PRESSED, gfx::Point(), gfx::Point(), + ui::EventTimeForNow(), 0, 0)); + testing::Mock::VerifyAndClearExpectations(this); +} + +} // namespace global_media_controls
diff --git a/components/global_media_controls/public/views/media_item_ui_detailed_view.cc b/components/global_media_controls/public/views/media_item_ui_detailed_view.cc index 317cc84b..c9515dfe 100644 --- a/components/global_media_controls/public/views/media_item_ui_detailed_view.cc +++ b/components/global_media_controls/public/views/media_item_ui_detailed_view.cc
@@ -7,6 +7,7 @@ #include <memory> #include "base/metrics/histogram_functions.h" +#include "components/global_media_controls/media_view_utils.h" #include "components/global_media_controls/public/views/media_action_button.h" #include "components/global_media_controls/public/views/media_progress_view.h" #include "components/media_message_center/media_notification_container.h" @@ -49,7 +50,6 @@ gfx::Insets::VH(1, 1); constexpr int kBackgroundCornerRadius = 16; -constexpr int kArtworkCornerRadius = 12; constexpr int kSourceTextLineHeight = 18; constexpr int kTextLineHeight = 20; constexpr int kFontSize = 12; @@ -106,16 +106,6 @@ BEGIN_METADATA(MediaLabelButton) END_METADATA -// If the image does not fit the square view, scale the image to fill the view -// even if part of the image is cropped. -gfx::Size ScaleImageSizeToFitView(const gfx::Size& image_size, - const gfx::Size& view_size) { - const float scale = - std::max(view_size.width() / static_cast<float>(image_size.width()), - view_size.height() / static_cast<float>(image_size.height())); - return gfx::ScaleToFlooredSize(image_size, scale); -} - } // namespace MediaItemUIDetailedView::MediaItemUIDetailedView( @@ -396,42 +386,8 @@ title_label_->SetText(metadata.title); artist_label_->SetText(metadata.artist); + UpdateChapterListViewWithMetadata(metadata); container_->OnMediaSessionMetadataChanged(metadata); - -#if BUILDFLAG(IS_CHROMEOS_ASH) - if (!base::FeatureList::IsEnabled(media::kBackgroundListening)) { - return; - } - - if (!chapter_list_view_ && metadata.chapters.empty()) { - return; - } - - if (metadata.chapters.empty()) { - chapter_list_view_->RemoveAllChildViews(); - return; - } - - if (!chapter_list_view_) { - chapter_list_view_ = AddChildView( - views::Builder<views::BoxLayoutView>() - .SetOrientation(views::BoxLayout::Orientation::kVertical) - .SetInsideBorderInsets(gfx::Insets::TLBR(16, 8, 8, 8)) - .Build()); - } else { - chapter_list_view_->RemoveAllChildViews(); - } - - for (int index = 0; index < static_cast<int>(metadata.chapters.size()); - index++) { - chapters_[index] = - chapter_list_view_->AddChildView(std::make_unique<ChapterItemView>( - metadata.chapters[index], theme_, - /*on_chapter_pressed=*/ - base::BindRepeating(&MediaItemUIDetailedView::SeekToTimestamp, - weak_factory_.GetWeakPtr()))); - } -#endif // BUILDFLAG(IS_CHROMEOS_ASH) } void MediaItemUIDetailedView::UpdateWithMediaActions( @@ -702,6 +658,67 @@ container_->OnDeviceSelectorViewSizeChanged(); } +void MediaItemUIDetailedView::UpdateChapterListViewWithMetadata( + const media_session::MediaMetadata& metadata) { +#if BUILDFLAG(IS_CHROMEOS_ASH) + if (!base::FeatureList::IsEnabled(media::kBackgroundListening)) { + return; + } + + if (!chapter_list_view_ && metadata.chapters.empty()) { + return; + } + + if (metadata.chapters.empty()) { + chapter_list_view_->RemoveAllChildViews(); + chapters_.clear(); + return; + } + + // Ensures the chapter list view exists and is up-to-date: + // 1) Creates the chapter list view if it doesn't exist. + // 2) Compares existing chapter item views to new metadata: + // a) If chapters match, no updates are needed. + // b) If chapters differ, the list is cleared and updated with the new + // chapters. + if (!chapter_list_view_) { + chapter_list_view_ = AddChildView( + views::Builder<views::BoxLayoutView>() + .SetOrientation(views::BoxLayout::Orientation::kVertical) + .SetInsideBorderInsets(gfx::Insets::TLBR(16, 8, 8, 8)) + .Build()); + } else { + bool chapters_not_changed = metadata.chapters.size() == chapters_.size(); + // Further checks if every chapter is the same. + if (chapters_not_changed) { + for (int index = 0; index < static_cast<int>(metadata.chapters.size()); + index++) { + if (!chapters_[index] || + chapters_[index]->chapter() != metadata.chapters[index]) { + chapters_not_changed = false; + break; + } + } + } + if (chapters_not_changed) { + return; + } + chapter_list_view_->RemoveAllChildViews(); + } + + chapters_.clear(); + for (int index = 0; index < static_cast<int>(metadata.chapters.size()); + index++) { + chapters_[index] = + chapter_list_view_->AddChildView(std::make_unique<ChapterItemView>( + metadata.chapters[index], theme_, + /*on_chapter_pressed=*/ + base::BindRepeating(&MediaItemUIDetailedView::SeekToTimestamp, + weak_factory_.GetWeakPtr()))); + } +#endif // BUILDFLAG(IS_CHROMEOS_ASH) +} + // Helper functions for testing: views::ImageView* MediaItemUIDetailedView::GetArtworkViewForTesting() { return artwork_view_;
diff --git a/components/global_media_controls/public/views/media_item_ui_detailed_view.h b/components/global_media_controls/public/views/media_item_ui_detailed_view.h index 9b273e2..471f3460 100644 --- a/components/global_media_controls/public/views/media_item_ui_detailed_view.h +++ b/components/global_media_controls/public/views/media_item_ui_detailed_view.h
@@ -164,6 +164,10 @@ // Update the display states of UI elements for casting devices. void UpdateCastingState(); + // Updates the chapter list view's chapter items with the new `metadata`. + void UpdateChapterListViewWithMetadata( + const media_session::MediaMetadata& metadata); + // Raw pointer to the container holding this view. The |container_| should // never be nullptr. const raw_ptr<media_message_center::MediaNotificationContainer> container_;
diff --git a/components/global_media_controls/public/views/media_item_ui_detailed_view_unittest.cc b/components/global_media_controls/public/views/media_item_ui_detailed_view_unittest.cc index b9dc350..a27159f0 100644 --- a/components/global_media_controls/public/views/media_item_ui_detailed_view_unittest.cc +++ b/components/global_media_controls/public/views/media_item_ui_detailed_view_unittest.cc
@@ -481,22 +481,22 @@ EXPECT_EQ(view()->GetTitleLabelForTesting()->GetText(), metadata.title); EXPECT_EQ(view()->GetChapterListViewForTesting()->children().size(), 2u); - EXPECT_EQ( - view()->GetChaptersForTesting().find(0)->second->get_title_for_testing(), - u"chapter1"); - EXPECT_EQ( - view()->GetChaptersForTesting().find(1)->second->get_title_for_testing(), - u"chapter2"); + EXPECT_EQ(view()->GetChaptersForTesting().find(0)->second->chapter().title(), + u"chapter1"); + EXPECT_EQ(view()->GetChaptersForTesting().find(1)->second->chapter().title(), + u"chapter2"); EXPECT_EQ(view() ->GetChaptersForTesting() .find(0) - ->second->get_start_time_for_testing() + ->second->chapter() + .startTime() .InSeconds(), 10); EXPECT_EQ(view() ->GetChaptersForTesting() .find(1) - ->second->get_start_time_for_testing() + ->second->chapter() + .startTime() .InSeconds(), 20);
diff --git a/components/omnibox/browser/clipboard_provider.cc b/components/omnibox/browser/clipboard_provider.cc index ab0942d..ef7ba12 100644 --- a/components/omnibox/browser/clipboard_provider.cc +++ b/components/omnibox/browser/clipboard_provider.cc
@@ -583,7 +583,7 @@ match.search_terms_args = std::make_unique<TemplateURLRef::SearchTermsArgs>(u""); match.search_terms_args->image_thumbnail_content.assign( - base::as_string_view(*image_bytes)); + image_bytes->front_as<char>(), image_bytes->size()); TemplateURLRef::PostContent post_content; GURL result(default_url->image_url_ref().ReplaceSearchTerms( *match.search_terms_args.get(), url_service->search_terms_data(),
diff --git a/components/optimization_guide/internal b/components/optimization_guide/internal index a2e21ab..e306a76 160000 --- a/components/optimization_guide/internal +++ b/components/optimization_guide/internal
@@ -1 +1 @@ -Subproject commit a2e21ab67af8c7fd133c90ec13d3b248640c199e +Subproject commit e306a767178bbe3e17c4404a2713992423162b39
diff --git a/components/search_provider_logos/google_logo_api_unittest.cc b/components/search_provider_logos/google_logo_api_unittest.cc index 53b299c..e57385f 100644 --- a/components/search_provider_logos/google_logo_api_unittest.cc +++ b/components/search_provider_logos/google_logo_api_unittest.cc
@@ -181,8 +181,8 @@ ASSERT_FALSE(failed); ASSERT_TRUE(logo); - EXPECT_EQ("abc", logo->encoded_image->as_string()); - EXPECT_EQ("xyz", logo->dark_encoded_image->as_string()); + EXPECT_EQ("abc", logo->encoded_image->data()); + EXPECT_EQ("xyz", logo->dark_encoded_image->data()); EXPECT_EQ(LogoType::SIMPLE, logo->metadata.type); } @@ -218,7 +218,7 @@ ASSERT_FALSE(failed); ASSERT_TRUE(logo); - EXPECT_EQ("abc", logo->encoded_image->as_string()); + EXPECT_EQ("abc", logo->encoded_image->data()); EXPECT_EQ(LogoType::SIMPLE, logo->metadata.type); EXPECT_EQ("https://g.co/", logo->metadata.short_link); @@ -266,7 +266,7 @@ ASSERT_FALSE(failed); ASSERT_TRUE(logo); - EXPECT_EQ("abc", logo->encoded_image->as_string()); + EXPECT_EQ("abc", logo->encoded_image->data()); EXPECT_EQ(LogoType::SIMPLE, logo->metadata.type); ASSERT_TRUE(logo->metadata.short_link.is_empty()); ASSERT_TRUE(logo->metadata.share_button_icon.empty()); @@ -311,7 +311,7 @@ ASSERT_FALSE(failed); ASSERT_TRUE(logo); - EXPECT_EQ("abc", logo->encoded_image->as_string()); + EXPECT_EQ("abc", logo->encoded_image->data()); EXPECT_EQ(LogoType::SIMPLE, logo->metadata.type); ASSERT_FALSE(logo->metadata.short_link.is_valid()); ASSERT_TRUE(logo->metadata.share_button_icon.empty()); @@ -363,7 +363,7 @@ ASSERT_TRUE(logo); EXPECT_EQ(GURL("https://www.doodle.com/image.gif"), logo->metadata.animated_url); - EXPECT_EQ("abc", logo->encoded_image->as_string()); + EXPECT_EQ("abc", logo->encoded_image->data()); EXPECT_EQ(LogoType::ANIMATED, logo->metadata.type); EXPECT_EQ("https://g.co/", logo->metadata.short_link); @@ -413,8 +413,8 @@ EXPECT_EQ(GURL("https://www.doodle.com/dark_image.gif"), logo->metadata.dark_animated_url); EXPECT_EQ("#ABCDEF", logo->metadata.dark_background_color); - EXPECT_EQ("abc", logo->encoded_image->as_string()); - EXPECT_EQ("xyz", logo->dark_encoded_image->as_string()); + EXPECT_EQ("abc", logo->encoded_image->data()); + EXPECT_EQ("xyz", logo->dark_encoded_image->data()); EXPECT_EQ(LogoType::ANIMATED, logo->metadata.type); } @@ -529,7 +529,7 @@ EXPECT_EQ(GURL("https://base.doo/play"), logo->metadata.full_page_url); EXPECT_EQ(0, logo->metadata.iframe_width_px); EXPECT_EQ(0, logo->metadata.iframe_height_px); - EXPECT_EQ("abc", logo->encoded_image->as_string()); + EXPECT_EQ("abc", logo->encoded_image->data()); } TEST(GoogleNewLogoApiTest, DefaultsInteractiveIframeSize) {
diff --git a/components/search_provider_logos/logo_cache.cc b/components/search_provider_logos/logo_cache.cc index a7d8404..6603a2a 100644 --- a/components/search_provider_logos/logo_cache.cc +++ b/components/search_provider_logos/logo_cache.cc
@@ -170,7 +170,7 @@ if (logo_num_bytes_ != 0) { encoded_image = new base::RefCountedString(); - if (!base::ReadFileToString(logo_path, &encoded_image->as_string())) { + if (!base::ReadFileToString(logo_path, &encoded_image->data())) { UpdateMetadata(nullptr); return nullptr; } @@ -187,8 +187,7 @@ if (dark_logo_num_bytes_ != 0) { dark_encoded_image = new base::RefCountedString(); - if (!base::ReadFileToString(dark_logo_path, - &dark_encoded_image->as_string())) { + if (!base::ReadFileToString(dark_logo_path, &dark_encoded_image->data())) { UpdateMetadata(nullptr); return nullptr; }
diff --git a/components/search_provider_logos/logo_cache_unittest.cc b/components/search_provider_logos/logo_cache_unittest.cc index 976e338..21a74670 100644 --- a/components/search_provider_logos/logo_cache_unittest.cc +++ b/components/search_provider_logos/logo_cache_unittest.cc
@@ -76,7 +76,7 @@ base::RefCountedString* CreateExampleImage(size_t num_bytes) { base::RefCountedString* encoded_image_str = new base::RefCountedString(); - std::string& str = encoded_image_str->as_string(); + std::string& str = encoded_image_str->data(); str.resize(num_bytes); for (size_t i = 0; i < num_bytes; ++i) str[i] = static_cast<char>(i);
diff --git a/components/search_provider_logos/logo_service_impl.cc b/components/search_provider_logos/logo_service_impl.cc index c172e7e3..4ff10ad 100644 --- a/components/search_provider_logos/logo_service_impl.cc +++ b/components/search_provider_logos/logo_service_impl.cc
@@ -397,7 +397,7 @@ scoped_refptr<base::RefCountedString> encoded_image = cached_logo->encoded_image; image_decoder_->DecodeImage( - encoded_image->as_string(), gfx::Size(), // No particular size desired. + encoded_image->data(), gfx::Size(), // No particular size desired. /*data_decoder=*/nullptr, ImageDecodedHandlerWithTimeout::Wrap(base::BindOnce( &LogoServiceImpl::OnLightCachedImageDecoded, @@ -437,8 +437,7 @@ cached_logo->dark_encoded_image; image_decoder_->DecodeImage( - dark_encoded_image->as_string(), - gfx::Size(), // No particular size desired. + dark_encoded_image->data(), gfx::Size(), // No particular size desired. /*data_decoder=*/nullptr, ImageDecodedHandlerWithTimeout::Wrap(base::BindOnce( &LogoServiceImpl::OnCachedLogoAvailable, @@ -533,7 +532,7 @@ scoped_refptr<base::RefCountedString> encoded_image = logo->encoded_image; image_decoder_->DecodeImage( - encoded_image->as_string(), gfx::Size(), // No particular size desired. + encoded_image->data(), gfx::Size(), // No particular size desired. /*data_decoder=*/nullptr, ImageDecodedHandlerWithTimeout::Wrap(base::BindOnce( &LogoServiceImpl::OnLightFreshImageDecoded, @@ -561,8 +560,7 @@ logo->dark_encoded_image; image_decoder_->DecodeImage( - dark_encoded_image->as_string(), - gfx::Size(), // No particular size desired. + dark_encoded_image->data(), gfx::Size(), // No particular size desired. /*data_decoder=*/nullptr, ImageDecodedHandlerWithTimeout::Wrap(base::BindOnce( &LogoServiceImpl::OnFreshLogoAvailable,
diff --git a/components/search_provider_logos/logo_service_impl_unittest.cc b/components/search_provider_logos/logo_service_impl_unittest.cc index be68a5fa..acede1c3 100644 --- a/components/search_provider_logos/logo_service_impl_unittest.cc +++ b/components/search_provider_logos/logo_service_impl_unittest.cc
@@ -77,13 +77,14 @@ const SkBitmap& bitmap) { scoped_refptr<base::RefCountedMemory> png_bytes = gfx::Image::CreateFrom1xBitmap(bitmap).As1xPNGBytes(); - return base::MakeRefCounted<base::RefCountedString>( - std::string(base::as_string_view(*png_bytes))); + scoped_refptr<base::RefCountedString> str = new base::RefCountedString(); + str->data().assign(png_bytes->front_as<char>(), png_bytes->size()); + return str; } std::string EncodeBitmapAsPNGBase64(const SkBitmap& bitmap) { scoped_refptr<base::RefCountedString> png_bytes = EncodeBitmapAsPNG(bitmap); - return base::Base64Encode(*png_bytes); + return base::Base64Encode(png_bytes->data()); } SkBitmap MakeBitmap(int width, int height) {
diff --git a/components/sync_bookmarks/bookmark_specifics_conversions.cc b/components/sync_bookmarks/bookmark_specifics_conversions.cc index 62fe453..21e75b2 100644 --- a/components/sync_bookmarks/bookmark_specifics_conversions.cc +++ b/components/sync_bookmarks/bookmark_specifics_conversions.cc
@@ -110,8 +110,9 @@ bookmark_node->GetTitle()); const std::string& icon_bytes_str = specifics.favicon(); - auto icon_bytes = base::MakeRefCounted<base::RefCountedString>(); - icon_bytes->as_string().assign(icon_bytes_str); + scoped_refptr<base::RefCountedString> icon_bytes( + new base::RefCountedString()); + icon_bytes->data().assign(icon_bytes_str); GURL icon_url(specifics.icon_url()); @@ -324,7 +325,7 @@ } if (favicon_bytes.get() && favicon_bytes->size() != 0) { - bm_specifics->set_favicon(favicon_bytes->data(), favicon_bytes->size()); + bm_specifics->set_favicon(favicon_bytes->front(), favicon_bytes->size()); // Avoid sync-ing favicon URLs that are unreasonably large, as determined by // |kMaxFaviconUrlSize|. Most notably, URLs prefixed with the data: scheme // to embed the content of the image itself in the URL may be arbitrarily
diff --git a/components/trusted_vault/proto/vault.proto b/components/trusted_vault/proto/vault.proto index 99017f6..4ecedec 100644 --- a/components/trusted_vault/proto/vault.proto +++ b/components/trusted_vault/proto/vault.proto
@@ -38,7 +38,20 @@ SecurityDomainDetails security_domain_details = 3; } +message Timestamp { + // Represents seconds of UTC time since Unix epoch + // 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to + // 9999-12-31T23:59:59Z inclusive. + int64 seconds = 1; + // Non-negative fractions of a second at nanosecond resolution. Negative + // second values with fractions must still have non-negative nanos values + // that count forward in time. Must be from 0 to 999,999,999 + // inclusive. + int32 nanos = 2; +} + message GooglePasswordManagerPinMetadata { + Timestamp expiration_time = 1; bytes encrypted_pin_hash = 2; }
diff --git a/components/trusted_vault/trusted_vault_connection.cc b/components/trusted_vault/trusted_vault_connection.cc index ed7aab0..d25f0f6 100644 --- a/components/trusted_vault/trusted_vault_connection.cc +++ b/components/trusted_vault/trusted_vault_connection.cc
@@ -23,9 +23,11 @@ const TrustedVaultKeyAndVersion& other) const = default; GpmPinMetadata::GpmPinMetadata(std::optional<std::string> in_public_key, - std::string in_wrapped_pin) + std::string in_wrapped_pin, + base::Time in_expiry) : public_key(std::move(in_public_key)), - wrapped_pin(std::move(in_wrapped_pin)) {} + wrapped_pin(std::move(in_wrapped_pin)), + expiry(in_expiry) {} GpmPinMetadata::GpmPinMetadata(const GpmPinMetadata&) = default;
diff --git a/components/trusted_vault/trusted_vault_connection.h b/components/trusted_vault/trusted_vault_connection.h index 41dac5b..e45f823 100644 --- a/components/trusted_vault/trusted_vault_connection.h +++ b/components/trusted_vault/trusted_vault_connection.h
@@ -10,6 +10,7 @@ #include <vector> #include "base/functional/callback.h" +#include "base/time/time.h" #include "base/types/strong_alias.h" #include "third_party/abseil-cpp/absl/types/variant.h" @@ -82,7 +83,8 @@ // a trusted vault. struct GpmPinMetadata { GpmPinMetadata(std::optional<std::string> public_key, - std::string wrapped_pin); + std::string wrapped_pin, + base::Time expiry); GpmPinMetadata(const GpmPinMetadata&); GpmPinMetadata& operator=(const GpmPinMetadata&); GpmPinMetadata(GpmPinMetadata&&); @@ -99,6 +101,9 @@ std::optional<std::string> public_key; // The encrypted PIN value, for validation. std::string wrapped_pin; + // The time when the underlying recovery-key-store entry will expire. Ignored + // when uploading. + base::Time expiry; }; // The result of calling
diff --git a/components/trusted_vault/trusted_vault_connection_impl.cc b/components/trusted_vault/trusted_vault_connection_impl.cc index c9f4259..f8385c7 100644 --- a/components/trusted_vault/trusted_vault_connection_impl.cc +++ b/components/trusted_vault/trusted_vault_connection_impl.cc
@@ -257,6 +257,11 @@ *last_key_version); } +base::Time ToTime(const trusted_vault_pb::Timestamp& proto) { + return base::Time::UnixEpoch() + base::Seconds(proto.seconds()) + + base::Nanoseconds(proto.nanos()); +} + void ProcessDownloadKeysResponse( std::unique_ptr<DownloadKeysResponseHandler> response_handler, TrustedVaultConnection::DownloadNewKeysCallback callback, @@ -403,10 +408,11 @@ if (member.member_type() == trusted_vault_pb::SecurityDomainMember:: MEMBER_TYPE_GOOGLE_PASSWORD_MANAGER_PIN && member.member_metadata().has_google_password_manager_pin_metadata()) { + const auto& pin_metadata = + member.member_metadata().google_password_manager_pin_metadata(); result_.gpm_pin_metadata.emplace( - member.public_key(), member.member_metadata() - .google_password_manager_pin_metadata() - .encrypted_pin_hash()); + member.public_key(), pin_metadata.encrypted_pin_hash(), + ToTime(pin_metadata.expiration_time())); } }
diff --git a/components/trusted_vault/trusted_vault_connection_impl_unittest.cc b/components/trusted_vault/trusted_vault_connection_impl_unittest.cc index 594e60f..f469d5f 100644 --- a/components/trusted_vault/trusted_vault_connection_impl_unittest.cc +++ b/components/trusted_vault/trusted_vault_connection_impl_unittest.cc
@@ -83,6 +83,7 @@ constexpr char kTestSerializedWrappedPIN[] = "wrapped PIN"; constexpr char kTestMemberPublicKey[] = "public key"; constexpr int kTestKeyVersion = 100; +constexpr int kTestGPMExpirySeconds = 1000000; enum class Member { kPhysical, @@ -126,9 +127,12 @@ member->set_member_type(trusted_vault_pb::SecurityDomainMember:: MEMBER_TYPE_GOOGLE_PASSWORD_MANAGER_PIN); member->mutable_member_metadata()->set_usable_for_retrieval(true); - member->mutable_member_metadata() - ->mutable_google_password_manager_pin_metadata() - ->set_encrypted_pin_hash(kTestSerializedWrappedPIN); + auto* gpm_metadata = + member->mutable_member_metadata() + ->mutable_google_password_manager_pin_metadata(); + gpm_metadata->mutable_expiration_time()->set_seconds( + kTestGPMExpirySeconds); + gpm_metadata->set_encrypted_pin_hash(kTestSerializedWrappedPIN); break; } } @@ -479,7 +483,8 @@ /*account_info=*/CoreAccountInfo(), GetTrustedVaultKeysWithVersions(kTrustedVaultKeys, /*last_key_version=*/1234), - key_pair->public_key(), GpmPinMetadata(old_public_key, metadata), + key_pair->public_key(), + GpmPinMetadata(old_public_key, metadata, /*expiry=*/base::Time()), TrustedVaultConnection::RegisterAuthenticationFactorCallback()); EXPECT_THAT(request, NotNull()); @@ -1100,8 +1105,9 @@ TEST_P(TrustedVaultConnectionImplTest, DownloadAuthenticationFactorsRegistrationState_Cases) { using State = DownloadAuthenticationFactorsRegistrationStateResult::State; - const GpmPinMetadata gpm_pin_metadata(kTestMemberPublicKey, - kTestSerializedWrappedPIN); + const GpmPinMetadata gpm_pin_metadata( + kTestMemberPublicKey, kTestSerializedWrappedPIN, + /*expiry=*/base::Time::FromTimeT(kTestGPMExpirySeconds)); const struct TestCase { // responses contains the set of security domain members included in each // page of results from the "server".
diff --git a/components/user_manager/DEPS b/components/user_manager/DEPS index ff33c42f..6a7b22230 100644 --- a/components/user_manager/DEPS +++ b/components/user_manager/DEPS
@@ -7,6 +7,7 @@ "+components/crash/core/common", "+google_apis/gaia/gaia_auth_util.h", "+third_party/skia/include", + "+ui/base/l10n", "+ui/base/resource", "+ui/chromeos/resources", "+ui/gfx/codec",
diff --git a/components/user_manager/fake_user_manager.cc b/components/user_manager/fake_user_manager.cc index dddd142..c42c5e00 100644 --- a/components/user_manager/fake_user_manager.cc +++ b/components/user_manager/fake_user_manager.cc
@@ -378,14 +378,6 @@ return false; } -void FakeUserManager::ScheduleResolveLocale( - const std::string& locale, - base::OnceClosure on_resolved_callback, - std::string* out_resolved_locale) const { - NOTIMPLEMENTED(); - return; -} - bool FakeUserManager::IsValidDefaultUserImageId(int image_index) const { NOTIMPLEMENTED(); return false;
diff --git a/components/user_manager/fake_user_manager.h b/components/user_manager/fake_user_manager.h index 9169eedcc..ae32183 100644 --- a/components/user_manager/fake_user_manager.h +++ b/components/user_manager/fake_user_manager.h
@@ -115,9 +115,6 @@ void AsyncRemoveCryptohome(const AccountId& account_id) const override; bool IsDeprecatedSupervisedAccountId( const AccountId& account_id) const override; - void ScheduleResolveLocale(const std::string& locale, - base::OnceClosure on_resolved_callback, - std::string* out_resolved_locale) const override; bool IsValidDefaultUserImageId(int image_index) const override; MultiUserSignInPolicyController* GetMultiUserSignInPolicyController() override;
diff --git a/components/user_manager/user_manager.h b/components/user_manager/user_manager.h index d20e3f43d..7e24f6e0 100644 --- a/components/user_manager/user_manager.h +++ b/components/user_manager/user_manager.h
@@ -487,13 +487,6 @@ // user's session. virtual bool HasBrowserRestarted() const = 0; - // Schedules CheckAndResolveLocale using given task runner and - // |on_resolved_callback| as reply callback. - virtual void ScheduleResolveLocale( - const std::string& locale, - base::OnceClosure on_resolved_callback, - std::string* out_resolved_locale) const = 0; - // Returns true if |image_index| is a valid default user image index. virtual bool IsValidDefaultUserImageId(int image_index) const = 0;
diff --git a/components/user_manager/user_manager_base.cc b/components/user_manager/user_manager_base.cc index 94df840..7981173 100644 --- a/components/user_manager/user_manager_base.cc +++ b/components/user_manager/user_manager_base.cc
@@ -29,6 +29,8 @@ #include "base/strings/utf_string_conversions.h" #include "base/system/sys_info.h" #include "base/task/single_thread_task_runner.h" +#include "base/task/task_traits.h" +#include "base/task/thread_pool.h" #include "base/values.h" #include "chromeos/ash/components/settings/cros_settings.h" #include "chromeos/ash/components/settings/cros_settings_names.h" @@ -42,6 +44,7 @@ #include "components/user_manager/user_names.h" #include "components/user_manager/user_type.h" #include "google_apis/gaia/gaia_auth_util.h" +#include "ui/base/l10n/l10n_util.h" #include "ui/base/resource/resource_bundle.h" #include "ui/chromeos/resources/grit/ui_chromeos_resources.h" #include "ui/gfx/image/image_skia.h" @@ -1424,29 +1427,31 @@ void UserManagerBase::UpdateUserAccountLocale(const AccountId& account_id, const std::string& locale) { - std::unique_ptr<std::string> resolved_locale(new std::string()); if (!locale.empty() && locale != delegate_->GetApplicationLocale()) { - // std::move will nullptr out |resolved_locale|, so cache the underlying - // ptr. - std::string* raw_resolved_locale = resolved_locale.get(); - ScheduleResolveLocale( - locale, + base::ThreadPool::PostTaskAndReplyWithResult( + FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT}, + base::BindOnce( + [](const std::string& locale) { + std::string resolved_locale; + std::ignore = + l10n_util::CheckAndResolveLocale(locale, &resolved_locale); + return resolved_locale; + }, + locale), base::BindOnce(&UserManagerBase::DoUpdateAccountLocale, - weak_factory_.GetWeakPtr(), account_id, - std::move(resolved_locale)), - raw_resolved_locale); + weak_factory_.GetWeakPtr(), account_id)); } else { - resolved_locale = std::make_unique<std::string>(locale); - DoUpdateAccountLocale(account_id, std::move(resolved_locale)); + DoUpdateAccountLocale(account_id, locale); } } void UserManagerBase::DoUpdateAccountLocale( const AccountId& account_id, - std::unique_ptr<std::string> resolved_locale) { + const std::string& resolved_locale) { User* user = FindUserAndModify(account_id); - if (user && resolved_locale) - user->SetAccountLocale(*resolved_locale); + if (user) { + user->SetAccountLocale(resolved_locale); + } } void UserManagerBase::DeleteUser(User* user) {
diff --git a/components/user_manager/user_manager_base.h b/components/user_manager/user_manager_base.h index e109cd1..c2f063f 100644 --- a/components/user_manager/user_manager_base.h +++ b/components/user_manager/user_manager_base.h
@@ -401,7 +401,7 @@ // Updates user account after locale was resolved. void DoUpdateAccountLocale(const AccountId& account_id, - std::unique_ptr<std::string> resolved_locale); + const std::string& resolved_locale); void RemoveLegacySupervisedUser(const AccountId& account_id);
diff --git a/components/viz/common/yuv_readback_unittest.cc b/components/viz/common/yuv_readback_unittest.cc index 682ad114..f4d1d1e 100644 --- a/components/viz/common/yuv_readback_unittest.cc +++ b/components/viz/common/yuv_readback_unittest.cc
@@ -62,10 +62,10 @@ std::string* output, const scoped_refptr<base::RefCountedString>& json_events_str, bool has_more_events) { - if (output->size() > 1 && !json_events_str->as_string().empty()) { + if (output->size() > 1 && !json_events_str->data().empty()) { output->append(","); } - output->append(json_events_str->as_string()); + output->append(json_events_str->data()); if (!has_more_events) { std::move(quit_closure).Run(); }
diff --git a/components/webapps/browser/installable/installable_icon_fetcher.cc b/components/webapps/browser/installable/installable_icon_fetcher.cc index ced7956..eedb405e 100644 --- a/components/webapps/browser/installable/installable_icon_fetcher.cc +++ b/components/webapps/browser/installable/installable_icon_fetcher.cc
@@ -99,7 +99,7 @@ SkBitmap decoded; if (bitmap_result.is_valid()) { base::AssertLongCPUWorkAllowed(); - gfx::PNGCodec::Decode(bitmap_result.bitmap_data->data(), + gfx::PNGCodec::Decode(bitmap_result.bitmap_data->front(), bitmap_result.bitmap_data->size(), &decoded); }
diff --git a/content/browser/background_fetch/storage/image_helpers.cc b/content/browser/background_fetch/storage/image_helpers.cc index cbd4c80..dbee0df 100644 --- a/content/browser/background_fetch/storage/image_helpers.cc +++ b/content/browser/background_fetch/storage/image_helpers.cc
@@ -21,8 +21,11 @@ constexpr int kMaxIconResolution = 256 * 256; std::string ConvertAndSerializeIcon(const SkBitmap& icon) { + std::string serialized_icon; auto icon_bytes = gfx::Image::CreateFrom1xBitmap(icon).As1xPNGBytes(); - return std::string(base::as_string_view(*icon_bytes)); + serialized_icon.assign(icon_bytes->front_as<char>(), + icon_bytes->front_as<char>() + icon_bytes->size()); + return serialized_icon; } SkBitmap DeserializeAndConvertIcon(
diff --git a/content/browser/devtools/devtools_agent_host_impl.cc b/content/browser/devtools/devtools_agent_host_impl.cc index c837c64..13dc3d4a 100644 --- a/content/browser/devtools/devtools_agent_host_impl.cc +++ b/content/browser/devtools/devtools_agent_host_impl.cc
@@ -382,7 +382,8 @@ scoped_refptr<base::RefCountedMemory> data) { scoped_refptr<DevToolsStreamFile> stream = DevToolsStreamFile::Create(GetIOContext(), true /* binary */); - stream->Append(std::make_unique<std::string>(base::as_string_view(*data))); + std::string text(reinterpret_cast<const char*>(data->front()), data->size()); + stream->Append(std::make_unique<std::string>(text)); return stream->handle(); }
diff --git a/content/browser/devtools/devtools_frontend_host_impl.cc b/content/browser/devtools/devtools_frontend_host_impl.cc index a94ceac..15e152fd 100644 --- a/content/browser/devtools/devtools_frontend_host_impl.cc +++ b/content/browser/devtools/devtools_frontend_host_impl.cc
@@ -99,7 +99,7 @@ scoped_refptr<base::RefCountedMemory> bytes = GetFrontendResourceBytes(path); if (!bytes) return std::string(); - return std::string(base::as_string_view(*bytes)); + return std::string(bytes->front_as<char>(), bytes->size()); } DevToolsFrontendHostImpl::DevToolsFrontendHostImpl(
diff --git a/content/browser/devtools/devtools_http_handler.cc b/content/browser/devtools/devtools_http_handler.cc index 2068552e..724be96 100644 --- a/content/browser/devtools/devtools_http_handler.cc +++ b/content/browser/devtools/devtools_http_handler.cc
@@ -701,10 +701,11 @@ scoped_refptr<base::RefCountedMemory> bytes = GetContentClient()->GetDataResourceBytes(kCcompressedProtocolJSON); CHECK(bytes) << "Could not load protocol"; + std::string json_protocol(reinterpret_cast<const char*>(bytes->front()), + bytes->size()); net::HttpServerResponseInfo response(net::HTTP_OK); - response.SetBody(std::string(base::as_string_view(*bytes)), - "application/json; charset=UTF-8"); + response.SetBody(json_protocol, "application/json; charset=UTF-8"); thread_->task_runner()->PostTask( FROM_HERE, base::BindOnce(&ServerWrapper::SendResponse,
diff --git a/content/browser/devtools/devtools_url_loader_interceptor.cc b/content/browser/devtools/devtools_url_loader_interceptor.cc index 933ccce..531f27b3 100644 --- a/content/browser/devtools/devtools_url_loader_interceptor.cc +++ b/content/browser/devtools/devtools_url_loader_interceptor.cc
@@ -217,7 +217,7 @@ private: void OnDataAvailable(const void* data, size_t num_bytes) override { DCHECK(!data_complete_); - body_->as_string().append( + body_->data().append( std::string(static_cast<const char*>(data), num_bytes)); } @@ -245,7 +245,7 @@ data_complete_ = true; body_pipe_drainer_.reset(); // TODO(caseq): only encode if necessary. - encoded_body_ = base::Base64Encode(*body_); + encoded_body_ = base::Base64Encode(body_->data()); for (auto& cb : callbacks_) cb->sendSuccess(encoded_body_, true); callbacks_.clear(); @@ -1229,10 +1229,11 @@ size_t bytes_to_sniff = std::min(body_size, static_cast<size_t>(net::kMaxBytesToSniff)); const std::string hint = head->mime_type; - net::SniffMimeType(base::as_string_view(*body).substr( - response_body_offset, bytes_to_sniff), - url, hint, net::ForceSniffFileUrlsForHtml::kDisabled, - &head->mime_type); + net::SniffMimeType( + std::string_view(body->front_as<const char>() + response_body_offset, + bytes_to_sniff), + url, hint, net::ForceSniffFileUrlsForHtml::kDisabled, + &head->mime_type); head->did_mime_sniff = true; } else if (head->mime_type.empty()) { head->mime_type.assign("text/plain"); @@ -1372,7 +1373,7 @@ if (body) { size_t num_bytes = body_size; MojoResult res = producer_handle->WriteData( - body->data() + offset, &num_bytes, MOJO_WRITE_DATA_FLAG_NONE); + body->front() + offset, &num_bytes, MOJO_WRITE_DATA_FLAG_NONE); DCHECK_EQ(0u, res); DCHECK_EQ(num_bytes, body_size); }
diff --git a/content/browser/gpu/gpu_process_host.cc b/content/browser/gpu/gpu_process_host.cc index 61876f1..14c9dd0 100644 --- a/content/browser/gpu/gpu_process_host.cc +++ b/content/browser/gpu/gpu_process_host.cc
@@ -291,6 +291,7 @@ switches::kOzonePlatform, switches::kDisableExplicitDmaFences, switches::kOzoneDumpFile, + switches::kEnableNativeGpuMemoryBuffers, #endif #if BUILDFLAG(IS_LINUX) switches::kX11Display,
diff --git a/content/browser/payments/payment_app_provider_impl.cc b/content/browser/payments/payment_app_provider_impl.cc index dca797b..eacf7fe 100644 --- a/content/browser/payments/payment_app_provider_impl.cc +++ b/content/browser/payments/payment_app_provider_impl.cc
@@ -84,7 +84,8 @@ gfx::Image decoded_image = gfx::Image::CreateFrom1xBitmap(app_icon); scoped_refptr<base::RefCountedMemory> raw_data = decoded_image.As1xPNGBytes(); - return base::Base64Encode(*raw_data); + return base::Base64Encode( + std::string_view(raw_data->front_as<char>(), raw_data->size())); } void CheckRegistrationSuccess(base::OnceCallback<void(bool success)> callback,
diff --git a/content/browser/renderer_host/navigation_controller_impl.cc b/content/browser/renderer_host/navigation_controller_impl.cc index e57f8c14..fad24f0 100644 --- a/content/browser/renderer_host/navigation_controller_impl.cc +++ b/content/browser/renderer_host/navigation_controller_impl.cc
@@ -2656,9 +2656,10 @@ // From the GURL's POV, the only important part here is scheme, it doesn't // check the actual content. Thus we can take only the prefix of the url, to // avoid unneeded copying of a potentially long string. - constexpr size_t kDataUriPrefixMaxLen = 64; - const size_t len = std::min(data_url_as_string->size(), kDataUriPrefixMaxLen); - GURL data_url(base::as_string_view(*data_url_as_string).substr(0u, len)); + const size_t kDataUriPrefixMaxLen = 64; + GURL data_url( + std::string(data_url_as_string->front_as<char>(), + std::min(data_url_as_string->size(), kDataUriPrefixMaxLen))); if (!data_url.is_valid() || !data_url.SchemeIs(url::kDataScheme)) return false; @@ -4034,7 +4035,7 @@ /*visited_link_salt=*/std::nullopt); #if BUILDFLAG(IS_ANDROID) if (ValidateDataURLAsString(params.data_url_as_string)) { - commit_params->data_url_as_string = params.data_url_as_string->as_string(); + commit_params->data_url_as_string = params.data_url_as_string->data(); } #endif
diff --git a/content/browser/renderer_host/navigation_entry_impl.cc b/content/browser/renderer_host/navigation_entry_impl.cc index 487f0bb..a0825a5 100644 --- a/content/browser/renderer_host/navigation_entry_impl.cc +++ b/content/browser/renderer_host/navigation_entry_impl.cc
@@ -473,7 +473,7 @@ scoped_refptr<base::RefCountedString> data_url) { if (data_url) { // A quick check that it's actually a data URL. - DCHECK(base::StartsWith(base::as_string_view(*data_url), url::kDataScheme, + DCHECK(base::StartsWith(data_url->front_as<char>(), url::kDataScheme, base::CompareCase::SENSITIVE)); } data_url_as_string_ = std::move(data_url); @@ -977,10 +977,9 @@ // main frames, because loadData* navigations can only happen on the main // frame. bool is_for_main_frame = (root_node()->frame_entry == &frame_entry); - scoped_refptr<const base::RefCountedString> string = GetDataURLAsString(); if (is_for_main_frame && - NavigationControllerImpl::ValidateDataURLAsString(string)) { - commit_params->data_url_as_string = string->as_string(); + NavigationControllerImpl::ValidateDataURLAsString(GetDataURLAsString())) { + commit_params->data_url_as_string = GetDataURLAsString()->data(); } #endif
diff --git a/content/browser/service_worker/service_worker_context_core.h b/content/browser/service_worker/service_worker_context_core.h index d0dad33..c63d7fd 100644 --- a/content/browser/service_worker/service_worker_context_core.h +++ b/content/browser/service_worker/service_worker_context_core.h
@@ -328,8 +328,7 @@ scoped_refptr<ServiceWorkerRegistration> GetLiveRegistration( int64_t registration_id); void AddLiveRegistration(ServiceWorkerRegistration* registration); - // RemoveLiveRegistration removes registration from |live_registrations_| - // and notifies all observers of the id of the registration removed. + // Erases the live registration for `registration_id`, if found. void RemoveLiveRegistration(int64_t registration_id); const std::map<int64_t, ServiceWorkerRegistration*>& GetLiveRegistrations() const {
diff --git a/content/browser/tracing/cros_tracing_agent.cc b/content/browser/tracing/cros_tracing_agent.cc index 20715495..3623029a 100644 --- a/content/browser/tracing/cros_tracing_agent.cc +++ b/content/browser/tracing/cros_tracing_agent.cc
@@ -196,7 +196,7 @@ // Called on any thread. void OnTraceData(base::OnceClosure stop_complete_callback, const scoped_refptr<base::RefCountedString>& events) { - if (!events || events->as_string().empty()) { + if (!events || events->data().empty()) { OnTraceDataCommitted(std::move(stop_complete_callback)); return; }
diff --git a/content/browser/tracing/tracing_ui.cc b/content/browser/tracing/tracing_ui.cc index 1d0992c5..9063166 100644 --- a/content/browser/tracing/tracing_ui.cc +++ b/content/browser/tracing/tracing_ui.cc
@@ -58,7 +58,7 @@ } auto res = base::MakeRefCounted<base::RefCountedString>(); - base::JSONWriter::Write(category_list, &res->as_string()); + base::JSONWriter::Write(category_list, &res->data()); std::move(callback).Run(res); } @@ -144,7 +144,7 @@ void TracingCallbackWrapperBase64(WebUIDataSource::GotDataCallback callback, std::unique_ptr<std::string> data) { base::RefCountedString* data_base64 = new base::RefCountedString(); - data_base64->as_string() = base::Base64Encode(*data); + data_base64->data() = base::Base64Encode(*data); std::move(callback).Run(data_base64); }
diff --git a/content/browser/webui/web_ui_data_source_unittest.cc b/content/browser/webui/web_ui_data_source_unittest.cc index 8d39fbe..02f8fc3 100644 --- a/content/browser/webui/web_ui_data_source_unittest.cc +++ b/content/browser/webui/web_ui_data_source_unittest.cc
@@ -94,7 +94,7 @@ void EmptyStringsCallback(bool from_js_module, scoped_refptr<base::RefCountedMemory> data) { - std::string result(base::as_string_view(*data)); + std::string result(data->front_as<char>(), data->size()); EXPECT_NE(result.find("loadTimeData.data = {"), std::string::npos); EXPECT_NE(result.find("};"), std::string::npos); bool has_import = result.find("import {loadTimeData}") != std::string::npos; @@ -112,7 +112,7 @@ } void SomeValuesCallback(scoped_refptr<base::RefCountedMemory> data) { - std::string result(base::as_string_view(*data)); + std::string result(data->front_as<char>(), data->size()); EXPECT_NE(result.find("\"flag\":true"), std::string::npos); EXPECT_NE(result.find("\"counter\":10"), std::string::npos); EXPECT_NE(result.find("\"debt\":-456"), std::string::npos); @@ -133,13 +133,13 @@ } void DefaultResourceFoobarCallback(scoped_refptr<base::RefCountedMemory> data) { - std::string result(base::as_string_view(*data)); + std::string result(data->front_as<char>(), data->size()); EXPECT_NE(result.find(kDummyDefaultResource), std::string::npos); } void DefaultResourceStringsCallback( scoped_refptr<base::RefCountedMemory> data) { - std::string result(base::as_string_view(*data)); + std::string result(data->front_as<char>(), data->size()); EXPECT_NE(result.find(kDummyDefaultResource), std::string::npos); } @@ -151,12 +151,12 @@ } void NamedResourceFoobarCallback(scoped_refptr<base::RefCountedMemory> data) { - std::string result(base::as_string_view(*data)); + std::string result(data->front_as<char>(), data->size()); EXPECT_NE(result.find(kDummyResource), std::string::npos); } void NamedResourceStringsCallback(scoped_refptr<base::RefCountedMemory> data) { - std::string result(base::as_string_view(*data)); + std::string result(data->front_as<char>(), data->size()); EXPECT_NE(result.find(kDummyDefaultResource), std::string::npos); } @@ -169,7 +169,7 @@ void NamedResourceWithQueryStringCallback( scoped_refptr<base::RefCountedMemory> data) { - std::string result(base::as_string_view(*data)); + std::string result(data->front_as<char>(), data->size()); EXPECT_NE(result.find(kDummyResource), std::string::npos); } @@ -183,7 +183,7 @@ void NamedResourceWithUrlFragmentCallback( scoped_refptr<base::RefCountedMemory> data) { EXPECT_NE(data, nullptr); - std::string result(base::as_string_view(*data)); + std::string result(data->front_as<char>(), data->size()); EXPECT_NE(result.find(kDummyResource), std::string::npos); } @@ -195,7 +195,7 @@ void WebUIDataSourceTest::RequestFilterQueryStringCallback( scoped_refptr<base::RefCountedMemory> data) { - std::string result(base::as_string_view(*data)); + std::string result(data->front_as<char>(), data->size()); // Check that the query string is passed to the request filter (and not // trimmed). EXPECT_EQ("foobar?query?string", request_path_); @@ -282,7 +282,7 @@ } void NamedResourceBarJSCallback(scoped_refptr<base::RefCountedMemory> data) { - std::string result(base::as_string_view(*data)); + std::string result(data->front_as<char>(), data->size()); EXPECT_NE(result.find(kDummyJSResource), std::string::npos); }
diff --git a/content/browser/webui/web_ui_url_loader_factory.cc b/content/browser/webui/web_ui_url_loader_factory.cc index 3a9a162e..3879322 100644 --- a/content/browser/webui/web_ui_url_loader_factory.cc +++ b/content/browser/webui/web_ui_url_loader_factory.cc
@@ -81,7 +81,8 @@ if (replacements) { // We won't know the the final output size ahead of time, so we have to // use an intermediate string. - auto input = base::as_string_view(*bytes); + std::string_view input(reinterpret_cast<const char*>(bytes->front()), + bytes->size()); std::string temp_str; if (replace_in_js) { CHECK(
diff --git a/content/browser/webui/web_ui_url_loader_factory_unittest.cc b/content/browser/webui/web_ui_url_loader_factory_unittest.cc index 78ec7de2..9797c24a 100644 --- a/content/browser/webui/web_ui_url_loader_factory_unittest.cc +++ b/content/browser/webui/web_ui_url_loader_factory_unittest.cc
@@ -97,12 +97,11 @@ delete; // base::RefCountedMemory implementation: - base::span<const uint8_t> AsSpan() const override { - // SAFETY: This is unsound, but any use of the pointer will crash as the - // first page is not mapped. The test does not actually use the pointer. - return UNSAFE_BUFFERS(base::span<const uint8_t>( - static_cast<const uint8_t*>(nullptr), size_)); + const unsigned char* front() const override { + NOTREACHED(); + return nullptr; } + size_t size() const override { return size_; } private: ~OversizedRefCountedMemory() override = default;
diff --git a/content/public/common/content_client.cc b/content/public/common/content_client.cc index 1045f21..c558c75 100644 --- a/content/public/common/content_client.cc +++ b/content/public/common/content_client.cc
@@ -125,7 +125,7 @@ GetDataResourceBytes(resource_id); if (!memory) return std::string(); - return std::string(base::as_string_view(*memory)); + return std::string(memory->front_as<char>(), memory->size()); } gfx::Image& ContentClient::GetNativeImageNamed(int resource_id) {
diff --git a/content/public/test/browser_test_utils.cc b/content/public/test/browser_test_utils.cc index b726126e..e6ece0d2 100644 --- a/content/public/test/browser_test_utils.cc +++ b/content/public/test/browser_test_utils.cc
@@ -415,8 +415,8 @@ net::GZipHeader::Status header_status = net::GZipHeader::INCOMPLETE_HEADER; const char* header_end = nullptr; while (header_status == net::GZipHeader::INCOMPLETE_HEADER) { - auto chars = base::as_chars(base::span(maybe_gzipped)); - header_status = header.ReadMore(chars.data(), chars.size(), &header_end); + header_status = header.ReadMore(maybe_gzipped.front_as<char>(), + maybe_gzipped.size(), &header_end); } return header_status == net::GZipHeader::COMPLETE_HEADER; } @@ -424,13 +424,11 @@ void AppendGzippedResource(const base::RefCountedMemory& encoded, std::string* to_append) { auto source_stream = std::make_unique<net::MockSourceStream>(); - auto encoded_chars = base::as_chars(base::span(encoded)); - source_stream->AddReadResult(encoded_chars.data(), encoded_chars.size(), + source_stream->AddReadResult(encoded.front_as<char>(), encoded.size(), net::OK, net::MockSourceStream::SYNC); // Add an EOF. - auto end = encoded_chars.last(0u); - source_stream->AddReadResult(end.data(), end.size(), net::OK, - net::MockSourceStream::SYNC); + source_stream->AddReadResult(encoded.front_as<char>() + encoded.size(), 0, + net::OK, net::MockSourceStream::SYNC); std::unique_ptr<net::GzipSourceStream> filter = net::GzipSourceStream::Create( std::move(source_stream), net::SourceStream::TYPE_GZIP); scoped_refptr<net::IOBufferWithSize> dest_buffer = @@ -1915,12 +1913,10 @@ ui::ResourceBundle::GetSharedInstance().LoadDataResourceBytes( IDR_ASH_WEBUI_COMMON_WEBUI_RESOURCE_TEST_JS); - if (HasGzipHeader(*bytes)) { + if (HasGzipHeader(*bytes)) AppendGzippedResource(*bytes, &script); - } else { - auto chars = base::as_chars(base::span(*bytes)); - script.append(chars.data(), chars.size()); - } + else + script.append(bytes->front_as<char>(), bytes->size()); script.append("\n"); ExecuteScriptAsync(web_contents, script);
diff --git a/content/public/test/web_ui_browsertest_util.cc b/content/public/test/web_ui_browsertest_util.cc index d08d27c..c0baed3 100644 --- a/content/public/test/web_ui_browsertest_util.cc +++ b/content/public/test/web_ui_browsertest_util.cc
@@ -49,7 +49,7 @@ CHECK(base::ReadFileToString(path, &contents)) << path.value(); base::RefCountedString* ref_contents = new base::RefCountedString; - ref_contents->as_string() = contents; + ref_contents->data() = contents; std::move(callback).Run(ref_contents); }
diff --git a/device/BUILD.gn b/device/BUILD.gn index 55134a17..9d8800dc 100644 --- a/device/BUILD.gn +++ b/device/BUILD.gn
@@ -177,6 +177,7 @@ "fido/ctap_request_unittest.cc", "fido/ctap_response_unittest.cc", "fido/enclave/enclave_protocol_utils_unittest.cc", + "fido/enclave/verify/utils_unittest.cc", "fido/fake_fido_discovery_unittest.cc", "fido/fido_device_authenticator_unittest.cc", "fido/fido_device_discovery_unittest.cc",
diff --git a/device/fido/BUILD.gn b/device/fido/BUILD.gn index 3fdcec61..d0986f4 100644 --- a/device/fido/BUILD.gn +++ b/device/fido/BUILD.gn
@@ -167,6 +167,8 @@ "enclave/verify/claim.h", "enclave/verify/endorsement.cc", "enclave/verify/endorsement.h", + "enclave/verify/utils.h", + "enclave/verify/utils.cc", "enclave/verify/verify.h", "fido_authenticator.cc", "fido_authenticator.h",
diff --git a/device/fido/enclave/constants.cc b/device/fido/enclave/constants.cc index b6225a76..dd26b093 100644 --- a/device/fido/enclave/constants.cc +++ b/device/fido/enclave/constants.cc
@@ -87,6 +87,7 @@ const char kRequestSecretKey[] = "secret"; const char kRequestCounterIDKey[] = "counter_id"; const char kRequestVaultHandleWithoutTypeKey[] = "vault_handle_without_type"; +const char kRequestWrappedPINDataKey[] = "wrapped_pin_data"; const char kResponseSuccessKey[] = "ok"; const char kResponseErrorKey[] = "err"; @@ -98,6 +99,7 @@ const char kPasskeysWrapPinCommandName[] = "passkeys/wrap_pin"; const char kRecoveryKeyStoreWrapAsMemberCommandName[] = "recovery_key_store/wrap_as_member"; +const char kRecoveryKeyStoreRewrapCommandName[] = "recovery_key_store/rewrap"; const char kRegisterPubKeysKey[] = "pub_keys"; const char kRegisterDeviceIdKey[] = "device_id";
diff --git a/device/fido/enclave/constants.h b/device/fido/enclave/constants.h index 5e575c2..a14a283 100644 --- a/device/fido/enclave/constants.h +++ b/device/fido/enclave/constants.h
@@ -51,6 +51,7 @@ COMPONENT_EXPORT(DEVICE_FIDO) extern const char kRequestCounterIDKey[]; COMPONENT_EXPORT(DEVICE_FIDO) extern const char kRequestVaultHandleWithoutTypeKey[]; +COMPONENT_EXPORT(DEVICE_FIDO) extern const char kRequestWrappedPINDataKey[]; // Keys in the top-level of each response. COMPONENT_EXPORT(DEVICE_FIDO) extern const char kResponseSuccessKey[]; @@ -65,6 +66,8 @@ COMPONENT_EXPORT(DEVICE_FIDO) extern const char kPasskeysWrapPinCommandName[]; COMPONENT_EXPORT(DEVICE_FIDO) extern const char kRecoveryKeyStoreWrapAsMemberCommandName[]; +COMPONENT_EXPORT(DEVICE_FIDO) +extern const char kRecoveryKeyStoreRewrapCommandName[]; // Register request keys COMPONENT_EXPORT(DEVICE_FIDO) extern const char kRegisterPubKeysKey[];
diff --git a/device/fido/enclave/enclave_protocol_utils.cc b/device/fido/enclave/enclave_protocol_utils.cc index 5d0361b..7d74d07 100644 --- a/device/fido/enclave/enclave_protocol_utils.cc +++ b/device/fido/enclave/enclave_protocol_utils.cc
@@ -50,7 +50,6 @@ const char kRequestDataKey[] = "request"; const char kRequestClientDataJSONKey[] = "client_data_json"; const char kRequestClaimedPINKey[] = "claimed_pin"; -const char kRequestWrappedPINDataKey[] = "wrapped_pin_data"; // JSON keys for GetAssertion request fields. const char kGetAssertionRequestProtobufKey[] = "protobuf";
diff --git a/device/fido/enclave/verify/utils.cc b/device/fido/enclave/verify/utils.cc new file mode 100644 index 0000000..f76464a --- /dev/null +++ b/device/fido/enclave/verify/utils.cc
@@ -0,0 +1,22 @@ +// Copyright 2024 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "device/fido/enclave/verify/utils.h" + +#include <string> + +#include "base/strings/string_util.h" + +namespace device::enclave { + +constexpr char kPemHeader[] = "-----BEGIN PUBLIC KEY-----"; +constexpr char kPemFooter[] = "-----END PUBLIC KEY-----"; + +bool LooksLikePem(std::string_view maybe_pem) { + std::string_view trimmed = + base::TrimWhitespaceASCII(maybe_pem, base::TrimPositions::TRIM_ALL); + return trimmed.starts_with(kPemHeader) && trimmed.ends_with(kPemFooter); +} + +} // namespace device::enclave
diff --git a/device/fido/enclave/verify/utils.h b/device/fido/enclave/verify/utils.h new file mode 100644 index 0000000..6177794 --- /dev/null +++ b/device/fido/enclave/verify/utils.h
@@ -0,0 +1,19 @@ +// Copyright 2024 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef DEVICE_FIDO_ENCLAVE_VERIFY_UTILS_H_ +#define DEVICE_FIDO_ENCLAVE_VERIFY_UTILS_H_ + +#include <string> + +#include "base/component_export.h" + +namespace device::enclave { + +// Makes a plausible guess whether the public key is in PEM format. +bool COMPONENT_EXPORT(DEVICE_FIDO) LooksLikePem(std::string_view maybe_pem); + +} // namespace device::enclave + +#endif // DEVICE_FIDO_ENCLAVE_VERIFY_UTILS_H_
diff --git a/device/fido/enclave/verify/utils_unittest.cc b/device/fido/enclave/verify/utils_unittest.cc new file mode 100644 index 0000000..217b7e8 --- /dev/null +++ b/device/fido/enclave/verify/utils_unittest.cc
@@ -0,0 +1,25 @@ +// Copyright 2024 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "device/fido/enclave/verify/utils.h" + +#include "testing/gtest/include/gtest/gtest.h" + +namespace device::enclave { + +constexpr char kTestPem[] = + "-----BEGIN PUBLIC KEY-----\n" + "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEbwRcQY2YvUhp8QpjBDjDYtgrjAWJ\n" + "a/ewUKu7URKVMbziN8Idzu7neKcvf2QKPkYXReply6fOufdXZJ+SPVqXBg==\n" + "-----END PUBLIC KEY-----"; + +TEST(UtilsTest, LooksLikePem_WithValidPem_ReturnsTrue) { + EXPECT_TRUE(device::enclave::LooksLikePem(kTestPem)); +} + +TEST(UtilsTest, LooksLikePem_WithInvalidPem_ReturnsFalse) { + EXPECT_FALSE(device::enclave::LooksLikePem("This should return false")); +} + +} // namespace device::enclave
diff --git a/extensions/browser/api/printer_provider/printer_provider_internal_api.cc b/extensions/browser/api/printer_provider/printer_provider_internal_api.cc index 119de3df..8b7064d 100644 --- a/extensions/browser/api/printer_provider/printer_provider_internal_api.cc +++ b/extensions/browser/api/printer_provider/printer_provider_internal_api.cc
@@ -189,7 +189,9 @@ // |job->document_bytes| are passed to the callback to make sure the ref // counted memory does not go away before the memory backed blob is created. browser_context()->CreateMemoryBackedBlob( - base::span(*job->document_bytes), job->content_type, + base::make_span(job->document_bytes->front(), + job->document_bytes->size()), + job->content_type, base::BindOnce(&PrinterProviderInternalGetPrintDataFunction::OnBlob, this, job->document_bytes)); return RespondLater();
diff --git a/gpu/command_buffer/tests/gl_manager.cc b/gpu/command_buffer/tests/gl_manager.cc index 6e8cc80..b154362 100644 --- a/gpu/command_buffer/tests/gl_manager.cc +++ b/gpu/command_buffer/tests/gl_manager.cc
@@ -80,7 +80,7 @@ void* memory(size_t plane) override { DCHECK(mapped_); DCHECK_LT(plane, gfx::NumberOfPlanesForLinearBufferFormat(format_)); - return bytes_->as_vector().data() + + return reinterpret_cast<uint8_t*>(&bytes_->data().front()) + gfx::BufferOffsetForBufferFormat(size_, format_, plane); } void Unmap() override {
diff --git a/infra/config/generated/builders/build/Mac Builder Siso FYI/shadow-properties.json b/infra/config/generated/builders/build/Mac Builder Siso FYI/shadow-properties.json index 1d6e298..d470256 100644 --- a/infra/config/generated/builders/build/Mac Builder Siso FYI/shadow-properties.json +++ b/infra/config/generated/builders/build/Mac Builder Siso FYI/shadow-properties.json
@@ -1,4 +1,10 @@ { + "$build/reclient": { + "instance": "rbe-chromium-untrusted", + "jobs": 250, + "metrics_project": "chromium-reclient-metrics", + "scandeps_server": true + }, "$build/siso": { "configs": [ "builder"
diff --git a/infra/config/generated/builders/build/Mac13 Tests Siso FYI/properties.json b/infra/config/generated/builders/build/Mac13 Tests Siso FYI/properties.json index 4e178d5..62f8bf9 100644 --- a/infra/config/generated/builders/build/Mac13 Tests Siso FYI/properties.json +++ b/infra/config/generated/builders/build/Mac13 Tests Siso FYI/properties.json
@@ -72,15 +72,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted" - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git a/infra/config/generated/builders/build/Mac13 Tests Siso FYI/shadow-properties.json b/infra/config/generated/builders/build/Mac13 Tests Siso FYI/shadow-properties.json deleted file mode 100644 index 1d6e298..0000000 --- a/infra/config/generated/builders/build/Mac13 Tests Siso FYI/shadow-properties.json +++ /dev/null
@@ -1,11 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted" - } -} \ No newline at end of file
diff --git "a/infra/config/generated/builders/ci/Android FYI Experimental Release \050Pixel 6\051/properties.json" "b/infra/config/generated/builders/ci/Android FYI Experimental Release \050Pixel 6\051/properties.json" index 83fb9e5c..a777d48 100644 --- "a/infra/config/generated/builders/ci/Android FYI Experimental Release \050Pixel 6\051/properties.json" +++ "b/infra/config/generated/builders/ci/Android FYI Experimental Release \050Pixel 6\051/properties.json"
@@ -80,16 +80,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git "a/infra/config/generated/builders/ci/Android FYI Experimental Release \050Pixel 6\051/shadow-properties.json" "b/infra/config/generated/builders/ci/Android FYI Experimental Release \050Pixel 6\051/shadow-properties.json" deleted file mode 100644 index e70b3b60..0000000 --- "a/infra/config/generated/builders/ci/Android FYI Experimental Release \050Pixel 6\051/shadow-properties.json" +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git "a/infra/config/generated/builders/ci/Android FYI Release \050Motorola Moto G Power 5G\051/properties.json" "b/infra/config/generated/builders/ci/Android FYI Release \050Motorola Moto G Power 5G\051/properties.json" index 21e871e..a4e60b2 100644 --- "a/infra/config/generated/builders/ci/Android FYI Release \050Motorola Moto G Power 5G\051/properties.json" +++ "b/infra/config/generated/builders/ci/Android FYI Release \050Motorola Moto G Power 5G\051/properties.json"
@@ -77,16 +77,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git "a/infra/config/generated/builders/ci/Android FYI Release \050Motorola Moto G Power 5G\051/shadow-properties.json" "b/infra/config/generated/builders/ci/Android FYI Release \050Motorola Moto G Power 5G\051/shadow-properties.json" deleted file mode 100644 index e70b3b60..0000000 --- "a/infra/config/generated/builders/ci/Android FYI Release \050Motorola Moto G Power 5G\051/shadow-properties.json" +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git "a/infra/config/generated/builders/ci/Android FYI Release \050NVIDIA Shield TV\051/properties.json" "b/infra/config/generated/builders/ci/Android FYI Release \050NVIDIA Shield TV\051/properties.json" index d07afd1..09b9d5a 100644 --- "a/infra/config/generated/builders/ci/Android FYI Release \050NVIDIA Shield TV\051/properties.json" +++ "b/infra/config/generated/builders/ci/Android FYI Release \050NVIDIA Shield TV\051/properties.json"
@@ -74,16 +74,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git "a/infra/config/generated/builders/ci/Android FYI Release \050NVIDIA Shield TV\051/shadow-properties.json" "b/infra/config/generated/builders/ci/Android FYI Release \050NVIDIA Shield TV\051/shadow-properties.json" deleted file mode 100644 index e70b3b60..0000000 --- "a/infra/config/generated/builders/ci/Android FYI Release \050NVIDIA Shield TV\051/shadow-properties.json" +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git "a/infra/config/generated/builders/ci/Android FYI Release \050Nexus 5X\051/properties.json" "b/infra/config/generated/builders/ci/Android FYI Release \050Nexus 5X\051/properties.json" index d697c90..df011ce 100644 --- "a/infra/config/generated/builders/ci/Android FYI Release \050Nexus 5X\051/properties.json" +++ "b/infra/config/generated/builders/ci/Android FYI Release \050Nexus 5X\051/properties.json"
@@ -79,16 +79,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git "a/infra/config/generated/builders/ci/Android FYI Release \050Nexus 5X\051/shadow-properties.json" "b/infra/config/generated/builders/ci/Android FYI Release \050Nexus 5X\051/shadow-properties.json" deleted file mode 100644 index e70b3b60..0000000 --- "a/infra/config/generated/builders/ci/Android FYI Release \050Nexus 5X\051/shadow-properties.json" +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git "a/infra/config/generated/builders/ci/Android FYI Release \050Pixel 2\051/properties.json" "b/infra/config/generated/builders/ci/Android FYI Release \050Pixel 2\051/properties.json" index 144b5ad44..6dbe019 100644 --- "a/infra/config/generated/builders/ci/Android FYI Release \050Pixel 2\051/properties.json" +++ "b/infra/config/generated/builders/ci/Android FYI Release \050Pixel 2\051/properties.json"
@@ -73,16 +73,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git "a/infra/config/generated/builders/ci/Android FYI Release \050Pixel 2\051/shadow-properties.json" "b/infra/config/generated/builders/ci/Android FYI Release \050Pixel 2\051/shadow-properties.json" deleted file mode 100644 index e70b3b60..0000000 --- "a/infra/config/generated/builders/ci/Android FYI Release \050Pixel 2\051/shadow-properties.json" +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git "a/infra/config/generated/builders/ci/Android FYI Release \050Pixel 4\051/properties.json" "b/infra/config/generated/builders/ci/Android FYI Release \050Pixel 4\051/properties.json" index f40e420..0159f3c 100644 --- "a/infra/config/generated/builders/ci/Android FYI Release \050Pixel 4\051/properties.json" +++ "b/infra/config/generated/builders/ci/Android FYI Release \050Pixel 4\051/properties.json"
@@ -73,16 +73,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git "a/infra/config/generated/builders/ci/Android FYI Release \050Pixel 4\051/shadow-properties.json" "b/infra/config/generated/builders/ci/Android FYI Release \050Pixel 4\051/shadow-properties.json" deleted file mode 100644 index e70b3b60..0000000 --- "a/infra/config/generated/builders/ci/Android FYI Release \050Pixel 4\051/shadow-properties.json" +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git "a/infra/config/generated/builders/ci/Android FYI Release \050Pixel 6\051/properties.json" "b/infra/config/generated/builders/ci/Android FYI Release \050Pixel 6\051/properties.json" index 4773ea7..accf0983 100644 --- "a/infra/config/generated/builders/ci/Android FYI Release \050Pixel 6\051/properties.json" +++ "b/infra/config/generated/builders/ci/Android FYI Release \050Pixel 6\051/properties.json"
@@ -84,16 +84,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git "a/infra/config/generated/builders/ci/Android FYI Release \050Pixel 6\051/shadow-properties.json" "b/infra/config/generated/builders/ci/Android FYI Release \050Pixel 6\051/shadow-properties.json" deleted file mode 100644 index e70b3b60..0000000 --- "a/infra/config/generated/builders/ci/Android FYI Release \050Pixel 6\051/shadow-properties.json" +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git "a/infra/config/generated/builders/ci/Android FYI Release \050Samsung A13\051/properties.json" "b/infra/config/generated/builders/ci/Android FYI Release \050Samsung A13\051/properties.json" index 64ad4fb..7efbfad 100644 --- "a/infra/config/generated/builders/ci/Android FYI Release \050Samsung A13\051/properties.json" +++ "b/infra/config/generated/builders/ci/Android FYI Release \050Samsung A13\051/properties.json"
@@ -68,16 +68,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git "a/infra/config/generated/builders/ci/Android FYI Release \050Samsung A13\051/shadow-properties.json" "b/infra/config/generated/builders/ci/Android FYI Release \050Samsung A13\051/shadow-properties.json" deleted file mode 100644 index e70b3b60..0000000 --- "a/infra/config/generated/builders/ci/Android FYI Release \050Samsung A13\051/shadow-properties.json" +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git "a/infra/config/generated/builders/ci/Android FYI Release \050Samsung A23\051/properties.json" "b/infra/config/generated/builders/ci/Android FYI Release \050Samsung A23\051/properties.json" index ba5a4e6e..10a4648 100644 --- "a/infra/config/generated/builders/ci/Android FYI Release \050Samsung A23\051/properties.json" +++ "b/infra/config/generated/builders/ci/Android FYI Release \050Samsung A23\051/properties.json"
@@ -68,16 +68,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git "a/infra/config/generated/builders/ci/Android FYI Release \050Samsung A23\051/shadow-properties.json" "b/infra/config/generated/builders/ci/Android FYI Release \050Samsung A23\051/shadow-properties.json" deleted file mode 100644 index e70b3b60..0000000 --- "a/infra/config/generated/builders/ci/Android FYI Release \050Samsung A23\051/shadow-properties.json" +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git "a/infra/config/generated/builders/ci/Android FYI Release \050Samsung S23\051/properties.json" "b/infra/config/generated/builders/ci/Android FYI Release \050Samsung S23\051/properties.json" index 885dc48..14cadd8 100644 --- "a/infra/config/generated/builders/ci/Android FYI Release \050Samsung S23\051/properties.json" +++ "b/infra/config/generated/builders/ci/Android FYI Release \050Samsung S23\051/properties.json"
@@ -77,16 +77,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git "a/infra/config/generated/builders/ci/Android FYI Release \050Samsung S23\051/shadow-properties.json" "b/infra/config/generated/builders/ci/Android FYI Release \050Samsung S23\051/shadow-properties.json" deleted file mode 100644 index e70b3b60..0000000 --- "a/infra/config/generated/builders/ci/Android FYI Release \050Samsung S23\051/shadow-properties.json" +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git "a/infra/config/generated/builders/ci/Android WebView O \050dbg\051/properties.json" "b/infra/config/generated/builders/ci/Android WebView O \050dbg\051/properties.json" index 2024479..a703503 100644 --- "a/infra/config/generated/builders/ci/Android WebView O \050dbg\051/properties.json" +++ "b/infra/config/generated/builders/ci/Android WebView O \050dbg\051/properties.json"
@@ -92,16 +92,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 500 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git "a/infra/config/generated/builders/ci/Android WebView O \050dbg\051/shadow-properties.json" "b/infra/config/generated/builders/ci/Android WebView O \050dbg\051/shadow-properties.json" deleted file mode 100644 index 5271cc6a..0000000 --- "a/infra/config/generated/builders/ci/Android WebView O \050dbg\051/shadow-properties.json" +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 500 - } -} \ No newline at end of file
diff --git "a/infra/config/generated/builders/ci/Android WebView P \050dbg\051/properties.json" "b/infra/config/generated/builders/ci/Android WebView P \050dbg\051/properties.json" index c070563a..36a79db7 100644 --- "a/infra/config/generated/builders/ci/Android WebView P \050dbg\051/properties.json" +++ "b/infra/config/generated/builders/ci/Android WebView P \050dbg\051/properties.json"
@@ -92,16 +92,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 500 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git "a/infra/config/generated/builders/ci/Android WebView P \050dbg\051/shadow-properties.json" "b/infra/config/generated/builders/ci/Android WebView P \050dbg\051/shadow-properties.json" deleted file mode 100644 index 5271cc6a..0000000 --- "a/infra/config/generated/builders/ci/Android WebView P \050dbg\051/shadow-properties.json" +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 500 - } -} \ No newline at end of file
diff --git "a/infra/config/generated/builders/ci/Dawn Android arm DEPS Release \050Nexus 5X\051/properties.json" "b/infra/config/generated/builders/ci/Dawn Android arm DEPS Release \050Nexus 5X\051/properties.json" index 43e9aae..fe3a3402b 100644 --- "a/infra/config/generated/builders/ci/Dawn Android arm DEPS Release \050Nexus 5X\051/properties.json" +++ "b/infra/config/generated/builders/ci/Dawn Android arm DEPS Release \050Nexus 5X\051/properties.json"
@@ -77,16 +77,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git "a/infra/config/generated/builders/ci/Dawn Android arm DEPS Release \050Nexus 5X\051/shadow-properties.json" "b/infra/config/generated/builders/ci/Dawn Android arm DEPS Release \050Nexus 5X\051/shadow-properties.json" deleted file mode 100644 index e70b3b60..0000000 --- "a/infra/config/generated/builders/ci/Dawn Android arm DEPS Release \050Nexus 5X\051/shadow-properties.json" +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git "a/infra/config/generated/builders/ci/Dawn Android arm DEPS Release \050Pixel 4\051/properties.json" "b/infra/config/generated/builders/ci/Dawn Android arm DEPS Release \050Pixel 4\051/properties.json" index b115a522..0b86c78 100644 --- "a/infra/config/generated/builders/ci/Dawn Android arm DEPS Release \050Pixel 4\051/properties.json" +++ "b/infra/config/generated/builders/ci/Dawn Android arm DEPS Release \050Pixel 4\051/properties.json"
@@ -77,16 +77,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git "a/infra/config/generated/builders/ci/Dawn Android arm DEPS Release \050Pixel 4\051/shadow-properties.json" "b/infra/config/generated/builders/ci/Dawn Android arm DEPS Release \050Pixel 4\051/shadow-properties.json" deleted file mode 100644 index e70b3b60..0000000 --- "a/infra/config/generated/builders/ci/Dawn Android arm DEPS Release \050Pixel 4\051/shadow-properties.json" +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git "a/infra/config/generated/builders/ci/Dawn Android arm Release \050Nexus 5X\051/properties.json" "b/infra/config/generated/builders/ci/Dawn Android arm Release \050Nexus 5X\051/properties.json" index a85fee9..a4560d9f 100644 --- "a/infra/config/generated/builders/ci/Dawn Android arm Release \050Nexus 5X\051/properties.json" +++ "b/infra/config/generated/builders/ci/Dawn Android arm Release \050Nexus 5X\051/properties.json"
@@ -79,16 +79,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git "a/infra/config/generated/builders/ci/Dawn Android arm Release \050Nexus 5X\051/shadow-properties.json" "b/infra/config/generated/builders/ci/Dawn Android arm Release \050Nexus 5X\051/shadow-properties.json" deleted file mode 100644 index e70b3b60..0000000 --- "a/infra/config/generated/builders/ci/Dawn Android arm Release \050Nexus 5X\051/shadow-properties.json" +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git "a/infra/config/generated/builders/ci/Dawn Android arm Release \050Pixel 4\051/properties.json" "b/infra/config/generated/builders/ci/Dawn Android arm Release \050Pixel 4\051/properties.json" index 4b553a0..01bfb967 100644 --- "a/infra/config/generated/builders/ci/Dawn Android arm Release \050Pixel 4\051/properties.json" +++ "b/infra/config/generated/builders/ci/Dawn Android arm Release \050Pixel 4\051/properties.json"
@@ -79,16 +79,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git "a/infra/config/generated/builders/ci/Dawn Android arm Release \050Pixel 4\051/shadow-properties.json" "b/infra/config/generated/builders/ci/Dawn Android arm Release \050Pixel 4\051/shadow-properties.json" deleted file mode 100644 index e70b3b60..0000000 --- "a/infra/config/generated/builders/ci/Dawn Android arm Release \050Pixel 4\051/shadow-properties.json" +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git "a/infra/config/generated/builders/ci/Dawn Android arm64 DEPS Release \050Pixel 6\051/properties.json" "b/infra/config/generated/builders/ci/Dawn Android arm64 DEPS Release \050Pixel 6\051/properties.json" index 5d9822f..a0c2981 100644 --- "a/infra/config/generated/builders/ci/Dawn Android arm64 DEPS Release \050Pixel 6\051/properties.json" +++ "b/infra/config/generated/builders/ci/Dawn Android arm64 DEPS Release \050Pixel 6\051/properties.json"
@@ -76,16 +76,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git "a/infra/config/generated/builders/ci/Dawn Android arm64 DEPS Release \050Pixel 6\051/shadow-properties.json" "b/infra/config/generated/builders/ci/Dawn Android arm64 DEPS Release \050Pixel 6\051/shadow-properties.json" deleted file mode 100644 index e70b3b60..0000000 --- "a/infra/config/generated/builders/ci/Dawn Android arm64 DEPS Release \050Pixel 6\051/shadow-properties.json" +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git "a/infra/config/generated/builders/ci/Dawn Android arm64 Experimental Release \050Pixel 6\051/properties.json" "b/infra/config/generated/builders/ci/Dawn Android arm64 Experimental Release \050Pixel 6\051/properties.json" index 6a7ed6d3..4ad286d 100644 --- "a/infra/config/generated/builders/ci/Dawn Android arm64 Experimental Release \050Pixel 6\051/properties.json" +++ "b/infra/config/generated/builders/ci/Dawn Android arm64 Experimental Release \050Pixel 6\051/properties.json"
@@ -78,16 +78,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git "a/infra/config/generated/builders/ci/Dawn Android arm64 Experimental Release \050Pixel 6\051/shadow-properties.json" "b/infra/config/generated/builders/ci/Dawn Android arm64 Experimental Release \050Pixel 6\051/shadow-properties.json" deleted file mode 100644 index e70b3b60..0000000 --- "a/infra/config/generated/builders/ci/Dawn Android arm64 Experimental Release \050Pixel 6\051/shadow-properties.json" +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git "a/infra/config/generated/builders/ci/Dawn Android arm64 Release \050Pixel 6\051/properties.json" "b/infra/config/generated/builders/ci/Dawn Android arm64 Release \050Pixel 6\051/properties.json" index 7f83948..95fce2c2 100644 --- "a/infra/config/generated/builders/ci/Dawn Android arm64 Release \050Pixel 6\051/properties.json" +++ "b/infra/config/generated/builders/ci/Dawn Android arm64 Release \050Pixel 6\051/properties.json"
@@ -78,16 +78,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git "a/infra/config/generated/builders/ci/Dawn Android arm64 Release \050Pixel 6\051/shadow-properties.json" "b/infra/config/generated/builders/ci/Dawn Android arm64 Release \050Pixel 6\051/shadow-properties.json" deleted file mode 100644 index e70b3b60..0000000 --- "a/infra/config/generated/builders/ci/Dawn Android arm64 Release \050Pixel 6\051/shadow-properties.json" +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git "a/infra/config/generated/builders/ci/Dawn Android arm64 Release \050Samsung S24\051/properties.json" "b/infra/config/generated/builders/ci/Dawn Android arm64 Release \050Samsung S24\051/properties.json" index 3cac567..c2c69bcd 100644 --- "a/infra/config/generated/builders/ci/Dawn Android arm64 Release \050Samsung S24\051/properties.json" +++ "b/infra/config/generated/builders/ci/Dawn Android arm64 Release \050Samsung S24\051/properties.json"
@@ -78,16 +78,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git "a/infra/config/generated/builders/ci/Dawn Android arm64 Release \050Samsung S24\051/shadow-properties.json" "b/infra/config/generated/builders/ci/Dawn Android arm64 Release \050Samsung S24\051/shadow-properties.json" deleted file mode 100644 index e70b3b60..0000000 --- "a/infra/config/generated/builders/ci/Dawn Android arm64 Release \050Samsung S24\051/shadow-properties.json" +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git "a/infra/config/generated/builders/ci/Dawn Linux x64 DEPS Release \050Intel UHD 630\051/properties.json" "b/infra/config/generated/builders/ci/Dawn Linux x64 DEPS Release \050Intel UHD 630\051/properties.json" index e360ffc..366fbe9 100644 --- "a/infra/config/generated/builders/ci/Dawn Linux x64 DEPS Release \050Intel UHD 630\051/properties.json" +++ "b/infra/config/generated/builders/ci/Dawn Linux x64 DEPS Release \050Intel UHD 630\051/properties.json"
@@ -75,16 +75,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git "a/infra/config/generated/builders/ci/Dawn Linux x64 DEPS Release \050Intel UHD 630\051/shadow-properties.json" "b/infra/config/generated/builders/ci/Dawn Linux x64 DEPS Release \050Intel UHD 630\051/shadow-properties.json" deleted file mode 100644 index e70b3b60..0000000 --- "a/infra/config/generated/builders/ci/Dawn Linux x64 DEPS Release \050Intel UHD 630\051/shadow-properties.json" +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git "a/infra/config/generated/builders/ci/Dawn Linux x64 DEPS Release \050NVIDIA\051/properties.json" "b/infra/config/generated/builders/ci/Dawn Linux x64 DEPS Release \050NVIDIA\051/properties.json" index 39ebcfe0..ee920e7 100644 --- "a/infra/config/generated/builders/ci/Dawn Linux x64 DEPS Release \050NVIDIA\051/properties.json" +++ "b/infra/config/generated/builders/ci/Dawn Linux x64 DEPS Release \050NVIDIA\051/properties.json"
@@ -75,16 +75,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git "a/infra/config/generated/builders/ci/Dawn Linux x64 DEPS Release \050NVIDIA\051/shadow-properties.json" "b/infra/config/generated/builders/ci/Dawn Linux x64 DEPS Release \050NVIDIA\051/shadow-properties.json" deleted file mode 100644 index e70b3b60..0000000 --- "a/infra/config/generated/builders/ci/Dawn Linux x64 DEPS Release \050NVIDIA\051/shadow-properties.json" +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git "a/infra/config/generated/builders/ci/Dawn Linux x64 Experimental Release \050Intel UHD 630\051/properties.json" "b/infra/config/generated/builders/ci/Dawn Linux x64 Experimental Release \050Intel UHD 630\051/properties.json" index fe8413c..8cec660 100644 --- "a/infra/config/generated/builders/ci/Dawn Linux x64 Experimental Release \050Intel UHD 630\051/properties.json" +++ "b/infra/config/generated/builders/ci/Dawn Linux x64 Experimental Release \050Intel UHD 630\051/properties.json"
@@ -78,16 +78,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git "a/infra/config/generated/builders/ci/Dawn Linux x64 Experimental Release \050Intel UHD 630\051/shadow-properties.json" "b/infra/config/generated/builders/ci/Dawn Linux x64 Experimental Release \050Intel UHD 630\051/shadow-properties.json" deleted file mode 100644 index e70b3b60..0000000 --- "a/infra/config/generated/builders/ci/Dawn Linux x64 Experimental Release \050Intel UHD 630\051/shadow-properties.json" +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git "a/infra/config/generated/builders/ci/Dawn Linux x64 Release \050Intel UHD 630\051/properties.json" "b/infra/config/generated/builders/ci/Dawn Linux x64 Release \050Intel UHD 630\051/properties.json" index d9e4fe9..a898ab1 100644 --- "a/infra/config/generated/builders/ci/Dawn Linux x64 Release \050Intel UHD 630\051/properties.json" +++ "b/infra/config/generated/builders/ci/Dawn Linux x64 Release \050Intel UHD 630\051/properties.json"
@@ -78,16 +78,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git "a/infra/config/generated/builders/ci/Dawn Linux x64 Release \050Intel UHD 630\051/shadow-properties.json" "b/infra/config/generated/builders/ci/Dawn Linux x64 Release \050Intel UHD 630\051/shadow-properties.json" deleted file mode 100644 index e70b3b60..0000000 --- "a/infra/config/generated/builders/ci/Dawn Linux x64 Release \050Intel UHD 630\051/shadow-properties.json" +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git "a/infra/config/generated/builders/ci/Dawn Linux x64 Release \050NVIDIA\051/properties.json" "b/infra/config/generated/builders/ci/Dawn Linux x64 Release \050NVIDIA\051/properties.json" index 92097d84..b7522630 100644 --- "a/infra/config/generated/builders/ci/Dawn Linux x64 Release \050NVIDIA\051/properties.json" +++ "b/infra/config/generated/builders/ci/Dawn Linux x64 Release \050NVIDIA\051/properties.json"
@@ -78,16 +78,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git "a/infra/config/generated/builders/ci/Dawn Linux x64 Release \050NVIDIA\051/shadow-properties.json" "b/infra/config/generated/builders/ci/Dawn Linux x64 Release \050NVIDIA\051/shadow-properties.json" deleted file mode 100644 index e70b3b60..0000000 --- "a/infra/config/generated/builders/ci/Dawn Linux x64 Release \050NVIDIA\051/shadow-properties.json" +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git "a/infra/config/generated/builders/ci/Dawn Mac arm64 DEPS Release \050Apple M2\051/properties.json" "b/infra/config/generated/builders/ci/Dawn Mac arm64 DEPS Release \050Apple M2\051/properties.json" index e9b6473..b59fb48c 100644 --- "a/infra/config/generated/builders/ci/Dawn Mac arm64 DEPS Release \050Apple M2\051/properties.json" +++ "b/infra/config/generated/builders/ci/Dawn Mac arm64 DEPS Release \050Apple M2\051/properties.json"
@@ -80,16 +80,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git "a/infra/config/generated/builders/ci/Dawn Mac arm64 DEPS Release \050Apple M2\051/shadow-properties.json" "b/infra/config/generated/builders/ci/Dawn Mac arm64 DEPS Release \050Apple M2\051/shadow-properties.json" deleted file mode 100644 index e70b3b60..0000000 --- "a/infra/config/generated/builders/ci/Dawn Mac arm64 DEPS Release \050Apple M2\051/shadow-properties.json" +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git "a/infra/config/generated/builders/ci/Dawn Mac arm64 Experimental Release \050Apple M2\051/properties.json" "b/infra/config/generated/builders/ci/Dawn Mac arm64 Experimental Release \050Apple M2\051/properties.json" index eaa34e9..d821321 100644 --- "a/infra/config/generated/builders/ci/Dawn Mac arm64 Experimental Release \050Apple M2\051/properties.json" +++ "b/infra/config/generated/builders/ci/Dawn Mac arm64 Experimental Release \050Apple M2\051/properties.json"
@@ -82,16 +82,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git "a/infra/config/generated/builders/ci/Dawn Mac arm64 Experimental Release \050Apple M2\051/shadow-properties.json" "b/infra/config/generated/builders/ci/Dawn Mac arm64 Experimental Release \050Apple M2\051/shadow-properties.json" deleted file mode 100644 index e70b3b60..0000000 --- "a/infra/config/generated/builders/ci/Dawn Mac arm64 Experimental Release \050Apple M2\051/shadow-properties.json" +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git "a/infra/config/generated/builders/ci/Dawn Mac arm64 Release \050Apple M2\051/properties.json" "b/infra/config/generated/builders/ci/Dawn Mac arm64 Release \050Apple M2\051/properties.json" index 8cdd459..f4a50fa 100644 --- "a/infra/config/generated/builders/ci/Dawn Mac arm64 Release \050Apple M2\051/properties.json" +++ "b/infra/config/generated/builders/ci/Dawn Mac arm64 Release \050Apple M2\051/properties.json"
@@ -86,16 +86,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git "a/infra/config/generated/builders/ci/Dawn Mac arm64 Release \050Apple M2\051/shadow-properties.json" "b/infra/config/generated/builders/ci/Dawn Mac arm64 Release \050Apple M2\051/shadow-properties.json" deleted file mode 100644 index e70b3b60..0000000 --- "a/infra/config/generated/builders/ci/Dawn Mac arm64 Release \050Apple M2\051/shadow-properties.json" +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git "a/infra/config/generated/builders/ci/Dawn Mac x64 DEPS Release \050AMD\051/properties.json" "b/infra/config/generated/builders/ci/Dawn Mac x64 DEPS Release \050AMD\051/properties.json" index fc562e0..e521e4c6 100644 --- "a/infra/config/generated/builders/ci/Dawn Mac x64 DEPS Release \050AMD\051/properties.json" +++ "b/infra/config/generated/builders/ci/Dawn Mac x64 DEPS Release \050AMD\051/properties.json"
@@ -77,16 +77,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git "a/infra/config/generated/builders/ci/Dawn Mac x64 DEPS Release \050AMD\051/shadow-properties.json" "b/infra/config/generated/builders/ci/Dawn Mac x64 DEPS Release \050AMD\051/shadow-properties.json" deleted file mode 100644 index e70b3b60..0000000 --- "a/infra/config/generated/builders/ci/Dawn Mac x64 DEPS Release \050AMD\051/shadow-properties.json" +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git "a/infra/config/generated/builders/ci/Dawn Mac x64 DEPS Release \050Intel\051/properties.json" "b/infra/config/generated/builders/ci/Dawn Mac x64 DEPS Release \050Intel\051/properties.json" index ce3b6db3..0ed01df 100644 --- "a/infra/config/generated/builders/ci/Dawn Mac x64 DEPS Release \050Intel\051/properties.json" +++ "b/infra/config/generated/builders/ci/Dawn Mac x64 DEPS Release \050Intel\051/properties.json"
@@ -77,16 +77,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git "a/infra/config/generated/builders/ci/Dawn Mac x64 DEPS Release \050Intel\051/shadow-properties.json" "b/infra/config/generated/builders/ci/Dawn Mac x64 DEPS Release \050Intel\051/shadow-properties.json" deleted file mode 100644 index e70b3b60..0000000 --- "a/infra/config/generated/builders/ci/Dawn Mac x64 DEPS Release \050Intel\051/shadow-properties.json" +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git "a/infra/config/generated/builders/ci/Dawn Mac x64 Experimental Release \050AMD\051/properties.json" "b/infra/config/generated/builders/ci/Dawn Mac x64 Experimental Release \050AMD\051/properties.json" index 6ca25b4..7dbc1f2 100644 --- "a/infra/config/generated/builders/ci/Dawn Mac x64 Experimental Release \050AMD\051/properties.json" +++ "b/infra/config/generated/builders/ci/Dawn Mac x64 Experimental Release \050AMD\051/properties.json"
@@ -80,16 +80,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git "a/infra/config/generated/builders/ci/Dawn Mac x64 Experimental Release \050AMD\051/shadow-properties.json" "b/infra/config/generated/builders/ci/Dawn Mac x64 Experimental Release \050AMD\051/shadow-properties.json" deleted file mode 100644 index e70b3b60..0000000 --- "a/infra/config/generated/builders/ci/Dawn Mac x64 Experimental Release \050AMD\051/shadow-properties.json" +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git "a/infra/config/generated/builders/ci/Dawn Mac x64 Experimental Release \050Intel\051/properties.json" "b/infra/config/generated/builders/ci/Dawn Mac x64 Experimental Release \050Intel\051/properties.json" index 38c7eb5..4ca1c81 100644 --- "a/infra/config/generated/builders/ci/Dawn Mac x64 Experimental Release \050Intel\051/properties.json" +++ "b/infra/config/generated/builders/ci/Dawn Mac x64 Experimental Release \050Intel\051/properties.json"
@@ -80,16 +80,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git "a/infra/config/generated/builders/ci/Dawn Mac x64 Experimental Release \050Intel\051/shadow-properties.json" "b/infra/config/generated/builders/ci/Dawn Mac x64 Experimental Release \050Intel\051/shadow-properties.json" deleted file mode 100644 index e70b3b60..0000000 --- "a/infra/config/generated/builders/ci/Dawn Mac x64 Experimental Release \050Intel\051/shadow-properties.json" +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git "a/infra/config/generated/builders/ci/Dawn Mac x64 Release \050AMD\051/properties.json" "b/infra/config/generated/builders/ci/Dawn Mac x64 Release \050AMD\051/properties.json" index 363231c..2388601 100644 --- "a/infra/config/generated/builders/ci/Dawn Mac x64 Release \050AMD\051/properties.json" +++ "b/infra/config/generated/builders/ci/Dawn Mac x64 Release \050AMD\051/properties.json"
@@ -80,16 +80,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git "a/infra/config/generated/builders/ci/Dawn Mac x64 Release \050AMD\051/shadow-properties.json" "b/infra/config/generated/builders/ci/Dawn Mac x64 Release \050AMD\051/shadow-properties.json" deleted file mode 100644 index e70b3b60..0000000 --- "a/infra/config/generated/builders/ci/Dawn Mac x64 Release \050AMD\051/shadow-properties.json" +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git "a/infra/config/generated/builders/ci/Dawn Mac x64 Release \050Intel\051/properties.json" "b/infra/config/generated/builders/ci/Dawn Mac x64 Release \050Intel\051/properties.json" index bd85f5d..252ff4d 100644 --- "a/infra/config/generated/builders/ci/Dawn Mac x64 Release \050Intel\051/properties.json" +++ "b/infra/config/generated/builders/ci/Dawn Mac x64 Release \050Intel\051/properties.json"
@@ -80,16 +80,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git "a/infra/config/generated/builders/ci/Dawn Mac x64 Release \050Intel\051/shadow-properties.json" "b/infra/config/generated/builders/ci/Dawn Mac x64 Release \050Intel\051/shadow-properties.json" deleted file mode 100644 index e70b3b60..0000000 --- "a/infra/config/generated/builders/ci/Dawn Mac x64 Release \050Intel\051/shadow-properties.json" +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git "a/infra/config/generated/builders/ci/Dawn Win10 x64 ASAN Release \050Intel\051/properties.json" "b/infra/config/generated/builders/ci/Dawn Win10 x64 ASAN Release \050Intel\051/properties.json" index 48cc6bd..7b76d20 100644 --- "a/infra/config/generated/builders/ci/Dawn Win10 x64 ASAN Release \050Intel\051/properties.json" +++ "b/infra/config/generated/builders/ci/Dawn Win10 x64 ASAN Release \050Intel\051/properties.json"
@@ -80,16 +80,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git "a/infra/config/generated/builders/ci/Dawn Win10 x64 ASAN Release \050Intel\051/shadow-properties.json" "b/infra/config/generated/builders/ci/Dawn Win10 x64 ASAN Release \050Intel\051/shadow-properties.json" deleted file mode 100644 index e70b3b60..0000000 --- "a/infra/config/generated/builders/ci/Dawn Win10 x64 ASAN Release \050Intel\051/shadow-properties.json" +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git "a/infra/config/generated/builders/ci/Dawn Win10 x64 ASAN Release \050NVIDIA\051/properties.json" "b/infra/config/generated/builders/ci/Dawn Win10 x64 ASAN Release \050NVIDIA\051/properties.json" index 8feb5a9..d1193a6 100644 --- "a/infra/config/generated/builders/ci/Dawn Win10 x64 ASAN Release \050NVIDIA\051/properties.json" +++ "b/infra/config/generated/builders/ci/Dawn Win10 x64 ASAN Release \050NVIDIA\051/properties.json"
@@ -80,16 +80,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git "a/infra/config/generated/builders/ci/Dawn Win10 x64 ASAN Release \050NVIDIA\051/shadow-properties.json" "b/infra/config/generated/builders/ci/Dawn Win10 x64 ASAN Release \050NVIDIA\051/shadow-properties.json" deleted file mode 100644 index e70b3b60..0000000 --- "a/infra/config/generated/builders/ci/Dawn Win10 x64 ASAN Release \050NVIDIA\051/shadow-properties.json" +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git "a/infra/config/generated/builders/ci/Dawn Win10 x64 DEPS Release \050Intel\051/properties.json" "b/infra/config/generated/builders/ci/Dawn Win10 x64 DEPS Release \050Intel\051/properties.json" index 76b14fe..fa787e4 100644 --- "a/infra/config/generated/builders/ci/Dawn Win10 x64 DEPS Release \050Intel\051/properties.json" +++ "b/infra/config/generated/builders/ci/Dawn Win10 x64 DEPS Release \050Intel\051/properties.json"
@@ -75,16 +75,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git "a/infra/config/generated/builders/ci/Dawn Win10 x64 DEPS Release \050Intel\051/shadow-properties.json" "b/infra/config/generated/builders/ci/Dawn Win10 x64 DEPS Release \050Intel\051/shadow-properties.json" deleted file mode 100644 index e70b3b60..0000000 --- "a/infra/config/generated/builders/ci/Dawn Win10 x64 DEPS Release \050Intel\051/shadow-properties.json" +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git "a/infra/config/generated/builders/ci/Dawn Win10 x64 DEPS Release \050NVIDIA\051/properties.json" "b/infra/config/generated/builders/ci/Dawn Win10 x64 DEPS Release \050NVIDIA\051/properties.json" index e58e3146..4af5581 100644 --- "a/infra/config/generated/builders/ci/Dawn Win10 x64 DEPS Release \050NVIDIA\051/properties.json" +++ "b/infra/config/generated/builders/ci/Dawn Win10 x64 DEPS Release \050NVIDIA\051/properties.json"
@@ -75,16 +75,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git "a/infra/config/generated/builders/ci/Dawn Win10 x64 DEPS Release \050NVIDIA\051/shadow-properties.json" "b/infra/config/generated/builders/ci/Dawn Win10 x64 DEPS Release \050NVIDIA\051/shadow-properties.json" deleted file mode 100644 index e70b3b60..0000000 --- "a/infra/config/generated/builders/ci/Dawn Win10 x64 DEPS Release \050NVIDIA\051/shadow-properties.json" +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git "a/infra/config/generated/builders/ci/Dawn Win10 x64 Experimental Release \050Intel\051/properties.json" "b/infra/config/generated/builders/ci/Dawn Win10 x64 Experimental Release \050Intel\051/properties.json" index 47e5005..01076df1 100644 --- "a/infra/config/generated/builders/ci/Dawn Win10 x64 Experimental Release \050Intel\051/properties.json" +++ "b/infra/config/generated/builders/ci/Dawn Win10 x64 Experimental Release \050Intel\051/properties.json"
@@ -78,16 +78,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git "a/infra/config/generated/builders/ci/Dawn Win10 x64 Experimental Release \050Intel\051/shadow-properties.json" "b/infra/config/generated/builders/ci/Dawn Win10 x64 Experimental Release \050Intel\051/shadow-properties.json" deleted file mode 100644 index e70b3b60..0000000 --- "a/infra/config/generated/builders/ci/Dawn Win10 x64 Experimental Release \050Intel\051/shadow-properties.json" +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git "a/infra/config/generated/builders/ci/Dawn Win10 x64 Experimental Release \050NVIDIA\051/properties.json" "b/infra/config/generated/builders/ci/Dawn Win10 x64 Experimental Release \050NVIDIA\051/properties.json" index 28b7d24..c0902e90 100644 --- "a/infra/config/generated/builders/ci/Dawn Win10 x64 Experimental Release \050NVIDIA\051/properties.json" +++ "b/infra/config/generated/builders/ci/Dawn Win10 x64 Experimental Release \050NVIDIA\051/properties.json"
@@ -78,16 +78,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git "a/infra/config/generated/builders/ci/Dawn Win10 x64 Experimental Release \050NVIDIA\051/shadow-properties.json" "b/infra/config/generated/builders/ci/Dawn Win10 x64 Experimental Release \050NVIDIA\051/shadow-properties.json" deleted file mode 100644 index e70b3b60..0000000 --- "a/infra/config/generated/builders/ci/Dawn Win10 x64 Experimental Release \050NVIDIA\051/shadow-properties.json" +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git "a/infra/config/generated/builders/ci/Dawn Win10 x64 Release \050Intel\051/properties.json" "b/infra/config/generated/builders/ci/Dawn Win10 x64 Release \050Intel\051/properties.json" index ed0bcc5..d806a1b5 100644 --- "a/infra/config/generated/builders/ci/Dawn Win10 x64 Release \050Intel\051/properties.json" +++ "b/infra/config/generated/builders/ci/Dawn Win10 x64 Release \050Intel\051/properties.json"
@@ -78,16 +78,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git "a/infra/config/generated/builders/ci/Dawn Win10 x64 Release \050Intel\051/shadow-properties.json" "b/infra/config/generated/builders/ci/Dawn Win10 x64 Release \050Intel\051/shadow-properties.json" deleted file mode 100644 index e70b3b60..0000000 --- "a/infra/config/generated/builders/ci/Dawn Win10 x64 Release \050Intel\051/shadow-properties.json" +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git "a/infra/config/generated/builders/ci/Dawn Win10 x64 Release \050NVIDIA\051/properties.json" "b/infra/config/generated/builders/ci/Dawn Win10 x64 Release \050NVIDIA\051/properties.json" index 839bccee..9bc6c05 100644 --- "a/infra/config/generated/builders/ci/Dawn Win10 x64 Release \050NVIDIA\051/properties.json" +++ "b/infra/config/generated/builders/ci/Dawn Win10 x64 Release \050NVIDIA\051/properties.json"
@@ -78,16 +78,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git "a/infra/config/generated/builders/ci/Dawn Win10 x64 Release \050NVIDIA\051/shadow-properties.json" "b/infra/config/generated/builders/ci/Dawn Win10 x64 Release \050NVIDIA\051/shadow-properties.json" deleted file mode 100644 index e70b3b60..0000000 --- "a/infra/config/generated/builders/ci/Dawn Win10 x64 Release \050NVIDIA\051/shadow-properties.json" +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git "a/infra/config/generated/builders/ci/Dawn Win10 x86 DEPS Release \050Intel\051/properties.json" "b/infra/config/generated/builders/ci/Dawn Win10 x86 DEPS Release \050Intel\051/properties.json" index a75189ae..f02866f 100644 --- "a/infra/config/generated/builders/ci/Dawn Win10 x86 DEPS Release \050Intel\051/properties.json" +++ "b/infra/config/generated/builders/ci/Dawn Win10 x86 DEPS Release \050Intel\051/properties.json"
@@ -75,16 +75,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git "a/infra/config/generated/builders/ci/Dawn Win10 x86 DEPS Release \050Intel\051/shadow-properties.json" "b/infra/config/generated/builders/ci/Dawn Win10 x86 DEPS Release \050Intel\051/shadow-properties.json" deleted file mode 100644 index e70b3b60..0000000 --- "a/infra/config/generated/builders/ci/Dawn Win10 x86 DEPS Release \050Intel\051/shadow-properties.json" +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git "a/infra/config/generated/builders/ci/Dawn Win10 x86 DEPS Release \050NVIDIA\051/properties.json" "b/infra/config/generated/builders/ci/Dawn Win10 x86 DEPS Release \050NVIDIA\051/properties.json" index 2d3cd4a..f15d39ea 100644 --- "a/infra/config/generated/builders/ci/Dawn Win10 x86 DEPS Release \050NVIDIA\051/properties.json" +++ "b/infra/config/generated/builders/ci/Dawn Win10 x86 DEPS Release \050NVIDIA\051/properties.json"
@@ -75,16 +75,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git "a/infra/config/generated/builders/ci/Dawn Win10 x86 DEPS Release \050NVIDIA\051/shadow-properties.json" "b/infra/config/generated/builders/ci/Dawn Win10 x86 DEPS Release \050NVIDIA\051/shadow-properties.json" deleted file mode 100644 index e70b3b60..0000000 --- "a/infra/config/generated/builders/ci/Dawn Win10 x86 DEPS Release \050NVIDIA\051/shadow-properties.json" +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git "a/infra/config/generated/builders/ci/Dawn Win10 x86 Experimental Release \050Intel\051/properties.json" "b/infra/config/generated/builders/ci/Dawn Win10 x86 Experimental Release \050Intel\051/properties.json" index 176116bb..5b16bd8 100644 --- "a/infra/config/generated/builders/ci/Dawn Win10 x86 Experimental Release \050Intel\051/properties.json" +++ "b/infra/config/generated/builders/ci/Dawn Win10 x86 Experimental Release \050Intel\051/properties.json"
@@ -78,16 +78,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git "a/infra/config/generated/builders/ci/Dawn Win10 x86 Experimental Release \050Intel\051/shadow-properties.json" "b/infra/config/generated/builders/ci/Dawn Win10 x86 Experimental Release \050Intel\051/shadow-properties.json" deleted file mode 100644 index e70b3b60..0000000 --- "a/infra/config/generated/builders/ci/Dawn Win10 x86 Experimental Release \050Intel\051/shadow-properties.json" +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git "a/infra/config/generated/builders/ci/Dawn Win10 x86 Experimental Release \050NVIDIA\051/properties.json" "b/infra/config/generated/builders/ci/Dawn Win10 x86 Experimental Release \050NVIDIA\051/properties.json" index 8b97a747..8543f4b 100644 --- "a/infra/config/generated/builders/ci/Dawn Win10 x86 Experimental Release \050NVIDIA\051/properties.json" +++ "b/infra/config/generated/builders/ci/Dawn Win10 x86 Experimental Release \050NVIDIA\051/properties.json"
@@ -78,16 +78,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git "a/infra/config/generated/builders/ci/Dawn Win10 x86 Experimental Release \050NVIDIA\051/shadow-properties.json" "b/infra/config/generated/builders/ci/Dawn Win10 x86 Experimental Release \050NVIDIA\051/shadow-properties.json" deleted file mode 100644 index e70b3b60..0000000 --- "a/infra/config/generated/builders/ci/Dawn Win10 x86 Experimental Release \050NVIDIA\051/shadow-properties.json" +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git "a/infra/config/generated/builders/ci/Dawn Win10 x86 Release \050Intel\051/properties.json" "b/infra/config/generated/builders/ci/Dawn Win10 x86 Release \050Intel\051/properties.json" index 1c1b35c..523d9122 100644 --- "a/infra/config/generated/builders/ci/Dawn Win10 x86 Release \050Intel\051/properties.json" +++ "b/infra/config/generated/builders/ci/Dawn Win10 x86 Release \050Intel\051/properties.json"
@@ -78,16 +78,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git "a/infra/config/generated/builders/ci/Dawn Win10 x86 Release \050Intel\051/shadow-properties.json" "b/infra/config/generated/builders/ci/Dawn Win10 x86 Release \050Intel\051/shadow-properties.json" deleted file mode 100644 index e70b3b60..0000000 --- "a/infra/config/generated/builders/ci/Dawn Win10 x86 Release \050Intel\051/shadow-properties.json" +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git "a/infra/config/generated/builders/ci/Dawn Win10 x86 Release \050NVIDIA\051/properties.json" "b/infra/config/generated/builders/ci/Dawn Win10 x86 Release \050NVIDIA\051/properties.json" index ce1e830..f301956c9 100644 --- "a/infra/config/generated/builders/ci/Dawn Win10 x86 Release \050NVIDIA\051/properties.json" +++ "b/infra/config/generated/builders/ci/Dawn Win10 x86 Release \050NVIDIA\051/properties.json"
@@ -78,16 +78,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git "a/infra/config/generated/builders/ci/Dawn Win10 x86 Release \050NVIDIA\051/shadow-properties.json" "b/infra/config/generated/builders/ci/Dawn Win10 x86 Release \050NVIDIA\051/shadow-properties.json" deleted file mode 100644 index e70b3b60..0000000 --- "a/infra/config/generated/builders/ci/Dawn Win10 x86 Release \050NVIDIA\051/shadow-properties.json" +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git "a/infra/config/generated/builders/ci/Lacros FYI x64 Release \050AMD\051/properties.json" "b/infra/config/generated/builders/ci/Lacros FYI x64 Release \050AMD\051/properties.json" index a744c0a..89f945d5 100644 --- "a/infra/config/generated/builders/ci/Lacros FYI x64 Release \050AMD\051/properties.json" +++ "b/infra/config/generated/builders/ci/Lacros FYI x64 Release \050AMD\051/properties.json"
@@ -72,16 +72,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git "a/infra/config/generated/builders/ci/Lacros FYI x64 Release \050AMD\051/shadow-properties.json" "b/infra/config/generated/builders/ci/Lacros FYI x64 Release \050AMD\051/shadow-properties.json" deleted file mode 100644 index e70b3b60..0000000 --- "a/infra/config/generated/builders/ci/Lacros FYI x64 Release \050AMD\051/shadow-properties.json" +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git "a/infra/config/generated/builders/ci/Lacros FYI x64 Release \050Intel\051/properties.json" "b/infra/config/generated/builders/ci/Lacros FYI x64 Release \050Intel\051/properties.json" index 2b19ef5..50de2aa 100644 --- "a/infra/config/generated/builders/ci/Lacros FYI x64 Release \050Intel\051/properties.json" +++ "b/infra/config/generated/builders/ci/Lacros FYI x64 Release \050Intel\051/properties.json"
@@ -72,16 +72,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git "a/infra/config/generated/builders/ci/Lacros FYI x64 Release \050Intel\051/shadow-properties.json" "b/infra/config/generated/builders/ci/Lacros FYI x64 Release \050Intel\051/shadow-properties.json" deleted file mode 100644 index e70b3b60..0000000 --- "a/infra/config/generated/builders/ci/Lacros FYI x64 Release \050Intel\051/shadow-properties.json" +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git "a/infra/config/generated/builders/ci/Linux ASan LSan Tests \0501\051/properties.json" "b/infra/config/generated/builders/ci/Linux ASan LSan Tests \0501\051/properties.json" index 2670b1c..0dc60b2 100644 --- "a/infra/config/generated/builders/ci/Linux ASan LSan Tests \0501\051/properties.json" +++ "b/infra/config/generated/builders/ci/Linux ASan LSan Tests \0501\051/properties.json"
@@ -75,16 +75,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 500 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git "a/infra/config/generated/builders/ci/Linux ASan LSan Tests \0501\051/shadow-properties.json" "b/infra/config/generated/builders/ci/Linux ASan LSan Tests \0501\051/shadow-properties.json" deleted file mode 100644 index 5271cc6a..0000000 --- "a/infra/config/generated/builders/ci/Linux ASan LSan Tests \0501\051/shadow-properties.json" +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 500 - } -} \ No newline at end of file
diff --git "a/infra/config/generated/builders/ci/Linux Chromium OS ASan LSan Tests \0501\051/properties.json" "b/infra/config/generated/builders/ci/Linux Chromium OS ASan LSan Tests \0501\051/properties.json" index 2ca66b2f..b8ecfec 100644 --- "a/infra/config/generated/builders/ci/Linux Chromium OS ASan LSan Tests \0501\051/properties.json" +++ "b/infra/config/generated/builders/ci/Linux Chromium OS ASan LSan Tests \0501\051/properties.json"
@@ -81,16 +81,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 500 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git "a/infra/config/generated/builders/ci/Linux Chromium OS ASan LSan Tests \0501\051/shadow-properties.json" "b/infra/config/generated/builders/ci/Linux Chromium OS ASan LSan Tests \0501\051/shadow-properties.json" deleted file mode 100644 index 5271cc6a..0000000 --- "a/infra/config/generated/builders/ci/Linux Chromium OS ASan LSan Tests \0501\051/shadow-properties.json" +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 500 - } -} \ No newline at end of file
diff --git a/infra/config/generated/builders/ci/Linux ChromiumOS MSan Tests/properties.json b/infra/config/generated/builders/ci/Linux ChromiumOS MSan Tests/properties.json index 10e3a4f..3d0ac62 100644 --- a/infra/config/generated/builders/ci/Linux ChromiumOS MSan Tests/properties.json +++ b/infra/config/generated/builders/ci/Linux ChromiumOS MSan Tests/properties.json
@@ -79,16 +79,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 500 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git a/infra/config/generated/builders/ci/Linux ChromiumOS MSan Tests/shadow-properties.json b/infra/config/generated/builders/ci/Linux ChromiumOS MSan Tests/shadow-properties.json deleted file mode 100644 index 5271cc6a..0000000 --- a/infra/config/generated/builders/ci/Linux ChromiumOS MSan Tests/shadow-properties.json +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 500 - } -} \ No newline at end of file
diff --git "a/infra/config/generated/builders/ci/Linux Debug \050NVIDIA\051/properties.json" "b/infra/config/generated/builders/ci/Linux Debug \050NVIDIA\051/properties.json" index 2313193..00021313 100644 --- "a/infra/config/generated/builders/ci/Linux Debug \050NVIDIA\051/properties.json" +++ "b/infra/config/generated/builders/ci/Linux Debug \050NVIDIA\051/properties.json"
@@ -73,16 +73,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git "a/infra/config/generated/builders/ci/Linux Debug \050NVIDIA\051/shadow-properties.json" "b/infra/config/generated/builders/ci/Linux Debug \050NVIDIA\051/shadow-properties.json" deleted file mode 100644 index e70b3b60..0000000 --- "a/infra/config/generated/builders/ci/Linux Debug \050NVIDIA\051/shadow-properties.json" +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git "a/infra/config/generated/builders/ci/Linux FYI Debug \050NVIDIA\051/properties.json" "b/infra/config/generated/builders/ci/Linux FYI Debug \050NVIDIA\051/properties.json" index 2e759e3..9354ade 100644 --- "a/infra/config/generated/builders/ci/Linux FYI Debug \050NVIDIA\051/properties.json" +++ "b/infra/config/generated/builders/ci/Linux FYI Debug \050NVIDIA\051/properties.json"
@@ -72,16 +72,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git "a/infra/config/generated/builders/ci/Linux FYI Debug \050NVIDIA\051/shadow-properties.json" "b/infra/config/generated/builders/ci/Linux FYI Debug \050NVIDIA\051/shadow-properties.json" deleted file mode 100644 index e70b3b60..0000000 --- "a/infra/config/generated/builders/ci/Linux FYI Debug \050NVIDIA\051/shadow-properties.json" +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git "a/infra/config/generated/builders/ci/Linux FYI Experimental Release \050Intel UHD 630\051/properties.json" "b/infra/config/generated/builders/ci/Linux FYI Experimental Release \050Intel UHD 630\051/properties.json" index fa1e956..84325129 100644 --- "a/infra/config/generated/builders/ci/Linux FYI Experimental Release \050Intel UHD 630\051/properties.json" +++ "b/infra/config/generated/builders/ci/Linux FYI Experimental Release \050Intel UHD 630\051/properties.json"
@@ -72,16 +72,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git "a/infra/config/generated/builders/ci/Linux FYI Experimental Release \050Intel UHD 630\051/shadow-properties.json" "b/infra/config/generated/builders/ci/Linux FYI Experimental Release \050Intel UHD 630\051/shadow-properties.json" deleted file mode 100644 index e70b3b60..0000000 --- "a/infra/config/generated/builders/ci/Linux FYI Experimental Release \050Intel UHD 630\051/shadow-properties.json" +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git "a/infra/config/generated/builders/ci/Linux FYI Experimental Release \050NVIDIA\051/properties.json" "b/infra/config/generated/builders/ci/Linux FYI Experimental Release \050NVIDIA\051/properties.json" index ed26615..3563fa3 100644 --- "a/infra/config/generated/builders/ci/Linux FYI Experimental Release \050NVIDIA\051/properties.json" +++ "b/infra/config/generated/builders/ci/Linux FYI Experimental Release \050NVIDIA\051/properties.json"
@@ -72,16 +72,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git "a/infra/config/generated/builders/ci/Linux FYI Experimental Release \050NVIDIA\051/shadow-properties.json" "b/infra/config/generated/builders/ci/Linux FYI Experimental Release \050NVIDIA\051/shadow-properties.json" deleted file mode 100644 index e70b3b60..0000000 --- "a/infra/config/generated/builders/ci/Linux FYI Experimental Release \050NVIDIA\051/shadow-properties.json" +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git "a/infra/config/generated/builders/ci/Linux FYI Release \050AMD RX 5500 XT\051/properties.json" "b/infra/config/generated/builders/ci/Linux FYI Release \050AMD RX 5500 XT\051/properties.json" index f89ea35..b2041db 100644 --- "a/infra/config/generated/builders/ci/Linux FYI Release \050AMD RX 5500 XT\051/properties.json" +++ "b/infra/config/generated/builders/ci/Linux FYI Release \050AMD RX 5500 XT\051/properties.json"
@@ -72,16 +72,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git "a/infra/config/generated/builders/ci/Linux FYI Release \050AMD RX 5500 XT\051/shadow-properties.json" "b/infra/config/generated/builders/ci/Linux FYI Release \050AMD RX 5500 XT\051/shadow-properties.json" deleted file mode 100644 index e70b3b60..0000000 --- "a/infra/config/generated/builders/ci/Linux FYI Release \050AMD RX 5500 XT\051/shadow-properties.json" +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git "a/infra/config/generated/builders/ci/Linux FYI Release \050Intel UHD 630\051/properties.json" "b/infra/config/generated/builders/ci/Linux FYI Release \050Intel UHD 630\051/properties.json" index 6c0f9f74..2ca6342 100644 --- "a/infra/config/generated/builders/ci/Linux FYI Release \050Intel UHD 630\051/properties.json" +++ "b/infra/config/generated/builders/ci/Linux FYI Release \050Intel UHD 630\051/properties.json"
@@ -72,16 +72,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git "a/infra/config/generated/builders/ci/Linux FYI Release \050Intel UHD 630\051/shadow-properties.json" "b/infra/config/generated/builders/ci/Linux FYI Release \050Intel UHD 630\051/shadow-properties.json" deleted file mode 100644 index e70b3b60..0000000 --- "a/infra/config/generated/builders/ci/Linux FYI Release \050Intel UHD 630\051/shadow-properties.json" +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git "a/infra/config/generated/builders/ci/Linux FYI Release \050Intel UHD 770\051/properties.json" "b/infra/config/generated/builders/ci/Linux FYI Release \050Intel UHD 770\051/properties.json" index 2f1294d7..266fd75 100644 --- "a/infra/config/generated/builders/ci/Linux FYI Release \050Intel UHD 770\051/properties.json" +++ "b/infra/config/generated/builders/ci/Linux FYI Release \050Intel UHD 770\051/properties.json"
@@ -72,16 +72,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git "a/infra/config/generated/builders/ci/Linux FYI Release \050Intel UHD 770\051/shadow-properties.json" "b/infra/config/generated/builders/ci/Linux FYI Release \050Intel UHD 770\051/shadow-properties.json" deleted file mode 100644 index e70b3b60..0000000 --- "a/infra/config/generated/builders/ci/Linux FYI Release \050Intel UHD 770\051/shadow-properties.json" +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git "a/infra/config/generated/builders/ci/Linux FYI Release \050NVIDIA\051/properties.json" "b/infra/config/generated/builders/ci/Linux FYI Release \050NVIDIA\051/properties.json" index 4d73a9f..de7701ec 100644 --- "a/infra/config/generated/builders/ci/Linux FYI Release \050NVIDIA\051/properties.json" +++ "b/infra/config/generated/builders/ci/Linux FYI Release \050NVIDIA\051/properties.json"
@@ -72,16 +72,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git "a/infra/config/generated/builders/ci/Linux FYI Release \050NVIDIA\051/shadow-properties.json" "b/infra/config/generated/builders/ci/Linux FYI Release \050NVIDIA\051/shadow-properties.json" deleted file mode 100644 index e70b3b60..0000000 --- "a/infra/config/generated/builders/ci/Linux FYI Release \050NVIDIA\051/shadow-properties.json" +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git "a/infra/config/generated/builders/ci/Linux Release \050NVIDIA\051/properties.json" "b/infra/config/generated/builders/ci/Linux Release \050NVIDIA\051/properties.json" index 913659c..adfb6c6 100644 --- "a/infra/config/generated/builders/ci/Linux Release \050NVIDIA\051/properties.json" +++ "b/infra/config/generated/builders/ci/Linux Release \050NVIDIA\051/properties.json"
@@ -95,16 +95,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git "a/infra/config/generated/builders/ci/Linux Release \050NVIDIA\051/shadow-properties.json" "b/infra/config/generated/builders/ci/Linux Release \050NVIDIA\051/shadow-properties.json" deleted file mode 100644 index e70b3b60..0000000 --- "a/infra/config/generated/builders/ci/Linux Release \050NVIDIA\051/shadow-properties.json" +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git "a/infra/config/generated/builders/ci/Linux Tests \050Wayland\051/properties.json" "b/infra/config/generated/builders/ci/Linux Tests \050Wayland\051/properties.json" index a0ec0e4f..f3e71e4 100644 --- "a/infra/config/generated/builders/ci/Linux Tests \050Wayland\051/properties.json" +++ "b/infra/config/generated/builders/ci/Linux Tests \050Wayland\051/properties.json"
@@ -79,16 +79,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 500 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git "a/infra/config/generated/builders/ci/Linux Tests \050Wayland\051/shadow-properties.json" "b/infra/config/generated/builders/ci/Linux Tests \050Wayland\051/shadow-properties.json" deleted file mode 100644 index 5271cc6a..0000000 --- "a/infra/config/generated/builders/ci/Linux Tests \050Wayland\051/shadow-properties.json" +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 500 - } -} \ No newline at end of file
diff --git "a/infra/config/generated/builders/ci/Linux Tests \050dbg\051\0501\051/properties.json" "b/infra/config/generated/builders/ci/Linux Tests \050dbg\051\0501\051/properties.json" index 17227fe3..13b0cec0 100644 --- "a/infra/config/generated/builders/ci/Linux Tests \050dbg\051\0501\051/properties.json" +++ "b/infra/config/generated/builders/ci/Linux Tests \050dbg\051\0501\051/properties.json"
@@ -78,16 +78,6 @@ "targets_spec_directory": "src/infra/config/generated/builders/ci/Linux Tests (dbg)(1)/targets" } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 500 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git "a/infra/config/generated/builders/ci/Linux Tests \050dbg\051\0501\051/shadow-properties.json" "b/infra/config/generated/builders/ci/Linux Tests \050dbg\051\0501\051/shadow-properties.json" deleted file mode 100644 index 5271cc6a..0000000 --- "a/infra/config/generated/builders/ci/Linux Tests \050dbg\051\0501\051/shadow-properties.json" +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 500 - } -} \ No newline at end of file
diff --git a/infra/config/generated/builders/ci/Linux Tests/properties.json b/infra/config/generated/builders/ci/Linux Tests/properties.json index 38ec3ef..db115cf 100644 --- a/infra/config/generated/builders/ci/Linux Tests/properties.json +++ b/infra/config/generated/builders/ci/Linux Tests/properties.json
@@ -95,16 +95,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 500 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git a/infra/config/generated/builders/ci/Linux Tests/shadow-properties.json b/infra/config/generated/builders/ci/Linux Tests/shadow-properties.json deleted file mode 100644 index 5271cc6a..0000000 --- a/infra/config/generated/builders/ci/Linux Tests/shadow-properties.json +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 500 - } -} \ No newline at end of file
diff --git "a/infra/config/generated/builders/ci/Mac ASan 64 Tests \0501\051/properties.json" "b/infra/config/generated/builders/ci/Mac ASan 64 Tests \0501\051/properties.json" index 5623dda..5c2227c 100644 --- "a/infra/config/generated/builders/ci/Mac ASan 64 Tests \0501\051/properties.json" +++ "b/infra/config/generated/builders/ci/Mac ASan 64 Tests \0501\051/properties.json"
@@ -73,16 +73,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 500 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git "a/infra/config/generated/builders/ci/Mac ASan 64 Tests \0501\051/shadow-properties.json" "b/infra/config/generated/builders/ci/Mac ASan 64 Tests \0501\051/shadow-properties.json" deleted file mode 100644 index 5271cc6a..0000000 --- "a/infra/config/generated/builders/ci/Mac ASan 64 Tests \0501\051/shadow-properties.json" +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 500 - } -} \ No newline at end of file
diff --git "a/infra/config/generated/builders/ci/Mac Debug \050Intel\051/properties.json" "b/infra/config/generated/builders/ci/Mac Debug \050Intel\051/properties.json" index 02ec64d..d3ebc37 100644 --- "a/infra/config/generated/builders/ci/Mac Debug \050Intel\051/properties.json" +++ "b/infra/config/generated/builders/ci/Mac Debug \050Intel\051/properties.json"
@@ -73,16 +73,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git "a/infra/config/generated/builders/ci/Mac Debug \050Intel\051/shadow-properties.json" "b/infra/config/generated/builders/ci/Mac Debug \050Intel\051/shadow-properties.json" deleted file mode 100644 index e70b3b60..0000000 --- "a/infra/config/generated/builders/ci/Mac Debug \050Intel\051/shadow-properties.json" +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git "a/infra/config/generated/builders/ci/Mac FYI ASAN \050Intel\051/properties.json" "b/infra/config/generated/builders/ci/Mac FYI ASAN \050Intel\051/properties.json" index f7a89bb..de5a1f6 100644 --- "a/infra/config/generated/builders/ci/Mac FYI ASAN \050Intel\051/properties.json" +++ "b/infra/config/generated/builders/ci/Mac FYI ASAN \050Intel\051/properties.json"
@@ -72,16 +72,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git "a/infra/config/generated/builders/ci/Mac FYI ASAN \050Intel\051/shadow-properties.json" "b/infra/config/generated/builders/ci/Mac FYI ASAN \050Intel\051/shadow-properties.json" deleted file mode 100644 index e70b3b60..0000000 --- "a/infra/config/generated/builders/ci/Mac FYI ASAN \050Intel\051/shadow-properties.json" +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git "a/infra/config/generated/builders/ci/Mac FYI Debug \050Intel\051/properties.json" "b/infra/config/generated/builders/ci/Mac FYI Debug \050Intel\051/properties.json" index 3349b6c..d51f5364 100644 --- "a/infra/config/generated/builders/ci/Mac FYI Debug \050Intel\051/properties.json" +++ "b/infra/config/generated/builders/ci/Mac FYI Debug \050Intel\051/properties.json"
@@ -72,16 +72,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git "a/infra/config/generated/builders/ci/Mac FYI Debug \050Intel\051/shadow-properties.json" "b/infra/config/generated/builders/ci/Mac FYI Debug \050Intel\051/shadow-properties.json" deleted file mode 100644 index e70b3b60..0000000 --- "a/infra/config/generated/builders/ci/Mac FYI Debug \050Intel\051/shadow-properties.json" +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git "a/infra/config/generated/builders/ci/Mac FYI Experimental Release \050Apple M1\051/properties.json" "b/infra/config/generated/builders/ci/Mac FYI Experimental Release \050Apple M1\051/properties.json" index 290a189..8594ba9 100644 --- "a/infra/config/generated/builders/ci/Mac FYI Experimental Release \050Apple M1\051/properties.json" +++ "b/infra/config/generated/builders/ci/Mac FYI Experimental Release \050Apple M1\051/properties.json"
@@ -74,16 +74,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git "a/infra/config/generated/builders/ci/Mac FYI Experimental Release \050Apple M1\051/shadow-properties.json" "b/infra/config/generated/builders/ci/Mac FYI Experimental Release \050Apple M1\051/shadow-properties.json" deleted file mode 100644 index e70b3b60..0000000 --- "a/infra/config/generated/builders/ci/Mac FYI Experimental Release \050Apple M1\051/shadow-properties.json" +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git "a/infra/config/generated/builders/ci/Mac FYI Experimental Release \050Intel\051/properties.json" "b/infra/config/generated/builders/ci/Mac FYI Experimental Release \050Intel\051/properties.json" index a830973..5fc86287 100644 --- "a/infra/config/generated/builders/ci/Mac FYI Experimental Release \050Intel\051/properties.json" +++ "b/infra/config/generated/builders/ci/Mac FYI Experimental Release \050Intel\051/properties.json"
@@ -72,16 +72,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git "a/infra/config/generated/builders/ci/Mac FYI Experimental Release \050Intel\051/shadow-properties.json" "b/infra/config/generated/builders/ci/Mac FYI Experimental Release \050Intel\051/shadow-properties.json" deleted file mode 100644 index e70b3b60..0000000 --- "a/infra/config/generated/builders/ci/Mac FYI Experimental Release \050Intel\051/shadow-properties.json" +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git "a/infra/config/generated/builders/ci/Mac FYI Experimental Retina Release \050AMD\051/properties.json" "b/infra/config/generated/builders/ci/Mac FYI Experimental Retina Release \050AMD\051/properties.json" index ab01ccc..d1e0602 100644 --- "a/infra/config/generated/builders/ci/Mac FYI Experimental Retina Release \050AMD\051/properties.json" +++ "b/infra/config/generated/builders/ci/Mac FYI Experimental Retina Release \050AMD\051/properties.json"
@@ -72,16 +72,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git "a/infra/config/generated/builders/ci/Mac FYI Experimental Retina Release \050AMD\051/shadow-properties.json" "b/infra/config/generated/builders/ci/Mac FYI Experimental Retina Release \050AMD\051/shadow-properties.json" deleted file mode 100644 index e70b3b60..0000000 --- "a/infra/config/generated/builders/ci/Mac FYI Experimental Retina Release \050AMD\051/shadow-properties.json" +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git "a/infra/config/generated/builders/ci/Mac FYI Experimental Retina Release \050Apple M2\051/properties.json" "b/infra/config/generated/builders/ci/Mac FYI Experimental Retina Release \050Apple M2\051/properties.json" index 94194c1..def508f 100644 --- "a/infra/config/generated/builders/ci/Mac FYI Experimental Retina Release \050Apple M2\051/properties.json" +++ "b/infra/config/generated/builders/ci/Mac FYI Experimental Retina Release \050Apple M2\051/properties.json"
@@ -74,16 +74,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git "a/infra/config/generated/builders/ci/Mac FYI Experimental Retina Release \050Apple M2\051/shadow-properties.json" "b/infra/config/generated/builders/ci/Mac FYI Experimental Retina Release \050Apple M2\051/shadow-properties.json" deleted file mode 100644 index e70b3b60..0000000 --- "a/infra/config/generated/builders/ci/Mac FYI Experimental Retina Release \050Apple M2\051/shadow-properties.json" +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git "a/infra/config/generated/builders/ci/Mac FYI Experimental Retina Release \050NVIDIA\051/properties.json" "b/infra/config/generated/builders/ci/Mac FYI Experimental Retina Release \050NVIDIA\051/properties.json" index 56eb1605..5530473 100644 --- "a/infra/config/generated/builders/ci/Mac FYI Experimental Retina Release \050NVIDIA\051/properties.json" +++ "b/infra/config/generated/builders/ci/Mac FYI Experimental Retina Release \050NVIDIA\051/properties.json"
@@ -72,16 +72,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git "a/infra/config/generated/builders/ci/Mac FYI Experimental Retina Release \050NVIDIA\051/shadow-properties.json" "b/infra/config/generated/builders/ci/Mac FYI Experimental Retina Release \050NVIDIA\051/shadow-properties.json" deleted file mode 100644 index e70b3b60..0000000 --- "a/infra/config/generated/builders/ci/Mac FYI Experimental Retina Release \050NVIDIA\051/shadow-properties.json" +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git "a/infra/config/generated/builders/ci/Mac FYI Release \050Apple M1\051/properties.json" "b/infra/config/generated/builders/ci/Mac FYI Release \050Apple M1\051/properties.json" index 121996b..52b6b2e 100644 --- "a/infra/config/generated/builders/ci/Mac FYI Release \050Apple M1\051/properties.json" +++ "b/infra/config/generated/builders/ci/Mac FYI Release \050Apple M1\051/properties.json"
@@ -74,16 +74,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git "a/infra/config/generated/builders/ci/Mac FYI Release \050Apple M1\051/shadow-properties.json" "b/infra/config/generated/builders/ci/Mac FYI Release \050Apple M1\051/shadow-properties.json" deleted file mode 100644 index e70b3b60..0000000 --- "a/infra/config/generated/builders/ci/Mac FYI Release \050Apple M1\051/shadow-properties.json" +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git "a/infra/config/generated/builders/ci/Mac FYI Release \050Intel\051/properties.json" "b/infra/config/generated/builders/ci/Mac FYI Release \050Intel\051/properties.json" index b47d4c4..3c28f74 100644 --- "a/infra/config/generated/builders/ci/Mac FYI Release \050Intel\051/properties.json" +++ "b/infra/config/generated/builders/ci/Mac FYI Release \050Intel\051/properties.json"
@@ -72,16 +72,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git "a/infra/config/generated/builders/ci/Mac FYI Release \050Intel\051/shadow-properties.json" "b/infra/config/generated/builders/ci/Mac FYI Release \050Intel\051/shadow-properties.json" deleted file mode 100644 index e70b3b60..0000000 --- "a/infra/config/generated/builders/ci/Mac FYI Release \050Intel\051/shadow-properties.json" +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git "a/infra/config/generated/builders/ci/Mac FYI Retina ASAN \050AMD\051/properties.json" "b/infra/config/generated/builders/ci/Mac FYI Retina ASAN \050AMD\051/properties.json" index c9dad3c..5ad323d 100644 --- "a/infra/config/generated/builders/ci/Mac FYI Retina ASAN \050AMD\051/properties.json" +++ "b/infra/config/generated/builders/ci/Mac FYI Retina ASAN \050AMD\051/properties.json"
@@ -72,16 +72,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git "a/infra/config/generated/builders/ci/Mac FYI Retina ASAN \050AMD\051/shadow-properties.json" "b/infra/config/generated/builders/ci/Mac FYI Retina ASAN \050AMD\051/shadow-properties.json" deleted file mode 100644 index e70b3b60..0000000 --- "a/infra/config/generated/builders/ci/Mac FYI Retina ASAN \050AMD\051/shadow-properties.json" +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git "a/infra/config/generated/builders/ci/Mac FYI Retina Debug \050AMD\051/properties.json" "b/infra/config/generated/builders/ci/Mac FYI Retina Debug \050AMD\051/properties.json" index 90ae587c..76f8880 100644 --- "a/infra/config/generated/builders/ci/Mac FYI Retina Debug \050AMD\051/properties.json" +++ "b/infra/config/generated/builders/ci/Mac FYI Retina Debug \050AMD\051/properties.json"
@@ -72,16 +72,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git "a/infra/config/generated/builders/ci/Mac FYI Retina Debug \050AMD\051/shadow-properties.json" "b/infra/config/generated/builders/ci/Mac FYI Retina Debug \050AMD\051/shadow-properties.json" deleted file mode 100644 index e70b3b60..0000000 --- "a/infra/config/generated/builders/ci/Mac FYI Retina Debug \050AMD\051/shadow-properties.json" +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git "a/infra/config/generated/builders/ci/Mac FYI Retina Release \050AMD\051/properties.json" "b/infra/config/generated/builders/ci/Mac FYI Retina Release \050AMD\051/properties.json" index 2116ae9..2e80e594 100644 --- "a/infra/config/generated/builders/ci/Mac FYI Retina Release \050AMD\051/properties.json" +++ "b/infra/config/generated/builders/ci/Mac FYI Retina Release \050AMD\051/properties.json"
@@ -72,16 +72,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git "a/infra/config/generated/builders/ci/Mac FYI Retina Release \050AMD\051/shadow-properties.json" "b/infra/config/generated/builders/ci/Mac FYI Retina Release \050AMD\051/shadow-properties.json" deleted file mode 100644 index e70b3b60..0000000 --- "a/infra/config/generated/builders/ci/Mac FYI Retina Release \050AMD\051/shadow-properties.json" +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git "a/infra/config/generated/builders/ci/Mac FYI Retina Release \050Apple M2\051/properties.json" "b/infra/config/generated/builders/ci/Mac FYI Retina Release \050Apple M2\051/properties.json" index 8fa26bb..5d9e78d 100644 --- "a/infra/config/generated/builders/ci/Mac FYI Retina Release \050Apple M2\051/properties.json" +++ "b/infra/config/generated/builders/ci/Mac FYI Retina Release \050Apple M2\051/properties.json"
@@ -74,16 +74,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git "a/infra/config/generated/builders/ci/Mac FYI Retina Release \050Apple M2\051/shadow-properties.json" "b/infra/config/generated/builders/ci/Mac FYI Retina Release \050Apple M2\051/shadow-properties.json" deleted file mode 100644 index e70b3b60..0000000 --- "a/infra/config/generated/builders/ci/Mac FYI Retina Release \050Apple M2\051/shadow-properties.json" +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git "a/infra/config/generated/builders/ci/Mac FYI Retina Release \050NVIDIA\051/properties.json" "b/infra/config/generated/builders/ci/Mac FYI Retina Release \050NVIDIA\051/properties.json" index e581f31..478be896 100644 --- "a/infra/config/generated/builders/ci/Mac FYI Retina Release \050NVIDIA\051/properties.json" +++ "b/infra/config/generated/builders/ci/Mac FYI Retina Release \050NVIDIA\051/properties.json"
@@ -72,16 +72,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git "a/infra/config/generated/builders/ci/Mac FYI Retina Release \050NVIDIA\051/shadow-properties.json" "b/infra/config/generated/builders/ci/Mac FYI Retina Release \050NVIDIA\051/shadow-properties.json" deleted file mode 100644 index e70b3b60..0000000 --- "a/infra/config/generated/builders/ci/Mac FYI Retina Release \050NVIDIA\051/shadow-properties.json" +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git "a/infra/config/generated/builders/ci/Mac Pro FYI Release \050AMD\051/properties.json" "b/infra/config/generated/builders/ci/Mac Pro FYI Release \050AMD\051/properties.json" index 7cf9c78..82e9aac 100644 --- "a/infra/config/generated/builders/ci/Mac Pro FYI Release \050AMD\051/properties.json" +++ "b/infra/config/generated/builders/ci/Mac Pro FYI Release \050AMD\051/properties.json"
@@ -72,16 +72,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git "a/infra/config/generated/builders/ci/Mac Pro FYI Release \050AMD\051/shadow-properties.json" "b/infra/config/generated/builders/ci/Mac Pro FYI Release \050AMD\051/shadow-properties.json" deleted file mode 100644 index e70b3b60..0000000 --- "a/infra/config/generated/builders/ci/Mac Pro FYI Release \050AMD\051/shadow-properties.json" +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git "a/infra/config/generated/builders/ci/Mac Release \050Intel\051/properties.json" "b/infra/config/generated/builders/ci/Mac Release \050Intel\051/properties.json" index cdc2c8ce..58648bd 100644 --- "a/infra/config/generated/builders/ci/Mac Release \050Intel\051/properties.json" +++ "b/infra/config/generated/builders/ci/Mac Release \050Intel\051/properties.json"
@@ -77,16 +77,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git "a/infra/config/generated/builders/ci/Mac Release \050Intel\051/shadow-properties.json" "b/infra/config/generated/builders/ci/Mac Release \050Intel\051/shadow-properties.json" deleted file mode 100644 index e70b3b60..0000000 --- "a/infra/config/generated/builders/ci/Mac Release \050Intel\051/shadow-properties.json" +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git "a/infra/config/generated/builders/ci/Mac Retina Debug \050AMD\051/properties.json" "b/infra/config/generated/builders/ci/Mac Retina Debug \050AMD\051/properties.json" index 2849e226..aca19d4d 100644 --- "a/infra/config/generated/builders/ci/Mac Retina Debug \050AMD\051/properties.json" +++ "b/infra/config/generated/builders/ci/Mac Retina Debug \050AMD\051/properties.json"
@@ -73,16 +73,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git "a/infra/config/generated/builders/ci/Mac Retina Debug \050AMD\051/shadow-properties.json" "b/infra/config/generated/builders/ci/Mac Retina Debug \050AMD\051/shadow-properties.json" deleted file mode 100644 index e70b3b60..0000000 --- "a/infra/config/generated/builders/ci/Mac Retina Debug \050AMD\051/shadow-properties.json" +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git "a/infra/config/generated/builders/ci/Mac Retina Release \050AMD\051/properties.json" "b/infra/config/generated/builders/ci/Mac Retina Release \050AMD\051/properties.json" index 9c2cf1e..83706f8 100644 --- "a/infra/config/generated/builders/ci/Mac Retina Release \050AMD\051/properties.json" +++ "b/infra/config/generated/builders/ci/Mac Retina Release \050AMD\051/properties.json"
@@ -77,16 +77,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git "a/infra/config/generated/builders/ci/Mac Retina Release \050AMD\051/shadow-properties.json" "b/infra/config/generated/builders/ci/Mac Retina Release \050AMD\051/shadow-properties.json" deleted file mode 100644 index e70b3b60..0000000 --- "a/infra/config/generated/builders/ci/Mac Retina Release \050AMD\051/shadow-properties.json" +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git a/infra/config/generated/builders/ci/Mac10.15 Tests/properties.json b/infra/config/generated/builders/ci/Mac10.15 Tests/properties.json index f4f5dde6..0e9f55e 100644 --- a/infra/config/generated/builders/ci/Mac10.15 Tests/properties.json +++ b/infra/config/generated/builders/ci/Mac10.15 Tests/properties.json
@@ -81,16 +81,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git a/infra/config/generated/builders/ci/Mac10.15 Tests/shadow-properties.json b/infra/config/generated/builders/ci/Mac10.15 Tests/shadow-properties.json deleted file mode 100644 index e70b3b60..0000000 --- a/infra/config/generated/builders/ci/Mac10.15 Tests/shadow-properties.json +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git a/infra/config/generated/builders/ci/Mac11 Tests/properties.json b/infra/config/generated/builders/ci/Mac11 Tests/properties.json index e808e1b3..2a8f2ee 100644 --- a/infra/config/generated/builders/ci/Mac11 Tests/properties.json +++ b/infra/config/generated/builders/ci/Mac11 Tests/properties.json
@@ -80,16 +80,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git a/infra/config/generated/builders/ci/Mac11 Tests/shadow-properties.json b/infra/config/generated/builders/ci/Mac11 Tests/shadow-properties.json deleted file mode 100644 index e70b3b60..0000000 --- a/infra/config/generated/builders/ci/Mac11 Tests/shadow-properties.json +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git a/infra/config/generated/builders/ci/Mac12 Tests/properties.json b/infra/config/generated/builders/ci/Mac12 Tests/properties.json index bd456f5..0cfce4dd 100644 --- a/infra/config/generated/builders/ci/Mac12 Tests/properties.json +++ b/infra/config/generated/builders/ci/Mac12 Tests/properties.json
@@ -80,16 +80,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git a/infra/config/generated/builders/ci/Mac12 Tests/shadow-properties.json b/infra/config/generated/builders/ci/Mac12 Tests/shadow-properties.json deleted file mode 100644 index e70b3b60..0000000 --- a/infra/config/generated/builders/ci/Mac12 Tests/shadow-properties.json +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git "a/infra/config/generated/builders/ci/Mac13 Tests \050dbg\051/properties.json" "b/infra/config/generated/builders/ci/Mac13 Tests \050dbg\051/properties.json" index e37e6ed..fc6dc71 100644 --- "a/infra/config/generated/builders/ci/Mac13 Tests \050dbg\051/properties.json" +++ "b/infra/config/generated/builders/ci/Mac13 Tests \050dbg\051/properties.json"
@@ -79,16 +79,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git "a/infra/config/generated/builders/ci/Mac13 Tests \050dbg\051/shadow-properties.json" "b/infra/config/generated/builders/ci/Mac13 Tests \050dbg\051/shadow-properties.json" deleted file mode 100644 index e70b3b60..0000000 --- "a/infra/config/generated/builders/ci/Mac13 Tests \050dbg\051/shadow-properties.json" +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git a/infra/config/generated/builders/ci/Mac13 Tests/properties.json b/infra/config/generated/builders/ci/Mac13 Tests/properties.json index fc735a0..a611d44a 100644 --- a/infra/config/generated/builders/ci/Mac13 Tests/properties.json +++ b/infra/config/generated/builders/ci/Mac13 Tests/properties.json
@@ -84,16 +84,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git a/infra/config/generated/builders/ci/Mac13 Tests/shadow-properties.json b/infra/config/generated/builders/ci/Mac13 Tests/shadow-properties.json deleted file mode 100644 index e70b3b60..0000000 --- a/infra/config/generated/builders/ci/Mac13 Tests/shadow-properties.json +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git a/infra/config/generated/builders/ci/Oreo Phone Tester/properties.json b/infra/config/generated/builders/ci/Oreo Phone Tester/properties.json index 43ba0faf..e519152 100644 --- a/infra/config/generated/builders/ci/Oreo Phone Tester/properties.json +++ b/infra/config/generated/builders/ci/Oreo Phone Tester/properties.json
@@ -89,16 +89,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 500 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git a/infra/config/generated/builders/ci/Oreo Phone Tester/shadow-properties.json b/infra/config/generated/builders/ci/Oreo Phone Tester/shadow-properties.json deleted file mode 100644 index 5271cc6a..0000000 --- a/infra/config/generated/builders/ci/Oreo Phone Tester/shadow-properties.json +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 500 - } -} \ No newline at end of file
diff --git "a/infra/config/generated/builders/ci/Win10 FYI x64 DX12 Vulkan Debug \050NVIDIA\051/properties.json" "b/infra/config/generated/builders/ci/Win10 FYI x64 DX12 Vulkan Debug \050NVIDIA\051/properties.json" index 36a9eb06..c6770942 100644 --- "a/infra/config/generated/builders/ci/Win10 FYI x64 DX12 Vulkan Debug \050NVIDIA\051/properties.json" +++ "b/infra/config/generated/builders/ci/Win10 FYI x64 DX12 Vulkan Debug \050NVIDIA\051/properties.json"
@@ -72,16 +72,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git "a/infra/config/generated/builders/ci/Win10 FYI x64 DX12 Vulkan Debug \050NVIDIA\051/shadow-properties.json" "b/infra/config/generated/builders/ci/Win10 FYI x64 DX12 Vulkan Debug \050NVIDIA\051/shadow-properties.json" deleted file mode 100644 index e70b3b60..0000000 --- "a/infra/config/generated/builders/ci/Win10 FYI x64 DX12 Vulkan Debug \050NVIDIA\051/shadow-properties.json" +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git "a/infra/config/generated/builders/ci/Win10 FYI x64 DX12 Vulkan Release \050NVIDIA\051/properties.json" "b/infra/config/generated/builders/ci/Win10 FYI x64 DX12 Vulkan Release \050NVIDIA\051/properties.json" index 453af9b..af01d32 100644 --- "a/infra/config/generated/builders/ci/Win10 FYI x64 DX12 Vulkan Release \050NVIDIA\051/properties.json" +++ "b/infra/config/generated/builders/ci/Win10 FYI x64 DX12 Vulkan Release \050NVIDIA\051/properties.json"
@@ -72,16 +72,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git "a/infra/config/generated/builders/ci/Win10 FYI x64 DX12 Vulkan Release \050NVIDIA\051/shadow-properties.json" "b/infra/config/generated/builders/ci/Win10 FYI x64 DX12 Vulkan Release \050NVIDIA\051/shadow-properties.json" deleted file mode 100644 index e70b3b60..0000000 --- "a/infra/config/generated/builders/ci/Win10 FYI x64 DX12 Vulkan Release \050NVIDIA\051/shadow-properties.json" +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git "a/infra/config/generated/builders/ci/Win10 FYI x64 Debug \050NVIDIA\051/properties.json" "b/infra/config/generated/builders/ci/Win10 FYI x64 Debug \050NVIDIA\051/properties.json" index 66045c0..99f955f 100644 --- "a/infra/config/generated/builders/ci/Win10 FYI x64 Debug \050NVIDIA\051/properties.json" +++ "b/infra/config/generated/builders/ci/Win10 FYI x64 Debug \050NVIDIA\051/properties.json"
@@ -72,16 +72,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git "a/infra/config/generated/builders/ci/Win10 FYI x64 Debug \050NVIDIA\051/shadow-properties.json" "b/infra/config/generated/builders/ci/Win10 FYI x64 Debug \050NVIDIA\051/shadow-properties.json" deleted file mode 100644 index e70b3b60..0000000 --- "a/infra/config/generated/builders/ci/Win10 FYI x64 Debug \050NVIDIA\051/shadow-properties.json" +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git "a/infra/config/generated/builders/ci/Win10 FYI x64 Exp Release \050NVIDIA\051/properties.json" "b/infra/config/generated/builders/ci/Win10 FYI x64 Exp Release \050NVIDIA\051/properties.json" index a6b03422..b10f61c 100644 --- "a/infra/config/generated/builders/ci/Win10 FYI x64 Exp Release \050NVIDIA\051/properties.json" +++ "b/infra/config/generated/builders/ci/Win10 FYI x64 Exp Release \050NVIDIA\051/properties.json"
@@ -72,16 +72,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git "a/infra/config/generated/builders/ci/Win10 FYI x64 Exp Release \050NVIDIA\051/shadow-properties.json" "b/infra/config/generated/builders/ci/Win10 FYI x64 Exp Release \050NVIDIA\051/shadow-properties.json" deleted file mode 100644 index e70b3b60..0000000 --- "a/infra/config/generated/builders/ci/Win10 FYI x64 Exp Release \050NVIDIA\051/shadow-properties.json" +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git "a/infra/config/generated/builders/ci/Win10 FYI x64 Experimental Release \050Intel\051/properties.json" "b/infra/config/generated/builders/ci/Win10 FYI x64 Experimental Release \050Intel\051/properties.json" index 5cf97e93..8c156231 100644 --- "a/infra/config/generated/builders/ci/Win10 FYI x64 Experimental Release \050Intel\051/properties.json" +++ "b/infra/config/generated/builders/ci/Win10 FYI x64 Experimental Release \050Intel\051/properties.json"
@@ -72,16 +72,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git "a/infra/config/generated/builders/ci/Win10 FYI x64 Experimental Release \050Intel\051/shadow-properties.json" "b/infra/config/generated/builders/ci/Win10 FYI x64 Experimental Release \050Intel\051/shadow-properties.json" deleted file mode 100644 index e70b3b60..0000000 --- "a/infra/config/generated/builders/ci/Win10 FYI x64 Experimental Release \050Intel\051/shadow-properties.json" +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git "a/infra/config/generated/builders/ci/Win10 FYI x64 Release \050AMD RX 5500 XT\051/properties.json" "b/infra/config/generated/builders/ci/Win10 FYI x64 Release \050AMD RX 5500 XT\051/properties.json" index b0ed1c8..cad40b8 100644 --- "a/infra/config/generated/builders/ci/Win10 FYI x64 Release \050AMD RX 5500 XT\051/properties.json" +++ "b/infra/config/generated/builders/ci/Win10 FYI x64 Release \050AMD RX 5500 XT\051/properties.json"
@@ -72,16 +72,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git "a/infra/config/generated/builders/ci/Win10 FYI x64 Release \050AMD RX 5500 XT\051/shadow-properties.json" "b/infra/config/generated/builders/ci/Win10 FYI x64 Release \050AMD RX 5500 XT\051/shadow-properties.json" deleted file mode 100644 index e70b3b60..0000000 --- "a/infra/config/generated/builders/ci/Win10 FYI x64 Release \050AMD RX 5500 XT\051/shadow-properties.json" +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git "a/infra/config/generated/builders/ci/Win10 FYI x64 Release \050Intel UHD 770\051/properties.json" "b/infra/config/generated/builders/ci/Win10 FYI x64 Release \050Intel UHD 770\051/properties.json" index 6146189f..e6ffea6 100644 --- "a/infra/config/generated/builders/ci/Win10 FYI x64 Release \050Intel UHD 770\051/properties.json" +++ "b/infra/config/generated/builders/ci/Win10 FYI x64 Release \050Intel UHD 770\051/properties.json"
@@ -72,16 +72,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git "a/infra/config/generated/builders/ci/Win10 FYI x64 Release \050Intel UHD 770\051/shadow-properties.json" "b/infra/config/generated/builders/ci/Win10 FYI x64 Release \050Intel UHD 770\051/shadow-properties.json" deleted file mode 100644 index e70b3b60..0000000 --- "a/infra/config/generated/builders/ci/Win10 FYI x64 Release \050Intel UHD 770\051/shadow-properties.json" +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git "a/infra/config/generated/builders/ci/Win10 FYI x64 Release \050Intel\051/properties.json" "b/infra/config/generated/builders/ci/Win10 FYI x64 Release \050Intel\051/properties.json" index ee05ddaa..a1844a5 100644 --- "a/infra/config/generated/builders/ci/Win10 FYI x64 Release \050Intel\051/properties.json" +++ "b/infra/config/generated/builders/ci/Win10 FYI x64 Release \050Intel\051/properties.json"
@@ -72,16 +72,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git "a/infra/config/generated/builders/ci/Win10 FYI x64 Release \050Intel\051/shadow-properties.json" "b/infra/config/generated/builders/ci/Win10 FYI x64 Release \050Intel\051/shadow-properties.json" deleted file mode 100644 index e70b3b60..0000000 --- "a/infra/config/generated/builders/ci/Win10 FYI x64 Release \050Intel\051/shadow-properties.json" +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git "a/infra/config/generated/builders/ci/Win10 FYI x64 Release \050NVIDIA\051/properties.json" "b/infra/config/generated/builders/ci/Win10 FYI x64 Release \050NVIDIA\051/properties.json" index 30c963e..54234d17 100644 --- "a/infra/config/generated/builders/ci/Win10 FYI x64 Release \050NVIDIA\051/properties.json" +++ "b/infra/config/generated/builders/ci/Win10 FYI x64 Release \050NVIDIA\051/properties.json"
@@ -72,16 +72,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git "a/infra/config/generated/builders/ci/Win10 FYI x64 Release \050NVIDIA\051/shadow-properties.json" "b/infra/config/generated/builders/ci/Win10 FYI x64 Release \050NVIDIA\051/shadow-properties.json" deleted file mode 100644 index e70b3b60..0000000 --- "a/infra/config/generated/builders/ci/Win10 FYI x64 Release \050NVIDIA\051/shadow-properties.json" +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git "a/infra/config/generated/builders/ci/Win10 FYI x64 Release XR Perf \050NVIDIA\051/properties.json" "b/infra/config/generated/builders/ci/Win10 FYI x64 Release XR Perf \050NVIDIA\051/properties.json" index c3559e3..dec71270 100644 --- "a/infra/config/generated/builders/ci/Win10 FYI x64 Release XR Perf \050NVIDIA\051/properties.json" +++ "b/infra/config/generated/builders/ci/Win10 FYI x64 Release XR Perf \050NVIDIA\051/properties.json"
@@ -67,16 +67,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git "a/infra/config/generated/builders/ci/Win10 FYI x64 Release XR Perf \050NVIDIA\051/shadow-properties.json" "b/infra/config/generated/builders/ci/Win10 FYI x64 Release XR Perf \050NVIDIA\051/shadow-properties.json" deleted file mode 100644 index e70b3b60..0000000 --- "a/infra/config/generated/builders/ci/Win10 FYI x64 Release XR Perf \050NVIDIA\051/shadow-properties.json" +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git "a/infra/config/generated/builders/ci/Win10 FYI x86 Release \050NVIDIA\051/properties.json" "b/infra/config/generated/builders/ci/Win10 FYI x86 Release \050NVIDIA\051/properties.json" index 2e664ad..7601ae7 100644 --- "a/infra/config/generated/builders/ci/Win10 FYI x86 Release \050NVIDIA\051/properties.json" +++ "b/infra/config/generated/builders/ci/Win10 FYI x86 Release \050NVIDIA\051/properties.json"
@@ -72,16 +72,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git "a/infra/config/generated/builders/ci/Win10 FYI x86 Release \050NVIDIA\051/shadow-properties.json" "b/infra/config/generated/builders/ci/Win10 FYI x86 Release \050NVIDIA\051/shadow-properties.json" deleted file mode 100644 index e70b3b60..0000000 --- "a/infra/config/generated/builders/ci/Win10 FYI x86 Release \050NVIDIA\051/shadow-properties.json" +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git "a/infra/config/generated/builders/ci/Win10 x64 Debug \050NVIDIA\051/properties.json" "b/infra/config/generated/builders/ci/Win10 x64 Debug \050NVIDIA\051/properties.json" index 250f330d..d1ad9f0 100644 --- "a/infra/config/generated/builders/ci/Win10 x64 Debug \050NVIDIA\051/properties.json" +++ "b/infra/config/generated/builders/ci/Win10 x64 Debug \050NVIDIA\051/properties.json"
@@ -73,16 +73,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git "a/infra/config/generated/builders/ci/Win10 x64 Debug \050NVIDIA\051/shadow-properties.json" "b/infra/config/generated/builders/ci/Win10 x64 Debug \050NVIDIA\051/shadow-properties.json" deleted file mode 100644 index e70b3b60..0000000 --- "a/infra/config/generated/builders/ci/Win10 x64 Debug \050NVIDIA\051/shadow-properties.json" +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git "a/infra/config/generated/builders/ci/Win10 x64 Release \050NVIDIA\051/properties.json" "b/infra/config/generated/builders/ci/Win10 x64 Release \050NVIDIA\051/properties.json" index ef26e5f..1625b45 100644 --- "a/infra/config/generated/builders/ci/Win10 x64 Release \050NVIDIA\051/properties.json" +++ "b/infra/config/generated/builders/ci/Win10 x64 Release \050NVIDIA\051/properties.json"
@@ -79,16 +79,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git "a/infra/config/generated/builders/ci/Win10 x64 Release \050NVIDIA\051/shadow-properties.json" "b/infra/config/generated/builders/ci/Win10 x64 Release \050NVIDIA\051/shadow-properties.json" deleted file mode 100644 index e70b3b60..0000000 --- "a/infra/config/generated/builders/ci/Win10 x64 Release \050NVIDIA\051/shadow-properties.json" +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git "a/infra/config/generated/builders/ci/Win11 FYI arm64 Release \050Qualcomm Adreno 690\051/properties.json" "b/infra/config/generated/builders/ci/Win11 FYI arm64 Release \050Qualcomm Adreno 690\051/properties.json" index 52047ec..b46852c 100644 --- "a/infra/config/generated/builders/ci/Win11 FYI arm64 Release \050Qualcomm Adreno 690\051/properties.json" +++ "b/infra/config/generated/builders/ci/Win11 FYI arm64 Release \050Qualcomm Adreno 690\051/properties.json"
@@ -73,16 +73,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git "a/infra/config/generated/builders/ci/Win11 FYI arm64 Release \050Qualcomm Adreno 690\051/shadow-properties.json" "b/infra/config/generated/builders/ci/Win11 FYI arm64 Release \050Qualcomm Adreno 690\051/shadow-properties.json" deleted file mode 100644 index e70b3b60..0000000 --- "a/infra/config/generated/builders/ci/Win11 FYI arm64 Release \050Qualcomm Adreno 690\051/shadow-properties.json" +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git a/infra/config/generated/builders/ci/Win11 Tests x64/properties.json b/infra/config/generated/builders/ci/Win11 Tests x64/properties.json index 470401a..e94bd29 100644 --- a/infra/config/generated/builders/ci/Win11 Tests x64/properties.json +++ b/infra/config/generated/builders/ci/Win11 Tests x64/properties.json
@@ -80,16 +80,6 @@ "retry_failed_shards": true } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git a/infra/config/generated/builders/ci/Win11 Tests x64/shadow-properties.json b/infra/config/generated/builders/ci/Win11 Tests x64/shadow-properties.json deleted file mode 100644 index e70b3b60..0000000 --- a/infra/config/generated/builders/ci/Win11 Tests x64/shadow-properties.json +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git a/infra/config/generated/builders/ci/android-12-x64-dbg-tests/properties.json b/infra/config/generated/builders/ci/android-12-x64-dbg-tests/properties.json index 8435420..6072810 100644 --- a/infra/config/generated/builders/ci/android-12-x64-dbg-tests/properties.json +++ b/infra/config/generated/builders/ci/android-12-x64-dbg-tests/properties.json
@@ -79,16 +79,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git a/infra/config/generated/builders/ci/android-12-x64-dbg-tests/shadow-properties.json b/infra/config/generated/builders/ci/android-12-x64-dbg-tests/shadow-properties.json deleted file mode 100644 index e70b3b60..0000000 --- a/infra/config/generated/builders/ci/android-12-x64-dbg-tests/shadow-properties.json +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git a/infra/config/generated/builders/ci/android-cronet-x64-dbg-12-tests/properties.json b/infra/config/generated/builders/ci/android-cronet-x64-dbg-12-tests/properties.json index 99960915..8c1394d 100644 --- a/infra/config/generated/builders/ci/android-cronet-x64-dbg-12-tests/properties.json +++ b/infra/config/generated/builders/ci/android-cronet-x64-dbg-12-tests/properties.json
@@ -87,16 +87,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 500 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git a/infra/config/generated/builders/ci/android-cronet-x64-dbg-12-tests/shadow-properties.json b/infra/config/generated/builders/ci/android-cronet-x64-dbg-12-tests/shadow-properties.json deleted file mode 100644 index 5271cc6a..0000000 --- a/infra/config/generated/builders/ci/android-cronet-x64-dbg-12-tests/shadow-properties.json +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 500 - } -} \ No newline at end of file
diff --git a/infra/config/generated/builders/ci/android-cronet-x64-dbg-13-tests/properties.json b/infra/config/generated/builders/ci/android-cronet-x64-dbg-13-tests/properties.json index 26245e0..0b92007 100644 --- a/infra/config/generated/builders/ci/android-cronet-x64-dbg-13-tests/properties.json +++ b/infra/config/generated/builders/ci/android-cronet-x64-dbg-13-tests/properties.json
@@ -87,16 +87,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 500 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git a/infra/config/generated/builders/ci/android-cronet-x64-dbg-13-tests/shadow-properties.json b/infra/config/generated/builders/ci/android-cronet-x64-dbg-13-tests/shadow-properties.json deleted file mode 100644 index 5271cc6a..0000000 --- a/infra/config/generated/builders/ci/android-cronet-x64-dbg-13-tests/shadow-properties.json +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 500 - } -} \ No newline at end of file
diff --git a/infra/config/generated/builders/ci/android-cronet-x64-dbg-14-tests/properties.json b/infra/config/generated/builders/ci/android-cronet-x64-dbg-14-tests/properties.json index 9d3d2d09..5de65b3 100644 --- a/infra/config/generated/builders/ci/android-cronet-x64-dbg-14-tests/properties.json +++ b/infra/config/generated/builders/ci/android-cronet-x64-dbg-14-tests/properties.json
@@ -87,16 +87,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 500 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git a/infra/config/generated/builders/ci/android-cronet-x64-dbg-14-tests/shadow-properties.json b/infra/config/generated/builders/ci/android-cronet-x64-dbg-14-tests/shadow-properties.json deleted file mode 100644 index 5271cc6a..0000000 --- a/infra/config/generated/builders/ci/android-cronet-x64-dbg-14-tests/shadow-properties.json +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 500 - } -} \ No newline at end of file
diff --git a/infra/config/generated/builders/ci/android-cronet-x86-dbg-10-tests/properties.json b/infra/config/generated/builders/ci/android-cronet-x86-dbg-10-tests/properties.json index 8c43a13..3b114e3 100644 --- a/infra/config/generated/builders/ci/android-cronet-x86-dbg-10-tests/properties.json +++ b/infra/config/generated/builders/ci/android-cronet-x86-dbg-10-tests/properties.json
@@ -87,16 +87,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 500 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git a/infra/config/generated/builders/ci/android-cronet-x86-dbg-10-tests/shadow-properties.json b/infra/config/generated/builders/ci/android-cronet-x86-dbg-10-tests/shadow-properties.json deleted file mode 100644 index 5271cc6a..0000000 --- a/infra/config/generated/builders/ci/android-cronet-x86-dbg-10-tests/shadow-properties.json +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 500 - } -} \ No newline at end of file
diff --git a/infra/config/generated/builders/ci/android-cronet-x86-dbg-11-tests/properties.json b/infra/config/generated/builders/ci/android-cronet-x86-dbg-11-tests/properties.json index 4238e7a..7d8435bf 100644 --- a/infra/config/generated/builders/ci/android-cronet-x86-dbg-11-tests/properties.json +++ b/infra/config/generated/builders/ci/android-cronet-x86-dbg-11-tests/properties.json
@@ -87,16 +87,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 500 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git a/infra/config/generated/builders/ci/android-cronet-x86-dbg-11-tests/shadow-properties.json b/infra/config/generated/builders/ci/android-cronet-x86-dbg-11-tests/shadow-properties.json deleted file mode 100644 index 5271cc6a..0000000 --- a/infra/config/generated/builders/ci/android-cronet-x86-dbg-11-tests/shadow-properties.json +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 500 - } -} \ No newline at end of file
diff --git a/infra/config/generated/builders/ci/android-cronet-x86-dbg-lollipop-tests/properties.json b/infra/config/generated/builders/ci/android-cronet-x86-dbg-lollipop-tests/properties.json index a0e51e8..91cef15 100644 --- a/infra/config/generated/builders/ci/android-cronet-x86-dbg-lollipop-tests/properties.json +++ b/infra/config/generated/builders/ci/android-cronet-x86-dbg-lollipop-tests/properties.json
@@ -87,16 +87,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 500 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git a/infra/config/generated/builders/ci/android-cronet-x86-dbg-lollipop-tests/shadow-properties.json b/infra/config/generated/builders/ci/android-cronet-x86-dbg-lollipop-tests/shadow-properties.json deleted file mode 100644 index 5271cc6a..0000000 --- a/infra/config/generated/builders/ci/android-cronet-x86-dbg-lollipop-tests/shadow-properties.json +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 500 - } -} \ No newline at end of file
diff --git a/infra/config/generated/builders/ci/android-cronet-x86-dbg-marshmallow-tests/properties.json b/infra/config/generated/builders/ci/android-cronet-x86-dbg-marshmallow-tests/properties.json index a389adc6..eb81325 100644 --- a/infra/config/generated/builders/ci/android-cronet-x86-dbg-marshmallow-tests/properties.json +++ b/infra/config/generated/builders/ci/android-cronet-x86-dbg-marshmallow-tests/properties.json
@@ -87,16 +87,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 500 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git a/infra/config/generated/builders/ci/android-cronet-x86-dbg-marshmallow-tests/shadow-properties.json b/infra/config/generated/builders/ci/android-cronet-x86-dbg-marshmallow-tests/shadow-properties.json deleted file mode 100644 index 5271cc6a..0000000 --- a/infra/config/generated/builders/ci/android-cronet-x86-dbg-marshmallow-tests/shadow-properties.json +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 500 - } -} \ No newline at end of file
diff --git a/infra/config/generated/builders/ci/android-cronet-x86-dbg-nougat-tests/properties.json b/infra/config/generated/builders/ci/android-cronet-x86-dbg-nougat-tests/properties.json index 4dabb48..d8ad878 100644 --- a/infra/config/generated/builders/ci/android-cronet-x86-dbg-nougat-tests/properties.json +++ b/infra/config/generated/builders/ci/android-cronet-x86-dbg-nougat-tests/properties.json
@@ -87,16 +87,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 500 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git a/infra/config/generated/builders/ci/android-cronet-x86-dbg-nougat-tests/shadow-properties.json b/infra/config/generated/builders/ci/android-cronet-x86-dbg-nougat-tests/shadow-properties.json deleted file mode 100644 index 5271cc6a..0000000 --- a/infra/config/generated/builders/ci/android-cronet-x86-dbg-nougat-tests/shadow-properties.json +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 500 - } -} \ No newline at end of file
diff --git a/infra/config/generated/builders/ci/android-cronet-x86-dbg-oreo-tests/properties.json b/infra/config/generated/builders/ci/android-cronet-x86-dbg-oreo-tests/properties.json index d9622b83..a252e5d 100644 --- a/infra/config/generated/builders/ci/android-cronet-x86-dbg-oreo-tests/properties.json +++ b/infra/config/generated/builders/ci/android-cronet-x86-dbg-oreo-tests/properties.json
@@ -87,16 +87,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 500 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git a/infra/config/generated/builders/ci/android-cronet-x86-dbg-oreo-tests/shadow-properties.json b/infra/config/generated/builders/ci/android-cronet-x86-dbg-oreo-tests/shadow-properties.json deleted file mode 100644 index 5271cc6a..0000000 --- a/infra/config/generated/builders/ci/android-cronet-x86-dbg-oreo-tests/shadow-properties.json +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 500 - } -} \ No newline at end of file
diff --git a/infra/config/generated/builders/ci/android-cronet-x86-dbg-pie-tests/properties.json b/infra/config/generated/builders/ci/android-cronet-x86-dbg-pie-tests/properties.json index 72b5c8e4..82e94397 100644 --- a/infra/config/generated/builders/ci/android-cronet-x86-dbg-pie-tests/properties.json +++ b/infra/config/generated/builders/ci/android-cronet-x86-dbg-pie-tests/properties.json
@@ -87,16 +87,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 500 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git a/infra/config/generated/builders/ci/android-cronet-x86-dbg-pie-tests/shadow-properties.json b/infra/config/generated/builders/ci/android-cronet-x86-dbg-pie-tests/shadow-properties.json deleted file mode 100644 index 5271cc6a..0000000 --- a/infra/config/generated/builders/ci/android-cronet-x86-dbg-pie-tests/shadow-properties.json +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 500 - } -} \ No newline at end of file
diff --git a/infra/config/generated/builders/ci/android-pie-arm64-dbg/properties.json b/infra/config/generated/builders/ci/android-pie-arm64-dbg/properties.json index 2ea1889..f7093c8 100644 --- a/infra/config/generated/builders/ci/android-pie-arm64-dbg/properties.json +++ b/infra/config/generated/builders/ci/android-pie-arm64-dbg/properties.json
@@ -89,16 +89,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 500 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git a/infra/config/generated/builders/ci/android-pie-arm64-dbg/shadow-properties.json b/infra/config/generated/builders/ci/android-pie-arm64-dbg/shadow-properties.json deleted file mode 100644 index 5271cc6a..0000000 --- a/infra/config/generated/builders/ci/android-pie-arm64-dbg/shadow-properties.json +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 500 - } -} \ No newline at end of file
diff --git a/infra/config/generated/builders/ci/android-webview-10-x86-rel-tests/properties.json b/infra/config/generated/builders/ci/android-webview-10-x86-rel-tests/properties.json index 61c88a92..48d61b7 100644 --- a/infra/config/generated/builders/ci/android-webview-10-x86-rel-tests/properties.json +++ b/infra/config/generated/builders/ci/android-webview-10-x86-rel-tests/properties.json
@@ -79,16 +79,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 500 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git a/infra/config/generated/builders/ci/android-webview-10-x86-rel-tests/shadow-properties.json b/infra/config/generated/builders/ci/android-webview-10-x86-rel-tests/shadow-properties.json deleted file mode 100644 index 5271cc6a..0000000 --- a/infra/config/generated/builders/ci/android-webview-10-x86-rel-tests/shadow-properties.json +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 500 - } -} \ No newline at end of file
diff --git a/infra/config/generated/builders/ci/android-webview-12-x64-dbg-tests/properties.json b/infra/config/generated/builders/ci/android-webview-12-x64-dbg-tests/properties.json index a4ad9d9..cd193f7 100644 --- a/infra/config/generated/builders/ci/android-webview-12-x64-dbg-tests/properties.json +++ b/infra/config/generated/builders/ci/android-webview-12-x64-dbg-tests/properties.json
@@ -79,16 +79,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git a/infra/config/generated/builders/ci/android-webview-12-x64-dbg-tests/shadow-properties.json b/infra/config/generated/builders/ci/android-webview-12-x64-dbg-tests/shadow-properties.json deleted file mode 100644 index e70b3b60..0000000 --- a/infra/config/generated/builders/ci/android-webview-12-x64-dbg-tests/shadow-properties.json +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git a/infra/config/generated/builders/ci/android-webview-13-x64-dbg-tests/properties.json b/infra/config/generated/builders/ci/android-webview-13-x64-dbg-tests/properties.json index 0398ec9e..587404da 100644 --- a/infra/config/generated/builders/ci/android-webview-13-x64-dbg-tests/properties.json +++ b/infra/config/generated/builders/ci/android-webview-13-x64-dbg-tests/properties.json
@@ -79,16 +79,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git a/infra/config/generated/builders/ci/android-webview-13-x64-dbg-tests/shadow-properties.json b/infra/config/generated/builders/ci/android-webview-13-x64-dbg-tests/shadow-properties.json deleted file mode 100644 index e70b3b60..0000000 --- a/infra/config/generated/builders/ci/android-webview-13-x64-dbg-tests/shadow-properties.json +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git a/infra/config/generated/builders/ci/chromeos-amd64-generic-rel-gtest/properties.json b/infra/config/generated/builders/ci/chromeos-amd64-generic-rel-gtest/properties.json index efc839d3..d81eafd8 100644 --- a/infra/config/generated/builders/ci/chromeos-amd64-generic-rel-gtest/properties.json +++ b/infra/config/generated/builders/ci/chromeos-amd64-generic-rel-gtest/properties.json
@@ -99,16 +99,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git a/infra/config/generated/builders/ci/chromeos-amd64-generic-rel-gtest/shadow-properties.json b/infra/config/generated/builders/ci/chromeos-amd64-generic-rel-gtest/shadow-properties.json deleted file mode 100644 index e70b3b60..0000000 --- a/infra/config/generated/builders/ci/chromeos-amd64-generic-rel-gtest/shadow-properties.json +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git a/infra/config/generated/builders/ci/chromeos-amd64-generic-rel-tast/properties.json b/infra/config/generated/builders/ci/chromeos-amd64-generic-rel-tast/properties.json index 629caad..53c2904 100644 --- a/infra/config/generated/builders/ci/chromeos-amd64-generic-rel-tast/properties.json +++ b/infra/config/generated/builders/ci/chromeos-amd64-generic-rel-tast/properties.json
@@ -95,16 +95,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git a/infra/config/generated/builders/ci/chromeos-amd64-generic-rel-tast/shadow-properties.json b/infra/config/generated/builders/ci/chromeos-amd64-generic-rel-tast/shadow-properties.json deleted file mode 100644 index e70b3b60..0000000 --- a/infra/config/generated/builders/ci/chromeos-amd64-generic-rel-tast/shadow-properties.json +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git a/infra/config/generated/builders/ci/lacros-amd64-generic-rel-gtest/properties.json b/infra/config/generated/builders/ci/lacros-amd64-generic-rel-gtest/properties.json index 5756e46..c20c30e3 100644 --- a/infra/config/generated/builders/ci/lacros-amd64-generic-rel-gtest/properties.json +++ b/infra/config/generated/builders/ci/lacros-amd64-generic-rel-gtest/properties.json
@@ -99,16 +99,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git a/infra/config/generated/builders/ci/lacros-amd64-generic-rel-gtest/shadow-properties.json b/infra/config/generated/builders/ci/lacros-amd64-generic-rel-gtest/shadow-properties.json deleted file mode 100644 index e70b3b60..0000000 --- a/infra/config/generated/builders/ci/lacros-amd64-generic-rel-gtest/shadow-properties.json +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git a/infra/config/generated/builders/ci/lacros-amd64-generic-rel-tast/properties.json b/infra/config/generated/builders/ci/lacros-amd64-generic-rel-tast/properties.json index dba232a..c813e06 100644 --- a/infra/config/generated/builders/ci/lacros-amd64-generic-rel-tast/properties.json +++ b/infra/config/generated/builders/ci/lacros-amd64-generic-rel-tast/properties.json
@@ -95,16 +95,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git a/infra/config/generated/builders/ci/lacros-amd64-generic-rel-tast/shadow-properties.json b/infra/config/generated/builders/ci/lacros-amd64-generic-rel-tast/shadow-properties.json deleted file mode 100644 index e70b3b60..0000000 --- a/infra/config/generated/builders/ci/lacros-amd64-generic-rel-tast/shadow-properties.json +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git a/infra/config/generated/builders/ci/linux-gcc-rel/gn-args.json b/infra/config/generated/builders/ci/linux-gcc-rel/gn-args.json index d87f75bf9..4b0544b 100644 --- a/infra/config/generated/builders/ci/linux-gcc-rel/gn-args.json +++ b/infra/config/generated/builders/ci/linux-gcc-rel/gn-args.json
@@ -4,7 +4,6 @@ "is_clang": false, "is_component_build": false, "is_debug": false, - "symbol_level": 1, - "use_siso": true + "symbol_level": 1 } } \ No newline at end of file
diff --git a/infra/config/generated/builders/ci/linux-gcc-rel/properties.json b/infra/config/generated/builders/ci/linux-gcc-rel/properties.json index 563c75bd..5ef4a912f 100644 --- a/infra/config/generated/builders/ci/linux-gcc-rel/properties.json +++ b/infra/config/generated/builders/ci/linux-gcc-rel/properties.json
@@ -47,16 +47,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 500 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git a/infra/config/generated/builders/ci/linux-gcc-rel/shadow-properties.json b/infra/config/generated/builders/ci/linux-gcc-rel/shadow-properties.json deleted file mode 100644 index 5271cc6a..0000000 --- a/infra/config/generated/builders/ci/linux-gcc-rel/shadow-properties.json +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 500 - } -} \ No newline at end of file
diff --git a/infra/config/generated/builders/ci/linux-lacros-tester-rel/properties.json b/infra/config/generated/builders/ci/linux-lacros-tester-rel/properties.json index 9d340d69..bf44fd9 100644 --- a/infra/config/generated/builders/ci/linux-lacros-tester-rel/properties.json +++ b/infra/config/generated/builders/ci/linux-lacros-tester-rel/properties.json
@@ -82,16 +82,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git a/infra/config/generated/builders/ci/linux-lacros-tester-rel/shadow-properties.json b/infra/config/generated/builders/ci/linux-lacros-tester-rel/shadow-properties.json deleted file mode 100644 index e70b3b60..0000000 --- a/infra/config/generated/builders/ci/linux-lacros-tester-rel/shadow-properties.json +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git a/infra/config/generated/builders/ci/linux-updater-tester-dbg/properties.json b/infra/config/generated/builders/ci/linux-updater-tester-dbg/properties.json index b1fc12d..a4cd159 100644 --- a/infra/config/generated/builders/ci/linux-updater-tester-dbg/properties.json +++ b/infra/config/generated/builders/ci/linux-updater-tester-dbg/properties.json
@@ -71,16 +71,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git a/infra/config/generated/builders/ci/linux-updater-tester-dbg/shadow-properties.json b/infra/config/generated/builders/ci/linux-updater-tester-dbg/shadow-properties.json deleted file mode 100644 index e70b3b60..0000000 --- a/infra/config/generated/builders/ci/linux-updater-tester-dbg/shadow-properties.json +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git a/infra/config/generated/builders/ci/linux-updater-tester-rel/properties.json b/infra/config/generated/builders/ci/linux-updater-tester-rel/properties.json index d14027aa..326a747 100644 --- a/infra/config/generated/builders/ci/linux-updater-tester-rel/properties.json +++ b/infra/config/generated/builders/ci/linux-updater-tester-rel/properties.json
@@ -71,16 +71,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git a/infra/config/generated/builders/ci/linux-updater-tester-rel/shadow-properties.json b/infra/config/generated/builders/ci/linux-updater-tester-rel/shadow-properties.json deleted file mode 100644 index e70b3b60..0000000 --- a/infra/config/generated/builders/ci/linux-updater-tester-rel/shadow-properties.json +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git a/infra/config/generated/builders/ci/mac10.15-updater-tester-dbg/properties.json b/infra/config/generated/builders/ci/mac10.15-updater-tester-dbg/properties.json index baa2408..c199037a 100644 --- a/infra/config/generated/builders/ci/mac10.15-updater-tester-dbg/properties.json +++ b/infra/config/generated/builders/ci/mac10.15-updater-tester-dbg/properties.json
@@ -71,16 +71,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git a/infra/config/generated/builders/ci/mac10.15-updater-tester-dbg/shadow-properties.json b/infra/config/generated/builders/ci/mac10.15-updater-tester-dbg/shadow-properties.json deleted file mode 100644 index e70b3b60..0000000 --- a/infra/config/generated/builders/ci/mac10.15-updater-tester-dbg/shadow-properties.json +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git a/infra/config/generated/builders/ci/mac10.15-updater-tester-rel/properties.json b/infra/config/generated/builders/ci/mac10.15-updater-tester-rel/properties.json index bc371719..84d9edcc 100644 --- a/infra/config/generated/builders/ci/mac10.15-updater-tester-rel/properties.json +++ b/infra/config/generated/builders/ci/mac10.15-updater-tester-rel/properties.json
@@ -71,16 +71,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git a/infra/config/generated/builders/ci/mac10.15-updater-tester-rel/shadow-properties.json b/infra/config/generated/builders/ci/mac10.15-updater-tester-rel/shadow-properties.json deleted file mode 100644 index e70b3b60..0000000 --- a/infra/config/generated/builders/ci/mac10.15-updater-tester-rel/shadow-properties.json +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git a/infra/config/generated/builders/ci/mac11-arm64-rel-tests/properties.json b/infra/config/generated/builders/ci/mac11-arm64-rel-tests/properties.json index 347ed3d..d27ddfd 100644 --- a/infra/config/generated/builders/ci/mac11-arm64-rel-tests/properties.json +++ b/infra/config/generated/builders/ci/mac11-arm64-rel-tests/properties.json
@@ -73,16 +73,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git a/infra/config/generated/builders/ci/mac11-arm64-rel-tests/shadow-properties.json b/infra/config/generated/builders/ci/mac11-arm64-rel-tests/shadow-properties.json deleted file mode 100644 index e70b3b60..0000000 --- a/infra/config/generated/builders/ci/mac11-arm64-rel-tests/shadow-properties.json +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git a/infra/config/generated/builders/ci/mac11-arm64-updater-tester-dbg/properties.json b/infra/config/generated/builders/ci/mac11-arm64-updater-tester-dbg/properties.json index 51a0199..1c267c7 100644 --- a/infra/config/generated/builders/ci/mac11-arm64-updater-tester-dbg/properties.json +++ b/infra/config/generated/builders/ci/mac11-arm64-updater-tester-dbg/properties.json
@@ -65,16 +65,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git a/infra/config/generated/builders/ci/mac11-arm64-updater-tester-dbg/shadow-properties.json b/infra/config/generated/builders/ci/mac11-arm64-updater-tester-dbg/shadow-properties.json deleted file mode 100644 index e70b3b60..0000000 --- a/infra/config/generated/builders/ci/mac11-arm64-updater-tester-dbg/shadow-properties.json +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git a/infra/config/generated/builders/ci/mac11-arm64-updater-tester-rel/properties.json b/infra/config/generated/builders/ci/mac11-arm64-updater-tester-rel/properties.json index 207d297..5ebbdcf0 100644 --- a/infra/config/generated/builders/ci/mac11-arm64-updater-tester-rel/properties.json +++ b/infra/config/generated/builders/ci/mac11-arm64-updater-tester-rel/properties.json
@@ -65,16 +65,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git a/infra/config/generated/builders/ci/mac11-arm64-updater-tester-rel/shadow-properties.json b/infra/config/generated/builders/ci/mac11-arm64-updater-tester-rel/shadow-properties.json deleted file mode 100644 index e70b3b60..0000000 --- a/infra/config/generated/builders/ci/mac11-arm64-updater-tester-rel/shadow-properties.json +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git a/infra/config/generated/builders/ci/mac11-x64-updater-tester-dbg/properties.json b/infra/config/generated/builders/ci/mac11-x64-updater-tester-dbg/properties.json index abf9df58..875e6ba 100644 --- a/infra/config/generated/builders/ci/mac11-x64-updater-tester-dbg/properties.json +++ b/infra/config/generated/builders/ci/mac11-x64-updater-tester-dbg/properties.json
@@ -65,16 +65,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git a/infra/config/generated/builders/ci/mac11-x64-updater-tester-dbg/shadow-properties.json b/infra/config/generated/builders/ci/mac11-x64-updater-tester-dbg/shadow-properties.json deleted file mode 100644 index e70b3b60..0000000 --- a/infra/config/generated/builders/ci/mac11-x64-updater-tester-dbg/shadow-properties.json +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git a/infra/config/generated/builders/ci/mac11-x64-updater-tester-rel/properties.json b/infra/config/generated/builders/ci/mac11-x64-updater-tester-rel/properties.json index cdb9c2dd..1c997f4 100644 --- a/infra/config/generated/builders/ci/mac11-x64-updater-tester-rel/properties.json +++ b/infra/config/generated/builders/ci/mac11-x64-updater-tester-rel/properties.json
@@ -65,16 +65,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git a/infra/config/generated/builders/ci/mac11-x64-updater-tester-rel/shadow-properties.json b/infra/config/generated/builders/ci/mac11-x64-updater-tester-rel/shadow-properties.json deleted file mode 100644 index e70b3b60..0000000 --- a/infra/config/generated/builders/ci/mac11-x64-updater-tester-rel/shadow-properties.json +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git a/infra/config/generated/builders/ci/mac12-arm64-rel-tests/properties.json b/infra/config/generated/builders/ci/mac12-arm64-rel-tests/properties.json index a1c80b0..29a1d34 100644 --- a/infra/config/generated/builders/ci/mac12-arm64-rel-tests/properties.json +++ b/infra/config/generated/builders/ci/mac12-arm64-rel-tests/properties.json
@@ -73,16 +73,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git a/infra/config/generated/builders/ci/mac12-arm64-rel-tests/shadow-properties.json b/infra/config/generated/builders/ci/mac12-arm64-rel-tests/shadow-properties.json deleted file mode 100644 index e70b3b60..0000000 --- a/infra/config/generated/builders/ci/mac12-arm64-rel-tests/shadow-properties.json +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git a/infra/config/generated/builders/ci/mac12-arm64-updater-tester-rel/properties.json b/infra/config/generated/builders/ci/mac12-arm64-updater-tester-rel/properties.json index 1354685..c6288286 100644 --- a/infra/config/generated/builders/ci/mac12-arm64-updater-tester-rel/properties.json +++ b/infra/config/generated/builders/ci/mac12-arm64-updater-tester-rel/properties.json
@@ -65,16 +65,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git a/infra/config/generated/builders/ci/mac12-arm64-updater-tester-rel/shadow-properties.json b/infra/config/generated/builders/ci/mac12-arm64-updater-tester-rel/shadow-properties.json deleted file mode 100644 index e70b3b60..0000000 --- a/infra/config/generated/builders/ci/mac12-arm64-updater-tester-rel/shadow-properties.json +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git a/infra/config/generated/builders/ci/mac12-x64-updater-tester-asan-dbg/properties.json b/infra/config/generated/builders/ci/mac12-x64-updater-tester-asan-dbg/properties.json index 000470a..23aa51ce 100644 --- a/infra/config/generated/builders/ci/mac12-x64-updater-tester-asan-dbg/properties.json +++ b/infra/config/generated/builders/ci/mac12-x64-updater-tester-asan-dbg/properties.json
@@ -65,16 +65,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git a/infra/config/generated/builders/ci/mac12-x64-updater-tester-asan-dbg/shadow-properties.json b/infra/config/generated/builders/ci/mac12-x64-updater-tester-asan-dbg/shadow-properties.json deleted file mode 100644 index e70b3b60..0000000 --- a/infra/config/generated/builders/ci/mac12-x64-updater-tester-asan-dbg/shadow-properties.json +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git a/infra/config/generated/builders/ci/mac13-arm64-rel-tests/properties.json b/infra/config/generated/builders/ci/mac13-arm64-rel-tests/properties.json index d165861..4bbe6f3d 100644 --- a/infra/config/generated/builders/ci/mac13-arm64-rel-tests/properties.json +++ b/infra/config/generated/builders/ci/mac13-arm64-rel-tests/properties.json
@@ -73,16 +73,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git a/infra/config/generated/builders/ci/mac13-arm64-rel-tests/shadow-properties.json b/infra/config/generated/builders/ci/mac13-arm64-rel-tests/shadow-properties.json deleted file mode 100644 index e70b3b60..0000000 --- a/infra/config/generated/builders/ci/mac13-arm64-rel-tests/shadow-properties.json +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git a/infra/config/generated/builders/ci/mac13-arm64-updater-tester-dbg/properties.json b/infra/config/generated/builders/ci/mac13-arm64-updater-tester-dbg/properties.json index b3cfd3d..8c7c6559 100644 --- a/infra/config/generated/builders/ci/mac13-arm64-updater-tester-dbg/properties.json +++ b/infra/config/generated/builders/ci/mac13-arm64-updater-tester-dbg/properties.json
@@ -65,16 +65,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git a/infra/config/generated/builders/ci/mac13-arm64-updater-tester-dbg/shadow-properties.json b/infra/config/generated/builders/ci/mac13-arm64-updater-tester-dbg/shadow-properties.json deleted file mode 100644 index e70b3b60..0000000 --- a/infra/config/generated/builders/ci/mac13-arm64-updater-tester-dbg/shadow-properties.json +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git a/infra/config/generated/builders/ci/mac13-x64-updater-tester-rel/properties.json b/infra/config/generated/builders/ci/mac13-x64-updater-tester-rel/properties.json index 7127933..783070be 100644 --- a/infra/config/generated/builders/ci/mac13-x64-updater-tester-rel/properties.json +++ b/infra/config/generated/builders/ci/mac13-x64-updater-tester-rel/properties.json
@@ -65,16 +65,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git a/infra/config/generated/builders/ci/mac13-x64-updater-tester-rel/shadow-properties.json b/infra/config/generated/builders/ci/mac13-x64-updater-tester-rel/shadow-properties.json deleted file mode 100644 index e70b3b60..0000000 --- a/infra/config/generated/builders/ci/mac13-x64-updater-tester-rel/shadow-properties.json +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git a/infra/config/generated/builders/ci/win10-32-on-64-updater-tester-dbg/properties.json b/infra/config/generated/builders/ci/win10-32-on-64-updater-tester-dbg/properties.json index e3441177..f7b9d7a 100644 --- a/infra/config/generated/builders/ci/win10-32-on-64-updater-tester-dbg/properties.json +++ b/infra/config/generated/builders/ci/win10-32-on-64-updater-tester-dbg/properties.json
@@ -65,16 +65,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git a/infra/config/generated/builders/ci/win10-32-on-64-updater-tester-dbg/shadow-properties.json b/infra/config/generated/builders/ci/win10-32-on-64-updater-tester-dbg/shadow-properties.json deleted file mode 100644 index e70b3b60..0000000 --- a/infra/config/generated/builders/ci/win10-32-on-64-updater-tester-dbg/shadow-properties.json +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git a/infra/config/generated/builders/ci/win10-32-on-64-updater-tester-rel/properties.json b/infra/config/generated/builders/ci/win10-32-on-64-updater-tester-rel/properties.json index 1bf6dd3..778f54f 100644 --- a/infra/config/generated/builders/ci/win10-32-on-64-updater-tester-rel/properties.json +++ b/infra/config/generated/builders/ci/win10-32-on-64-updater-tester-rel/properties.json
@@ -65,16 +65,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git a/infra/config/generated/builders/ci/win10-32-on-64-updater-tester-rel/shadow-properties.json b/infra/config/generated/builders/ci/win10-32-on-64-updater-tester-rel/shadow-properties.json deleted file mode 100644 index e70b3b60..0000000 --- a/infra/config/generated/builders/ci/win10-32-on-64-updater-tester-rel/shadow-properties.json +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git a/infra/config/generated/builders/ci/win10-updater-tester-dbg-uac/properties.json b/infra/config/generated/builders/ci/win10-updater-tester-dbg-uac/properties.json index 3664ba4e..a43f8f9 100644 --- a/infra/config/generated/builders/ci/win10-updater-tester-dbg-uac/properties.json +++ b/infra/config/generated/builders/ci/win10-updater-tester-dbg-uac/properties.json
@@ -65,16 +65,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git a/infra/config/generated/builders/ci/win10-updater-tester-dbg-uac/shadow-properties.json b/infra/config/generated/builders/ci/win10-updater-tester-dbg-uac/shadow-properties.json deleted file mode 100644 index e70b3b60..0000000 --- a/infra/config/generated/builders/ci/win10-updater-tester-dbg-uac/shadow-properties.json +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git a/infra/config/generated/builders/ci/win10-updater-tester-dbg/properties.json b/infra/config/generated/builders/ci/win10-updater-tester-dbg/properties.json index 3f78c63..b0963cdf 100644 --- a/infra/config/generated/builders/ci/win10-updater-tester-dbg/properties.json +++ b/infra/config/generated/builders/ci/win10-updater-tester-dbg/properties.json
@@ -71,16 +71,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git a/infra/config/generated/builders/ci/win10-updater-tester-dbg/shadow-properties.json b/infra/config/generated/builders/ci/win10-updater-tester-dbg/shadow-properties.json deleted file mode 100644 index e70b3b60..0000000 --- a/infra/config/generated/builders/ci/win10-updater-tester-dbg/shadow-properties.json +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git a/infra/config/generated/builders/ci/win10-updater-tester-rel-uac/properties.json b/infra/config/generated/builders/ci/win10-updater-tester-rel-uac/properties.json index a43a945..5009bb1 100644 --- a/infra/config/generated/builders/ci/win10-updater-tester-rel-uac/properties.json +++ b/infra/config/generated/builders/ci/win10-updater-tester-rel-uac/properties.json
@@ -65,16 +65,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git a/infra/config/generated/builders/ci/win10-updater-tester-rel-uac/shadow-properties.json b/infra/config/generated/builders/ci/win10-updater-tester-rel-uac/shadow-properties.json deleted file mode 100644 index e70b3b60..0000000 --- a/infra/config/generated/builders/ci/win10-updater-tester-rel-uac/shadow-properties.json +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git a/infra/config/generated/builders/ci/win10-updater-tester-rel/properties.json b/infra/config/generated/builders/ci/win10-updater-tester-rel/properties.json index bf53092..5a96a7c 100644 --- a/infra/config/generated/builders/ci/win10-updater-tester-rel/properties.json +++ b/infra/config/generated/builders/ci/win10-updater-tester-rel/properties.json
@@ -71,16 +71,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git a/infra/config/generated/builders/ci/win10-updater-tester-rel/shadow-properties.json b/infra/config/generated/builders/ci/win10-updater-tester-rel/shadow-properties.json deleted file mode 100644 index e70b3b60..0000000 --- a/infra/config/generated/builders/ci/win10-updater-tester-rel/shadow-properties.json +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git a/infra/config/generated/builders/ci/win11-arm64-dbg-tests/properties.json b/infra/config/generated/builders/ci/win11-arm64-dbg-tests/properties.json index f400f71..a556eae 100644 --- a/infra/config/generated/builders/ci/win11-arm64-dbg-tests/properties.json +++ b/infra/config/generated/builders/ci/win11-arm64-dbg-tests/properties.json
@@ -80,16 +80,6 @@ "retry_failed_shards": true } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git a/infra/config/generated/builders/ci/win11-arm64-dbg-tests/shadow-properties.json b/infra/config/generated/builders/ci/win11-arm64-dbg-tests/shadow-properties.json deleted file mode 100644 index e70b3b60..0000000 --- a/infra/config/generated/builders/ci/win11-arm64-dbg-tests/shadow-properties.json +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git a/infra/config/generated/builders/ci/win11-arm64-rel-tests/properties.json b/infra/config/generated/builders/ci/win11-arm64-rel-tests/properties.json index 525761cc..703e0e2 100644 --- a/infra/config/generated/builders/ci/win11-arm64-rel-tests/properties.json +++ b/infra/config/generated/builders/ci/win11-arm64-rel-tests/properties.json
@@ -82,16 +82,6 @@ "retry_failed_shards": true } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git a/infra/config/generated/builders/ci/win11-arm64-rel-tests/shadow-properties.json b/infra/config/generated/builders/ci/win11-arm64-rel-tests/shadow-properties.json deleted file mode 100644 index e70b3b60..0000000 --- a/infra/config/generated/builders/ci/win11-arm64-rel-tests/shadow-properties.json +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git a/infra/config/generated/builders/ci/win11-updater-tester-dbg-uac/properties.json b/infra/config/generated/builders/ci/win11-updater-tester-dbg-uac/properties.json index 1e2bb749..e17cda2a 100644 --- a/infra/config/generated/builders/ci/win11-updater-tester-dbg-uac/properties.json +++ b/infra/config/generated/builders/ci/win11-updater-tester-dbg-uac/properties.json
@@ -65,16 +65,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git a/infra/config/generated/builders/ci/win11-updater-tester-dbg-uac/shadow-properties.json b/infra/config/generated/builders/ci/win11-updater-tester-dbg-uac/shadow-properties.json deleted file mode 100644 index e70b3b60..0000000 --- a/infra/config/generated/builders/ci/win11-updater-tester-dbg-uac/shadow-properties.json +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git a/infra/config/generated/builders/ci/win11-updater-tester-rel/properties.json b/infra/config/generated/builders/ci/win11-updater-tester-rel/properties.json index 45903fe9..a3eb514 100644 --- a/infra/config/generated/builders/ci/win11-updater-tester-rel/properties.json +++ b/infra/config/generated/builders/ci/win11-updater-tester-rel/properties.json
@@ -65,16 +65,6 @@ ] } }, - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-trusted", - "remote_jobs": 250 - }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [], "grouping_keys": [
diff --git a/infra/config/generated/builders/ci/win11-updater-tester-rel/shadow-properties.json b/infra/config/generated/builders/ci/win11-updater-tester-rel/shadow-properties.json deleted file mode 100644 index e70b3b60..0000000 --- a/infra/config/generated/builders/ci/win11-updater-tester-rel/shadow-properties.json +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "$build/siso": { - "configs": [ - "builder" - ], - "enable_cloud_profiler": true, - "enable_cloud_trace": true, - "experiments": [], - "project": "rbe-chromium-untrusted", - "remote_jobs": 250 - } -} \ No newline at end of file
diff --git a/infra/config/generated/luci/cr-buildbucket.cfg b/infra/config/generated/luci/cr-buildbucket.cfg index e2ca3df6..1d99e00 100644 --- a/infra/config/generated/luci/cr-buildbucket.cfg +++ b/infra/config/generated/luci/cr-buildbucket.cfg
@@ -120,7 +120,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/build/Mac13 Tests Siso FYI/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/build/Mac13 Tests Siso FYI/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -2575,7 +2574,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/Android FYI Experimental Release (Pixel 6)/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/Android FYI Experimental Release (Pixel 6)/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -2671,7 +2669,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/Android FYI Release (Motorola Moto G Power 5G)/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/Android FYI Release (Motorola Moto G Power 5G)/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -2767,7 +2764,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/Android FYI Release (NVIDIA Shield TV)/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/Android FYI Release (NVIDIA Shield TV)/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -2863,7 +2859,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/Android FYI Release (Nexus 5X)/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/Android FYI Release (Nexus 5X)/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -2959,7 +2954,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/Android FYI Release (Pixel 2)/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/Android FYI Release (Pixel 2)/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -3055,7 +3049,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/Android FYI Release (Pixel 4)/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/Android FYI Release (Pixel 4)/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -3151,7 +3144,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/Android FYI Release (Pixel 6)/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/Android FYI Release (Pixel 6)/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -3247,7 +3239,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/Android FYI Release (Samsung A13)/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/Android FYI Release (Samsung A13)/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -3342,7 +3333,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/Android FYI Release (Samsung A23)/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/Android FYI Release (Samsung A23)/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -3437,7 +3427,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/Android FYI Release (Samsung S23)/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/Android FYI Release (Samsung S23)/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -3629,7 +3618,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/Android WebView O (dbg)/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/Android WebView O (dbg)/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -3725,7 +3713,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/Android WebView P (dbg)/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/Android WebView P (dbg)/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -5576,7 +5563,7 @@ ' "enable_cloud_profiler": true,' ' "enable_cloud_trace": true,' ' "experiments": [],' - ' "project": "rbe-chromium-untrusted"' + ' "project": "rbe-chromium-untrusted-test"' ' }' '}' dimensions: "free_space:" @@ -6215,7 +6202,7 @@ ' "enable_cloud_profiler": true,' ' "enable_cloud_trace": true,' ' "experiments": [],' - ' "project": "rbe-chromium-untrusted"' + ' "project": "rbe-chromium-untrusted-test"' ' }' '}' dimensions: "free_space:" @@ -6543,7 +6530,7 @@ ' "enable_cloud_profiler": true,' ' "enable_cloud_trace": true,' ' "experiments": [],' - ' "project": "rbe-chromium-untrusted"' + ' "project": "rbe-chromium-untrusted-test"' ' }' '}' dimensions: "free_space:" @@ -7172,7 +7159,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/Dawn Android arm DEPS Release (Nexus 5X)/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/Dawn Android arm DEPS Release (Nexus 5X)/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -7268,7 +7254,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/Dawn Android arm DEPS Release (Pixel 4)/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/Dawn Android arm DEPS Release (Pixel 4)/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -7364,7 +7349,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/Dawn Android arm Release (Nexus 5X)/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/Dawn Android arm Release (Nexus 5X)/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -7460,7 +7444,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/Dawn Android arm Release (Pixel 4)/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/Dawn Android arm Release (Pixel 4)/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -7748,7 +7731,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/Dawn Android arm64 DEPS Release (Pixel 6)/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/Dawn Android arm64 DEPS Release (Pixel 6)/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -7844,7 +7826,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/Dawn Android arm64 Experimental Release (Pixel 6)/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/Dawn Android arm64 Experimental Release (Pixel 6)/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -7940,7 +7921,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/Dawn Android arm64 Release (Pixel 6)/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/Dawn Android arm64 Release (Pixel 6)/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -8036,7 +8016,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/Dawn Android arm64 Release (Samsung S24)/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/Dawn Android arm64 Release (Samsung S24)/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -8420,7 +8399,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/Dawn Linux x64 DEPS Release (Intel UHD 630)/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/Dawn Linux x64 DEPS Release (Intel UHD 630)/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -8516,7 +8494,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/Dawn Linux x64 DEPS Release (NVIDIA)/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/Dawn Linux x64 DEPS Release (NVIDIA)/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -8612,7 +8589,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/Dawn Linux x64 Experimental Release (Intel UHD 630)/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/Dawn Linux x64 Experimental Release (Intel UHD 630)/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -8708,7 +8684,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/Dawn Linux x64 Release (Intel UHD 630)/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/Dawn Linux x64 Release (Intel UHD 630)/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -8804,7 +8779,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/Dawn Linux x64 Release (NVIDIA)/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/Dawn Linux x64 Release (NVIDIA)/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -9088,7 +9062,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/Dawn Mac arm64 DEPS Release (Apple M2)/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/Dawn Mac arm64 DEPS Release (Apple M2)/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -9184,7 +9157,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/Dawn Mac arm64 Experimental Release (Apple M2)/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/Dawn Mac arm64 Experimental Release (Apple M2)/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -9280,7 +9252,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/Dawn Mac arm64 Release (Apple M2)/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/Dawn Mac arm64 Release (Apple M2)/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -9564,7 +9535,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/Dawn Mac x64 DEPS Release (AMD)/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/Dawn Mac x64 DEPS Release (AMD)/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -9660,7 +9630,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/Dawn Mac x64 DEPS Release (Intel)/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/Dawn Mac x64 DEPS Release (Intel)/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -9756,7 +9725,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/Dawn Mac x64 Experimental Release (AMD)/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/Dawn Mac x64 Experimental Release (AMD)/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -9852,7 +9820,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/Dawn Mac x64 Experimental Release (Intel)/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/Dawn Mac x64 Experimental Release (Intel)/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -9948,7 +9915,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/Dawn Mac x64 Release (AMD)/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/Dawn Mac x64 Release (AMD)/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -10044,7 +10010,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/Dawn Mac x64 Release (Intel)/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/Dawn Mac x64 Release (Intel)/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -10236,7 +10201,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/Dawn Win10 x64 ASAN Release (Intel)/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/Dawn Win10 x64 ASAN Release (Intel)/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -10332,7 +10296,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/Dawn Win10 x64 ASAN Release (NVIDIA)/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/Dawn Win10 x64 ASAN Release (NVIDIA)/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -10620,7 +10583,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/Dawn Win10 x64 DEPS Release (Intel)/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/Dawn Win10 x64 DEPS Release (Intel)/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -10716,7 +10678,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/Dawn Win10 x64 DEPS Release (NVIDIA)/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/Dawn Win10 x64 DEPS Release (NVIDIA)/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -10812,7 +10773,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/Dawn Win10 x64 Experimental Release (Intel)/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/Dawn Win10 x64 Experimental Release (Intel)/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -10908,7 +10868,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/Dawn Win10 x64 Experimental Release (NVIDIA)/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/Dawn Win10 x64 Experimental Release (NVIDIA)/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -11004,7 +10963,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/Dawn Win10 x64 Release (Intel)/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/Dawn Win10 x64 Release (Intel)/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -11100,7 +11058,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/Dawn Win10 x64 Release (NVIDIA)/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/Dawn Win10 x64 Release (NVIDIA)/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -11388,7 +11345,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/Dawn Win10 x86 DEPS Release (Intel)/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/Dawn Win10 x86 DEPS Release (Intel)/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -11484,7 +11440,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/Dawn Win10 x86 DEPS Release (NVIDIA)/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/Dawn Win10 x86 DEPS Release (NVIDIA)/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -11580,7 +11535,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/Dawn Win10 x86 Experimental Release (Intel)/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/Dawn Win10 x86 Experimental Release (Intel)/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -11676,7 +11630,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/Dawn Win10 x86 Experimental Release (NVIDIA)/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/Dawn Win10 x86 Experimental Release (NVIDIA)/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -11772,7 +11725,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/Dawn Win10 x86 Release (Intel)/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/Dawn Win10 x86 Release (Intel)/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -11868,7 +11820,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/Dawn Win10 x86 Release (NVIDIA)/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/Dawn Win10 x86 Release (NVIDIA)/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -14729,7 +14680,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/Lacros FYI x64 Release (AMD)/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/Lacros FYI x64 Release (AMD)/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -14825,7 +14775,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/Lacros FYI x64 Release (Intel)/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/Lacros FYI x64 Release (Intel)/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -16618,7 +16567,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/Linux ASan LSan Tests (1)/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/Linux ASan LSan Tests (1)/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -17285,7 +17233,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/Linux Chromium OS ASan LSan Tests (1)/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/Linux Chromium OS ASan LSan Tests (1)/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -17477,7 +17424,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/Linux ChromiumOS MSan Tests/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/Linux ChromiumOS MSan Tests/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -17573,7 +17519,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/Linux Debug (NVIDIA)/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/Linux Debug (NVIDIA)/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -17666,7 +17611,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/Linux FYI Debug (NVIDIA)/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/Linux FYI Debug (NVIDIA)/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -17762,7 +17706,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/Linux FYI Experimental Release (Intel UHD 630)/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/Linux FYI Experimental Release (Intel UHD 630)/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -17858,7 +17801,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/Linux FYI Experimental Release (NVIDIA)/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/Linux FYI Experimental Release (NVIDIA)/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -18050,7 +17992,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/Linux FYI Release (AMD RX 5500 XT)/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/Linux FYI Release (AMD RX 5500 XT)/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -18146,7 +18087,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/Linux FYI Release (Intel UHD 630)/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/Linux FYI Release (Intel UHD 630)/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -18242,7 +18182,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/Linux FYI Release (Intel UHD 770)/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/Linux FYI Release (Intel UHD 770)/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -18338,7 +18277,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/Linux FYI Release (NVIDIA)/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/Linux FYI Release (NVIDIA)/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -18626,7 +18564,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/Linux Release (NVIDIA)/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/Linux Release (NVIDIA)/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -18914,7 +18851,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/Linux Tests/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/Linux Tests/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -19020,7 +18956,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/Linux Tests (Wayland)/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/Linux Tests (Wayland)/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -19116,7 +19051,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/Linux Tests (dbg)(1)/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/Linux Tests (dbg)(1)/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -19778,7 +19712,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/Mac ASan 64 Tests (1)/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/Mac ASan 64 Tests (1)/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -20244,7 +20177,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/Mac Debug (Intel)/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/Mac Debug (Intel)/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -20337,7 +20269,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/Mac FYI ASAN (Intel)/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/Mac FYI ASAN (Intel)/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -20433,7 +20364,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/Mac FYI Debug (Intel)/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/Mac FYI Debug (Intel)/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -20529,7 +20459,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/Mac FYI Experimental Release (Apple M1)/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/Mac FYI Experimental Release (Apple M1)/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -20625,7 +20554,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/Mac FYI Experimental Release (Intel)/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/Mac FYI Experimental Release (Intel)/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -20721,7 +20649,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/Mac FYI Experimental Retina Release (AMD)/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/Mac FYI Experimental Retina Release (AMD)/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -20817,7 +20744,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/Mac FYI Experimental Retina Release (Apple M2)/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/Mac FYI Experimental Retina Release (Apple M2)/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -20913,7 +20839,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/Mac FYI Experimental Retina Release (NVIDIA)/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/Mac FYI Experimental Retina Release (NVIDIA)/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -21009,7 +20934,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/Mac FYI Release (Apple M1)/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/Mac FYI Release (Apple M1)/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -21105,7 +21029,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/Mac FYI Release (Intel)/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/Mac FYI Release (Intel)/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -21201,7 +21124,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/Mac FYI Retina ASAN (AMD)/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/Mac FYI Retina ASAN (AMD)/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -21297,7 +21219,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/Mac FYI Retina Debug (AMD)/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/Mac FYI Retina Debug (AMD)/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -21393,7 +21314,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/Mac FYI Retina Release (AMD)/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/Mac FYI Retina Release (AMD)/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -21489,7 +21409,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/Mac FYI Retina Release (Apple M2)/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/Mac FYI Retina Release (Apple M2)/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -21585,7 +21504,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/Mac FYI Retina Release (NVIDIA)/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/Mac FYI Retina Release (NVIDIA)/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -21681,7 +21599,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/Mac Pro FYI Release (AMD)/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/Mac Pro FYI Release (AMD)/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -21777,7 +21694,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/Mac Release (Intel)/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/Mac Release (Intel)/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -21873,7 +21789,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/Mac Retina Debug (AMD)/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/Mac Retina Debug (AMD)/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -21969,7 +21884,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/Mac Retina Release (AMD)/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/Mac Retina Release (AMD)/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -22247,7 +22161,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/Mac10.15 Tests/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/Mac10.15 Tests/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -22343,7 +22256,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/Mac11 Tests/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/Mac11 Tests/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -22439,7 +22351,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/Mac12 Tests/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/Mac12 Tests/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -22535,7 +22446,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/Mac13 Tests/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/Mac13 Tests/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -22630,7 +22540,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/Mac13 Tests (dbg)/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/Mac13 Tests (dbg)/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -22818,7 +22727,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/Oreo Phone Tester/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/Oreo Phone Tester/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -28347,7 +28255,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/Win10 FYI x64 DX12 Vulkan Debug (NVIDIA)/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/Win10 FYI x64 DX12 Vulkan Debug (NVIDIA)/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -28443,7 +28350,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/Win10 FYI x64 DX12 Vulkan Release (NVIDIA)/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/Win10 FYI x64 DX12 Vulkan Release (NVIDIA)/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -28539,7 +28445,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/Win10 FYI x64 Debug (NVIDIA)/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/Win10 FYI x64 Debug (NVIDIA)/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -28635,7 +28540,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/Win10 FYI x64 Exp Release (NVIDIA)/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/Win10 FYI x64 Exp Release (NVIDIA)/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -28731,7 +28635,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/Win10 FYI x64 Experimental Release (Intel)/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/Win10 FYI x64 Experimental Release (Intel)/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -28827,7 +28730,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/Win10 FYI x64 Release (AMD RX 5500 XT)/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/Win10 FYI x64 Release (AMD RX 5500 XT)/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -28923,7 +28825,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/Win10 FYI x64 Release (Intel UHD 770)/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/Win10 FYI x64 Release (Intel UHD 770)/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -29019,7 +28920,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/Win10 FYI x64 Release (Intel)/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/Win10 FYI x64 Release (Intel)/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -29115,7 +29015,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/Win10 FYI x64 Release (NVIDIA)/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/Win10 FYI x64 Release (NVIDIA)/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -29211,7 +29110,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/Win10 FYI x64 Release XR Perf (NVIDIA)/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/Win10 FYI x64 Release XR Perf (NVIDIA)/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -29306,7 +29204,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/Win10 FYI x86 Release (NVIDIA)/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/Win10 FYI x86 Release (NVIDIA)/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -29590,7 +29487,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/Win10 x64 Debug (NVIDIA)/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/Win10 x64 Debug (NVIDIA)/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -29686,7 +29582,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/Win10 x64 Release (NVIDIA)/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/Win10 x64 Release (NVIDIA)/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -29782,7 +29677,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/Win11 FYI arm64 Release (Qualcomm Adreno 690)/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/Win11 FYI arm64 Release (Qualcomm Adreno 690)/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -29878,7 +29772,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/Win11 Tests x64/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/Win11 Tests x64/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -30375,7 +30268,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/android-12-x64-dbg-tests/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/android-12-x64-dbg-tests/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -31485,16 +31377,6 @@ ' ]' ' }' ' },' - ' "$build/siso": {' - ' "configs": [' - ' "builder"' - ' ],' - ' "enable_cloud_profiler": true,' - ' "enable_cloud_trace": true,' - ' "experiments": [],' - ' "project": "rbe-chromium-trusted",' - ' "remote_jobs": 250' - ' },' ' "$recipe_engine/resultdb/test_presentation": {' ' "column_keys": [],' ' "grouping_keys": [' @@ -31556,19 +31438,6 @@ shadow_builder_adjustments { service_account: "chromium-try-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" pool: "luci.chromium.try" - properties: - '{' - ' "$build/siso": {' - ' "configs": [' - ' "builder"' - ' ],' - ' "enable_cloud_profiler": true,' - ' "enable_cloud_trace": true,' - ' "experiments": [],' - ' "project": "rbe-chromium-untrusted",' - ' "remote_jobs": 250' - ' }' - '}' dimensions: "free_space:" dimensions: "pool:luci.chromium.try" } @@ -34356,7 +34225,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/android-cronet-x64-dbg-12-tests/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/android-cronet-x64-dbg-12-tests/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -34449,7 +34317,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/android-cronet-x64-dbg-13-tests/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/android-cronet-x64-dbg-13-tests/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -34542,7 +34409,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/android-cronet-x64-dbg-14-tests/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/android-cronet-x64-dbg-14-tests/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -34821,7 +34687,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/android-cronet-x86-dbg-10-tests/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/android-cronet-x86-dbg-10-tests/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -34914,7 +34779,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/android-cronet-x86-dbg-11-tests/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/android-cronet-x86-dbg-11-tests/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -35007,7 +34871,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/android-cronet-x86-dbg-lollipop-tests/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/android-cronet-x86-dbg-lollipop-tests/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -35100,7 +34963,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/android-cronet-x86-dbg-marshmallow-tests/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/android-cronet-x86-dbg-marshmallow-tests/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -35193,7 +35055,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/android-cronet-x86-dbg-nougat-tests/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/android-cronet-x86-dbg-nougat-tests/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -35286,7 +35147,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/android-cronet-x86-dbg-oreo-tests/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/android-cronet-x86-dbg-oreo-tests/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -35379,7 +35239,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/android-cronet-x86-dbg-pie-tests/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/android-cronet-x86-dbg-pie-tests/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -36150,7 +36009,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/android-pie-arm64-dbg/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/android-pie-arm64-dbg/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -36995,7 +36853,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/android-webview-10-x86-rel-tests/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/android-webview-10-x86-rel-tests/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -37091,7 +36948,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/android-webview-12-x64-dbg-tests/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/android-webview-12-x64-dbg-tests/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -37184,7 +37040,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/android-webview-13-x64-dbg-tests/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/android-webview-13-x64-dbg-tests/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -38327,7 +38182,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/chromeos-amd64-generic-rel-gtest/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/chromeos-amd64-generic-rel-gtest/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -38423,7 +38277,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/chromeos-amd64-generic-rel-tast/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/chromeos-amd64-generic-rel-tast/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -40410,16 +40263,6 @@ ' ]' ' }' ' },' - ' "$build/siso": {' - ' "configs": [' - ' "builder"' - ' ],' - ' "enable_cloud_profiler": true,' - ' "enable_cloud_trace": true,' - ' "experiments": [],' - ' "project": "rbe-chromium-trusted",' - ' "remote_jobs": 250' - ' },' ' "$recipe_engine/resultdb/test_presentation": {' ' "column_keys": [],' ' "grouping_keys": [' @@ -40481,19 +40324,6 @@ shadow_builder_adjustments { service_account: "chromium-try-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" pool: "luci.chromium.try" - properties: - '{' - ' "$build/siso": {' - ' "configs": [' - ' "builder"' - ' ],' - ' "enable_cloud_profiler": true,' - ' "enable_cloud_trace": true,' - ' "experiments": [],' - ' "project": "rbe-chromium-untrusted",' - ' "remote_jobs": 250' - ' }' - '}' dimensions: "free_space:" dimensions: "pool:luci.chromium.try" } @@ -42349,7 +42179,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/lacros-amd64-generic-rel-gtest/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/lacros-amd64-generic-rel-gtest/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -42541,7 +42370,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/lacros-amd64-generic-rel-tast/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/lacros-amd64-generic-rel-tast/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -43692,16 +43520,6 @@ ' ]' ' }' ' },' - ' "$build/siso": {' - ' "configs": [' - ' "builder"' - ' ],' - ' "enable_cloud_profiler": true,' - ' "enable_cloud_trace": true,' - ' "experiments": [],' - ' "project": "rbe-chromium-trusted",' - ' "remote_jobs": 250' - ' },' ' "$recipe_engine/resultdb/test_presentation": {' ' "column_keys": [],' ' "grouping_keys": [' @@ -43763,19 +43581,6 @@ shadow_builder_adjustments { service_account: "chromium-try-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" pool: "luci.chromium.try" - properties: - '{' - ' "$build/siso": {' - ' "configs": [' - ' "builder"' - ' ],' - ' "enable_cloud_profiler": true,' - ' "enable_cloud_trace": true,' - ' "experiments": [],' - ' "project": "rbe-chromium-untrusted",' - ' "remote_jobs": 250' - ' }' - '}' dimensions: "free_space:" dimensions: "pool:luci.chromium.try" } @@ -43879,16 +43684,6 @@ ' ]' ' }' ' },' - ' "$build/siso": {' - ' "configs": [' - ' "builder"' - ' ],' - ' "enable_cloud_profiler": true,' - ' "enable_cloud_trace": true,' - ' "experiments": [],' - ' "project": "rbe-chromium-trusted",' - ' "remote_jobs": 250' - ' },' ' "$recipe_engine/resultdb/test_presentation": {' ' "column_keys": [],' ' "grouping_keys": [' @@ -43950,19 +43745,6 @@ shadow_builder_adjustments { service_account: "chromium-try-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" pool: "luci.chromium.try" - properties: - '{' - ' "$build/siso": {' - ' "configs": [' - ' "builder"' - ' ],' - ' "enable_cloud_profiler": true,' - ' "enable_cloud_trace": true,' - ' "experiments": [],' - ' "project": "rbe-chromium-untrusted",' - ' "remote_jobs": 250' - ' }' - '}' dimensions: "free_space:" dimensions: "pool:luci.chromium.try" } @@ -46181,7 +45963,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/linux-gcc-rel/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/linux-gcc-rel/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -47487,7 +47268,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/linux-lacros-tester-rel/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/linux-lacros-tester-rel/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -49377,7 +49157,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/linux-updater-tester-dbg/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/linux-updater-tester-dbg/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -49469,7 +49248,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/linux-updater-tester-rel/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/linux-updater-tester-rel/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -50476,16 +50254,6 @@ ' ]' ' }' ' },' - ' "$build/siso": {' - ' "configs": [' - ' "builder"' - ' ],' - ' "enable_cloud_profiler": true,' - ' "enable_cloud_trace": true,' - ' "experiments": [],' - ' "project": "rbe-chromium-trusted",' - ' "remote_jobs": 250' - ' },' ' "$recipe_engine/resultdb/test_presentation": {' ' "column_keys": [],' ' "grouping_keys": [' @@ -50547,19 +50315,6 @@ shadow_builder_adjustments { service_account: "chromium-try-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" pool: "luci.chromium.try" - properties: - '{' - ' "$build/siso": {' - ' "configs": [' - ' "builder"' - ' ],' - ' "enable_cloud_profiler": true,' - ' "enable_cloud_trace": true,' - ' "experiments": [],' - ' "project": "rbe-chromium-untrusted",' - ' "remote_jobs": 250' - ' }' - '}' dimensions: "free_space:" dimensions: "pool:luci.chromium.try" } @@ -50913,16 +50668,6 @@ ' ]' ' }' ' },' - ' "$build/siso": {' - ' "configs": [' - ' "builder"' - ' ],' - ' "enable_cloud_profiler": true,' - ' "enable_cloud_trace": true,' - ' "experiments": [],' - ' "project": "rbe-chromium-trusted",' - ' "remote_jobs": 250' - ' },' ' "$recipe_engine/resultdb/test_presentation": {' ' "column_keys": [],' ' "grouping_keys": [' @@ -50984,19 +50729,6 @@ shadow_builder_adjustments { service_account: "chromium-try-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" pool: "luci.chromium.try" - properties: - '{' - ' "$build/siso": {' - ' "configs": [' - ' "builder"' - ' ],' - ' "enable_cloud_profiler": true,' - ' "enable_cloud_trace": true,' - ' "experiments": [],' - ' "project": "rbe-chromium-untrusted",' - ' "remote_jobs": 250' - ' }' - '}' dimensions: "free_space:" dimensions: "pool:luci.chromium.try" } @@ -53050,7 +52782,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/mac10.15-updater-tester-dbg/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/mac10.15-updater-tester-dbg/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -53142,7 +52873,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/mac10.15-updater-tester-rel/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/mac10.15-updater-tester-rel/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -53325,7 +53055,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/mac11-arm64-rel-tests/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/mac11-arm64-rel-tests/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -53421,7 +53150,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/mac11-arm64-updater-tester-dbg/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/mac11-arm64-updater-tester-dbg/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -53512,7 +53240,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/mac11-arm64-updater-tester-rel/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/mac11-arm64-updater-tester-rel/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -53785,7 +53512,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/mac11-x64-updater-tester-dbg/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/mac11-x64-updater-tester-dbg/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -53876,7 +53602,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/mac11-x64-updater-tester-rel/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/mac11-x64-updater-tester-rel/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -53967,7 +53692,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/mac12-arm64-rel-tests/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/mac12-arm64-rel-tests/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -54063,7 +53787,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/mac12-arm64-updater-tester-rel/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/mac12-arm64-updater-tester-rel/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -54336,7 +54059,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/mac12-x64-updater-tester-asan-dbg/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/mac12-x64-updater-tester-asan-dbg/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -54427,7 +54149,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/mac13-arm64-rel-tests/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/mac13-arm64-rel-tests/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -54523,7 +54244,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/mac13-arm64-updater-tester-dbg/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/mac13-arm64-updater-tester-dbg/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -54796,7 +54516,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/mac13-x64-updater-tester-rel/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/mac13-x64-updater-tester-rel/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -57643,7 +57362,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/win10-32-on-64-updater-tester-dbg/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/win10-32-on-64-updater-tester-dbg/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -57734,7 +57452,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/win10-32-on-64-updater-tester-rel/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/win10-32-on-64-updater-tester-rel/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -57895,16 +57612,6 @@ ' ]' ' }' ' },' - ' "$build/siso": {' - ' "configs": [' - ' "builder"' - ' ],' - ' "enable_cloud_profiler": true,' - ' "enable_cloud_trace": true,' - ' "experiments": [],' - ' "project": "rbe-chromium-trusted",' - ' "remote_jobs": 250' - ' },' ' "$recipe_engine/resultdb/test_presentation": {' ' "column_keys": [],' ' "grouping_keys": [' @@ -57966,19 +57673,6 @@ shadow_builder_adjustments { service_account: "chromium-try-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" pool: "luci.chromium.try" - properties: - '{' - ' "$build/siso": {' - ' "configs": [' - ' "builder"' - ' ],' - ' "enable_cloud_profiler": true,' - ' "enable_cloud_trace": true,' - ' "experiments": [],' - ' "project": "rbe-chromium-untrusted",' - ' "remote_jobs": 250' - ' }' - '}' dimensions: "free_space:" dimensions: "pool:luci.chromium.try" } @@ -58082,16 +57776,6 @@ ' ]' ' }' ' },' - ' "$build/siso": {' - ' "configs": [' - ' "builder"' - ' ],' - ' "enable_cloud_profiler": true,' - ' "enable_cloud_trace": true,' - ' "experiments": [],' - ' "project": "rbe-chromium-trusted",' - ' "remote_jobs": 250' - ' },' ' "$recipe_engine/resultdb/test_presentation": {' ' "column_keys": [],' ' "grouping_keys": [' @@ -58153,19 +57837,6 @@ shadow_builder_adjustments { service_account: "chromium-try-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" pool: "luci.chromium.try" - properties: - '{' - ' "$build/siso": {' - ' "configs": [' - ' "builder"' - ' ],' - ' "enable_cloud_profiler": true,' - ' "enable_cloud_trace": true,' - ' "experiments": [],' - ' "project": "rbe-chromium-untrusted",' - ' "remote_jobs": 250' - ' }' - '}' dimensions: "free_space:" dimensions: "pool:luci.chromium.try" } @@ -58478,7 +58149,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/win10-updater-tester-dbg/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/win10-updater-tester-dbg/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -58570,7 +58240,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/win10-updater-tester-dbg-uac/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/win10-updater-tester-dbg-uac/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -58661,7 +58330,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/win10-updater-tester-rel/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/win10-updater-tester-rel/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -58753,7 +58421,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/win10-updater-tester-rel-uac/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/win10-updater-tester-rel-uac/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -58938,7 +58605,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/win11-arm64-dbg-tests/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/win11-arm64-dbg-tests/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -59031,7 +58697,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/win11-arm64-rel-tests/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/win11-arm64-rel-tests/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -59127,7 +58792,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/win11-updater-tester-dbg-uac/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/win11-updater-tester-dbg-uac/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -59218,7 +58882,6 @@ ' },' ' "$bootstrap/properties": {' ' "properties_file": "infra/config/generated/builders/ci/win11-updater-tester-rel/properties.json",' - ' "shadow_properties_file": "infra/config/generated/builders/ci/win11-updater-tester-rel/shadow-properties.json",' ' "top_level_project": {' ' "ref": "refs/heads/main",' ' "repo": {' @@ -61110,6 +60773,15 @@ ' "jobs": 500,' ' "metrics_project": "chromium-reclient-metrics",' ' "scandeps_server": true' + ' },' + ' "$build/siso": {' + ' "configs": [' + ' "builder"' + ' ],' + ' "enable_cloud_profiler": true,' + ' "enable_cloud_trace": true,' + ' "experiments": [],' + ' "project": "rbe-chromium-untrusted-test"' ' }' '}' } @@ -106502,15 +106174,6 @@ } properties: '{' - ' "$build/siso": {' - ' "configs": [' - ' "builder"' - ' ],' - ' "enable_cloud_profiler": true,' - ' "enable_cloud_trace": true,' - ' "experiments": [],' - ' "project": "rbe-chromium-untrusted"' - ' },' ' "$recipe_engine/resultdb/test_presentation": {' ' "column_keys": [],' ' "grouping_keys": [' @@ -106591,15 +106254,6 @@ } properties: '{' - ' "$build/siso": {' - ' "configs": [' - ' "builder"' - ' ],' - ' "enable_cloud_profiler": true,' - ' "enable_cloud_trace": true,' - ' "experiments": [],' - ' "project": "rbe-chromium-untrusted"' - ' },' ' "$recipe_engine/resultdb/test_presentation": {' ' "column_keys": [],' ' "grouping_keys": ['
diff --git a/infra/config/generated/luci/project.cfg b/infra/config/generated/luci/project.cfg index a193d43..2dc5849 100644 --- a/infra/config/generated/luci/project.cfg +++ b/infra/config/generated/luci/project.cfg
@@ -7,7 +7,7 @@ name: "chromium" access: "group:all" lucicfg { - version: "1.43.6" + version: "1.43.5" package_dir: "../.." config_dir: "generated/luci" entry_point: "main.star"
diff --git a/infra/config/generated/testing/variants.pyl b/infra/config/generated/testing/variants.pyl index 35519e72..2c76d32 100644 --- a/infra/config/generated/testing/variants.pyl +++ b/infra/config/generated/testing/variants.pyl
@@ -299,16 +299,16 @@ }, 'LACROS_VERSION_SKEW_STABLE': { 'identifier': 'Lacros version skew testing ash stable', - 'description': 'Run with ash-chrome version 123.0.6312.112', + 'description': 'Run with ash-chrome version 123.0.6312.132', 'args': [ - '--ash-chrome-path-override=../../lacros_version_skew_tests_v123.0.6312.112/test_ash_chrome', + '--ash-chrome-path-override=../../lacros_version_skew_tests_v123.0.6312.132/test_ash_chrome', ], 'swarming': { 'cipd_packages': [ { 'cipd_package': 'chromium/testing/linux-ash-chromium/x86_64/ash.zip', - 'location': 'lacros_version_skew_tests_v123.0.6312.112', - 'revision': 'version:123.0.6312.112', + 'location': 'lacros_version_skew_tests_v123.0.6312.132', + 'revision': 'version:123.0.6312.132', }, ], },
diff --git a/infra/config/lib/builders.star b/infra/config/lib/builders.star index 724fcaf..c59421e 100644 --- a/infra/config/lib/builders.star +++ b/infra/config/lib/builders.star
@@ -111,13 +111,6 @@ ), ) -siso = struct( - project = struct( - DEFAULT_TRUSTED = reclient.instance.DEFAULT_TRUSTED, - DEFAULT_UNTRUSTED = reclient.instance.DEFAULT_UNTRUSTED, - ), -) - def _rotation(name): return branches.value( branch_selector = branches.selector.MAIN, @@ -365,7 +358,6 @@ reclient_disable_bq_upload = None, siso_enabled = None, siso_configs = ["builder"], - siso_project = None, siso_enable_cloud_profiler = True, siso_enable_cloud_trace = True, siso_experiments = [], @@ -378,7 +370,6 @@ shadow_pool = None, shadow_service_account = None, shadow_reclient_instance = None, - shadow_siso_project = None, # Provide vars for bucket and executable so users don't have to # unnecessarily make wrapper functions @@ -443,7 +434,6 @@ reclient_disable_bq_upload = None, siso_enabled = args.DEFAULT, siso_configs = args.DEFAULT, - siso_project = args.DEFAULT, siso_enable_cloud_profiler = args.DEFAULT, siso_enable_cloud_trace = args.DEFAULT, siso_experiments = args.DEFAULT, @@ -455,7 +445,6 @@ shadow_pool = args.DEFAULT, shadow_service_account = args.DEFAULT, shadow_reclient_instance = args.DEFAULT, - shadow_siso_project = args.DEFAULT, gn_args = None, targets = None, contact_team_email = args.DEFAULT, @@ -647,8 +636,6 @@ be used at compile step. siso_configs: a list of siso configs to enable. available values are defined in //build/config/siso/config.star. - siso_project: a string indicating the GCP project hosting the RBE - instance and other Cloud services. e.g. logging, trace etc. siso_enable_cloud_profiler: If True, enable cloud profiler in siso. siso_enable_cloud_trace: If True, enable cloud trace in siso. siso_experiments: a list of experiment flags for siso. @@ -674,9 +661,6 @@ use this as the reclient instance instead of reclient_instance. The other reclient_* values will continue to be used for the shadow build. - shadow_siso_project: If set, then led builds for this builder will - use this as the siso project instead of siso_project. The other - siso_* values will continue to be used for the shadow build. gn_args: If set, the GN args config to use for the builder. It can be set to the name of a predeclared config or an unnamed gn_args.config declaration for an unphased config. A builder can use @@ -837,8 +821,11 @@ ensure_verified = reclient_ensure_verified, disable_bq_upload = reclient_disable_bq_upload, ) + rbe_project = None + shadow_rbe_project = None if reclient != None: properties["$build/reclient"] = reclient + rbe_project = reclient["instance"] shadow_reclient_instance = defaults.get_value("shadow_reclient_instance", shadow_reclient_instance) shadow_reclient = _reclient_property( instance = shadow_reclient_instance, @@ -855,24 +842,23 @@ ) if shadow_reclient: shadow_properties["$build/reclient"] = shadow_reclient - - siso_project = defaults.get_value("siso_project", siso_project) - use_siso = defaults.get_value("siso_enabled", siso_enabled) and siso_project + shadow_rbe_project = shadow_reclient["instance"] + use_siso = defaults.get_value("siso_enabled", siso_enabled) and rbe_project if use_siso: siso = { "configs": defaults.get_value("siso_configs", siso_configs), "enable_cloud_profiler": defaults.get_value("siso_enable_cloud_profiler", siso_enable_cloud_profiler), "enable_cloud_trace": defaults.get_value("siso_enable_cloud_trace", siso_enable_cloud_trace), "experiments": defaults.get_value("siso_experiments", siso_experiments), - "project": siso_project, + "project": rbe_project, } remote_jobs = defaults.get_value("siso_remote_jobs", siso_remote_jobs) if remote_jobs: siso["remote_jobs"] = remote_jobs properties["$build/siso"] = siso - if defaults.get_value("shadow_siso_project", shadow_siso_project): + if shadow_rbe_project: shadow_siso = dict(siso) - shadow_siso["project"] = defaults.get_value("shadow_siso_project", shadow_siso_project) + shadow_siso["project"] = shadow_rbe_project shadow_properties["$build/siso"] = shadow_siso pgo = _pgo_property(
diff --git a/infra/config/subprojects/build/build.fyi.star b/infra/config/subprojects/build/build.fyi.star index 71b47b5..fd0557a 100644 --- a/infra/config/subprojects/build/build.fyi.star +++ b/infra/config/subprojects/build/build.fyi.star
@@ -4,7 +4,7 @@ """Definitions of builders in chromium.build.fyi builder group.""" load("//lib/builder_config.star", "builder_config") -load("//lib/builders.star", "cpu", "os", "reclient", "siso") +load("//lib/builders.star", "cpu", "os", "reclient") load("//lib/ci.star", "ci") load("//lib/consoles.star", "consoles") @@ -22,10 +22,9 @@ reclient_instance = reclient.instance.DEFAULT_TRUSTED, reclient_jobs = reclient.jobs.DEFAULT, service_account = ci.DEFAULT_SERVICE_ACCOUNT, + shadow_reclient_instance = reclient.instance.DEFAULT_UNTRUSTED, shadow_service_account = ci.DEFAULT_SHADOW_SERVICE_ACCOUNT, - shadow_siso_project = siso.project.DEFAULT_UNTRUSTED, siso_enabled = True, - siso_project = siso.project.DEFAULT_TRUSTED, ) consoles.console_view(
diff --git a/infra/config/subprojects/build/build.star b/infra/config/subprojects/build/build.star index a18e8d16..0cdcff16 100644 --- a/infra/config/subprojects/build/build.star +++ b/infra/config/subprojects/build/build.star
@@ -7,7 +7,7 @@ load("//lib/builder_config.star", "builder_config") load("//lib/builder_url.star", "linkify_builder") -load("//lib/builders.star", "cpu", "os", "reclient", "siso") +load("//lib/builders.star", "cpu", "os", "reclient") load("//lib/ci.star", "ci") load("//lib/consoles.star", "consoles") load("//lib/gn_args.star", "gn_args") @@ -101,7 +101,6 @@ description_html = description_html + "<br>Build stats is show in http://shortn/_gaAdI3x6o6.", reclient_jobs = reclient.jobs.HIGH_JOBS_FOR_CQ, reclient_instance = reclient.instance.DEFAULT_UNTRUSTED, - siso_project = siso.project.DEFAULT_UNTRUSTED, use_clang_coverage = True, **kwargs ) @@ -488,7 +487,6 @@ description_html = description_html + "<br>Build stats is show in http://shortn/_gaAdI3x6o6.", executable = "recipe:chrome_build/build_perf_developer", reclient_instance = reclient.instance.DEFAULT_UNTRUSTED, - siso_project = siso.project.DEFAULT_UNTRUSTED, siso_configs = ["remote-library-link", "remote-exec-link"], shadow_reclient_instance = None, **kwargs
diff --git a/infra/config/subprojects/chromium/ci.star b/infra/config/subprojects/chromium/ci.star index a985e16..744662b 100644 --- a/infra/config/subprojects/chromium/ci.star +++ b/infra/config/subprojects/chromium/ci.star
@@ -3,7 +3,7 @@ # found in the LICENSE file. load("//lib/branches.star", "branches") -load("//lib/builders.star", "builders", "cpu", "reclient", "siso") +load("//lib/builders.star", "builders", "cpu", "reclient") load("//lib/ci.star", "ci") load("//lib/consoles.star", "consoles") load("//project.star", "settings") @@ -19,7 +19,6 @@ shadow_free_space = None, shadow_pool = "luci.chromium.try", shadow_reclient_instance = reclient.instance.DEFAULT_UNTRUSTED, - shadow_siso_project = siso.project.DEFAULT_UNTRUSTED, ) luci.bucket(
diff --git a/infra/config/subprojects/chromium/ci/chromium.accessibility.star b/infra/config/subprojects/chromium/ci/chromium.accessibility.star index 88025f7..ff14fe9c 100644 --- a/infra/config/subprojects/chromium/ci/chromium.accessibility.star +++ b/infra/config/subprojects/chromium/ci/chromium.accessibility.star
@@ -6,7 +6,7 @@ load("//lib/branches.star", "branches") load("//lib/builder_config.star", "builder_config") load("//lib/builder_health_indicators.star", "health_spec") -load("//lib/builders.star", "os", "reclient", "siso") +load("//lib/builders.star", "os", "reclient") load("//lib/ci.star", "ci") load("//lib/consoles.star", "consoles") load("//lib/gn_args.star", "gn_args") @@ -26,7 +26,6 @@ service_account = ci.DEFAULT_SERVICE_ACCOUNT, shadow_service_account = ci.DEFAULT_SHADOW_SERVICE_ACCOUNT, siso_enabled = True, - siso_project = siso.project.DEFAULT_TRUSTED, siso_remote_jobs = reclient.jobs.DEFAULT, )
diff --git a/infra/config/subprojects/chromium/ci/chromium.android.fyi.star b/infra/config/subprojects/chromium/ci/chromium.android.fyi.star index 657f21b..fede56f 100644 --- a/infra/config/subprojects/chromium/ci/chromium.android.fyi.star +++ b/infra/config/subprojects/chromium/ci/chromium.android.fyi.star
@@ -4,7 +4,7 @@ """Definitions of builders in the chromium.android.fyi builder group.""" load("//lib/builder_config.star", "builder_config") -load("//lib/builders.star", "os", "reclient", "siso") +load("//lib/builders.star", "os", "reclient") load("//lib/ci.star", "ci") load("//lib/consoles.star", "consoles") load("//lib/gn_args.star", "gn_args") @@ -24,7 +24,6 @@ service_account = ci.DEFAULT_SERVICE_ACCOUNT, shadow_service_account = ci.DEFAULT_SHADOW_SERVICE_ACCOUNT, siso_enabled = True, - siso_project = siso.project.DEFAULT_TRUSTED, siso_remote_jobs = reclient.jobs.DEFAULT, )
diff --git a/infra/config/subprojects/chromium/ci/chromium.android.star b/infra/config/subprojects/chromium/ci/chromium.android.star index 07f4e63..f1b7efd 100644 --- a/infra/config/subprojects/chromium/ci/chromium.android.star +++ b/infra/config/subprojects/chromium/ci/chromium.android.star
@@ -6,7 +6,7 @@ load("//lib/args.star", "args") load("//lib/builder_config.star", "builder_config") load("//lib/builder_health_indicators.star", "health_spec") -load("//lib/builders.star", "builders", "os", "reclient", "sheriff_rotations", "siso") +load("//lib/builders.star", "builders", "os", "reclient", "sheriff_rotations") load("//lib/branches.star", "branches") load("//lib/ci.star", "ci") load("//lib/consoles.star", "consoles") @@ -26,7 +26,6 @@ service_account = ci.DEFAULT_SERVICE_ACCOUNT, shadow_service_account = ci.DEFAULT_SHADOW_SERVICE_ACCOUNT, siso_enabled = True, - siso_project = siso.project.DEFAULT_TRUSTED, siso_remote_jobs = reclient.jobs.HIGH_JOBS_FOR_CI, )
diff --git a/infra/config/subprojects/chromium/ci/chromium.angle.star b/infra/config/subprojects/chromium/ci/chromium.angle.star index e10bdd7..cc6ce8a6 100644 --- a/infra/config/subprojects/chromium/ci/chromium.angle.star +++ b/infra/config/subprojects/chromium/ci/chromium.angle.star
@@ -3,7 +3,7 @@ # found in the LICENSE file. """Definitions of builders in the chromium.angle builder group.""" -load("//lib/builders.star", "os", "reclient", "sheriff_rotations", "siso") +load("//lib/builders.star", "os", "reclient", "sheriff_rotations") load("//lib/builder_config.star", "builder_config") load("//lib/builder_health_indicators.star", "health_spec") load("//lib/ci.star", "ci") @@ -26,7 +26,6 @@ service_account = ci.gpu.SERVICE_ACCOUNT, shadow_service_account = ci.gpu.SHADOW_SERVICE_ACCOUNT, siso_enabled = True, - siso_project = siso.project.DEFAULT_TRUSTED, siso_remote_jobs = reclient.jobs.DEFAULT, thin_tester_cores = 2, )
diff --git a/infra/config/subprojects/chromium/ci/chromium.cft.star b/infra/config/subprojects/chromium/ci/chromium.cft.star index a3125271..29f3d095 100644 --- a/infra/config/subprojects/chromium/ci/chromium.cft.star +++ b/infra/config/subprojects/chromium/ci/chromium.cft.star
@@ -5,7 +5,7 @@ load("//lib/builder_config.star", "builder_config") load("//lib/builder_health_indicators.star", "health_spec") -load("//lib/builders.star", "os", "reclient", "sheriff_rotations", "siso") +load("//lib/builders.star", "os", "reclient", "sheriff_rotations") load("//lib/ci.star", "ci") load("//lib/consoles.star", "consoles") load("//lib/gn_args.star", "gn_args") @@ -25,7 +25,6 @@ service_account = ci.DEFAULT_SERVICE_ACCOUNT, shadow_service_account = ci.DEFAULT_SHADOW_SERVICE_ACCOUNT, siso_enabled = True, - siso_project = siso.project.DEFAULT_TRUSTED, siso_remote_jobs = reclient.jobs.HIGH_JOBS_FOR_CI, )
diff --git a/infra/config/subprojects/chromium/ci/chromium.chromiumos.star b/infra/config/subprojects/chromium/ci/chromium.chromiumos.star index 2310af6..06989cd 100644 --- a/infra/config/subprojects/chromium/ci/chromium.chromiumos.star +++ b/infra/config/subprojects/chromium/ci/chromium.chromiumos.star
@@ -7,7 +7,7 @@ load("//lib/branches.star", "branches") load("//lib/builder_config.star", "builder_config") load("//lib/builder_health_indicators.star", "health_spec") -load("//lib/builders.star", "os", "reclient", "sheriff_rotations", "siso") +load("//lib/builders.star", "os", "reclient", "sheriff_rotations") load("//lib/ci.star", "ci") load("//lib/consoles.star", "consoles") load("//lib/gn_args.star", "gn_args") @@ -33,7 +33,6 @@ service_account = ci.DEFAULT_SERVICE_ACCOUNT, shadow_service_account = ci.DEFAULT_SHADOW_SERVICE_ACCOUNT, siso_enabled = True, - siso_project = siso.project.DEFAULT_TRUSTED, siso_remote_jobs = reclient.jobs.DEFAULT, )
diff --git a/infra/config/subprojects/chromium/ci/chromium.clang.star b/infra/config/subprojects/chromium/ci/chromium.clang.star index c998073..7f22e10 100644 --- a/infra/config/subprojects/chromium/ci/chromium.clang.star +++ b/infra/config/subprojects/chromium/ci/chromium.clang.star
@@ -7,7 +7,7 @@ load("//lib/builder_config.star", "builder_config") load("//lib/builder_health_indicators.star", "health_spec") load("//lib/builder_url.star", "linkify_builder") -load("//lib/builders.star", "builders", "os", "reclient", "sheriff_rotations", "siso") +load("//lib/builders.star", "builders", "os", "reclient", "sheriff_rotations") load("//lib/branches.star", "branches") load("//lib/ci.star", "ci") load("//lib/consoles.star", "consoles") @@ -150,7 +150,6 @@ reclient_instance = reclient.instance.DEFAULT_TRUSTED, reclient_jobs = reclient.jobs.DEFAULT, siso_enabled = True, - siso_project = siso.project.DEFAULT_TRUSTED, siso_remote_jobs = reclient.jobs.DEFAULT, )
diff --git a/infra/config/subprojects/chromium/ci/chromium.coverage.star b/infra/config/subprojects/chromium/ci/chromium.coverage.star index 5e5f446..e3746dea 100644 --- a/infra/config/subprojects/chromium/ci/chromium.coverage.star +++ b/infra/config/subprojects/chromium/ci/chromium.coverage.star
@@ -4,7 +4,7 @@ load("//lib/branches.star", "branches") load("//lib/builder_config.star", "builder_config") -load("//lib/builders.star", "cpu", "os", "reclient", "siso") +load("//lib/builders.star", "cpu", "os", "reclient") load("//lib/ci.star", "ci") load("//lib/consoles.star", "consoles") load("//lib/gn_args.star", "gn_args") @@ -39,7 +39,6 @@ service_account = ci.DEFAULT_SERVICE_ACCOUNT, shadow_service_account = ci.DEFAULT_SHADOW_SERVICE_ACCOUNT, siso_enabled = True, - siso_project = siso.project.DEFAULT_TRUSTED, siso_remote_jobs = reclient.jobs.DEFAULT, )
diff --git a/infra/config/subprojects/chromium/ci/chromium.dawn.star b/infra/config/subprojects/chromium/ci/chromium.dawn.star index 9870db6..6f460b3 100644 --- a/infra/config/subprojects/chromium/ci/chromium.dawn.star +++ b/infra/config/subprojects/chromium/ci/chromium.dawn.star
@@ -6,7 +6,7 @@ load("//lib/branches.star", "branches") load("//lib/builder_config.star", "builder_config") load("//lib/builder_health_indicators.star", "health_spec") -load("//lib/builders.star", "reclient", "sheriff_rotations", "siso") +load("//lib/builders.star", "reclient", "sheriff_rotations") load("//lib/ci.star", "ci") load("//lib/consoles.star", "consoles") load("//lib/gn_args.star", "gn_args") @@ -24,7 +24,6 @@ service_account = ci.gpu.SERVICE_ACCOUNT, shadow_service_account = ci.gpu.SHADOW_SERVICE_ACCOUNT, siso_enabled = True, - siso_project = siso.project.DEFAULT_TRUSTED, siso_remote_jobs = reclient.jobs.DEFAULT, thin_tester_cores = 2, )
diff --git a/infra/config/subprojects/chromium/ci/chromium.fuchsia.fyi.star b/infra/config/subprojects/chromium/ci/chromium.fuchsia.fyi.star index 781e0e8bc..6d10b8e 100644 --- a/infra/config/subprojects/chromium/ci/chromium.fuchsia.fyi.star +++ b/infra/config/subprojects/chromium/ci/chromium.fuchsia.fyi.star
@@ -5,7 +5,7 @@ load("//lib/branches.star", "branches") load("//lib/builder_config.star", "builder_config") -load("//lib/builders.star", "os", "reclient", "sheriff_rotations", "siso") +load("//lib/builders.star", "os", "reclient", "sheriff_rotations") load("//lib/ci.star", "ci") load("//lib/consoles.star", "consoles") load("//lib/gn_args.star", "gn_args") @@ -26,7 +26,6 @@ service_account = ci.DEFAULT_SERVICE_ACCOUNT, shadow_service_account = ci.DEFAULT_SHADOW_SERVICE_ACCOUNT, siso_enabled = True, - siso_project = siso.project.DEFAULT_TRUSTED, siso_remote_jobs = reclient.jobs.DEFAULT, )
diff --git a/infra/config/subprojects/chromium/ci/chromium.fuchsia.star b/infra/config/subprojects/chromium/ci/chromium.fuchsia.star index 345029c..530e162 100644 --- a/infra/config/subprojects/chromium/ci/chromium.fuchsia.star +++ b/infra/config/subprojects/chromium/ci/chromium.fuchsia.star
@@ -6,7 +6,7 @@ load("//lib/branches.star", "branches") load("//lib/builder_config.star", "builder_config") load("//lib/builder_health_indicators.star", "health_spec") -load("//lib/builders.star", "free_space", "os", "reclient", "sheriff_rotations", "siso") +load("//lib/builders.star", "free_space", "os", "reclient", "sheriff_rotations") load("//lib/ci.star", "ci") load("//lib/consoles.star", "consoles") load("//lib/gn_args.star", "gn_args") @@ -29,7 +29,6 @@ service_account = ci.DEFAULT_SERVICE_ACCOUNT, shadow_service_account = ci.DEFAULT_SHADOW_SERVICE_ACCOUNT, siso_enabled = True, - siso_project = siso.project.DEFAULT_TRUSTED, siso_remote_jobs = reclient.jobs.HIGH_JOBS_FOR_CI, )
diff --git a/infra/config/subprojects/chromium/ci/chromium.fuzz.star b/infra/config/subprojects/chromium/ci/chromium.fuzz.star index ffedb57..5aa13e3 100644 --- a/infra/config/subprojects/chromium/ci/chromium.fuzz.star +++ b/infra/config/subprojects/chromium/ci/chromium.fuzz.star
@@ -6,7 +6,7 @@ load("//lib/args.star", "args") load("//lib/builder_config.star", "builder_config") load("//lib/builder_health_indicators.star", "health_spec") -load("//lib/builders.star", "builders", "os", "reclient", "sheriff_rotations", "siso") +load("//lib/builders.star", "builders", "os", "reclient", "sheriff_rotations") load("//lib/ci.star", "ci") load("//lib/consoles.star", "consoles") load("//lib/gn_args.star", "gn_args") @@ -27,7 +27,6 @@ service_account = ci.DEFAULT_SERVICE_ACCOUNT, shadow_service_account = ci.DEFAULT_SHADOW_SERVICE_ACCOUNT, siso_enabled = True, - siso_project = siso.project.DEFAULT_TRUSTED, siso_remote_jobs = reclient.jobs.DEFAULT, )
diff --git a/infra/config/subprojects/chromium/ci/chromium.fyi.star b/infra/config/subprojects/chromium/ci/chromium.fyi.star index ee9e044..fc64e7a1 100644 --- a/infra/config/subprojects/chromium/ci/chromium.fyi.star +++ b/infra/config/subprojects/chromium/ci/chromium.fyi.star
@@ -1440,7 +1440,6 @@ reclient_jobs = reclient.jobs.HIGH_JOBS_FOR_CQ, shadow_reclient_instance = reclient.instance.TEST_UNTRUSTED, siso_enabled = True, - siso_project = reclient.instance.TEST_UNTRUSTED, ) fyi_mac_reclient_comparison_builder( @@ -1487,7 +1486,6 @@ reclient_jobs = reclient.jobs.HIGH_JOBS_FOR_CQ, shadow_reclient_instance = reclient.instance.TEST_UNTRUSTED, siso_enabled = True, - siso_project = reclient.instance.TEST_UNTRUSTED, ) fyi_reclient_comparison_builder( @@ -1510,7 +1508,6 @@ reclient_jobs = reclient.jobs.HIGH_JOBS_FOR_CQ, shadow_reclient_instance = reclient.instance.TEST_UNTRUSTED, siso_enabled = True, - siso_project = reclient.instance.TEST_UNTRUSTED, ) fyi_mac_reclient_comparison_builder(
diff --git a/infra/config/subprojects/chromium/ci/chromium.gpu.fyi.star b/infra/config/subprojects/chromium/ci/chromium.gpu.fyi.star index 08cee95..43110ed 100644 --- a/infra/config/subprojects/chromium/ci/chromium.gpu.fyi.star +++ b/infra/config/subprojects/chromium/ci/chromium.gpu.fyi.star
@@ -5,7 +5,7 @@ load("//lib/branches.star", "branches") load("//lib/builder_config.star", "builder_config") -load("//lib/builders.star", "reclient", "sheriff_rotations", "siso") +load("//lib/builders.star", "reclient", "sheriff_rotations") load("//lib/ci.star", "ci") load("//lib/consoles.star", "consoles") load("//lib/gn_args.star", "gn_args") @@ -27,7 +27,6 @@ service_account = ci.gpu.SERVICE_ACCOUNT, shadow_service_account = ci.gpu.SHADOW_SERVICE_ACCOUNT, siso_enabled = True, - siso_project = siso.project.DEFAULT_TRUSTED, siso_remote_jobs = reclient.jobs.DEFAULT, thin_tester_cores = 2, )
diff --git a/infra/config/subprojects/chromium/ci/chromium.gpu.star b/infra/config/subprojects/chromium/ci/chromium.gpu.star index a7fe66a8..3cfa64c 100644 --- a/infra/config/subprojects/chromium/ci/chromium.gpu.star +++ b/infra/config/subprojects/chromium/ci/chromium.gpu.star
@@ -7,7 +7,7 @@ load("//lib/branches.star", "branches") load("//lib/builder_config.star", "builder_config") load("//lib/builder_health_indicators.star", "health_spec") -load("//lib/builders.star", "reclient", "sheriff_rotations", "siso") +load("//lib/builders.star", "reclient", "sheriff_rotations") load("//lib/ci.star", "ci") load("//lib/consoles.star", "consoles") load("//lib/gn_args.star", "gn_args") @@ -26,7 +26,6 @@ service_account = ci.DEFAULT_SERVICE_ACCOUNT, shadow_service_account = ci.DEFAULT_SHADOW_SERVICE_ACCOUNT, siso_enabled = True, - siso_project = siso.project.DEFAULT_TRUSTED, siso_remote_jobs = reclient.jobs.DEFAULT, thin_tester_cores = 2, tree_closing_notifiers = ci.gpu.TREE_CLOSING_NOTIFIERS,
diff --git a/infra/config/subprojects/chromium/ci/chromium.linux.star b/infra/config/subprojects/chromium/ci/chromium.linux.star index ecad4529..f86930b 100644 --- a/infra/config/subprojects/chromium/ci/chromium.linux.star +++ b/infra/config/subprojects/chromium/ci/chromium.linux.star
@@ -6,7 +6,7 @@ load("//lib/args.star", "args") load("//lib/builder_config.star", "builder_config") load("//lib/builder_health_indicators.star", "health_spec") -load("//lib/builders.star", "builders", "os", "reclient", "sheriff_rotations", "siso") +load("//lib/builders.star", "builders", "os", "reclient", "sheriff_rotations") load("//lib/branches.star", "branches") load("//lib/ci.star", "ci") load("//lib/consoles.star", "consoles") @@ -30,7 +30,6 @@ service_account = ci.DEFAULT_SERVICE_ACCOUNT, shadow_service_account = ci.DEFAULT_SHADOW_SERVICE_ACCOUNT, siso_enabled = True, - siso_project = siso.project.DEFAULT_TRUSTED, siso_remote_jobs = reclient.jobs.HIGH_JOBS_FOR_CI, )
diff --git a/infra/config/subprojects/chromium/ci/chromium.mac.star b/infra/config/subprojects/chromium/ci/chromium.mac.star index eb7a8ef..31b24c7 100644 --- a/infra/config/subprojects/chromium/ci/chromium.mac.star +++ b/infra/config/subprojects/chromium/ci/chromium.mac.star
@@ -7,7 +7,7 @@ load("//lib/branches.star", "branches") load("//lib/builder_config.star", "builder_config") load("//lib/builder_health_indicators.star", "health_spec") -load("//lib/builders.star", "cpu", "os", "reclient", "sheriff_rotations", "siso") +load("//lib/builders.star", "cpu", "os", "reclient", "sheriff_rotations") load("//lib/ci.star", "ci") load("//lib/consoles.star", "consoles") load("//lib/gn_args.star", "gn_args") @@ -28,7 +28,6 @@ service_account = ci.DEFAULT_SERVICE_ACCOUNT, shadow_service_account = ci.DEFAULT_SHADOW_SERVICE_ACCOUNT, siso_enabled = True, - siso_project = siso.project.DEFAULT_TRUSTED, siso_remote_jobs = reclient.jobs.DEFAULT, thin_tester_cores = 8, )
diff --git a/infra/config/subprojects/chromium/ci/chromium.memory.fyi.star b/infra/config/subprojects/chromium/ci/chromium.memory.fyi.star index 52bfcb4..986f38f 100644 --- a/infra/config/subprojects/chromium/ci/chromium.memory.fyi.star +++ b/infra/config/subprojects/chromium/ci/chromium.memory.fyi.star
@@ -4,7 +4,7 @@ """Definitions of builders in the chromium.memory.fyi builder group.""" load("//lib/builder_config.star", "builder_config") -load("//lib/builders.star", "os", "reclient", "siso") +load("//lib/builders.star", "os", "reclient") load("//lib/ci.star", "ci") load("//lib/consoles.star", "consoles") load("//lib/gn_args.star", "gn_args") @@ -24,7 +24,6 @@ service_account = ci.DEFAULT_SERVICE_ACCOUNT, shadow_service_account = ci.DEFAULT_SHADOW_SERVICE_ACCOUNT, siso_enabled = True, - siso_project = siso.project.DEFAULT_TRUSTED, siso_remote_jobs = reclient.jobs.LOW_JOBS_FOR_CI, )
diff --git a/infra/config/subprojects/chromium/ci/chromium.memory.star b/infra/config/subprojects/chromium/ci/chromium.memory.star index 45fc608e5..ef50c2ba 100644 --- a/infra/config/subprojects/chromium/ci/chromium.memory.star +++ b/infra/config/subprojects/chromium/ci/chromium.memory.star
@@ -7,7 +7,7 @@ load("//lib/branches.star", "branches") load("//lib/builder_config.star", "builder_config") load("//lib/builder_health_indicators.star", "health_spec") -load("//lib/builders.star", "os", "reclient", "sheriff_rotations", "siso") +load("//lib/builders.star", "os", "reclient", "sheriff_rotations") load("//lib/ci.star", "ci") load("//lib/consoles.star", "consoles") load("//lib/gn_args.star", "gn_args") @@ -30,7 +30,6 @@ service_account = ci.DEFAULT_SERVICE_ACCOUNT, shadow_service_account = ci.DEFAULT_SHADOW_SERVICE_ACCOUNT, siso_enabled = True, - siso_project = siso.project.DEFAULT_TRUSTED, siso_remote_jobs = reclient.jobs.HIGH_JOBS_FOR_CI, )
diff --git a/infra/config/subprojects/chromium/ci/chromium.rust.star b/infra/config/subprojects/chromium/ci/chromium.rust.star index 8770375b..caf7648 100644 --- a/infra/config/subprojects/chromium/ci/chromium.rust.star +++ b/infra/config/subprojects/chromium/ci/chromium.rust.star
@@ -4,7 +4,7 @@ """Definitions of builders in the chromium.rust builder group.""" load("//lib/builder_config.star", "builder_config") -load("//lib/builders.star", "os", "reclient", "siso") +load("//lib/builders.star", "os", "reclient") load("//lib/ci.star", "ci") load("//lib/consoles.star", "consoles") load("//lib/gn_args.star", "gn_args") @@ -25,7 +25,6 @@ service_account = ci.DEFAULT_SERVICE_ACCOUNT, shadow_service_account = ci.DEFAULT_SHADOW_SERVICE_ACCOUNT, siso_enabled = True, - siso_project = siso.project.DEFAULT_TRUSTED, siso_remote_jobs = reclient.jobs.DEFAULT, )
diff --git a/infra/config/subprojects/chromium/ci/chromium.star b/infra/config/subprojects/chromium/ci/chromium.star index f3e8753..6890bdb 100644 --- a/infra/config/subprojects/chromium/ci/chromium.star +++ b/infra/config/subprojects/chromium/ci/chromium.star
@@ -6,7 +6,7 @@ load("//lib/args.star", "args") load("//lib/builder_config.star", "builder_config") load("//lib/builder_health_indicators.star", "health_spec") -load("//lib/builders.star", "cpu", "os", "reclient", "sheriff_rotations", "siso") +load("//lib/builders.star", "cpu", "os", "reclient", "sheriff_rotations") load("//lib/branches.star", "branches") load("//lib/ci.star", "ci") load("//lib/consoles.star", "consoles") @@ -32,7 +32,6 @@ service_account = ci.DEFAULT_SERVICE_ACCOUNT, shadow_service_account = ci.DEFAULT_SHADOW_SERVICE_ACCOUNT, siso_enabled = True, - siso_project = siso.project.DEFAULT_TRUSTED, siso_remote_jobs = reclient.jobs.DEFAULT, )
diff --git a/infra/config/subprojects/chromium/ci/chromium.swangle.star b/infra/config/subprojects/chromium/ci/chromium.swangle.star index 34eff4b..ee1f5679 100644 --- a/infra/config/subprojects/chromium/ci/chromium.swangle.star +++ b/infra/config/subprojects/chromium/ci/chromium.swangle.star
@@ -3,7 +3,7 @@ # found in the LICENSE file. """Definitions of builders in the chromium.swangle builder group.""" -load("//lib/builders.star", "reclient", "sheriff_rotations", "siso") +load("//lib/builders.star", "reclient", "sheriff_rotations") load("//lib/builder_config.star", "builder_config") load("//lib/builder_health_indicators.star", "health_spec") load("//lib/ci.star", "ci") @@ -23,7 +23,6 @@ service_account = ci.gpu.SERVICE_ACCOUNT, shadow_service_account = ci.gpu.SHADOW_SERVICE_ACCOUNT, siso_enabled = True, - siso_project = siso.project.DEFAULT_TRUSTED, siso_remote_jobs = reclient.jobs.DEFAULT, )
diff --git a/infra/config/subprojects/chromium/ci/chromium.updater.star b/infra/config/subprojects/chromium/ci/chromium.updater.star index 34b6671..c6a66452 100644 --- a/infra/config/subprojects/chromium/ci/chromium.updater.star +++ b/infra/config/subprojects/chromium/ci/chromium.updater.star
@@ -5,7 +5,7 @@ load("//lib/branches.star", "branches") load("//lib/builder_config.star", "builder_config") -load("//lib/builders.star", "builders", "cpu", "os", "reclient", "siso") +load("//lib/builders.star", "builders", "cpu", "os", "reclient") load("//lib/ci.star", "ci") load("//lib/consoles.star", "consoles") load("//lib/gn_args.star", "gn_args") @@ -24,7 +24,6 @@ service_account = ci.DEFAULT_SERVICE_ACCOUNT, shadow_service_account = ci.DEFAULT_SHADOW_SERVICE_ACCOUNT, siso_enabled = True, - siso_project = siso.project.DEFAULT_TRUSTED, siso_remote_jobs = reclient.jobs.DEFAULT, )
diff --git a/infra/config/subprojects/chromium/ci/chromium.win.star b/infra/config/subprojects/chromium/ci/chromium.win.star index 2c677b07..3c492307 100644 --- a/infra/config/subprojects/chromium/ci/chromium.win.star +++ b/infra/config/subprojects/chromium/ci/chromium.win.star
@@ -7,7 +7,7 @@ load("//lib/branches.star", "branches") load("//lib/builder_config.star", "builder_config") load("//lib/builder_health_indicators.star", "health_spec") -load("//lib/builders.star", "os", "reclient", "sheriff_rotations", "siso") +load("//lib/builders.star", "os", "reclient", "sheriff_rotations") load("//lib/ci.star", "ci") load("//lib/consoles.star", "consoles") load("//lib/gn_args.star", "gn_args") @@ -30,7 +30,6 @@ service_account = ci.DEFAULT_SERVICE_ACCOUNT, shadow_service_account = ci.DEFAULT_SHADOW_SERVICE_ACCOUNT, siso_enabled = True, - siso_project = siso.project.DEFAULT_TRUSTED, siso_remote_jobs = reclient.jobs.DEFAULT, )
diff --git a/infra/config/subprojects/chromium/gpu.try.star b/infra/config/subprojects/chromium/gpu.try.star index 4069495..975513e 100644 --- a/infra/config/subprojects/chromium/gpu.try.star +++ b/infra/config/subprojects/chromium/gpu.try.star
@@ -2,7 +2,7 @@ # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. -load("//lib/builders.star", "cpu", "os", "reclient", "siso") +load("//lib/builders.star", "cpu", "os", "reclient") load("//lib/try.star", "try_") load("//lib/gn_args.star", "gn_args") @@ -23,7 +23,6 @@ reclient_instance = reclient.instance.DEFAULT_UNTRUSTED, service_account = "chromium-try-gpu-builder@chops-service-accounts.iam.gserviceaccount.com", siso_enabled = True, - siso_project = siso.project.DEFAULT_UNTRUSTED, subproject_list_view = "luci.chromium.try", task_template_canary_percentage = 5, )
diff --git a/infra/config/subprojects/chromium/swangle.try.star b/infra/config/subprojects/chromium/swangle.try.star index ddeaf37..8644c6f 100644 --- a/infra/config/subprojects/chromium/swangle.try.star +++ b/infra/config/subprojects/chromium/swangle.try.star
@@ -2,7 +2,7 @@ # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. -load("//lib/builders.star", "cpu", "os", "reclient", "siso") +load("//lib/builders.star", "cpu", "os", "reclient") load("//lib/builder_config.star", "builder_config") load("//lib/consoles.star", "consoles") load("//lib/gn_args.star", "gn_args") @@ -26,7 +26,6 @@ reclient_jobs = reclient.jobs.LOW_JOBS_FOR_CQ, service_account = "chromium-try-gpu-builder@chops-service-accounts.iam.gserviceaccount.com", siso_enabled = True, - siso_project = siso.project.DEFAULT_UNTRUSTED, subproject_list_view = "luci.chromium.try", task_template_canary_percentage = 5, )
diff --git a/infra/config/subprojects/chromium/try/tryserver.blink.star b/infra/config/subprojects/chromium/try/tryserver.blink.star index 005472a5..3091cd7 100644 --- a/infra/config/subprojects/chromium/try/tryserver.blink.star +++ b/infra/config/subprojects/chromium/try/tryserver.blink.star
@@ -3,7 +3,7 @@ # found in the LICENSE file. """Definitions of builders in the tryserver.blink builder group.""" -load("//lib/builders.star", "cpu", "os", "reclient", "siso") +load("//lib/builders.star", "cpu", "os", "reclient") load("//lib/builder_config.star", "builder_config") load("//lib/branches.star", "branches") load("//lib/try.star", "try_") @@ -20,7 +20,6 @@ reclient_jobs = reclient.jobs.LOW_JOBS_FOR_CQ, service_account = try_.DEFAULT_SERVICE_ACCOUNT, siso_enabled = True, - siso_project = siso.project.DEFAULT_UNTRUSTED, ) consoles.list_view(
diff --git a/infra/config/subprojects/chromium/try/tryserver.chromium.accessibility.star b/infra/config/subprojects/chromium/try/tryserver.chromium.accessibility.star index d8df36bd..2d966d8 100644 --- a/infra/config/subprojects/chromium/try/tryserver.chromium.accessibility.star +++ b/infra/config/subprojects/chromium/try/tryserver.chromium.accessibility.star
@@ -3,7 +3,7 @@ # found in the LICENSE file. """Definitions of builders in the tryserver.chromium.accessibility builder group.""" -load("//lib/builders.star", "os", "reclient", "siso") +load("//lib/builders.star", "os", "reclient") load("//lib/try.star", "try_") load("//lib/consoles.star", "consoles") load("//lib/gn_args.star", "gn_args") @@ -20,7 +20,6 @@ reclient_jobs = 150, service_account = try_.DEFAULT_SERVICE_ACCOUNT, siso_enabled = True, - siso_project = siso.project.DEFAULT_UNTRUSTED, ) consoles.list_view(
diff --git a/infra/config/subprojects/chromium/try/tryserver.chromium.android.star b/infra/config/subprojects/chromium/try/tryserver.chromium.android.star index 10454a3..c1374395 100644 --- a/infra/config/subprojects/chromium/try/tryserver.chromium.android.star +++ b/infra/config/subprojects/chromium/try/tryserver.chromium.android.star
@@ -5,7 +5,7 @@ load("//lib/branches.star", "branches") load("//lib/builder_config.star", "builder_config") -load("//lib/builders.star", "os", "reclient", "siso") +load("//lib/builders.star", "os", "reclient") load("//lib/try.star", "try_") load("//lib/consoles.star", "consoles") load("//lib/gn_args.star", "gn_args") @@ -24,7 +24,6 @@ reclient_jobs = reclient.jobs.HIGH_JOBS_FOR_CQ, service_account = try_.DEFAULT_SERVICE_ACCOUNT, siso_enabled = True, - siso_project = siso.project.DEFAULT_UNTRUSTED, ) consoles.list_view(
diff --git a/infra/config/subprojects/chromium/try/tryserver.chromium.angle.star b/infra/config/subprojects/chromium/try/tryserver.chromium.angle.star index 93b33d96..19ca90c 100644 --- a/infra/config/subprojects/chromium/try/tryserver.chromium.angle.star +++ b/infra/config/subprojects/chromium/try/tryserver.chromium.angle.star
@@ -3,7 +3,7 @@ # found in the LICENSE file. """Definitions of builders in the tryserver.chromium.angle builder group.""" -load("//lib/builders.star", "cpu", "os", "reclient", "siso") +load("//lib/builders.star", "cpu", "os", "reclient") load("//lib/builder_config.star", "builder_config") load("//lib/consoles.star", "consoles") load("//lib/gn_args.star", "gn_args") @@ -21,7 +21,6 @@ reclient_jobs = reclient.jobs.HIGH_JOBS_FOR_CQ, service_account = try_.gpu.SERVICE_ACCOUNT, siso_enabled = True, - siso_project = siso.project.DEFAULT_UNTRUSTED, ) consoles.list_view(
diff --git a/infra/config/subprojects/chromium/try/tryserver.chromium.cft.star b/infra/config/subprojects/chromium/try/tryserver.chromium.cft.star index 0acb6c1..ec3cd710 100644 --- a/infra/config/subprojects/chromium/try/tryserver.chromium.cft.star +++ b/infra/config/subprojects/chromium/try/tryserver.chromium.cft.star
@@ -3,7 +3,7 @@ # found in the LICENSE file. """Definitions of builders in the tryserver.chromium.mac builder group.""" -load("//lib/builders.star", "os", "reclient", "siso") +load("//lib/builders.star", "os", "reclient") load("//lib/try.star", "try_") load("//lib/consoles.star", "consoles") load("//lib/gn_args.star", "gn_args") @@ -19,7 +19,6 @@ reclient_jobs = reclient.jobs.LOW_JOBS_FOR_CQ, service_account = try_.DEFAULT_SERVICE_ACCOUNT, siso_enabled = True, - siso_project = siso.project.DEFAULT_UNTRUSTED, ) consoles.list_view(
diff --git a/infra/config/subprojects/chromium/try/tryserver.chromium.chromiumos.star b/infra/config/subprojects/chromium/try/tryserver.chromium.chromiumos.star index d860194d..6d9de7f2 100644 --- a/infra/config/subprojects/chromium/try/tryserver.chromium.chromiumos.star +++ b/infra/config/subprojects/chromium/try/tryserver.chromium.chromiumos.star
@@ -6,7 +6,7 @@ load("//lib/branches.star", "branches") load("//lib/builder_config.star", "builder_config") load("//lib/builder_url.star", "linkify_builder") -load("//lib/builders.star", "os", "reclient", "siso") +load("//lib/builders.star", "os", "reclient") load("//lib/try.star", "try_") load("//lib/consoles.star", "consoles") load("//lib/gn_args.star", "gn_args") @@ -26,7 +26,6 @@ reclient_jobs = reclient.jobs.LOW_JOBS_FOR_CQ, service_account = try_.DEFAULT_SERVICE_ACCOUNT, siso_enabled = True, - siso_project = siso.project.DEFAULT_UNTRUSTED, ) consoles.list_view(
diff --git a/infra/config/subprojects/chromium/try/tryserver.chromium.dawn.star b/infra/config/subprojects/chromium/try/tryserver.chromium.dawn.star index d70e167..fd4fa34 100644 --- a/infra/config/subprojects/chromium/try/tryserver.chromium.dawn.star +++ b/infra/config/subprojects/chromium/try/tryserver.chromium.dawn.star
@@ -4,7 +4,7 @@ """Definitions of builders in the tryserver.chromium.swangle builder group.""" load("//lib/branches.star", "branches") -load("//lib/builders.star", "cpu", "os", "reclient", "siso") +load("//lib/builders.star", "cpu", "os", "reclient") load("//lib/consoles.star", "consoles") load("//lib/try.star", "try_") @@ -22,7 +22,6 @@ reclient_jobs = reclient.jobs.LOW_JOBS_FOR_CQ, service_account = try_.gpu.SERVICE_ACCOUNT, siso_enabled = True, - siso_project = siso.project.DEFAULT_UNTRUSTED, ) consoles.list_view(
diff --git a/infra/config/subprojects/chromium/try/tryserver.chromium.fuchsia.star b/infra/config/subprojects/chromium/try/tryserver.chromium.fuchsia.star index 98695444..76811aea 100644 --- a/infra/config/subprojects/chromium/try/tryserver.chromium.fuchsia.star +++ b/infra/config/subprojects/chromium/try/tryserver.chromium.fuchsia.star
@@ -6,7 +6,7 @@ load("//lib/branches.star", "branches") load("//lib/builder_config.star", "builder_config") load("//lib/builder_url.star", "linkify_builder") -load("//lib/builders.star", "builders", "os", "reclient", "siso") +load("//lib/builders.star", "builders", "os", "reclient") load("//lib/consoles.star", "consoles") load("//lib/gn_args.star", "gn_args") load("//lib/try.star", "try_") @@ -26,7 +26,6 @@ reclient_jobs = reclient.jobs.HIGH_JOBS_FOR_CQ, service_account = try_.DEFAULT_SERVICE_ACCOUNT, siso_enabled = True, - siso_project = siso.project.DEFAULT_UNTRUSTED, ) consoles.list_view(
diff --git a/infra/config/subprojects/chromium/try/tryserver.chromium.fuzz.star b/infra/config/subprojects/chromium/try/tryserver.chromium.fuzz.star index 1e838f9..19b8ba1 100644 --- a/infra/config/subprojects/chromium/try/tryserver.chromium.fuzz.star +++ b/infra/config/subprojects/chromium/try/tryserver.chromium.fuzz.star
@@ -3,7 +3,7 @@ # found in the LICENSE file. """Definitions of builders in the tryserver.chromium.fuzz builder group.""" -load("//lib/builders.star", "os", "reclient", "siso") +load("//lib/builders.star", "os", "reclient") load("//lib/consoles.star", "consoles") load("//lib/try.star", "try_") @@ -19,7 +19,6 @@ reclient_jobs = reclient.jobs.HIGH_JOBS_FOR_CQ, service_account = try_.DEFAULT_SERVICE_ACCOUNT, siso_enabled = True, - siso_project = siso.project.DEFAULT_UNTRUSTED, ) consoles.list_view(
diff --git a/infra/config/subprojects/chromium/try/tryserver.chromium.linux.star b/infra/config/subprojects/chromium/try/tryserver.chromium.linux.star index a73d554..b8d944f 100644 --- a/infra/config/subprojects/chromium/try/tryserver.chromium.linux.star +++ b/infra/config/subprojects/chromium/try/tryserver.chromium.linux.star
@@ -6,7 +6,7 @@ load("//lib/branches.star", "branches") load("//lib/builder_config.star", "builder_config") load("//lib/builder_url.star", "linkify_builder") -load("//lib/builders.star", "os", "reclient", "siso") +load("//lib/builders.star", "os", "reclient") load("//lib/consoles.star", "consoles") load("//lib/gn_args.star", "gn_args") load("//lib/try.star", "try_") @@ -25,7 +25,6 @@ reclient_instance = reclient.instance.DEFAULT_UNTRUSTED, service_account = try_.DEFAULT_SERVICE_ACCOUNT, siso_enabled = True, - siso_project = siso.project.DEFAULT_UNTRUSTED, ) consoles.list_view(
diff --git a/infra/config/subprojects/chromium/try/tryserver.chromium.mac.star b/infra/config/subprojects/chromium/try/tryserver.chromium.mac.star index 7b73ae0d..43fb046 100644 --- a/infra/config/subprojects/chromium/try/tryserver.chromium.mac.star +++ b/infra/config/subprojects/chromium/try/tryserver.chromium.mac.star
@@ -5,7 +5,7 @@ load("//lib/branches.star", "branches") load("//lib/builder_config.star", "builder_config") -load("//lib/builders.star", "cpu", "os", "reclient", "siso") +load("//lib/builders.star", "cpu", "os", "reclient") load("//lib/try.star", "try_") load("//lib/consoles.star", "consoles") load("//lib/gn_args.star", "gn_args") @@ -24,7 +24,6 @@ reclient_instance = reclient.instance.DEFAULT_UNTRUSTED, service_account = try_.DEFAULT_SERVICE_ACCOUNT, siso_enabled = True, - siso_project = siso.project.DEFAULT_UNTRUSTED, ) def ios_builder(*, name, **kwargs):
diff --git a/infra/config/subprojects/chromium/try/tryserver.chromium.rust.star b/infra/config/subprojects/chromium/try/tryserver.chromium.rust.star index 81ada6a0..a8dbc6c0c 100644 --- a/infra/config/subprojects/chromium/try/tryserver.chromium.rust.star +++ b/infra/config/subprojects/chromium/try/tryserver.chromium.rust.star
@@ -3,7 +3,7 @@ # found in the LICENSE file. """Definitions of builders in the tryserver.chromium.rust builder group.""" -load("//lib/builders.star", "os", "reclient", "siso") +load("//lib/builders.star", "os", "reclient") load("//lib/try.star", "try_") load("//lib/consoles.star", "consoles") @@ -19,7 +19,6 @@ reclient_jobs = reclient.jobs.LOW_JOBS_FOR_CQ, service_account = try_.DEFAULT_SERVICE_ACCOUNT, siso_enabled = True, - siso_project = siso.project.DEFAULT_UNTRUSTED, ) consoles.list_view(
diff --git a/infra/config/subprojects/chromium/try/tryserver.chromium.star b/infra/config/subprojects/chromium/try/tryserver.chromium.star index 91c4d48..cbf0dbf 100644 --- a/infra/config/subprojects/chromium/try/tryserver.chromium.star +++ b/infra/config/subprojects/chromium/try/tryserver.chromium.star
@@ -4,7 +4,7 @@ """Definitions of builders in the tryserver.chromium builder group.""" load("//lib/branches.star", "branches") -load("//lib/builders.star", "cpu", "os", "reclient", "siso") +load("//lib/builders.star", "cpu", "os", "reclient") load("//lib/try.star", "try_") load("//lib/consoles.star", "consoles") load("//lib/gn_args.star", "gn_args") @@ -21,7 +21,6 @@ reclient_jobs = reclient.jobs.HIGH_JOBS_FOR_CQ, service_account = try_.DEFAULT_SERVICE_ACCOUNT, siso_enabled = True, - siso_project = siso.project.DEFAULT_UNTRUSTED, ) consoles.list_view(
diff --git a/infra/config/subprojects/chromium/try/tryserver.chromium.updater.star b/infra/config/subprojects/chromium/try/tryserver.chromium.updater.star index d8a387b5..b239d71 100644 --- a/infra/config/subprojects/chromium/try/tryserver.chromium.updater.star +++ b/infra/config/subprojects/chromium/try/tryserver.chromium.updater.star
@@ -3,7 +3,7 @@ # found in the LICENSE file. """Definitions of builders in the tryserver.chromium.updater builder group.""" -load("//lib/builders.star", "os", "reclient", "siso") +load("//lib/builders.star", "os", "reclient") load("//lib/try.star", "try_") load("//lib/consoles.star", "consoles") load("//lib/gn_args.star", "gn_args") @@ -18,7 +18,6 @@ reclient_jobs = reclient.jobs.LOW_JOBS_FOR_CQ, service_account = try_.DEFAULT_SERVICE_ACCOUNT, siso_enabled = True, - siso_project = siso.project.DEFAULT_UNTRUSTED, ) consoles.list_view(
diff --git a/infra/config/subprojects/chromium/try/tryserver.chromium.win.star b/infra/config/subprojects/chromium/try/tryserver.chromium.win.star index 29f586dd..3738830 100644 --- a/infra/config/subprojects/chromium/try/tryserver.chromium.win.star +++ b/infra/config/subprojects/chromium/try/tryserver.chromium.win.star
@@ -6,7 +6,7 @@ load("//lib/branches.star", "branches") load("//lib/builder_config.star", "builder_config") load("//lib/builder_url.star", "linkify_builder") -load("//lib/builders.star", "os", "reclient", "siso") +load("//lib/builders.star", "os", "reclient") load("//lib/try.star", "try_") load("//lib/consoles.star", "consoles") load("//project.star", "settings") @@ -27,7 +27,6 @@ reclient_jobs = reclient.jobs.LOW_JOBS_FOR_CQ, service_account = try_.DEFAULT_SERVICE_ACCOUNT, siso_enabled = True, - siso_project = siso.project.DEFAULT_UNTRUSTED, ) consoles.list_view(
diff --git a/infra/config/subprojects/reclient/reclient.star b/infra/config/subprojects/reclient/reclient.star index 1836276..dc2f68f 100644 --- a/infra/config/subprojects/reclient/reclient.star +++ b/infra/config/subprojects/reclient/reclient.star
@@ -752,5 +752,4 @@ reclient_jobs = reclient.jobs.HIGH_JOBS_FOR_CQ, shadow_reclient_instance = reclient.instance.TEST_UNTRUSTED, siso_enabled = True, - siso_project = reclient.instance.TEST_UNTRUSTED, )
diff --git a/infra/config/targets/lacros-version-skew-variants.json b/infra/config/targets/lacros-version-skew-variants.json index a358dd6..d2f79ce 100644 --- a/infra/config/targets/lacros-version-skew-variants.json +++ b/infra/config/targets/lacros-version-skew-variants.json
@@ -49,16 +49,16 @@ }, "LACROS_VERSION_SKEW_STABLE": { "args": [ - "--ash-chrome-path-override=../../lacros_version_skew_tests_v123.0.6312.112/test_ash_chrome" + "--ash-chrome-path-override=../../lacros_version_skew_tests_v123.0.6312.132/test_ash_chrome" ], - "description": "Run with ash-chrome version 123.0.6312.112", + "description": "Run with ash-chrome version 123.0.6312.132", "identifier": "Lacros version skew testing ash stable", "swarming": { "cipd_packages": [ { "cipd_package": "chromium/testing/linux-ash-chromium/x86_64/ash.zip", - "location": "lacros_version_skew_tests_v123.0.6312.112", - "revision": "version:123.0.6312.112" + "location": "lacros_version_skew_tests_v123.0.6312.132", + "revision": "version:123.0.6312.132" } ] }
diff --git a/internal b/internal index 5178496..f5dce23 160000 --- a/internal +++ b/internal
@@ -1 +1 @@ -Subproject commit 51784961a549aa3eff970c32af08734422989955 +Subproject commit f5dce23de2e76a39aeabd5418dfcda30b6c8106a
diff --git a/ios/chrome/browser/favicon/model/favicon_loader_unittest.mm b/ios/chrome/browser/favicon/model/favicon_loader_unittest.mm index 4fe2af3..6e819d6a 100644 --- a/ios/chrome/browser/favicon/model/favicon_loader_unittest.mm +++ b/ios/chrome/browser/favicon/model/favicon_loader_unittest.mm
@@ -56,10 +56,10 @@ bitmapResult.expired = false; // Create bitmap. - auto data = base::MakeRefCounted<base::RefCountedBytes>(); + scoped_refptr<base::RefCountedBytes> data(new base::RefCountedBytes()); SkBitmap bitmap; bitmap.allocN32Pixels(30, 30); - gfx::PNGCodec::EncodeBGRASkBitmap(bitmap, false, &data->as_vector()); + gfx::PNGCodec::EncodeBGRASkBitmap(bitmap, false, &data->data()); bitmapResult.bitmap_data = data; favicon_base::LargeIconResult result(bitmapResult);
diff --git a/ios/chrome/browser/favicon/model/large_icon_cache_unittest.cc b/ios/chrome/browser/favicon/model/large_icon_cache_unittest.cc index 23cb159e..7b80850 100644 --- a/ios/chrome/browser/favicon/model/large_icon_cache_unittest.cc +++ b/ios/chrome/browser/favicon/model/large_icon_cache_unittest.cc
@@ -27,7 +27,7 @@ // Create bitmap and fill with `color`. scoped_refptr<base::RefCountedBytes> data(new base::RefCountedBytes()); gfx::PNGCodec::EncodeBGRASkBitmap(gfx::test::CreateBitmap(w, h, color), false, - &data->as_vector()); + &data->data()); result.bitmap_data = data; result.pixel_size = gfx::Size(w, h);
diff --git a/ios/chrome/browser/ui/content_suggestions/set_up_list/set_up_list_mediator.mm b/ios/chrome/browser/ui/content_suggestions/set_up_list/set_up_list_mediator.mm index 96260d9..b97d1c4e 100644 --- a/ios/chrome/browser/ui/content_suggestions/set_up_list/set_up_list_mediator.mm +++ b/ios/chrome/browser/ui/content_suggestions/set_up_list/set_up_list_mediator.mm
@@ -408,6 +408,11 @@ // Sets the pref for a SetUpList item to indicate it is complete. - (void)markSetUpListItemPrefComplete:(SetUpListItemType)type { + // Exit early if this is called after `disconnect` which clears _localState. + // Item states will be reevaluated the next time this mediator is loaded. + if (!_localState) { + return; + } set_up_list_prefs::MarkItemComplete(_localState, type); }
diff --git a/ios/chrome/browser/ui/ntp/feed_management/follow_management_mediator_unittest.mm b/ios/chrome/browser/ui/ntp/feed_management/follow_management_mediator_unittest.mm index 80bfe80..9ac2971 100644 --- a/ios/chrome/browser/ui/ntp/feed_management/follow_management_mediator_unittest.mm +++ b/ios/chrome/browser/ui/ntp/feed_management/follow_management_mediator_unittest.mm
@@ -56,7 +56,7 @@ scoped_refptr<base::RefCountedBytes> data(new base::RefCountedBytes()); SkBitmap bitmap; bitmap.allocN32Pixels(30, 30); - gfx::PNGCodec::EncodeBGRASkBitmap(bitmap, false, &data->as_vector()); + gfx::PNGCodec::EncodeBGRASkBitmap(bitmap, false, &data->data()); bitmapResult.bitmap_data = data; favicon_base::LargeIconResult result(bitmapResult);
diff --git a/ios/third_party/earl_grey2/src b/ios/third_party/earl_grey2/src index 26acfe3..2e380858 160000 --- a/ios/third_party/earl_grey2/src +++ b/ios/third_party/earl_grey2/src
@@ -1 +1 @@ -Subproject commit 26acfe36928095395dfcb6ff3d0578550bd868ac +Subproject commit 2e38085850ae38e4b0d9325759a38a1f414f815f
diff --git a/ios_internal b/ios_internal index 4e9a9e1..2e88625 160000 --- a/ios_internal +++ b/ios_internal
@@ -1 +1 @@ -Subproject commit 4e9a9e1ff027107175ef685b140354acc5bfc1a9 +Subproject commit 2e8862517f6676771a2aaa26c8155238ac1981af
diff --git a/media/base/data_source.cc b/media/base/data_source.cc index 3944a8b..96803bfd 100644 --- a/media/base/data_source.cc +++ b/media/base/data_source.cc
@@ -7,6 +7,8 @@ namespace media { +DataSourceInfo::~DataSourceInfo() = default; + DataSource::DataSource() = default; DataSource::~DataSource() = default;
diff --git a/media/base/data_source.h b/media/base/data_source.h index f080a93..0e0a102 100644 --- a/media/base/data_source.h +++ b/media/base/data_source.h
@@ -15,7 +15,26 @@ class CrossOriginDataSource; -class MEDIA_EXPORT DataSource { +// Abstracting informational methods into DataSourceInfo allows +// "meta-datasource" objects like HlsDataSourceProvider to query it's entire +// set of dependent data sources when calculating the data here. +class MEDIA_EXPORT DataSourceInfo { + public: + virtual ~DataSourceInfo(); + + // The total memory size used. + virtual int64_t GetMemoryUsage() = 0; + + // DataSource implementations that might make requests must ensure the value + // is accurate for cross origin resources. + virtual bool WouldTaintOrigin() = 0; + + // Returns true if we are performing streaming. In this case seeking is + // not possible. + virtual bool IsStreaming() = 0; +}; + +class MEDIA_EXPORT DataSource : public DataSourceInfo { public: using ReadCB = base::OnceCallback<void(int)>; @@ -39,7 +58,7 @@ DataSource(const DataSource&) = delete; DataSource& operator=(const DataSource&) = delete; - virtual ~DataSource(); + ~DataSource() override; // Reads |size| bytes from |position| into |data|. And when the read is done // or failed, |read_cb| is called with the number of bytes read or @@ -62,10 +81,6 @@ // retrieved. [[nodiscard]] virtual bool GetSize(int64_t* size_out) = 0; - // Returns true if we are performing streaming. In this case seeking is - // not possible. - virtual bool IsStreaming() = 0; - // Notify the DataSource of the bitrate of the media. // Values of |bitrate| <= 0 are invalid and should be ignored. virtual void SetBitrate(int bitrate) = 0; @@ -75,15 +90,11 @@ // check. virtual bool PassedTimingAllowOriginCheck() = 0; - // DataSource implementations that might make requests must ensure the value - // is accurate for cross origin resources. - virtual bool WouldTaintOrigin() = 0; - // Assume fully buffered by default. virtual bool AssumeFullyBuffered() const; // By default this just returns GetSize(). - virtual int64_t GetMemoryUsage(); + int64_t GetMemoryUsage() override; // Adjusts the buffering algorithm (if there is one) based on the given // preload value.
diff --git a/media/filters/dav1d_video_decoder.cc b/media/filters/dav1d_video_decoder.cc index 474e945..3370191 100644 --- a/media/filters/dav1d_video_decoder.cc +++ b/media/filters/dav1d_video_decoder.cc
@@ -416,14 +416,12 @@ fake_uv_data_ = base::MakeRefCounted<base::RefCountedBytes>(size_needed); - uint16_t* data = - reinterpret_cast<uint16_t*>(fake_uv_data_->as_vector().data()); + uint16_t* data = fake_uv_data_->front_as<uint16_t>(); std::fill(data, data + size_needed / 2, kBlankUV); } } - u_plane = v_plane = - reinterpret_cast<uint8_t*>(fake_uv_data_->as_vector().data()); + u_plane = v_plane = fake_uv_data_->front_as<uint8_t>(); } auto frame = VideoFrame::WrapExternalYuvData(
diff --git a/media/filters/demuxer_manager.cc b/media/filters/demuxer_manager.cc index 3c37a02b..bab5c96 100644 --- a/media/filters/demuxer_manager.cc +++ b/media/filters/demuxer_manager.cc
@@ -388,7 +388,9 @@ if (hls_fallback_ == HlsFallbackImplementation::kBuiltinHlsPlayer || (base::FeatureList::IsEnabled(kBuiltInHlsPlayer) && loaded_url_.path_piece().ends_with(".m3u8"))) { - SetDemuxer(CreateHlsDemuxer()); + std::unique_ptr<Demuxer> demuxer; + std::tie(data_source_info_, demuxer) = CreateHlsDemuxer(); + SetDemuxer(std::move(demuxer)); return std::move(on_demuxer_created) .Run(demuxer_.get(), suspended_mode, /*is_streaming=*/false, /*is_static=*/false); @@ -457,6 +459,7 @@ void DemuxerManager::SetDataSource(std::unique_ptr<DataSource> data_source) { data_source_ = std::move(data_source); + data_source_info_ = data_source_.get(); } void DemuxerManager::OnBufferingHaveEnough(bool enough) { @@ -478,7 +481,7 @@ } int64_t DemuxerManager::GetDataSourceMemoryUsage() { - return data_source_ ? data_source_->GetMemoryUsage() : 0; + return data_source_info_ ? data_source_info_->GetMemoryUsage() : 0; } void DemuxerManager::OnDataSourcePlaybackRateChange(double rate, bool paused) { @@ -492,18 +495,26 @@ } bool DemuxerManager::WouldTaintOrigin() const { - if (hls_fallback_ != HlsFallbackImplementation::kNone) { - // HLS manifests might pull segments from a different origin. We can't know - // for sure, so we conservatively say yes here. - // TODO (crbug/1266991) We will be able to know for sure with the builtin - // player, when that's implemented. - return true; + switch (hls_fallback_) { + case HlsFallbackImplementation::kMediaPlayer: { + // HLS manifests might pull segments from a different origin. We can't + // know for sure, so we conservatively say yes here. + return true; + } + case HlsFallbackImplementation::kBuiltinHlsPlayer: { + CHECK(data_source_info_); + // TODO(crbug/40057824): return data_source_info_->WouldTaintOrigin(); + // For now, we should continue to assume that tainting is always true with + // HLS content. + return true; + } + case HlsFallbackImplementation::kNone: { + // TODO(crbug/1377053): The default |false| value might have to be + // re-considered for MediaPlayerRenderer, but for now, leave behavior the + // same as it was. + return data_source_info_ ? data_source_info_->WouldTaintOrigin() : false; + } } - - // TODO(crbug/1377053): The default |false| value might have to be - // re-considered for MediaPlayerRenderer, but for now, leave behavior the - // same as it was. - return data_source_ ? data_source_->WouldTaintOrigin() : false; } bool DemuxerManager::HasDataSource() const { @@ -530,7 +541,7 @@ } bool DemuxerManager::IsStreaming() const { - return (data_source_ && data_source_->IsStreaming()) || + return (data_source_info_ && data_source_info_->IsStreaming()) || (demuxer_ && !demuxer_->IsSeekable()); } @@ -593,15 +604,20 @@ #endif // BUILDFLAG(ENABLE_FFMPEG) #if BUILDFLAG(ENABLE_HLS_DEMUXER) -std::unique_ptr<Demuxer> DemuxerManager::CreateHlsDemuxer() { +std::tuple<raw_ptr<DataSourceInfo>, std::unique_ptr<Demuxer>> +DemuxerManager::CreateHlsDemuxer() { auto engine = std::make_unique<HlsManifestDemuxerEngine>( - client_->GetHlsDataSourceProvider(), media_task_runner_, loaded_url_, - media_log_.get()); - return std::make_unique<ManifestDemuxer>( - media_task_runner_, - base::BindPostTaskToCurrentDefault(base::BindRepeating( - &DemuxerManager::DemuxerRequestsSeek, weak_factory_.GetWeakPtr())), - std::move(engine), media_log_.get()); + client_->GetHlsDataSourceProvider(), media_task_runner_, + data_source_info_->WouldTaintOrigin(), loaded_url_, media_log_.get()); + raw_ptr<DataSourceInfo> datasource_info = engine.get(); + return std::make_tuple( + datasource_info, + std::make_unique<ManifestDemuxer>( + media_task_runner_, + base::BindPostTaskToCurrentDefault( + base::BindRepeating(&DemuxerManager::DemuxerRequestsSeek, + weak_factory_.GetWeakPtr())), + std::move(engine), media_log_.get())); } #endif
diff --git a/media/filters/demuxer_manager.h b/media/filters/demuxer_manager.h index 988be31a..9c867cb 100644 --- a/media/filters/demuxer_manager.h +++ b/media/filters/demuxer_manager.h
@@ -184,7 +184,8 @@ #endif // BUILDFLAG(ENABLE_FFMPEG) #if BUILDFLAG(ENABLE_HLS_DEMUXER) - std::unique_ptr<Demuxer> CreateHlsDemuxer(); + std::tuple<raw_ptr<DataSourceInfo>, std::unique_ptr<Demuxer>> + CreateHlsDemuxer(); #endif #if BUILDFLAG(IS_ANDROID) @@ -246,6 +247,13 @@ // Holds whichever demuxer implementation is being used. std::unique_ptr<Demuxer> demuxer_; + // Refers to the owned object that can query information about a data source. + // For most playbacks, this is a raw ptr to `data_source_`, and so it is safe, + // since this class also owns that object. For HLS playback, this object is + // the HlsManifestDemuxerEngine, owned by `demuxer_`, so again, it is safe to + // keep a raw ptr here. + raw_ptr<DataSourceInfo> data_source_info_ = nullptr; + // Holds an optional demuxer that can be passed in at time of creation, // which becomes the default demuxer to use. std::unique_ptr<Demuxer> demuxer_override_;
diff --git a/media/filters/hls_data_source_provider.h b/media/filters/hls_data_source_provider.h index d3fabe6..99d6d1a3 100644 --- a/media/filters/hls_data_source_provider.h +++ b/media/filters/hls_data_source_provider.h
@@ -104,6 +104,18 @@ const uint8_t* raw_data() const { return buffer_.data(); } + uint64_t memory_usage() const { return memory_usage_; } + + bool would_taint_origin() const { return would_taint_origin_; } + + // Allows the stream creator to update memory usage after the first or after + // subsequent reads. + void set_total_memory_usage(uint64_t usage) { memory_usage_ = usage; } + + // A stream's origin is considered tainted if any backing data source involved + // in this playback is tainted. + void set_would_taint_origin() { would_taint_origin_ = true; } + // Often the network data for HLS consists of plain-text manifest files, so // this supports accessing the fetched data as a string view. std::string_view AsString() const; @@ -143,6 +155,14 @@ // size-flexible data structure to avoid resizing. std::vector<uint8_t> buffer_; + // This is critical to security. Once set to true, it must _never_ be set back + // to false. + bool would_taint_origin_ = false; + + // The memory usage represents the total memory usage for _all_ streams used + // in this playback. + uint64_t memory_usage_ = 0; + size_t read_position_ = 0; // The write index into `buffer_`. This gets reset on flush.
diff --git a/media/filters/hls_data_source_provider_impl.cc b/media/filters/hls_data_source_provider_impl.cc index 7fd5a45..f057e264 100644 --- a/media/filters/hls_data_source_provider_impl.cc +++ b/media/filters/hls_data_source_provider_impl.cc
@@ -20,11 +20,13 @@ // a single chunk. Chosen somewhat arbitrarily otherwise. constexpr size_t kDefaultReadSize = 1024 * 16; -void OnMultiBufferReadComplete(std::unique_ptr<HlsDataSourceStream> stream, - HlsDataSourceProviderImpl::ReadCb callback, - int requested_read_size, - void* trace_key, - int read_size) { +void OnMultiBufferReadComplete( + std::unique_ptr<HlsDataSourceStream> stream, + HlsDataSourceProviderImpl::ReadCb callback, + base::OnceCallback<void(HlsDataSourceStream&)> update_metadata, + int requested_read_size, + uint64_t trace_key, + int read_size) { TRACE_EVENT_NESTABLE_ASYNC_END1("media", "HLS::ReadExistingStream", trace_key, "size", read_size); switch (read_size) { @@ -41,6 +43,7 @@ default: { CHECK_GE(read_size, 0); stream->UnlockStreamPostWrite(read_size, 0 == read_size); + std::move(update_metadata).Run(*stream); std::move(callback).Run(std::move(stream)); } } @@ -79,6 +82,20 @@ ReadFromExistingStream(std::move(stream), std::move(callback)); } +void HlsDataSourceProviderImpl::UpdateStreamMetadata( + HlsDataSourceStream::StreamId stream_id, + HlsDataSourceStream& stream) { + uint64_t usage = 0; + for (const auto& it : data_source_map_) { + usage += it.second->GetMemoryUsage(); + would_taint_origin_ |= it.second->WouldTaintOrigin(); + } + stream.set_total_memory_usage(usage); + if (would_taint_origin_) { + stream.set_would_taint_origin(); + } +} + void HlsDataSourceProviderImpl::ReadFromExistingStream( std::unique_ptr<HlsDataSourceStream> stream, ReadCb callback) { @@ -128,15 +145,16 @@ auto int_read_size = base::checked_cast<int>(read_size); auto* buffer_data = stream->LockStreamForWriting(int_read_size); + auto stream_id = stream->stream_id(); + uint64_t async_event_key = reinterpret_cast<std::uintptr_t>(this); - // `this` used here is _only_ for use as a key in - // TRACE_EVENT_NESTABLE_ASYNC_END. - it->second->Read(base::checked_cast<int64_t>(pos), int_read_size, buffer_data, - base::BindOnce(&OnMultiBufferReadComplete, std::move(stream), - std::move(callback), int_read_size, - // TODO(https://crbug.com/1380714): Remove - // `UnsafeDanglingUntriaged` - base::UnsafeDanglingUntriaged(this))); + it->second->Read( + base::checked_cast<int64_t>(pos), int_read_size, buffer_data, + base::BindOnce( + &OnMultiBufferReadComplete, std::move(stream), std::move(callback), + base::BindOnce(&HlsDataSourceProviderImpl::UpdateStreamMetadata, + weak_factory_.GetWeakPtr(), stream_id), + int_read_size, async_event_key)); } void HlsDataSourceProviderImpl::OnDataSourceCreated( @@ -150,6 +168,7 @@ old_data_source->second->Stop(); data_source_map_.erase(old_data_source); } + would_taint_origin_ |= data_source->WouldTaintOrigin(); auto pair = data_source_map_.try_emplace(stream_id, std::move(data_source)); // Cross origin data sources have an asynchronous initialize method which // must be called after they're put into `data_source_map_`. Other types of
diff --git a/media/filters/hls_data_source_provider_impl.h b/media/filters/hls_data_source_provider_impl.h index c346098585..46cfa35 100644 --- a/media/filters/hls_data_source_provider_impl.h +++ b/media/filters/hls_data_source_provider_impl.h
@@ -42,6 +42,8 @@ void AbortPendingReads(base::OnceClosure cb) override; private: + void UpdateStreamMetadata(HlsDataSourceStream::StreamId, + HlsDataSourceStream& stream); void OnDataSourceCreated(std::unique_ptr<HlsDataSourceStream> stream, ReadCb callback, std::unique_ptr<DataSource> data_source); @@ -57,6 +59,8 @@ base::flat_map<HlsDataSourceStream::StreamId, std::unique_ptr<DataSource>> data_source_map_; + bool would_taint_origin_ = false; + SEQUENCE_CHECKER(sequence_checker_); base::WeakPtrFactory<HlsDataSourceProviderImpl> weak_factory_{this};
diff --git a/media/filters/hls_manifest_demuxer_engine.cc b/media/filters/hls_manifest_demuxer_engine.cc index 8640ad84..904d1ce 100644 --- a/media/filters/hls_manifest_demuxer_engine.cc +++ b/media/filters/hls_manifest_demuxer_engine.cc
@@ -156,12 +156,14 @@ HlsManifestDemuxerEngine::HlsManifestDemuxerEngine( base::SequenceBound<HlsDataSourceProvider> dsp, scoped_refptr<base::SequencedTaskRunner> media_task_runner, + bool was_already_tainted, GURL root_playlist_uri, MediaLog* media_log) : data_source_provider_(std::move(dsp)), media_task_runner_(std::move(media_task_runner)), root_playlist_uri_(std::move(root_playlist_uri)), - media_log_(media_log->Clone()) { + media_log_(media_log->Clone()), + origin_tainted_(was_already_tainted) { // This is always created on the main sequence, but used on the media sequence DETACH_FROM_SEQUENCE(media_sequence_checker_); } @@ -202,6 +204,18 @@ HlsManifestDemuxerEngine::PlaylistParseInfo::PlaylistParseInfo( const PlaylistParseInfo& copy) = default; +int64_t HlsManifestDemuxerEngine::GetMemoryUsage() { + return total_stream_memory_; +} + +bool HlsManifestDemuxerEngine::WouldTaintOrigin() { + return origin_tainted_; +} + +bool HlsManifestDemuxerEngine::IsStreaming() { + return !is_seekable_; +} + std::string HlsManifestDemuxerEngine::GetName() const { return "HlsManifestDemuxer"; } @@ -401,18 +415,6 @@ GURL uri, base::OnceCallback<void(bool)> cb) { DCHECK_CALLED_ON_VALID_SEQUENCE(media_sequence_checker_); - ProcessAsyncAction<bool>( - std::move(cb), - base::BindOnce( - &HlsManifestDemuxerEngine::UpdateRenditionManifestUriAction, - weak_factory_.GetWeakPtr(), std::move(role), std::move(uri))); -} - -void HlsManifestDemuxerEngine::UpdateRenditionManifestUriAction( - std::string role, - GURL uri, - base::OnceCallback<void(bool)> cb) { - DCHECK_CALLED_ON_VALID_SEQUENCE(media_sequence_checker_); TRACE_EVENT_NESTABLE_ASYNC_BEGIN1("media", "HLS::UpdateRenditionManifest", this, "uri", uri); GURL uri_copy = uri; @@ -513,6 +515,28 @@ } } +void HlsManifestDemuxerEngine::UpdateHlsDataSourceStats( + HlsDataSourceProvider::ReadCb cb, + HlsDataSourceProvider::ReadStatus::Or<std::unique_ptr<HlsDataSourceStream>> + result) { + DCHECK_CALLED_ON_VALID_SEQUENCE(media_sequence_checker_); + if (!result.has_value()) { + std::move(cb).Run(std::move(result).error().AddHere()); + return; + } + auto stream = std::move(result).value(); + origin_tainted_ |= stream->would_taint_origin(); + total_stream_memory_ = stream->memory_usage(); + std::move(cb).Run(std::move(stream)); +} + +HlsDataSourceProvider::ReadCb HlsManifestDemuxerEngine::BindStatsUpdate( + HlsDataSourceProvider::ReadCb cb) { + DCHECK_CALLED_ON_VALID_SEQUENCE(media_sequence_checker_); + return base::BindOnce(&HlsManifestDemuxerEngine::UpdateHlsDataSourceStats, + weak_factory_.GetWeakPtr(), std::move(cb)); +} + void HlsManifestDemuxerEngine::ReadUntilExhausted( HlsDataSourceProvider::ReadCb cb, HlsDataSourceProvider::ReadStatus::Or<std::unique_ptr<HlsDataSourceStream>> @@ -550,10 +574,11 @@ "uri", uri); data_source_provider_ .AsyncCall(&HlsDataSourceProvider::ReadFromCombinedUrlQueue) - .WithArgs(std::move(queue), - base::BindPostTaskToCurrentDefault(base::BindOnce( - &HlsManifestDemuxerEngine::ReadUntilExhausted, - weak_factory_.GetWeakPtr(), std::move(cb)))); + .WithArgs( + std::move(queue), + base::BindPostTaskToCurrentDefault(base::BindOnce( + &HlsManifestDemuxerEngine::ReadUntilExhausted, + weak_factory_.GetWeakPtr(), BindStatsUpdate(std::move(cb))))); } void HlsManifestDemuxerEngine::ReadMediaSegment( @@ -585,8 +610,8 @@ data_source_provider_ .AsyncCall(&HlsDataSourceProvider::ReadFromCombinedUrlQueue) - .WithArgs(std::move(queue), - base::BindPostTaskToCurrentDefault(std::move(cb))); + .WithArgs(std::move(queue), base::BindPostTaskToCurrentDefault( + BindStatsUpdate(std::move(cb)))); } void HlsManifestDemuxerEngine::ReadStream( @@ -600,8 +625,8 @@ } data_source_provider_ .AsyncCall(&HlsDataSourceProvider::ReadFromExistingStream) - .WithArgs(std::move(stream), - base::BindPostTaskToCurrentDefault(std::move(cb))); + .WithArgs(std::move(stream), base::BindPostTaskToCurrentDefault( + BindStatsUpdate(std::move(cb)))); } void HlsManifestDemuxerEngine::UpdateNetworkSpeed(uint64_t bps) {
diff --git a/media/filters/hls_manifest_demuxer_engine.h b/media/filters/hls_manifest_demuxer_engine.h index 7832f22..474c4dc 100644 --- a/media/filters/hls_manifest_demuxer_engine.h +++ b/media/filters/hls_manifest_demuxer_engine.h
@@ -31,14 +31,21 @@ // This will use the HLS parsers and rendition selectors to fetch and parse // playlists, followed by fetching and appending media segments. class MEDIA_EXPORT HlsManifestDemuxerEngine : public ManifestDemuxer::Engine, - public HlsRenditionHost { + public HlsRenditionHost, + public DataSourceInfo { public: HlsManifestDemuxerEngine(base::SequenceBound<HlsDataSourceProvider> dsp, scoped_refptr<base::SequencedTaskRunner> task_runner, + bool was_already_tainted, GURL root_playlist_uri, MediaLog* media_log); ~HlsManifestDemuxerEngine() override; + // DataSourceInfo implementation + int64_t GetMemoryUsage() override; + bool WouldTaintOrigin() override; + bool IsStreaming() override; + // ManifestDemuxer::Engine implementation std::string GetName() const override; void Initialize(ManifestDemuxerEngineHost* host, @@ -158,11 +165,6 @@ std::string role, ManifestDemuxer::DelayCallback cb, base::TimeDelta delay_time); - - // Posted by `::UpdateRenditionManifestUri` - void UpdateRenditionManifestUriAction(std::string role, - GURL uri, - base::OnceCallback<void(bool)> cb); void UpdateMediaPlaylistForRole( std::string role, GURL uri, @@ -203,6 +205,17 @@ void Abort(hls::ParseStatus status); void Abort(HlsDataSourceProvider::ReadStatus status); + // Capture the stream before it gets posted to `cb` and update the internal + // memory state and origin tainting. + void UpdateHlsDataSourceStats( + HlsDataSourceProvider::ReadCb cb, + HlsDataSourceProvider::ReadStatus::Or< + std::unique_ptr<HlsDataSourceStream>> result); + + // Helper to bind `UpdateHlsDataSourceStats` around a response CB. + HlsDataSourceProvider::ReadCb BindStatsUpdate( + HlsDataSourceProvider::ReadCb cb); + // Read the entire contents of a data source stream before calling cb. void ReadUntilExhausted(HlsDataSourceProvider::ReadCb cb, HlsDataSourceProvider::ReadResult result); @@ -289,6 +302,14 @@ // Is an action currently running? bool action_in_progress_ GUARDED_BY_CONTEXT(media_sequence_checker_) = false; + // The informational class which can combine memory usage and origin tainting + // for all sub-data sources. + bool origin_tainted_ = false; + + // The total amount of memory that is used by data sources. It gets updated + // after every successful read. + uint64_t total_stream_memory_ = 0; + // When renditions are added, this ensures that they are all of the same // liveness, and allows access to the liveness check later. std::optional<bool> is_seekable_ = std::nullopt;
diff --git a/media/filters/hls_manifest_demuxer_engine_unittest.cc b/media/filters/hls_manifest_demuxer_engine_unittest.cc index 8c2413b..a89c2f0 100644 --- a/media/filters/hls_manifest_demuxer_engine_unittest.cc +++ b/media/filters/hls_manifest_demuxer_engine_unittest.cc
@@ -60,6 +60,38 @@ "#EXTINF:3.003,\n" "http://media.example.com/third.ts\n"; +const std::string kInitialRequestLiveMediaPlaylist = + "#EXTM3U\n" + "#EXT-X-TARGETDURATION:10\n" + "#EXT-X-VERSION:3\n" + "#EXT-X-MEDIA-SEQUENCE:1234\n" + "#EXTINF:9.009,\n" + "http://media.example.com/a.ts\n" + "#EXTINF:9.009,\n" + "http://media.example.com/b.ts\n" + "#EXTINF:9.009,\n" + "http://media.example.com/c.ts\n" + "#EXTINF:9.009,\n" + "http://media.example.com/d.ts\n"; + +const std::string kSecondRequestLiveMediaPlaylist = + "#EXTM3U\n" + "#EXT-X-TARGETDURATION:10\n" + "#EXT-X-VERSION:3\n" + "#EXT-X-MEDIA-SEQUENCE:1236\n" + "#EXTINF:9.009,\n" + "http://media.example.com/c.ts\n" + "#EXTINF:9.009,\n" + "http://media.example.com/d.ts\n" + "#EXTINF:9.009,\n" + "http://media.example.com/e.ts\n" + "#EXTINF:9.009,\n" + "http://media.example.com/f.ts\n" + "#EXTINF:9.009,\n" + "http://media.example.com/g.ts\n" + "#EXTINF:9.009,\n" + "http://media.example.com/h.ts\n"; + const std::string kSingleInfoMediaPlaylist = "#EXTM3U\n" "#EXT-X-TARGETDURATION:10\n" @@ -164,35 +196,66 @@ } }; +template <typename T> +class CallbackEnforcer { + public: + explicit CallbackEnforcer(T expected) + : expected_(std::move(expected)), was_called_(false) {} + + base::OnceCallback<void(T)> GetCallback() { + return base::BindOnce( + [](bool* writeback, T expected, T actual) { + *writeback = true; + ASSERT_EQ(actual, expected); + }, + &was_called_, expected_); + } + + // This method is move only, so it must be std::moved. + void AssertAndReset(base::test::TaskEnvironment& env) && { + env.RunUntilIdle(); + ASSERT_TRUE(was_called_); + } + + private: + T expected_; + bool was_called_ = false; +}; + class HlsManifestDemuxerEngineTest : public testing::Test { protected: std::unique_ptr<MediaLog> media_log_; std::unique_ptr<MockManifestDemuxerEngineHost> mock_mdeh_; std::unique_ptr<MockHlsDataSourceProvider> mock_dsp_; - base::test::TaskEnvironment task_environment_; + base::test::TaskEnvironment task_environment_{ + base::test::TaskEnvironment::TimeSource::MOCK_TIME}; std::unique_ptr<HlsManifestDemuxerEngine> engine_; base::OnceClosure pending_url_fetch_; template <typename T> - void BindUrlToDataSource(std::string url, std::string value) { + void BindUrlToDataSource(std::string url, + std::string value, + bool taint_origin = false) { EXPECT_CALL(*mock_dsp_, ReadFromCombinedUrlQueue( SingleSegmentQueue(url, std::nullopt), _)) .Times(1) - .WillOnce(RunOnceCallback<1>(T::CreateStream(value))); + .WillOnce(RunOnceCallback<1>(T::CreateStream(value, taint_origin))); } template <typename T> - void BindUrlAssignmentThunk(std::string url, std::string value) { + void BindUrlAssignmentThunk(std::string url, + std::string value, + bool taint_origin = false) { EXPECT_CALL(*mock_dsp_, ReadFromCombinedUrlQueue( SingleSegmentQueue(std::move(url), std::nullopt), _)) .Times(1) - .WillOnce([this, value = std::move(value)]( + .WillOnce([this, value = std::move(value), taint_origin = taint_origin]( HlsDataSourceProvider::SegmentQueue, HlsDataSourceProvider::ReadCb cb) { - pending_url_fetch_ = - base::BindOnce(std::move(cb), T::CreateStream(std::move(value))); + pending_url_fetch_ = base::BindOnce( + std::move(cb), T::CreateStream(std::move(value), taint_origin)); }); } @@ -316,7 +379,8 @@ engine_ = std::make_unique<HlsManifestDemuxerEngine>( std::move(dsp), base::SingleThreadTaskRunner::GetCurrentDefault(), - GURL("http://media.example.com/manifest.m3u8"), media_log_.get()); + false, GURL("http://media.example.com/manifest.m3u8"), + media_log_.get()); } void InitializeEngine() { @@ -370,6 +434,94 @@ ASSERT_FALSE(engine_->IsSeekable()); } +TEST_F(HlsManifestDemuxerEngineTest, TestLivePlaybackManifestUpdates) { + EXPECT_CALL(*mock_mdeh_, SetSequenceMode("primary", true)); + EXPECT_CALL(*mock_mdeh_, + AddRole("primary", RelaxedParserSupportedType::kMP2T)); + BindUrlToDataSource<StringHlsDataSourceStreamFactory>( + "http://media.example.com/manifest.m3u8", + kInitialRequestLiveMediaPlaylist); + + EXPECT_CALL(*this, MockInitComplete(HasStatusCode(PIPELINE_OK))); + InitializeEngine(); + task_environment_.RunUntilIdle(); + + // Assume that anything appended is valid, because we actually have no valid + // media for this test. + EXPECT_CALL(*mock_mdeh_, AppendAndParseData("primary", _, _, _, _, _)) + .WillRepeatedly(Return(true)); + BindUrlToDataSource<StringHlsDataSourceStreamFactory>( + "http://media.example.com/a.ts", "Cheese in a cstring is string cheese."); + BindUrlToDataSource<StringHlsDataSourceStreamFactory>( + "http://media.example.com/b.ts", + "Tomatoes are a fruit. Ketchup is a jam."); + BindUrlToDataSource<StringHlsDataSourceStreamFactory>( + "http://media.example.com/c.ts", "You've never been in an empty room."); + + Ranges<base::TimeDelta> after_seg_a; + after_seg_a.Add(base::Seconds(0), base::Seconds(9)); + + Ranges<base::TimeDelta> after_seg_b; + after_seg_b.Add(base::Seconds(0), base::Seconds(18)); + + Ranges<base::TimeDelta> after_seg_c; + after_seg_c.Add(base::Seconds(0), base::Seconds(27)); + + EXPECT_CALL(*mock_mdeh_, GetBufferedRanges(_)) + .WillOnce(Return(Ranges<base::TimeDelta>())) // First CheckState + .WillOnce(Return(after_seg_a)) // After appending segment A + .WillOnce(Return(after_seg_a)) // Second CheckState + .WillOnce(Return(after_seg_b)) // After appending segment B + .WillOnce(Return(after_seg_b)) // Third CheckState + .WillOnce(Return(after_seg_b)) // Fourth CheckState + .WillOnce(Return(after_seg_c)) // After appending segment C + .WillOnce(Return(after_seg_c)) // Fifth CheckState + ; + + // Give a playback-rate=1 time update, signaling start of play. Since a data + // append happens, we should ask for a delay of 0. + CallbackEnforcer<base::TimeDelta> first(base::Seconds(0)); + engine_->OnTimeUpdate(base::Seconds(0), 1.0, first.GetCallback()); + std::move(first).AssertAndReset(task_environment_); + + // Make another request. This time, we have some data, but it's less than the + // ideal buffer size, so it will make another request to append data. Again + // because there was an append, we ask for a delay of 0. + CallbackEnforcer<base::TimeDelta> second(base::Seconds(0)); + engine_->OnTimeUpdate(base::Seconds(0), 1.0, second.GetCallback()); + std::move(second).AssertAndReset(task_environment_); + + // Lets pretend time ticked forward 1 second while we were making that network + // request for segment 2, and now the range is {0-18}. we calculate that we + // can delay for (buffer - ideal/2) => (17 - 10/2) => 12. + CallbackEnforcer<base::TimeDelta> third(base::Seconds(12)); + task_environment_.FastForwardBy(base::Seconds(1)); + engine_->OnTimeUpdate(base::Seconds(1), 1.0, third.GetCallback()); + std::move(third).AssertAndReset(task_environment_); + + // Lets fast forward those 12 seconds and make another request. This will + // leave a remaining buffer of 5 seconds, which will trigger another segment + // read, which means a delay of 0. + CallbackEnforcer<base::TimeDelta> fourth(base::Seconds(0)); + task_environment_.FastForwardBy(base::Seconds(12)); + engine_->OnTimeUpdate(base::Seconds(13), 1.0, fourth.GetCallback()); + std::move(fourth).AssertAndReset(task_environment_); + + // This time, The buffer is large enough - 27 seconds is the end while the + // media time is only 13 seconds, but we've popped 3/4 segments from the + // queue, which leaves 1. Multiplying that by the 10 second max duration, we + // find that because it's been 13 seconds since the last manifest update, its + // time to make another one. We bind a new data stream to the manifest URL, + // which should populate the queue with more segments. There should then + // be a response of (27 - 13) - (10/2), or 9 seconds. + BindUrlToDataSource<StringHlsDataSourceStreamFactory>( + "http://media.example.com/manifest.m3u8", + kSecondRequestLiveMediaPlaylist); + CallbackEnforcer<base::TimeDelta> fifth(base::Seconds(9)); + engine_->OnTimeUpdate(base::Seconds(13), 1.0, fifth.GetCallback()); + std::move(fifth).AssertAndReset(task_environment_); +} + TEST_F(HlsManifestDemuxerEngineTest, TestMultivariantPlaylistNoAlternates) { EXPECT_CALL(*mock_mdeh_, SetSequenceMode("primary", true)); EXPECT_CALL(*mock_mdeh_, SetDuration(21.021)); @@ -811,4 +963,20 @@ task_environment_.RunUntilIdle(); } +TEST_F(HlsManifestDemuxerEngineTest, TestOriginTainting) { + EXPECT_CALL(*mock_mdeh_, SetSequenceMode("primary", true)); + EXPECT_CALL(*mock_mdeh_, SetDuration(21.021)); + EXPECT_CALL(*mock_mdeh_, + AddRole("primary", RelaxedParserSupportedType::kMP2T)); + BindUrlToDataSource<StringHlsDataSourceStreamFactory>( + "http://media.example.com/manifest.m3u8", kSimpleMultivariantPlaylist, + /*taint_origin=*/true); + BindUrlToDataSource<StringHlsDataSourceStreamFactory>( + "http://example.com/hi.m3u8", kSimpleMediaPlaylist); + EXPECT_CALL(*this, MockInitComplete(HasStatusCode(PIPELINE_OK))); + InitializeEngine(); + task_environment_.RunUntilIdle(); + ASSERT_TRUE(engine_->WouldTaintOrigin()); +} + } // namespace media
diff --git a/media/filters/hls_test_helpers.cc b/media/filters/hls_test_helpers.cc index 1304218..743fbaf 100644 --- a/media/filters/hls_test_helpers.cc +++ b/media/filters/hls_test_helpers.cc
@@ -16,7 +16,8 @@ // static std::unique_ptr<HlsDataSourceStream> -StringHlsDataSourceStreamFactory::CreateStream(std::string content) { +StringHlsDataSourceStreamFactory::CreateStream(std::string content, + bool taint_origin) { HlsDataSourceProvider::SegmentQueue segments; auto stream = std::make_unique<HlsDataSourceStream>( HlsDataSourceStream::StreamId::FromUnsafeValue(42), std::move(segments), @@ -24,12 +25,16 @@ auto* buffer = stream->LockStreamForWriting(content.length()); memcpy(buffer, content.c_str(), content.length()); stream->UnlockStreamPostWrite(content.length(), true); + if (taint_origin) { + stream->set_would_taint_origin(); + } return stream; } // static std::unique_ptr<HlsDataSourceStream> -FileHlsDataSourceStreamFactory::CreateStream(std::string filename) { +FileHlsDataSourceStreamFactory::CreateStream(std::string filename, + bool taint_origin) { base::FilePath file_path = GetTestDataFilePath(filename); int64_t file_size = 0; CHECK(base::GetFileSize(file_path, &file_size)) @@ -42,6 +47,9 @@ CHECK_EQ(file_size, base::ReadFile(file_path, reinterpret_cast<char*>(buffer), file_size)); stream->UnlockStreamPostWrite(file_size, true); + if (taint_origin) { + stream->set_would_taint_origin(); + } return stream; }
diff --git a/media/filters/hls_test_helpers.h b/media/filters/hls_test_helpers.h index bdca418..ec7fda84 100644 --- a/media/filters/hls_test_helpers.h +++ b/media/filters/hls_test_helpers.h
@@ -36,12 +36,16 @@ class StringHlsDataSourceStreamFactory { public: - static std::unique_ptr<HlsDataSourceStream> CreateStream(std::string content); + static std::unique_ptr<HlsDataSourceStream> CreateStream( + std::string content, + bool taint_origin = false); }; class FileHlsDataSourceStreamFactory { public: - static std::unique_ptr<HlsDataSourceStream> CreateStream(std::string file); + static std::unique_ptr<HlsDataSourceStream> CreateStream( + std::string file, + bool taint_origin = false); }; class MockManifestDemuxerEngineHost : public ManifestDemuxerEngineHost {
diff --git a/media/test/pipeline_integration_test_base.cc b/media/test/pipeline_integration_test_base.cc index 02a9121..1588b618 100644 --- a/media/test/pipeline_integration_test_base.cc +++ b/media/test/pipeline_integration_test_base.cc
@@ -277,7 +277,7 @@ auto engine = std::make_unique<HlsManifestDemuxerEngine>( std::move(hls_dsp), task_environment_.GetMainThreadTaskRunner(), - manifest_root, &media_log_); + /*name=*/false, manifest_root, &media_log_); demuxer_ = std::make_unique<ManifestDemuxer>( task_environment_.GetMainThreadTaskRunner(), base::DoNothing(), std::move(engine), &media_log_);
diff --git a/mojo/public/cpp/base/ref_counted_memory_mojom_traits.cc b/mojo/public/cpp/base/ref_counted_memory_mojom_traits.cc index 6517def..c5e87ca7 100644 --- a/mojo/public/cpp/base/ref_counted_memory_mojom_traits.cc +++ b/mojo/public/cpp/base/ref_counted_memory_mojom_traits.cc
@@ -12,7 +12,7 @@ mojo_base::BigBuffer StructTraits<mojo_base::mojom::RefCountedMemoryDataView, scoped_refptr<base::RefCountedMemory>>:: data(const scoped_refptr<base::RefCountedMemory>& in) { - return mojo_base::BigBuffer(base::span(*in)); + return mojo_base::BigBuffer(base::make_span(in->front(), in->size())); } // static
diff --git a/net/base/directory_listing.cc b/net/base/directory_listing.cc index 0cd2a56..f70f70c6 100644 --- a/net/base/directory_listing.cc +++ b/net/base/directory_listing.cc
@@ -24,9 +24,8 @@ DLOG_IF(WARNING, !header) << "Missing resource: directory listing header"; std::string result; - if (header) { - result = base::as_string_view(*header); - } + if (header) + result.assign(header->front_as<char>(), header->size()); result.append("<script>start("); base::EscapeJSONString(title, true, &result);
diff --git a/net/log/trace_net_log_observer_unittest.cc b/net/log/trace_net_log_observer_unittest.cc index a6ae18e..c29858ed 100644 --- a/net/log/trace_net_log_observer_unittest.cc +++ b/net/log/trace_net_log_observer_unittest.cc
@@ -124,7 +124,7 @@ bool has_more_events) { DCHECK(trace_events_.empty()); trace_buffer_.Start(); - trace_buffer_.AddFragment(events_str->as_string()); + trace_buffer_.AddFragment(events_str->data()); trace_buffer_.Finish(); std::optional<base::Value> trace_value;
diff --git a/remoting/host/audio_capturer_linux.cc b/remoting/host/audio_capturer_linux.cc index 6bf0c6a..5ddcaf2 100644 --- a/remoting/host/audio_capturer_linux.cc +++ b/remoting/host/audio_capturer_linux.cc
@@ -58,16 +58,13 @@ DCHECK(!callback_.is_null()); if (silence_detector_.IsSilence( - // TODO(danakj): This cast can cause UB, we should copy into integers - // or pass it as a byte span. - reinterpret_cast<const int16_t*>(data->as_string().data()), - data->as_string().size() / sizeof(int16_t) / - AudioPipeReader::kChannels)) { + reinterpret_cast<const int16_t*>(data->data().data()), + data->data().size() / sizeof(int16_t) / AudioPipeReader::kChannels)) { return; } - auto packet = std::make_unique<AudioPacket>(); - packet->add_data(data->as_string()); + std::unique_ptr<AudioPacket> packet(new AudioPacket()); + packet->add_data(data->data()); packet->set_encoding(AudioPacket::ENCODING_RAW); packet->set_sampling_rate(AudioPipeReader::kSamplingRate); packet->set_bytes_per_sample(AudioPipeReader::kBytesPerSample);
diff --git a/remoting/host/linux/audio_pipe_reader_unittest.cc b/remoting/host/linux/audio_pipe_reader_unittest.cc index 517f56e..86de440 100644 --- a/remoting/host/linux/audio_pipe_reader_unittest.cc +++ b/remoting/host/linux/audio_pipe_reader_unittest.cc
@@ -41,7 +41,7 @@ // AudioPipeReader::StreamObserver interface. void OnDataRead(scoped_refptr<base::RefCountedString> data) override { - read_data_ += data->as_string(); + read_data_ += data->data(); if (stop_at_position_ > 0 && static_cast<int>(read_data_.size()) >= stop_at_position_) { stop_at_position_ = -1;
diff --git a/remoting/host/linux/x_server_clipboard.cc b/remoting/host/linux/x_server_clipboard.cc index 4af7cf18..0092f7f7 100644 --- a/remoting/host/linux/x_server_clipboard.cc +++ b/remoting/host/linux/x_server_clipboard.cc
@@ -208,7 +208,7 @@ large_selection_property_ = x11::Atom::None; if (reply->type != x11::Atom::None) { HandleSelectionNotify(event, reply->type, reply->format, - reply->value_len, reply->value->bytes()); + reply->value_len, reply->value->data()); return; } }
diff --git a/services/device/hid/hid_connection_impl.cc b/services/device/hid/hid_connection_impl.cc index 677b42d..3b1b56a 100644 --- a/services/device/hid/hid_connection_impl.cc +++ b/services/device/hid/hid_connection_impl.cc
@@ -58,7 +58,7 @@ DCHECK_GE(size, 1u); std::vector<uint8_t> data; if (size > 1) { - data = std::vector<uint8_t>(buffer->data() + 1, buffer->data() + size); + data = std::vector<uint8_t>(buffer->front() + 1, buffer->front() + size); } client_->OnInputReport(/*report_id=*/buffer->data()[0], data); } @@ -80,7 +80,7 @@ } DCHECK(buffer); - std::vector<uint8_t> data(buffer->data() + 1, buffer->data() + size); + std::vector<uint8_t> data(buffer->front() + 1, buffer->front() + size); std::move(callback).Run(true, buffer->data()[0], data); } @@ -90,9 +90,10 @@ DCHECK(hid_connection_); auto io_buffer = - base::MakeRefCounted<base::RefCountedBytes>(buffer.size() + 1u); - io_buffer->as_vector().data()[0u] = report_id; - base::span(io_buffer->as_vector()).subspan(1u).copy_from(buffer); + base::MakeRefCounted<base::RefCountedBytes>(buffer.size() + 1); + io_buffer->data()[0] = report_id; + + base::ranges::copy(buffer, io_buffer->front() + 1); hid_connection_->Write(io_buffer, base::BindOnce(&HidConnectionImpl::OnWrite, weak_factory_.GetWeakPtr(), @@ -123,7 +124,7 @@ } DCHECK(buffer); - std::vector<uint8_t> data(buffer->data(), buffer->data() + size); + std::vector<uint8_t> data(buffer->front(), buffer->front() + size); std::move(callback).Run(true, data); } @@ -133,9 +134,10 @@ DCHECK(hid_connection_); auto io_buffer = - base::MakeRefCounted<base::RefCountedBytes>(buffer.size() + 1u); - io_buffer->as_vector()[0u] = report_id; - base::span(io_buffer->as_vector()).subspan(1u).copy_from(buffer); + base::MakeRefCounted<base::RefCountedBytes>(buffer.size() + 1); + io_buffer->data()[0] = report_id; + + base::ranges::copy(buffer, io_buffer->front() + 1); hid_connection_->SendFeatureReport( io_buffer,
diff --git a/services/device/hid/hid_connection_impl_unittest.cc b/services/device/hid/hid_connection_impl_unittest.cc index 6c44be1..3fc395b2 100644 --- a/services/device/hid/hid_connection_impl_unittest.cc +++ b/services/device/hid/hid_connection_impl_unittest.cc
@@ -372,7 +372,7 @@ write_future.GetCallback()); EXPECT_TRUE(write_future.Get()); ASSERT_TRUE(feature_buffer); - EXPECT_THAT(feature_buffer->as_vector(), ElementsAre(kTestReportId)); + EXPECT_THAT(feature_buffer->data(), ElementsAre(kTestReportId)); } } // namespace device
diff --git a/services/device/hid/hid_connection_linux.cc b/services/device/hid/hid_connection_linux.cc index 2368fee..02c30ba 100644 --- a/services/device/hid/hid_connection_linux.cc +++ b/services/device/hid/hid_connection_linux.cc
@@ -66,7 +66,7 @@ FROM_HERE, base::BlockingType::MAY_BLOCK); ssize_t result = - HANDLE_EINTR(write(fd_.get(), buffer->data(), buffer->size())); + HANDLE_EINTR(write(fd_.get(), buffer->front(), buffer->size())); if (result < 0) { HID_PLOG(EVENT) << "Write failed"; return false; @@ -87,7 +87,7 @@ FROM_HERE, base::BlockingType::MAY_BLOCK); int result = HANDLE_EINTR( - ioctl(fd_.get(), HIDIOCGFEATURE(buffer->size()), buffer->data())); + ioctl(fd_.get(), HIDIOCGFEATURE(buffer->size()), buffer->front())); if (result < 0) { HID_PLOG(EVENT) << "Failed to get feature report"; return std::make_tuple(false, nullptr, 0); @@ -98,7 +98,7 @@ // Linux adds a 0 to the beginning of the data received from the device. auto copied_buffer = base::MakeRefCounted<base::RefCountedBytes>(result - 1); - memcpy(copied_buffer->as_vector().data(), buffer->data() + 1, result - 1); + memcpy(copied_buffer->front(), buffer->front() + 1, result - 1); return std::make_tuple(true, std::move(copied_buffer), result - 1); } else { return std::make_tuple(true, std::move(buffer), result); @@ -111,7 +111,7 @@ FROM_HERE, base::BlockingType::MAY_BLOCK); int result = HANDLE_EINTR( - ioctl(fd_.get(), HIDIOCSFEATURE(buffer->size()), buffer->data())); + ioctl(fd_.get(), HIDIOCSFEATURE(buffer->size()), buffer->front())); if (result < 0) { HID_PLOG(EVENT) << "Failed to send feature report"; return false; @@ -126,7 +126,7 @@ auto buffer = base::MakeRefCounted<base::RefCountedBytes>(report_buffer_size_); - uint8_t* data = buffer->as_vector().data(); + uint8_t* data = buffer->front(); size_t length = report_buffer_size_; if (!has_report_id_) { // Linux will not prefix the buffer with a report ID if report IDs are not @@ -207,7 +207,7 @@ DCHECK_GT(device_info()->max_feature_report_size(), 0u); auto buffer = base::MakeRefCounted<base::RefCountedBytes>( device_info()->max_feature_report_size() + 1); - buffer->as_vector().data()[0] = report_id; + buffer->data()[0] = report_id; auto callback_wrapper = base::BindOnce( [](ReadCallback callback,
diff --git a/services/device/hid/hid_connection_mac.cc b/services/device/hid/hid_connection_mac.cc index c5c66c1..641c140 100644 --- a/services/device/hid/hid_connection_mac.cc +++ b/services/device/hid/hid_connection_mac.cc
@@ -101,28 +101,24 @@ void* sender, IOHIDReportType type, uint32_t report_id, - uint8_t* report_bytes_ptr, - CFIndex report_bytes_len) { + uint8_t* report_bytes, + CFIndex report_length) { HidConnectionMac* connection = static_cast<HidConnectionMac*>(context); if (result != kIOReturnSuccess) { HID_LOG(EVENT) << "Failed to read input report: " << HexErrorCode(result); return; } - // SAFETY: This function is called by macOS with the guarantee that - // `report_byte_ptr` will point to at least `report_bytes_len` many bytes. - base::span<const uint8_t> report_bytes = UNSAFE_BUFFERS(base::span( - report_bytes_ptr, base::checked_cast<size_t>(report_bytes_len))); - scoped_refptr<base::RefCountedBytes> buffer; if (connection->device_info()->has_report_id()) { // report_id is already contained in report_bytes - buffer = base::MakeRefCounted<base::RefCountedBytes>(report_bytes); + buffer = base::MakeRefCounted<base::RefCountedBytes>( + report_bytes, base::checked_cast<size_t>(report_length)); } else { buffer = base::MakeRefCounted<base::RefCountedBytes>( - (base::CheckedNumeric<size_t>(report_bytes.size()) + 1u).ValueOrDie()); - buffer->as_vector()[0] = 0; - base::span(buffer->as_vector()).subspan(1u).copy_from(report_bytes); + (base::CheckedNumeric<size_t>(report_length) + 1).ValueOrDie()); + buffer->front()[0] = 0; + memcpy(buffer->front() + 1, report_bytes, report_length); } connection->ProcessInputReport(buffer, buffer->size()); @@ -141,7 +137,7 @@ // kernel API that this is safe. IOReturn result = IOHIDDeviceGetReport(device_.get(), kIOHIDReportTypeFeature, report_id, - buffer->as_vector().data(), &report_size); + buffer->front(), &report_size); if (result == kIOReturnSuccess) { task_runner_->PostTask( FROM_HERE, base::BindOnce(&HidConnectionMac::ReturnAsyncResult, this, @@ -160,12 +156,15 @@ IOHIDReportType report_type, scoped_refptr<base::RefCountedBytes> buffer, WriteCallback callback) { - auto data = base::span(buffer->as_vector()); - uint8_t report_id = data[0u]; + uint8_t* data = buffer->front(); + size_t size = buffer->size(); + DCHECK_GE(size, 1u); + uint8_t report_id = data[0]; if (report_id == 0) { // OS X only expects the first byte of the buffer to be the report ID if the // report ID is non-zero. - data = data.subspan(1u); + ++data; + --size; } // The IOHIDDevice object is shared with the UI thread and so this function @@ -173,8 +172,8 @@ // version is NOT IMPLEMENTED. I've examined the open source implementation // of this function and believe it is a simple enough wrapper around the // kernel API that this is safe. - IOReturn result = IOHIDDeviceSetReport(device_.get(), report_type, report_id, - data.data(), data.size()); + IOReturn result = + IOHIDDeviceSetReport(device_.get(), report_type, report_id, data, size); if (result == kIOReturnSuccess) { task_runner_->PostTask( FROM_HERE, base::BindOnce(&HidConnectionMac::ReturnAsyncResult, this,
diff --git a/services/device/hid/hid_connection_unittest.cc b/services/device/hid/hid_connection_unittest.cc index f16b681..951ddf92 100644 --- a/services/device/hid/hid_connection_unittest.cc +++ b/services/device/hid/hid_connection_unittest.cc
@@ -210,9 +210,9 @@ const char kBufferSize = 9; for (char i = 0; i < 8; ++i) { auto buffer = base::MakeRefCounted<base::RefCountedBytes>(kBufferSize); - buffer->as_vector()[0] = 0; + buffer->data()[0] = 0; for (unsigned char j = 1; j < kBufferSize; ++j) { - buffer->as_vector()[j] = i + j - 1; + buffer->data()[j] = i + j - 1; } TestIoCallback write_callback; @@ -223,9 +223,9 @@ conn->Read(read_callback.GetReadCallback()); ASSERT_TRUE(read_callback.WaitForResult()); ASSERT_EQ(9UL, read_callback.size()); - ASSERT_EQ(0, read_callback.buffer()->as_vector()[0]); + ASSERT_EQ(0, read_callback.buffer()->data()[0]); for (unsigned char j = 1; j < kBufferSize; ++j) { - ASSERT_EQ(i + j - 1, read_callback.buffer()->as_vector()[j]); + ASSERT_EQ(i + j - 1, read_callback.buffer()->data()[j]); } }
diff --git a/services/device/hid/hid_connection_win.cc b/services/device/hid/hid_connection_win.cc index 89f80047..87bef72d 100644 --- a/services/device/hid/hid_connection_win.cc +++ b/services/device/hid/hid_connection_win.cc
@@ -149,9 +149,9 @@ // to the maximum output report size supported by this collection. size_t expected_size = device_info()->max_output_report_size() + 1; DCHECK(buffer->size() <= expected_size); - buffer->as_vector().resize(expected_size); + buffer->data().resize(expected_size); - uint8_t report_id = buffer->as_vector()[0]; + uint8_t report_id = buffer->data()[0]; HANDLE file_handle = GetHandleForReportId(report_id); if (!IsValidHandle(file_handle)) { HID_LOG(DEBUG) << "HID write failed due to invalid handle."; @@ -162,9 +162,9 @@ transfers_.push_back(std::make_unique<PendingHidTransfer>( buffer, base::BindOnce(&HidConnectionWin::OnWriteComplete, this, file_handle, std::move(callback)))); - transfers_.back()->TakeResultFromWindowsAPI( - WriteFile(file_handle, buffer->data(), static_cast<DWORD>(buffer->size()), - NULL, transfers_.back()->GetOverlapped())); + transfers_.back()->TakeResultFromWindowsAPI(WriteFile( + file_handle, buffer->front(), static_cast<DWORD>(buffer->size()), NULL, + transfers_.back()->GetOverlapped())); } void HidConnectionWin::PlatformGetFeatureReport(uint8_t report_id, @@ -172,7 +172,7 @@ // The first byte of the destination buffer is the report ID being requested. auto buffer = base::MakeRefCounted<base::RefCountedBytes>( device_info()->max_feature_report_size() + 1); - buffer->as_vector()[0] = report_id; + buffer->data()[0] = report_id; HANDLE file_handle = GetHandleForReportId(report_id); if (!IsValidHandle(file_handle)) { @@ -184,16 +184,16 @@ transfers_.push_back(std::make_unique<PendingHidTransfer>( buffer, base::BindOnce(&HidConnectionWin::OnReadFeatureComplete, this, file_handle, buffer, std::move(callback)))); - transfers_.back()->TakeResultFromWindowsAPI(DeviceIoControl( - file_handle, IOCTL_HID_GET_FEATURE, NULL, 0, buffer->as_vector().data(), - static_cast<DWORD>(buffer->as_vector().size()), NULL, - transfers_.back()->GetOverlapped())); + transfers_.back()->TakeResultFromWindowsAPI( + DeviceIoControl(file_handle, IOCTL_HID_GET_FEATURE, NULL, 0, + buffer->front(), static_cast<DWORD>(buffer->size()), NULL, + transfers_.back()->GetOverlapped())); } void HidConnectionWin::PlatformSendFeatureReport( scoped_refptr<base::RefCountedBytes> buffer, WriteCallback callback) { - uint8_t report_id = buffer->as_vector()[0]; + uint8_t report_id = buffer->data()[0]; HANDLE file_handle = GetHandleForReportId(report_id); if (!IsValidHandle(file_handle)) { HID_LOG(DEBUG) << "HID write failed due to invalid handle."; @@ -206,10 +206,10 @@ transfers_.push_back(std::make_unique<PendingHidTransfer>( buffer, base::BindOnce(&HidConnectionWin::OnWriteComplete, this, file_handle, std::move(callback)))); - transfers_.back()->TakeResultFromWindowsAPI(DeviceIoControl( - file_handle, IOCTL_HID_SET_FEATURE, buffer->as_vector().data(), - static_cast<DWORD>(buffer->as_vector().size()), NULL, 0, NULL, - transfers_.back()->GetOverlapped())); + transfers_.back()->TakeResultFromWindowsAPI( + DeviceIoControl(file_handle, IOCTL_HID_SET_FEATURE, buffer->front(), + static_cast<DWORD>(buffer->size()), NULL, 0, NULL, + transfers_.back()->GetOverlapped())); } void HidConnectionWin::SetUpInitialReads() { @@ -227,9 +227,8 @@ buffer, base::BindOnce(&HidConnectionWin::OnReadInputReport, this, file_handle, buffer))); transfers_.back()->TakeResultFromWindowsAPI( - ReadFile(file_handle, buffer->as_vector().data(), - static_cast<DWORD>(buffer->as_vector().size()), NULL, - transfers_.back()->GetOverlapped())); + ReadFile(file_handle, buffer->front(), static_cast<DWORD>(buffer->size()), + NULL, transfers_.back()->GetOverlapped())); } void HidConnectionWin::OnReadInputReport( @@ -255,7 +254,7 @@ return; } - uint8_t report_id = buffer->as_vector()[0]; + uint8_t report_id = buffer->data()[0]; if (!IsReportProtected(report_id, HidReportType::kInput)) { // Hold a reference to |this| to prevent a callback executed by // ProcessInputReport from freeing this object.
diff --git a/services/device/usb/fake_usb_device_handle.cc b/services/device/usb/fake_usb_device_handle.cc index b969ade..8cf522b 100644 --- a/services/device/usb/fake_usb_device_handle.cc +++ b/services/device/usb/fake_usb_device_handle.cc
@@ -88,10 +88,7 @@ } if (direction == UsbTransferDirection::INBOUND) { - auto source_data = UNSAFE_BUFFERS(base::span(data_, size_)); - base::span(buffer->as_vector()) - .first(bytes_transferred) - .copy_from(source_data.subspan(position_, bytes_transferred)); + memcpy(buffer->front(), &data_[position_], bytes_transferred); position_ += bytes_transferred; }
diff --git a/services/device/usb/mojo/device_impl.cc b/services/device/usb/mojo/device_impl.cc index 724ceb3..11ae873 100644 --- a/services/device/usb/mojo/device_impl.cc +++ b/services/device/usb/mojo/device_impl.cc
@@ -37,7 +37,7 @@ UsbTransferStatus status, scoped_refptr<base::RefCountedBytes> buffer, size_t buffer_size) { - auto data = buffer ? base::span(*buffer).first(buffer_size) + auto data = buffer ? base::make_span(buffer->front(), buffer_size) : base::span<const uint8_t>(); std::move(callback).Run(mojo::ConvertTo<mojom::UsbTransferStatus>(status), data); @@ -59,7 +59,7 @@ [](const uint32_t& a, const UsbIsochronousPacketPtr& packet) { return a + packet->length; }); - auto data = buffer ? base::span(*buffer).first(buffer_size) + auto data = buffer ? base::make_span(buffer->front(), buffer_size) : base::span<const uint8_t>(); std::move(callback).Run(data, std::move(packets)); }
diff --git a/services/device/usb/usb_descriptors.cc b/services/device/usb/usb_descriptors.cc index 3b0a3e6..f5f5e8ed 100644 --- a/services/device/usb/usb_descriptors.cc +++ b/services/device/usb/usb_descriptors.cc
@@ -110,7 +110,7 @@ scoped_refptr<base::RefCountedBytes> buffer, size_t length) { if (status == UsbTransferStatus::COMPLETED) { - if (!desc->Parse(base::span(*buffer).first(length))) { + if (!desc->Parse(base::make_span(buffer->front(), length))) { LOG(ERROR) << "Failed to parse configuration descriptor."; } } else { @@ -128,7 +128,7 @@ size_t length) { if (status == UsbTransferStatus::COMPLETED && length == kConfigurationDescriptorLength) { - auto data = base::span<const uint8_t>(*header); + const uint8_t* data = header->front(); uint16_t total_length = data[2] | data[3] << 8; auto buffer = base::MakeRefCounted<base::RefCountedBytes>(total_length); device_handle->ControlTransfer( @@ -157,7 +157,7 @@ } std::unique_ptr<UsbDeviceDescriptor> desc(new UsbDeviceDescriptor()); - if (!desc->Parse(base::span(*buffer).first(length))) { + if (!desc->Parse(base::make_span(buffer->front(), length))) { LOG(ERROR) << "Device descriptor parsing error."; std::move(callback).Run(nullptr); return; @@ -200,10 +200,10 @@ scoped_refptr<base::RefCountedBytes> buffer, size_t length) { std::u16string string; - auto to_read = base::span(*buffer).first(length); if (status == UsbTransferStatus::COMPLETED && ParseUsbStringDescriptor( - std::vector<uint8_t>(to_read.begin(), to_read.end()), &string)) { + std::vector<uint8_t>(buffer->front(), buffer->front() + length), + &string)) { std::move(callback).Run(string); } else { std::move(callback).Run(std::u16string());
diff --git a/services/device/usb/usb_descriptors_unittest.cc b/services/device/usb/usb_descriptors_unittest.cc index 4eaf2679..b5b36d7 100644 --- a/services/device/usb/usb_descriptors_unittest.cc +++ b/services/device/usb/usb_descriptors_unittest.cc
@@ -32,10 +32,7 @@ ACTION_P2(InvokeCallback, data, length) { size_t transferred_length = std::min(length, arg6->size()); - base::span(arg6->as_vector()) - .first(transferred_length) - .copy_from( - UNSAFE_BUFFERS(base::span(data, length)).first(transferred_length)); + memcpy(arg6->front(), data, transferred_length); std::move(arg8).Run(UsbTransferStatus::COMPLETED, arg6, transferred_length); }
diff --git a/services/device/usb/usb_device_handle_impl.cc b/services/device/usb/usb_device_handle_impl.cc index 3bb1061..c556bd1 100644 --- a/services/device/usb/usb_device_handle_impl.cc +++ b/services/device/usb/usb_device_handle_impl.cc
@@ -273,11 +273,10 @@ return nullptr; } - libusb_fill_control_setup(buffer->as_vector().data(), type, request, value, - index, length); + libusb_fill_control_setup(buffer->front(), type, request, value, index, + length); libusb_fill_control_transfer(transfer->platform_transfer_, - device_handle->handle(), - buffer->as_vector().data(), + device_handle->handle(), buffer->front(), &UsbDeviceHandleImpl::Transfer::PlatformCallback, transfer.get(), timeout); @@ -304,11 +303,10 @@ return nullptr; } - libusb_fill_bulk_transfer(transfer->platform_transfer_, - device_handle->handle(), endpoint, - buffer->as_vector().data(), length, - &UsbDeviceHandleImpl::Transfer::PlatformCallback, - transfer.get(), timeout); + libusb_fill_bulk_transfer( + transfer->platform_transfer_, device_handle->handle(), endpoint, + buffer->front(), length, &UsbDeviceHandleImpl::Transfer::PlatformCallback, + transfer.get(), timeout); return transfer; } @@ -335,9 +333,8 @@ libusb_fill_interrupt_transfer( transfer->platform_transfer_, device_handle->handle(), endpoint, - buffer->as_vector().data(), length, - &UsbDeviceHandleImpl::Transfer::PlatformCallback, transfer.get(), - timeout); + buffer->front(), length, &UsbDeviceHandleImpl::Transfer::PlatformCallback, + transfer.get(), timeout); return transfer; } @@ -366,7 +363,7 @@ libusb_fill_iso_transfer( transfer->platform_transfer_, device_handle->handle(), endpoint, - buffer->as_vector().data(), static_cast<int>(length), num_packets, + buffer->front(), static_cast<int>(length), num_packets, &Transfer::PlatformCallback, transfer.get(), timeout); for (size_t i = 0; i < packet_lengths.size(); ++i) @@ -448,9 +445,8 @@ if (length_ >= (LIBUSB_CONTROL_SETUP_SIZE + actual_length)) { auto resized_buffer = base::MakeRefCounted<base::RefCountedBytes>(actual_length); - base::span(resized_buffer->as_vector()) - .copy_from(base::span(*buffer_).subspan(LIBUSB_CONTROL_SETUP_SIZE, - actual_length)); + memcpy(resized_buffer->front(), + buffer_->front() + LIBUSB_CONTROL_SETUP_SIZE, actual_length); buffer_ = resized_buffer; } } @@ -705,9 +701,8 @@ const size_t resized_length = LIBUSB_CONTROL_SETUP_SIZE + buffer->size(); auto resized_buffer = base::MakeRefCounted<base::RefCountedBytes>(resized_length); - base::span(resized_buffer->as_vector()) - .subspan(LIBUSB_CONTROL_SETUP_SIZE) - .copy_from(base::span(*buffer)); + memcpy(resized_buffer->front() + LIBUSB_CONTROL_SETUP_SIZE, buffer->front(), + buffer->size()); std::unique_ptr<Transfer> transfer = Transfer::CreateControlTransfer( this, CreateRequestType(direction, request_type, recipient), request,
diff --git a/services/device/usb/usb_device_handle_mac.cc b/services/device/usb/usb_device_handle_mac.cc index 8ee09f51..9c30e80 100644 --- a/services/device/usb/usb_device_handle_mac.cc +++ b/services/device/usb/usb_device_handle_mac.cc
@@ -449,7 +449,7 @@ device_request.wIndex = index; device_request.bmRequestType = CreateRequestType(direction, request_type, recipient); - device_request.pData = buffer->as_vector().data(); + device_request.pData = buffer->front_as<void*>(); device_request.wLength = static_cast<uint16_t>(buffer->size()); device_request.completionTimeout = timeout; device_request.noDataTimeout = timeout; @@ -550,7 +550,7 @@ kr = (*interface_interface.get()) ->ReadIsochPipeAsync(interface_interface.get(), endpoint_it->second.pipe_reference, - buffer->as_vector().data(), bus_frame, + buffer->front_as<void*>(), bus_frame, static_cast<uint32_t>(packet_lengths.size()), transfer->frame_list.data(), &AsyncIoCallback, reinterpret_cast<void*>(transfer_data)); @@ -636,7 +636,7 @@ kr = (*interface_interface.get()) ->WriteIsochPipeAsync(interface_interface.get(), endpoint_it->second.pipe_reference, - buffer->as_vector().data(), bus_frame, + buffer->front_as<void*>(), bus_frame, static_cast<uint32_t>(packet_lengths.size()), transfer->frame_list.data(), &AsyncIoCallback, reinterpret_cast<void*>(transfer_data)); @@ -749,7 +749,7 @@ auto result = transfers_.insert(std::move(transfer)); IOReturn kr = (*interface_interface.get()) ->ReadPipeAsyncTO(interface_interface.get(), pipe_reference, - buffer->as_vector().data(), + buffer->front_as<void*>(), static_cast<uint32_t>(buffer->size()), timeout, timeout, &AsyncIoCallback, reinterpret_cast<void*>(transfer_data)); @@ -773,7 +773,7 @@ IOReturn kr = (*interface_interface.get()) ->WritePipeAsyncTO(interface_interface.get(), pipe_reference, - buffer->as_vector().data(), + buffer->front_as<void*>(), static_cast<uint32_t>(buffer->size()), timeout, timeout, &AsyncIoCallback, reinterpret_cast<void*>(transfer_data)); @@ -795,7 +795,7 @@ auto result = transfers_.insert(std::move(transfer)); IOReturn kr = (*interface_interface.get()) ->ReadPipeAsync(interface_interface.get(), pipe_reference, - buffer->as_vector().data(), + buffer->front_as<void*>(), static_cast<uint32_t>(buffer->size()), &AsyncIoCallback, reinterpret_cast<void*>(transfer_data)); @@ -816,7 +816,7 @@ auto result = transfers_.insert(std::move(transfer)); IOReturn kr = (*interface_interface.get()) ->WritePipeAsync(interface_interface.get(), pipe_reference, - buffer->as_vector().data(), + buffer->front_as<void*>(), static_cast<uint32_t>(buffer->size()), &AsyncIoCallback, reinterpret_cast<void*>(transfer_data));
diff --git a/services/device/usb/usb_device_handle_unittest.cc b/services/device/usb/usb_device_handle_unittest.cc index 71624c1..3576b69 100644 --- a/services/device/usb/usb_device_handle_unittest.cc +++ b/services/device/usb/usb_device_handle_unittest.cc
@@ -164,7 +164,7 @@ base::MakeRefCounted<base::RefCountedBytes>(in_buffer->size()); TestCompletionCallback out_completion; for (size_t i = 0; i < out_buffer->size(); ++i) { - out_buffer->as_vector()[i] = i; + out_buffer->data()[i] = i; } handle->GenericTransfer(UsbTransferDirection::OUTBOUND, 0x01, out_buffer, @@ -230,7 +230,7 @@ base::MakeRefCounted<base::RefCountedBytes>(in_buffer->size()); TestCompletionCallback out_completion; for (size_t i = 0; i < out_buffer->size(); ++i) { - out_buffer->as_vector()[i] = i; + out_buffer->data()[i] = i; } handle->GenericTransfer(UsbTransferDirection::OUTBOUND, 0x02, out_buffer,
diff --git a/services/device/usb/usb_device_handle_usbfs.cc b/services/device/usb/usb_device_handle_usbfs.cc index 87c7f6ca..ec4a06a 100644 --- a/services/device/usb/usb_device_handle_usbfs.cc +++ b/services/device/usb/usb_device_handle_usbfs.cc
@@ -96,18 +96,16 @@ scoped_refptr<base::RefCountedBytes> original_buffer) { auto new_buffer = base::MakeRefCounted<base::RefCountedBytes>( original_buffer->size() + sizeof(usb_ctrlrequest)); - usb_ctrlrequest setup; - setup.bRequestType = ConvertEndpointDirection(direction) | - ConvertRequestType(request_type) | - ConvertRecipient(recipient); - setup.bRequest = request; - setup.wValue = value; - setup.wIndex = index; - setup.wLength = original_buffer->size(); - auto [setup_span, remain] = - base::span(new_buffer->as_vector()).split_at<sizeof(setup)>(); - setup_span.copy_from(base::byte_span_from_ref(setup)); - remain.copy_from(base::span(*original_buffer)); + usb_ctrlrequest* setup = new_buffer->front_as<usb_ctrlrequest>(); + setup->bRequestType = ConvertEndpointDirection(direction) | + ConvertRequestType(request_type) | + ConvertRecipient(recipient); + setup->bRequest = request; + setup->wValue = value; + setup->wIndex = index; + setup->wLength = original_buffer->size(); + memcpy(new_buffer->front() + sizeof(usb_ctrlrequest), + original_buffer->front(), original_buffer->size()); return new_buffer; } @@ -375,19 +373,19 @@ } UsbDeviceHandleUsbfs::Transfer::Transfer( - scoped_refptr<base::RefCountedBytes> in_buffer, + scoped_refptr<base::RefCountedBytes> buffer, TransferCallback callback) - : buffer(std::move(in_buffer)), callback(std::move(callback)) { + : buffer(buffer), callback(std::move(callback)) { urb.usercontext = this; - urb.buffer = buffer->as_vector().data(); + urb.buffer = buffer->front(); } UsbDeviceHandleUsbfs::Transfer::Transfer( - scoped_refptr<base::RefCountedBytes> in_buffer, + scoped_refptr<base::RefCountedBytes> buffer, IsochronousTransferCallback callback) - : buffer(std::move(in_buffer)), isoc_callback(std::move(callback)) { + : buffer(buffer), isoc_callback(std::move(callback)) { urb.usercontext = this; - urb.buffer = buffer->as_vector().data(); + urb.buffer = buffer->front(); } UsbDeviceHandleUsbfs::Transfer::~Transfer() = default; @@ -626,9 +624,8 @@ direction, request_type, recipient, request, value, index, buffer); transfer->urb.type = USBDEVFS_URB_TYPE_CONTROL; transfer->urb.endpoint = 0; - transfer->urb.buffer = transfer->control_transfer_buffer->as_vector().data(); - transfer->urb.buffer_length = - transfer->control_transfer_buffer->as_vector().size(); + transfer->urb.buffer = transfer->control_transfer_buffer->front(); + transfer->urb.buffer_length = transfer->control_transfer_buffer->size(); // USBDEVFS_SUBMITURB appears to be non-blocking as completion is reported // by USBDEVFS_REAPURBNDELAY. @@ -920,12 +917,9 @@ if (transfer->urb.status == 0 && transfer->urb.type == USBDEVFS_URB_TYPE_CONTROL) { // Copy the result of the control transfer back into the original buffer. - const auto actual_length = - base::checked_cast<size_t>(transfer->urb.actual_length); - base::span(transfer->buffer->as_vector()) - .first(actual_length) - .copy_from(base::span(*transfer->control_transfer_buffer) - .subspan(8u, actual_length)); + memcpy(transfer->buffer->front(), + transfer->control_transfer_buffer->front() + 8, + transfer->urb.actual_length); } transfer->RunCallback(ConvertTransferResult(-transfer->urb.status),
diff --git a/services/device/usb/usb_device_handle_win.cc b/services/device/usb/usb_device_handle_win.cc index c563d7ae..9164a05 100644 --- a/services/device/usb/usb_device_handle_win.cc +++ b/services/device/usb/usb_device_handle_win.cc
@@ -461,23 +461,20 @@ ((value >> 8) == USB_BOS_DESCRIPTOR_TYPE)) { size_t size = sizeof(USB_DESCRIPTOR_REQUEST) + buffer->size(); auto request_buffer = base::MakeRefCounted<base::RefCountedBytes>(size); - USB_DESCRIPTOR_REQUEST descriptor_request; - descriptor_request.ConnectionIndex = device_->port_number(); - descriptor_request.SetupPacket.bmRequest = BMREQUEST_DEVICE_TO_HOST; - descriptor_request.SetupPacket.bRequest = USB_REQUEST_GET_DESCRIPTOR; - descriptor_request.SetupPacket.wValue = value; - descriptor_request.SetupPacket.wIndex = index; - descriptor_request.SetupPacket.wLength = buffer->size(); - base::span(request_buffer->as_vector()) - .first<sizeof(USB_DESCRIPTOR_REQUEST)>() - .copy_from(base::byte_span_from_ref(descriptor_request)); + USB_DESCRIPTOR_REQUEST* descriptor_request = + request_buffer->front_as<USB_DESCRIPTOR_REQUEST>(); + descriptor_request->ConnectionIndex = device_->port_number(); + descriptor_request->SetupPacket.bmRequest = BMREQUEST_DEVICE_TO_HOST; + descriptor_request->SetupPacket.bRequest = USB_REQUEST_GET_DESCRIPTOR; + descriptor_request->SetupPacket.wValue = value; + descriptor_request->SetupPacket.wIndex = index; + descriptor_request->SetupPacket.wLength = buffer->size(); blocking_task_runner_->PostTaskAndReplyWithResult( FROM_HERE, base::BindOnce(&DeviceIoControlBlocking, hub_handle_.Get(), IOCTL_USB_GET_DESCRIPTOR_FROM_NODE_CONNECTION, - request_buffer->as_vector().data(), - request_buffer->as_vector().size()), + request_buffer->front(), size), base::BindOnce(&UsbDeviceHandleWin::GotDescriptorFromNodeConnection, weak_factory_.GetWeakPtr(), std::move(callback), request_buffer, buffer)); @@ -563,13 +560,13 @@ Request* request = MakeRequest(interface); BOOL result; if (direction == UsbTransferDirection::INBOUND) { - result = WinUsb_ReadPipe( - interface->handle.Get(), endpoint_address, buffer->as_vector().data(), - buffer->as_vector().size(), nullptr, request->overlapped()); + result = WinUsb_ReadPipe(interface->handle.Get(), endpoint_address, + buffer->front(), buffer->size(), nullptr, + request->overlapped()); } else { - result = WinUsb_WritePipe( - interface->handle.Get(), endpoint_address, buffer->as_vector().data(), - buffer->as_vector().size(), nullptr, request->overlapped()); + result = WinUsb_WritePipe(interface->handle.Get(), endpoint_address, + buffer->front(), buffer->size(), nullptr, + request->overlapped()); } DWORD last_error = GetLastError(); request->MaybeStartWatching( @@ -979,8 +976,7 @@ Request* control_request = MakeRequest(interface); BOOL result = WinUsb_ControlTransfer( - interface->handle.Get(), setup, buffer->as_vector().data(), - buffer->as_vector().size(), + interface->handle.Get(), setup, buffer->front(), buffer->size(), /*LengthTransferred=*/nullptr, control_request->overlapped()); DWORD last_error = GetLastError(); control_request->MaybeStartWatching( @@ -1035,11 +1031,8 @@ size_t bytes_transferred = std::min(sizeof(USB_DEVICE_DESCRIPTOR), buffer->size()); - base::span(buffer->as_vector()) - .first(bytes_transferred) - .copy_from( - base::byte_span_from_ref(node_connection_info->DeviceDescriptor) - .first(bytes_transferred)); + memcpy(buffer->front(), &node_connection_info->DeviceDescriptor, + bytes_transferred); std::move(callback).Run(UsbTransferStatus::COMPLETED, buffer, bytes_transferred); } @@ -1070,11 +1063,9 @@ result_and_bytes_transferred.second - sizeof(USB_DESCRIPTOR_REQUEST); bytes_transferred = std::min(bytes_transferred, original_buffer->size()); - base::span(original_buffer->as_vector()) - .first(bytes_transferred) - .copy_from( - base::span(*request_buffer) - .subspan(sizeof(USB_DESCRIPTOR_REQUEST), bytes_transferred)); + memcpy(original_buffer->front(), + request_buffer->front() + sizeof(USB_DESCRIPTOR_REQUEST), + bytes_transferred); std::move(callback).Run(UsbTransferStatus::COMPLETED, original_buffer, bytes_transferred); }
diff --git a/services/device/usb/webusb_descriptors.cc b/services/device/usb/webusb_descriptors.cc index 62f7da5..805464b 100644 --- a/services/device/usb/webusb_descriptors.cc +++ b/services/device/usb/webusb_descriptors.cc
@@ -63,7 +63,7 @@ } GURL url; - ParseWebUsbUrlDescriptor(base::make_span(buffer->data(), length), &url); + ParseWebUsbUrlDescriptor(base::make_span(buffer->front(), length), &url); std::move(callback).Run(url); } @@ -80,7 +80,7 @@ WebUsbPlatformCapabilityDescriptor descriptor; if (!descriptor.ParseFromBosDescriptor( - base::make_span(buffer->data(), length))) { + base::make_span(buffer->front(), length))) { std::move(callback).Run(std::nullopt); return; } @@ -99,7 +99,7 @@ return; } - const uint8_t* data = buffer->data(); + const uint8_t* data = buffer->front(); uint16_t new_length = data[2] | (data[3] << 8); auto new_buffer = base::MakeRefCounted<base::RefCountedBytes>(new_length); device_handle->ControlTransfer(
diff --git a/services/device/usb/webusb_descriptors_unittest.cc b/services/device/usb/webusb_descriptors_unittest.cc index 6f88256..e338842 100644 --- a/services/device/usb/webusb_descriptors_unittest.cc +++ b/services/device/usb/webusb_descriptors_unittest.cc
@@ -53,10 +53,7 @@ ACTION_P2(InvokeCallback, data, length) { size_t transferred_length = std::min(length, arg6->size()); - base::span(arg6->as_vector()) - .first(transferred_length) - .copy_from( - UNSAFE_BUFFERS(base::span(data, length)).first(transferred_length)); + memcpy(arg6->front(), data, transferred_length); std::move(arg8).Run(UsbTransferStatus::COMPLETED, arg6, transferred_length); }
diff --git a/services/network/network_service_memory_cache.cc b/services/network/network_service_memory_cache.cc index b83e98c..2536256 100644 --- a/services/network/network_service_memory_cache.cc +++ b/services/network/network_service_memory_cache.cc
@@ -135,8 +135,8 @@ if (decision == orb::ResponseAnalyzer::Decision::kSniffMore) { const size_t size = std::min(static_cast<size_t>(net::kMaxBytesToSniff), content.size()); - decision = - analyzer->Sniff(base::as_string_view(base::span(content).first(size))); + decision = analyzer->Sniff( + std::string_view(reinterpret_cast<const char*>(content.front()), size)); if (decision == orb::ResponseAnalyzer::Decision::kSniffMore) { decision = analyzer->HandleEndOfSniffableResponseBody(); }
diff --git a/services/network/network_service_memory_cache_url_loader.cc b/services/network/network_service_memory_cache_url_loader.cc index e98edb3..fcb2249 100644 --- a/services/network/network_service_memory_cache_url_loader.cc +++ b/services/network/network_service_memory_cache_url_loader.cc
@@ -167,9 +167,9 @@ break; } - MojoResult result = producer_handle_->WriteData( - content_->as_vector().data() + write_position_, &write_size, - MOJO_WRITE_DATA_FLAG_NONE); + MojoResult result = + producer_handle_->WriteData(content_->data().data() + write_position_, + &write_size, MOJO_WRITE_DATA_FLAG_NONE); if (result == MOJO_RESULT_SHOULD_WAIT) { producer_handle_watcher_->ArmOrNotify(); break; @@ -192,8 +192,8 @@ if (net_log_.IsCapturing()) { net_log_.AddByteTransferEvent( net::NetLogEventType::IN_MEMORY_CACHE_BYTES_READ, total_write_size, - base::as_chars(base::span(*content_).subspan(original_write_position)) - .data()); + reinterpret_cast<const char*>(content_->data().data() + + original_write_position)); } if (write_completed) {
diff --git a/services/network/web_bundle/web_bundle_chunked_buffer.cc b/services/network/web_bundle/web_bundle_chunked_buffer.cc index 8d3da169c..e2592af 100644 --- a/services/network/web_bundle/web_bundle_chunked_buffer.cc +++ b/services/network/web_bundle/web_bundle_chunked_buffer.cc
@@ -81,7 +81,7 @@ } const uint8_t* WebBundleChunkedBuffer::Chunk::data() const { - return bytes_->data(); + return bytes_->data().data(); } WebBundleChunkedBuffer::WebBundleChunkedBuffer() = default;
diff --git a/services/tracing/public/cpp/perfetto/producer_test_utils.cc b/services/tracing/public/cpp/perfetto/producer_test_utils.cc index 878131fc..b22c485 100644 --- a/services/tracing/public/cpp/perfetto/producer_test_utils.cc +++ b/services/tracing/public/cpp/perfetto/producer_test_utils.cc
@@ -271,8 +271,7 @@ const scoped_refptr<base::RefCountedString>& chunk, bool has_more_events) { perfetto::protos::Trace trace; - auto chunk_data = base::span(*chunk); - bool ok = trace.ParseFromArray(chunk_data.data(), chunk_data.size()); + bool ok = trace.ParseFromArray(chunk->data().data(), chunk->data().size()); DCHECK(ok); for (const auto& packet : trace.packet()) { // Filter out packets from the tracing service.
diff --git a/services/tracing/public/cpp/perfetto/system_trace_writer.h b/services/tracing/public/cpp/perfetto/system_trace_writer.h index e5e30c2a..5fb7220 100644 --- a/services/tracing/public/cpp/perfetto/system_trace_writer.h +++ b/services/tracing/public/cpp/perfetto/system_trace_writer.h
@@ -29,7 +29,7 @@ inline const std::string& GetString( const scoped_refptr<base::RefCountedString>& string) { - return string->as_string(); + return string->data(); } } // namespace internal
diff --git a/services/webnn/coreml/graph_impl.h b/services/webnn/coreml/graph_impl.h index a62bd74b..433bc84 100644 --- a/services/webnn/coreml/graph_impl.h +++ b/services/webnn/coreml/graph_impl.h
@@ -11,9 +11,9 @@ #include "base/files/file_path.h" #include "base/files/scoped_temp_dir.h" #include "base/memory/scoped_refptr.h" +#include "base/sequence_checker.h" #include "base/task/single_thread_task_runner.h" #include "base/timer/elapsed_timer.h" - #include "services/webnn/coreml/graph_builder.h" #include "services/webnn/public/mojom/webnn_context_provider.mojom.h" #include "services/webnn/public/mojom/webnn_graph.mojom.h" @@ -106,11 +106,20 @@ void ComputeImpl( base::flat_map<std::string, mojo_base::BigBuffer> named_inputs, mojom::WebNNGraph::ComputeCallback callback) override; + void DidPredict(base::ElapsedTimer model_predict_timer, + mojom::WebNNGraph::ComputeCallback callback, + id<MLFeatureProvider> output_features, + NSError* error); private: + SEQUENCE_CHECKER(sequence_checker_); + std::unique_ptr<CoreMLFeatureInfoMap> input_feature_info_; base::flat_map<std::string, std::string> coreml_name_to_operand_name_; MLModel* __strong ml_model_; + + base::WeakPtrFactory<GraphImpl> weak_factory_ + GUARDED_BY_CONTEXT(sequence_checker_){this}; }; } // namespace webnn::coreml
diff --git a/services/webnn/coreml/graph_impl.mm b/services/webnn/coreml/graph_impl.mm index 7d17790d..3b7b3a6 100644 --- a/services/webnn/coreml/graph_impl.mm +++ b/services/webnn/coreml/graph_impl.mm
@@ -14,11 +14,13 @@ #include "base/files/file.h" #include "base/files/file_path.h" #include "base/files/file_util.h" +#include "base/functional/callback_helpers.h" #include "base/metrics/histogram_macros.h" #include "base/numerics/checked_math.h" #include "base/strings/string_number_conversions.h" #include "base/strings/sys_string_conversions.h" #include "base/synchronization/waitable_event.h" +#include "base/task/bind_post_task.h" #include "base/task/thread_pool.h" #include "base/trace_event/trace_event.h" #include "base/types/expected_macros.h" @@ -292,10 +294,13 @@ void GraphImpl::ComputeImpl( base::flat_map<std::string, mojo_base::BigBuffer> named_inputs, mojom::WebNNGraph::ComputeCallback callback) { - base::ElapsedTimer model_predict_timer; + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); TRACE_EVENT0("gpu", "webnn::coreml::GraphImpl::ComputeImpl"); CHECK(ml_model_); - // Create MLFeatureValue for each of the named_inputs + + base::ElapsedTimer model_predict_timer; + + // Create MLFeatureValue for each of the `named_inputs`. NSMutableSet* feature_names = [[NSMutableSet alloc] init]; NSMutableDictionary* feature_values = [[NSMutableDictionary alloc] init]; for (auto& [key, buffer] : named_inputs) { @@ -329,17 +334,28 @@ [MLFeatureValue featureValueWithMultiArray:placeholder_input]; } - // Run the MLModel + // Run the MLModel asynchronously. WebNNMLFeatureProvider* feature_provider = [[WebNNMLFeatureProvider alloc] initWithFeatures:feature_names featureValues:feature_values]; - // TODO(https://crbug.com/1522281): Consider using async version of this - // API that is available in Mac OS 14. - NSError* error; - id<MLFeatureProvider> output_features = - [ml_model_ predictionFromFeatures:feature_provider error:&error]; + auto done_callback = + base::BindOnce(&GraphImpl::DidPredict, weak_factory_.GetWeakPtr(), + std::move(model_predict_timer), std::move(callback)); + [ml_model_ predictionFromFeatures:feature_provider + completionHandler:base::CallbackToBlock( + base::BindPostTaskToCurrentDefault( + std::move(done_callback)))]; +} + +void GraphImpl::DidPredict(base::ElapsedTimer model_predict_timer, + mojom::WebNNGraph::ComputeCallback callback, + id<MLFeatureProvider> output_features, + NSError* error) { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + UMA_HISTOGRAM_MEDIUM_TIMES("WebNN.CoreML.TimingMs.ModelPredict", model_predict_timer.Elapsed()); + if (error) { DLOG(ERROR) << "webnn::coreml predictionError : " << error; std::move(callback).Run(mojom::ComputeResult::NewError(mojom::Error::New(
diff --git a/testing/buildbot/chromium.chromiumos.json b/testing/buildbot/chromium.chromiumos.json index 7e87c4b..671d35a 100644 --- a/testing/buildbot/chromium.chromiumos.json +++ b/testing/buildbot/chromium.chromiumos.json
@@ -5544,9 +5544,9 @@ { "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/linux-lacros.interactive_ui_tests.filter;../../testing/buildbot/filters/linux-lacros.interactive_ui_tests.skew.filter", - "--ash-chrome-path-override=../../lacros_version_skew_tests_v123.0.6312.112/test_ash_chrome" + "--ash-chrome-path-override=../../lacros_version_skew_tests_v123.0.6312.132/test_ash_chrome" ], - "description": "Run with ash-chrome version 123.0.6312.112", + "description": "Run with ash-chrome version 123.0.6312.132", "isolate_profile_data": true, "merge": { "script": "//testing/merge_scripts/standard_gtest_merge.py" @@ -5556,8 +5556,8 @@ "cipd_packages": [ { "cipd_package": "chromium/testing/linux-ash-chromium/x86_64/ash.zip", - "location": "lacros_version_skew_tests_v123.0.6312.112", - "revision": "version:123.0.6312.112" + "location": "lacros_version_skew_tests_v123.0.6312.132", + "revision": "version:123.0.6312.132" } ], "dimensions": { @@ -5700,9 +5700,9 @@ { "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/linux-lacros.lacros_chrome_browsertests.filter;../../testing/buildbot/filters/linux-lacros.lacros_chrome_browsertests.skew.filter", - "--ash-chrome-path-override=../../lacros_version_skew_tests_v123.0.6312.112/test_ash_chrome" + "--ash-chrome-path-override=../../lacros_version_skew_tests_v123.0.6312.132/test_ash_chrome" ], - "description": "Run with ash-chrome version 123.0.6312.112", + "description": "Run with ash-chrome version 123.0.6312.132", "isolate_profile_data": true, "merge": { "script": "//testing/merge_scripts/standard_gtest_merge.py" @@ -5712,8 +5712,8 @@ "cipd_packages": [ { "cipd_package": "chromium/testing/linux-ash-chromium/x86_64/ash.zip", - "location": "lacros_version_skew_tests_v123.0.6312.112", - "revision": "version:123.0.6312.112" + "location": "lacros_version_skew_tests_v123.0.6312.132", + "revision": "version:123.0.6312.132" } ], "dimensions": {
diff --git a/testing/buildbot/chromium.coverage.json b/testing/buildbot/chromium.coverage.json index 9ab3ee3..73a27a2 100644 --- a/testing/buildbot/chromium.coverage.json +++ b/testing/buildbot/chromium.coverage.json
@@ -19724,9 +19724,9 @@ { "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/linux-lacros.interactive_ui_tests.filter;../../testing/buildbot/filters/linux-lacros.interactive_ui_tests.skew.filter", - "--ash-chrome-path-override=../../lacros_version_skew_tests_v123.0.6312.112/test_ash_chrome" + "--ash-chrome-path-override=../../lacros_version_skew_tests_v123.0.6312.132/test_ash_chrome" ], - "description": "Run with ash-chrome version 123.0.6312.112", + "description": "Run with ash-chrome version 123.0.6312.132", "isolate_profile_data": true, "merge": { "script": "//testing/merge_scripts/standard_gtest_merge.py" @@ -19736,8 +19736,8 @@ "cipd_packages": [ { "cipd_package": "chromium/testing/linux-ash-chromium/x86_64/ash.zip", - "location": "lacros_version_skew_tests_v123.0.6312.112", - "revision": "version:123.0.6312.112" + "location": "lacros_version_skew_tests_v123.0.6312.132", + "revision": "version:123.0.6312.132" } ], "dimensions": { @@ -19880,9 +19880,9 @@ { "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/linux-lacros.lacros_chrome_browsertests.filter;../../testing/buildbot/filters/linux-lacros.lacros_chrome_browsertests.skew.filter", - "--ash-chrome-path-override=../../lacros_version_skew_tests_v123.0.6312.112/test_ash_chrome" + "--ash-chrome-path-override=../../lacros_version_skew_tests_v123.0.6312.132/test_ash_chrome" ], - "description": "Run with ash-chrome version 123.0.6312.112", + "description": "Run with ash-chrome version 123.0.6312.132", "isolate_profile_data": true, "merge": { "script": "//testing/merge_scripts/standard_gtest_merge.py" @@ -19892,8 +19892,8 @@ "cipd_packages": [ { "cipd_package": "chromium/testing/linux-ash-chromium/x86_64/ash.zip", - "location": "lacros_version_skew_tests_v123.0.6312.112", - "revision": "version:123.0.6312.112" + "location": "lacros_version_skew_tests_v123.0.6312.132", + "revision": "version:123.0.6312.132" } ], "dimensions": {
diff --git a/testing/buildbot/chromium.fyi.json b/testing/buildbot/chromium.fyi.json index c6f7c67..6330883d 100644 --- a/testing/buildbot/chromium.fyi.json +++ b/testing/buildbot/chromium.fyi.json
@@ -41846,9 +41846,9 @@ { "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/linux-lacros.interactive_ui_tests.filter;../../testing/buildbot/filters/linux-lacros.interactive_ui_tests.skew.filter", - "--ash-chrome-path-override=../../lacros_version_skew_tests_v123.0.6312.112/test_ash_chrome" + "--ash-chrome-path-override=../../lacros_version_skew_tests_v123.0.6312.132/test_ash_chrome" ], - "description": "Run with ash-chrome version 123.0.6312.112", + "description": "Run with ash-chrome version 123.0.6312.132", "merge": { "script": "//testing/merge_scripts/standard_gtest_merge.py" }, @@ -41857,8 +41857,8 @@ "cipd_packages": [ { "cipd_package": "chromium/testing/linux-ash-chromium/x86_64/ash.zip", - "location": "lacros_version_skew_tests_v123.0.6312.112", - "revision": "version:123.0.6312.112" + "location": "lacros_version_skew_tests_v123.0.6312.132", + "revision": "version:123.0.6312.132" } ], "dimensions": { @@ -41996,9 +41996,9 @@ { "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/linux-lacros.lacros_chrome_browsertests.filter;../../testing/buildbot/filters/linux-lacros.lacros_chrome_browsertests.skew.filter", - "--ash-chrome-path-override=../../lacros_version_skew_tests_v123.0.6312.112/test_ash_chrome" + "--ash-chrome-path-override=../../lacros_version_skew_tests_v123.0.6312.132/test_ash_chrome" ], - "description": "Run with ash-chrome version 123.0.6312.112", + "description": "Run with ash-chrome version 123.0.6312.132", "merge": { "script": "//testing/merge_scripts/standard_gtest_merge.py" }, @@ -42007,8 +42007,8 @@ "cipd_packages": [ { "cipd_package": "chromium/testing/linux-ash-chromium/x86_64/ash.zip", - "location": "lacros_version_skew_tests_v123.0.6312.112", - "revision": "version:123.0.6312.112" + "location": "lacros_version_skew_tests_v123.0.6312.132", + "revision": "version:123.0.6312.132" } ], "dimensions": { @@ -43347,9 +43347,9 @@ { "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/linux-lacros.interactive_ui_tests.filter;../../testing/buildbot/filters/linux-lacros.interactive_ui_tests.skew.filter", - "--ash-chrome-path-override=../../lacros_version_skew_tests_v123.0.6312.112/test_ash_chrome" + "--ash-chrome-path-override=../../lacros_version_skew_tests_v123.0.6312.132/test_ash_chrome" ], - "description": "Run with ash-chrome version 123.0.6312.112", + "description": "Run with ash-chrome version 123.0.6312.132", "isolate_profile_data": true, "merge": { "script": "//testing/merge_scripts/standard_gtest_merge.py" @@ -43359,8 +43359,8 @@ "cipd_packages": [ { "cipd_package": "chromium/testing/linux-ash-chromium/x86_64/ash.zip", - "location": "lacros_version_skew_tests_v123.0.6312.112", - "revision": "version:123.0.6312.112" + "location": "lacros_version_skew_tests_v123.0.6312.132", + "revision": "version:123.0.6312.132" } ], "dimensions": { @@ -43503,9 +43503,9 @@ { "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/linux-lacros.lacros_chrome_browsertests.filter;../../testing/buildbot/filters/linux-lacros.lacros_chrome_browsertests.skew.filter", - "--ash-chrome-path-override=../../lacros_version_skew_tests_v123.0.6312.112/test_ash_chrome" + "--ash-chrome-path-override=../../lacros_version_skew_tests_v123.0.6312.132/test_ash_chrome" ], - "description": "Run with ash-chrome version 123.0.6312.112", + "description": "Run with ash-chrome version 123.0.6312.132", "isolate_profile_data": true, "merge": { "script": "//testing/merge_scripts/standard_gtest_merge.py" @@ -43515,8 +43515,8 @@ "cipd_packages": [ { "cipd_package": "chromium/testing/linux-ash-chromium/x86_64/ash.zip", - "location": "lacros_version_skew_tests_v123.0.6312.112", - "revision": "version:123.0.6312.112" + "location": "lacros_version_skew_tests_v123.0.6312.132", + "revision": "version:123.0.6312.132" } ], "dimensions": { @@ -44826,9 +44826,9 @@ { "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/linux-lacros.interactive_ui_tests.filter;../../testing/buildbot/filters/linux-lacros.interactive_ui_tests.skew.filter", - "--ash-chrome-path-override=../../lacros_version_skew_tests_v123.0.6312.112/test_ash_chrome" + "--ash-chrome-path-override=../../lacros_version_skew_tests_v123.0.6312.132/test_ash_chrome" ], - "description": "Run with ash-chrome version 123.0.6312.112", + "description": "Run with ash-chrome version 123.0.6312.132", "merge": { "script": "//testing/merge_scripts/standard_gtest_merge.py" }, @@ -44837,8 +44837,8 @@ "cipd_packages": [ { "cipd_package": "chromium/testing/linux-ash-chromium/x86_64/ash.zip", - "location": "lacros_version_skew_tests_v123.0.6312.112", - "revision": "version:123.0.6312.112" + "location": "lacros_version_skew_tests_v123.0.6312.132", + "revision": "version:123.0.6312.132" } ], "dimensions": { @@ -44976,9 +44976,9 @@ { "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/linux-lacros.lacros_chrome_browsertests.filter;../../testing/buildbot/filters/linux-lacros.lacros_chrome_browsertests.skew.filter", - "--ash-chrome-path-override=../../lacros_version_skew_tests_v123.0.6312.112/test_ash_chrome" + "--ash-chrome-path-override=../../lacros_version_skew_tests_v123.0.6312.132/test_ash_chrome" ], - "description": "Run with ash-chrome version 123.0.6312.112", + "description": "Run with ash-chrome version 123.0.6312.132", "merge": { "script": "//testing/merge_scripts/standard_gtest_merge.py" }, @@ -44987,8 +44987,8 @@ "cipd_packages": [ { "cipd_package": "chromium/testing/linux-ash-chromium/x86_64/ash.zip", - "location": "lacros_version_skew_tests_v123.0.6312.112", - "revision": "version:123.0.6312.112" + "location": "lacros_version_skew_tests_v123.0.6312.132", + "revision": "version:123.0.6312.132" } ], "dimensions": {
diff --git a/testing/buildbot/chromium.memory.json b/testing/buildbot/chromium.memory.json index 0d76443e4..3c57ead 100644 --- a/testing/buildbot/chromium.memory.json +++ b/testing/buildbot/chromium.memory.json
@@ -15831,12 +15831,12 @@ { "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/linux-lacros.interactive_ui_tests.filter;../../testing/buildbot/filters/linux-lacros.interactive_ui_tests.skew.filter", - "--ash-chrome-path-override=../../lacros_version_skew_tests_v123.0.6312.112/test_ash_chrome", + "--ash-chrome-path-override=../../lacros_version_skew_tests_v123.0.6312.132/test_ash_chrome", "--test-launcher-print-test-stdio=always", "--combine-ash-logs-on-bots", "--asan-symbolize-output" ], - "description": "Run with ash-chrome version 123.0.6312.112", + "description": "Run with ash-chrome version 123.0.6312.132", "isolate_profile_data": true, "merge": { "script": "//testing/merge_scripts/standard_gtest_merge.py" @@ -15846,8 +15846,8 @@ "cipd_packages": [ { "cipd_package": "chromium/testing/linux-ash-chromium/x86_64/ash.zip", - "location": "lacros_version_skew_tests_v123.0.6312.112", - "revision": "version:123.0.6312.112" + "location": "lacros_version_skew_tests_v123.0.6312.132", + "revision": "version:123.0.6312.132" } ], "dimensions": { @@ -16007,12 +16007,12 @@ { "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/linux-lacros.lacros_chrome_browsertests.filter;../../testing/buildbot/filters/linux-lacros.lacros_chrome_browsertests.skew.filter", - "--ash-chrome-path-override=../../lacros_version_skew_tests_v123.0.6312.112/test_ash_chrome", + "--ash-chrome-path-override=../../lacros_version_skew_tests_v123.0.6312.132/test_ash_chrome", "--test-launcher-print-test-stdio=always", "--combine-ash-logs-on-bots", "--asan-symbolize-output" ], - "description": "Run with ash-chrome version 123.0.6312.112", + "description": "Run with ash-chrome version 123.0.6312.132", "isolate_profile_data": true, "merge": { "script": "//testing/merge_scripts/standard_gtest_merge.py" @@ -16022,8 +16022,8 @@ "cipd_packages": [ { "cipd_package": "chromium/testing/linux-ash-chromium/x86_64/ash.zip", - "location": "lacros_version_skew_tests_v123.0.6312.112", - "revision": "version:123.0.6312.112" + "location": "lacros_version_skew_tests_v123.0.6312.132", + "revision": "version:123.0.6312.132" } ], "dimensions": {
diff --git a/testing/buildbot/variants.pyl b/testing/buildbot/variants.pyl index 35519e72..2c76d32 100644 --- a/testing/buildbot/variants.pyl +++ b/testing/buildbot/variants.pyl
@@ -299,16 +299,16 @@ }, 'LACROS_VERSION_SKEW_STABLE': { 'identifier': 'Lacros version skew testing ash stable', - 'description': 'Run with ash-chrome version 123.0.6312.112', + 'description': 'Run with ash-chrome version 123.0.6312.132', 'args': [ - '--ash-chrome-path-override=../../lacros_version_skew_tests_v123.0.6312.112/test_ash_chrome', + '--ash-chrome-path-override=../../lacros_version_skew_tests_v123.0.6312.132/test_ash_chrome', ], 'swarming': { 'cipd_packages': [ { 'cipd_package': 'chromium/testing/linux-ash-chromium/x86_64/ash.zip', - 'location': 'lacros_version_skew_tests_v123.0.6312.112', - 'revision': 'version:123.0.6312.112', + 'location': 'lacros_version_skew_tests_v123.0.6312.132', + 'revision': 'version:123.0.6312.132', }, ], },
diff --git a/testing/variations/fieldtrial_testing_config.json b/testing/variations/fieldtrial_testing_config.json index 43446172..6240cd36 100644 --- a/testing/variations/fieldtrial_testing_config.json +++ b/testing/variations/fieldtrial_testing_config.json
@@ -5185,6 +5185,24 @@ ] } ], + "CrOSLateBootSwapZramTuning": [ + { + "platforms": [ + "chromeos" + ], + "experiments": [ + { + "name": "EnabledGroupA", + "params": { + "multiplier": "1.5" + }, + "enable_features": [ + "CrOSLateBootSwapZramDisksize" + ] + } + ] + } + ], "CrOSLateBootSwapZramWriteback": [ { "platforms": [ @@ -7782,33 +7800,6 @@ ] } ], - "FenderLcpInfluencerScriptsPriority": [ - { - "platforms": [ - "android", - "chromeos", - "chromeos_lacros", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "VeryHighPriorityForScriptAndLcpImage_20240215", - "params": { - "lcpscriptobserver_adjust_image_load_priority": "true", - "lcpscriptobserver_image_load_priority": "very_high", - "lcpscriptobserver_script_load_priority": "very_high", - "lcpscriptobserver_script_max_url_count_per_origin": "5", - "lcpscriptobserver_script_max_url_length": "1024" - }, - "enable_features": [ - "LCPScriptObserver" - ] - } - ] - } - ], "FenderScriptScheduling": [ { "platforms": [ @@ -11832,7 +11823,7 @@ { "platforms": [ "android", - "ios", + "android_webview", "linux", "mac", "windows"
diff --git a/third_party/angle b/third_party/angle index d71b8ee..6861da6 160000 --- a/third_party/angle +++ b/third_party/angle
@@ -1 +1 @@ -Subproject commit d71b8ee0f0e26b14a8fa642460df2635c2d7db2f +Subproject commit 6861da63bb01592964789d531dd8a71a06057547
diff --git a/third_party/blink/public/mojom/use_counter/metrics/web_feature.mojom b/third_party/blink/public/mojom/use_counter/metrics/web_feature.mojom index 6abb359f..e0c5ef50 100644 --- a/third_party/blink/public/mojom/use_counter/metrics/web_feature.mojom +++ b/third_party/blink/public/mojom/use_counter/metrics/web_feature.mojom
@@ -4329,6 +4329,10 @@ kSharedStorageAPI_SelectURLOverallPageloadBudgetInsufficient = 4944, + kV8LanguageTranslator_Translate_Method = 4945, + kV8Translation_CanTranslate_Method = 4946, + kV8Translation_CreateTranslator_Method = 4947, + // Add new features immediately above this line. Don't change assigned // numbers of any item, and don't reuse removed slots. // Also, run update_use_counter_feature_enum.py in
diff --git a/third_party/blink/renderer/bindings/generated_in_modules.gni b/third_party/blink/renderer/bindings/generated_in_modules.gni index c613498..0edce16 100644 --- a/third_party/blink/renderer/bindings/generated_in_modules.gni +++ b/third_party/blink/renderer/bindings/generated_in_modules.gni
@@ -808,6 +808,8 @@ "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_ml_triangular_options.h", "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_model_generic_session_options.cc", "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_model_generic_session_options.h", + "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_translation_language_options.cc", + "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_translation_language_options.h", "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_multi_cache_query_options.cc", "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_multi_cache_query_options.h", "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_navigation_preload_state.cc", @@ -1387,6 +1389,8 @@ "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_gamepad_mapping_type.h", "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_generic_model_availability.cc", "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_generic_model_availability.h", + "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_translation_availability.cc", + "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_translation_availability.h", "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_gpu_address_mode.cc", "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_gpu_address_mode.h", "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_gpu_auto_layout_mode.cc", @@ -2274,6 +2278,8 @@ "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_keyboard_layout_map.h", "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_khr_parallel_shader_compile.cc", "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_khr_parallel_shader_compile.h", + "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_language_translator.cc", + "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_language_translator.h", "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_launch_params.cc", "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_launch_params.h", "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_launch_queue.cc", @@ -2718,6 +2724,8 @@ "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_track_default.h", "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_track_default_list.cc", "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_track_default_list.h", + "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_translation.cc", + "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_translation.h", "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_url.cc", "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_url.h", "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_usb.cc",
diff --git a/third_party/blink/renderer/bindings/idl_in_modules.gni b/third_party/blink/renderer/bindings/idl_in_modules.gni index e2f4560..01a8a8d 100644 --- a/third_party/blink/renderer/bindings/idl_in_modules.gni +++ b/third_party/blink/renderer/bindings/idl_in_modules.gni
@@ -529,6 +529,10 @@ "//third_party/blink/renderer/modules/notifications/service_worker_global_scope_notifications.idl", "//third_party/blink/renderer/modules/notifications/service_worker_registration_notifications.idl", "//third_party/blink/renderer/modules/notifications/timestamp_trigger.idl", + "//third_party/blink/renderer/modules/on_device_translation/language_translator.idl", + "//third_party/blink/renderer/modules/on_device_translation/translation_language_options.idl", + "//third_party/blink/renderer/modules/on_device_translation/translation.idl", + "//third_party/blink/renderer/modules/on_device_translation/window_or_worker_global_scope_translation.idl", "//third_party/blink/renderer/modules/payments/abort_payment_event.idl", "//third_party/blink/renderer/modules/payments/address_errors.idl", "//third_party/blink/renderer/modules/payments/address_init.idl",
diff --git a/third_party/blink/renderer/core/inspector/inspector_animation_agent.cc b/third_party/blink/renderer/core/inspector/inspector_animation_agent.cc index 8a6f30fb..eff7ada 100644 --- a/third_party/blink/renderer/core/inspector/inspector_animation_agent.cc +++ b/third_party/blink/renderer/core/inspector/inspector_animation_agent.cc
@@ -97,6 +97,17 @@ return value->GetAsDouble(); } +String AnimationDisplayName(const Animation& animation) { + if (!animation.id().empty()) + return animation.id(); + else if (auto* css_animation = DynamicTo<CSSAnimation>(animation)) + return css_animation->animationName(); + else if (auto* css_transition = DynamicTo<CSSTransition>(animation)) + return css_transition->transitionProperty(); + else + return animation.id(); +} + } // namespace InspectorAnimationAgent::InspectorAnimationAgent( @@ -112,19 +123,6 @@ DCHECK(css_agent); } -String InspectorAnimationAgent::AnimationDisplayName( - const Animation& animation) { - if (!animation.id().empty()) { - return animation.id(); - } else if (auto* css_animation = DynamicTo<CSSAnimation>(animation)) { - return css_animation->animationName(); - } else if (auto* css_transition = DynamicTo<CSSTransition>(animation)) { - return css_transition->transitionProperty(); - } else { - return ""; - } -} - void InspectorAnimationAgent::Restore() { if (enabled_.Get()) { instrumenting_agents_->AddInspectorAnimationAgent(this);
diff --git a/third_party/blink/renderer/core/inspector/inspector_animation_agent.h b/third_party/blink/renderer/core/inspector/inspector_animation_agent.h index efb0271f..e30d32f 100644 --- a/third_party/blink/renderer/core/inspector/inspector_animation_agent.h +++ b/third_party/blink/renderer/core/inspector/inspector_animation_agent.h
@@ -68,7 +68,6 @@ protocol::Response AssertAnimation(const String& id, blink::Animation*& result); - static String AnimationDisplayName(const Animation& animation); void Trace(Visitor*) const override; private:
diff --git a/third_party/blink/renderer/core/inspector/inspector_trace_events.cc b/third_party/blink/renderer/core/inspector/inspector_trace_events.cc index 501e7f8..14c482b 100644 --- a/third_party/blink/renderer/core/inspector/inspector_trace_events.cc +++ b/third_party/blink/renderer/core/inspector/inspector_trace_events.cc
@@ -26,7 +26,6 @@ #include "third_party/blink/renderer/core/html/html_frame_owner_element.h" #include "third_party/blink/renderer/core/html/parser/html_document_parser.h" #include "third_party/blink/renderer/core/inspector/identifiers_factory.h" -#include "third_party/blink/renderer/core/inspector/inspector_animation_agent.h" #include "third_party/blink/renderer/core/inspector/inspector_network_agent.h" #include "third_party/blink/renderer/core/inspector/inspector_page_agent.h" #include "third_party/blink/renderer/core/layout/hit_test_location.h" @@ -1582,8 +1581,6 @@ dict.Add("id", String::Number(animation.SequenceNumber())); dict.Add("state", animation.PlayStateString()); if (const AnimationEffect* effect = animation.effect()) { - dict.Add("displayName", - InspectorAnimationAgent::AnimationDisplayName(animation)); dict.Add("name", animation.id()); if (auto* frame_effect = DynamicTo<KeyframeEffect>(effect)) { if (Element* target = frame_effect->EffectTarget())
diff --git a/third_party/blink/renderer/modules/BUILD.gn b/third_party/blink/renderer/modules/BUILD.gn index c70e153..dbb7736 100644 --- a/third_party/blink/renderer/modules/BUILD.gn +++ b/third_party/blink/renderer/modules/BUILD.gn
@@ -130,6 +130,7 @@ "//third_party/blink/renderer/modules/netinfo", "//third_party/blink/renderer/modules/nfc", "//third_party/blink/renderer/modules/notifications", + "//third_party/blink/renderer/modules/on_device_translation", "//third_party/blink/renderer/modules/payments", "//third_party/blink/renderer/modules/payments/goods", "//third_party/blink/renderer/modules/peerconnection",
diff --git a/third_party/blink/renderer/modules/ml/ml_trace_unittest.cc b/third_party/blink/renderer/modules/ml/ml_trace_unittest.cc index ff99f8dc..c70c8c2 100644 --- a/third_party/blink/renderer/modules/ml/ml_trace_unittest.cc +++ b/third_party/blink/renderer/modules/ml/ml_trace_unittest.cc
@@ -53,7 +53,7 @@ base::trace_event::TraceResultBuffer trace_buffer; trace_buffer.SetOutputCallback(json_output->GetCallback()); trace_buffer.Start(); - trace_buffer.AddFragment(json_events_str->as_string()); + trace_buffer.AddFragment(json_events_str->data()); trace_buffer.Finish(); if (!has_more_events) { std::move(quit_closure).Run();
diff --git a/third_party/blink/renderer/modules/ml/webnn/ml_graph_builder.cc b/third_party/blink/renderer/modules/ml/webnn/ml_graph_builder.cc index 517033c0..60b8eea 100644 --- a/third_party/blink/renderer/modules/ml/webnn/ml_graph_builder.cc +++ b/third_party/blink/renderer/modules/ml/webnn/ml_graph_builder.cc
@@ -1436,9 +1436,7 @@ ConvertToComponentOperand(input), ConvertToInstanceNormalizationAttributes(options)); if (!validated_output.has_value()) { - exception_state.ThrowDOMException( - DOMExceptionCode::kDataError, - String::FromUTF8(validated_output.error())); + exception_state.ThrowTypeError(String::FromUTF8(validated_output.error())); return nullptr; } @@ -1450,8 +1448,7 @@ this, ComponentOperandTypeToBlink(validated_output->data_type), Vector<uint32_t>(validated_output->dimensions), instance_normalization); if (!output.has_value()) { - exception_state.ThrowDOMException(DOMExceptionCode::kDataError, - output.error()); + exception_state.ThrowTypeError(output.error()); return nullptr; }
diff --git a/third_party/blink/renderer/modules/ml/webnn/ml_graph_builder_test.cc b/third_party/blink/renderer/modules/ml/webnn/ml_graph_builder_test.cc index 5a482dd..52a4d0d0 100644 --- a/third_party/blink/renderer/modules/ml/webnn/ml_graph_builder_test.cc +++ b/third_party/blink/renderer/modules/ml/webnn/ml_graph_builder_test.cc
@@ -2541,230 +2541,6 @@ } } -MLOperand* BuildInstanceNormalization( - V8TestingScope& scope, - MLGraphBuilder* builder, - const MLOperand* input, - const MLInstanceNormalizationOptions* options) { - auto* output = - builder->instanceNormalization(input, options, scope.GetExceptionState()); - EXPECT_THAT(output, testing::NotNull()); - EXPECT_EQ(output->Kind(), webnn::mojom::blink::Operand::Kind::kOutput); - EXPECT_EQ(output->DataType(), input->DataType()); - EXPECT_EQ(output->Dimensions(), input->Dimensions()); - auto* instance_normalization = output->Operator(); - EXPECT_THAT(instance_normalization, testing::NotNull()); - EXPECT_EQ(instance_normalization->Kind(), - webnn::mojom::blink::Operation::Tag::kInstanceNormalization); - EXPECT_TRUE(instance_normalization->IsConnected()); - EXPECT_THAT(instance_normalization->Options(), testing::NotNull()); - return output; -} - -TEST_F(MLGraphBuilderTest, InstanceNormalizationTest) { - V8TestingScope scope; - MLGraphBuilder* builder = - CreateMLGraphBuilder(scope.GetExecutionContext(), scope.GetScriptState(), - scope.GetExceptionState()); - { - // Test building instanceNormalization with default options for 4-D input. - auto* input = BuildInput(builder, "input", {1, 2, 3, 4}, - V8MLOperandDataType::Enum::kFloat32, - scope.GetExceptionState()); - auto* options = MLInstanceNormalizationOptions::Create(); - EXPECT_FALSE(options->hasScale()); - EXPECT_FALSE(options->hasBias()); - EXPECT_TRUE(options->hasLayout()); - EXPECT_EQ(options->layout(), V8MLInputOperandLayout::Enum::kNchw); - EXPECT_TRUE(options->hasEpsilon()); - EXPECT_FLOAT_EQ(options->epsilon(), 1e-5); - auto* output = BuildInstanceNormalization(scope, builder, input, options); - EXPECT_EQ(output->Dimensions(), Vector<uint32_t>({1, 2, 3, 4})); - } - { - // Test building instanceNormalization with default layout NCHW. - auto* input = BuildInput(builder, "input", {1, 2, 3, 4}, - V8MLOperandDataType::Enum::kFloat32, - scope.GetExceptionState()); - auto* options = MLInstanceNormalizationOptions::Create(); - auto* scale = - BuildInput(builder, "scale", {2}, V8MLOperandDataType::Enum::kFloat32, - scope.GetExceptionState()); - options->setScale(scale); - auto* bias = - BuildInput(builder, "bias", {2}, V8MLOperandDataType::Enum::kFloat32, - scope.GetExceptionState()); - options->setBias(bias); - auto* output = BuildInstanceNormalization(scope, builder, input, options); - EXPECT_EQ(output->Dimensions(), Vector<uint32_t>({1, 2, 3, 4})); - } - { - // Test building instanceNormalization with layout = Nhwc. - auto* input = BuildInput(builder, "input", {1, 2, 3, 4}, - V8MLOperandDataType::Enum::kFloat32, - scope.GetExceptionState()); - auto* options = MLInstanceNormalizationOptions::Create(); - options->setLayout(V8MLInputOperandLayout::Enum::kNhwc); - auto* scale = - BuildInput(builder, "scale", {4}, V8MLOperandDataType::Enum::kFloat32, - scope.GetExceptionState()); - options->setScale(scale); - auto* bias = - BuildInput(builder, "bias", {4}, V8MLOperandDataType::Enum::kFloat32, - scope.GetExceptionState()); - options->setScale(bias); - auto* output = BuildInstanceNormalization(scope, builder, input, options); - EXPECT_EQ(output->Dimensions(), Vector<uint32_t>({1, 2, 3, 4})); - } - { - // Test throwing exception when the input is not a 4-D tensor. - auto* input = BuildInput(builder, "input", {1, 2, 5, 5, 2}, - V8MLOperandDataType::Enum::kFloat32, - scope.GetExceptionState()); - auto* options = MLInstanceNormalizationOptions::Create(); - auto* output = builder->instanceNormalization(input, options, - scope.GetExceptionState()); - EXPECT_THAT(output, testing::IsNull()); - EXPECT_EQ(scope.GetExceptionState().CodeAs<DOMExceptionCode>(), - DOMExceptionCode::kDataError); - EXPECT_EQ(scope.GetExceptionState().Message(), - "The input should be a 4-D tensor."); - } - { - // Test throwing exception when the input data type is not one of floating - // point types. - auto* input = BuildInput(builder, "input", {1, 2, 5, 5}, - V8MLOperandDataType::Enum::kInt32, - scope.GetExceptionState()); - auto* options = MLInstanceNormalizationOptions::Create(); - auto* output = builder->instanceNormalization(input, options, - scope.GetExceptionState()); - EXPECT_THAT(output, testing::IsNull()); - EXPECT_EQ(scope.GetExceptionState().CodeAs<DOMExceptionCode>(), - DOMExceptionCode::kDataError); - EXPECT_EQ(scope.GetExceptionState().Message(), - "The input type must be one of the floating point types."); - } - { - // Test throwing exception when the scale data type is not the same as the - // input data type. - auto* input = BuildInput(builder, "input", {1, 2, 5, 5}, - V8MLOperandDataType::Enum::kFloat16, - scope.GetExceptionState()); - auto* options = MLInstanceNormalizationOptions::Create(); - auto* scale = - BuildConstant(builder, {2}, V8MLOperandDataType::Enum::kFloat32, - scope.GetExceptionState()); - options->setScale(scale); - auto* output = builder->instanceNormalization(input, options, - scope.GetExceptionState()); - EXPECT_THAT(output, testing::IsNull()); - EXPECT_EQ(scope.GetExceptionState().CodeAs<DOMExceptionCode>(), - DOMExceptionCode::kDataError); - EXPECT_EQ( - scope.GetExceptionState().Message(), - "For scale operand: the data type doesn't match the input data type."); - } - { - // Test throwing exception when the scale operand is not a 1-D tensor. - auto* input = BuildInput(builder, "input", {1, 2, 5, 5}, - V8MLOperandDataType::Enum::kFloat32, - scope.GetExceptionState()); - auto* options = MLInstanceNormalizationOptions::Create(); - auto* scale = - BuildConstant(builder, {2, 1}, V8MLOperandDataType::Enum::kFloat32, - scope.GetExceptionState()); - options->setScale(scale); - auto* output = builder->instanceNormalization(input, options, - scope.GetExceptionState()); - EXPECT_THAT(output, testing::IsNull()); - EXPECT_EQ(scope.GetExceptionState().CodeAs<DOMExceptionCode>(), - DOMExceptionCode::kDataError); - EXPECT_EQ(scope.GetExceptionState().Message(), - "For scale operand: the operand should be a 1-D tensor."); - } - { - // Test throwing exception when the size of scale operand is not equal - // to the size of the feature dimension of the input. - auto* input = BuildInput(builder, "input", {1, 2, 5, 5}, - V8MLOperandDataType::Enum::kFloat32, - scope.GetExceptionState()); - auto* options = MLInstanceNormalizationOptions::Create(); - options->setLayout(V8MLInputOperandLayout::Enum::kNhwc); - auto* scale = - BuildConstant(builder, {2}, V8MLOperandDataType::Enum::kFloat32, - scope.GetExceptionState()); - options->setScale(scale); - auto* output = builder->instanceNormalization(input, options, - scope.GetExceptionState()); - EXPECT_THAT(output, testing::IsNull()); - EXPECT_EQ(scope.GetExceptionState().CodeAs<DOMExceptionCode>(), - DOMExceptionCode::kDataError); - EXPECT_EQ(scope.GetExceptionState().Message(), - "For scale operand: the size of operand must be equal to the " - "size of the feature dimension of the input."); - } - { - // Test throwing exception when the bias data type is not the same as the - // input data type. - auto* input = BuildInput(builder, "input", {1, 2, 5, 5}, - V8MLOperandDataType::Enum::kFloat16, - scope.GetExceptionState()); - auto* options = MLInstanceNormalizationOptions::Create(); - auto* bias = - BuildConstant(builder, {2}, V8MLOperandDataType::Enum::kFloat32, - scope.GetExceptionState()); - options->setBias(bias); - auto* output = builder->instanceNormalization(input, options, - scope.GetExceptionState()); - EXPECT_THAT(output, testing::IsNull()); - EXPECT_EQ(scope.GetExceptionState().CodeAs<DOMExceptionCode>(), - DOMExceptionCode::kDataError); - EXPECT_EQ( - scope.GetExceptionState().Message(), - "For bias operand: the data type doesn't match the input data type."); - } - { - // Test throwing exception when the bias operand is not a 1-D tensor. - auto* input = BuildInput(builder, "input", {1, 2, 5, 5}, - V8MLOperandDataType::Enum::kFloat32, - scope.GetExceptionState()); - auto* options = MLInstanceNormalizationOptions::Create(); - auto* bias = - BuildConstant(builder, {2, 1}, V8MLOperandDataType::Enum::kFloat32, - scope.GetExceptionState()); - options->setBias(bias); - auto* output = builder->instanceNormalization(input, options, - scope.GetExceptionState()); - EXPECT_THAT(output, testing::IsNull()); - EXPECT_EQ(scope.GetExceptionState().CodeAs<DOMExceptionCode>(), - DOMExceptionCode::kDataError); - EXPECT_EQ(scope.GetExceptionState().Message(), - "For bias operand: the operand should be a 1-D tensor."); - } - { - // Test throwing exception when the size of bias operand is not equal to - // the size of the feature dimension of the input. - auto* input = BuildInput(builder, "input", {1, 2, 5, 5}, - V8MLOperandDataType::Enum::kFloat32, - scope.GetExceptionState()); - auto* options = MLInstanceNormalizationOptions::Create(); - options->setLayout(V8MLInputOperandLayout::Enum::kNhwc); - auto* bias = - BuildConstant(builder, {2}, V8MLOperandDataType::Enum::kFloat32, - scope.GetExceptionState()); - options->setBias(bias); - auto* output = builder->instanceNormalization(input, options, - scope.GetExceptionState()); - EXPECT_THAT(output, testing::IsNull()); - EXPECT_EQ(scope.GetExceptionState().CodeAs<DOMExceptionCode>(), - DOMExceptionCode::kDataError); - EXPECT_EQ(scope.GetExceptionState().Message(), - "For bias operand: the size of operand must be equal to the size " - "of the feature dimension of the input."); - } -} - MLOperand* BuildLayerNormalization(V8TestingScope& scope, MLGraphBuilder* builder, const MLOperand* input,
diff --git a/third_party/blink/renderer/modules/ml/webnn/ml_graph_builder_test.h b/third_party/blink/renderer/modules/ml/webnn/ml_graph_builder_test.h index 0e873d8e..7171c75 100644 --- a/third_party/blink/renderer/modules/ml/webnn/ml_graph_builder_test.h +++ b/third_party/blink/renderer/modules/ml/webnn/ml_graph_builder_test.h
@@ -15,7 +15,6 @@ #include "third_party/blink/renderer/bindings/modules/v8/v8_ml_gemm_options.h" #include "third_party/blink/renderer/bindings/modules/v8/v8_ml_gru_options.h" #include "third_party/blink/renderer/bindings/modules/v8/v8_ml_hard_sigmoid_options.h" -#include "third_party/blink/renderer/bindings/modules/v8/v8_ml_instance_normalization_options.h" #include "third_party/blink/renderer/bindings/modules/v8/v8_ml_layer_normalization_options.h" #include "third_party/blink/renderer/bindings/modules/v8/v8_ml_leaky_relu_options.h" #include "third_party/blink/renderer/bindings/modules/v8/v8_ml_linear_options.h" @@ -99,13 +98,6 @@ const MLOperand* input, const MLHardSigmoidOptions* options = MLHardSigmoidOptions::Create()); -MLOperand* BuildInstanceNormalization( - V8TestingScope& scope, - MLGraphBuilder* builder, - const MLOperand* input, - const MLInstanceNormalizationOptions* options = - MLInstanceNormalizationOptions::Create()); - MLOperand* BuildLayerNormalization(V8TestingScope& scope, MLGraphBuilder* builder, const MLOperand* input,
diff --git a/third_party/blink/renderer/modules/ml/webnn/ml_graph_mojo_test.cc b/third_party/blink/renderer/modules/ml/webnn/ml_graph_mojo_test.cc index 6f124879..fc11971 100644 --- a/third_party/blink/renderer/modules/ml/webnn/ml_graph_mojo_test.cc +++ b/third_party/blink/renderer/modules/ml/webnn/ml_graph_mojo_test.cc
@@ -2723,186 +2723,6 @@ } } -struct InstanceNormalizationTester { - OperandInfoBlink input; - struct InstanceNormalizationOptions { - std::optional<OperandInfoBlink> scale; - std::optional<OperandInfoBlink> bias; - std::optional<float> epsilon; - std::optional<blink::V8MLInputOperandLayout::Enum> layout; - }; - struct InstanceNormalizationAttributes { - std::optional<OperandInfoMojo> scale; - std::optional<OperandInfoMojo> bias; - float epsilon = 1e-5; - blink_mojom::InputOperandLayout layout = - blink_mojom::InputOperandLayout::kChannelsFirst; - }; - InstanceNormalizationOptions options; - OperandInfoMojo expected_operand; - InstanceNormalizationAttributes expected_attributes; - - void Test(MLGraphTestMojo& helper, - V8TestingScope& scope, - MLGraphBuilder* builder) { - // Build the graph. - auto* input_operand = - BuildInput(builder, "input", input.dimensions, input.data_type, - scope.GetExceptionState()); - MLInstanceNormalizationOptions* instance_normalization_options = - MLInstanceNormalizationOptions::Create(); - if (options.scale) { - instance_normalization_options->setScale( - BuildInput(builder, "scale", options.scale->dimensions, - options.scale->data_type, scope.GetExceptionState())); - } - if (options.bias) { - instance_normalization_options->setBias( - BuildInput(builder, "bias", options.bias->dimensions, - options.bias->data_type, scope.GetExceptionState())); - } - if (options.epsilon) { - instance_normalization_options->setEpsilon(options.epsilon.value()); - } - if (options.layout) { - instance_normalization_options->setLayout(options.layout.value()); - } - - auto* output_operand = builder->instanceNormalization( - input_operand, instance_normalization_options, - scope.GetExceptionState()); - auto [graph, error_name, error_message] = - helper.BuildGraph(scope, builder, {{"output", output_operand}}); - ASSERT_THAT(graph, testing::NotNull()); - - auto graph_info = helper.GetGraphInfo(); - // Verify the graph information of mojo are as expected. - ASSERT_EQ(graph_info->operations.size(), 1u); - auto& operation = graph_info->operations[0]; - EXPECT_TRUE(operation->is_instance_normalization()); - auto& instance_normalization = operation->get_instance_normalization(); - EXPECT_EQ(instance_normalization->layout, expected_attributes.layout); - EXPECT_FLOAT_EQ(instance_normalization->epsilon, - expected_attributes.epsilon); - if (options.scale) { - auto scale_operand_iter = graph_info->id_to_operand_map.find( - instance_normalization->scale_operand_id.value()); - ASSERT_TRUE(scale_operand_iter != graph_info->id_to_operand_map.end()); - EXPECT_EQ(scale_operand_iter->value->data_type, - expected_attributes.scale->data_type); - EXPECT_EQ(scale_operand_iter->value->dimensions, - expected_attributes.scale->dimensions); - } - if (options.bias) { - auto bias_operand_iter = graph_info->id_to_operand_map.find( - instance_normalization->bias_operand_id.value()); - ASSERT_TRUE(bias_operand_iter != graph_info->id_to_operand_map.end()); - EXPECT_EQ(bias_operand_iter->value->data_type, - expected_attributes.bias->data_type); - EXPECT_EQ(bias_operand_iter->value->dimensions, - expected_attributes.bias->dimensions); - } - - EXPECT_EQ(graph_info->output_operands.size(), 1u); - auto output_operand_id = graph_info->output_operands[0]; - auto output_operand_iter = - graph_info->id_to_operand_map.find(output_operand_id); - ASSERT_TRUE(output_operand_iter != graph_info->id_to_operand_map.end()); - EXPECT_EQ(output_operand_iter->value->data_type, - expected_operand.data_type); - EXPECT_EQ(output_operand_iter->value->dimensions, - expected_operand.dimensions); - } -}; - -TEST_P(MLGraphTestMojo, InstanceNormalizationTest) { - V8TestingScope scope; - // Bind fake WebNN Context in the service for testing. - ScopedWebNNServiceBinder scoped_setup_binder(*this, scope); - - auto* options = MLContextOptions::Create(); - // Create WebNN Context with GPU device type. - options->setDeviceType(V8MLDeviceType::Enum::kGpu); - auto* builder = CreateGraphBuilder(scope, options); - ASSERT_THAT(builder, testing::NotNull()); - { - // Test instanceNormalization with default options. - InstanceNormalizationTester{ - .input = {.data_type = V8MLOperandDataType::Enum::kFloat32, - .dimensions = {1, 3, 5, 5}}, - .expected_operand = {.data_type = - blink_mojom::Operand::DataType::kFloat32, - .dimensions = {1, 3, 5, 5}}, - .expected_attributes = - {.scale = std::nullopt, - .bias = std::nullopt, - .epsilon = 1e-5, - .layout = blink_mojom::InputOperandLayout::kChannelsFirst}} - .Test(*this, scope, builder); - } - { - // Test instanceNormalization with layout = nhwc. - InstanceNormalizationTester{ - .input = {.data_type = V8MLOperandDataType::Enum::kFloat32, - .dimensions = {1, 3, 4, 5}}, - .options = {.layout = V8MLInputOperandLayout::Enum::kNhwc}, - .expected_operand = {.data_type = - blink_mojom::Operand::DataType::kFloat32, - .dimensions = {1, 3, 4, 5}}, - .expected_attributes = - {.scale = std::nullopt, - .bias = std::nullopt, - .epsilon = 1e-5, - .layout = blink_mojom::InputOperandLayout::kChannelsLast}} - .Test(*this, scope, builder); - } - { - // Test instanceNormalization with epsilon = 0.01. - InstanceNormalizationTester{ - .input = {.data_type = V8MLOperandDataType::Enum::kFloat32, - .dimensions = {1, 3, 4, 5}}, - .options = {.epsilon = 0.01}, - .expected_operand = {.data_type = - blink_mojom::Operand::DataType::kFloat32, - .dimensions = {1, 3, 4, 5}}, - .expected_attributes = - {.scale = std::nullopt, - .bias = std::nullopt, - .epsilon = 0.01, - .layout = blink_mojom::InputOperandLayout::kChannelsFirst}} - .Test(*this, scope, builder); - } - { - // Test instanceNormalization with scale and bias. - InstanceNormalizationTester{ - .input = {.data_type = V8MLOperandDataType::Enum::kFloat32, - .dimensions = {1, 3, 5, 5}}, - .options = {.scale = - OperandInfoBlink{ - .data_type = V8MLOperandDataType::Enum::kFloat32, - .dimensions = {3}}, - .bias = - OperandInfoBlink{ - .data_type = V8MLOperandDataType::Enum::kFloat32, - .dimensions = {3}}}, - .expected_operand = {.data_type = - blink_mojom::Operand::DataType::kFloat32, - .dimensions = {1, 3, 5, 5}}, - .expected_attributes = - {.scale = - OperandInfoMojo{ - .data_type = blink_mojom::Operand::DataType::kFloat32, - .dimensions = {3}}, - .bias = - OperandInfoMojo{ - .data_type = blink_mojom::Operand::DataType::kFloat32, - .dimensions = {3}}, - .epsilon = 1e-5, - .layout = blink_mojom::InputOperandLayout::kChannelsFirst}} - .Test(*this, scope, builder); - } -} - struct LayerNormalizationTester { OperandInfoBlink input; struct LayerNormalizationOptions {
diff --git a/third_party/blink/renderer/modules/model_execution/model_manager.idl b/third_party/blink/renderer/modules/model_execution/model_manager.idl index 7f77c30..17e9e13 100644 --- a/third_party/blink/renderer/modules/model_execution/model_manager.idl +++ b/third_party/blink/renderer/modules/model_execution/model_manager.idl
@@ -2,16 +2,35 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -enum GenericModelAvailability { "readily", "after-download", "no" }; +enum GenericModelAvailability { + "readily", + "after-download", + "no" +}; [ RuntimeEnabled=ModelExecutionAPI, Exposed=Window ] interface ModelManager { - [Measure, CallWith=ScriptState, RaisesException] Promise<GenericModelAvailability> canCreateGenericSession(); - [Measure, CallWith=ScriptState, RaisesException] Promise<ModelGenericSession> createGenericSession( + [ + Measure, + CallWith=ScriptState, + RaisesException + ] + Promise<GenericModelAvailability> canCreateGenericSession(); + [ + Measure, + CallWith=ScriptState, + RaisesException + ] + Promise<ModelGenericSession> createGenericSession( optional ModelGenericSessionOptions options = {} ); - [Measure, CallWith=ScriptState, RaisesException] Promise<ModelGenericSessionOptions> defaultGenericSessionOptions(); + [ + Measure, + CallWith=ScriptState, + RaisesException + ] + Promise<ModelGenericSessionOptions> defaultGenericSessionOptions(); };
diff --git a/third_party/blink/renderer/modules/on_device_translation/BUILD.gn b/third_party/blink/renderer/modules/on_device_translation/BUILD.gn new file mode 100644 index 0000000..97efc4c --- /dev/null +++ b/third_party/blink/renderer/modules/on_device_translation/BUILD.gn
@@ -0,0 +1,18 @@ +# Copyright 2024 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import("//third_party/blink/renderer/modules/modules.gni") + +blink_modules_sources("on_device_translation") { + sources = [ + "dom_translation.cc", + "dom_translation.h", + "language_translator.cc", + "language_translator.h", + "translation.cc", + "translation.h", + ] + + public_deps = [ "//third_party/blink/public/mojom:mojom_modules_blink" ] +}
diff --git a/third_party/blink/renderer/modules/on_device_translation/OWNERS b/third_party/blink/renderer/modules/on_device_translation/OWNERS new file mode 100644 index 0000000..a640f819 --- /dev/null +++ b/third_party/blink/renderer/modules/on_device_translation/OWNERS
@@ -0,0 +1 @@ +file://chrome/browser/model_execution/OWNERS
diff --git a/third_party/blink/renderer/modules/on_device_translation/dom_translation.cc b/third_party/blink/renderer/modules/on_device_translation/dom_translation.cc new file mode 100644 index 0000000..68194f2 --- /dev/null +++ b/third_party/blink/renderer/modules/on_device_translation/dom_translation.cc
@@ -0,0 +1,41 @@ +// Copyright 2024 The Chromium Authors +// 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/modules/on_device_translation/dom_translation.h" + +#include "third_party/blink/renderer/modules/on_device_translation/translation.h" +#include "third_party/blink/renderer/platform/heap/garbage_collected.h" +#include "third_party/blink/renderer/platform/supplementable.h" + +namespace blink { + +DOMTranslation::DOMTranslation(ExecutionContext& context) + : Supplement<ExecutionContext>(context), + translation_(MakeGarbageCollected<Translation>(&context)) {} + +void DOMTranslation::Trace(Visitor* visitor) const { + visitor->Trace(translation_); + Supplement<ExecutionContext>::Trace(visitor); +} + +// static +const char DOMTranslation::kSupplementName[] = "DOMTranslation"; + +// static +DOMTranslation& DOMTranslation::From(ExecutionContext& context) { + DOMTranslation* supplement = + Supplement<ExecutionContext>::From<DOMTranslation>(context); + if (!supplement) { + supplement = MakeGarbageCollected<DOMTranslation>(context); + ProvideTo(context, supplement); + } + return *supplement; +} + +// static +Translation* DOMTranslation::translation(ExecutionContext& context) { + return From(context).translation_; +} + +} // namespace blink
diff --git a/third_party/blink/renderer/modules/on_device_translation/dom_translation.h b/third_party/blink/renderer/modules/on_device_translation/dom_translation.h new file mode 100644 index 0000000..20a3d35e --- /dev/null +++ b/third_party/blink/renderer/modules/on_device_translation/dom_translation.h
@@ -0,0 +1,39 @@ +// Copyright 2024 The Chromium Authors +// 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_MODULES_ON_DEVICE_TRANSLATION_DOM_TRANSLATION_H_ +#define THIRD_PARTY_BLINK_RENDERER_MODULES_ON_DEVICE_TRANSLATION_DOM_TRANSLATION_H_ + +#include "third_party/blink/renderer/platform/heap/garbage_collected.h" +#include "third_party/blink/renderer/platform/supplementable.h" +#include "third_party/blink/renderer/platform/wtf/allocator/allocator.h" + +namespace blink { + +class Translation; +class ExecutionContext; + +// The class that is exposed to the DOM window or worker for the developers +// to interact with the translation API. +class DOMTranslation final : public GarbageCollected<DOMTranslation>, + public Supplement<ExecutionContext> { + public: + static const char kSupplementName[]; + + static DOMTranslation& From(ExecutionContext&); + static Translation* translation(ExecutionContext&); + + explicit DOMTranslation(ExecutionContext&); + DOMTranslation(const DOMTranslation&) = delete; + DOMTranslation& operator=(const DOMTranslation&) = delete; + + void Trace(Visitor*) const override; + + private: + Member<Translation> translation_; +}; + +} // namespace blink + +#endif // THIRD_PARTY_BLINK_RENDERER_MODULES_ON_DEVICE_TRANSLATION_DOM_TRANSLATION_H_
diff --git a/third_party/blink/renderer/modules/on_device_translation/language_translator.cc b/third_party/blink/renderer/modules/on_device_translation/language_translator.cc index db7273d..50ab445 100644 --- a/third_party/blink/renderer/modules/on_device_translation/language_translator.cc +++ b/third_party/blink/renderer/modules/on_device_translation/language_translator.cc
@@ -11,6 +11,7 @@ #include "third_party/blink/renderer/bindings/core/v8/script_promise.h" #include "third_party/blink/renderer/bindings/core/v8/script_promise_resolver.h" #include "third_party/blink/renderer/core/dom/dom_exception.h" +#include "third_party/blink/renderer/platform/bindings/exception_code.h" #include "third_party/blink/renderer/platform/bindings/exception_state.h" #include "third_party/blink/renderer/platform/heap/garbage_collected.h" @@ -53,7 +54,16 @@ translator_remote_->Translate( input, WTF::BindOnce( [](ScriptPromiseResolver<IDLString>* resolver, - const WTF::String& output) { resolver->Resolve(output); }, + const WTF::String& output) { + if (output.IsNull()) { + resolver->Reject(DOMException::Create( + "Unable to translate the given text.", + DOMException::GetErrorName( + DOMExceptionCode::kNotReadableError))); + } else { + resolver->Resolve(output); + } + }, WrapPersistent(resolver))); return promise;
diff --git a/third_party/blink/renderer/modules/on_device_translation/language_translator.h b/third_party/blink/renderer/modules/on_device_translation/language_translator.h new file mode 100644 index 0000000..f018a52 --- /dev/null +++ b/third_party/blink/renderer/modules/on_device_translation/language_translator.h
@@ -0,0 +1,47 @@ +// Copyright 2024 The Chromium Authors +// 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_MODULES_ON_DEVICE_TRANSLATION_LANGUAGE_TRANSLATOR_H_ +#define THIRD_PARTY_BLINK_RENDERER_MODULES_ON_DEVICE_TRANSLATION_LANGUAGE_TRANSLATOR_H_ + +#include "base/memory/scoped_refptr.h" +#include "base/task/sequenced_task_runner.h" +#include "third_party/blink/public/mojom/on_device_translation/translator.mojom-blink.h" +#include "third_party/blink/renderer/bindings/core/v8/script_promise.h" +#include "third_party/blink/renderer/platform/bindings/script_wrappable.h" +#include "third_party/blink/renderer/platform/mojo/heap_mojo_remote.h" +#include "third_party/blink/renderer/platform/wtf/text/wtf_string.h" + +namespace blink { + +// The class that represents a translator with source and target language. +class LanguageTranslator final : public ScriptWrappable { + DEFINE_WRAPPERTYPEINFO(); + + public: + LanguageTranslator(const WTF::String source_lang, + const WTF::String target_lang, + scoped_refptr<base::SequencedTaskRunner> task_runner); + ~LanguageTranslator() override = default; + + void Trace(Visitor* visitor) const override; + + mojo::PendingReceiver<blink::mojom::blink::Translator> + GetTranslatorReceiver(); + + // language_translator.idl implementation. + ScriptPromise<IDLString> translate(ScriptState* script_state, + const WTF::String& input, + ExceptionState& exception_state); + + private: + const WTF::String source_lang_; + const WTF::String target_lang_; + scoped_refptr<base::SequencedTaskRunner> task_runner_; + HeapMojoRemote<blink::mojom::blink::Translator> translator_remote_{nullptr}; +}; + +} // namespace blink + +#endif // THIRD_PARTY_BLINK_RENDERER_MODULES_ON_DEVICE_TRANSLATION_LANGUAGE_TRANSLATOR_H_
diff --git a/third_party/blink/renderer/modules/on_device_translation/language_translator.idl b/third_party/blink/renderer/modules/on_device_translation/language_translator.idl new file mode 100644 index 0000000..f447267 --- /dev/null +++ b/third_party/blink/renderer/modules/on_device_translation/language_translator.idl
@@ -0,0 +1,16 @@ +// Copyright 2024 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. + +[ + RuntimeEnabled=TranslationAPI, + Exposed=(Window,Worker) +] +interface LanguageTranslator { + [ + Measure, + CallWith=ScriptState, + RaisesException + ] + Promise<DOMString> translate(DOMString input); +};
diff --git a/third_party/blink/renderer/modules/on_device_translation/translation.cc b/third_party/blink/renderer/modules/on_device_translation/translation.cc new file mode 100644 index 0000000..d36bd27 --- /dev/null +++ b/third_party/blink/renderer/modules/on_device_translation/translation.cc
@@ -0,0 +1,117 @@ +// Copyright 2024 The Chromium Authors +// 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/modules/on_device_translation/translation.h" + +#include "base/metrics/histogram_functions.h" +#include "third_party/blink/public/mojom/frame/frame.mojom-blink.h" +#include "third_party/blink/renderer/bindings/core/v8/script_promise.h" +#include "third_party/blink/renderer/bindings/core/v8/script_promise_resolver.h" +#include "third_party/blink/renderer/bindings/modules/v8/v8_translation_language_options.h" +#include "third_party/blink/renderer/core/execution_context/execution_context.h" +#include "third_party/blink/renderer/modules/on_device_translation/language_translator.h" +#include "third_party/blink/renderer/platform/bindings/exception_state.h" +#include "third_party/blink/renderer/platform/bindings/script_state.h" +#include "third_party/blink/renderer/platform/heap/garbage_collected.h" + +namespace blink { + +Translation::Translation(ExecutionContext* context) + : ExecutionContextClient(context), + task_runner_(context->GetTaskRunner(TaskType::kInternalDefault)) {} + +void Translation::Trace(Visitor* visitor) const { + ScriptWrappable::Trace(visitor); + ExecutionContextClient::Trace(visitor); + visitor->Trace(translation_manager_remote_); +} + +HeapMojoRemote<mojom::blink::TranslationManager>& +Translation::GetTranslationManagerRemote() { + if (!translation_manager_remote_.is_bound()) { + if (GetExecutionContext()) { + GetExecutionContext()->GetBrowserInterfaceBroker().GetInterface( + translation_manager_remote_.BindNewPipeAndPassReceiver(task_runner_)); + } + } + return translation_manager_remote_; +} + +ScriptPromise<V8TranslationAvailability> Translation::canTranslate( + ScriptState* script_state, + TranslationLanguageOptions* options, + ExceptionState& exception_state) { + if (!script_state->ContextIsValid()) { + exception_state.ThrowDOMException(DOMExceptionCode::kInvalidStateError, + "The execution context is not valid."); + return ScriptPromise<V8TranslationAvailability>(); + } + + auto* resolver = + MakeGarbageCollected<ScriptPromiseResolver<V8TranslationAvailability>>( + script_state); + auto promise = resolver->Promise(); + + if (!GetTranslationManagerRemote().is_connected()) { + resolver->Resolve( + V8TranslationAvailability(V8TranslationAvailability::Enum::kNo)); + } else { + GetTranslationManagerRemote()->CanCreateTranslator( + options->sourceLanguage(), options->targetLanguage(), + WTF::BindOnce( + [](ScriptPromiseResolver<V8TranslationAvailability>* resolver, + bool can_create) { + if (can_create) { + resolver->Resolve(V8TranslationAvailability( + V8TranslationAvailability::Enum::kReadily)); + } else { + resolver->Resolve(V8TranslationAvailability( + V8TranslationAvailability::Enum::kNo)); + } + }, + WrapPersistent(resolver))); + } + + return promise; +} + +ScriptPromise<LanguageTranslator> Translation::createTranslator( + ScriptState* script_state, + TranslationLanguageOptions* options, + ExceptionState& exception_state) { + if (!script_state->ContextIsValid()) { + exception_state.ThrowDOMException(DOMExceptionCode::kInvalidStateError, + "The execution context is not valid."); + return ScriptPromise<LanguageTranslator>(); + } + + auto* resolver = + MakeGarbageCollected<ScriptPromiseResolver<LanguageTranslator>>( + script_state); + LanguageTranslator* translator = MakeGarbageCollected<LanguageTranslator>( + options->sourceLanguage(), options->targetLanguage(), task_runner_); + auto promise = resolver->Promise(); + + GetTranslationManagerRemote()->CreateTranslator( + options->sourceLanguage(), options->targetLanguage(), + translator->GetTranslatorReceiver(), + WTF::BindOnce( + [](ScriptPromiseResolver<LanguageTranslator>* resolver, + LanguageTranslator* translator, bool success) { + if (success) { + resolver->Resolve(translator); + } else { + resolver->Reject(DOMException::Create( + "Unable to create translator for the given source and target " + "language.", + DOMException::GetErrorName( + DOMExceptionCode::kNotSupportedError))); + } + }, + WrapPersistent(resolver), WrapPersistent(translator))); + + return promise; +} + +} // namespace blink
diff --git a/third_party/blink/renderer/modules/on_device_translation/translation.h b/third_party/blink/renderer/modules/on_device_translation/translation.h new file mode 100644 index 0000000..30a5193d --- /dev/null +++ b/third_party/blink/renderer/modules/on_device_translation/translation.h
@@ -0,0 +1,58 @@ +// Copyright 2024 The Chromium Authors +// 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_MODULES_ON_DEVICE_TRANSLATION_TRANSLATION_H_ +#define THIRD_PARTY_BLINK_RENDERER_MODULES_ON_DEVICE_TRANSLATION_TRANSLATION_H_ + +#include "base/memory/scoped_refptr.h" +#include "base/task/sequenced_task_runner.h" +#include "third_party/blink/public/mojom/on_device_translation/translation_manager.mojom-blink.h" +#include "third_party/blink/renderer/bindings/core/v8/script_promise.h" +#include "third_party/blink/renderer/bindings/modules/v8/v8_translation_availability.h" +#include "third_party/blink/renderer/bindings/modules/v8/v8_translation_language_options.h" +#include "third_party/blink/renderer/core/execution_context/execution_context.h" +#include "third_party/blink/renderer/core/execution_context/execution_context_lifecycle_observer.h" +#include "third_party/blink/renderer/modules/on_device_translation/language_translator.h" +#include "third_party/blink/renderer/platform/bindings/script_state.h" +#include "third_party/blink/renderer/platform/bindings/script_wrappable.h" +#include "third_party/blink/renderer/platform/mojo/heap_mojo_remote.h" + +namespace blink { +class LanguageTranslator; +class V8TranslationAvailability; + +// The class that manages the translation APIs that allow developers to +// create Translators. +class Translation final : public ScriptWrappable, + public ExecutionContextClient { + DEFINE_WRAPPERTYPEINFO(); + + public: + explicit Translation(ExecutionContext* context); + ~Translation() override = default; + + void Trace(Visitor* visitor) const override; + + // translation.idl implementation. + ScriptPromise<V8TranslationAvailability> canTranslate( + ScriptState* script_state, + TranslationLanguageOptions* options, + ExceptionState& exception_state); + ScriptPromise<LanguageTranslator> createTranslator( + ScriptState* script_state, + TranslationLanguageOptions* options, + ExceptionState& exception_state); + + private: + HeapMojoRemote<mojom::blink::TranslationManager>& + GetTranslationManagerRemote(); + + scoped_refptr<base::SequencedTaskRunner> task_runner_; + HeapMojoRemote<mojom::blink::TranslationManager> translation_manager_remote_{ + nullptr}; +}; + +} // namespace blink + +#endif // THIRD_PARTY_BLINK_RENDERER_MODULES_ON_DEVICE_TRANSLATION_TRANSLATION_H_
diff --git a/third_party/blink/renderer/modules/on_device_translation/translation.idl b/third_party/blink/renderer/modules/on_device_translation/translation.idl new file mode 100644 index 0000000..9330c43 --- /dev/null +++ b/third_party/blink/renderer/modules/on_device_translation/translation.idl
@@ -0,0 +1,34 @@ +// Copyright 2024 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. + +enum TranslationAvailability { + "readily", + "after-download", + "no" +}; + +[ + RuntimeEnabled=TranslationAPI, + Exposed=(Window,Worker) +] +interface Translation { + [ + RuntimeEnabled=TranslationAPI, + Measure, + CallWith=ScriptState, + RaisesException + ] + Promise<TranslationAvailability> canTranslate( + TranslationLanguageOptions options + ); + [ + RuntimeEnabled=TranslationAPI, + Measure, + CallWith=ScriptState, + RaisesException + ] + Promise<LanguageTranslator> createTranslator( + TranslationLanguageOptions options + ); +};
diff --git a/third_party/blink/renderer/modules/on_device_translation/translation_language_options.idl b/third_party/blink/renderer/modules/on_device_translation/translation_language_options.idl new file mode 100644 index 0000000..9a17d9a5 --- /dev/null +++ b/third_party/blink/renderer/modules/on_device_translation/translation_language_options.idl
@@ -0,0 +1,8 @@ +// Copyright 2024 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. + +dictionary TranslationLanguageOptions { + required DOMString sourceLanguage; + required DOMString targetLanguage; +};
diff --git a/third_party/blink/renderer/modules/on_device_translation/window_or_worker_global_scope_translation.idl b/third_party/blink/renderer/modules/on_device_translation/window_or_worker_global_scope_translation.idl new file mode 100644 index 0000000..4277004 --- /dev/null +++ b/third_party/blink/renderer/modules/on_device_translation/window_or_worker_global_scope_translation.idl
@@ -0,0 +1,11 @@ +// Copyright 2024 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +[ + ImplementedAs=DOMTranslation, + RuntimeEnabled=TranslationAPI, + Exposed=(Window,Worker) +] partial interface mixin WindowOrWorkerGlobalScope { + readonly attribute Translation translation; +};
diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/third_party/blink/renderer/platform/runtime_enabled_features.json5 index c023047..8eb97fd 100644 --- a/third_party/blink/renderer/platform/runtime_enabled_features.json5 +++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5
@@ -3923,6 +3923,11 @@ name: "TranslateService", }, { + name: "TranslationAPI", + status: "test", + base_feature: "EnableTranslationAPI", + }, + { name: "TrustedTypeBeforePolicyCreationEvent", status: "experimental", },
diff --git a/third_party/blink/web_tests/LeakExpectations b/third_party/blink/web_tests/LeakExpectations index a65e3019..02a7276 100644 --- a/third_party/blink/web_tests/LeakExpectations +++ b/third_party/blink/web_tests/LeakExpectations
@@ -46,8 +46,6 @@ # Sheriff 2023-04-04 crbug.com/1430360 [ Linux ] external/wpt/custom-elements/form-associated/label-delegatesFocus.html [ Failure Pass ] -crbug.com/325981758 external/wpt/html/semantics/popovers/popover-light-dismiss.html [ Failure ] - ########################################################################### # WARNING: Memory leaks must be fixed asap. Sheriff is expected to revert # # culprit CLs instead of suppressing the leaks. If you have any question, #
diff --git a/third_party/blink/web_tests/TestExpectations b/third_party/blink/web_tests/TestExpectations index e24e1cb..bb61151 100644 --- a/third_party/blink/web_tests/TestExpectations +++ b/third_party/blink/web_tests/TestExpectations
@@ -7205,6 +7205,10 @@ [ Mac14 ] virtual/webnn-service-with-gpu/external/wpt/webnn/conformance_tests/gpu/conv2d.https.any.worker [ Failure Pass ] [ Mac14 ] webexposed/global-interface-listing.html [ Skip Timeout ] +# 2024-04-18 Flaky Suppressor on ci/mac-osxbeta-rel +[ Mac14 ] http/tests/inspector-protocol/tracing/animation.js [ Failure Pass ] +[ Mac14 ] virtual/webnn-service-with-gpu/external/wpt/webnn/conformance_tests/gpu/reduction.https.any.html [ Timeout Pass ] + # Branch Gardener 2024-03-20 crbug.com/330547706 [ Debug Mac13 ] virtual/controls-refresh-hc/fast/forms/color-scheme/select/select-multiple-appearance-basic.html [ Crash Pass ] @@ -7245,16 +7249,40 @@ crbug.com/330761492 external/wpt/html/editing/the-hidden-attribute/beforematch-scroll-to-text-fragment.html [ Failure Pass ] # RubyLineBreakable +crbug.com/324111880 virtual/ruby-lb/editing/execCommand/insert-paragraph-into-table.html [ Crash ] +crbug.com/324111880 virtual/ruby-lb/editing/pasteboard/copy-paste-ruby-text-with-block.html [ Crash ] +crbug.com/324111880 virtual/ruby-lb/editing/pasteboard/copy-paste-ruby-text.html [ Crash ] +crbug.com/324111880 virtual/ruby-lb/external/wpt/css/css-break/ruby-000.html [ Failure ] +crbug.com/324111880 virtual/ruby-lb/external/wpt/css/css-break/ruby-001.html [ Failure ] +crbug.com/324111880 virtual/ruby-lb/external/wpt/css/css-break/ruby-002.html [ Failure ] +crbug.com/324111880 virtual/ruby-lb/external/wpt/css/css-break/ruby-003.html [ Failure ] +crbug.com/324111880 virtual/ruby-lb/external/wpt/css/css-contain/contain-layout-005.html [ Crash Failure ] +crbug.com/324111880 virtual/ruby-lb/external/wpt/css/css-contain/contain-paint-008.html [ Failure ] +crbug.com/324111880 virtual/ruby-lb/external/wpt/css/css-contain/contain-paint-ignored-cases-ruby-containing-block-001.html [ Crash ] +crbug.com/324111880 virtual/ruby-lb/external/wpt/css/css-contain/content-visibility/display-ruby-text-crash.html [ Crash ] +crbug.com/324111880 virtual/ruby-lb/external/wpt/css/css-multicol/multicol-fill-balance-021.html [ Failure ] crbug.com/324111880 virtual/ruby-lb/external/wpt/css/css-ruby/br-clear-all-002.html [ Failure ] crbug.com/324111880 virtual/ruby-lb/external/wpt/css/css-ruby/line-break-around-ruby-001.html [ Failure ] crbug.com/324111880 virtual/ruby-lb/external/wpt/css/css-ruby/line-spacing.html [ Failure ] crbug.com/324111880 virtual/ruby-lb/external/wpt/css/css-ruby/ruby-line-breaking-002.html [ Failure ] +crbug.com/324111880 virtual/ruby-lb/external/wpt/css/css-text-decor/ruby-text-decoration-01.html [ Crash ] +crbug.com/324111880 virtual/ruby-lb/external/wpt/css/css-writing-modes/direction-upright-002.html [ Crash Failure ] +crbug.com/324111880 virtual/ruby-lb/external/wpt/editing/run/inserthorizontalrule.html [ Crash ] +crbug.com/324111880 virtual/ruby-lb/external/wpt/webvtt/rendering/cues-with-video/processing-model/bidi/bidi_ruby.html [ Crash Failure ] +crbug.com/324111880 virtual/ruby-lb/external/wpt/webvtt/rendering/cues-with-video/processing-model/bidi/vertical_lr.html [ Crash Failure ] +crbug.com/324111880 virtual/ruby-lb/external/wpt/webvtt/rendering/cues-with-video/processing-model/bidi/vertical_rl.html [ Crash Failure ] +crbug.com/324111880 virtual/ruby-lb/external/wpt/webvtt/rendering/cues-with-video/processing-model/selectors/cue/vertical_ruby-position.html [ Crash Failure ] crbug.com/324111880 virtual/ruby-lb/fast/ruby/float-overhang-from-ruby-text.html [ Failure ] crbug.com/324111880 virtual/ruby-lb/fast/ruby/line-break-ruby.html [ Failure ] crbug.com/324111880 virtual/ruby-lb/fast/ruby/overhang-horizontal.html [ Failure ] crbug.com/324111880 virtual/ruby-lb/fast/ruby/overhang-vertical.html [ Failure ] crbug.com/324111880 virtual/ruby-lb/fast/ruby/ruby-position-modern-japanese-fonts.html [ Failure ] crbug.com/324111880 virtual/ruby-lb/fast/ruby/select-ruby.html [ Failure ] +crbug.com/324111880 virtual/ruby-lb/media/track/track-cue-rendering-rtl.html [ Crash ] +crbug.com/324111880 virtual/ruby-lb/media/track/track-cue-rendering-ruby.html [ Crash Failure ] +crbug.com/324111880 virtual/ruby-lb/paint/invalidation/ruby-flipped-blocks.html [ Failure ] +crbug.com/324111880 virtual/ruby-lb/virtual/text-antialias/emphasis-avoid-ruby.html [ Failure ] +crbug.com/324111880 virtual/ruby-lb/virtual/text-antialias/whitespace/justification-expansion-crash.html [ Crash ] # RubyLineBreakable; NeedsRebaseline crbug.com/324111880 virtual/ruby-lb/fast/ruby/after-doesnt-crash.html [ Failure ] crbug.com/324111880 virtual/ruby-lb/fast/ruby/before-doesnt-crash.html [ Failure ]
diff --git a/third_party/blink/web_tests/VirtualTestSuites b/third_party/blink/web_tests/VirtualTestSuites index 80a27013..bdcc52f 100644 --- a/third_party/blink/web_tests/VirtualTestSuites +++ b/third_party/blink/web_tests/VirtualTestSuites
@@ -2840,7 +2840,32 @@ { "prefix": "ruby-lb", "platforms": ["Mac"], - "bases": ["external/wpt/css/css-ruby", "fast/ruby"], + "bases": ["external/wpt/css/css-ruby", + "fast/ruby", + "editing/execCommand/insert-paragraph-into-table.html", + "editing/pasteboard/copy-paste-ruby-text-with-block.html", + "editing/pasteboard/copy-paste-ruby-text.html", + "external/wpt/css/css-break/ruby-000.html", + "external/wpt/css/css-break/ruby-001.html", + "external/wpt/css/css-break/ruby-002.html", + "external/wpt/css/css-break/ruby-003.html", + "external/wpt/css/css-contain/contain-layout-005.html", + "external/wpt/css/css-contain/contain-paint-008.html", + "external/wpt/css/css-contain/contain-paint-ignored-cases-ruby-containing-block-001.html", + "external/wpt/css/css-contain/content-visibility/display-ruby-text-crash.html", + "external/wpt/css/css-multicol/multicol-fill-balance-021.html", + "external/wpt/css/css-text-decor/ruby-text-decoration-01.html", + "external/wpt/css/css-writing-modes/direction-upright-002.html", + "external/wpt/editing/run/inserthorizontalrule.html", + "external/wpt/webvtt/rendering/cues-with-video/processing-model/bidi/bidi_ruby.html", + "external/wpt/webvtt/rendering/cues-with-video/processing-model/bidi/vertical_lr.html", + "external/wpt/webvtt/rendering/cues-with-video/processing-model/bidi/vertical_rl.html", + "external/wpt/webvtt/rendering/cues-with-video/processing-model/selectors/cue/vertical_ruby-position.html", + "media/track/track-cue-rendering-rtl.html", + "media/track/track-cue-rendering-ruby.html", + "paint/invalidation/ruby-flipped-blocks.html", + "virtual/text-antialias/emphasis-avoid-ruby.html", + "virtual/text-antialias/whitespace/justification-expansion-crash.html"], "args": ["--enable-blink-features=RubyLineBreakable"], "owners": ["tkent@chromium.org"], "expires": "Oct 10, 2024"
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 9c2f85ce..8d2d193 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
@@ -168069,6 +168069,19 @@ {} ] ], + "selection-over-highlight-001.html": [ + "57078cf83b38e317c4c070347fe43c9e440ff6f9", + [ + null, + [ + [ + "/css/css-pseudo/selection-over-highlight-001-ref.html", + "==" + ] + ], + {} + ] + ], "selection-overlay-and-grammar-001.html": [ "19768c73897155fc03fa063aa9001c5b74521b6e", [ @@ -327682,6 +327695,10 @@ "c93e8cb92450a3f61a9c25b810268a9589212b5b", [] ], + "selection-over-highlight-001-ref.html": [ + "f75017d5ec5d903bd484f0a6881e3ce1cd826c30", + [] + ], "selection-paint-image-notref.html": [ "ba1e97dffd8e3cbf1d113b8a68a099dd3fb36824", [] @@ -353900,8 +353917,44 @@ "8760e59d21f6f4e5a26de27395fe1b8a5151dac2", [] ], + "auction-config-passed-to-worklets.https.window_1-5-expected.txt": [ + "f77f9c2558b705aa88085378e5053056609c19a9", + [] + ], + "auction-config.https.window_1-5-expected.txt": [ + "4cc1615072d925c84f183ed7a7df430a60857927", + [] + ], + "auction-config.https.window_6-10-expected.txt": [ + "f3d6faf35f280728c0196a886213bfbfc9d83c8d", + [] + ], + "component-ads.https.window_16-last-expected.txt": [ + "bb41d8c0f99cfd686604cc28eac66926ffda45f3", + [] + ], + "component-auction.https.window_16-last-expected.txt": [ + "afdb5eace277d60b5121e56f8c1369463348de83", + [] + ], + "deprecated-render-url-replacements.https.window_1-5-expected.txt": [ + "7f0d162804e0a73856824f74047c0679eb2e2132", + [] + ], + "deprecated-render-url-replacements.https.window_11-15-expected.txt": [ + "661d00139fcde3bfcd43fc70b7951cc86290d949", + [] + ], + "deprecated-render-url-replacements.https.window_16-last-expected.txt": [ + "ccdfedec62359d5afc20d7bfc7a6bf213046983a", + [] + ], + "deprecated-render-url-replacements.https.window_6-10-expected.txt": [ + "8462c72e91f776da0fe2efa81d806f8fac6bac04", + [] + ], "kanon-status-below-threshold.https.window-expected.txt": [ - "89e64d0dde16b3e32e235a39669e7ca954a3aa67", + "e27cfa443a0dcc5447592dc9af5d987467910dbd", [] ], "resources": { @@ -353934,7 +353987,7 @@ [] ], "fledge-util.sub.js": [ - "32162e933a50ffc83d709e7d83718eeb1bc98914", + "a7d0f63830d63bebf964aed74038b1fbbb2a75e7", [] ], "fledge_http_server_util.py": [ @@ -354159,7 +354212,7 @@ [] ], "cross-origin-ancestor-activeelement-after-child-lose-focus-helper.html": [ - "83d39d5c70d2ec2cf63773e834597d67f00f2aa4", + "fe96614517207faf2381b947d713fa9bbc01b886", [] ], "focus-already-focused-iframe-deep-different-site-outer.sub.html": [ @@ -441484,6 +441537,13 @@ {} ] ], + "position-try-backdrop.html": [ + "6bf2262c69af6ec2f883435177c49db93c135b67", + [ + null, + {} + ] + ], "position-try-cascade-layer-reorder.html": [ "4f38806f604f612065783c9b3253fb1f6bda0184", [ @@ -485038,7 +485098,7 @@ "dpub-aam": { "role": { "roles.html": [ - "b9840976e1f001d182540cadfbe88c3c7c4d0403", + "62e33b95fa786e007371e1de29a25a260a79206d", [ null, { @@ -519748,7 +519808,7 @@ ] ], "auction-config-passed-to-worklets.https.window.js": [ - "9b12d077baf08afe508279a94f9dde9b2fbcf63b", + "7780957739e435825f186500f56a6e102e9c2c32", [ "fledge/tentative/auction-config-passed-to-worklets.https.window.html?1-5", { @@ -519991,7 +520051,7 @@ ] ], "auction-config.https.window.js": [ - "5fa4fa252fde97d02795bf1013ce0df7afdc70e1", + "28ed147071858ee6c5f0f3acdaf1d2d636b1ad4a", [ "fledge/tentative/auction-config.https.window.html?1-5", { @@ -520054,7 +520114,11 @@ ], [ "variant", - "?46-last" + "?45-50" + ], + [ + "variant", + "?50-last" ] ], "timeout": "long" @@ -520122,7 +520186,11 @@ ], [ "variant", - "?46-last" + "?45-50" + ], + [ + "variant", + "?50-last" ] ], "timeout": "long" @@ -520190,7 +520258,11 @@ ], [ "variant", - "?46-last" + "?45-50" + ], + [ + "variant", + "?50-last" ] ], "timeout": "long" @@ -520258,7 +520330,11 @@ ], [ "variant", - "?46-last" + "?45-50" + ], + [ + "variant", + "?50-last" ] ], "timeout": "long" @@ -520326,7 +520402,11 @@ ], [ "variant", - "?46-last" + "?45-50" + ], + [ + "variant", + "?50-last" ] ], "timeout": "long" @@ -520394,7 +520474,11 @@ ], [ "variant", - "?46-last" + "?45-50" + ], + [ + "variant", + "?50-last" ] ], "timeout": "long" @@ -520462,7 +520546,11 @@ ], [ "variant", - "?46-last" + "?45-50" + ], + [ + "variant", + "?50-last" ] ], "timeout": "long" @@ -520530,14 +520618,18 @@ ], [ "variant", - "?46-last" + "?45-50" + ], + [ + "variant", + "?50-last" ] ], "timeout": "long" } ], [ - "fledge/tentative/auction-config.https.window.html?46-last", + "fledge/tentative/auction-config.https.window.html?45-50", { "script_metadata": [ [ @@ -520598,7 +520690,83 @@ ], [ "variant", - "?46-last" + "?45-50" + ], + [ + "variant", + "?50-last" + ] + ], + "timeout": "long" + } + ], + [ + "fledge/tentative/auction-config.https.window.html?50-last", + { + "script_metadata": [ + [ + "script", + "/resources/testdriver.js" + ], + [ + "script", + "/common/utils.js" + ], + [ + "script", + "resources/fledge-util.sub.js" + ], + [ + "script", + "/common/subset-tests.js" + ], + [ + "timeout", + "long" + ], + [ + "variant", + "?1-5" + ], + [ + "variant", + "?6-10" + ], + [ + "variant", + "?11-15" + ], + [ + "variant", + "?16-20" + ], + [ + "variant", + "?21-25" + ], + [ + "variant", + "?26-30" + ], + [ + "variant", + "?31-35" + ], + [ + "variant", + "?36-40" + ], + [ + "variant", + "?40-45" + ], + [ + "variant", + "?45-50" + ], + [ + "variant", + "?50-last" ] ], "timeout": "long" @@ -520666,7 +520834,11 @@ ], [ "variant", - "?46-last" + "?45-50" + ], + [ + "variant", + "?50-last" ] ], "timeout": "long" @@ -520853,7 +521025,7 @@ ] ], "component-ads.https.window.js": [ - "6b22585d578959030c508a144dab2ba10dfb11f6", + "8493025429ed83b49f5117f0b3f237e03ccf64a5", [ "fledge/tentative/component-ads.https.window.html?1-5", { @@ -521032,7 +521204,7 @@ ] ], "component-auction.https.window.js": [ - "015c20a5c247925aa5e7a0e18ac5eea676083a48", + "bf804e68579937f8192ba6bf377e0ed6fdedf501", [ "fledge/tentative/component-auction.https.window.html?1-5", { @@ -521968,6 +522140,185 @@ } ] ], + "deprecated-render-url-replacements.https.window.js": [ + "4f8bc1cc7f0f5cd12b78a8cb05f787841b63f120", + [ + "fledge/tentative/deprecated-render-url-replacements.https.window.html?1-5", + { + "script_metadata": [ + [ + "script", + "/resources/testdriver.js" + ], + [ + "script", + "/common/utils.js" + ], + [ + "script", + "resources/fledge-util.sub.js" + ], + [ + "script", + "/common/subset-tests.js" + ], + [ + "timeout", + "long" + ], + [ + "variant", + "?1-5" + ], + [ + "variant", + "?6-10" + ], + [ + "variant", + "?11-15" + ], + [ + "variant", + "?16-last" + ] + ], + "timeout": "long" + } + ], + [ + "fledge/tentative/deprecated-render-url-replacements.https.window.html?11-15", + { + "script_metadata": [ + [ + "script", + "/resources/testdriver.js" + ], + [ + "script", + "/common/utils.js" + ], + [ + "script", + "resources/fledge-util.sub.js" + ], + [ + "script", + "/common/subset-tests.js" + ], + [ + "timeout", + "long" + ], + [ + "variant", + "?1-5" + ], + [ + "variant", + "?6-10" + ], + [ + "variant", + "?11-15" + ], + [ + "variant", + "?16-last" + ] + ], + "timeout": "long" + } + ], + [ + "fledge/tentative/deprecated-render-url-replacements.https.window.html?16-last", + { + "script_metadata": [ + [ + "script", + "/resources/testdriver.js" + ], + [ + "script", + "/common/utils.js" + ], + [ + "script", + "resources/fledge-util.sub.js" + ], + [ + "script", + "/common/subset-tests.js" + ], + [ + "timeout", + "long" + ], + [ + "variant", + "?1-5" + ], + [ + "variant", + "?6-10" + ], + [ + "variant", + "?11-15" + ], + [ + "variant", + "?16-last" + ] + ], + "timeout": "long" + } + ], + [ + "fledge/tentative/deprecated-render-url-replacements.https.window.html?6-10", + { + "script_metadata": [ + [ + "script", + "/resources/testdriver.js" + ], + [ + "script", + "/common/utils.js" + ], + [ + "script", + "resources/fledge-util.sub.js" + ], + [ + "script", + "/common/subset-tests.js" + ], + [ + "timeout", + "long" + ], + [ + "variant", + "?1-5" + ], + [ + "variant", + "?6-10" + ], + [ + "variant", + "?11-15" + ], + [ + "variant", + "?16-last" + ] + ], + "timeout": "long" + } + ] + ], "direct-from-seller-signals.https.window.js": [ "d0c0e550c4232bd4dad1661b0b418084111a48a6", [ @@ -529079,7 +529430,7 @@ ] ], "cross-origin-ancestor-activeelement-after-child-lose-focus.sub.html": [ - "35844bc91fb56c0446c9a433114af52b8970ddb1", + "1b84b43f1c487b708405e41ed96565b487d8708b", [ null, { @@ -565943,7 +566294,7 @@ ] ], "the-anchor-attribute-003.tentative.html": [ - "ec2d8d5ead9673e307350bc7346a5f3b971a391b", + "e8c12c784f53d086e42c16eb8ed5f9572354c25a", [ null, {} @@ -632551,6 +632902,13 @@ {} ] ], + "navigation-timing-sizes.https.html": [ + "b3b1b5fe35a0099de2892f387e0f4d0d4876fda0", + [ + null, + {} + ] + ], "navigation-timing.https.html": [ "75cab40458c6d362caa34315388ad762fbb7d2e9", [
diff --git a/third_party/blink/web_tests/external/wpt/dpub-aam/role/roles.html b/third_party/blink/web_tests/external/wpt/dpub-aam/role/roles.html index b984097..62e33b9 100644 --- a/third_party/blink/web_tests/external/wpt/dpub-aam/role/roles.html +++ b/third_party/blink/web_tests/external/wpt/dpub-aam/role/roles.html
@@ -28,6 +28,7 @@ "doc-colophon", "doc-conclusion", "doc-cover", + "doc-credit", "doc-credits", "doc-dedication", // "doc-endnote", // deprecated @@ -60,4 +61,5 @@ </script> </body> -</html> \ No newline at end of file +</html> +
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/popovers/popover-light-dismiss.html b/third_party/blink/web_tests/external/wpt/html/semantics/popovers/popover-light-dismiss.html index e0e006e..1317b62 100644 --- a/third_party/blink/web_tests/external/wpt/html/semantics/popovers/popover-light-dismiss.html +++ b/third_party/blink/web_tests/external/wpt/html/semantics/popovers/popover-light-dismiss.html
@@ -607,18 +607,18 @@ const iframe_box = iframe29.getBoundingClientRect(); await actions - .pointerMove(iframe_box.width / 2, iframe_box.height / 2, {origin: iframe29}) - .pointerDown({button: actions.ButtonType.LEFT}) .pointerMove(1,1,{origin: b29}) + .pointerDown({button: actions.ButtonType.LEFT}) + .pointerMove(iframe_box.width / 2, iframe_box.height / 2, {origin: iframe29}) .pointerUp({button: actions.ButtonType.LEFT}) .send(); assert_true(p29.matches(':popover-open'), 'popover should be open after pointerUp in iframe.'); actions = new test_driver.Actions(); await actions - .pointerMove(1,1,{origin: b29}) - .pointerDown({button: actions.ButtonType.LEFT}) .pointerMove(iframe_box.width / 2, iframe_box.height / 2, {origin: iframe29}) + .pointerDown({button: actions.ButtonType.LEFT}) + .pointerMove(1,1,{origin: b29}) .pointerUp({button: actions.ButtonType.LEFT}) .send(); assert_true(p29.matches(':popover-open'), 'popover should be open after pointerUp on main frame button.');
diff --git a/third_party/blink/web_tests/external/wpt/webnn/validation_tests/instanceNormalization.https.any.js b/third_party/blink/web_tests/external/wpt/webnn/validation_tests/instanceNormalization.https.any.js index bdd3385..4fc26ec5a 100644 --- a/third_party/blink/web_tests/external/wpt/webnn/validation_tests/instanceNormalization.https.any.js +++ b/third_party/blink/web_tests/external/wpt/webnn/validation_tests/instanceNormalization.https.any.js
@@ -41,3 +41,152 @@ assert_throws_js( TypeError, () => builder.instanceNormalization(input, options)); }, '[instanceNormalization] throw if bias option is from another builder'); + +const tests = [ + { + name: '[instanceNormalization] Test with default options for 4-D input.', + input: {dataType: 'float32', dimensions: [1, 2, 3, 4]}, + output: {dataType: 'float32', dimensions: [1, 2, 3, 4]} + }, + { + name: + '[instanceNormalization] Test with scale, bias and default epsilon value.', + input: {dataType: 'float32', dimensions: [1, 2, 3, 4]}, + options: { + scale: {dataType: 'float32', dimensions: [2]}, + bias: {dataType: 'float32', dimensions: [2]}, + epsilon: 1e-5, + }, + output: {dataType: 'float32', dimensions: [1, 2, 3, 4]} + }, + { + name: '[instanceNormalization] Test with a non-default epsilon value.', + input: {dataType: 'float32', dimensions: [1, 2, 3, 4]}, + options: { + epsilon: 1e-4, + }, + output: {dataType: 'float32', dimensions: [1, 2, 3, 4]} + }, + { + name: '[instanceNormalization] Test with layout=nhwc.', + input: {dataType: 'float32', dimensions: [1, 2, 3, 4]}, + options: { + layout: 'nhwc', + scale: {dataType: 'float32', dimensions: [4]}, + bias: {dataType: 'float32', dimensions: [4]}, + }, + output: {dataType: 'float32', dimensions: [1, 2, 3, 4]} + }, + { + name: '[instanceNormalization] Test when the input data type is float16.', + input: {dataType: 'float16', dimensions: [1, 2, 3, 4]}, + output: {dataType: 'float16', dimensions: [1, 2, 3, 4]} + }, + { + name: '[instanceNormalization] Throw if the input is not a 4-D tensor.', + input: {dataType: 'float32', dimensions: [1, 2, 5, 5, 2]}, + }, + { + name: + '[instanceNormalization] Throw if the input data type is not one of floating point types.', + input: {dataType: 'int32', dimensions: [1, 2, 5, 5]}, + }, + { + name: + '[instanceNormalization] Throw if the scale data type is not the same as the input data type.', + input: {dataType: 'float16', dimensions: [1, 2, 5, 5]}, + options: { + scale: {dataType: 'float32', dimensions: [2]}, + }, + }, + { + name: + '[instanceNormalization] Throw if the scale operand is not a 1-D tensor.', + input: {dataType: 'float32', dimensions: [1, 2, 5, 5]}, + options: { + scale: {dataType: 'float32', dimensions: [2, 1]}, + }, + }, + { + name: + '[instanceNormalization] Throw if the size of scale operand is not equal to the size of the feature dimension of the input with layout=nhwc.', + input: {dataType: 'float32', dimensions: [1, 2, 5, 5]}, + options: { + layout: 'nhwc', + scale: {dataType: 'float32', dimensions: [2]}, + }, + }, + { + name: + '[instanceNormalization] Throw if the size of scale operand is not equal to the size of the feature dimension of the input with layout=nchw.', + input: {dataType: 'float32', dimensions: [1, 5, 5, 2]}, + options: { + layout: 'nchw', + scale: {dataType: 'float32', dimensions: [2]}, + }, + }, + { + name: + '[instanceNormalization] Throw if the bias data type is not the same as the input data type.', + input: {dataType: 'float16', dimensions: [1, 2, 5, 5]}, + options: { + bias: {dataType: 'float32', dimensions: [2]}, + }, + }, + { + name: + '[instanceNormalization] Throw if the bias operand is not a 1-D tensor.', + input: {dataType: 'float32', dimensions: [1, 2, 5, 5]}, + options: { + scale: {dataType: 'float32', dimensions: [2, 1]}, + }, + }, + { + name: + '[instanceNormalization] Throw if the size of bias operand is not equal to the size of the feature dimension of the input with layout=nhwc.', + input: {dataType: 'float32', dimensions: [1, 2, 5, 5]}, + options: { + layout: 'nhwc', + bias: {dataType: 'float32', dimensions: [2]}, + }, + }, + { + name: + '[instanceNormalization] Throw if the size of bias operand is not equal to the size of the feature dimension of the input with layout=nchw.', + input: {dataType: 'float32', dimensions: [1, 5, 5, 2]}, + options: { + layout: 'nchw', + bias: {dataType: 'float32', dimensions: [2]}, + }, + }, +]; + +tests.forEach( + test => promise_test(async t => { + const input = builder.input( + 'input', + {dataType: test.input.dataType, dimensions: test.input.dimensions}); + + if (test.options && test.options.bias) { + test.options.bias = builder.input('bias', { + dataType: test.options.bias.dataType, + dimensions: test.options.bias.dimensions + }); + } + if (test.options && test.options.scale) { + test.options.scale = builder.input('scale', { + dataType: test.options.scale.dataType, + dimensions: test.options.scale.dimensions + }); + } + + if (test.output) { + const output = builder.instanceNormalization(input, test.options); + assert_equals(output.dataType(), test.output.dataType); + assert_array_equals(output.shape(), test.output.dimensions); + } else { + assert_throws_js( + TypeError, + () => builder.instanceNormalization(input, test.options)); + } + }, test.name));
diff --git a/third_party/blink/web_tests/http/tests/inspector-protocol/resources/animation.html b/third_party/blink/web_tests/http/tests/inspector-protocol/resources/animation.html deleted file mode 100644 index 57061f6..0000000 --- a/third_party/blink/web_tests/http/tests/inspector-protocol/resources/animation.html +++ /dev/null
@@ -1,29 +0,0 @@ -<!doctype html> -<html> - <head> - <title>Simple animation</title> - <style> - @keyframes simple-animation { - from { - color: red; - transform: translateX(0%); - } - to { - color: yellow; - transform: translateX(100%); - } - } - - div { - width: 200px; - height: 200px; - background-color: red; - animation-name: simple-animation; - animation-duration: 4s; - } - </style> - </head> - <body> - <div>hello world. This Animation has an unsupported css property!</div> - </body> -</html>
diff --git a/third_party/blink/web_tests/http/tests/inspector-protocol/tracing/animation-expected.txt b/third_party/blink/web_tests/http/tests/inspector-protocol/tracing/animation-expected.txt deleted file mode 100644 index 7bfc627..0000000 --- a/third_party/blink/web_tests/http/tests/inspector-protocol/tracing/animation-expected.txt +++ /dev/null
@@ -1,60 +0,0 @@ -Tests the data of an Animation event -Recording started -Tracing complete -Object: { - args: { - data: { - displayName: simple-animation - id: string - name: - nodeId: number - nodeName: string - state: running - } - } - cat: string - id2: { - local: string - } - name: Animation - ph: b - pid: number - tid: number - ts: number -} -Object: { - args: { - data: { - compositeFailed: 8193 - unsupportedProperties: [ - string, - ] - } - } - cat: string - id2: { - local: string - } - name: Animation - ph: n - pid: number - tid: number - ts: number -} -Object: { - args: { - data: { - state: running - } - } - cat: string - id2: { - local: string - } - name: Animation - ph: n - pid: number - tid: number - ts: number -} -
diff --git a/third_party/blink/web_tests/http/tests/inspector-protocol/tracing/animation.js b/third_party/blink/web_tests/http/tests/inspector-protocol/tracing/animation.js deleted file mode 100644 index 0ca120a7..0000000 --- a/third_party/blink/web_tests/http/tests/inspector-protocol/tracing/animation.js +++ /dev/null
@@ -1,26 +0,0 @@ -(async function(/** @type {import('test_runner').TestRunner} */ testRunner) { - const {session, dp} = await testRunner.startBlank( - 'Tests the data of an Animation event'); - - const TracingHelper = - await testRunner.loadScript('../resources/tracing-test.js'); - const tracingHelper = new TracingHelper(testRunner, session); - - await dp.Page.enable(); - - await tracingHelper.startTracing('blink.animations,devtools.timeline,benchmark,rail'); - - dp.Page.navigate( - {url: 'http://127.0.0.1:8000/inspector-protocol/resources/animation.html'}); - - // Wait for the DOM to be interactive. - await dp.Page.onceLoadEventFired(); - - const events = await tracingHelper.stopTracing(/blink\.animations|devtools\.timeline|benchmark|rail/); - const animationEvents = events.filter(event => event.name && event.name === 'Animation').sort((a, b) => a.ts - b.ts); - for (const event of animationEvents) { - tracingHelper.logEventShape(event, [], ['name', 'data', 'ph', 'state', 'compositeFailed', 'unsupportedProperties', 'displayName']); - } - - testRunner.completeTest(); - });
diff --git a/third_party/blink/web_tests/http/tests/inspector-protocol/tracing/rendering-expected.txt b/third_party/blink/web_tests/http/tests/inspector-protocol/tracing/rendering-expected.txt index 86ba1ce1..d12bf3d 100644 --- a/third_party/blink/web_tests/http/tests/inspector-protocol/tracing/rendering-expected.txt +++ b/third_party/blink/web_tests/http/tests/inspector-protocol/tracing/rendering-expected.txt
@@ -24,7 +24,6 @@ Object: { args: { data: { - displayName: string id: string name: string nodeId: number
diff --git a/third_party/blink/web_tests/http/tests/serviceworker/webexposed/global-interface-listing-service-worker-expected.txt b/third_party/blink/web_tests/http/tests/serviceworker/webexposed/global-interface-listing-service-worker-expected.txt index df73b35..33a84a5 100644 --- a/third_party/blink/web_tests/http/tests/serviceworker/webexposed/global-interface-listing-service-worker-expected.txt +++ b/third_party/blink/web_tests/http/tests/serviceworker/webexposed/global-interface-listing-service-worker-expected.txt
@@ -1101,6 +1101,10 @@ attribute @@toStringTag method addRoutes method constructor +interface LanguageTranslator + attribute @@toStringTag + method constructor + method translate interface Lock attribute @@toStringTag getter mode @@ -1879,6 +1883,11 @@ method enqueue method error method terminate +interface Translation + attribute @@toStringTag + method canTranslate + method constructor + method createTranslator interface TrustedHTML static method fromLiteral attribute @@toStringTag @@ -3390,6 +3399,7 @@ getter performance getter scheduler getter self + getter translation getter trustedTypes method atob method btoa
diff --git a/third_party/blink/web_tests/webexposed/global-interface-listing-dedicated-worker-expected.txt b/third_party/blink/web_tests/webexposed/global-interface-listing-dedicated-worker-expected.txt index 45fa006..f36f48dd 100644 --- a/third_party/blink/web_tests/webexposed/global-interface-listing-dedicated-worker-expected.txt +++ b/third_party/blink/web_tests/webexposed/global-interface-listing-dedicated-worker-expected.txt
@@ -1153,6 +1153,10 @@ [Worker] getter selectedTrack [Worker] method @@iterator [Worker] method constructor +[Worker] interface LanguageTranslator +[Worker] attribute @@toStringTag +[Worker] method constructor +[Worker] method translate [Worker] interface Lock [Worker] attribute @@toStringTag [Worker] getter mode @@ -2109,6 +2113,11 @@ [Worker] method enqueue [Worker] method error [Worker] method terminate +[Worker] interface Translation +[Worker] attribute @@toStringTag +[Worker] method canTranslate +[Worker] method constructor +[Worker] method createTranslator [Worker] interface TrustedHTML [Worker] static method fromLiteral [Worker] attribute @@toStringTag @@ -3792,6 +3801,7 @@ [Worker] getter performance [Worker] getter scheduler [Worker] getter self +[Worker] getter translation [Worker] getter trustedTypes [Worker] method atob [Worker] method btoa
diff --git a/third_party/blink/web_tests/webexposed/global-interface-listing-expected.txt b/third_party/blink/web_tests/webexposed/global-interface-listing-expected.txt index 83481d7d..42ebc32 100644 --- a/third_party/blink/web_tests/webexposed/global-interface-listing-expected.txt +++ b/third_party/blink/web_tests/webexposed/global-interface-listing-expected.txt
@@ -5715,6 +5715,10 @@ setter composite setter pseudoElement setter target +interface LanguageTranslator + attribute @@toStringTag + method constructor + method translate interface LargestContentfulPaint : PerformanceEntry attribute @@toStringTag getter element @@ -10106,6 +10110,11 @@ getter propertyName getter pseudoElement method constructor +interface Translation + attribute @@toStringTag + method canTranslate + method constructor + method createTranslator interface TreeWalker attribute @@toStringTag getter currentNode @@ -13029,6 +13038,7 @@ getter styleMedia getter toolbar getter top + getter translation getter trustedTypes getter visualViewport getter window
diff --git a/third_party/blink/web_tests/webexposed/global-interface-listing-shared-worker-expected.txt b/third_party/blink/web_tests/webexposed/global-interface-listing-shared-worker-expected.txt index fde4f46..6572382 100644 --- a/third_party/blink/web_tests/webexposed/global-interface-listing-shared-worker-expected.txt +++ b/third_party/blink/web_tests/webexposed/global-interface-listing-shared-worker-expected.txt
@@ -1047,6 +1047,10 @@ [Worker] getter storageFormat [Worker] getter width [Worker] method constructor +[Worker] interface LanguageTranslator +[Worker] attribute @@toStringTag +[Worker] method constructor +[Worker] method translate [Worker] interface Lock [Worker] attribute @@toStringTag [Worker] getter mode @@ -1789,6 +1793,11 @@ [Worker] method enqueue [Worker] method error [Worker] method terminate +[Worker] interface Translation +[Worker] attribute @@toStringTag +[Worker] method canTranslate +[Worker] method constructor +[Worker] method createTranslator [Worker] interface TrustedHTML [Worker] static method fromLiteral [Worker] attribute @@toStringTag @@ -3295,6 +3304,7 @@ [Worker] getter performance [Worker] getter scheduler [Worker] getter self +[Worker] getter translation [Worker] getter trustedTypes [Worker] method atob [Worker] method btoa
diff --git a/third_party/chromium-variations b/third_party/chromium-variations index fd8265d..82bb273 160000 --- a/third_party/chromium-variations +++ b/third_party/chromium-variations
@@ -1 +1 @@ -Subproject commit fd8265d81da88a9c01d40378393da538d67a749e +Subproject commit 82bb2737369855a67042a9da0fc35105b2007c95
diff --git a/third_party/depot_tools b/third_party/depot_tools index af97284..6aaae85 160000 --- a/third_party/depot_tools +++ b/third_party/depot_tools
@@ -1 +1 @@ -Subproject commit af97284b58afb6bdb7dd2b353bc651c718ce5bb4 +Subproject commit 6aaae85821254406042a11254d49b14c9d1b44f3
diff --git a/third_party/devtools-frontend-internal b/third_party/devtools-frontend-internal index 84f6810..e823faa 160000 --- a/third_party/devtools-frontend-internal +++ b/third_party/devtools-frontend-internal
@@ -1 +1 @@ -Subproject commit 84f68106afc210db30fb1efa8f76425cb067e82b +Subproject commit e823faa7a77921dfb5fd356b41ce9685b1ab919f
diff --git a/third_party/devtools-frontend/src b/third_party/devtools-frontend/src index f61a430..01cc0ed 160000 --- a/third_party/devtools-frontend/src +++ b/third_party/devtools-frontend/src
@@ -1 +1 @@ -Subproject commit f61a43042a8433b9487b37813b0bc19494a01dd7 +Subproject commit 01cc0edfe78cb9f14cdfd7d5cb5cb14af1e6b2af
diff --git a/third_party/inspector_protocol/crdtp/chromium/protocol_traits.cc b/third_party/inspector_protocol/crdtp/chromium/protocol_traits.cc index 859014b0..ac3d525 100644 --- a/third_party/inspector_protocol/crdtp/chromium/protocol_traits.cc +++ b/third_party/inspector_protocol/crdtp/chromium/protocol_traits.cc
@@ -23,7 +23,8 @@ } std::string Binary::toBase64() const { - return base::Base64Encode(base::as_string_view(*bytes_)); + return base::Base64Encode(base::StringPiece( + reinterpret_cast<const char*>(bytes_->front()), bytes_->size())); } // static @@ -40,7 +41,7 @@ // static Binary Binary::fromVector(std::vector<uint8_t> data) { - return Binary(base::MakeRefCounted<base::RefCountedBytes>(std::move(data))); + return Binary(base::RefCountedBytes::TakeVector(&data)); } // static
diff --git a/third_party/inspector_protocol/crdtp/chromium/protocol_traits.h b/third_party/inspector_protocol/crdtp/chromium/protocol_traits.h index 480b5b2..3633431 100644 --- a/third_party/inspector_protocol/crdtp/chromium/protocol_traits.h +++ b/third_party/inspector_protocol/crdtp/chromium/protocol_traits.h
@@ -94,15 +94,8 @@ // Implements Serializable. void AppendSerialized(std::vector<uint8_t>* out) const override; - // Allow explicit conversion to `base::span`. - const uint8_t* data() const { return bytes_->data(); } + const uint8_t* data() const { return bytes_->front(); } size_t size() const { return bytes_->size(); } - // data()/size() provide access to Binary's data as a span, but each one - // requires a virtual call. Like RefCountedData, provide this operator as an - // optimization. - explicit operator base::span<const uint8_t>() const { - return base::span(*bytes_); - } scoped_refptr<base::RefCountedMemory> bytes() const { return bytes_; } std::string toBase64() const;
diff --git a/third_party/jni_zero/jni_zero.h b/third_party/jni_zero/jni_zero.h index acff661..acbcfb14 100644 --- a/third_party/jni_zero/jni_zero.h +++ b/third_party/jni_zero/jni_zero.h
@@ -723,7 +723,7 @@ template <typename ContainerType> struct ConvertArray; -#if defined(__cpp_concepts) && __cpp_concepts >= 202002L +#if defined(__cpp_concepts) && __cpp_concepts >= 201907L namespace internal { template <typename T>
diff --git a/third_party/openscreen/src b/third_party/openscreen/src index dcd61df..29abac6 160000 --- a/third_party/openscreen/src +++ b/third_party/openscreen/src
@@ -1 +1 @@ -Subproject commit dcd61dfe0e1e6c27d6d48fd4a29a9117e7d4b666 +Subproject commit 29abac6cf360ba375bba7f88826b75dade7a4a7d
diff --git a/third_party/rust/fend_core/v1/wrapper/fend_core.cc b/third_party/rust/fend_core/v1/wrapper/fend_core.cc index d4c60f1..cbb508b 100644 --- a/third_party/rust/fend_core/v1/wrapper/fend_core.cc +++ b/third_party/rust/fend_core/v1/wrapper/fend_core.cc
@@ -12,9 +12,9 @@ namespace fend_core { -std::optional<std::string> evaluate(std::string_view query) { +std::optional<std::string> evaluate(std::string_view query, unsigned int timeout_in_ms) { rust::String rust_result; - if (evaluate_using_rust(base::StringPieceToRustSlice(query), rust_result)) { + if (evaluate_using_rust(base::StringPieceToRustSlice(query), rust_result, timeout_in_ms)) { std::string result(rust_result); if (result.ends_with(query) || result.starts_with("\\")) { return std::nullopt;
diff --git a/third_party/rust/fend_core/v1/wrapper/fend_core.h b/third_party/rust/fend_core/v1/wrapper/fend_core.h index 19dcb976..8bd69be 100644 --- a/third_party/rust/fend_core/v1/wrapper/fend_core.h +++ b/third_party/rust/fend_core/v1/wrapper/fend_core.h
@@ -10,7 +10,10 @@ namespace fend_core { -std::optional<std::string> evaluate(std::string_view query); +// Try evaluating the query string with fend library, within `timeout_in_ms` ms. +// Returns the result string if the evaluation succeeded, or std::nullopt if failed. +// If `timeout_in_ms` = 0, there is no timeout. +std::optional<std::string> evaluate(std::string_view query, unsigned int timeout_in_ms = 100); } // namespace fend_core
diff --git a/third_party/rust/fend_core/v1/wrapper/fend_core_ffi_glue.rs b/third_party/rust/fend_core/v1/wrapper/fend_core_ffi_glue.rs index 1c74a0d..8c90ff3 100644 --- a/third_party/rust/fend_core/v1/wrapper/fend_core_ffi_glue.rs +++ b/third_party/rust/fend_core/v1/wrapper/fend_core_ffi_glue.rs
@@ -4,13 +4,13 @@ use std::time::Instant; -const TIMEOUT_IN_MS: u128 = 100; const NOAPPROX_PREFIX: &str = "@noapprox "; #[cxx::bridge(namespace = "fend_core")] mod ffi { extern "Rust" { - fn evaluate_using_rust(query: &[u8], out_result: &mut String) -> bool; + // If `timeout_in_ms` = 0, there is no timeout. + fn evaluate_using_rust(query: &[u8], out_result: &mut String, timeout_in_ms: u32) -> bool; } } @@ -31,17 +31,19 @@ } } -pub fn evaluate_using_rust(query: &[u8], out_result: &mut String) -> bool { +pub fn evaluate_using_rust(query: &[u8], out_result: &mut String, timeout_in_ms: u32) -> bool { let Ok(query_str) = std::str::from_utf8(query) else { return false; }; let mut context = fend_core::Context::new(); - let interrupt = TimeoutInterrupt::new_with_timeout(TIMEOUT_IN_MS); - match fend_core::evaluate_with_interrupt( - &(NOAPPROX_PREFIX.to_owned() + query_str), - &mut context, - &interrupt, - ) { + let full_query = NOAPPROX_PREFIX.to_owned() + query_str; + let result = if timeout_in_ms > 0 { + let interrupt = TimeoutInterrupt::new_with_timeout(timeout_in_ms.into()); + fend_core::evaluate_with_interrupt(&full_query, &mut context, &interrupt) + } else { + fend_core::evaluate(&full_query, &mut context) + }; + match result { Err(_) => false, Ok(result) => { *out_result = result.get_main_result().to_string();
diff --git a/third_party/rust/fend_core/v1/wrapper/fend_core_unittest.cc b/third_party/rust/fend_core/v1/wrapper/fend_core_unittest.cc index 269e192..6544f1e 100644 --- a/third_party/rust/fend_core/v1/wrapper/fend_core_unittest.cc +++ b/third_party/rust/fend_core/v1/wrapper/fend_core_unittest.cc
@@ -25,44 +25,44 @@ #endif TEST(MAYBE_FendCoreTest, SimpleMath) { - std::optional<std::string> result = evaluate("1 + 1"); + std::optional<std::string> result = evaluate("1 + 1", /*timeout_in_ms=*/0); EXPECT_THAT(result, Optional(Eq("2"))); } TEST(MAYBE_FendCoreTest, NoApproxString) { - std::optional<std::string> result = evaluate("1/3"); + std::optional<std::string> result = evaluate("1/3", /*timeout_in_ms=*/0); EXPECT_THAT(result, Optional(Eq("0.3333333333"))); } TEST(MAYBE_FendCoreTest, FiltersTrivialResult) { - std::optional<std::string> result = evaluate("1"); + std::optional<std::string> result = evaluate("1", /*timeout_in_ms=*/0); EXPECT_THAT(result, std::nullopt); } TEST(MAYBE_FendCoreTest, FiltersUnitOnlyQueries) { - std::optional<std::string> result = evaluate("meter"); + std::optional<std::string> result = evaluate("meter", /*timeout_in_ms=*/0); EXPECT_THAT(result, std::nullopt); } TEST(MAYBE_FendCoreTest, FiltersLambdaResults) { - std::optional<std::string> result = evaluate("sqrt"); + std::optional<std::string> result = evaluate("sqrt", /*timeout_in_ms=*/0); EXPECT_THAT(result, std::nullopt); } TEST(MAYBE_FendCoreTest, UnitConversion) { - std::optional<std::string> result = evaluate("2 miles in meters"); + std::optional<std::string> result = evaluate("2 miles in meters", /*timeout_in_ms=*/0); EXPECT_THAT(result, Optional(Eq("3218.688 meters"))); } // This test passes MSan as it does not allocate on the Rust side. However, we // should still disable this in case `fend_core` starts allocating on this test. TEST(MAYBE_FendCoreTest, HandlesInvalidInput) { - std::optional<std::string> result = evaluate("abc"); + std::optional<std::string> result = evaluate("abc", /*timeout_in_ms=*/0); EXPECT_EQ(result, std::nullopt); } TEST(MAYBE_FendCoreTest, CanTimeout) { - std::optional<std::string> result = evaluate("10**100000"); + std::optional<std::string> result = evaluate("10**100000", /*timeout_in_ms=*/500); EXPECT_EQ(result, std::nullopt); }
diff --git a/third_party/skia b/third_party/skia index a3a0165..d221c159 160000 --- a/third_party/skia +++ b/third_party/skia
@@ -1 +1 @@ -Subproject commit a3a016537a8c512df42b50522e78710b320c0faf +Subproject commit d221c1591d5939b8a3072769cab9507a7a6ba36c
diff --git a/third_party/swiftshader b/third_party/swiftshader index 632c096..764410d 160000 --- a/third_party/swiftshader +++ b/third_party/swiftshader
@@ -1 +1 @@ -Subproject commit 632c096c22930608f334235c9e1f83d444406bb4 +Subproject commit 764410d4d65546fd1e536b02059b1f714a390720
diff --git a/third_party/vulkan-deps b/third_party/vulkan-deps index 6066c0d..aa20d19 160000 --- a/third_party/vulkan-deps +++ b/third_party/vulkan-deps
@@ -1 +1 @@ -Subproject commit 6066c0d57a8bd7d68060336c7b01eeb9a1271589 +Subproject commit aa20d192b8c4e4a617d93d809cc416e0429acacd
diff --git a/third_party/webrtc b/third_party/webrtc index 85bea5a..b95dcde 160000 --- a/third_party/webrtc +++ b/third_party/webrtc
@@ -1 +1 @@ -Subproject commit 85bea5a11bf3e771b335671b9875b8a9b033f223 +Subproject commit b95dcde6f8b22436e3af68297f23e42fe65756d4
diff --git a/third_party/wpt_tools/WPTIncludeList b/third_party/wpt_tools/WPTIncludeList index 7af3893..ef6e7d2 100644 --- a/third_party/wpt_tools/WPTIncludeList +++ b/third_party/wpt_tools/WPTIncludeList
@@ -480,35 +480,5 @@ ./tools/wptserve/wptserve/utils.py ./tools/wptserve/wptserve/wptserve.py ./tools/wptserve/wptserve/ws_h2_handshake.py -./websockets/handlers/basic_auth_wsh.py -./websockets/handlers/delayed-passive-close_wsh.py -./websockets/handlers/echo-cookie_wsh.py -./websockets/handlers/echo-query_v13_wsh.py -./websockets/handlers/echo-query_wsh.py -./websockets/handlers/echo_close_data_wsh.py -./websockets/handlers/echo_exit_wsh.py -./websockets/handlers/echo_raw_wsh.py -./websockets/handlers/echo_wsh.py -./websockets/handlers/empty-message_wsh.py -./websockets/handlers/handshake_no_extensions_wsh.py -./websockets/handlers/handshake_no_protocol_wsh.py -./websockets/handlers/handshake_protocol_wsh.py -./websockets/handlers/handshake_sleep_2_wsh.py -./websockets/handlers/invalid_wsh.py -./websockets/handlers/origin_wsh.py -./websockets/handlers/protocol_array_wsh.py -./websockets/handlers/protocol_wsh.py -./websockets/handlers/receive-backpressure_wsh.py -./websockets/handlers/referrer_wsh.py -./websockets/handlers/send-backpressure_wsh.py -./websockets/handlers/set-cookie-secure_wsh.py -./websockets/handlers/set-cookie_http_wsh.py -./websockets/handlers/set-cookie_wsh.py -./websockets/handlers/set-cookies-samesite_wsh.py -./websockets/handlers/simple_handshake_wsh.py -./websockets/handlers/sleep_10_v13_wsh.py -./websockets/handlers/stash_responder_blocking_wsh.py -./websockets/handlers/stash_responder_wsh.py -./websockets/handlers/wrong_accept_key_wsh.py ./wpt ./wpt.py
diff --git a/third_party/wpt_tools/wpt/websockets/handlers/basic_auth_wsh.py b/third_party/wpt_tools/wpt/websockets/handlers/basic_auth_wsh.py deleted file mode 100755 index 84f42711..0000000 --- a/third_party/wpt_tools/wpt/websockets/handlers/basic_auth_wsh.py +++ /dev/null
@@ -1,26 +0,0 @@ -#!/usr/bin/python - -"""A WebSocket handler that enforces basic HTTP authentication. Username is -'foo' and password is 'bar'.""" - - -from pywebsocket3.handshake import AbortedByUserException - - -def web_socket_do_extra_handshake(request): - authorization = request.headers_in.get('authorization') - if authorization is None or authorization != 'Basic Zm9vOmJhcg==': - if request.protocol == "HTTP/2": - request.status = 401 - request.headers_out["Content-Length"] = "0" - request.headers_out['www-authenticate'] = 'Basic realm="camelot"' - else: - request.connection.write(b'HTTP/1.1 401 Unauthorized\x0d\x0a' - b'Content-Length: 0\x0d\x0a' - b'WWW-Authenticate: Basic realm="camelot"\x0d\x0a' - b'\x0d\x0a') - raise AbortedByUserException('Abort the connection') - - -def web_socket_transfer_data(request): - pass
diff --git a/third_party/wpt_tools/wpt/websockets/handlers/delayed-passive-close_wsh.py b/third_party/wpt_tools/wpt/websockets/handlers/delayed-passive-close_wsh.py deleted file mode 100755 index 5da09fd..0000000 --- a/third_party/wpt_tools/wpt/websockets/handlers/delayed-passive-close_wsh.py +++ /dev/null
@@ -1,27 +0,0 @@ -#!/usr/bin/python -from pywebsocket3 import common -import time - -def web_socket_do_extra_handshake(request): - pass - - -def web_socket_transfer_data(request): - # Wait for the close frame to arrive. - request.ws_stream.receive_message() - - -def web_socket_passive_closing_handshake(request): - # Echo close status code and reason - code, reason = request.ws_close_code, request.ws_close_reason - - # No status received is a reserved pseudo code representing an empty code, - # so echo back an empty code in this case. - if code == common.STATUS_NO_STATUS_RECEIVED: - code = None - - # The browser may error the connection if the closing handshake takes too - # long, but hopefully no browser will have a timeout this short. - time.sleep(1) - - return code, reason
diff --git a/third_party/wpt_tools/wpt/websockets/handlers/echo-cookie_wsh.py b/third_party/wpt_tools/wpt/websockets/handlers/echo-cookie_wsh.py deleted file mode 100755 index 746eafd..0000000 --- a/third_party/wpt_tools/wpt/websockets/handlers/echo-cookie_wsh.py +++ /dev/null
@@ -1,12 +0,0 @@ -#!/usr/bin/python - -from pywebsocket3 import msgutil - -def web_socket_do_extra_handshake(request): - request.ws_cookie = request.headers_in.get('cookie') - -def web_socket_transfer_data(request): - if request.ws_cookie is not None: - msgutil.send_message(request, request.ws_cookie) - else: - msgutil.send_message(request, '(none)')
diff --git a/third_party/wpt_tools/wpt/websockets/handlers/echo-query_v13_wsh.py b/third_party/wpt_tools/wpt/websockets/handlers/echo-query_v13_wsh.py deleted file mode 100755 index 7fb4cfe..0000000 --- a/third_party/wpt_tools/wpt/websockets/handlers/echo-query_v13_wsh.py +++ /dev/null
@@ -1,11 +0,0 @@ -#!/usr/bin/python - -from pywebsocket3 import msgutil - -def web_socket_do_extra_handshake(request): - pass - -def web_socket_transfer_data(request): - while True: - msgutil.send_message(request, request.unparsed_uri.split('?')[1] or '') - return
diff --git a/third_party/wpt_tools/wpt/websockets/handlers/echo-query_wsh.py b/third_party/wpt_tools/wpt/websockets/handlers/echo-query_wsh.py deleted file mode 100755 index 8869617..0000000 --- a/third_party/wpt_tools/wpt/websockets/handlers/echo-query_wsh.py +++ /dev/null
@@ -1,9 +0,0 @@ -#!/usr/bin/python - -from pywebsocket3 import msgutil - -def web_socket_do_extra_handshake(request): - pass # Always accept. - -def web_socket_transfer_data(request): - msgutil.send_message(request, request.unparsed_uri.split('?', 1)[1] or '')
diff --git a/third_party/wpt_tools/wpt/websockets/handlers/echo_close_data_wsh.py b/third_party/wpt_tools/wpt/websockets/handlers/echo_close_data_wsh.py deleted file mode 100755 index 31ffcbb..0000000 --- a/third_party/wpt_tools/wpt/websockets/handlers/echo_close_data_wsh.py +++ /dev/null
@@ -1,20 +0,0 @@ -#!/usr/bin/python - -_GOODBYE_MESSAGE = u'Goodbye' - -def web_socket_do_extra_handshake(request): - # This example handler accepts any request. See origin_check_wsh.py for how - # to reject access from untrusted scripts based on origin value. - - pass # Always accept. - - -def web_socket_transfer_data(request): - while True: - line = request.ws_stream.receive_message() - if line is None: - return - if isinstance(line, str): - if line == _GOODBYE_MESSAGE: - return - request.ws_stream.send_message(line, binary=False)
diff --git a/third_party/wpt_tools/wpt/websockets/handlers/echo_exit_wsh.py b/third_party/wpt_tools/wpt/websockets/handlers/echo_exit_wsh.py deleted file mode 100755 index 8f6f7f8..0000000 --- a/third_party/wpt_tools/wpt/websockets/handlers/echo_exit_wsh.py +++ /dev/null
@@ -1,19 +0,0 @@ -#!/usr/bin/python - -_GOODBYE_MESSAGE = u'Goodbye' - -def web_socket_do_extra_handshake(request): - # This example handler accepts any request. See origin_check_wsh.py for how - # to reject access from untrusted scripts based on origin value. - - pass # Always accept. - - -def web_socket_transfer_data(request): - while True: - line = request.ws_stream.receive_message() - if line is None: - return - if isinstance(line, str): - if line == _GOODBYE_MESSAGE: - return
diff --git a/third_party/wpt_tools/wpt/websockets/handlers/echo_raw_wsh.py b/third_party/wpt_tools/wpt/websockets/handlers/echo_raw_wsh.py deleted file mode 100755 index 5b434cf2..0000000 --- a/third_party/wpt_tools/wpt/websockets/handlers/echo_raw_wsh.py +++ /dev/null
@@ -1,16 +0,0 @@ -#!/usr/bin/python - -from pywebsocket3 import msgutil - - -def web_socket_do_extra_handshake(request): - pass # Always accept. - -def web_socket_transfer_data(request): - while True: - line = msgutil.receive_message(request) - if line == b'exit': - return - - if line is not None: - request.connection.write(line)
diff --git a/third_party/wpt_tools/wpt/websockets/handlers/echo_wsh.py b/third_party/wpt_tools/wpt/websockets/handlers/echo_wsh.py deleted file mode 100755 index 35a0a6f..0000000 --- a/third_party/wpt_tools/wpt/websockets/handlers/echo_wsh.py +++ /dev/null
@@ -1,36 +0,0 @@ -#!/usr/bin/python - -from pywebsocket3 import common - -_GOODBYE_MESSAGE = u'Goodbye' - -def web_socket_do_extra_handshake(request): - # This example handler accepts any request. See origin_check_wsh.py for how - # to reject access from untrusted scripts based on origin value. - if request.ws_requested_protocols: - if "echo" in request.ws_requested_protocols: - request.ws_protocol = "echo" - - -def web_socket_transfer_data(request): - while True: - line = request.ws_stream.receive_message() - if line is None: - return - if isinstance(line, str): - request.ws_stream.send_message(line, binary=False) - if line == _GOODBYE_MESSAGE: - return - else: - request.ws_stream.send_message(line, binary=True) - -def web_socket_passive_closing_handshake(request): - # Echo close status code and reason - code, reason = request.ws_close_code, request.ws_close_reason - - # No status received is a reserved pseudo code representing an empty code, - # so echo back an empty code in this case. - if code == common.STATUS_NO_STATUS_RECEIVED: - code = None - - return code, reason
diff --git a/third_party/wpt_tools/wpt/websockets/handlers/empty-message_wsh.py b/third_party/wpt_tools/wpt/websockets/handlers/empty-message_wsh.py deleted file mode 100755 index f791ee1..0000000 --- a/third_party/wpt_tools/wpt/websockets/handlers/empty-message_wsh.py +++ /dev/null
@@ -1,13 +0,0 @@ -#!/usr/bin/python - -from pywebsocket3 import msgutil - -def web_socket_do_extra_handshake(request): - pass # Always accept. - -def web_socket_transfer_data(request): - line = msgutil.receive_message(request) - if line == "": - msgutil.send_message(request, 'pass') - else: - msgutil.send_message(request, 'fail')
diff --git a/third_party/wpt_tools/wpt/websockets/handlers/handshake_no_extensions_wsh.py b/third_party/wpt_tools/wpt/websockets/handlers/handshake_no_extensions_wsh.py deleted file mode 100755 index 0d0f0a8..0000000 --- a/third_party/wpt_tools/wpt/websockets/handlers/handshake_no_extensions_wsh.py +++ /dev/null
@@ -1,9 +0,0 @@ -#!/usr/bin/python - - -def web_socket_do_extra_handshake(request): - request.ws_extension_processors = [] - - -def web_socket_transfer_data(request): - pass
diff --git a/third_party/wpt_tools/wpt/websockets/handlers/handshake_no_protocol_wsh.py b/third_party/wpt_tools/wpt/websockets/handlers/handshake_no_protocol_wsh.py deleted file mode 100755 index ffc2ae8..0000000 --- a/third_party/wpt_tools/wpt/websockets/handlers/handshake_no_protocol_wsh.py +++ /dev/null
@@ -1,8 +0,0 @@ -#!/usr/bin/python - -def web_socket_do_extra_handshake(request): - # Trick pywebsocket into believing no subprotocol was requested. - request.ws_requested_protocols = None - -def web_socket_transfer_data(request): - pass
diff --git a/third_party/wpt_tools/wpt/websockets/handlers/handshake_protocol_wsh.py b/third_party/wpt_tools/wpt/websockets/handlers/handshake_protocol_wsh.py deleted file mode 100755 index 2ca20c0..0000000 --- a/third_party/wpt_tools/wpt/websockets/handlers/handshake_protocol_wsh.py +++ /dev/null
@@ -1,7 +0,0 @@ -#!/usr/bin/python - -def web_socket_do_extra_handshake(request): - request.ws_protocol = 'foobar' - -def web_socket_transfer_data(request): - pass \ No newline at end of file
diff --git a/third_party/wpt_tools/wpt/websockets/handlers/handshake_sleep_2_wsh.py b/third_party/wpt_tools/wpt/websockets/handlers/handshake_sleep_2_wsh.py deleted file mode 100755 index 78de7c7..0000000 --- a/third_party/wpt_tools/wpt/websockets/handlers/handshake_sleep_2_wsh.py +++ /dev/null
@@ -1,9 +0,0 @@ -#!/usr/bin/python - -import time - -def web_socket_do_extra_handshake(request): - time.sleep(2) - -def web_socket_transfer_data(request): - pass
diff --git a/third_party/wpt_tools/wpt/websockets/handlers/invalid_wsh.py b/third_party/wpt_tools/wpt/websockets/handlers/invalid_wsh.py deleted file mode 100755 index 4bfc3ce..0000000 --- a/third_party/wpt_tools/wpt/websockets/handlers/invalid_wsh.py +++ /dev/null
@@ -1,8 +0,0 @@ -#!/usr/bin/python - -def web_socket_do_extra_handshake(request): - request.connection.write(b"FOO BAR BAZ\r\n\r\n") - - -def web_socket_transfer_data(request): - pass
diff --git a/third_party/wpt_tools/wpt/websockets/handlers/origin_wsh.py b/third_party/wpt_tools/wpt/websockets/handlers/origin_wsh.py deleted file mode 100755 index b833db63..0000000 --- a/third_party/wpt_tools/wpt/websockets/handlers/origin_wsh.py +++ /dev/null
@@ -1,11 +0,0 @@ -#!/usr/bin/python - -from pywebsocket3 import msgutil - - -def web_socket_do_extra_handshake(request): - pass # Always accept. - - -def web_socket_transfer_data(request): - msgutil.send_message(request, request.ws_origin)
diff --git a/third_party/wpt_tools/wpt/websockets/handlers/protocol_array_wsh.py b/third_party/wpt_tools/wpt/websockets/handlers/protocol_array_wsh.py deleted file mode 100755 index d8e1229c..0000000 --- a/third_party/wpt_tools/wpt/websockets/handlers/protocol_array_wsh.py +++ /dev/null
@@ -1,14 +0,0 @@ -#!/usr/bin/python - -from pywebsocket3 import msgutil - -def web_socket_do_extra_handshake(request): - line = request.headers_in.get('sec-websocket-protocol') - request.ws_protocol = line.split(',', 1)[0] - -#pass - -def web_socket_transfer_data(request): - while True: - msgutil.send_message(request, request.ws_protocol) - return
diff --git a/third_party/wpt_tools/wpt/websockets/handlers/protocol_wsh.py b/third_party/wpt_tools/wpt/websockets/handlers/protocol_wsh.py deleted file mode 100755 index 3a6aeb40..0000000 --- a/third_party/wpt_tools/wpt/websockets/handlers/protocol_wsh.py +++ /dev/null
@@ -1,12 +0,0 @@ -#!/usr/bin/python - -from pywebsocket3 import msgutil - -def web_socket_do_extra_handshake(request): - request.ws_protocol = request.headers_in.get('sec-websocket-protocol') -#pass - -def web_socket_transfer_data(request): - while True: - msgutil.send_message(request, request.ws_protocol) - return
diff --git a/third_party/wpt_tools/wpt/websockets/handlers/receive-backpressure_wsh.py b/third_party/wpt_tools/wpt/websockets/handlers/receive-backpressure_wsh.py deleted file mode 100755 index 9c2e470..0000000 --- a/third_party/wpt_tools/wpt/websockets/handlers/receive-backpressure_wsh.py +++ /dev/null
@@ -1,14 +0,0 @@ -#!/usr/bin/python - -import time - - -def web_socket_do_extra_handshake(request): - # Turn off permessage-deflate, otherwise it shrinks our 8MB buffer to 8KB. - request.ws_extension_processors = [] - - -def web_socket_transfer_data(request): - # Wait two seconds to cause backpressure. - time.sleep(2); - request.ws_stream.receive_message()
diff --git a/third_party/wpt_tools/wpt/websockets/handlers/referrer_wsh.py b/third_party/wpt_tools/wpt/websockets/handlers/referrer_wsh.py deleted file mode 100755 index 2d183d5..0000000 --- a/third_party/wpt_tools/wpt/websockets/handlers/referrer_wsh.py +++ /dev/null
@@ -1,12 +0,0 @@ -#!/usr/bin/python - -from pywebsocket3 import msgutil - -def web_socket_do_extra_handshake(request): - pass - -def web_socket_transfer_data(request): - referrer = request.headers_in.get("referer") - if referrer is None: - referrer = "MISSING AS PER FETCH" - msgutil.send_message(request, referrer)
diff --git a/third_party/wpt_tools/wpt/websockets/handlers/send-backpressure_wsh.py b/third_party/wpt_tools/wpt/websockets/handlers/send-backpressure_wsh.py deleted file mode 100755 index d3288d0..0000000 --- a/third_party/wpt_tools/wpt/websockets/handlers/send-backpressure_wsh.py +++ /dev/null
@@ -1,39 +0,0 @@ -#!/usr/bin/python - -import time - -# The amount of internal buffering a WebSocket connection has is not -# standardised, and varies depending upon the OS. Setting this number too small -# will result in false negatives, as the entire message gets buffered. Setting -# this number too large will result in false positives, when it takes more than -# 2 seconds to transmit the message anyway. This number was arrived at by -# trial-and-error. -MESSAGE_SIZE = 1024 * 1024 - -# With Windows 10 and Python 3, the OS will buffer an entire message in memory -# and return from send() immediately, even if it is very large. To work around -# this problem, send multiple messages. -MESSAGE_COUNT = 16 - - -def web_socket_do_extra_handshake(request): - # Turn off permessage-deflate, otherwise it shrinks our big message to a - # tiny message. - request.ws_extension_processors = [] - - -def web_socket_transfer_data(request): - # Send empty message to fill the ReadableStream queue - request.ws_stream.send_message(b'', binary=True) - - # TODO(ricea@chromium.org): Use time.perf_counter() when migration to python - # 3 is complete. time.time() can go backwards. - start_time = time.time() - - # The large messages that will be blocked by backpressure. - for i in range(MESSAGE_COUNT): - request.ws_stream.send_message(b' ' * MESSAGE_SIZE, binary=True) - - # Report the time taken to send the large message. - request.ws_stream.send_message(str(time.time() - start_time), - binary=False)
diff --git a/third_party/wpt_tools/wpt/websockets/handlers/set-cookie-secure_wsh.py b/third_party/wpt_tools/wpt/websockets/handlers/set-cookie-secure_wsh.py deleted file mode 100755 index 052a8820..0000000 --- a/third_party/wpt_tools/wpt/websockets/handlers/set-cookie-secure_wsh.py +++ /dev/null
@@ -1,11 +0,0 @@ -#!/usr/bin/python -import urllib - - -def web_socket_do_extra_handshake(request): - url_parts = urllib.parse.urlsplit(request.uri) - request.extra_headers.append(('Set-Cookie', 'ws_test_'+(url_parts.query or '')+'=test; Secure; Path=/')) - -def web_socket_transfer_data(request): - # Expect close() from user agent. - request.ws_stream.receive_message()
diff --git a/third_party/wpt_tools/wpt/websockets/handlers/set-cookie_http_wsh.py b/third_party/wpt_tools/wpt/websockets/handlers/set-cookie_http_wsh.py deleted file mode 100755 index 5331091..0000000 --- a/third_party/wpt_tools/wpt/websockets/handlers/set-cookie_http_wsh.py +++ /dev/null
@@ -1,11 +0,0 @@ -#!/usr/bin/python - -import urllib - -def web_socket_do_extra_handshake(request): - url_parts = urllib.parse.urlsplit(request.uri) - request.extra_headers.append(('Set-Cookie', 'ws_test_'+(url_parts.query or '')+'=test; Path=/; HttpOnly\x0D\x0ASec-WebSocket-Origin: '+request.ws_origin)) - -def web_socket_transfer_data(request): - # Expect close from user agent. - request.ws_stream.receive_message()
diff --git a/third_party/wpt_tools/wpt/websockets/handlers/set-cookie_wsh.py b/third_party/wpt_tools/wpt/websockets/handlers/set-cookie_wsh.py deleted file mode 100755 index 5fe3ad9c..0000000 --- a/third_party/wpt_tools/wpt/websockets/handlers/set-cookie_wsh.py +++ /dev/null
@@ -1,11 +0,0 @@ -#!/usr/bin/python -import urllib - - -def web_socket_do_extra_handshake(request): - url_parts = urllib.parse.urlsplit(request.uri) - request.extra_headers.append(('Set-Cookie', 'ws_test_'+(url_parts.query or '')+'=test; Path=/')) - -def web_socket_transfer_data(request): - # Expect close from user agent. - request.ws_stream.receive_message()
diff --git a/third_party/wpt_tools/wpt/websockets/handlers/set-cookies-samesite_wsh.py b/third_party/wpt_tools/wpt/websockets/handlers/set-cookies-samesite_wsh.py deleted file mode 100644 index 59f0a4a..0000000 --- a/third_party/wpt_tools/wpt/websockets/handlers/set-cookies-samesite_wsh.py +++ /dev/null
@@ -1,25 +0,0 @@ -import urllib - - -def web_socket_do_extra_handshake(request): - url_parts = urllib.parse.urlsplit(request.uri) - max_age = "" - if "clear" in url_parts.query: - max_age = "; Max-Age=0" - value = "1" - if "value" in url_parts.query: - value = urllib.parse.parse_qs(url_parts.query)["value"][0] - cookies = [ - "samesite-unspecified={}; Path=/".format(value) + max_age, - "samesite-lax={}; Path=/; SameSite=Lax".format(value) + max_age, - "samesite-strict={}; Path=/; SameSite=Strict".format(value) + max_age, - # SameSite=None cookies must be Secure. - "samesite-none={}; Path=/; SameSite=None; Secure".format(value) + max_age - ] - for cookie in cookies: - request.extra_headers.append(("Set-Cookie", cookie)) - - -def web_socket_transfer_data(request): - # Expect close() from user agent. - request.ws_stream.receive_message()
diff --git a/third_party/wpt_tools/wpt/websockets/handlers/simple_handshake_wsh.py b/third_party/wpt_tools/wpt/websockets/handlers/simple_handshake_wsh.py deleted file mode 100755 index 23893c95..0000000 --- a/third_party/wpt_tools/wpt/websockets/handlers/simple_handshake_wsh.py +++ /dev/null
@@ -1,35 +0,0 @@ -#!/usr/bin/python - -from pywebsocket3 import common, stream -from pywebsocket3.handshake import AbortedByUserException, hybi - - -def web_socket_do_extra_handshake(request): - # Send simple response header. This test implements the handshake manually, - # so that we can send the header in the same packet as the close frame. - msg = (b'HTTP/1.1 101 Switching Protocols:\x0D\x0A' - b'Connection: Upgrade\x0D\x0A' - b'Upgrade: WebSocket\x0D\x0A' - b'Set-Cookie: ws_test=test\x0D\x0A' - b'Sec-WebSocket-Origin: %s\x0D\x0A' - b'Sec-WebSocket-Accept: %s\x0D\x0A\x0D\x0A') % (request.ws_origin.encode( - 'UTF-8'), hybi.compute_accept_from_unicode(request.headers_in.get(common.SEC_WEBSOCKET_KEY_HEADER))) - # Create a clean close frame. - close_body = stream.create_closing_handshake_body(1001, 'PASS') - close_frame = stream.create_close_frame(close_body) - # Concatenate the header and the close frame and write them to the socket. - request.connection.write(msg + close_frame) - # Wait for the responding close frame from the user agent. It's not possible - # to use the stream methods at this point because the stream hasn't been - # established from pywebsocket's point of view. Instead just read the - # correct number of bytes. - # Warning: reading the wrong number of bytes here will make the test - # flaky. - MASK_LENGTH = 4 - request.connection.read(len(close_frame) + MASK_LENGTH) - # Close the socket without pywebsocket sending its own handshake response. - raise AbortedByUserException('Abort the connection') - - -def web_socket_transfer_data(request): - pass
diff --git a/third_party/wpt_tools/wpt/websockets/handlers/sleep_10_v13_wsh.py b/third_party/wpt_tools/wpt/websockets/handlers/sleep_10_v13_wsh.py deleted file mode 100755 index 4faa42aa..0000000 --- a/third_party/wpt_tools/wpt/websockets/handlers/sleep_10_v13_wsh.py +++ /dev/null
@@ -1,15 +0,0 @@ -#!/usr/bin/python - -import sys, urllib, time -from pywebsocket3 import msgutil - -def web_socket_do_extra_handshake(request): - time.sleep(10) - return - -def web_socket_transfer_data(request): - while True: - line = msgutil.receive_message(request) - if line == 'Goodbye': - return - request.ws_stream.send_message(line, binary=False)
diff --git a/third_party/wpt_tools/wpt/websockets/handlers/stash_responder_blocking_wsh.py b/third_party/wpt_tools/wpt/websockets/handlers/stash_responder_blocking_wsh.py deleted file mode 100755 index 9681568..0000000 --- a/third_party/wpt_tools/wpt/websockets/handlers/stash_responder_blocking_wsh.py +++ /dev/null
@@ -1,45 +0,0 @@ -#!/usr/bin/python -import json -import threading -import wptserve.stash -from pywebsocket3 import msgutil - -address, authkey = wptserve.stash.load_env_config() -path = "/stash_responder_blocking" -stash = wptserve.stash.Stash(path, address=address, authkey=authkey) -cv = threading.Condition() - -def handle_set(key, value): - with cv: - stash.put(key, value) - cv.notify_all() - -def handle_get(key): - with cv: - while True: - value = stash.take(key) - if value is not None: - return value - cv.wait() - -def web_socket_do_extra_handshake(request): - pass - -def web_socket_transfer_data(request): - line = request.ws_stream.receive_message() - - query = json.loads(line) - action = query["action"] - key = query["key"] - - if action == "set": - value = query["value"] - handle_set(key, value) - response = {} - elif action == "get": - value = handle_get(key) - response = {"value": value} - else: - response = {} - - msgutil.send_message(request, json.dumps(response))
diff --git a/third_party/wpt_tools/wpt/websockets/handlers/stash_responder_wsh.py b/third_party/wpt_tools/wpt/websockets/handlers/stash_responder_wsh.py deleted file mode 100755 index b4019974..0000000 --- a/third_party/wpt_tools/wpt/websockets/handlers/stash_responder_wsh.py +++ /dev/null
@@ -1,45 +0,0 @@ -#!/usr/bin/python -import json -import urllib -from pywebsocket3 import msgutil -from wptserve import stash - -address, authkey = stash.load_env_config() -stash = stash.Stash("/stash_responder", address=address, authkey=authkey) - -def web_socket_do_extra_handshake(request): - return - -def web_socket_transfer_data(request): - while True: - line = request.ws_stream.receive_message() - if line == "echo": - query = request.unparsed_uri.split('?')[1] - GET = dict(urllib.parse.parse_qsl(query)) - - # TODO(kristijanburnik): This code should be reused from - # /mixed-content/generic/expect.py or implemented more generally - # for other tests. - path = GET.get("path", request.unparsed_uri.split('?')[0]) - key = GET["key"] - action = GET["action"] - - if action == "put": - value = GET["value"] - stash.take(key=key, path=path) - stash.put(key=key, value=value, path=path) - response_data = json.dumps({"status": "success", "result": key}) - elif action == "purge": - value = stash.take(key=key, path=path) - response_data = json.dumps({"status": "success", "result": value}) - elif action == "take": - value = stash.take(key=key, path=path) - if value is None: - status = "allowed" - else: - status = "blocked" - response_data = json.dumps({"status": status, "result": value}) - - msgutil.send_message(request, response_data) - - return
diff --git a/third_party/wpt_tools/wpt/websockets/handlers/wrong_accept_key_wsh.py b/third_party/wpt_tools/wpt/websockets/handlers/wrong_accept_key_wsh.py deleted file mode 100755 index 43240e1a..0000000 --- a/third_party/wpt_tools/wpt/websockets/handlers/wrong_accept_key_wsh.py +++ /dev/null
@@ -1,19 +0,0 @@ -#!/usr/bin/python - -import sys, urllib, time - - -def web_socket_do_extra_handshake(request): - msg = (b'HTTP/1.1 101 Switching Protocols:\x0D\x0A' - b'Connection: Upgrade\x0D\x0A' - b'Upgrade: WebSocket\x0D\x0A' - b'Sec-WebSocket-Origin: %s\x0D\x0A' - b'Sec-WebSocket-Accept: thisisawrongacceptkey\x0D\x0A\x0D\x0A') % request.ws_origin.encode('UTF-8') - request.connection.write(msg) - return - - -def web_socket_transfer_data(request): - while True: - request.ws_stream.send_message('test', binary=False) - return
diff --git a/tools/clang/scripts/package.py b/tools/clang/scripts/package.py index ec781b72..ad56a7a 100755 --- a/tools/clang/scripts/package.py +++ b/tools/clang/scripts/package.py
@@ -700,6 +700,23 @@ PackageInArchive(libclang_dir, libclang_dir) MaybeUpload(args.upload, args.bucket, libclang_dir + '.t*z', gcs_platform) + # Zip up Android x64 ASAN runtime support + if sys.platform.startswith('linux'): + x64_android_asan_dir = 'x64_android_asan' + stamp + shutil.rmtree(x64_android_asan_dir, ignore_errors=True) + subdir = os.path.join('lib', 'clang', RELEASE_VERSION, 'lib', 'linux') + dst_dir = os.path.join(x64_android_asan_dir, subdir) + os.makedirs(dst_dir) + shutil.copy( + os.path.join(LLVM_RELEASE_DIR, subdir, + 'libclang_rt.asan-x86_64-android.so'), dst_dir) + shutil.copy( + os.path.join(LLVM_RELEASE_DIR, subdir, + 'libclang_rt.asan_static-x86_64-android.a'), dst_dir) + PackageInArchive(x64_android_asan_dir, x64_android_asan_dir) + MaybeUpload(args.upload, args.bucket, x64_android_asan_dir + '.t*z', + gcs_platform) + if sys.platform == 'win32' and args.upload: binaries = [f for f in want if f.endswith('.exe') or f.endswith('.dll')] assert 'bin/clang-cl.exe' in binaries
diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums.xml index e559d5f..42d2ad5 100644 --- a/tools/metrics/histograms/enums.xml +++ b/tools/metrics/histograms/enums.xml
@@ -11511,6 +11511,9 @@ <int value="4943" label="V8DeviceProperties_UniqueId_AttributeGetter"/> <int value="4944" label="SharedStorageAPI_SelectURLOverallPageloadBudgetInsufficient"/> + <int value="4945" label="V8LanguageTranslator_Translate_Method"/> + <int value="4946" label="V8Translation_CanTranslate_Method"/> + <int value="4947" label="V8Translation_CreateTranslator_Method"/> </enum> <enum name="FeaturePolicyFeature"> @@ -21303,7 +21306,6 @@ <int value="59964519" label="OmniboxEnableClipboardProvider:disabled"/> <int value="59992411" label="ChangePasswordAffiliationInfo:enabled"/> <int value="60023885" label="AutofillNoLocalSaveOnUnmaskSuccess:disabled"/> - <int value="60442188" label="MultilingualTyping:enabled"/> <int value="60461879" label="AppListBubble:enabled"/> <int value="61130490" label="WebViewBrotliSupport:enabled"/> <int value="61141457" label="DecodeScriptSourceOffThread:enabled"/> @@ -25522,7 +25524,6 @@ <int value="1936308950" label="ExoConsumedByImeByFlag:disabled"/> <int value="1936774335" label="EcheSWASendStartSignaling:enabled"/> <int value="1936810062" label="WebVrVsyncAlign:enabled"/> - <int value="1937357350" label="MultilingualTyping:disabled"/> <int value="1937435913" label="CryptAuthV2DedupDeviceLastActivityTime:disabled"/> <int value="1937905990" label="AutofillCenterAlignedSuggestions:enabled"/>
diff --git a/tools/metrics/histograms/metadata/apps/histograms.xml b/tools/metrics/histograms/metadata/apps/histograms.xml index c4db198a..2486885 100644 --- a/tools/metrics/histograms/metadata/apps/histograms.xml +++ b/tools/metrics/histograms/metadata/apps/histograms.xml
@@ -262,17 +262,27 @@ <token key="AppType" variants="AppType"/> </histogram> +<histogram name="Apps.AppDiscovery.MallUsageTime" units="ms" + expires_after="2025-03-26"> + <owner>joelhockey@chromium.org</owner> + <owner>crosdev-commerce-eng@google.com</owner> + <summary> + Records the Mall running duration in Chrome OS for the last 2 hours. This is + logged every 2 hours, and on shutdown. + </summary> +</histogram> + <histogram name="Apps.AppDiscovery.Uninstall" enum="AppType" expires_after="2025-03-26"> <owner>joelhockey@chromium.org</owner> - <owner>chromeos-apps-foundation-team@google.com</owner> + <owner>crosdev-commerce-eng@google.com</owner> <summary>Records when an app is uninstalled, grouped by app type.</summary> </histogram> <histogram name="Apps.AppDiscovery.{InstallReason}.Install" enum="AppType" expires_after="2025-03-26"> <owner>joelhockey@chromium.org</owner> - <owner>chromeos-apps-foundation-team@google.com</owner> + <owner>crosdev-commerce-eng@google.com</owner> <summary> Records when an app is installed for InstallReason {InstallReason}, grouped by app type.
diff --git a/tools/metrics/histograms/metadata/blink/enums.xml b/tools/metrics/histograms/metadata/blink/enums.xml index 2322bc26..a79ab84c 100644 --- a/tools/metrics/histograms/metadata/blink/enums.xml +++ b/tools/metrics/histograms/metadata/blink/enums.xml
@@ -238,6 +238,13 @@ <int value="4" label="kErrorAborted"/> </enum> +<enum name="FedCmAccountChooserResult"> + <int value="0" label="Account row clicked"/> + <int value="1" label="Cancel button clicked"/> + <int value="2" label="Use other account button clicked"/> + <int value="3" label="Tab or window is closed or refreshed"/> +</enum> + <enum name="FedCmAccountsResponseInvalidReason"> <int value="0" label="Response is not JSON or dict"/> <int value="1" label="No accounts key"/>
diff --git a/tools/metrics/histograms/metadata/blink/histograms.xml b/tools/metrics/histograms/metadata/blink/histograms.xml index ce2044b9..4889735 100644 --- a/tools/metrics/histograms/metadata/blink/histograms.xml +++ b/tools/metrics/histograms/metadata/blink/histograms.xml
@@ -1336,6 +1336,19 @@ </summary> </histogram> +<histogram name="Blink.FedCm.Button.AccountChooserResult" + enum="FedCmAccountChooserResult" expires_after="M130"> + <owner>tanzachary@chromium.org</owner> + <owner>web-identity-eng@google.com</owner> + <summary> + Records the outcome of the account chooser in button flow. Recorded once per + user leaving the button flow account chooser. e.g. If the user selects an + account on the account chooser, one sample is recorded. If the user clicks + on the back button in the next dialog, an account chooser is shown again and + leaving records a second sample. + </summary> +</histogram> + <histogram name="Blink.FedCm.CancelReason" enum="FedCmCancelReason" expires_after="2024-08-04"> <owner>yigu@chromium.org</owner>
diff --git a/tools/metrics/histograms/metadata/chromeos_settings/histograms.xml b/tools/metrics/histograms/metadata/chromeos_settings/histograms.xml index db6efef9a..878604dd 100644 --- a/tools/metrics/histograms/metadata/chromeos_settings/histograms.xml +++ b/tools/metrics/histograms/metadata/chromeos_settings/histograms.xml
@@ -127,6 +127,7 @@ <variant name="MonoAudio"/> <variant name="OnScreenKeyboard"/> <variant name="OOBEStartupSound"/> + <variant name="PdfOcr"/> <variant name="ReducedAnimations"/> <variant name="SelectToSpeak"/> <variant name="SpokenFeedback" summary="ChromeVox Spoken Feedback"/>
diff --git a/tools/perf/core/perfetto_binary_roller/binary_deps.json b/tools/perf/core/perfetto_binary_roller/binary_deps.json index ad4d5a4..6e4395a 100644 --- a/tools/perf/core/perfetto_binary_roller/binary_deps.json +++ b/tools/perf/core/perfetto_binary_roller/binary_deps.json
@@ -5,8 +5,8 @@ "full_remote_path": "perfetto-luci-artifacts/v44.0/linux-arm64/trace_processor_shell" }, "win": { - "hash": "0e7ce4cd3c50b2701c0d06407af74aff6c31e1b6", - "full_remote_path": "chromium-telemetry/perfetto_binaries/trace_processor_shell/win/f6656e9828f5a5a5358d0782bd4d5cdecdc652f5/trace_processor_shell.exe" + "hash": "9650ff6e27c1f4c454af0e3d91edd7258d9970d5", + "full_remote_path": "chromium-telemetry/perfetto_binaries/trace_processor_shell/win/234fd02711c642ec5211da272283db8fd8d91af4/trace_processor_shell.exe" }, "linux_arm": { "hash": "d8e27d961be1db97db098c6826017aec0397ecfd",
diff --git a/ui/base/clipboard/clipboard_android.cc b/ui/base/clipboard/clipboard_android.cc index bc4b730..d3afa56 100644 --- a/ui/base/clipboard/clipboard_android.cc +++ b/ui/base/clipboard/clipboard_android.cc
@@ -745,8 +745,9 @@ // background sequence. scoped_refptr<base::RefCountedMemory> image_memory = gfx::Image::CreateFrom1xBitmap(sk_bitmap).As1xPNGBytes(); - g_map.Get().Set(ClipboardFormatType::PngType(), - std::string(base::as_string_view(*image_memory))); + std::string packed(image_memory->front_as<char>(), image_memory->size()); + + g_map.Get().Set(ClipboardFormatType::PngType(), packed); } void ClipboardAndroid::WriteData(const ClipboardFormatType& format,
diff --git a/ui/base/clipboard/clipboard_ozone.cc b/ui/base/clipboard/clipboard_ozone.cc index 7c1682f..2db7579 100644 --- a/ui/base/clipboard/clipboard_ozone.cc +++ b/ui/base/clipboard/clipboard_ozone.cc
@@ -217,11 +217,11 @@ auto it = offered_data_[buffer].find(mime_type); if (it == offered_data_[buffer].end()) return {}; - return base::span(it->second->as_vector()); + return base::make_span(it->second->front(), it->second->size()); } if (auto data = Read(buffer, mime_type)) - return base::span(data->as_vector()); + return base::make_span(data->front(), data->size()); return {}; }
diff --git a/ui/base/resource/resource_bundle.cc b/ui/base/resource/resource_bundle.cc index 341abf4f..e023eda 100644 --- a/ui/base/resource/resource_bundle.cc +++ b/ui/base/resource/resource_bundle.cc
@@ -687,7 +687,7 @@ if (HasGzipHeader(data) || HasBrotliHeader(data)) { base::RefCountedString* bytes_string = new base::RefCountedString(); - DecompressIfNeeded(data, &bytes_string->as_string()); + DecompressIfNeeded(data, &(bytes_string->data())); return bytes_string; } @@ -1102,15 +1102,14 @@ if (!memory.get()) return false; - if (DecodePNG(memory->data(), memory->size(), bitmap, fell_back_to_1x)) { + if (DecodePNG(memory->front(), memory->size(), bitmap, fell_back_to_1x)) return true; - } #if !BUILDFLAG(IS_IOS) // iOS does not compile or use the JPEG codec. On other platforms, // 99% of our assets are PNGs, however fallback to JPEG. std::unique_ptr<SkBitmap> jpeg_bitmap( - gfx::JPEGCodec::Decode(memory->data(), memory->size())); + gfx::JPEGCodec::Decode(memory->front(), memory->size())); if (jpeg_bitmap.get()) { bitmap->swap(*jpeg_bitmap.get()); *fell_back_to_1x = false;
diff --git a/ui/base/resource/resource_bundle_unittest.cc b/ui/base/resource/resource_bundle_unittest.cc index ec25fcd..3d741eff 100644 --- a/ui/base/resource/resource_bundle_unittest.cc +++ b/ui/base/resource/resource_bundle_unittest.cc
@@ -432,17 +432,20 @@ // Test normal uncompressed data. scoped_refptr<base::RefCountedMemory> resource = resource_bundle->LoadDataResourceBytes(4); - EXPECT_EQ("this is id 4", base::as_string_view(*resource)); + EXPECT_EQ("this is id 4", + std::string(resource->front_as<char>(), resource->size())); // Test the brotli data. scoped_refptr<base::RefCountedMemory> brotli_resource = resource_bundle->LoadDataResourceBytes(6); - EXPECT_EQ("this is id 6", base::as_string_view(*brotli_resource)); + EXPECT_EQ("this is id 6", std::string(brotli_resource->front_as<char>(), + brotli_resource->size())); // Test the gzipped data. scoped_refptr<base::RefCountedMemory> gzip_resource = resource_bundle->LoadDataResourceBytes(8); - EXPECT_EQ("this is id 8", base::as_string_view(*gzip_resource)); + EXPECT_EQ("this is id 8", std::string(gzip_resource->front_as<char>(), + gzip_resource->size())); } // Verify that we don't crash when trying to load a resource that is not found.
diff --git a/ui/base/x/selection_owner.cc b/ui/base/x/selection_owner.cc index df07e7c..a28adf70 100644 --- a/ui/base/x/selection_owner.cc +++ b/ui/base/x/selection_owner.cc
@@ -268,7 +268,7 @@ void SelectionOwner::ProcessIncrementalTransfer(IncrementalTransfer* transfer) { size_t remaining = transfer->data->size() - transfer->offset; size_t chunk_length = std::min(remaining, GetMaxIncrementalTransferSize()); - const uint8_t* data = transfer->data->data() + transfer->offset; + const uint8_t* data = transfer->data->front() + transfer->offset; std::vector<uint8_t> buf(data, data + chunk_length); connection_->SetArrayProperty(transfer->window, transfer->property, transfer->target, buf);
diff --git a/ui/base/x/selection_utils.cc b/ui/base/x/selection_utils.cc index 2a715df..09ddb2c 100644 --- a/ui/base/x/selection_utils.cc +++ b/ui/base/x/selection_utils.cc
@@ -66,7 +66,12 @@ return std::string(); } - return std::string(base::as_string_view(*memory)); + size_t size = memory->size(); + if (!size) + return std::string(); + + const unsigned char* front = memory->front(); + return std::string(reinterpret_cast<const char*>(front), size); } std::u16string RefCountedMemoryToString16( @@ -76,11 +81,12 @@ return std::u16string(); } - auto in_bytes = base::span(*memory); - std::u16string out; - out.resize(memory->size() / 2u); - base::as_writable_byte_span(out).copy_from(in_bytes); - return out; + size_t size = memory->size(); + if (!size) + return std::u16string(); + + const unsigned char* front = memory->front(); + return std::u16string(reinterpret_cast<const char16_t*>(front), size / 2); } /////////////////////////////////////////////////////////////////////////////// @@ -158,7 +164,7 @@ } const unsigned char* SelectionData::GetData() const { - return memory_.get() ? memory_->data() : nullptr; + return memory_.get() ? memory_->front() : nullptr; } size_t SelectionData::GetSize() const {
diff --git a/ui/base/x/x11_cursor_loader.cc b/ui/base/x/x11_cursor_loader.cc index 8ee868fb..1360840 100644 --- a/ui/base/x/x11_cursor_loader.cc +++ b/ui/base/x/x11_cursor_loader.cc
@@ -386,7 +386,7 @@ .width = width, .height = height, .depth = 32, - .data = base::MakeRefCounted<base::RefCountedBytes>(std::move(vec)), + .data = base::RefCountedBytes::TakeVector(&vec), }; connection->PutImage(put_image_request);
diff --git a/ui/base/x/x11_display_util.cc b/ui/base/x/x11_display_util.cc index ffaea4fe..d44b518 100644 --- a/ui/base/x/x11_display_util.cc +++ b/ui/base/x/x11_display_util.cc
@@ -71,7 +71,7 @@ if (!response || response->format != 32 || response->value_len != 4) { return gfx::Rect(); } - const uint32_t* value = response->value->cast_to<uint32_t>(); + const uint32_t* value = response->value->front_as<uint32_t>(); return gfx::Rect(value[0], value[1], value[2], value[3]); } @@ -92,11 +92,11 @@ gfx::ICCProfile GetIccProfileSync(x11::Future<x11::GetPropertyReply> future) { auto response = future.Sync(); - if (!response || !response->value_len) { + if (!response || !response->value->size()) { return gfx::ICCProfile(); } - return gfx::ICCProfile::FromData(response->value->bytes(), - response->value_len * response->format / 8u); + return gfx::ICCProfile::FromData(response->value->data(), + response->value->size()); } x11::Future<x11::RandR::GetOutputPropertyReply> GetEdidFuture(
diff --git a/ui/base/x/x11_software_bitmap_presenter.cc b/ui/base/x/x11_software_bitmap_presenter.cc index 0568940..7ad8d08 100644 --- a/ui/base/x/x11_software_bitmap_presenter.cc +++ b/ui/base/x/x11_software_bitmap_presenter.cc
@@ -75,7 +75,7 @@ constexpr auto kAllPlanes = std::numeric_limits<decltype(x11::GetImageRequest::plane_mask)>::max(); - scoped_refptr<x11::UnsizedRefCountedMemory> bg; + scoped_refptr<base::RefCountedMemory> bg; auto req = connection->GetImage({x11::ImageFormat::ZPixmap, widget, x_i16, y_i16, w_u16, h_u16, kAllPlanes}); if (auto reply = req.Sync()) { @@ -103,8 +103,8 @@ SkBitmap bg_bitmap; SkImageInfo image_info = SkImageInfo::Make( - w_u16, h_u16, kBGRA_8888_SkColorType, kPremul_SkAlphaType); - if (!bg_bitmap.installPixels(image_info, bg->bytes(), + width, height, kBGRA_8888_SkColorType, kPremul_SkAlphaType); + if (!bg_bitmap.installPixels(image_info, const_cast<uint8_t*>(bg->data()), image_info.minRowBytes())) { return false; } @@ -119,9 +119,8 @@ } canvas.drawImage(fg_bitmap.asImage(), 0, 0); - connection->PutImage( - {x11::ImageFormat::ZPixmap, widget, gc, w_u16, h_u16, x_i16, y_i16, 0, - d_u8, x11::SizedRefCountedMemory::From(bg, size_t{w_u16} * h_u16)}); + connection->PutImage({x11::ImageFormat::ZPixmap, widget, gc, w_u16, h_u16, + x_i16, y_i16, 0, d_u8, bg}); return true; }
diff --git a/ui/base/x/x11_util.cc b/ui/base/x/x11_util.cc index b428665..5f17a92 100644 --- a/ui/base/x/x11_util.cc +++ b/ui/base/x/x11_util.cc
@@ -294,11 +294,7 @@ if (!response || !response->format) { return false; } - // SAFETY: The GetProperty response has a `format` which specified the number - // of bits per object in the `value` and `value_len` for the number of - // objects, so `value_len * format / 8` gives the number of bytes in `value`. - *out_data = UNSAFE_BUFFERS(x11::SizedRefCountedMemory::From( - response->value, response->value_len * response->format / 8u)); + *out_data = response->value; if (out_type) { *out_type = response->type; }
diff --git a/ui/base/x/x11_workspace_handler.cc b/ui/base/x/x11_workspace_handler.cc index ad59d0a..6916705b8 100644 --- a/ui/base/x/x11_workspace_handler.cc +++ b/ui/base/x/x11_workspace_handler.cc
@@ -58,14 +58,14 @@ void X11WorkspaceHandler::OnWorkspaceResponse( x11::GetPropertyResponse response) { - if (!response || response->format != 32 || response->value_len < 1) { + if (!response || response->format != 32 || response->value->size() < 4) { return; } DCHECK_EQ(response->bytes_after, 0U); DCHECK_EQ(response->type, static_cast<x11::Atom>(x11::Atom::CARDINAL)); uint32_t workspace; - memcpy(&workspace, response->value->bytes(), 4); + memcpy(&workspace, response->value->data(), 4); workspace_ = base::NumberToString(workspace); delegate_->OnCurrentWorkspaceChanged(workspace_); }
diff --git a/ui/events/ash/BUILD.gn b/ui/events/ash/BUILD.gn index f529a07..c23365ce 100644 --- a/ui/events/ash/BUILD.gn +++ b/ui/events/ash/BUILD.gn
@@ -67,6 +67,7 @@ "//base/test:test_support", "//device/udev_linux:test_support", "//testing/gtest", + "//ui/base", "//ui/events", "//ui/events/ash/mojom", "//ui/events/devices",
diff --git a/ui/events/ash/event_rewriter_ash.cc b/ui/events/ash/event_rewriter_ash.cc index d64f646..6ab8958 100644 --- a/ui/events/ash/event_rewriter_ash.cc +++ b/ui/events/ash/event_rewriter_ash.cc
@@ -6,6 +6,7 @@ #include <fcntl.h> #include <stddef.h> + #include <cstdint> #include "ash/constants/ash_features.h" @@ -25,6 +26,7 @@ #include "ui/base/ime/ash/ime_keyboard.h" #include "ui/base/ime/ash/input_method_manager.h" #include "ui/base/ui_base_features.h" +#include "ui/events/ash/event_property.h" #include "ui/events/ash/event_rewriter_metrics.h" #include "ui/events/ash/keyboard_capability.h" #include "ui/events/ash/keyboard_device_id_event_rewriter.h" @@ -190,7 +192,11 @@ ui::mojom::ModifierKey::kAssistant, prefs::kLanguageRemapAssistantKeyTo, {EF_NONE, DomCode::LAUNCH_ASSISTANT, DomKey::LAUNCH_ASSISTANT, - VKEY_ASSISTANT}}}; + VKEY_ASSISTANT}}, + {EF_FUNCTION_DOWN, + ui::mojom::ModifierKey::kFunction, + nullptr, + {EF_FUNCTION_DOWN, DomCode::FN, DomKey::FN, VKEY_FUNCTION}}}; // Finds the remapping for Neo Mod3 in the list. Used only to set the value of // |kModifierRemappingIsoLevel5ShiftMod3|. @@ -1288,6 +1294,11 @@ GetRemappedKey(device_id, mojom::ModifierKey::kAssistant, prefs::kLanguageRemapAssistantKeyTo, delegate_); break; + case DomCode::FN: + characteristic_flag = EF_FUNCTION_DOWN; + remapped_key = GetRemappedKey(device_id, mojom::ModifierKey::kFunction, + "", delegate_); + break; default: break; } @@ -1412,10 +1423,15 @@ default: break; } - if (!remapped_key && kModifierRemappings[i].pref_name) { - remapped_key = - GetRemappedKey(device_id, kModifierRemappings[i].remap_to, - kModifierRemappings[i].pref_name, delegate_); + // ISO Level 5 Shift should already be handled, so do not try to remap it + // here. + if (!remapped_key && + &kModifierRemappings[i] != kModifierRemappingIsoLevel5ShiftMod3) { + const std::string pref_name = kModifierRemappings[i].pref_name + ? kModifierRemappings[i].pref_name + : ""; + remapped_key = GetRemappedKey(device_id, kModifierRemappings[i].remap_to, + pref_name, delegate_); } if (remapped_key) { unmodified_flags &= ~kModifierRemappings[i].flag;
diff --git a/ui/events/ash/keyboard_modifier_event_rewriter.cc b/ui/events/ash/keyboard_modifier_event_rewriter.cc index 0bf1739..1d25aa47 100644 --- a/ui/events/ash/keyboard_modifier_event_rewriter.cc +++ b/ui/events/ash/keyboard_modifier_event_rewriter.cc
@@ -4,6 +4,7 @@ #include "ui/events/ash/keyboard_modifier_event_rewriter.h" +#include "ash/constants/ash_features.h" #include "base/containers/fixed_flat_map.h" #include "base/notreached.h" #include "ui/base/ime/ash/extension_ime_util.h" @@ -12,8 +13,10 @@ #include "ui/events/ash/event_property.h" #include "ui/events/ash/event_rewriter_metrics.h" #include "ui/events/ash/keyboard_capability.h" +#include "ui/events/ash/mojom/modifier_key.mojom-shared.h" #include "ui/events/ash/pref_names.h" #include "ui/events/event.h" +#include "ui/events/event_constants.h" #include "ui/events/event_rewriter_continuation.h" #include "ui/events/keycodes/dom/dom_code.h" #include "ui/events/keycodes/dom/dom_key.h" @@ -237,9 +240,9 @@ EventFlags KeyboardModifierEventRewriter::RewriteModifierFlags( EventFlags flags) const { // Bit mask of modifier flags to be rewritten. - constexpr EventFlags kTargetModifierFlags = EF_CONTROL_DOWN | EF_ALT_DOWN | - EF_COMMAND_DOWN | EF_ALTGR_DOWN | - EF_MOD3_DOWN | EF_CAPS_LOCK_ON; + constexpr EventFlags kTargetModifierFlags = + EF_CONTROL_DOWN | EF_ALT_DOWN | EF_COMMAND_DOWN | EF_ALTGR_DOWN | + EF_MOD3_DOWN | EF_CAPS_LOCK_ON | EF_FUNCTION_DOWN; flags &= ~kTargetModifierFlags; // Recalculate modifier flags from the currently pressed keys. @@ -333,11 +336,16 @@ pref_name = prefs::kLanguageRemapAssistantKeyTo; break; + case DomCode::FN: + modifier_key = mojom::ModifierKey::kFunction; + break; + default: // No remapping. return std::nullopt; } - CHECK(!pref_name.empty()); + CHECK(!pref_name.empty() || + ash::features::IsInputDeviceSettingsSplitEnabled()); auto modifier_value = delegate_->GetKeyboardRemappedModifierValue( device_id, modifier_key, std::string(pref_name)); @@ -362,8 +370,9 @@ case mojom::ModifierKey::kIsoLevel5ShiftMod3: LOG(FATAL) << "Unexpected IsoLevel5ShiftMod3 config"; case mojom::ModifierKey::kFunction: + return DomCode::FN; case mojom::ModifierKey::kRightAlt: - // TODO(dpad, b/328316040): Implement for function and right alt. + // TODO(dpad, b/328316040): Implement for right alt. NOTIMPLEMENTED(); return std::nullopt; }
diff --git a/ui/events/event_utils.cc b/ui/events/event_utils.cc index 4cebe195..91ce864 100644 --- a/ui/events/event_utils.cc +++ b/ui/events/event_utils.cc
@@ -319,6 +319,8 @@ names.push_back("ALTGR_DOWN"); if (event_flags & EF_MOD3_DOWN) names.push_back("MOD3_DOWN"); + if (event_flags & EF_FUNCTION_DOWN) + names.push_back("FUNCTION_DOWN"); if (event_flags & EF_NUM_LOCK_ON) names.push_back("NUM_LOCK_ON"); if (event_flags & EF_CAPS_LOCK_ON)
diff --git a/ui/events/platform/x11/x11_event_source.cc b/ui/events/platform/x11/x11_event_source.cc index 8c4b88a..dfd0fe9 100644 --- a/ui/events/platform/x11/x11_event_source.cc +++ b/ui/events/platform/x11/x11_event_source.cc
@@ -10,7 +10,6 @@ #include "base/memory/free_deleter.h" #include "base/memory/ref_counted_memory.h" #include "base/metrics/histogram_macros.h" -#include "base/numerics/safe_conversions.h" #include "base/ranges/algorithm.h" #include "build/chromeos_buildflags.h" #include "ui/events/devices/x11/device_data_manager_x11.h" @@ -204,14 +203,14 @@ } // Make a no-op property change on |dummy_window_|. - std::vector<uint8_t> data({0}); + std::vector<uint8_t> data{0}; connection_->ChangeProperty(x11::ChangePropertyRequest{ .window = static_cast<x11::Window>(dummy_window_), .property = dummy_atom_, .type = x11::Atom::STRING, .format = CHAR_BIT, - .data_len = base::checked_cast<uint32_t>(data.size()), - .data = base::MakeRefCounted<base::RefCountedBytes>(std::move(data)), + .data_len = 1, + .data = base::RefCountedBytes::TakeVector(&data), }); // Observe the resulting PropertyNotify event to obtain the timestamp.
diff --git a/ui/file_manager/file_manager/common/js/api.ts b/ui/file_manager/file_manager/common/js/api.ts index a15c97e..536b936d 100644 --- a/ui/file_manager/file_manager/common/js/api.ts +++ b/ui/file_manager/file_manager/common/js/api.ts
@@ -7,8 +7,9 @@ */ import type {FilesAppDirEntry, FilesAppEntry} from '../../common/js/files_app_entry_types.js'; +import type {FileKey} from '../../state/state.js'; -import {unwrapEntry} from './entry_utils.js'; +import {unwrapEntry, urlToEntry} from './entry_utils.js'; import {promisify} from './util.js'; /** @@ -304,3 +305,12 @@ return []; } } + +export async function readMaterializedView(fileKey: FileKey): Promise<Entry[]> { + const url = new URL(fileKey); + const viewId = parseInt(url.pathname.replace('//', '').split('/')[0]!); + const entryData = + await chrome.fileManagerPrivate.readMaterializedView(viewId); + const entries = await Promise.all(entryData.map(e => urlToEntry(e.entryUrl))); + return entries; +}
diff --git a/ui/file_manager/file_manager/containers/breadcrumb_container_unittest.ts b/ui/file_manager/file_manager/containers/breadcrumb_container_unittest.ts index 2fe12c3..bbf622a1 100644 --- a/ui/file_manager/file_manager/containers/breadcrumb_container_unittest.ts +++ b/ui/file_manager/file_manager/containers/breadcrumb_container_unittest.ts
@@ -38,6 +38,7 @@ ], content: { keys: [], + status: PropStatus.SUCCESS, }, selection: { keys: [],
diff --git a/ui/file_manager/file_manager/foreground/js/fake_file_selection_handler.ts b/ui/file_manager/file_manager/foreground/js/fake_file_selection_handler.ts index 4fe06f6..0a72501 100644 --- a/ui/file_manager/file_manager/foreground/js/fake_file_selection_handler.ts +++ b/ui/file_manager/file_manager/foreground/js/fake_file_selection_handler.ts
@@ -8,6 +8,7 @@ import type {FilesAppEntry} from '../../common/js/files_app_entry_types.js'; import {AllowedPaths} from '../../common/js/volume_manager_types.js'; import {updateDirectoryContent, updateSelection} from '../../state/ducks/current_directory.js'; +import {PropStatus} from '../../state/state.js'; import type {Store} from '../../state/store.js'; import {type FileSelection, FileSelectionHandler} from './file_selection.js'; @@ -49,7 +50,8 @@ if (store) { // Make sure that the entry is in the directory content. - store.dispatch(updateDirectoryContent({entries})); + store.dispatch( + updateDirectoryContent({entries, status: PropStatus.SUCCESS})); // Mark the entry as selected. store.dispatch(updateSelection({ selectedKeys: entries.map(e => e.toURL()),
diff --git a/ui/file_manager/file_manager/foreground/js/scan_controller.ts b/ui/file_manager/file_manager/foreground/js/scan_controller.ts index dd30a3e..081ed77b 100644 --- a/ui/file_manager/file_manager/foreground/js/scan_controller.ts +++ b/ui/file_manager/file_manager/foreground/js/scan_controller.ts
@@ -6,6 +6,7 @@ import {recordDirectoryListLoadWithTolerance, startInterval} from '../../common/js/metrics.js'; import {RootType, VolumeType} from '../../common/js/volume_manager_types.js'; import {updateDirectoryContent} from '../../state/ducks/current_directory.js'; +import {PropStatus} from '../../state/state.js'; import {getStore, type Store} from '../../state/store.js'; import type {DirectoryModel} from './directory_model.js'; @@ -126,7 +127,8 @@ private updateStore_() { const entries: Array<Entry|FilesAppEntry> = this.directoryModel_.getFileList().slice(); - this.store_.dispatch(updateDirectoryContent({entries})); + this.store_.dispatch( + updateDirectoryContent({entries, status: PropStatus.SUCCESS})); } /**
diff --git a/ui/file_manager/file_manager/lib/base_store.ts b/ui/file_manager/file_manager/lib/base_store.ts index 96411565..bdabd902 100644 --- a/ui/file_manager/file_manager/lib/base_store.ts +++ b/ui/file_manager/file_manager/lib/base_store.ts
@@ -386,7 +386,7 @@ } /** Returns true when the error is a ConcurrentActionInvalidatedError. */ -function isInvalidationError(error: unknown): boolean { +export function isInvalidationError(error: unknown): boolean { if (!error) { return false; }
diff --git a/ui/file_manager/file_manager/state/ducks/current_directory.ts b/ui/file_manager/file_manager/state/ducks/current_directory.ts index fb41fd3..3c4d41ee 100644 --- a/ui/file_manager/file_manager/state/ducks/current_directory.ts +++ b/ui/file_manager/file_manager/state/ducks/current_directory.ts
@@ -2,19 +2,20 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -import {getFileTasks} from '../../common/js/api.js'; +import {getFileTasks, readMaterializedView} from '../../common/js/api.js'; import {getNativeEntry} from '../../common/js/entry_utils.js'; -import {annotateTasks, getDefaultTask, INSTALL_LINUX_PACKAGE_TASK_DESCRIPTOR} from '../../common/js/file_tasks.js'; +import {INSTALL_LINUX_PACKAGE_TASK_DESCRIPTOR, annotateTasks, getDefaultTask} from '../../common/js/file_tasks.js'; import type {FakeEntry, FilesAppDirEntry, FilesAppEntry} from '../../common/js/files_app_entry_types.js'; import {descriptorEqual} from '../../common/js/util.js'; import {RootType} from '../../common/js/volume_manager_types.js'; import {DEFAULT_CROSTINI_VM} from '../../foreground/js/constants.js'; import {PathComponent} from '../../foreground/js/path_component.js'; import type {ActionsProducerGen} from '../../lib/actions_producer.js'; -import {Slice} from '../../lib/base_store.js'; +import {Slice, isInvalidationError} from '../../lib/base_store.js'; import {keyedKeepFirst} from '../../lib/concurrency_models.js'; -import {type CurrentDirectory, DialogType, type DirectoryContent, type FileData, type FileKey, type FileTask, type FileTasks, PropStatus, type Selection, type State} from '../../state/state.js'; -import {getStore} from '../store.js'; +import {combine1Selector} from '../../lib/selector.js'; +import {DialogType, EntryType, PropStatus, type CurrentDirectory, type DirectoryContent, type FileData, type FileKey, type FileTask, type FileTasks, type Selection, type State} from '../../state/state.js'; +import {getFileData, getStore} from '../store.js'; import {cacheEntries} from './all_entries.js'; @@ -110,6 +111,7 @@ if (!content || currentState.currentDirectory?.key !== key) { content = { keys: [], + status: PropStatus.SUCCESS, }; hasDlpDisabledFiles = false; } @@ -129,23 +131,31 @@ // At the end of the change directory, DirectoryContents will send an Action // with the Entry to be cached. if (fileData) { - const {volumeManager} = window.fileManager; - if (!volumeManager) { - console.debug(`VolumeManager not available yet.`); - currentDirectory = currentState.currentDirectory || currentDirectory; + if (fileData.type === EntryType.MATERIALIZED_VIEW) { + currentDirectory.pathComponents = [{ + name: fileData.label, + label: fileData.label, + key: fileData.key, + }]; } else { - const components = PathComponent.computeComponentsFromEntry( - fileData.entry!, volumeManager); - currentDirectory.pathComponents = components.map(c => { - return { - name: c.name, - label: c.name, - key: c.getKey(), - }; - }); + const {volumeManager} = window.fileManager; + if (!volumeManager) { + console.debug(`VolumeManager not available yet.`); + currentDirectory = currentState.currentDirectory || currentDirectory; + } else { + const components = PathComponent.computeComponentsFromEntry( + fileData.entry!, volumeManager); + currentDirectory.pathComponents = components.map(c => { + return { + name: c.name, + label: c.name, + key: c.getKey(), + }; + }); - const locationInfo = volumeManager.getLocationInfo(fileData.entry!); - currentDirectory.rootType = locationInfo?.rootType; + const locationInfo = volumeManager.getLocationInfo(fileData.entry!); + currentDirectory.rootType = locationInfo?.rootType; + } } } @@ -279,10 +289,12 @@ slice.addReducer('update-content', updateDirectoryContentReducer); function updateDirectoryContentReducer(currentState: State, payload: { - entries: Array<Entry|FilesAppEntry>, + entries?: Array<Entry|FilesAppEntry>, status: PropStatus, }): State { // Cache entries, so the reducers can use any entry from `allEntries`. - cacheEntries(currentState, payload.entries); + if (payload.entries) { + cacheEntries(currentState, payload.entries); + } if (!currentState.currentDirectory) { console.warn('Missing `currentDirectory`'); @@ -291,10 +303,12 @@ const initialContent: DirectoryContent = currentState.currentDirectory?.content ?? {keys: []}; - const keys = payload.entries.map(e => e.toURL()); + const status = payload.status; + const keys = (payload.entries ?? []).map(e => e.toURL()); const content: DirectoryContent = { ...initialContent, keys, + status, }; let currentDirectory: CurrentDirectory = { @@ -408,3 +422,44 @@ export const fetchFileTasks = keyedKeepFirst(fetchFileTasksInternal, getSelectionKey); + + +export const directoryContentSelector = combine1Selector( + (currentDir?: CurrentDirectory) => currentDir?.content, slice.selector); + +// TODO(lucmult): Add concurrency model, the latest should prevail. +export async function* + fetchDirectoryContents(fileKey: FileKey): ActionsProducerGen { + // Mark as started. + yield updateDirectoryContent({status: PropStatus.STARTED}); + + try { + const store = getStore(); + const state = store.getState(); + const fileData = getFileData(state, fileKey); + if (!fileData) { + throw new Error(`FileData not found for key ${fileKey}`); + } + + // TODO(lucmult): Add this to concurrency model. + if (store.getState().currentDirectory?.key !== fileKey) { + // User navigated to another directory. + return; + } + + // NOTE: Only implemented for Materialized view for now. + if (fileData.type !== EntryType.MATERIALIZED_VIEW) { + throw new Error(`Fetch not supported for entry type: ${fileData.type}`); + } + + const entries = await readMaterializedView(fileKey); + yield updateDirectoryContent({entries, status: PropStatus.SUCCESS}); + } catch (error: any) { + if (isInvalidationError(error)) { + // Not an actual error, just stopping the actions producer. + throw error; + } + console.warn(error); + yield updateDirectoryContent({status: PropStatus.ERROR}); + } +}
diff --git a/ui/file_manager/file_manager/state/ducks/current_directory_unittest.ts b/ui/file_manager/file_manager/state/ducks/current_directory_unittest.ts index f4f10fc..fb8acb7d 100644 --- a/ui/file_manager/file_manager/state/ducks/current_directory_unittest.ts +++ b/ui/file_manager/file_manager/state/ducks/current_directory_unittest.ts
@@ -63,6 +63,7 @@ pathComponents: [], content: { keys: [], + status: PropStatus.SUCCESS, }, selection: { keys: [], @@ -114,6 +115,7 @@ ], content: { keys: [], + status: PropStatus.SUCCESS, }, selection: { keys: [], @@ -153,6 +155,7 @@ ], content: { keys: [subDir.toURL(), file.toURL()], + status: PropStatus.SUCCESS, }, selection: { keys: [subDir.toURL()], @@ -204,6 +207,7 @@ ], content: { keys: [], + status: PropStatus.SUCCESS, }, selection: { keys: [], @@ -279,6 +283,7 @@ ], content: { keys: [subDir.toURL(), file.toURL()], + status: PropStatus.SUCCESS, }, selection: { keys: [],
diff --git a/ui/file_manager/file_manager/state/for_tests.ts b/ui/file_manager/file_manager/state/for_tests.ts index ddcd24d..bed4606b 100644 --- a/ui/file_manager/file_manager/state/for_tests.ts +++ b/ui/file_manager/file_manager/state/for_tests.ts
@@ -72,7 +72,7 @@ /** Updates the directory content in the store. */ export function updateContent(store: Store, entries: Entry[]) { - store.dispatch(updateDirectoryContent({entries})); + store.dispatch(updateDirectoryContent({entries, status: PropStatus.SUCCESS})); } /**
diff --git a/ui/file_manager/file_manager/state/state.ts b/ui/file_manager/file_manager/state/state.ts index 95b8455..4f386c5c 100644 --- a/ui/file_manager/file_manager/state/state.ts +++ b/ui/file_manager/file_manager/state/state.ts
@@ -198,6 +198,7 @@ * Represents the entries displayed in the file list/grid. */ export interface DirectoryContent { + status: PropStatus; keys: FileKey[]; }
diff --git a/ui/gfx/BUILD.gn b/ui/gfx/BUILD.gn index 5ad5e831..f3b0ff3 100644 --- a/ui/gfx/BUILD.gn +++ b/ui/gfx/BUILD.gn
@@ -725,7 +725,6 @@ "test/scoped_default_font_description.h", "test/sk_color_eq.cc", "test/sk_color_eq.h", - "test/sk_gmock_support.h", ] if (is_apple) { sources += [ "image/image_unittest_util_apple.mm" ]
diff --git a/ui/gfx/DEPS b/ui/gfx/DEPS index a7eb37a..0ddd58a 100644 --- a/ui/gfx/DEPS +++ b/ui/gfx/DEPS
@@ -13,6 +13,8 @@ "+ui/base/ui_base_features.h", "+ui/ios", "+ui/linux", + + "-testing/gmock", ] specific_include_rules = {
diff --git a/ui/gfx/image/image.cc b/ui/gfx/image/image.cc index 42c079d1..51ff8d6f 100644 --- a/ui/gfx/image/image.cc +++ b/ui/gfx/image/image.cc
@@ -219,7 +219,7 @@ return Image(); scoped_refptr<base::RefCountedBytes> raw_data(new base::RefCountedBytes()); - raw_data->as_vector().assign(input, input + input_size); + raw_data->data().assign(input, input + input_size); return CreateFrom1xPNGBytes(raw_data); }
diff --git a/ui/gfx/image/image_generic.cc b/ui/gfx/image/image_generic.cc index 3222846..5d4940e 100644 --- a/ui/gfx/image/image_generic.cc +++ b/ui/gfx/image/image_generic.cc
@@ -74,7 +74,7 @@ scoped_refptr<base::RefCountedMemory> raw_data = png_rep.raw_data; CHECK(raw_data.get()); SkBitmap bitmap; - if (!PNGCodec::Decode(raw_data->data(), raw_data->size(), &bitmap)) { + if (!PNGCodec::Decode(raw_data->front(), raw_data->size(), &bitmap)) { LOG(ERROR) << "Unable to decode PNG for " << png_rep.scale << "."; return ImageSkiaRep(); } @@ -118,7 +118,7 @@ scoped_refptr<base::RefCountedBytes> png_bytes(new base::RefCountedBytes()); if (image_skia_rep.scale() != 1.0f || !PNGCodec::EncodeBGRASkBitmap(image_skia_rep.GetBitmap(), false, - &png_bytes->as_vector())) { + &png_bytes->data())) { return nullptr; } return png_bytes;
diff --git a/ui/gfx/image/image_ios.mm b/ui/gfx/image/image_ios.mm index b717aee..9fdd132 100644 --- a/ui/gfx/image/image_ios.mm +++ b/ui/gfx/image/image_ios.mm
@@ -109,8 +109,8 @@ scoped_refptr<base::RefCountedBytes> png_bytes( new base::RefCountedBytes()); - png_bytes->as_vector().resize(data.length); - [data getBytes:&png_bytes->as_vector().at(0) length:data.length]; + png_bytes->data().resize(data.length); + [data getBytes:&png_bytes->data().at(0) length:data.length]; return png_bytes; }
diff --git a/ui/gfx/image/image_mac.mm b/ui/gfx/image/image_mac.mm index a05b0d51..1b0f60f 100644 --- a/ui/gfx/image/image_mac.mm +++ b/ui/gfx/image/image_mac.mm
@@ -90,10 +90,10 @@ [[NSBitmapImageRep alloc] initWithCGImage:cg_image]; NSData* ns_data = [ns_bitmap representationUsingType:NSBitmapImageFileTypePNG properties:@{}]; - auto* bytes = static_cast<const uint8_t*>(ns_data.bytes); + const unsigned char* bytes = static_cast<const unsigned char*>(ns_data.bytes); scoped_refptr<base::RefCountedBytes> refcounted_bytes( new base::RefCountedBytes()); - refcounted_bytes->as_vector().assign(bytes, bytes + ns_data.length); + refcounted_bytes->data().assign(bytes, bytes + ns_data.length); return refcounted_bytes; }
diff --git a/ui/gfx/image/image_png_rep.cc b/ui/gfx/image/image_png_rep.cc index 9ea4bcd..332d35ed 100644 --- a/ui/gfx/image/image_png_rep.cc +++ b/ui/gfx/image/image_png_rep.cc
@@ -29,7 +29,8 @@ // using the gfx::PNGCodec API, is to decode the whole thing. CHECK(raw_data.get()); SkBitmap bitmap; - if (!gfx::PNGCodec::Decode(raw_data->data(), raw_data->size(), &bitmap)) { + if (!gfx::PNGCodec::Decode(raw_data->front(), raw_data->size(), + &bitmap)) { LOG(ERROR) << "Unable to decode PNG."; return gfx::Size(0, 0); }
diff --git a/ui/gfx/image/image_unittest.cc b/ui/gfx/image/image_unittest.cc index 8921398ac..d833500 100644 --- a/ui/gfx/image/image_unittest.cc +++ b/ui/gfx/image/image_unittest.cc
@@ -402,7 +402,7 @@ TEST_F(ImageTest, PNGDecodeToSkiaFailure) { scoped_refptr<base::RefCountedBytes> invalid_bytes( new base::RefCountedBytes()); - invalid_bytes->as_vector().push_back('0'); + invalid_bytes->data().push_back('0'); std::vector<gfx::ImagePNGRep> image_png_reps; image_png_reps.push_back(gfx::ImagePNGRep( invalid_bytes, 1.0f)); @@ -413,7 +413,7 @@ TEST_F(ImageTest, PNGDecodeToPlatformFailure) { scoped_refptr<base::RefCountedBytes> invalid_bytes( new base::RefCountedBytes()); - invalid_bytes->as_vector().push_back('0'); + invalid_bytes->data().push_back('0'); std::vector<gfx::ImagePNGRep> image_png_reps; image_png_reps.push_back(gfx::ImagePNGRep( invalid_bytes, 1.0f));
diff --git a/ui/gfx/image/image_unittest_util.cc b/ui/gfx/image/image_unittest_util.cc index a5051e85..1cc4665 100644 --- a/ui/gfx/image/image_unittest_util.cc +++ b/ui/gfx/image/image_unittest_util.cc
@@ -66,7 +66,7 @@ SkColor color) { SkBitmap bitmap = CreateBitmap(edge_size, edge_size, color); scoped_refptr<base::RefCountedBytes> bytes(new base::RefCountedBytes()); - PNGCodec::EncodeBGRASkBitmap(bitmap, false, &bytes->as_vector()); + PNGCodec::EncodeBGRASkBitmap(bitmap, false, &bytes->data()); return bytes; }
diff --git a/ui/gfx/test/sk_gmock_support.h b/ui/gfx/test/sk_gmock_support.h deleted file mode 100644 index 0c91f35..0000000 --- a/ui/gfx/test/sk_gmock_support.h +++ /dev/null
@@ -1,75 +0,0 @@ -// Copyright 2024 The Chromium Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef UI_GFX_TEST_SK_GMOCK_SUPPORT_H_ -#define UI_GFX_TEST_SK_GMOCK_SUPPORT_H_ - -#include "testing/gmock/include/gmock/gmock.h" -#include "third_party/skia/include/core/SkColor.h" -#include "ui/gfx/color_utils.h" -#include "ui/gfx/geometry/rect.h" -#include "ui/gfx/test/sk_color_eq.h" - -namespace gfx::test { - -MATCHER_P2(IsCloseToBitmap, expected_bmp, max_per_channel_deviation, "") { - // Number of pixels with an error - int error_pixels_count = 0; - - gfx::Rect error_bounding_rect = gfx::Rect(); - - // Check that bitmaps have identical dimensions. - if (arg.width() != expected_bmp.width()) { - *result_listener << "where widths do not match, actual: " << arg.width() - << ", expected: " << expected_bmp.width(); - return false; - } - if (arg.height() != expected_bmp.height()) { - *result_listener << "where heights do not match, actual: " << arg.height() - << ", expected: " << expected_bmp.height(); - return false; - } - - for (int x = 0; x < arg.width(); ++x) { - for (int y = 0; y < arg.height(); ++y) { - SkColor actual_color = arg.getColor(x, y); - SkColor expected_color = expected_bmp.getColor(x, y); - if (!ColorsClose(actual_color, expected_color, - max_per_channel_deviation)) { - ++error_pixels_count; - error_bounding_rect.Union(gfx::Rect(x, y, 1, 1)); - } - } - } - - if (error_pixels_count != 0) { - *result_listener - << "Number of pixel with an error, given max_per_channel_deviation of " - << max_per_channel_deviation << ": " << error_pixels_count - << "\nError Bounding Box : " << error_bounding_rect.ToString() << "\n"; - int sample_x = error_bounding_rect.x(); - int sample_y = error_bounding_rect.y(); - std::string expected_color = color_utils::SkColorToRgbaString( - expected_bmp.getColor(sample_x, sample_y)); - std::string actual_color = - color_utils::SkColorToRgbaString(arg.getColor(sample_x, sample_y)); - *result_listener << "Sample pixel comparison at " << sample_x << "x" - << sample_y << ": Expected " << expected_color - << ", actual " << actual_color; - return false; - } - - return true; -} - -MATCHER_P(EqualsBitmap, expected_bmp, "") { - return testing::ExplainMatchResult( - IsCloseToBitmap(expected_bmp, - /*max_per_channel_deviation=*/0), - arg, result_listener); -} - -} // namespace gfx::test - -#endif // UI_GFX_TEST_SK_GMOCK_SUPPORT_H_
diff --git a/ui/gfx/x/connection.cc b/ui/gfx/x/connection.cc index 62b8cc6..2c32f6a 100644 --- a/ui/gfx/x/connection.cc +++ b/ui/gfx/x/connection.cc
@@ -73,7 +73,7 @@ // Errors are always a fixed 32 bytes. for (size_t i = 0; i < 32; i++) { char buf[3]; - sprintf(buf, "%02x", error_bytes_->bytes()[i]); + sprintf(buf, "%02x", error_bytes_->data()[i]); ss << "0x" << buf; if (i != 31) { ss << ", "; @@ -131,12 +131,9 @@ window_event_manager_(this) { CHECK(connection_); if (Ready()) { - auto buf = ReadBuffer( - base::MakeRefCounted<UnretainedRefCountedMemory>( - // ReadBuffer doesn't use write access but we don't have a const - // UnsizedRefCountedMemory type for ReadBuffer to use. - const_cast<xcb_setup_t*>(xcb_get_setup(XcbConnection()))), - true); + auto buf = ReadBuffer(base::MakeRefCounted<UnretainedRefCountedMemory>( + xcb_get_setup(XcbConnection())), + true); setup_ = Read<Setup>(&buf); default_screen_ = &setup_.roots[DefaultScreenId()]; InitRootDepthAndVisual(); @@ -661,21 +658,6 @@ } } -Future<void> Connection::SetArrayPropertyImpl( - Window window, - Atom name, - Atom type, - uint8_t format, - base::span<const uint8_t> values) { - return ChangeProperty(ChangePropertyRequest{ - .window = static_cast<Window>(window), - .property = name, - .type = type, - .format = format, - .data_len = static_cast<uint32_t>(values.size()) / (format / 8u), - .data = base::MakeRefCounted<base::RefCountedBytes>(values)}); -} - std::unique_ptr<FutureImpl> Connection::SendRequestImpl( WriteBuffer* buf, const char* request_name_for_tracing, @@ -700,9 +682,10 @@ }; static_assert(sizeof(ExtendedRequestHeader) == 8, ""); - base::span<uint8_t> first_buffer = buf->GetBuffers()[0]; - CHECK_GE(first_buffer.size(), sizeof(RequestHeader)); - auto* old_header = reinterpret_cast<RequestHeader*>(first_buffer.data()); + auto& first_buffer = buf->GetBuffers()[0]; + CHECK_GE(first_buffer->size(), sizeof(RequestHeader)); + auto* old_header = reinterpret_cast<RequestHeader*>( + const_cast<uint8_t*>(first_buffer->data())); ExtendedRequestHeader new_header{*old_header, 0}; // Requests are always a multiple of 4 bytes on the wire. Because of this, @@ -721,14 +704,16 @@ new_header.long_length = size32 + 1; io.push_back({&new_header, sizeof(ExtendedRequestHeader)}); - buf->OffsetFirstBuffer(sizeof(RequestHeader)); + first_buffer = base::MakeRefCounted<OffsetRefCountedMemory>( + first_buffer, sizeof(RequestHeader), + first_buffer->size() - sizeof(RequestHeader)); } else { LOG(ERROR) << "Cannot send request of length " << buf->offset(); return nullptr; } - for (base::span<uint8_t> buffer : buf->GetBuffers()) { - io.push_back({buffer.data(), buffer.size()}); + for (auto& buffer : buf->GetBuffers()) { + io.push_back({const_cast<uint8_t*>(buffer->data()), buffer->size()}); } xpr.count = io.size() - 2; @@ -913,7 +898,7 @@ uint8_t error_code; uint16_t sequence; }; - auto error_code = error_bytes->cast_to<ErrorHeader>()->error_code; + auto error_code = error_bytes->front_as<ErrorHeader>()->error_code; if (auto parser = error_parsers_[error_code]) { return parser(error_bytes); }
diff --git a/ui/gfx/x/connection.h b/ui/gfx/x/connection.h index 77601c8..1866edfe 100644 --- a/ui/gfx/x/connection.h +++ b/ui/gfx/x/connection.h
@@ -337,14 +337,12 @@ static_assert(T::type_id > 0, "T must be an *Event type"); auto write_buffer = Write(event); CHECK_EQ(write_buffer.GetBuffers().size(), 1ul); - base::span<uint8_t> first_buffer = write_buffer.GetBuffers()[0]; - char event_bytes[32] = {}; - base::span(event_bytes) - .first(first_buffer.size_bytes()) - .copy_from(base::as_chars(first_buffer)); + auto& first_buffer = write_buffer.GetBuffers()[0]; + CHECK_LE(first_buffer->size(), 32ul); + std::vector<uint8_t> event_bytes(32); + memcpy(event_bytes.data(), first_buffer->data(), first_buffer->size()); SendEventRequest send_event{false, target, mask}; - base::span(send_event.event).copy_from(event_bytes); base::ranges::copy(event_bytes, send_event.event.begin()); return XProto::SendEvent(send_event); } @@ -371,14 +369,15 @@ .long_length = static_cast<uint32_t>( amount ? length : std::numeric_limits<lentype>::max())}) .Sync(); - if (!response || response->format / 8u != sizeof(T)) { + if (!response || response->format != CHAR_BIT * sizeof(T)) { return false; } - size_t byte_len = response->value_len * response->format / 8u; + CHECK_EQ(response->format / CHAR_BIT * response->value_len, + response->value->size()); value->resize(response->value_len); - if (byte_len > 0u) { - memcpy(value->data(), response->value->bytes(), byte_len); + if (response->value_len > 0) { + memcpy(value->data(), response->value->data(), response->value->size()); } if (out_type) { *out_type = response->type; @@ -403,8 +402,17 @@ Atom type, const std::vector<T>& values) { static_assert(sizeof(T) == 1 || sizeof(T) == 2 || sizeof(T) == 4, ""); - return SetArrayPropertyImpl(window, name, type, 8u * sizeof(T), - base::as_byte_span(values)); + std::vector<uint8_t> data(sizeof(T) * values.size()); + if (values.size() > 0) { + memcpy(data.data(), values.data(), sizeof(T) * values.size()); + } + return ChangeProperty(ChangePropertyRequest{ + .window = static_cast<Window>(window), + .property = name, + .type = type, + .format = CHAR_BIT * sizeof(T), + .data_len = static_cast<uint32_t>(values.size()), + .data = base::RefCountedBytes::TakeVector(&data)}); } template <typename T> @@ -498,12 +506,6 @@ bool HasNextEvent(); - Future<void> SetArrayPropertyImpl(Window window, - Atom name, - Atom type, - uint8_t format, - base::span<const uint8_t> values); - // Creates a new Request and adds it to the end of the queue. // |request_name_for_tracing| must be valid until the response is // dispatched; currently the string values are only stored in .rodata, so
diff --git a/ui/gfx/x/connection_unittest.cc b/ui/gfx/x/connection_unittest.cc index a2ca929..a600cbc 100644 --- a/ui/gfx/x/connection_unittest.cc +++ b/ui/gfx/x/connection_unittest.cc
@@ -5,7 +5,6 @@ #include "ui/gfx/x/connection.h" #include "base/memory/ref_counted_memory.h" -#include "base/numerics/safe_conversions.h" #include "testing/gtest/include/gtest/gtest.h" #include "ui/gfx/x/event.h" #include "ui/gfx/x/future.h" @@ -75,8 +74,8 @@ .property = Atom::WM_NAME, .type = Atom::STRING, .format = CHAR_BIT, - .data_len = base::checked_cast<uint32_t>(data.size()), - .data = base::MakeRefCounted<base::RefCountedBytes>(std::move(data)), + .data_len = 1, + .data = base::RefCountedBytes::TakeVector(&data), }); EXPECT_FALSE(prop_future.Sync().error);
diff --git a/ui/gfx/x/event.cc b/ui/gfx/x/event.cc index f350825..afe8e8d 100644 --- a/ui/gfx/x/event.cc +++ b/ui/gfx/x/event.cc
@@ -19,10 +19,10 @@ Event::Event() = default; -Event::Event(scoped_refptr<UnsizedRefCountedMemory> event_bytes, +Event::Event(scoped_refptr<base::RefCountedMemory> event_bytes, Connection* connection) { - auto* xcb_event = - reinterpret_cast<xcb_generic_event_t*>(event_bytes->bytes()); + auto* xcb_event = reinterpret_cast<xcb_generic_event_t*>( + const_cast<uint8_t*>(event_bytes->data())); uint8_t response_type = xcb_event->response_type & ~kSendEventMask; if (xcb_event->response_type & kSendEventMask) { send_event_ = true; @@ -38,7 +38,7 @@ const size_t extended_length = ge->length * 4; memmove(&ge->full_sequence, &ge[1], extended_length); } - connection->GetEventTypeAndOp(event_bytes->bytes(), &type_id_, &opcode_); + connection->GetEventTypeAndOp(event_bytes->data(), &type_id_, &opcode_); if (type_id_) { raw_event_ = event_bytes; }
diff --git a/ui/gfx/x/event.h b/ui/gfx/x/event.h index 8667ab5..5b5ff4dd 100644 --- a/ui/gfx/x/event.h +++ b/ui/gfx/x/event.h
@@ -45,7 +45,7 @@ // |event_bytes| is modified and will not be valid after this call. // A copy is necessary if the original data is still needed. - Event(scoped_refptr<UnsizedRefCountedMemory> event_bytes, + Event(scoped_refptr<base::RefCountedMemory> event_bytes, Connection* connection); Event(const Event&) = delete; @@ -110,7 +110,7 @@ uint32_t sequence_ = 0; // The unparsed event, or nullptr if it's already parsed. - scoped_refptr<UnsizedRefCountedMemory> raw_event_; + scoped_refptr<base::RefCountedMemory> raw_event_; // The type-erased parsed event, or nullptr if it hasn't been parsed yet. std::unique_ptr<void, Deleter> event_ = {nullptr, nullptr};
diff --git a/ui/gfx/x/gen_xproto.py b/ui/gfx/x/gen_xproto.py index 8c17455..87c4e92 100644 --- a/ui/gfx/x/gen_xproto.py +++ b/ui/gfx/x/gen_xproto.py
@@ -379,7 +379,7 @@ else: self.write('auto& %s = %s.%s;' % (field_name, obj, field_name)) - if field.type.is_list and field.type.is_sized: + if field.type.is_list: len_name = field_name + '_len' if not self.field_from_scope(len_name): len_expr = list_size(field_name, field.type) @@ -573,7 +573,7 @@ self.copy_field(case_field) def declare_switch(self, field): - return [('std::optional<%s>' % field_type, field_name) + return [('absl::optional<%s>' % field_type, field_name) for case in field.type.bitcases for field_type, field_name in self.declare_case(case)] @@ -592,10 +592,7 @@ assert (t.nmemb not in (0, 1)) if t.is_ref_counted_memory: - if t.is_sized: - type_name = 'scoped_refptr<base::RefCountedMemory>' - else: - type_name = 'scoped_refptr<UnsizedRefCountedMemory>' + type_name = 'scoped_refptr<base::RefCountedMemory>' elif t.nmemb: type_name = 'std::array<%s, %d>' % (type_name, t.nmemb) elif type_name == 'char': @@ -612,8 +609,6 @@ if t.is_ref_counted_memory: if self.is_read: self.write('%s = buffer->ReadAndAdvance(%s);' % (name, size)) - elif t.is_sized: - self.write('buf.AppendSizedBuffer(%s);' % (name)) else: self.write('buf.AppendBuffer(%s, %s);' % (name, size)) return @@ -855,7 +850,7 @@ return [] if field.type.is_switch: - return ['std::nullopt'] * len(self.declare_switch(field)) + return ['absl::nullopt'] * len(self.declare_switch(field)) if field.type.is_list or not field.type.is_container: return ['{}'] @@ -1105,7 +1100,6 @@ # xcb uses void* in some places to represent arbitrary data. field.type.is_ref_counted_memory = ( not field.type.nmemb and field.field_type[0] == 'void') - field.type.is_sized = isinstance(t, self.xcbgen.xtypes.Request) # |for_list| and |for_switch| may have already been set when # processing other fields in this structure. @@ -1231,15 +1225,15 @@ self.write('#include <cstddef>') self.write('#include <cstdint>') self.write('#include <cstring>') - self.write('#include <optional>') self.write('#include <vector>') self.write() self.write('#include "base/component_export.h"') + self.write('#include "base/memory/ref_counted_memory.h"') self.write('#include "base/memory/scoped_refptr.h"') + self.write('#include "third_party/abseil-cpp/absl/types/optional.h"') self.write('#include "base/files/scoped_file.h"') self.write('#include "ui/gfx/x/ref_counted_fd.h"') self.write('#include "ui/gfx/x/error.h"') - self.write('#include "ui/gfx/x/xproto_types.h"') imports = set(self.module.direct_imports) if self.module.namespace.is_ext: imports.add(('xproto', 'xproto'))
diff --git a/ui/gfx/x/generated_protos/bigreq.h b/ui/gfx/x/generated_protos/bigreq.h index 4199ab1..21632b48 100644 --- a/ui/gfx/x/generated_protos/bigreq.h +++ b/ui/gfx/x/generated_protos/bigreq.h
@@ -33,10 +33,10 @@ #include "base/component_export.h" #include "base/files/scoped_file.h" +#include "base/memory/ref_counted_memory.h" #include "base/memory/scoped_refptr.h" #include "ui/gfx/x/error.h" #include "ui/gfx/x/ref_counted_fd.h" -#include "ui/gfx/x/xproto_types.h" #include "xproto.h" namespace x11 {
diff --git a/ui/gfx/x/generated_protos/dri3.cc b/ui/gfx/x/generated_protos/dri3.cc index b882cc5e..43ad6a1 100644 --- a/ui/gfx/x/generated_protos/dri3.cc +++ b/ui/gfx/x/generated_protos/dri3.cc
@@ -546,7 +546,9 @@ uint32_t num_window_modifiers{}; uint32_t num_screen_modifiers{}; auto& window_modifiers = (*reply).window_modifiers; + size_t window_modifiers_len = window_modifiers.size(); auto& screen_modifiers = (*reply).screen_modifiers; + size_t screen_modifiers_len = screen_modifiers.size(); // response_type uint8_t response_type; @@ -767,8 +769,11 @@ auto& depth = (*reply).depth; auto& bpp = (*reply).bpp; auto& strides = (*reply).strides; + size_t strides_len = strides.size(); auto& offsets = (*reply).offsets; + size_t offsets_len = offsets.size(); auto& buffers = (*reply).buffers; + size_t buffers_len = buffers.size(); // response_type uint8_t response_type;
diff --git a/ui/gfx/x/generated_protos/dri3.h b/ui/gfx/x/generated_protos/dri3.h index 17a1927..c15ada6 100644 --- a/ui/gfx/x/generated_protos/dri3.h +++ b/ui/gfx/x/generated_protos/dri3.h
@@ -33,10 +33,10 @@ #include "base/component_export.h" #include "base/files/scoped_file.h" +#include "base/memory/ref_counted_memory.h" #include "base/memory/scoped_refptr.h" #include "ui/gfx/x/error.h" #include "ui/gfx/x/ref_counted_fd.h" -#include "ui/gfx/x/xproto_types.h" #include "xproto.h" namespace x11 {
diff --git a/ui/gfx/x/generated_protos/glx.cc b/ui/gfx/x/generated_protos/glx.cc index 6c324c22..c2f618e 100644 --- a/ui/gfx/x/generated_protos/glx.cc +++ b/ui/gfx/x/generated_protos/glx.cc
@@ -1576,6 +1576,7 @@ auto& num_visuals = (*reply).num_visuals; auto& num_properties = (*reply).num_properties; auto& property_list = (*reply).property_list; + size_t property_list_len = property_list.size(); // response_type uint8_t response_type; @@ -1755,7 +1756,9 @@ auto& sequence = (*reply).sequence; auto& retval = (*reply).retval; auto& data1 = (*reply).data1; + size_t data1_len = data1.size(); auto& data2 = (*reply).data2; + size_t data2_len = data2.size(); // response_type uint8_t response_type; @@ -1917,6 +1920,7 @@ auto& sequence = (*reply).sequence; uint32_t str_len{}; auto& string = (*reply).string; + size_t string_len = string.size(); // response_type uint8_t response_type; @@ -2052,6 +2056,7 @@ auto& num_FB_configs = (*reply).num_FB_configs; auto& num_properties = (*reply).num_properties; auto& property_list = (*reply).property_list; + size_t property_list_len = property_list.size(); // response_type uint8_t response_type; @@ -2290,6 +2295,7 @@ auto& sequence = (*reply).sequence; auto& num_attribs = (*reply).num_attribs; auto& attribs = (*reply).attribs; + size_t attribs_len = attribs.size(); // response_type uint8_t response_type; @@ -2547,6 +2553,7 @@ auto& sequence = (*reply).sequence; auto& num_attribs = (*reply).num_attribs; auto& attribs = (*reply).attribs; + size_t attribs_len = attribs.size(); // response_type uint8_t response_type; @@ -3295,6 +3302,7 @@ uint32_t n{}; auto& new_mode = (*reply).new_mode; auto& data = (*reply).data; + size_t data_len = data.size(); // response_type uint8_t response_type; @@ -3564,6 +3572,7 @@ auto& sequence = (*reply).sequence; auto& data = (*reply).data; + size_t data_len = data.size(); // response_type uint8_t response_type; @@ -3645,6 +3654,7 @@ uint32_t n{}; auto& datum = (*reply).datum; auto& data = (*reply).data; + size_t data_len = data.size(); // response_type uint8_t response_type; @@ -3733,6 +3743,7 @@ auto& sequence = (*reply).sequence; auto& data = (*reply).data; + size_t data_len = data.size(); // response_type uint8_t response_type; @@ -3814,6 +3825,7 @@ uint32_t n{}; auto& datum = (*reply).datum; auto& data = (*reply).data; + size_t data_len = data.size(); // response_type uint8_t response_type; @@ -3970,6 +3982,7 @@ uint32_t n{}; auto& datum = (*reply).datum; auto& data = (*reply).data; + size_t data_len = data.size(); // response_type uint8_t response_type; @@ -4060,6 +4073,7 @@ uint32_t n{}; auto& datum = (*reply).datum; auto& data = (*reply).data; + size_t data_len = data.size(); // response_type uint8_t response_type; @@ -4155,6 +4169,7 @@ uint32_t n{}; auto& datum = (*reply).datum; auto& data = (*reply).data; + size_t data_len = data.size(); // response_type uint8_t response_type; @@ -4250,6 +4265,7 @@ uint32_t n{}; auto& datum = (*reply).datum; auto& data = (*reply).data; + size_t data_len = data.size(); // response_type uint8_t response_type; @@ -4344,6 +4360,7 @@ uint32_t n{}; auto& datum = (*reply).datum; auto& data = (*reply).data; + size_t data_len = data.size(); // response_type uint8_t response_type; @@ -4438,6 +4455,7 @@ uint32_t n{}; auto& datum = (*reply).datum; auto& data = (*reply).data; + size_t data_len = data.size(); // response_type uint8_t response_type; @@ -4532,6 +4550,7 @@ uint32_t n{}; auto& datum = (*reply).datum; auto& data = (*reply).data; + size_t data_len = data.size(); // response_type uint8_t response_type; @@ -4629,6 +4648,7 @@ uint32_t n{}; auto& datum = (*reply).datum; auto& data = (*reply).data; + size_t data_len = data.size(); // response_type uint8_t response_type; @@ -4726,6 +4746,7 @@ uint32_t n{}; auto& datum = (*reply).datum; auto& data = (*reply).data; + size_t data_len = data.size(); // response_type uint8_t response_type; @@ -4817,6 +4838,7 @@ uint32_t n{}; auto& datum = (*reply).datum; auto& data = (*reply).data; + size_t data_len = data.size(); // response_type uint8_t response_type; @@ -4908,6 +4930,7 @@ uint32_t n{}; auto& datum = (*reply).datum; auto& data = (*reply).data; + size_t data_len = data.size(); // response_type uint8_t response_type; @@ -4999,6 +5022,7 @@ uint32_t n{}; auto& datum = (*reply).datum; auto& data = (*reply).data; + size_t data_len = data.size(); // response_type uint8_t response_type; @@ -5089,6 +5113,7 @@ auto& sequence = (*reply).sequence; auto& data = (*reply).data; + size_t data_len = data.size(); // response_type uint8_t response_type; @@ -5169,6 +5194,7 @@ auto& sequence = (*reply).sequence; uint32_t n{}; auto& string = (*reply).string; + size_t string_len = string.size(); // response_type uint8_t response_type; @@ -5261,6 +5287,7 @@ uint32_t n{}; auto& datum = (*reply).datum; auto& data = (*reply).data; + size_t data_len = data.size(); // response_type uint8_t response_type; @@ -5356,6 +5383,7 @@ uint32_t n{}; auto& datum = (*reply).datum; auto& data = (*reply).data; + size_t data_len = data.size(); // response_type uint8_t response_type; @@ -5451,6 +5479,7 @@ uint32_t n{}; auto& datum = (*reply).datum; auto& data = (*reply).data; + size_t data_len = data.size(); // response_type uint8_t response_type; @@ -5546,6 +5575,7 @@ uint32_t n{}; auto& datum = (*reply).datum; auto& data = (*reply).data; + size_t data_len = data.size(); // response_type uint8_t response_type; @@ -5641,6 +5671,7 @@ uint32_t n{}; auto& datum = (*reply).datum; auto& data = (*reply).data; + size_t data_len = data.size(); // response_type uint8_t response_type; @@ -5753,6 +5784,7 @@ auto& height = (*reply).height; auto& depth = (*reply).depth; auto& data = (*reply).data; + size_t data_len = data.size(); // response_type uint8_t response_type; @@ -5853,6 +5885,7 @@ uint32_t n{}; auto& datum = (*reply).datum; auto& data = (*reply).data; + size_t data_len = data.size(); // response_type uint8_t response_type; @@ -5950,6 +5983,7 @@ uint32_t n{}; auto& datum = (*reply).datum; auto& data = (*reply).data; + size_t data_len = data.size(); // response_type uint8_t response_type; @@ -6052,6 +6086,7 @@ uint32_t n{}; auto& datum = (*reply).datum; auto& data = (*reply).data; + size_t data_len = data.size(); // response_type uint8_t response_type; @@ -6154,6 +6189,7 @@ uint32_t n{}; auto& datum = (*reply).datum; auto& data = (*reply).data; + size_t data_len = data.size(); // response_type uint8_t response_type; @@ -6429,6 +6465,7 @@ auto& sequence = (*reply).sequence; auto& ret_val = (*reply).ret_val; auto& data = (*reply).data; + size_t data_len = data.size(); // response_type uint8_t response_type; @@ -6558,6 +6595,7 @@ auto& sequence = (*reply).sequence; auto& data = (*reply).data; + size_t data_len = data.size(); // response_type uint8_t response_type; @@ -6727,6 +6765,7 @@ auto& sequence = (*reply).sequence; auto& width = (*reply).width; auto& data = (*reply).data; + size_t data_len = data.size(); // response_type uint8_t response_type; @@ -6821,6 +6860,7 @@ uint32_t n{}; auto& datum = (*reply).datum; auto& data = (*reply).data; + size_t data_len = data.size(); // response_type uint8_t response_type; @@ -6918,6 +6958,7 @@ uint32_t n{}; auto& datum = (*reply).datum; auto& data = (*reply).data; + size_t data_len = data.size(); // response_type uint8_t response_type; @@ -7025,6 +7066,7 @@ auto& width = (*reply).width; auto& height = (*reply).height; auto& data = (*reply).data; + size_t data_len = data.size(); // response_type uint8_t response_type; @@ -7122,6 +7164,7 @@ uint32_t n{}; auto& datum = (*reply).datum; auto& data = (*reply).data; + size_t data_len = data.size(); // response_type uint8_t response_type; @@ -7219,6 +7262,7 @@ uint32_t n{}; auto& datum = (*reply).datum; auto& data = (*reply).data; + size_t data_len = data.size(); // response_type uint8_t response_type; @@ -7326,6 +7370,7 @@ auto& row_w = (*reply).row_w; auto& col_h = (*reply).col_h; auto& rows_and_cols = (*reply).rows_and_cols; + size_t rows_and_cols_len = rows_and_cols.size(); // response_type uint8_t response_type; @@ -7436,6 +7481,7 @@ auto& sequence = (*reply).sequence; auto& width = (*reply).width; auto& data = (*reply).data; + size_t data_len = data.size(); // response_type uint8_t response_type; @@ -7530,6 +7576,7 @@ uint32_t n{}; auto& datum = (*reply).datum; auto& data = (*reply).data; + size_t data_len = data.size(); // response_type uint8_t response_type; @@ -7627,6 +7674,7 @@ uint32_t n{}; auto& datum = (*reply).datum; auto& data = (*reply).data; + size_t data_len = data.size(); // response_type uint8_t response_type; @@ -7736,6 +7784,7 @@ auto& sequence = (*reply).sequence; auto& data = (*reply).data; + size_t data_len = data.size(); // response_type uint8_t response_type; @@ -7824,6 +7873,7 @@ uint32_t n{}; auto& datum = (*reply).datum; auto& data = (*reply).data; + size_t data_len = data.size(); // response_type uint8_t response_type; @@ -7921,6 +7971,7 @@ uint32_t n{}; auto& datum = (*reply).datum; auto& data = (*reply).data; + size_t data_len = data.size(); // response_type uint8_t response_type; @@ -8017,6 +8068,7 @@ auto& sequence = (*reply).sequence; auto& size = (*reply).size; auto& data = (*reply).data; + size_t data_len = data.size(); // response_type uint8_t response_type; @@ -8151,6 +8203,7 @@ auto& sequence = (*reply).sequence; auto& data = (*reply).data; + size_t data_len = data.size(); // response_type uint8_t response_type; @@ -8311,6 +8364,7 @@ uint32_t n{}; auto& datum = (*reply).datum; auto& data = (*reply).data; + size_t data_len = data.size(); // response_type uint8_t response_type; @@ -8408,6 +8462,7 @@ uint32_t n{}; auto& datum = (*reply).datum; auto& data = (*reply).data; + size_t data_len = data.size(); // response_type uint8_t response_type; @@ -8505,6 +8560,7 @@ uint32_t n{}; auto& datum = (*reply).datum; auto& data = (*reply).data; + size_t data_len = data.size(); // response_type uint8_t response_type;
diff --git a/ui/gfx/x/generated_protos/glx.h b/ui/gfx/x/generated_protos/glx.h index c490293..22abc481 100644 --- a/ui/gfx/x/generated_protos/glx.h +++ b/ui/gfx/x/generated_protos/glx.h
@@ -33,10 +33,10 @@ #include "base/component_export.h" #include "base/files/scoped_file.h" +#include "base/memory/ref_counted_memory.h" #include "base/memory/scoped_refptr.h" #include "ui/gfx/x/error.h" #include "ui/gfx/x/ref_counted_fd.h" -#include "ui/gfx/x/xproto_types.h" #include "xproto.h" namespace x11 {
diff --git a/ui/gfx/x/generated_protos/randr.cc b/ui/gfx/x/generated_protos/randr.cc index 9cf8763..ca85af11 100644 --- a/ui/gfx/x/generated_protos/randr.cc +++ b/ui/gfx/x/generated_protos/randr.cc
@@ -799,7 +799,9 @@ auto& rate = (*reply).rate; auto& nInfo = (*reply).nInfo; auto& sizes = (*reply).sizes; + size_t sizes_len = sizes.size(); auto& rates = (*reply).rates; + size_t rates_len = rates.size(); // response_type uint8_t response_type; @@ -877,6 +879,7 @@ { uint16_t nRates{}; auto& rates = rates_elem.rates; + size_t rates_len = rates.size(); // nRates Read(&nRates, &buf); @@ -1082,8 +1085,11 @@ uint16_t num_modes{}; uint16_t names_len{}; auto& crtcs = (*reply).crtcs; + size_t crtcs_len = crtcs.size(); auto& outputs = (*reply).outputs; + size_t outputs_len = outputs.size(); auto& modes = (*reply).modes; + size_t modes_len = modes.size(); auto& names = (*reply).names; // response_type @@ -1272,8 +1278,11 @@ uint16_t num_clones{}; uint16_t name_len{}; auto& crtcs = (*reply).crtcs; + size_t crtcs_len = crtcs.size(); auto& modes = (*reply).modes; + size_t modes_len = modes.size(); auto& clones = (*reply).clones; + size_t clones_len = clones.size(); auto& name = (*reply).name; // response_type @@ -1409,6 +1418,7 @@ auto& sequence = (*reply).sequence; uint16_t num_atoms{}; auto& atoms = (*reply).atoms; + size_t atoms_len = atoms.size(); // response_type uint8_t response_type; @@ -1496,6 +1506,7 @@ auto& range = (*reply).range; auto& immutable = (*reply).immutable; auto& validValues = (*reply).validValues; + size_t validValues_len = validValues.size(); // response_type uint8_t response_type; @@ -1652,7 +1663,7 @@ buf.Write(&num_units); // data - buf.AppendSizedBuffer(data); + buf.AppendBuffer(data, ((num_units) * (format)) / (8)); Align(&buf, 4); @@ -1794,6 +1805,7 @@ auto& bytes_after = (*reply).bytes_after; auto& num_items = (*reply).num_items; auto& data = (*reply).data; + size_t data_len = data.size(); // response_type uint8_t response_type; @@ -2139,7 +2151,9 @@ uint16_t num_outputs{}; uint16_t num_possible_outputs{}; auto& outputs = (*reply).outputs; + size_t outputs_len = outputs.size(); auto& possible = (*reply).possible; + size_t possible_len = possible.size(); // response_type uint8_t response_type; @@ -2445,8 +2459,11 @@ auto& sequence = (*reply).sequence; uint16_t size{}; auto& red = (*reply).red; + size_t red_len = red.size(); auto& green = (*reply).green; + size_t green_len = green.size(); auto& blue = (*reply).blue; + size_t blue_len = blue.size(); // response_type uint8_t response_type; @@ -2617,8 +2634,11 @@ uint16_t num_modes{}; uint16_t names_len{}; auto& crtcs = (*reply).crtcs; + size_t crtcs_len = crtcs.size(); auto& outputs = (*reply).outputs; + size_t outputs_len = outputs.size(); auto& modes = (*reply).modes; + size_t modes_len = modes.size(); auto& names = (*reply).names; // response_type @@ -2903,9 +2923,13 @@ uint16_t current_len{}; uint16_t current_nparams{}; auto& pending_filter_name = (*reply).pending_filter_name; + size_t pending_filter_name_len = pending_filter_name.size(); auto& pending_params = (*reply).pending_params; + size_t pending_params_len = pending_params.size(); auto& current_filter_name = (*reply).current_filter_name; + size_t current_filter_name_len = current_filter_name.size(); auto& current_params = (*reply).current_params; + size_t current_params_len = current_params.size(); // response_type uint8_t response_type; @@ -3470,6 +3494,7 @@ auto& timestamp = (*reply).timestamp; uint16_t num_providers{}; auto& providers = (*reply).providers; + size_t providers_len = providers.size(); // response_type uint8_t response_type; @@ -3564,9 +3589,13 @@ uint16_t num_associated_providers{}; uint16_t name_len{}; auto& crtcs = (*reply).crtcs; + size_t crtcs_len = crtcs.size(); auto& outputs = (*reply).outputs; + size_t outputs_len = outputs.size(); auto& associated_providers = (*reply).associated_providers; + size_t associated_providers_len = associated_providers.size(); auto& associated_capability = (*reply).associated_capability; + size_t associated_capability_len = associated_capability.size(); auto& name = (*reply).name; // response_type @@ -3783,6 +3812,7 @@ auto& sequence = (*reply).sequence; uint16_t num_atoms{}; auto& atoms = (*reply).atoms; + size_t atoms_len = atoms.size(); // response_type uint8_t response_type; @@ -3870,6 +3900,7 @@ auto& range = (*reply).range; auto& immutable = (*reply).immutable; auto& valid_values = (*reply).valid_values; + size_t valid_values_len = valid_values.size(); // response_type uint8_t response_type; @@ -4025,7 +4056,7 @@ buf.Write(&num_items); // data - buf.AppendSizedBuffer(data); + buf.AppendBuffer(data, (num_items) * ((format) / (8))); Align(&buf, 4); @@ -4167,6 +4198,7 @@ auto& bytes_after = (*reply).bytes_after; auto& num_items = (*reply).num_items; auto& data = (*reply).data; + size_t data_len = data ? data->size() : 0; // response_type uint8_t response_type; @@ -4254,6 +4286,7 @@ uint32_t nMonitors{}; auto& nOutputs = (*reply).nOutputs; auto& monitors = (*reply).monitors; + size_t monitors_len = monitors.size(); // response_type uint8_t response_type; @@ -4297,6 +4330,7 @@ auto& width_in_millimeters = monitors_elem.width_in_millimeters; auto& height_in_millimeters = monitors_elem.height_in_millimeters; auto& outputs = monitors_elem.outputs; + size_t outputs_len = outputs.size(); // name Read(&name, &buf); @@ -4380,6 +4414,7 @@ auto& width_in_millimeters = monitorinfo.width_in_millimeters; auto& height_in_millimeters = monitorinfo.height_in_millimeters; auto& outputs = monitorinfo.outputs; + size_t outputs_len = outputs.size(); // name buf.Write(&name);
diff --git a/ui/gfx/x/generated_protos/randr.h b/ui/gfx/x/generated_protos/randr.h index 5e4cf5d..e58dac1e 100644 --- a/ui/gfx/x/generated_protos/randr.h +++ b/ui/gfx/x/generated_protos/randr.h
@@ -33,11 +33,11 @@ #include "base/component_export.h" #include "base/files/scoped_file.h" +#include "base/memory/ref_counted_memory.h" #include "base/memory/scoped_refptr.h" #include "render.h" #include "ui/gfx/x/error.h" #include "ui/gfx/x/ref_counted_fd.h" -#include "ui/gfx/x/xproto_types.h" #include "xproto.h" namespace x11 { @@ -1134,7 +1134,7 @@ Atom type{}; uint32_t bytes_after{}; uint32_t num_items{}; - scoped_refptr<UnsizedRefCountedMemory> data{}; + scoped_refptr<base::RefCountedMemory> data{}; }; using GetProviderPropertyResponse = Response<GetProviderPropertyReply>;
diff --git a/ui/gfx/x/generated_protos/render.cc b/ui/gfx/x/generated_protos/render.cc index 8cc6e9e5..63623426 100644 --- a/ui/gfx/x/generated_protos/render.cc +++ b/ui/gfx/x/generated_protos/render.cc
@@ -381,8 +381,11 @@ auto& num_visuals = (*reply).num_visuals; uint32_t num_subpixel{}; auto& formats = (*reply).formats; + size_t formats_len = formats.size(); auto& screens = (*reply).screens; + size_t screens_len = screens.size(); auto& subpixels = (*reply).subpixels; + size_t subpixels_len = subpixels.size(); // response_type uint8_t response_type; @@ -490,6 +493,7 @@ uint32_t num_depths{}; auto& fallback = screens_elem.fallback; auto& depths = screens_elem.depths; + size_t depths_len = depths.size(); // num_depths Read(&num_depths, &buf); @@ -505,6 +509,7 @@ auto& depth = depths_elem.depth; uint16_t num_visuals{}; auto& visuals = depths_elem.visuals; + size_t visuals_len = visuals.size(); // depth Read(&depth, &buf); @@ -599,6 +604,7 @@ auto& sequence = (*reply).sequence; uint32_t num_values{}; auto& values = (*reply).values; + size_t values_len = values.size(); // response_type uint8_t response_type; @@ -2376,7 +2382,9 @@ uint32_t num_aliases{}; uint32_t num_filters{}; auto& aliases = (*reply).aliases; + size_t aliases_len = aliases.size(); auto& filters = (*reply).filters; + size_t filters_len = filters.size(); // response_type uint8_t response_type;
diff --git a/ui/gfx/x/generated_protos/render.h b/ui/gfx/x/generated_protos/render.h index d7c69d207..511993f 100644 --- a/ui/gfx/x/generated_protos/render.h +++ b/ui/gfx/x/generated_protos/render.h
@@ -33,10 +33,10 @@ #include "base/component_export.h" #include "base/files/scoped_file.h" +#include "base/memory/ref_counted_memory.h" #include "base/memory/scoped_refptr.h" #include "ui/gfx/x/error.h" #include "ui/gfx/x/ref_counted_fd.h" -#include "ui/gfx/x/xproto_types.h" #include "xproto.h" namespace x11 {
diff --git a/ui/gfx/x/generated_protos/screensaver.h b/ui/gfx/x/generated_protos/screensaver.h index 9778c5c..335de93 100644 --- a/ui/gfx/x/generated_protos/screensaver.h +++ b/ui/gfx/x/generated_protos/screensaver.h
@@ -33,10 +33,10 @@ #include "base/component_export.h" #include "base/files/scoped_file.h" +#include "base/memory/ref_counted_memory.h" #include "base/memory/scoped_refptr.h" #include "ui/gfx/x/error.h" #include "ui/gfx/x/ref_counted_fd.h" -#include "ui/gfx/x/xproto_types.h" #include "xproto.h" namespace x11 {
diff --git a/ui/gfx/x/generated_protos/shape.h b/ui/gfx/x/generated_protos/shape.h index 2a816501..deaca14 100644 --- a/ui/gfx/x/generated_protos/shape.h +++ b/ui/gfx/x/generated_protos/shape.h
@@ -33,10 +33,10 @@ #include "base/component_export.h" #include "base/files/scoped_file.h" +#include "base/memory/ref_counted_memory.h" #include "base/memory/scoped_refptr.h" #include "ui/gfx/x/error.h" #include "ui/gfx/x/ref_counted_fd.h" -#include "ui/gfx/x/xproto_types.h" #include "xproto.h" namespace x11 {
diff --git a/ui/gfx/x/generated_protos/shm.h b/ui/gfx/x/generated_protos/shm.h index 7eb1cc2..bed2915 100644 --- a/ui/gfx/x/generated_protos/shm.h +++ b/ui/gfx/x/generated_protos/shm.h
@@ -33,10 +33,10 @@ #include "base/component_export.h" #include "base/files/scoped_file.h" +#include "base/memory/ref_counted_memory.h" #include "base/memory/scoped_refptr.h" #include "ui/gfx/x/error.h" #include "ui/gfx/x/ref_counted_fd.h" -#include "ui/gfx/x/xproto_types.h" #include "xproto.h" namespace x11 {
diff --git a/ui/gfx/x/generated_protos/sync.h b/ui/gfx/x/generated_protos/sync.h index c630fda..d9de1c89 100644 --- a/ui/gfx/x/generated_protos/sync.h +++ b/ui/gfx/x/generated_protos/sync.h
@@ -33,10 +33,10 @@ #include "base/component_export.h" #include "base/files/scoped_file.h" +#include "base/memory/ref_counted_memory.h" #include "base/memory/scoped_refptr.h" #include "ui/gfx/x/error.h" #include "ui/gfx/x/ref_counted_fd.h" -#include "ui/gfx/x/xproto_types.h" #include "xproto.h" namespace x11 {
diff --git a/ui/gfx/x/generated_protos/xfixes.cc b/ui/gfx/x/generated_protos/xfixes.cc index 71cfb37..80bf8f37 100644 --- a/ui/gfx/x/generated_protos/xfixes.cc +++ b/ui/gfx/x/generated_protos/xfixes.cc
@@ -446,6 +446,7 @@ auto& yhot = (*reply).yhot; auto& cursor_serial = (*reply).cursor_serial; auto& cursor_image = (*reply).cursor_image; + size_t cursor_image_len = cursor_image.size(); // response_type uint8_t response_type; @@ -1174,6 +1175,7 @@ auto& sequence = (*reply).sequence; auto& extents = (*reply).extents; auto& rectangles = (*reply).rectangles; + size_t rectangles_len = rectangles.size(); // response_type uint8_t response_type; @@ -1497,6 +1499,7 @@ auto& atom = (*reply).atom; uint16_t nbytes{}; auto& name = (*reply).name; + size_t name_len = name.size(); // response_type uint8_t response_type; @@ -1581,7 +1584,9 @@ auto& cursor_atom = (*reply).cursor_atom; uint16_t nbytes{}; auto& cursor_image = (*reply).cursor_image; + size_t cursor_image_len = cursor_image.size(); auto& name = (*reply).name; + size_t name_len = name.size(); // response_type uint8_t response_type;
diff --git a/ui/gfx/x/generated_protos/xfixes.h b/ui/gfx/x/generated_protos/xfixes.h index 00476d8..83dcef19 100644 --- a/ui/gfx/x/generated_protos/xfixes.h +++ b/ui/gfx/x/generated_protos/xfixes.h
@@ -33,12 +33,12 @@ #include "base/component_export.h" #include "base/files/scoped_file.h" +#include "base/memory/ref_counted_memory.h" #include "base/memory/scoped_refptr.h" #include "render.h" #include "shape.h" #include "ui/gfx/x/error.h" #include "ui/gfx/x/ref_counted_fd.h" -#include "ui/gfx/x/xproto_types.h" #include "xproto.h" namespace x11 {
diff --git a/ui/gfx/x/generated_protos/xinput.cc b/ui/gfx/x/generated_protos/xinput.cc index 3f63d1e..b7e566bc 100644 --- a/ui/gfx/x/generated_protos/xinput.cc +++ b/ui/gfx/x/generated_protos/xinput.cc
@@ -49,6 +49,7 @@ auto& num_valuators = (*event_).num_valuators; auto& first_valuator = (*event_).first_valuator; auto& valuators = (*event_).valuators; + size_t valuators_len = valuators.size(); // response_type uint8_t response_type; @@ -206,8 +207,11 @@ auto& num_valuators = (*event_).num_valuators; auto& classes_reported = (*event_).classes_reported; auto& buttons = (*event_).buttons; + size_t buttons_len = buttons.size(); auto& keys = (*event_).keys; + size_t keys_len = keys.size(); auto& valuators = (*event_).valuators; + size_t valuators_len = valuators.size(); // response_type uint8_t response_type; @@ -350,6 +354,7 @@ auto& device_id = (*event_).device_id; auto& sequence = (*event_).sequence; auto& keys = (*event_).keys; + size_t keys_len = keys.size(); // response_type uint8_t response_type; @@ -380,6 +385,7 @@ auto& device_id = (*event_).device_id; auto& sequence = (*event_).sequence; auto& buttons = (*event_).buttons; + size_t buttons_len = buttons.size(); // response_type uint8_t response_type; @@ -496,6 +502,7 @@ auto& sourceid = (*event_).sourceid; auto& reason = (*event_).reason; auto& classes = (*event_).classes; + size_t classes_len = classes.size(); // response_type uint8_t response_type; @@ -563,6 +570,7 @@ data.key.emplace(); uint16_t num_keys{}; auto& keys = (*data.key).keys; + size_t keys_len = keys.size(); // num_keys Read(&num_keys, &buf); @@ -578,7 +586,9 @@ data.button.emplace(); uint16_t num_buttons{}; auto& state = (*data.button).state; + size_t state_len = state.size(); auto& labels = (*data.button).labels; + size_t labels_len = labels.size(); // num_buttons Read(&num_buttons, &buf); @@ -749,8 +759,11 @@ auto& mods = (*event_).mods; auto& group = (*event_).group; auto& button_mask = (*event_).button_mask; + size_t button_mask_len = button_mask.size(); auto& valuator_mask = (*event_).valuator_mask; + size_t valuator_mask_len = valuator_mask.size(); auto& axisvalues = (*event_).axisvalues; + size_t axisvalues_len = axisvalues.size(); // response_type uint8_t response_type; @@ -1051,6 +1064,7 @@ auto& flags = (*event_).flags; uint16_t num_infos{}; auto& infos = (*event_).infos; + size_t infos_len = infos.size(); // response_type uint8_t response_type; @@ -1193,8 +1207,11 @@ uint16_t valuators_len{}; auto& flags = (*event_).flags; auto& valuator_mask = (*event_).valuator_mask; + size_t valuator_mask_len = valuator_mask.size(); auto& axisvalues = (*event_).axisvalues; + size_t axisvalues_len = axisvalues.size(); auto& axisvalues_raw = (*event_).axisvalues_raw; + size_t axisvalues_raw_len = axisvalues_raw.size(); // response_type uint8_t response_type; @@ -2106,7 +2123,9 @@ uint8_t devices_len{}; auto& devices = (*reply).devices; auto& infos = (*reply).infos; + size_t infos_len = infos.size(); auto& names = (*reply).names; + size_t names_len = names.size(); // response_type uint8_t response_type; @@ -2329,6 +2348,7 @@ auto& sequence = (*reply).sequence; uint8_t num_classes{}; auto& class_info = (*reply).class_info; + size_t class_info_len = class_info.size(); // response_type uint8_t response_type; @@ -2599,7 +2619,9 @@ uint16_t num_this_classes{}; uint16_t num_all_classes{}; auto& this_classes = (*reply).this_classes; + size_t this_classes_len = this_classes.size(); auto& all_classes = (*reply).all_classes; + size_t all_classes_len = all_classes.size(); // response_type uint8_t response_type; @@ -2753,6 +2775,7 @@ auto& sequence = (*reply).sequence; uint16_t num_classes{}; auto& classes = (*reply).classes; + size_t classes_len = classes.size(); // response_type uint8_t response_type; @@ -2849,6 +2872,7 @@ auto& num_axes = (*reply).num_axes; auto& device_mode = (*reply).device_mode; auto& events = (*reply).events; + size_t events_len = events.size(); // response_type uint8_t response_type; @@ -2885,6 +2909,7 @@ { auto& time = events_elem.time; auto& axisvalues = events_elem.axisvalues; + size_t axisvalues_len = axisvalues.size(); // time Read(&time, &buf); @@ -3773,6 +3798,7 @@ auto& sequence = (*reply).sequence; uint16_t num_feedbacks{}; auto& feedbacks = (*reply).feedbacks; + size_t feedbacks_len = feedbacks.size(); // response_type uint8_t response_type; @@ -3827,6 +3853,7 @@ auto& click = (*data.keyboard).click; auto& percent = (*data.keyboard).percent; auto& auto_repeats = (*data.keyboard).auto_repeats; + size_t auto_repeats_len = auto_repeats.size(); // pitch Read(&pitch, &buf); @@ -3881,6 +3908,7 @@ auto& max_symbols = (*data.string).max_symbols; uint16_t num_keysyms{}; auto& keysyms = (*data.string).keysyms; + size_t keysyms_len = keysyms.size(); // max_symbols Read(&max_symbols, &buf); @@ -4069,6 +4097,7 @@ if (CaseEq(data_expr, FeedbackClass::String)) { uint16_t num_keysyms{}; auto& keysyms = (*data.string).keysyms; + size_t keysyms_len = keysyms.size(); // pad1 Pad(&buf, 2); @@ -4193,6 +4222,7 @@ auto& sequence = (*reply).sequence; auto& keysyms_per_keycode = (*reply).keysyms_per_keycode; auto& keysyms = (*reply).keysyms; + size_t keysyms_len = keysyms.size(); // response_type uint8_t response_type; @@ -4338,6 +4368,7 @@ auto& sequence = (*reply).sequence; auto& keycodes_per_modifier = (*reply).keycodes_per_modifier; auto& keymaps = (*reply).keymaps; + size_t keymaps_len = keymaps.size(); // response_type uint8_t response_type; @@ -4515,6 +4546,7 @@ auto& sequence = (*reply).sequence; uint8_t map_size{}; auto& map = (*reply).map; + size_t map_len = map.size(); // response_type uint8_t response_type; @@ -4694,6 +4726,7 @@ auto& sequence = (*reply).sequence; uint8_t num_classes{}; auto& classes = (*reply).classes; + size_t classes_len = classes.size(); // response_type uint8_t response_type; @@ -4738,6 +4771,7 @@ data.key.emplace(); auto& num_keys = (*data.key).num_keys; auto& keys = (*data.key).keys; + size_t keys_len = keys.size(); // num_keys Read(&num_keys, &buf); @@ -4755,6 +4789,7 @@ data.button.emplace(); auto& num_buttons = (*data.button).num_buttons; auto& buttons = (*data.button).buttons; + size_t buttons_len = buttons.size(); // num_buttons Read(&num_buttons, &buf); @@ -4773,6 +4808,7 @@ uint8_t num_valuators{}; auto& mode = (*data.valuator).mode; auto& valuators = (*data.valuator).valuators; + size_t valuators_len = valuators.size(); // num_valuators Read(&num_valuators, &buf); @@ -5042,8 +5078,11 @@ data.resolution.emplace(); uint32_t num_valuators{}; auto& resolution_values = (*data.resolution).resolution_values; + size_t resolution_values_len = resolution_values.size(); auto& resolution_min = (*data.resolution).resolution_min; + size_t resolution_min_len = resolution_min.size(); auto& resolution_max = (*data.resolution).resolution_max; + size_t resolution_max_len = resolution_max.size(); // num_valuators Read(&num_valuators, &buf); @@ -5226,6 +5265,7 @@ auto& first_valuator = (*data.resolution).first_valuator; uint8_t num_valuators{}; auto& resolution_values = (*data.resolution).resolution_values; + size_t resolution_values_len = resolution_values.size(); // first_valuator buf.Write(&first_valuator); @@ -5425,6 +5465,7 @@ auto& sequence = (*reply).sequence; uint16_t num_atoms{}; auto& atoms = (*reply).atoms; + size_t atoms_len = atoms.size(); // response_type uint8_t response_type; @@ -5518,6 +5559,7 @@ auto items_expr = format; if (CaseEq(items_expr, PropertyFormat::c_8Bits)) { auto& data8 = *items.data8; + size_t data8_len = data8.size(); // data8 CHECK_EQ(static_cast<size_t>(num_items), data8.size()); @@ -5531,6 +5573,7 @@ } if (CaseEq(items_expr, PropertyFormat::c_16Bits)) { auto& data16 = *items.data16; + size_t data16_len = data16.size(); // data16 CHECK_EQ(static_cast<size_t>(num_items), data16.size()); @@ -5544,6 +5587,7 @@ } if (CaseEq(items_expr, PropertyFormat::c_32Bits)) { auto& data32 = *items.data32; + size_t data32_len = data32.size(); // data32 CHECK_EQ(static_cast<size_t>(num_items), data32.size()); @@ -5734,6 +5778,7 @@ if (CaseEq(items_expr, Input::PropertyFormat::c_8Bits)) { items.data8.emplace(); auto& data8 = *items.data8; + size_t data8_len = data8.size(); // data8 data8.resize(num_items); @@ -5748,6 +5793,7 @@ if (CaseEq(items_expr, Input::PropertyFormat::c_16Bits)) { items.data16.emplace(); auto& data16 = *items.data16; + size_t data16_len = data16.size(); // data16 data16.resize(num_items); @@ -5762,6 +5808,7 @@ if (CaseEq(items_expr, Input::PropertyFormat::c_32Bits)) { items.data32.emplace(); auto& data32 = *items.data32; + size_t data32_len = data32.size(); // data32 data32.resize(num_items); @@ -6518,6 +6565,7 @@ auto& sequence = (*reply).sequence; uint16_t num_infos{}; auto& infos = (*reply).infos; + size_t infos_len = infos.size(); // response_type uint8_t response_type; @@ -6552,6 +6600,7 @@ auto& enabled = infos_elem.enabled; auto& name = infos_elem.name; auto& classes = infos_elem.classes; + size_t classes_len = classes.size(); // deviceid Read(&deviceid, &buf); @@ -6613,6 +6662,7 @@ data.key.emplace(); uint16_t num_keys{}; auto& keys = (*data.key).keys; + size_t keys_len = keys.size(); // num_keys Read(&num_keys, &buf); @@ -6628,7 +6678,9 @@ data.button.emplace(); uint16_t num_buttons{}; auto& state = (*data.button).state; + size_t state_len = state.size(); auto& labels = (*data.button).labels; + size_t labels_len = labels.size(); // num_buttons Read(&num_buttons, &buf); @@ -7250,6 +7302,7 @@ auto& sequence = (*reply).sequence; uint16_t num_modifiers{}; auto& modifiers = (*reply).modifiers; + size_t modifiers_len = modifiers.size(); // response_type uint8_t response_type; @@ -7417,6 +7470,7 @@ auto& sequence = (*reply).sequence; uint16_t num_properties{}; auto& properties = (*reply).properties; + size_t properties_len = properties.size(); // response_type uint8_t response_type; @@ -7507,6 +7561,7 @@ auto items_expr = format; if (CaseEq(items_expr, PropertyFormat::c_8Bits)) { auto& data8 = *items.data8; + size_t data8_len = data8.size(); // data8 CHECK_EQ(static_cast<size_t>(num_items), data8.size()); @@ -7520,6 +7575,7 @@ } if (CaseEq(items_expr, PropertyFormat::c_16Bits)) { auto& data16 = *items.data16; + size_t data16_len = data16.size(); // data16 CHECK_EQ(static_cast<size_t>(num_items), data16.size()); @@ -7533,6 +7589,7 @@ } if (CaseEq(items_expr, PropertyFormat::c_32Bits)) { auto& data32 = *items.data32; + size_t data32_len = data32.size(); // data32 CHECK_EQ(static_cast<size_t>(num_items), data32.size()); @@ -7715,6 +7772,7 @@ if (CaseEq(items_expr, Input::PropertyFormat::c_8Bits)) { items.data8.emplace(); auto& data8 = *items.data8; + size_t data8_len = data8.size(); // data8 data8.resize(num_items); @@ -7729,6 +7787,7 @@ if (CaseEq(items_expr, Input::PropertyFormat::c_16Bits)) { items.data16.emplace(); auto& data16 = *items.data16; + size_t data16_len = data16.size(); // data16 data16.resize(num_items); @@ -7743,6 +7802,7 @@ if (CaseEq(items_expr, Input::PropertyFormat::c_32Bits)) { items.data32.emplace(); auto& data32 = *items.data32; + size_t data32_len = data32.size(); // data32 data32.resize(num_items); @@ -7803,6 +7863,7 @@ auto& sequence = (*reply).sequence; uint16_t num_masks{}; auto& masks = (*reply).masks; + size_t masks_len = masks.size(); // response_type uint8_t response_type;
diff --git a/ui/gfx/x/generated_protos/xinput.h b/ui/gfx/x/generated_protos/xinput.h index eb8c7822..0a32b76e 100644 --- a/ui/gfx/x/generated_protos/xinput.h +++ b/ui/gfx/x/generated_protos/xinput.h
@@ -33,10 +33,10 @@ #include "base/component_export.h" #include "base/files/scoped_file.h" +#include "base/memory/ref_counted_memory.h" #include "base/memory/scoped_refptr.h" #include "ui/gfx/x/error.h" #include "ui/gfx/x/ref_counted_fd.h" -#include "ui/gfx/x/xproto_types.h" #include "xfixes.h" #include "xproto.h"
diff --git a/ui/gfx/x/generated_protos/xkb.cc b/ui/gfx/x/generated_protos/xkb.cc index 0fd5c93..04c2d9c 100644 --- a/ui/gfx/x/generated_protos/xkb.cc +++ b/ui/gfx/x/generated_protos/xkb.cc
@@ -787,6 +787,7 @@ auto& mods = (*event_).mods; auto& group = (*event_).group; auto& message = (*event_).message; + size_t message_len = message.size(); // response_type uint8_t response_type; @@ -1699,6 +1700,7 @@ auto& accessXTimeoutValues = (*reply).accessXTimeoutValues; auto& enabledControls = (*reply).enabledControls; auto& perKeyRepeat = (*reply).perKeyRepeat; + size_t perKeyRepeat_len = perKeyRepeat.size(); // response_type uint8_t response_type; @@ -2346,6 +2348,7 @@ if (CaseAnd(map_expr, Xkb::MapPart::KeyTypes)) { map.types_rtrn.emplace(); auto& types_rtrn = *map.types_rtrn; + size_t types_rtrn_len = types_rtrn.size(); // types_rtrn types_rtrn.resize(nTypes); @@ -2359,7 +2362,9 @@ uint8_t nMapEntries{}; auto& hasPreserve = types_rtrn_elem.hasPreserve; auto& map = types_rtrn_elem.map; + size_t map_len = map.size(); auto& preserve = types_rtrn_elem.preserve; + size_t preserve_len = preserve.size(); // mods_mask uint8_t tmp99; @@ -2456,6 +2461,7 @@ if (CaseAnd(map_expr, Xkb::MapPart::KeySyms)) { map.syms_rtrn.emplace(); auto& syms_rtrn = *map.syms_rtrn; + size_t syms_rtrn_len = syms_rtrn.size(); // syms_rtrn syms_rtrn.resize(nKeySyms); @@ -2463,10 +2469,12 @@ // syms_rtrn_elem { auto& kt_index = syms_rtrn_elem.kt_index; + size_t kt_index_len = kt_index.size(); auto& groupInfo = syms_rtrn_elem.groupInfo; auto& width = syms_rtrn_elem.width; uint16_t nSyms{}; auto& syms = syms_rtrn_elem.syms; + size_t syms_len = syms.size(); // kt_index for (auto& kt_index_elem : kt_index) { @@ -2496,7 +2504,9 @@ map.acts_rtrn_count.emplace(); map.acts_rtrn_acts.emplace(); auto& acts_rtrn_count = *map.acts_rtrn_count; + size_t acts_rtrn_count_len = acts_rtrn_count.size(); auto& acts_rtrn_acts = *map.acts_rtrn_acts; + size_t acts_rtrn_acts_len = acts_rtrn_acts.size(); // acts_rtrn_count acts_rtrn_count.resize(nKeyActions); @@ -2518,6 +2528,7 @@ if (CaseAnd(map_expr, Xkb::MapPart::KeyBehaviors)) { map.behaviors_rtrn.emplace(); auto& behaviors_rtrn = *map.behaviors_rtrn; + size_t behaviors_rtrn_len = behaviors_rtrn.size(); // behaviors_rtrn behaviors_rtrn.resize(totalKeyBehaviors); @@ -2541,6 +2552,7 @@ if (CaseAnd(map_expr, Xkb::MapPart::VirtualMods)) { map.vmods_rtrn.emplace(); auto& vmods_rtrn = *map.vmods_rtrn; + size_t vmods_rtrn_len = vmods_rtrn.size(); // vmods_rtrn vmods_rtrn.resize(PopCount(virtualMods)); @@ -2557,6 +2569,7 @@ if (CaseAnd(map_expr, Xkb::MapPart::ExplicitComponents)) { map.explicit_rtrn.emplace(); auto& explicit_rtrn = *map.explicit_rtrn; + size_t explicit_rtrn_len = explicit_rtrn.size(); // explicit_rtrn explicit_rtrn.resize(totalKeyExplicit); @@ -2582,6 +2595,7 @@ if (CaseAnd(map_expr, Xkb::MapPart::ModifierMap)) { map.modmap_rtrn.emplace(); auto& modmap_rtrn = *map.modmap_rtrn; + size_t modmap_rtrn_len = modmap_rtrn.size(); // modmap_rtrn modmap_rtrn.resize(totalModMapKeys); @@ -2607,6 +2621,7 @@ if (CaseAnd(map_expr, Xkb::MapPart::VirtualModMap)) { map.vmodmap_rtrn.emplace(); auto& vmodmap_rtrn = *map.vmodmap_rtrn; + size_t vmodmap_rtrn_len = vmodmap_rtrn.size(); // vmodmap_rtrn vmodmap_rtrn.resize(totalVModMapKeys); @@ -2781,6 +2796,7 @@ auto values_expr = present; if (CaseAnd(values_expr, MapPart::KeyTypes)) { auto& types = *values.types; + size_t types_len = types.size(); // types CHECK_EQ(static_cast<size_t>(nTypes), types.size()); @@ -2794,7 +2810,9 @@ uint8_t nMapEntries{}; auto& preserve = types_elem.preserve; auto& entries = types_elem.entries; + size_t entries_len = entries.size(); auto& preserve_entries = types_elem.preserve_entries; + size_t preserve_entries_len = preserve_entries.size(); // mask uint8_t tmp115; @@ -2877,6 +2895,7 @@ } if (CaseAnd(values_expr, MapPart::KeySyms)) { auto& syms = *values.syms; + size_t syms_len = syms.size(); // syms CHECK_EQ(static_cast<size_t>(nKeySyms), syms.size()); @@ -2884,10 +2903,12 @@ // syms_elem { auto& kt_index = syms_elem.kt_index; + size_t kt_index_len = kt_index.size(); auto& groupInfo = syms_elem.groupInfo; auto& width = syms_elem.width; uint16_t nSyms{}; auto& syms = syms_elem.syms; + size_t syms_len = syms.size(); // kt_index for (auto& kt_index_elem : kt_index) { @@ -2916,7 +2937,9 @@ } if (CaseAnd(values_expr, MapPart::KeyActions)) { auto& actionsCount = *values.actionsCount; + size_t actionsCount_len = actionsCount.size(); auto& actions = *values.actions; + size_t actions_len = actions.size(); // actionsCount CHECK_EQ(static_cast<size_t>(nKeyActions), actionsCount.size()); @@ -2937,6 +2960,7 @@ } if (CaseAnd(values_expr, MapPart::KeyBehaviors)) { auto& behaviors = *values.behaviors; + size_t behaviors_len = behaviors.size(); // behaviors CHECK_EQ(static_cast<size_t>(totalKeyBehaviors), behaviors.size()); @@ -2959,6 +2983,7 @@ } if (CaseAnd(values_expr, MapPart::VirtualMods)) { auto& vmods = *values.vmods; + size_t vmods_len = vmods.size(); // vmods CHECK_EQ(static_cast<size_t>(PopCount(virtualMods)), vmods.size()); @@ -2972,6 +2997,7 @@ } if (CaseAnd(values_expr, MapPart::ExplicitComponents)) { auto& c_explicit = *values.c_explicit; + size_t c_explicit_len = c_explicit.size(); // c_explicit CHECK_EQ(static_cast<size_t>(totalKeyExplicit), c_explicit.size()); @@ -2993,6 +3019,7 @@ } if (CaseAnd(values_expr, MapPart::ModifierMap)) { auto& modmap = *values.modmap; + size_t modmap_len = modmap.size(); // modmap CHECK_EQ(static_cast<size_t>(totalModMapKeys), modmap.size()); @@ -3014,6 +3041,7 @@ } if (CaseAnd(values_expr, MapPart::VirtualModMap)) { auto& vmodmap = *values.vmodmap; + size_t vmodmap_len = vmodmap.size(); // vmodmap CHECK_EQ(static_cast<size_t>(totalVModMapKeys), vmodmap.size()); @@ -3184,7 +3212,9 @@ uint16_t nSIRtrn{}; auto& nTotalSI = (*reply).nTotalSI; auto& si_rtrn = (*reply).si_rtrn; + size_t si_rtrn_len = si_rtrn.size(); auto& group_rtrn = (*reply).group_rtrn; + size_t group_rtrn_len = group_rtrn.size(); // response_type uint8_t response_type; @@ -3255,6 +3285,7 @@ { auto& type = action.type; auto& data = action.data; + size_t data_len = data.size(); // type uint8_t tmp129; @@ -3393,6 +3424,7 @@ { auto& type = action.type; auto& data = action.data; + size_t data_len = data.size(); // type uint8_t tmp136; @@ -3582,6 +3614,7 @@ auto& realIndicators = (*reply).realIndicators; auto& nIndicators = (*reply).nIndicators; auto& maps = (*reply).maps; + size_t maps_len = maps.size(); // response_type uint8_t response_type; @@ -4232,6 +4265,7 @@ if (CaseAnd(valueList_expr, Xkb::NameDetail::KeyTypeNames)) { valueList.typeNames.emplace(); auto& typeNames = *valueList.typeNames; + size_t typeNames_len = typeNames.size(); // typeNames typeNames.resize(nTypes); @@ -4244,7 +4278,9 @@ valueList.nLevelsPerType.emplace(); valueList.ktLevelNames.emplace(); auto& nLevelsPerType = *valueList.nLevelsPerType; + size_t nLevelsPerType_len = nLevelsPerType.size(); auto& ktLevelNames = *valueList.ktLevelNames; + size_t ktLevelNames_len = ktLevelNames.size(); // nLevelsPerType nLevelsPerType.resize(nTypes); @@ -4268,6 +4304,7 @@ if (CaseAnd(valueList_expr, Xkb::NameDetail::IndicatorNames)) { valueList.indicatorNames.emplace(); auto& indicatorNames = *valueList.indicatorNames; + size_t indicatorNames_len = indicatorNames.size(); // indicatorNames indicatorNames.resize(PopCount(indicators)); @@ -4279,6 +4316,7 @@ if (CaseAnd(valueList_expr, Xkb::NameDetail::VirtualModNames)) { valueList.virtualModNames.emplace(); auto& virtualModNames = *valueList.virtualModNames; + size_t virtualModNames_len = virtualModNames.size(); // virtualModNames virtualModNames.resize(PopCount(virtualMods)); @@ -4290,6 +4328,7 @@ if (CaseAnd(valueList_expr, Xkb::NameDetail::GroupNames)) { valueList.groups.emplace(); auto& groups = *valueList.groups; + size_t groups_len = groups.size(); // groups groups.resize(PopCount(groupNames)); @@ -4301,6 +4340,7 @@ if (CaseAnd(valueList_expr, Xkb::NameDetail::KeyNames)) { valueList.keyNames.emplace(); auto& keyNames = *valueList.keyNames; + size_t keyNames_len = keyNames.size(); // keyNames keyNames.resize(nKeys); @@ -4308,6 +4348,7 @@ // keyNames_elem { auto& name = keyNames_elem.name; + size_t name_len = name.size(); // name for (auto& name_elem : name) { @@ -4320,6 +4361,7 @@ if (CaseAnd(valueList_expr, Xkb::NameDetail::KeyAliases)) { valueList.keyAliases.emplace(); auto& keyAliases = *valueList.keyAliases; + size_t keyAliases_len = keyAliases.size(); // keyAliases keyAliases.resize(nKeyAliases); @@ -4327,7 +4369,9 @@ // keyAliases_elem { auto& real = keyAliases_elem.real; + size_t real_len = real.size(); auto& alias = keyAliases_elem.alias; + size_t alias_len = alias.size(); // real for (auto& real_elem : real) { @@ -4346,6 +4390,7 @@ if (CaseAnd(valueList_expr, Xkb::NameDetail::RGNames)) { valueList.radioGroupNames.emplace(); auto& radioGroupNames = *valueList.radioGroupNames; + size_t radioGroupNames_len = radioGroupNames.size(); // radioGroupNames radioGroupNames.resize(nRadioGroups); @@ -4509,6 +4554,7 @@ } if (CaseAnd(values_expr, NameDetail::KeyTypeNames)) { auto& typeNames = *values.typeNames; + size_t typeNames_len = typeNames.size(); // typeNames CHECK_EQ(static_cast<size_t>(nTypes), typeNames.size()); @@ -4519,7 +4565,9 @@ } if (CaseAnd(values_expr, NameDetail::KTLevelNames)) { auto& nLevelsPerType = *values.nLevelsPerType; + size_t nLevelsPerType_len = nLevelsPerType.size(); auto& ktLevelNames = *values.ktLevelNames; + size_t ktLevelNames_len = ktLevelNames.size(); // nLevelsPerType CHECK_EQ(static_cast<size_t>(nTypes), nLevelsPerType.size()); @@ -4542,6 +4590,7 @@ } if (CaseAnd(values_expr, NameDetail::IndicatorNames)) { auto& indicatorNames = *values.indicatorNames; + size_t indicatorNames_len = indicatorNames.size(); // indicatorNames CHECK_EQ(static_cast<size_t>(PopCount(indicators)), indicatorNames.size()); @@ -4552,6 +4601,7 @@ } if (CaseAnd(values_expr, NameDetail::VirtualModNames)) { auto& virtualModNames = *values.virtualModNames; + size_t virtualModNames_len = virtualModNames.size(); // virtualModNames CHECK_EQ(static_cast<size_t>(PopCount(virtualMods)), @@ -4563,6 +4613,7 @@ } if (CaseAnd(values_expr, NameDetail::GroupNames)) { auto& groups = *values.groups; + size_t groups_len = groups.size(); // groups CHECK_EQ(static_cast<size_t>(PopCount(groupNames)), groups.size()); @@ -4573,6 +4624,7 @@ } if (CaseAnd(values_expr, NameDetail::KeyNames)) { auto& keyNames = *values.keyNames; + size_t keyNames_len = keyNames.size(); // keyNames CHECK_EQ(static_cast<size_t>(nKeys), keyNames.size()); @@ -4580,6 +4632,7 @@ // keyNames_elem { auto& name = keyNames_elem.name; + size_t name_len = name.size(); // name for (auto& name_elem : name) { @@ -4591,6 +4644,7 @@ } if (CaseAnd(values_expr, NameDetail::KeyAliases)) { auto& keyAliases = *values.keyAliases; + size_t keyAliases_len = keyAliases.size(); // keyAliases CHECK_EQ(static_cast<size_t>(nKeyAliases), keyAliases.size()); @@ -4598,7 +4652,9 @@ // keyAliases_elem { auto& real = keyAliases_elem.real; + size_t real_len = real.size(); auto& alias = keyAliases_elem.alias; + size_t alias_len = alias.size(); // real for (auto& real_elem : real) { @@ -4616,6 +4672,7 @@ } if (CaseAnd(values_expr, NameDetail::RGNames)) { auto& radioGroupNames = *values.radioGroupNames; + size_t radioGroupNames_len = radioGroupNames.size(); // radioGroupNames CHECK_EQ(static_cast<size_t>(nRadioGroups), radioGroupNames.size()); @@ -4877,11 +4934,17 @@ uint16_t nGeometries{}; auto& extra = (*reply).extra; auto& keymaps = (*reply).keymaps; + size_t keymaps_len = keymaps.size(); auto& keycodes = (*reply).keycodes; + size_t keycodes_len = keycodes.size(); auto& types = (*reply).types; + size_t types_len = types.size(); auto& compatMaps = (*reply).compatMaps; + size_t compatMaps_len = compatMaps.size(); auto& symbols = (*reply).symbols; + size_t symbols_len = symbols.size(); auto& geometries = (*reply).geometries; + size_t geometries_len = geometries.size(); // response_type uint8_t response_type; @@ -4929,6 +4992,7 @@ auto& flags = keymaps_elem.flags; uint16_t length{}; auto& string = keymaps_elem.string; + size_t string_len = string.size(); // flags Read(&flags, &buf); @@ -4956,6 +5020,7 @@ auto& flags = keycodes_elem.flags; uint16_t length{}; auto& string = keycodes_elem.string; + size_t string_len = string.size(); // flags Read(&flags, &buf); @@ -4983,6 +5048,7 @@ auto& flags = types_elem.flags; uint16_t length{}; auto& string = types_elem.string; + size_t string_len = string.size(); // flags Read(&flags, &buf); @@ -5010,6 +5076,7 @@ auto& flags = compatMaps_elem.flags; uint16_t length{}; auto& string = compatMaps_elem.string; + size_t string_len = string.size(); // flags Read(&flags, &buf); @@ -5037,6 +5104,7 @@ auto& flags = symbols_elem.flags; uint16_t length{}; auto& string = symbols_elem.string; + size_t string_len = string.size(); // flags Read(&flags, &buf); @@ -5064,6 +5132,7 @@ auto& flags = geometries_elem.flags; uint16_t length{}; auto& string = geometries_elem.string; + size_t string_len = string.size(); // flags Read(&flags, &buf); @@ -5341,6 +5410,7 @@ if (CaseAnd(map_expr, Xkb::MapPart::KeyTypes)) { map.types_rtrn.emplace(); auto& types_rtrn = *map.types_rtrn; + size_t types_rtrn_len = types_rtrn.size(); // types_rtrn types_rtrn.resize(nTypes); @@ -5354,7 +5424,9 @@ uint8_t nMapEntries{}; auto& hasPreserve = types_rtrn_elem.hasPreserve; auto& map = types_rtrn_elem.map; + size_t map_len = map.size(); auto& preserve = types_rtrn_elem.preserve; + size_t preserve_len = preserve.size(); // mods_mask uint8_t tmp197; @@ -5451,6 +5523,7 @@ if (CaseAnd(map_expr, Xkb::MapPart::KeySyms)) { map.syms_rtrn.emplace(); auto& syms_rtrn = *map.syms_rtrn; + size_t syms_rtrn_len = syms_rtrn.size(); // syms_rtrn syms_rtrn.resize(nKeySyms); @@ -5458,10 +5531,12 @@ // syms_rtrn_elem { auto& kt_index = syms_rtrn_elem.kt_index; + size_t kt_index_len = kt_index.size(); auto& groupInfo = syms_rtrn_elem.groupInfo; auto& width = syms_rtrn_elem.width; uint16_t nSyms{}; auto& syms = syms_rtrn_elem.syms; + size_t syms_len = syms.size(); // kt_index for (auto& kt_index_elem : kt_index) { @@ -5491,7 +5566,9 @@ map.acts_rtrn_count.emplace(); map.acts_rtrn_acts.emplace(); auto& acts_rtrn_count = *map.acts_rtrn_count; + size_t acts_rtrn_count_len = acts_rtrn_count.size(); auto& acts_rtrn_acts = *map.acts_rtrn_acts; + size_t acts_rtrn_acts_len = acts_rtrn_acts.size(); // acts_rtrn_count acts_rtrn_count.resize(nKeyActions); @@ -5513,6 +5590,7 @@ if (CaseAnd(map_expr, Xkb::MapPart::KeyBehaviors)) { map.behaviors_rtrn.emplace(); auto& behaviors_rtrn = *map.behaviors_rtrn; + size_t behaviors_rtrn_len = behaviors_rtrn.size(); // behaviors_rtrn behaviors_rtrn.resize(totalKeyBehaviors); @@ -5536,6 +5614,7 @@ if (CaseAnd(map_expr, Xkb::MapPart::VirtualMods)) { map.vmods_rtrn.emplace(); auto& vmods_rtrn = *map.vmods_rtrn; + size_t vmods_rtrn_len = vmods_rtrn.size(); // vmods_rtrn vmods_rtrn.resize(PopCount(virtualMods)); @@ -5552,6 +5631,7 @@ if (CaseAnd(map_expr, Xkb::MapPart::ExplicitComponents)) { map.explicit_rtrn.emplace(); auto& explicit_rtrn = *map.explicit_rtrn; + size_t explicit_rtrn_len = explicit_rtrn.size(); // explicit_rtrn explicit_rtrn.resize(totalKeyExplicit); @@ -5577,6 +5657,7 @@ if (CaseAnd(map_expr, Xkb::MapPart::ModifierMap)) { map.modmap_rtrn.emplace(); auto& modmap_rtrn = *map.modmap_rtrn; + size_t modmap_rtrn_len = modmap_rtrn.size(); // modmap_rtrn modmap_rtrn.resize(totalModMapKeys); @@ -5602,6 +5683,7 @@ if (CaseAnd(map_expr, Xkb::MapPart::VirtualModMap)) { map.vmodmap_rtrn.emplace(); auto& vmodmap_rtrn = *map.vmodmap_rtrn; + size_t vmodmap_rtrn_len = vmodmap_rtrn.size(); // vmodmap_rtrn vmodmap_rtrn.resize(totalVModMapKeys); @@ -5636,7 +5718,9 @@ uint16_t nSIRtrn{}; auto& nTotalSI = (*replies.compat_map).nTotalSI; auto& si_rtrn = (*replies.compat_map).si_rtrn; + size_t si_rtrn_len = si_rtrn.size(); auto& group_rtrn = (*replies.compat_map).group_rtrn; + size_t group_rtrn_len = group_rtrn.size(); // compatmap_type Read(&compatmap_type, &buf); @@ -5705,6 +5789,7 @@ { auto& type = action.type; auto& data = action.data; + size_t data_len = data.size(); // type uint8_t tmp213; @@ -5757,6 +5842,7 @@ auto& realIndicators = (*replies.indicator_maps).realIndicators; uint8_t nIndicators{}; auto& maps = (*replies.indicator_maps).maps; + size_t maps_len = maps.size(); // indicatormap_type Read(&indicatormap_type, &buf); @@ -5963,6 +6049,7 @@ if (CaseAnd(valueList_expr, Xkb::NameDetail::KeyTypeNames)) { valueList.typeNames.emplace(); auto& typeNames = *valueList.typeNames; + size_t typeNames_len = typeNames.size(); // typeNames typeNames.resize(nTypes); @@ -5975,7 +6062,9 @@ valueList.nLevelsPerType.emplace(); valueList.ktLevelNames.emplace(); auto& nLevelsPerType = *valueList.nLevelsPerType; + size_t nLevelsPerType_len = nLevelsPerType.size(); auto& ktLevelNames = *valueList.ktLevelNames; + size_t ktLevelNames_len = ktLevelNames.size(); // nLevelsPerType nLevelsPerType.resize(nTypes); @@ -5999,6 +6088,7 @@ if (CaseAnd(valueList_expr, Xkb::NameDetail::IndicatorNames)) { valueList.indicatorNames.emplace(); auto& indicatorNames = *valueList.indicatorNames; + size_t indicatorNames_len = indicatorNames.size(); // indicatorNames indicatorNames.resize(PopCount(indicators)); @@ -6010,6 +6100,7 @@ if (CaseAnd(valueList_expr, Xkb::NameDetail::VirtualModNames)) { valueList.virtualModNames.emplace(); auto& virtualModNames = *valueList.virtualModNames; + size_t virtualModNames_len = virtualModNames.size(); // virtualModNames virtualModNames.resize(PopCount(virtualMods)); @@ -6021,6 +6112,7 @@ if (CaseAnd(valueList_expr, Xkb::NameDetail::GroupNames)) { valueList.groups.emplace(); auto& groups = *valueList.groups; + size_t groups_len = groups.size(); // groups groups.resize(PopCount(groupNames)); @@ -6032,6 +6124,7 @@ if (CaseAnd(valueList_expr, Xkb::NameDetail::KeyNames)) { valueList.keyNames.emplace(); auto& keyNames = *valueList.keyNames; + size_t keyNames_len = keyNames.size(); // keyNames keyNames.resize(nKeys); @@ -6039,6 +6132,7 @@ // keyNames_elem { auto& name = keyNames_elem.name; + size_t name_len = name.size(); // name for (auto& name_elem : name) { @@ -6051,6 +6145,7 @@ if (CaseAnd(valueList_expr, Xkb::NameDetail::KeyAliases)) { valueList.keyAliases.emplace(); auto& keyAliases = *valueList.keyAliases; + size_t keyAliases_len = keyAliases.size(); // keyAliases keyAliases.resize(nKeyAliases); @@ -6058,7 +6153,9 @@ // keyAliases_elem { auto& real = keyAliases_elem.real; + size_t real_len = real.size(); auto& alias = keyAliases_elem.alias; + size_t alias_len = alias.size(); // real for (auto& real_elem : real) { @@ -6077,6 +6174,7 @@ if (CaseAnd(valueList_expr, Xkb::NameDetail::RGNames)) { valueList.radioGroupNames.emplace(); auto& radioGroupNames = *valueList.radioGroupNames; + size_t radioGroupNames_len = radioGroupNames.size(); // radioGroupNames radioGroupNames.resize(nRadioGroups); @@ -6161,7 +6259,9 @@ { uint16_t length{}; auto& string = labelFont.string; + size_t string_len = string.size(); auto& alignment_pad = labelFont.alignment_pad; + size_t alignment_pad_len = alignment_pad ? alignment_pad->size() : 0; // length Read(&length, &buf); @@ -6281,8 +6381,11 @@ auto& devType = (*reply).devType; uint16_t nameLen{}; auto& name = (*reply).name; + size_t name_len = name.size(); auto& btnActions = (*reply).btnActions; + size_t btnActions_len = btnActions.size(); auto& leds = (*reply).leds; + size_t leds_len = leds.size(); // response_type uint8_t response_type; @@ -6378,7 +6481,9 @@ auto& physIndicators = leds_elem.physIndicators; auto& state = leds_elem.state; auto& names = leds_elem.names; + size_t names_len = names.size(); auto& maps = leds_elem.maps; + size_t maps_len = maps.size(); // ledClass uint16_t tmp234; @@ -6537,7 +6642,9 @@ auto& physIndicators = leds_elem.physIndicators; auto& state = leds_elem.state; auto& names = leds_elem.names; + size_t names_len = names.size(); auto& maps = leds_elem.maps; + size_t maps_len = maps.size(); // ledClass uint16_t tmp244;
diff --git a/ui/gfx/x/generated_protos/xkb.h b/ui/gfx/x/generated_protos/xkb.h index c18d756..b1bb8a5 100644 --- a/ui/gfx/x/generated_protos/xkb.h +++ b/ui/gfx/x/generated_protos/xkb.h
@@ -33,10 +33,10 @@ #include "base/component_export.h" #include "base/files/scoped_file.h" +#include "base/memory/ref_counted_memory.h" #include "base/memory/scoped_refptr.h" #include "ui/gfx/x/error.h" #include "ui/gfx/x/ref_counted_fd.h" -#include "ui/gfx/x/xproto_types.h" #include "xproto.h" namespace x11 { @@ -557,7 +557,7 @@ } std::string string{}; - scoped_refptr<UnsizedRefCountedMemory> alignment_pad{}; + scoped_refptr<base::RefCountedMemory> alignment_pad{}; }; struct KTMapEntry {
diff --git a/ui/gfx/x/generated_protos/xproto.cc b/ui/gfx/x/generated_protos/xproto.cc index c3866c8..08f573da 100644 --- a/ui/gfx/x/generated_protos/xproto.cc +++ b/ui/gfx/x/generated_protos/xproto.cc
@@ -820,6 +820,7 @@ auto& buf = *buffer; auto& keys = (*event_).keys; + size_t keys_len = keys.size(); // response_type uint8_t response_type; @@ -4125,7 +4126,7 @@ buf.Write(&data_len); // data - buf.AppendSizedBuffer(data); + buf.AppendBuffer(data, ((data_len) * (format)) / (8)); Align(&buf, 4); @@ -5694,6 +5695,7 @@ auto& sequence = (*reply).sequence; auto& keys = (*reply).keys; + size_t keys_len = keys.size(); // response_type uint8_t response_type; @@ -8242,7 +8244,7 @@ Pad(&buf, 2); // data - buf.AppendSizedBuffer(data); + buf.AppendBuffer(data, data_len); Align(&buf, 4); @@ -8336,6 +8338,7 @@ auto& sequence = (*reply).sequence; auto& visual = (*reply).visual; auto& data = (*reply).data; + size_t data_len = data ? data->size() : 0; // response_type uint8_t response_type; @@ -10276,6 +10279,7 @@ auto& keysyms_per_keycode = (*reply).keysyms_per_keycode; auto& sequence = (*reply).sequence; auto& keysyms = (*reply).keysyms; + size_t keysyms_len = keysyms.size(); // response_type uint8_t response_type; @@ -10464,6 +10468,7 @@ auto& bell_pitch = (*reply).bell_pitch; auto& bell_duration = (*reply).bell_duration; auto& auto_repeats = (*reply).auto_repeats; + size_t auto_repeats_len = auto_repeats.size(); // response_type uint8_t response_type; @@ -11374,6 +11379,7 @@ auto& keycodes_per_modifier = (*reply).keycodes_per_modifier; auto& sequence = (*reply).sequence; auto& keycodes = (*reply).keycodes; + size_t keycodes_len = keycodes.size(); // response_type uint8_t response_type;
diff --git a/ui/gfx/x/generated_protos/xproto.h b/ui/gfx/x/generated_protos/xproto.h index f820adbd3..7722813 100644 --- a/ui/gfx/x/generated_protos/xproto.h +++ b/ui/gfx/x/generated_protos/xproto.h
@@ -33,10 +33,10 @@ #include "base/component_export.h" #include "base/files/scoped_file.h" +#include "base/memory/ref_counted_memory.h" #include "base/memory/scoped_refptr.h" #include "ui/gfx/x/error.h" #include "ui/gfx/x/ref_counted_fd.h" -#include "ui/gfx/x/xproto_types.h" namespace x11 { @@ -1696,7 +1696,7 @@ Atom type{}; uint32_t bytes_after{}; uint32_t value_len{}; - scoped_refptr<UnsizedRefCountedMemory> value{}; + scoped_refptr<base::RefCountedMemory> value{}; }; using GetPropertyResponse = Response<GetPropertyReply>; @@ -2298,7 +2298,7 @@ uint8_t depth{}; uint16_t sequence{}; VisualId visual{}; - scoped_refptr<UnsizedRefCountedMemory> data{}; + scoped_refptr<base::RefCountedMemory> data{}; }; using GetImageResponse = Response<GetImageReply>;
diff --git a/ui/gfx/x/generated_protos/xtest.h b/ui/gfx/x/generated_protos/xtest.h index 178e9655..da67d78c 100644 --- a/ui/gfx/x/generated_protos/xtest.h +++ b/ui/gfx/x/generated_protos/xtest.h
@@ -33,10 +33,10 @@ #include "base/component_export.h" #include "base/files/scoped_file.h" +#include "base/memory/ref_counted_memory.h" #include "base/memory/scoped_refptr.h" #include "ui/gfx/x/error.h" #include "ui/gfx/x/ref_counted_fd.h" -#include "ui/gfx/x/xproto_types.h" #include "xproto.h" namespace x11 {
diff --git a/ui/gfx/x/property_cache.h b/ui/gfx/x/property_cache.h index bcaa468..d9ec464 100644 --- a/ui/gfx/x/property_cache.h +++ b/ui/gfx/x/property_cache.h
@@ -53,7 +53,7 @@ if (size) { *size = response->value_len; } - return response->value->cast_to<T>(); + return response->value->front_as<T>(); } template <typename T>
diff --git a/ui/gfx/x/property_cache_unittest.cc b/ui/gfx/x/property_cache_unittest.cc index fefe1bc..bdd53893 100644 --- a/ui/gfx/x/property_cache_unittest.cc +++ b/ui/gfx/x/property_cache_unittest.cc
@@ -135,7 +135,7 @@ EXPECT_EQ(response->bytes_after, 0u); EXPECT_EQ(response->format, 32); EXPECT_EQ(response->type, Atom::CARDINAL); - EXPECT_EQ(*response->value->cast_to<uint32_t>(), 1234u); + EXPECT_EQ(*response->value->front_as<uint32_t>(), 1234u); EXPECT_EQ(response->value_len, 1u); // GetAs() should do the same thing as Get().
diff --git a/ui/gfx/x/window_cache.cc b/ui/gfx/x/window_cache.cc index 74f5d22..b374f6f 100644 --- a/ui/gfx/x/window_cache.cc +++ b/ui/gfx/x/window_cache.cc
@@ -384,7 +384,7 @@ } else if (atom == gtk_frame_extents_) { if (response->format == CHAR_BIT * sizeof(int32_t) && response->value_len == 4) { - const int32_t* frame_extents = response->value->cast_to<int32_t>(); + const int32_t* frame_extents = response->value->front_as<int32_t>(); info->gtk_frame_extents_px = gfx::Insets::TLBR(frame_extents[2], frame_extents[0], frame_extents[3], frame_extents[1]);
diff --git a/ui/gfx/x/xproto_internal.cc b/ui/gfx/x/xproto_internal.cc index c9eac9a62..b4668cba 100644 --- a/ui/gfx/x/xproto_internal.cc +++ b/ui/gfx/x/xproto_internal.cc
@@ -11,45 +11,49 @@ namespace x11 { MallocedRefCountedMemory::MallocedRefCountedMemory(void* data) - : data_(static_cast<uint8_t*>(data)) {} + : data_(reinterpret_cast<uint8_t*>(data)) {} + +const uint8_t* MallocedRefCountedMemory::front() const { + return data_.get(); +} + +size_t MallocedRefCountedMemory::size() const { + // There's no easy way to tell how large malloc'ed data is. + NOTREACHED(); + return 0; +} MallocedRefCountedMemory::~MallocedRefCountedMemory() = default; -void* MallocedRefCountedMemory::data() { - return data_.get(); -} - -const void* MallocedRefCountedMemory::data() const { - return data_.get(); -} - OffsetRefCountedMemory::OffsetRefCountedMemory( - scoped_refptr<UnsizedRefCountedMemory> memory, + scoped_refptr<base::RefCountedMemory> memory, size_t offset, size_t size) - : memory_(memory), offset_(offset) {} + : memory_(memory), offset_(offset), size_(size) {} + +const uint8_t* OffsetRefCountedMemory::front() const { + return memory_->front() + offset_; +} + +size_t OffsetRefCountedMemory::size() const { + return size_; +} OffsetRefCountedMemory::~OffsetRefCountedMemory() = default; -void* OffsetRefCountedMemory::data() { - return memory_->bytes() + offset_; +UnretainedRefCountedMemory::UnretainedRefCountedMemory(const void* data) + : data_(reinterpret_cast<const uint8_t*>(data)) {} + +const uint8_t* UnretainedRefCountedMemory::front() const { + return data_; } -const void* OffsetRefCountedMemory::data() const { - return memory_->bytes() + offset_; +size_t UnretainedRefCountedMemory::size() const { + // There's no easy way to tell how large malloc'ed data is. + NOTREACHED(); + return 0; } -UnretainedRefCountedMemory::UnretainedRefCountedMemory(void* data) - : data_(data) {} - UnretainedRefCountedMemory::~UnretainedRefCountedMemory() = default; -void* UnretainedRefCountedMemory::data() { - return data_; -} - -const void* UnretainedRefCountedMemory::data() const { - return data_; -} - } // namespace x11
diff --git a/ui/gfx/x/xproto_internal.h b/ui/gfx/x/xproto_internal.h index 56a7d695..8ee3813 100644 --- a/ui/gfx/x/xproto_internal.h +++ b/ui/gfx/x/xproto_internal.h
@@ -43,15 +43,19 @@ // Calls free() on the underlying data when the count drops to 0. class COMPONENT_EXPORT(X11) MallocedRefCountedMemory - : public UnsizedRefCountedMemory { + : public base::RefCountedMemory { public: explicit MallocedRefCountedMemory(void* data); MallocedRefCountedMemory(const MallocedRefCountedMemory&) = delete; MallocedRefCountedMemory& operator=(const MallocedRefCountedMemory&) = delete; + const uint8_t* front() const override; + + size_t size() const override; + private: - struct Deleter { + struct deleter { void operator()(uint8_t* data) { if (data) { free(data); @@ -60,64 +64,61 @@ }; ~MallocedRefCountedMemory() override; - // UnsizedRefCountedMemory: - void* data() LIFETIME_BOUND override; - const void* data() const LIFETIME_BOUND override; - - std::unique_ptr<uint8_t[], Deleter> data_; + std::unique_ptr<uint8_t, deleter> data_; }; // Wraps another RefCountedMemory, giving a view into it. Similar to // base::StringPiece, the data is some contiguous subarray, but unlike // StringPiece, a counted reference is kept on the underlying memory. class COMPONENT_EXPORT(X11) OffsetRefCountedMemory - : public UnsizedRefCountedMemory { + : public base::RefCountedMemory { public: - OffsetRefCountedMemory(scoped_refptr<UnsizedRefCountedMemory> memory, + OffsetRefCountedMemory(scoped_refptr<base::RefCountedMemory> memory, size_t offset, size_t size); OffsetRefCountedMemory(const OffsetRefCountedMemory&) = delete; OffsetRefCountedMemory& operator=(const OffsetRefCountedMemory&) = delete; + const uint8_t* front() const override; + + size_t size() const override; + private: ~OffsetRefCountedMemory() override; - // UnsizedRefCountedMemory: - void* data() LIFETIME_BOUND override; - const void* data() const LIFETIME_BOUND override; - - scoped_refptr<UnsizedRefCountedMemory> memory_; + scoped_refptr<base::RefCountedMemory> memory_; size_t offset_; + size_t size_; }; // Wraps a bare pointer and does not take any action when the reference count // reaches 0. This is used to wrap stack-alloctaed or persistent data so we can // pass those to Read/ReadEvent/ReadReply which expect RefCountedMemory. class COMPONENT_EXPORT(X11) UnretainedRefCountedMemory - : public UnsizedRefCountedMemory { + : public base::RefCountedMemory { public: - explicit UnretainedRefCountedMemory(void* data); + explicit UnretainedRefCountedMemory(const void* data); UnretainedRefCountedMemory(const UnretainedRefCountedMemory&) = delete; UnretainedRefCountedMemory& operator=(const UnretainedRefCountedMemory&) = delete; + const uint8_t* front() const override; + + size_t size() const override; + private: ~UnretainedRefCountedMemory() override; - // UnsizedRefCountedMemory: - void* data() LIFETIME_BOUND override; - const void* data() const LIFETIME_BOUND override; - - raw_ptr<void> data_; + const uint8_t* const data_; }; template <typename T> void Read(T* t, ReadBuffer* buf) { static_assert(std::is_trivially_copyable<T>::value, ""); detail::VerifyAlignment(t, buf->offset); - memcpy(t, buf->data->bytes() + buf->offset, sizeof(*t)); + memcpy(t, buf->data->data() + buf->offset, sizeof(*t)); buf->offset += sizeof(*t); }
diff --git a/ui/gfx/x/xproto_types.cc b/ui/gfx/x/xproto_types.cc index 3f4a1b3..5cdc104f 100644 --- a/ui/gfx/x/xproto_types.cc +++ b/ui/gfx/x/xproto_types.cc
@@ -25,34 +25,7 @@ } // namespace -ThrowAwaySizeRefCountedMemory::ThrowAwaySizeRefCountedMemory( - std::vector<uint8_t> data) - : data_(std::move(data)) {} - -ThrowAwaySizeRefCountedMemory::~ThrowAwaySizeRefCountedMemory() = default; - -void* ThrowAwaySizeRefCountedMemory::data() { - return data_.data(); -} - -const void* ThrowAwaySizeRefCountedMemory::data() const { - return data_.data(); -} - -SizedRefCountedMemory::SizedRefCountedMemory( - scoped_refptr<UnsizedRefCountedMemory> mem, - size_t size) - : mem_(std::move(mem)), size_(size) {} - -SizedRefCountedMemory::~SizedRefCountedMemory() = default; - -base::span<const uint8_t> SizedRefCountedMemory::AsSpan() const { - // SAFETY: This relies on the constructor being called with a valid buffer - // and size pair. - return UNSAFE_BUFFERS(base::span(mem_->bytes(), size_)); -} - -ReadBuffer::ReadBuffer(scoped_refptr<UnsizedRefCountedMemory> data, +ReadBuffer::ReadBuffer(scoped_refptr<base::RefCountedMemory> data, bool setup_message) : data(data) { // X connection setup uses a special reply without the standard header, see: @@ -61,7 +34,7 @@ if (setup_message) return; - const ReplyHeader* reply_header = data->cast_to<const ReplyHeader>(); + const auto* reply_header = reinterpret_cast<const ReplyHeader*>(data->data()); // Only replies can have FDs, not events or errors. if (reply_header->response_type == kResponseTypeReply) { @@ -70,7 +43,7 @@ size_t reply_length = 32 + 4 * reply_header->length; // libxcb stores the fds after the reply data. - fds = reinterpret_cast<const int*>(data->bytes() + reply_length); + fds = reinterpret_cast<const int*>(data->data() + reply_length); } } @@ -78,7 +51,7 @@ ReadBuffer::~ReadBuffer() = default; -scoped_refptr<UnsizedRefCountedMemory> ReadBuffer::ReadAndAdvance( +scoped_refptr<base::RefCountedMemory> ReadBuffer::ReadAndAdvance( size_t length) { auto buf = base::MakeRefCounted<OffsetRefCountedMemory>(data, offset, length); offset += length; @@ -95,41 +68,21 @@ WriteBuffer::~WriteBuffer() = default; -void WriteBuffer::AppendBuffer(scoped_refptr<UnsizedRefCountedMemory> buffer, +void WriteBuffer::AppendBuffer(scoped_refptr<base::RefCountedMemory> buffer, size_t size) { AppendCurrentBuffer(); - sized_buffers_.push_back( - // SAFETY: This relies on the caller to pass a correct size. - UNSAFE_BUFFERS(base::span(buffer->bytes(), size))); - owned_buffers_.push_back(buffer); + buffers_.push_back(buffer); offset_ += size; } -void WriteBuffer::AppendSizedBuffer( - scoped_refptr<base::RefCountedMemory> buffer) { - AppendCurrentBuffer(); - std::vector<uint8_t> v(buffer->size()); - base::span(v).copy_from(*buffer); - sized_buffers_.push_back(v); - owned_buffers_.push_back(ThrowAwaySizeRefCountedMemory::From(std::move(v))); - offset_ += buffer->size(); -} - -base::span<base::span<uint8_t>> WriteBuffer::GetBuffers() { +std::vector<scoped_refptr<base::RefCountedMemory>>& WriteBuffer::GetBuffers() { if (!current_buffer_.empty()) AppendCurrentBuffer(); - return sized_buffers_; -} - -void WriteBuffer::OffsetFirstBuffer(size_t offset) { - sized_buffers_[0u] = sized_buffers_[0u].subspan(offset); + return buffers_; } void WriteBuffer::AppendCurrentBuffer() { - sized_buffers_.push_back(base::span(current_buffer_)); - owned_buffers_.push_back( - ThrowAwaySizeRefCountedMemory::From(std::move(current_buffer_))); - current_buffer_.clear(); + buffers_.push_back(base::RefCountedBytes::TakeVector(¤t_buffer_)); } } // namespace x11
diff --git a/ui/gfx/x/xproto_types.h b/ui/gfx/x/xproto_types.h index 53597865..0a6256b0 100644 --- a/ui/gfx/x/xproto_types.h +++ b/ui/gfx/x/xproto_types.h
@@ -20,92 +20,8 @@ class Error; -// A memory buffer where the size of the memory buffer is unknown because its -// given as `void*` from a C api which expects us to dynamically cast it to -// another type later. Use of this type is not sound as a mistake will cause -// Undefined Behaviour. -class COMPONENT_EXPORT(X11) UnsizedRefCountedMemory - : public base::RefCountedThreadSafe<UnsizedRefCountedMemory> { - public: - uint8_t* bytes() { return cast_to<uint8_t>(); } - const uint8_t* bytes() const { return cast_to<const uint8_t>(); } - - // Converts the inner pointer to a `T*`. If the type is incorrect, this - // results in Undefined Behaviour. - template <class T> - T* cast_to() { - return reinterpret_cast<T*>(data()); - } - template <class T> - requires(std::is_const_v<T>) - T* cast_to() const { - return reinterpret_cast<T*>(data()); - } - - protected: - friend class base::RefCountedThreadSafe<UnsizedRefCountedMemory>; - virtual ~UnsizedRefCountedMemory() = default; - - virtual void* data() LIFETIME_BOUND = 0; - virtual const void* data() const LIFETIME_BOUND = 0; -}; - -// Convert from a sized memory buffer to an unsized one, in order to use the -// buffer in void* APIs that pass the size separately. -class COMPONENT_EXPORT(X11) ThrowAwaySizeRefCountedMemory final - : public UnsizedRefCountedMemory { - public: - static scoped_refptr<ThrowAwaySizeRefCountedMemory> From( - std::vector<uint8_t> data) { - return new ThrowAwaySizeRefCountedMemory(std::move(data)); - } - - ThrowAwaySizeRefCountedMemory(const ThrowAwaySizeRefCountedMemory&) = delete; - ThrowAwaySizeRefCountedMemory& operator=( - const ThrowAwaySizeRefCountedMemory&) = delete; - - private: - explicit ThrowAwaySizeRefCountedMemory(std::vector<uint8_t> data); - - // UnsizedRefCountedMemory: - void* data() LIFETIME_BOUND override; - const void* data() const LIFETIME_BOUND override; - - ~ThrowAwaySizeRefCountedMemory() override; - - std::vector<uint8_t> data_; -}; - -// Convert from an unsized memory buffer to a sized one, by specifying the size. -class COMPONENT_EXPORT(X11) SizedRefCountedMemory final - : public base::RefCountedMemory { - public: - // Safety: The caller must ensure that the `mem` buffer points to at least - // `size` many bytes or Undefined Behaviour can result. - UNSAFE_BUFFER_USAGE static scoped_refptr<SizedRefCountedMemory> From( - scoped_refptr<UnsizedRefCountedMemory> mem, - size_t size) { - return new SizedRefCountedMemory(std::move(mem), size); - } - - SizedRefCountedMemory(const SizedRefCountedMemory&) = delete; - SizedRefCountedMemory& operator=(const SizedRefCountedMemory&) = delete; - - private: - SizedRefCountedMemory(scoped_refptr<UnsizedRefCountedMemory> mem, - size_t size); - - // RefCountedMemory: - base::span<const uint8_t> AsSpan() const LIFETIME_BOUND override; - - ~SizedRefCountedMemory() override; - - scoped_refptr<UnsizedRefCountedMemory> mem_; - size_t size_; -}; - -using RawReply = scoped_refptr<UnsizedRefCountedMemory>; -using RawError = scoped_refptr<UnsizedRefCountedMemory>; +using RawReply = scoped_refptr<base::RefCountedMemory>; +using RawError = scoped_refptr<base::RefCountedMemory>; using ResponseCallback = base::OnceCallback<void(RawReply reply, std::unique_ptr<Error> error)>; @@ -130,7 +46,7 @@ // Wraps data read from the connection. struct COMPONENT_EXPORT(X11) ReadBuffer { - explicit ReadBuffer(scoped_refptr<UnsizedRefCountedMemory> data, + explicit ReadBuffer(scoped_refptr<base::RefCountedMemory> data, bool setup_message = false); ReadBuffer(const ReadBuffer&) = delete; @@ -138,11 +54,11 @@ ~ReadBuffer(); - scoped_refptr<UnsizedRefCountedMemory> ReadAndAdvance(size_t length); + scoped_refptr<base::RefCountedMemory> ReadAndAdvance(size_t length); int TakeFd(); - scoped_refptr<UnsizedRefCountedMemory> data; + scoped_refptr<base::RefCountedMemory> data; size_t offset = 0; raw_ptr<const int, AllowPtrArithmetic> fds = nullptr; }; @@ -157,17 +73,9 @@ ~WriteBuffer(); - // Safety: The `buffer` must point to at least `size` many bytes. - UNSAFE_BUFFER_USAGE void AppendBuffer( - scoped_refptr<UnsizedRefCountedMemory> buffer, - size_t size); + void AppendBuffer(scoped_refptr<base::RefCountedMemory> buffer, size_t size); - void AppendSizedBuffer(scoped_refptr<base::RefCountedMemory> buffer); - - base::span<base::span<uint8_t>> GetBuffers(); - - // Advance the pointer in the first buffer by `offset`. - void OffsetFirstBuffer(size_t offset); + std::vector<scoped_refptr<base::RefCountedMemory>>& GetBuffers(); size_t offset() const { return offset_; } @@ -185,8 +93,7 @@ private: void AppendCurrentBuffer(); - std::vector<scoped_refptr<UnsizedRefCountedMemory>> owned_buffers_; - std::vector<base::span<uint8_t>> sized_buffers_; + std::vector<scoped_refptr<base::RefCountedMemory>> buffers_; std::vector<uint8_t> current_buffer_; size_t offset_ = 0; std::vector<int> fds_;
diff --git a/ui/ozone/platform/wayland/host/wayland_clipboard.cc b/ui/ozone/platform/wayland/host/wayland_clipboard.cc index f25c794..5f56dab4 100644 --- a/ui/ozone/platform/wayland/host/wayland_clipboard.cc +++ b/ui/ozone/platform/wayland/host/wayland_clipboard.cc
@@ -189,9 +189,8 @@ auto it = offered_data_.find(mime_type); if (it == offered_data_.end() && mime_type == ui::kMimeTypeTextUtf8) it = offered_data_.find(ui::kMimeTypeText); - if (it != offered_data_.end()) { - *contents = base::as_string_view(*it->second); - } + if (it != offered_data_.end()) + contents->assign(it->second->data().begin(), it->second->data().end()); } // The device manager used to access data device and create data sources.
diff --git a/ui/ozone/platform/wayland/host/wayland_clipboard_unittest.cc b/ui/ozone/platform/wayland/host/wayland_clipboard_unittest.cc index fd5153c..38664a8 100644 --- a/ui/ozone/platform/wayland/host/wayland_clipboard_unittest.cc +++ b/ui/ozone/platform/wayland/host/wayland_clipboard_unittest.cc
@@ -366,7 +366,7 @@ base::MockCallback<PlatformClipboard::RequestDataClosure> callback; EXPECT_CALL(callback, Run(_)).WillOnce([&text](PlatformClipboard::Data data) { ASSERT_TRUE(data); - text = std::string(base::as_string_view(*data)); + text = std::string(data->front_as<const char>(), data->size()); }); clipboard_->RequestClipboardData(WhichBufferToUse(), kMimeTypeTextUtf8, @@ -391,7 +391,7 @@ base::MockCallback<PlatformClipboard::RequestDataClosure> callback; EXPECT_CALL(callback, Run(_)).WillOnce([&text](PlatformClipboard::Data data) { ASSERT_TRUE(data); - text = std::string(base::as_string_view(*data)); + text = std::string(data->front_as<const char>(), data->size()); }); clipboard_->RequestClipboardData(WhichBufferToUse(), kMimeTypeTextUtf8, @@ -466,7 +466,7 @@ base::MockCallback<PlatformClipboard::RequestDataClosure> got_text; EXPECT_CALL(got_text, Run(_)).WillOnce([&](PlatformClipboard::Data data) { ASSERT_NE(nullptr, data); - text = std::string(base::as_string_view(*data)); + text = std::string(data->front_as<const char>(), data->size()); }); clipboard_->RequestClipboardData(WhichBufferToUse(), kMimeTypeTextUtf8, got_text.Get()); @@ -543,7 +543,7 @@ std::string html; base::MockCallback<PlatformClipboard::RequestDataClosure> got_html; EXPECT_CALL(got_html, Run(_)).WillOnce([&](PlatformClipboard::Data data) { - html = std::string(base::as_string_view(*data)); + html = std::string(data->front_as<const char>(), data->size()); }); base::SingleThreadTaskRunner::GetCurrentDefault()->PostTask( FROM_HERE, @@ -555,7 +555,7 @@ std::string text; base::MockCallback<PlatformClipboard::RequestDataClosure> got_text; EXPECT_CALL(got_text, Run(_)).WillOnce([&](PlatformClipboard::Data data) { - text = std::string(base::as_string_view(*data)); + text = std::string(data->front_as<const char>(), data->size()); }); clipboard_->RequestClipboardData(ClipboardBuffer::kCopyPaste, kMimeTypeText, got_text.Get());
diff --git a/ui/ozone/platform/wayland/host/wayland_exchange_data_provider.cc b/ui/ozone/platform/wayland/host/wayland_exchange_data_provider.cc index d1f4e89..1ca2005 100644 --- a/ui/ozone/platform/wayland/host/wayland_exchange_data_provider.cc +++ b/ui/ozone/platform/wayland/host/wayland_exchange_data_provider.cc
@@ -83,28 +83,22 @@ template <typename StringType> StringType BytesTo(PlatformClipboard::Data bytes) { using ValueType = typename StringType::value_type; - const size_t bytes_size = bytes->size(); - const size_t rounded_bytes_size = - bytes_size - (bytes_size % sizeof(ValueType)); - if (bytes_size != rounded_bytes_size) { + if (bytes->size() % sizeof(ValueType) != 0U) { // This is suspicious. LOG(WARNING) << "Data is possibly truncated, or a wrong conversion is requested."; } - StringType result; - result.resize(rounded_bytes_size / sizeof(ValueType)); - base::as_writable_byte_span(result).copy_from( - base::span(*bytes).first(rounded_bytes_size)); + StringType result(bytes->front_as<ValueType>(), + bytes->size() / sizeof(ValueType)); return result; } void AddString(PlatformClipboard::Data data, OSExchangeDataProvider* provider) { DCHECK(provider); - if (data->as_vector().empty()) { + if (data->data().empty()) return; - } provider->SetString(base::UTF8ToUTF16(BytesTo<std::string>(data))); } @@ -112,9 +106,8 @@ void AddHtml(PlatformClipboard::Data data, OSExchangeDataProvider* provider) { DCHECK(provider); - if (data->as_vector().empty()) { + if (data->data().empty()) return; - } provider->SetHtml(base::UTF8ToUTF16(BytesTo<std::string>(data)), GURL()); } @@ -174,9 +167,8 @@ void AddUrl(PlatformClipboard::Data data, OSExchangeDataProvider* provider) { DCHECK(provider); - if (data->as_vector().empty()) { + if (data->data().empty()) return; - } std::u16string data_as_string16 = BytesTo<std::u16string>(data); @@ -204,9 +196,8 @@ void AddSource(PlatformClipboard::Data data, OSExchangeDataProvider* provider) { DCHECK(provider); - if (data->as_vector().empty()) { + if (data->data().empty()) return; - } std::string source_dte = BytesTo<std::string>(data); provider->SetSource(ConvertJsonToDataTransferEndpoint(source_dte));
diff --git a/ui/ozone/platform/wayland/test/test_selection_device_manager.cc b/ui/ozone/platform/wayland/test/test_selection_device_manager.cc index 1f95e69..bcf9cf7 100644 --- a/ui/ozone/platform/wayland/test/test_selection_device_manager.cc +++ b/ui/ozone/platform/wayland/test/test_selection_device_manager.cc
@@ -46,7 +46,7 @@ void WriteDataOnWorkerThread(base::ScopedFD fd, ui::PlatformClipboard::Data data) { - if (!base::WriteFileDescriptor(fd.get(), data->as_vector())) { + if (!base::WriteFileDescriptor(fd.get(), data->data())) { LOG(ERROR) << "Failed to write selection data to clipboard."; } }
diff --git a/ui/views/controls/button/md_text_button.cc b/ui/views/controls/button/md_text_button.cc index 1af778e..f5d99be 100644 --- a/ui/views/controls/button/md_text_button.cc +++ b/ui/views/controls/button/md_text_button.cc
@@ -105,7 +105,22 @@ return style_; } -void MdTextButton::SetBgColorOverride(const std::optional<SkColor>& color) { +void MdTextButton::SetBgColorIdOverride( + const std::optional<ui::ColorId> color_id) { + CHECK(!bg_color_override_.has_value()); + + if (color_id == bg_color_id_override_) { + return; + } + bg_color_id_override_ = color_id; + UpdateColors(); + OnPropertyChanged(&bg_color_id_override_, kPropertyEffectsNone); +} + +void MdTextButton::SetBgColorOverrideDeprecated( + const std::optional<SkColor>& color) { + CHECK(!bg_color_id_override_.has_value()); + if (color == bg_color_override_) return; bg_color_override_ = color; @@ -113,10 +128,14 @@ OnPropertyChanged(&bg_color_override_, kPropertyEffectsNone); } -std::optional<SkColor> MdTextButton::GetBgColorOverride() const { +std::optional<SkColor> MdTextButton::GetBgColorOverrideDeprecated() const { return bg_color_override_; } +std::optional<ui::ColorId> MdTextButton::GetBgColorIdOverride() const { + return bg_color_id_override_; +} + void MdTextButton::SetCornerRadius(std::optional<float> radius) { if (corner_radius_ == radius) return; @@ -267,7 +286,9 @@ const ui::ColorProvider* color_provider = GetColorProvider(); SkColor bg_color = color_provider->GetColor(ui::kColorButtonBackground); - if (bg_color_override_) { + if (bg_color_id_override_) { + bg_color = color_provider->GetColor(bg_color_id_override_.value()); + } else if (bg_color_override_) { bg_color = *bg_color_override_; } else if (style_ == ui::ButtonStyle::kProminent) { bg_color = color_provider->GetColor( @@ -364,7 +385,8 @@ BEGIN_METADATA(MdTextButton) ADD_PROPERTY_METADATA(std::optional<float>, CornerRadius) -ADD_PROPERTY_METADATA(std::optional<SkColor>, BgColorOverride) +ADD_PROPERTY_METADATA(std::optional<SkColor>, BgColorOverrideDeprecated) +ADD_PROPERTY_METADATA(std::optional<ui::ColorId>, BgColorIdOverride) ADD_PROPERTY_METADATA(std::optional<gfx::Insets>, CustomPadding) ADD_PROPERTY_METADATA(ui::ButtonStyle, Style) END_METADATA
diff --git a/ui/views/controls/button/md_text_button.h b/ui/views/controls/button/md_text_button.h index 339c9ffa..4f29fa6 100644 --- a/ui/views/controls/button/md_text_button.h +++ b/ui/views/controls/button/md_text_button.h
@@ -11,6 +11,7 @@ #include "base/functional/callback.h" #include "base/functional/callback_forward.h" #include "ui/base/ui_base_types.h" +#include "ui/color/color_id.h" #include "ui/views/controls/button/label_button.h" #include "ui/views/controls/button/label_button_image_container.h" #include "ui/views/controls/focus_ring.h" @@ -43,9 +44,17 @@ void SetStyle(ui::ButtonStyle button_style); ui::ButtonStyle GetStyle() const; - // See |bg_color_override_|. - void SetBgColorOverride(const std::optional<SkColor>& color); - std::optional<SkColor> GetBgColorOverride() const; + // Sets the background color id to use. Cannot be called if + // `bg_color_override_` has already been set. + void SetBgColorIdOverride(const std::optional<ui::ColorId> color_id); + std::optional<ui::ColorId> GetBgColorIdOverride() const; + + // Sets the background color to use. Cannot be called if + // `bg_color_id_override_` has already been set. + // TODO(crbug.com/1421316): Get rid of SkColor versions of these functions in + // favor of the ColorId versions. + void SetBgColorOverrideDeprecated(const std::optional<SkColor>& color); + std::optional<SkColor> GetBgColorOverrideDeprecated() const; // Override the default corner radius of the round rect used for the // background and ink drop effects. @@ -87,8 +96,10 @@ ui::ButtonStyle style_ = ui::ButtonStyle::kDefault; - // When set, this provides the background color. + // When set, this provides the background color. At most one of + // `bg_color_override_` or `bg_color_id_override_` can be set. std::optional<SkColor> bg_color_override_; + std::optional<ui::ColorId> bg_color_id_override_; // Used to set the corner radius of the button. std::optional<float> corner_radius_; @@ -115,7 +126,8 @@ BEGIN_VIEW_BUILDER(VIEWS_EXPORT, MdTextButton, LabelButton) VIEW_BUILDER_PROPERTY(std::optional<float>, CornerRadius) -VIEW_BUILDER_PROPERTY(std::optional<SkColor>, BgColorOverride) +VIEW_BUILDER_PROPERTY(std::optional<SkColor>, BgColorOverrideDeprecated) +VIEW_BUILDER_PROPERTY(std::optional<ui::ColorId>, BgColorIdOverride) VIEW_BUILDER_PROPERTY(std::optional<gfx::Insets>, CustomPadding) VIEW_BUILDER_PROPERTY(ui::ButtonStyle, Style) END_VIEW_BUILDER
diff --git a/ui/views/controls/scroll_view.cc b/ui/views/controls/scroll_view.cc index d3f21972..e60f1ff 100644 --- a/ui/views/controls/scroll_view.cc +++ b/ui/views/controls/scroll_view.cc
@@ -11,6 +11,7 @@ #include "base/functional/bind.h" #include "base/i18n/rtl.h" #include "base/memory/raw_ptr.h" +#include "base/notreached.h" #include "base/ranges/algorithm.h" #include "build/build_config.h" #include "ui/accessibility/ax_action_data.h" @@ -619,7 +620,13 @@ } gfx::Size ScrollView::CalculatePreferredSize() const { - gfx::Size size = contents_ ? contents_->GetPreferredSize({}) : gfx::Size(); + NOTREACHED_NORETURN(); +} + +gfx::Size ScrollView::CalculatePreferredSize( + const views::SizeBounds& available_size) const { + gfx::Size size = + contents_ ? contents_->GetPreferredSize(available_size) : gfx::Size(); if (is_bounded()) { size.SetToMax(gfx::Size(size.width(), min_height_)); size.SetToMin(gfx::Size(size.width(), max_height_));
diff --git a/ui/views/controls/scroll_view.h b/ui/views/controls/scroll_view.h index 0f13816..b4bbac4 100644 --- a/ui/views/controls/scroll_view.h +++ b/ui/views/controls/scroll_view.h
@@ -226,7 +226,10 @@ ScrollViewCallback callback); // View overrides: - gfx::Size CalculatePreferredSize() const override; + gfx::Size CalculatePreferredSize() const final; + gfx::Size CalculatePreferredSize( + const views::SizeBounds& available_size) const override; + int GetHeightForWidth(int width) const override; void Layout(PassKey) override; bool OnKeyPressed(const ui::KeyEvent& event) override;
diff --git a/ui/views/controls/tabbed_pane/tabbed_pane.cc b/ui/views/controls/tabbed_pane/tabbed_pane.cc index bc62bc2d..e15e955 100644 --- a/ui/views/controls/tabbed_pane/tabbed_pane.cc +++ b/ui/views/controls/tabbed_pane/tabbed_pane.cc
@@ -10,7 +10,6 @@ #include "base/check_op.h" #include "base/i18n/rtl.h" -#include "base/notreached.h" #include "build/build_config.h" #include "cc/paint/paint_flags.h" #include "third_party/skia/include/core/SkPath.h" @@ -132,19 +131,21 @@ } gfx::Size TabbedPaneTab::CalculatePreferredSize() const { - NOTREACHED_NORETURN() << "Use CalculatePreferredSize(SizeBounds)"; -} - -gfx::Size TabbedPaneTab::CalculatePreferredSize( - const SizeBounds& available_size) const { int width = preferred_title_width_ + GetInsets().width(); if (tabbed_pane_->GetStyle() == TabbedPane::TabStripStyle::kHighlight && - tabbed_pane_->GetOrientation() == TabbedPane::Orientation::kVertical) { + tabbed_pane_->GetOrientation() == TabbedPane::Orientation::kVertical) width = std::max(width, 192); - } return gfx::Size(width, 32); } +int TabbedPaneTab::GetHeightForWidth(int w) const { + // Because we set the LayoutManager, it will use + // LayoutManager::GetPreferredHeightForWidth by default, but this is not + // consistent with the fixed height desired by CalculatePreferredSize, so we + // override it and call it manually. + return CalculatePreferredSize().height(); +} + void TabbedPaneTab::GetAccessibleNodeData(ui::AXNodeData* data) { data->role = ax::mojom::Role::kTab; data->SetName(title_->GetText());
diff --git a/ui/views/controls/tabbed_pane/tabbed_pane.h b/ui/views/controls/tabbed_pane/tabbed_pane.h index 3e3337a0..48f164c 100644 --- a/ui/views/controls/tabbed_pane/tabbed_pane.h +++ b/ui/views/controls/tabbed_pane/tabbed_pane.h
@@ -176,9 +176,8 @@ void OnMouseEntered(const ui::MouseEvent& event) override; void OnMouseExited(const ui::MouseEvent& event) override; void OnGestureEvent(ui::GestureEvent* event) override; - gfx::Size CalculatePreferredSize() const final; - gfx::Size CalculatePreferredSize( - const SizeBounds& available_size) const override; + gfx::Size CalculatePreferredSize() const override; + int GetHeightForWidth(int w) const override; void GetAccessibleNodeData(ui::AXNodeData* node_data) override; bool HandleAccessibleAction(const ui::AXActionData& action_data) override; void OnFocus() override;
diff --git a/ui/views/examples/multiline_example.cc b/ui/views/examples/multiline_example.cc index c0c3b890..af9f8a9 100644 --- a/ui/views/examples/multiline_example.cc +++ b/ui/views/examples/multiline_example.cc
@@ -86,27 +86,28 @@ render_text_->Draw(canvas); } - gfx::Size CalculatePreferredSize( - const SizeBounds& available_size) const override { - int w = available_size.width().value_or(0); - if (w == 0) { - // Turn off multiline mode to get the single-line text size, which is the - // preferred size for this view. - render_text_->SetMultiline(false); - gfx::Size size(render_text_->GetContentWidth(), - render_text_->GetStringSize().height()); - size.Enlarge(GetInsets().width(), GetInsets().height()); - render_text_->SetMultiline(true); - return size; - } + gfx::Size CalculatePreferredSize() const override { + // Turn off multiline mode to get the single-line text size, which is the + // preferred size for this view. + render_text_->SetMultiline(false); + gfx::Size size(render_text_->GetContentWidth(), + render_text_->GetStringSize().height()); + size.Enlarge(GetInsets().width(), GetInsets().height()); + render_text_->SetMultiline(true); + return size; + } + int GetHeightForWidth(int w) const override { + // TODO(ckocagil): Why does this happen? + if (w == 0) + return View::GetHeightForWidth(w); const gfx::Rect old_rect = render_text_->display_rect(); gfx::Rect rect = old_rect; rect.set_width(w - GetInsets().width()); render_text_->SetDisplayRect(rect); int height = render_text_->GetStringSize().height() + GetInsets().height(); render_text_->SetDisplayRect(old_rect); - return gfx::Size(w, height); + return height; } void OnThemeChanged() override {
diff --git a/ui/views/layout/layout_types.h b/ui/views/layout/layout_types.h index 152dc37..14e05150 100644 --- a/ui/views/layout/layout_types.h +++ b/ui/views/layout/layout_types.h
@@ -62,10 +62,6 @@ return is_bounded() ? std::min(this->value(), value) : value; } - constexpr int value_or(int defaule_value) const { - return is_bounded() ? value() : defaule_value; - } - void operator+=(const SizeBound& rhs); void operator-=(const SizeBound& rhs);
diff --git a/ui/views/test/test_views.cc b/ui/views/test/test_views.cc index 69ac753..c5dd24a8 100644 --- a/ui/views/test/test_views.cc +++ b/ui/views/test/test_views.cc
@@ -44,16 +44,14 @@ PreferredSizeChanged(); } -gfx::Size ProportionallySizedView::CalculatePreferredSize( - const SizeBounds& available_size) const { - if (available_size.width().is_bounded()) { - int w = available_size.width().value(); - return gfx::Size(w, w * factor_); - } else if (preferred_width_ >= 0) { - return gfx::Size(preferred_width_, preferred_width_ * factor_); - } else { - return View::CalculatePreferredSize(available_size); - } +int ProportionallySizedView::GetHeightForWidth(int w) const { + return w * factor_; +} + +gfx::Size ProportionallySizedView::CalculatePreferredSize() const { + if (preferred_width_ >= 0) + return gfx::Size(preferred_width_, GetHeightForWidth(preferred_width_)); + return View::CalculatePreferredSize(); } BEGIN_METADATA(ProportionallySizedView)
diff --git a/ui/views/test/test_views.h b/ui/views/test/test_views.h index 5f65e72..dfed1df 100644 --- a/ui/views/test/test_views.h +++ b/ui/views/test/test_views.h
@@ -61,8 +61,8 @@ void SetPreferredWidth(int width); - gfx::Size CalculatePreferredSize( - const SizeBounds& available_size) const override; + int GetHeightForWidth(int w) const override; + gfx::Size CalculatePreferredSize() const override; private: // The multiplicative factor between width and height, i.e.
diff --git a/ui/views/view.h b/ui/views/view.h index c9d463c..8272680 100644 --- a/ui/views/view.h +++ b/ui/views/view.h
@@ -1680,6 +1680,8 @@ // when the parent is performing layout. // `preferred_size_` will take precedence over CalculatePreferredSize() if // it exists. + // TODO(crbug.com/1346889): Don't use this. Use the size-constrained + // CalculatePreferredSize(const SizeBounds&) instead. virtual gfx::Size CalculatePreferredSize() const; // Calculates the preferred size for the View given `available_size`.
diff --git a/ui/webui/resources/cr_elements/BUILD.gn b/ui/webui/resources/cr_elements/BUILD.gn index 95a91f2..07c58c7 100644 --- a/ui/webui/resources/cr_elements/BUILD.gn +++ b/ui/webui/resources/cr_elements/BUILD.gn
@@ -25,6 +25,7 @@ icons_html_files = [ "icons.html", + "icons_lit.html", "mwb_shared_icons.html", ]
diff --git a/ui/webui/resources/cr_elements/cr_expand_button/cr_expand_button.ts b/ui/webui/resources/cr_elements/cr_expand_button/cr_expand_button.ts index be977b9..b725b761 100644 --- a/ui/webui/resources/cr_elements/cr_expand_button/cr_expand_button.ts +++ b/ui/webui/resources/cr_elements/cr_expand_button/cr_expand_button.ts
@@ -8,7 +8,7 @@ * between an opened (expanded) and closed state. */ import '../cr_icon_button/cr_icon_button.js'; -import '../icons.html.js'; +import '../icons_lit.html.js'; import {focusWithoutInk} from '//resources/js/focus_without_ink.js'; import type {PropertyValues} from '//resources/lit/v3_0/lit.rollup.js';
diff --git a/ui/webui/resources/cr_elements/icons_lit.html b/ui/webui/resources/cr_elements/icons_lit.html new file mode 100644 index 0000000..2446651 --- /dev/null +++ b/ui/webui/resources/cr_elements/icons_lit.html
@@ -0,0 +1,4 @@ +<!-- +Purposefully empty since this file is generated at buildtime from the +Polymer version. +-->