diff --git a/DEPS b/DEPS index 7d84c93..e588d6b1 100644 --- a/DEPS +++ b/DEPS
@@ -171,11 +171,11 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling Skia # and whatever else without interference from each other. - 'skia_revision': '57bc977e124cb20258268157e5010e9c787c6fe0', + 'skia_revision': '02497d40161fc75c46fa47c28e6fef30310147b4', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling V8 # and whatever else without interference from each other. - 'v8_revision': 'a66f0bf66ea25ae7448b35fe74cef5642cdc0310', + 'v8_revision': 'f6d87d0ff881338e5998a4c7177490292619d55b', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling swarming_client # and whatever else without interference from each other. @@ -183,7 +183,7 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling ANGLE # and whatever else without interference from each other. - 'angle_revision': '8b73596fe7046921a5c145db16ff68ede6b71133', + 'angle_revision': '959d077f605ee90652362033240188223f5c2816', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling SwiftShader # and whatever else without interference from each other. @@ -191,7 +191,7 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling PDFium # and whatever else without interference from each other. - 'pdfium_revision': 'd41bcabd124f06c919f38849d6258960eb635f20', + 'pdfium_revision': 'c93fa1ff01942209632af85a005d27b9be9c5236', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling BoringSSL # and whatever else without interference from each other. @@ -242,7 +242,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': 'e1d7a0fe6ffbde5ea6fe9bd664d15f994880d03c', + 'devtools_frontend_revision': 'e0897515da03963f98a43f92b8809118397c416f', # 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. @@ -298,7 +298,7 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling feed # and whatever else without interference from each other. - 'dawn_revision': 'bc34d908f60d458c6d9e416a7404eac4703e1192', + 'dawn_revision': '33466973bc4c52effb520832d538b48c38695ca5', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling feed # and whatever else without interference from each other. @@ -338,7 +338,7 @@ # once libassistant's copy of buildtools rolls up to the rename. 'libcxx_revision_v2': 'd9040c75cfea5928c804ab7c235fed06a63f743a', 'libcxxabi_revision_v2': '196ba1aaa8ac285d94f4ea8d9836390a45360533', - 'libunwind_revision_v2': 'd999d54f4bca789543a2eb6c995af2d9b5a1f3ed', + 'libunwind_revision_v2': '43bb9f872232f531bac80093ceb4de61c64b9ab7', } # Only these hosts are allowed for dependencies in this DEPS file. @@ -1242,7 +1242,7 @@ }, 'src/third_party/perfetto': - Var('android_git') + '/platform/external/perfetto.git' + '@' + '5ca404665a4c706b64d9fd74663984f87c800572', + Var('android_git') + '/platform/external/perfetto.git' + '@' + '3bde4517dec7e1b528202a4709785aa798abe480', 'src/third_party/perl': { 'url': Var('chromium_git') + '/chromium/deps/perl.git' + '@' + '6f3e5028eb65d0b4c5fdd792106ac4c84eee1eb3', @@ -1518,7 +1518,7 @@ Var('chromium_git') + '/v8/v8.git' + '@' + Var('v8_revision'), 'src-internal': { - 'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@5d5361f3bf54910df23a7d2f006e99c2f10f0ede', + 'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@207c622c1ef0b060d7641c9e4f56352330e1c97a', 'condition': 'checkout_src_internal', },
diff --git a/WATCHLISTS b/WATCHLISTS index 4db850b..d666f10 100644 --- a/WATCHLISTS +++ b/WATCHLISTS
@@ -158,7 +158,8 @@ 'filepath': 'ash/', }, 'assistant': { - 'filepath': 'ash/app_list/views/assistant/'\ + 'filepath': 'ash/ambient/ui/.*assistant.*'\ + '|ash/app_list/views/assistant/'\ '|ash/assistant/'\ '|chromeos/assistant/'\ '|chromeos/services/assistant/'\ @@ -1546,6 +1547,11 @@ 'push_messaging': { 'filepath': 'push_messaging' }, + 'quick_answers': { + 'filepath': 'ash/quick_answers/'\ + '|chrome/browser/renderer_context_menu/quick_answers.*'\ + '|chromeos/components/quick_answers/' + }, 'reading_list': { 'filepath': 'components/reading_list|'\ 'ios/chrome/browser/reading_list|'\ @@ -2633,6 +2639,7 @@ 'preview_features': ['chrome-lite-pages+watch@google.com'], 'print_preview': ['print-reviews+preview@chromium.org'], 'push_messaging': ['peter@chromium.org'], + 'quick_answers': ['croissant-eng+reviews@chromium.org'], 'reading_list': ['stkhapugin@chromium.org'], 'relaunch_notification': ['grt+watch@chromium.org'], 'remoteplayback': ['mfoltz+watch@chromium.org'],
diff --git a/android_webview/javatests/src/org/chromium/android_webview/test/ClientOnPageFinishedTest.java b/android_webview/javatests/src/org/chromium/android_webview/test/ClientOnPageFinishedTest.java index bd7f8ed..bcfd255 100644 --- a/android_webview/javatests/src/org/chromium/android_webview/test/ClientOnPageFinishedTest.java +++ b/android_webview/javatests/src/org/chromium/android_webview/test/ClientOnPageFinishedTest.java
@@ -8,6 +8,7 @@ import android.support.test.InstrumentationRegistry; import android.support.test.filters.MediumTest; +import android.util.Pair; import org.junit.Assert; import org.junit.Before; @@ -24,6 +25,8 @@ import org.chromium.content_public.common.ContentUrlConstants; import org.chromium.net.test.util.TestWebServer; +import java.util.ArrayList; +import java.util.List; import java.util.concurrent.CountDownLatch; /** @@ -563,4 +566,53 @@ webServer.shutdown(); } } + + /** + * Ensure the case when max number of redirects is reached using an SXG fallback + * url does not crash and results in an error page (due to net::ERR_TO_MANY_REDIRECTS). + */ + @Test + @MediumTest + @Feature({"AndroidWebView"}) + public void testMaxRedirect_SXG() throws Throwable { + TestCallbackHelperContainer.OnPageFinishedHelper onPageFinishedHelper = + mContentsClient.getOnPageFinishedHelper(); + + TestWebServer webServer = TestWebServer.startSsl(); + try { + List<Pair<String, String>> signedExchangeHeaders = + new ArrayList<Pair<String, String>>(); + signedExchangeHeaders.add( + Pair.create("Content-Type", "application/signed-exchange;v=b3")); + signedExchangeHeaders.add(Pair.create("X-Content-Type-Options", "nosniff")); + final String fallbackUrl = webServer.setResponseWithNotFoundStatus("/404.html"); + final String webpageNotAvailable = "Webpage not available"; + + StringBuilder sb = new StringBuilder(); + sb.append("sxg1-b3"); + sb.append((char) 0); + sb.append((char) 0); + sb.append((char) fallbackUrl.length()); + sb.append(fallbackUrl); + final String sxgContents = sb.toString(); + + final String emptyResp = + webServer.setResponse("/foo.sxg", sxgContents, signedExchangeHeaders); + final String redirectUrl = webServer.setRedirect("/302.html", "/redirect_1"); + for (int i = 1; i < 18; i++) { + String redirectUrlLoop = + webServer.setRedirect("/redirect_" + i, "/redirect_" + (i + 1)); + } + + String finalRedirect = webServer.setRedirect("/redirect_18", "/foo.sxg"); + + // Note the current SXG redirect fallback implementation does not + // result in onPageFinished, onReceivedError callbacks, see crbug.com/1052242. + mActivityTestRule.loadUrlAsync(mAwContents, redirectUrl); + mActivityTestRule.waitForVisualStateCallback(mAwContents); + Assert.assertEquals(webpageNotAvailable, mAwContents.getTitle()); + } finally { + webServer.shutdown(); + } + } }
diff --git a/ash/app_list/views/app_list_view.cc b/ash/app_list/views/app_list_view.cc index 7231043..1a8aed5 100644 --- a/ash/app_list/views/app_list_view.cc +++ b/ash/app_list/views/app_list_view.cc
@@ -425,8 +425,8 @@ void OnImplicitAnimationsCompleted() override { StopObservingImplicitAnimations(); view_->OnBoundsAnimationCompleted(); - TRACE_EVENT_ASYNC_END1("ui", "AppList::StateTransitionAnimations", this, - "state", target_state_.value()); + TRACE_EVENT_NESTABLE_ASYNC_END1("ui", "AppList::StateTransitionAnimations", + this, "state", target_state_.value()); target_state_ = base::nullopt; } @@ -1705,8 +1705,8 @@ animation.SetPreemptionStrategy( ui::LayerAnimator::IMMEDIATELY_SET_NEW_TARGET); animation.SetAnimationMetricsReporter(GetStateTransitionMetricsReporter()); - TRACE_EVENT_ASYNC_BEGIN0("ui", "AppList::StateTransitionAnimations", - bounds_animation_observer_.get()); + TRACE_EVENT_NESTABLE_ASYNC_BEGIN0("ui", "AppList::StateTransitionAnimations", + bounds_animation_observer_.get()); bounds_animation_observer_->set_target_state(target_state); animation.AddObserver(bounds_animation_observer_.get()); if (animation_observer) {
diff --git a/ash/login/login_screen_controller.cc b/ash/login/login_screen_controller.cc index 64b3432..1cba4cd 100644 --- a/ash/login/login_screen_controller.cc +++ b/ash/login/login_screen_controller.cc
@@ -274,11 +274,16 @@ client_->FocusLockScreenApps(reverse); } -void LoginScreenController::ShowGaiaSignin(bool can_close, - const AccountId& prefilled_account) { +void LoginScreenController::ShowGaiaSignin(const AccountId& prefilled_account) { if (!client_) return; - client_->ShowGaiaSignin(can_close, prefilled_account); + client_->ShowGaiaSignin(prefilled_account); +} + +void LoginScreenController::HideGaiaSignin() { + if (!client_) + return; + client_->HideGaiaSignin(); } void LoginScreenController::OnRemoveUserWarningShown() {
diff --git a/ash/login/login_screen_controller.h b/ash/login/login_screen_controller.h index 1dad569..772d62f 100644 --- a/ash/login/login_screen_controller.h +++ b/ash/login/login_screen_controller.h
@@ -82,7 +82,8 @@ void LoginAsGuest(); void OnMaxIncorrectPasswordAttempted(const AccountId& account_id); void FocusLockScreenApps(bool reverse); - void ShowGaiaSignin(bool can_close, const AccountId& prefilled_account); + void ShowGaiaSignin(const AccountId& prefilled_account); + void HideGaiaSignin(); void OnRemoveUserWarningShown(); void RemoveUser(const AccountId& account_id); void LaunchPublicSession(const AccountId& account_id,
diff --git a/ash/login/mock_login_screen_client.h b/ash/login/mock_login_screen_client.h index ebe2255..abe15a0 100644 --- a/ash/login/mock_login_screen_client.h +++ b/ash/login/mock_login_screen_client.h
@@ -103,8 +103,9 @@ MOCK_METHOD(void, FocusLockScreenApps, (bool reverse), (override)); MOCK_METHOD(void, ShowGaiaSignin, - (bool can_close, const AccountId& prefilled_account), + (const AccountId& prefilled_account), (override)); + MOCK_METHOD(void, HideGaiaSignin, (), (override)); MOCK_METHOD(void, OnRemoveUserWarningShown, (), (override)); MOCK_METHOD(void, RemoveUser, (const AccountId& account_id), (override)); MOCK_METHOD(void,
diff --git a/ash/login/ui/lock_contents_view.cc b/ash/login/ui/lock_contents_view.cc index 26d14e4..b6ef902 100644 --- a/ash/login/ui/lock_contents_view.cc +++ b/ash/login/ui/lock_contents_view.cc
@@ -775,12 +775,18 @@ else new_users.push_back(UserState(user)); } + + // Hide gaia signin dialog if it was open due to empty user list and the list + // is not empty anymore. + const bool hide_gaia_signin = users_.empty() && !new_users.empty() && + screen_type_ == LockScreen::ScreenType::kLogin; + users_ = std::move(new_users); // If there are no users, show gaia signin if login. if (users.empty() && screen_type_ == LockScreen::ScreenType::kLogin) { Shell::Get()->login_screen_controller()->ShowGaiaSignin( - false /*can_close*/, EmptyAccountId() /*prefilled_account*/); + EmptyAccountId() /*prefilled_account*/); return; } @@ -814,6 +820,9 @@ PreferredSizeChanged(); Layout(); + if (hide_gaia_signin) + Shell::Get()->login_screen_controller()->HideGaiaSignin(); + // If one of the child views had focus before we deleted them, then this view // will get focused. Move focus back to the primary big view. if (primary_big_view_ && HasFocus()) @@ -1854,7 +1863,6 @@ if (screen_type_ == LockScreen::ScreenType::kLogin && unlock_attempt_ >= kLoginAttemptsBeforeGaiaDialog) { Shell::Get()->login_screen_controller()->ShowGaiaSignin( - true /*can_close*/, big_view->auth_user()->current_user().basic_user_info.account_id); return; }
diff --git a/ash/login/ui/lock_contents_view_unittest.cc b/ash/login/ui/lock_contents_view_unittest.cc index e37899e7..db62039 100644 --- a/ash/login/ui/lock_contents_view_unittest.cc +++ b/ash/login/ui/lock_contents_view_unittest.cc
@@ -1065,7 +1065,7 @@ }; // ShowGaiaSignin is never triggered. - EXPECT_CALL(*client, ShowGaiaSignin(_, _)).Times(0); + EXPECT_CALL(*client, ShowGaiaSignin(_)).Times(0); for (int i = 0; i < LockContentsView::kLoginAttemptsBeforeGaiaDialog + 1; ++i) submit_password(); } @@ -1091,14 +1091,13 @@ }; // The first n-1 attempts do not trigger ShowGaiaSignin. - EXPECT_CALL(*client, ShowGaiaSignin(_, _)).Times(0); + EXPECT_CALL(*client, ShowGaiaSignin(_)).Times(0); for (int i = 0; i < LockContentsView::kLoginAttemptsBeforeGaiaDialog - 1; ++i) submit_password(); Mock::VerifyAndClearExpectations(client.get()); // The final attempt triggers ShowGaiaSignin. - EXPECT_CALL(*client, ShowGaiaSignin(true /*can_close*/, - users()[0].basic_user_info.account_id)) + EXPECT_CALL(*client, ShowGaiaSignin(users()[0].basic_user_info.account_id)) .Times(1); submit_password(); Mock::VerifyAndClearExpectations(client.get()); @@ -2886,6 +2885,7 @@ std::make_unique<FakeLoginDetachableBaseModel>(DataDispatcher())); std::unique_ptr<views::Widget> widget = CreateWidgetWithContent(contents); LockContentsView::TestApi test_api(contents); + DataDispatcher()->SetUserList(users()); // Verify that primary big view is null. EXPECT_THAT(test_api.primary_big_view(), IsNull()); @@ -2893,4 +2893,22 @@ EXPECT_TRUE(test_api.main_view()->children().empty()); } +TEST_F(LockContentsViewUnitTest, ToggleGaiaOnUsersChanged) { + auto* contents = new LockContentsView( + mojom::TrayActionState::kNotAvailable, LockScreen::ScreenType::kLogin, + DataDispatcher(), + std::make_unique<FakeLoginDetachableBaseModel>(DataDispatcher())); + std::unique_ptr<views::Widget> widget = CreateWidgetWithContent(contents); + LockContentsView::TestApi test_api(contents); + auto client = std::make_unique<MockLoginScreenClient>(); + // Expect Gaia to show when there is no users. + EXPECT_CALL(*client, ShowGaiaSignin(_)).Times(1); + AddUsers(0); + Mock::VerifyAndClearExpectations(client.get()); + + // Hide Gaia when users added. + EXPECT_CALL(*client, HideGaiaSignin()).Times(1); + AddPublicAccountUsers(1); +} + } // namespace ash
diff --git a/ash/login/ui/login_auth_user_view.cc b/ash/login/ui/login_auth_user_view.cc index f312d9a2..e9581cd 100644 --- a/ash/login/ui/login_auth_user_view.cc +++ b/ash/login/ui/login_auth_user_view.cc
@@ -1415,7 +1415,7 @@ void LoginAuthUserView::OnOnlineSignInMessageTap() { Shell::Get()->login_screen_controller()->ShowGaiaSignin( - true /*can_close*/, current_user().basic_user_info.account_id); + current_user().basic_user_info.account_id); } void LoginAuthUserView::OnPinBack() {
diff --git a/ash/login/ui/login_auth_user_view_unittest.cc b/ash/login/ui/login_auth_user_view_unittest.cc index 4c2d610..b88500c5 100644 --- a/ash/login/ui/login_auth_user_view_unittest.cc +++ b/ash/login/ui/login_auth_user_view_unittest.cc
@@ -144,8 +144,7 @@ // Clicking the message triggers |ShowGaiaSignin|. EXPECT_CALL( *client, - ShowGaiaSignin(true /*can_close*/, - user_view->current_user().basic_user_info.account_id)); + ShowGaiaSignin(user_view->current_user().basic_user_info.account_id)); const ui::MouseEvent event(ui::ET_MOUSE_PRESSED, gfx::Point(), gfx::Point(), ui::EventTimeForNow(), 0, 0); view_->ButtonPressed(online_sign_in_message, event);
diff --git a/ash/login/ui/login_expanded_public_account_view.cc b/ash/login/ui/login_expanded_public_account_view.cc index 746de0f..8d8495b 100644 --- a/ash/login/ui/login_expanded_public_account_view.cc +++ b/ash/login/ui/login_expanded_public_account_view.cc
@@ -442,7 +442,7 @@ // take selected_language_item_.value, selected_keyboard_item_.value too. if (current_user_.public_account_info->using_saml) { Shell::Get()->login_screen_controller()->ShowGaiaSignin( - true /*can_close*/, current_user_.basic_user_info.account_id); + current_user_.basic_user_info.account_id); } else { Shell::Get()->login_screen_controller()->LaunchPublicSession( current_user_.basic_user_info.account_id,
diff --git a/ash/perftests/overview_animations_preftest.cc b/ash/perftests/overview_animations_preftest.cc index cb698f4..6872469c 100644 --- a/ash/perftests/overview_animations_preftest.cc +++ b/ash/perftests/overview_animations_preftest.cc
@@ -71,7 +71,7 @@ }; ASH_CONTENT_TEST_P(OverviewAnimationsTest, EnterExit) { - TRACE_EVENT_ASYNC_BEGIN0("ui", "Interaction.ui_Overview", this); + TRACE_EVENT_NESTABLE_ASYNC_BEGIN0("ui", "Interaction.ui_Overview", this); // Browser window is used just to identify display. ui_controls::SendKeyPress(window(), ui::VKEY_MEDIA_LAUNCH_APP1, /*control=*/false, @@ -88,7 +88,7 @@ /*command=*/false); ash::ShellTestApi().WaitForOverviewAnimationState( ash::OverviewAnimationState::kExitAnimationComplete); - TRACE_EVENT_ASYNC_END0("ui", "Interaction.ui_Overview", this); + TRACE_EVENT_NESTABLE_ASYNC_END0("ui", "Interaction.ui_Overview", this); } INSTANTIATE_TEST_SUITE_P(All,
diff --git a/ash/public/cpp/login_screen_client.h b/ash/public/cpp/login_screen_client.h index 772562c..44a3b1d 100644 --- a/ash/public/cpp/login_screen_client.h +++ b/ash/public/cpp/login_screen_client.h
@@ -111,11 +111,13 @@ // Passes focus to the OOBE dialog if it is showing. No-op otherwise. virtual void FocusOobeDialog() = 0; - // Show the gaia sign-in dialog. If |can_close| is true, the dialog can be - // closed. The value in |prefilled_account| will be used to prefill the - // sign-in dialog so the user does not need to type the account email. - virtual void ShowGaiaSignin(bool can_close, - const AccountId& prefilled_account) = 0; + // Show the gaia sign-in dialog. + // The value in |prefilled_account| will be used to prefill the sign-in dialog + // so the user does not need to type the account email. + virtual void ShowGaiaSignin(const AccountId& prefilled_account) = 0; + + // Hides the Gaia sign-in dialog if it was open. + virtual void HideGaiaSignin() = 0; // Notification that the remove user warning was shown. virtual void OnRemoveUserWarningShown() = 0;
diff --git a/ash/shelf/login_shelf_view.cc b/ash/shelf/login_shelf_view.cc index 8b0c940..0db0b1e 100644 --- a/ash/shelf/login_shelf_view.cc +++ b/ash/shelf/login_shelf_view.cc
@@ -240,7 +240,7 @@ void StartAddUser() { Shell::Get()->login_screen_controller()->ShowGaiaSignin( - true /*can_close*/, EmptyAccountId() /*prefilled_account*/); + EmptyAccountId() /*prefilled_account*/); } bool DialogStateGuestAllowed(OobeDialogState state) {
diff --git a/ash/shelf/login_shelf_view_unittest.cc b/ash/shelf/login_shelf_view_unittest.cc index b6045f9..86bb43d4 100644 --- a/ash/shelf/login_shelf_view_unittest.cc +++ b/ash/shelf/login_shelf_view_unittest.cc
@@ -422,9 +422,8 @@ // Tests that shutdown button can be clicked on the lock screen for active // session that starts with side shelf. See https://crbug.com/1050192. -// The test is flaky: https://crbug.com/1053980 TEST_F(LoginShelfViewTest, - DISABLED_ClickShutdownButtonOnLockScreenWithVerticalInSessionShelf) { + ClickShutdownButtonOnLockScreenWithVerticalInSessionShelf) { CreateUserSessions(1); SetShelfAlignmentPref( Shell::Get()->session_controller()->GetPrimaryUserPrefService(),
diff --git a/ash/wm/overview/overview_controller.cc b/ash/wm/overview/overview_controller.cc index ddbc765..5b245f13 100644 --- a/ash/wm/overview/overview_controller.cc +++ b/ash/wm/overview/overview_controller.cc
@@ -307,7 +307,8 @@ if (InOverviewSession()) { DCHECK(CanEndOverview(type)); - TRACE_EVENT_ASYNC_BEGIN0("ui", "OverviewController::ExitOverview", this); + TRACE_EVENT_NESTABLE_ASYNC_BEGIN0("ui", "OverviewController::ExitOverview", + this); // Suspend occlusion tracker until the exit animation is complete. PauseOcclusionTracker(); @@ -370,7 +371,8 @@ OnEndingAnimationComplete(/*canceled=*/false); } else { DCHECK(CanEnterOverview()); - TRACE_EVENT_ASYNC_BEGIN0("ui", "OverviewController::EnterOverview", this); + TRACE_EVENT_NESTABLE_ASYNC_BEGIN0("ui", "OverviewController::EnterOverview", + this); // Clear any animations that may be running from last overview end. for (const auto& animation : delayed_animations_) @@ -508,8 +510,8 @@ overview_session_->OnStartingAnimationComplete(canceled, should_focus_overview_); UnpauseOcclusionTracker(kOcclusionPauseDurationForStart); - TRACE_EVENT_ASYNC_END1("ui", "OverviewController::EnterOverview", this, - "canceled", canceled); + TRACE_EVENT_NESTABLE_ASYNC_END1("ui", "OverviewController::EnterOverview", + this, "canceled", canceled); } void OverviewController::OnEndingAnimationComplete(bool canceled) { @@ -522,8 +524,8 @@ for (auto& observer : observers_) observer.OnOverviewModeEndingAnimationComplete(canceled); UnpauseOcclusionTracker(occlusion_pause_duration_for_end_); - TRACE_EVENT_ASYNC_END1("ui", "OverviewController::ExitOverview", this, - "canceled", canceled); + TRACE_EVENT_NESTABLE_ASYNC_END1("ui", "OverviewController::ExitOverview", + this, "canceled", canceled); } void OverviewController::ResetPauser() {
diff --git a/base/android/jni_generator/README.md b/base/android/jni_generator/README.md index 3f0c89d..67056c3 100644 --- a/base/android/jni_generator/README.md +++ b/base/android/jni_generator/README.md
@@ -58,25 +58,15 @@ ### Calling Java -> Native -There are two ways to call native methods: - -**Method 1 - Using the 'native' keyword (soon to be deprecated)** - -- Works for both static and non-static methods. -- Methods marked as `native` will have stubs generated for them that forward - calls to C++ function (that you must write). -- If the first parameter is a C++ object (e.g. `long mNativePointer`), then the - bindings will automatically generate the appropriate cast and call into C++ - code (JNI itself is only C). - -**Method 2 - Using an interface annotated with @NativeMethods** - - Declare methods using a nested interface annotated with `@NativeMethods`. - The JNI annotation processor generates a class named `${OriginalClassName}Jni` with a `get()` method that returns an implementation of the annotated interface. The C++ function that it routes to is the same as if it would be in the legacy method. -- See example below for usage. +- For each JNI method: + - C++ stubs are generated that forward to C++ functions that you must write. + - If the first parameter is a C++ object (e.g. `long mNativePointer`), then + the bindings will generate the appropriate cast and call into C++ code. To add JNI to a class: @@ -97,32 +87,7 @@ Example: ```java -// The following classes would have the same generated native bindings (with the -// exception of differing class names). - -// Legacy/deprecated static methods -class Legacy { - static native void nativeFoo(); - static native double nativeBar(int a, int b); - - // Either the |ClassName| part of the |nativeClassName| parameter name must - // match the native class name exactly, or the method annotation - // @NativeClassQualifiedName("ClassName") must be used. - // - // If the native class is nested, use - // @NativeClassQualifiedName("FooClassName::BarClassName") and call the - // parameter |nativePointer|. - native void nativeNonStatic(long nativeClassName); - - void callNatives() { - nativeFoo() - nativeBar(1,2); - nativeNonStatic(mNativePointer); - } -} - -// Equivalent using new style: -class NewStyle { +class MyClass { // Cannot be private. Must be package or public. @NativeMethods /* package */ interface Natives { @@ -150,6 +115,13 @@ } ``` +**Using the 'native' keyword** + +- The binding generator also looks for `native` JNI method declarations and + generates stubs for them. This used to be the norm, but is now obsolete. +- If you have native methods that you don't want stubs generated for, you should + add @JniIgnoreNatives to the class. + #### Testing Mockable Natives 1. Add the `JniMocker` rule to your test.
diff --git a/build/android/apk_operations.py b/build/android/apk_operations.py index cb7a309..8ed169f 100755 --- a/build/android/apk_operations.py +++ b/build/android/apk_operations.py
@@ -66,9 +66,9 @@ def _InstallApk(devices, apk, install_dict): def install(device): if install_dict: - installer.Install(device, install_dict, apk=apk) + installer.Install(device, install_dict, apk=apk, permissions=[]) else: - device.Install(apk, allow_downgrade=True, reinstall=True) + device.Install(apk, permissions=[], allow_downgrade=True, reinstall=True) logging.info('Installing %sincremental apk.', '' if install_dict else 'non-') device_utils.DeviceUtils.parallel(devices).pMap(install) @@ -151,6 +151,7 @@ device.Install( apk_helper_instance, + permissions=[], modules=modules, fake_modules=fake_modules, allow_downgrade=True)
diff --git a/build/android/gyp/compile_resources.py b/build/android/gyp/compile_resources.py index cb44909b..0a84f46 100755 --- a/build/android/gyp/compile_resources.py +++ b/build/android/gyp/compile_resources.py
@@ -556,7 +556,9 @@ _JETIFY_SCRIPT_PATH, '-i', temp_archive.name, '-o', temp_archive.name, '-l', 'error' ] - subprocess.check_call(jetify_cmd) + env = os.environ.copy() + env['JAVA_HOME'] = build_utils.JAVA_HOME + subprocess.check_call(jetify_cmd, env=env) with zipfile.ZipFile(temp_archive.name) as zf: zf.extractall(output_path)
diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn index 49d8f48e..85bc736 100644 --- a/build/config/compiler/BUILD.gn +++ b/build/config/compiler/BUILD.gn
@@ -1527,6 +1527,13 @@ "-Wno-range-loop-analysis", ] + if (is_android) { + cflags += [ + # TODO(https://crbug.com/1016947) Clean up, enable. + "-Wno-bitwise-conditional-parentheses", + ] + } + if (llvm_force_head_revision) { cflags += [ # TODO(https://crbug.com/1050281): Clean up, enable.
diff --git a/build/fuchsia/linux.sdk.sha1 b/build/fuchsia/linux.sdk.sha1 index baf39ad3..69a614d5 100644 --- a/build/fuchsia/linux.sdk.sha1 +++ b/build/fuchsia/linux.sdk.sha1
@@ -1 +1 @@ -0.20200224.0.1 \ No newline at end of file +0.20200224.1.1 \ No newline at end of file
diff --git a/build/fuchsia/mac.sdk.sha1 b/build/fuchsia/mac.sdk.sha1 index 0a4a022b..baf39ad3 100644 --- a/build/fuchsia/mac.sdk.sha1 +++ b/build/fuchsia/mac.sdk.sha1
@@ -1 +1 @@ -0.20200222.0.1 \ No newline at end of file +0.20200224.0.1 \ No newline at end of file
diff --git a/build/linux/sysroot_scripts/sysroot-creator.sh b/build/linux/sysroot_scripts/sysroot-creator.sh index 9d47ddb..b9c2842 100644 --- a/build/linux/sysroot_scripts/sysroot-creator.sh +++ b/build/linux/sysroot_scripts/sysroot-creator.sh
@@ -356,7 +356,7 @@ # fcntl64() was introduced in glibc 2.28. Make sure to use fcntl() instead. local fcntl_h="${INSTALL_ROOT}/usr/include/fcntl.h" - sed -i '{N; s/#ifndef \(__USE_FILE_OFFSET64\nextern int fcntl\)/#ifdef \1/}' \ + sed -i '{N; s/#ifndef __USE_FILE_OFFSET64\(\nextern int fcntl\)/#if 1\1/}' \ "${fcntl_h}" # On i386, fcntl() was updated in glibc 2.28. nm -D --defined-only --with-symbol-versions "${libc_so}" | \
diff --git a/build/linux/sysroot_scripts/sysroots.json b/build/linux/sysroot_scripts/sysroots.json index 1b8a78be..ba915a9 100644 --- a/build/linux/sysroot_scripts/sysroots.json +++ b/build/linux/sysroot_scripts/sysroots.json
@@ -1,36 +1,36 @@ { "sid_amd64": { - "Sha1Sum": "9c905c99558f10e19cc878b5dca1d4bd58c607ae", + "Sha1Sum": "79a7783607a69b6f439add567eb6fcb48877085c", "SysrootDir": "debian_sid_amd64-sysroot", "Tarball": "debian_sid_amd64_sysroot.tar.xz" }, "sid_arm": { - "Sha1Sum": "917c75b57e18baf9e34c8dfd493bcf555df4f183", + "Sha1Sum": "3fcc1d4e44127006318371002a0f421a4fde2ab4", "SysrootDir": "debian_sid_arm-sysroot", "Tarball": "debian_sid_arm_sysroot.tar.xz" }, "sid_arm64": { - "Sha1Sum": "2ee3fb715f031df95b079ce6d2c8f5e8ba2cc6e4", + "Sha1Sum": "2cade9ee1ca9186b28ac768c19e1ab7c45ee0600", "SysrootDir": "debian_sid_arm64-sysroot", "Tarball": "debian_sid_arm64_sysroot.tar.xz" }, "sid_armel": { - "Sha1Sum": "3c67dc4c2180665f57587a82984fa6fc1443d970", + "Sha1Sum": "72aecf0a5603919b41cfb0766fe511c34933e915", "SysrootDir": "debian_sid_armel-sysroot", "Tarball": "debian_sid_armel_sysroot.tar.xz" }, "sid_i386": { - "Sha1Sum": "06de352631feeb333ee9daa571e9e0646c2ef1ed", + "Sha1Sum": "e954fb79fcddf64bc39d721c9a5b652b6da549fa", "SysrootDir": "debian_sid_i386-sysroot", "Tarball": "debian_sid_i386_sysroot.tar.xz" }, "sid_mips": { - "Sha1Sum": "ea6d37e2f389bb417572ddf1552a4a3995932832", + "Sha1Sum": "ca96bbdba7cc36f09790c09694fd61da44e54f06", "SysrootDir": "debian_sid_mips-sysroot", "Tarball": "debian_sid_mips_sysroot.tar.xz" }, "sid_mips64el": { - "Sha1Sum": "9279b28027ba31a60a21db1fde01e76e67814893", + "Sha1Sum": "4c1f3e3f4a11f820e152faffc49ccdfa1c435cc0", "SysrootDir": "debian_sid_mips64el-sysroot", "Tarball": "debian_sid_mips64el_sysroot.tar.xz" }
diff --git a/buildtools/DEPS b/buildtools/DEPS index 1d1ccb5..04f42e3f 100644 --- a/buildtools/DEPS +++ b/buildtools/DEPS
@@ -22,7 +22,7 @@ # once libassistant's copy of buildtools rolls up to the rename. 'libcxx_revision_v2': 'd9040c75cfea5928c804ab7c235fed06a63f743a', 'libcxxabi_revision_v2': '196ba1aaa8ac285d94f4ea8d9836390a45360533', - 'libunwind_revision_v2': 'd999d54f4bca789543a2eb6c995af2d9b5a1f3ed', + 'libunwind_revision_v2': '43bb9f872232f531bac80093ceb4de61c64b9ab7', } deps = {
diff --git a/cc/trees/ukm_manager.cc b/cc/trees/ukm_manager.cc index 04901432..5973c3f 100644 --- a/cc/trees/ukm_manager.cc +++ b/cc/trees/ukm_manager.cc
@@ -95,7 +95,7 @@ FrameSequenceTrackerType tracker_type, FrameSequenceMetrics::ThreadType thread_type, int64_t throughput) const { - ukm::builders::Graphics_Smoothness_Throughput builder(source_id_); + ukm::builders::Graphics_Smoothness_PercentDroppedFrames builder(source_id_); switch (thread_type) { case FrameSequenceMetrics::ThreadType::kMain: { switch (tracker_type) {
diff --git a/chrome/android/features/tab_ui/java/res/layout/tasks_view_layout.xml b/chrome/android/features/tab_ui/java/res/layout/tasks_view_layout.xml index bd59291..f1e2cf4c 100644 --- a/chrome/android/features/tab_ui/java/res/layout/tasks_view_layout.xml +++ b/chrome/android/features/tab_ui/java/res/layout/tasks_view_layout.xml
@@ -10,7 +10,7 @@ android:layout_width="match_parent" android:layout_height="match_parent"> - <android.support.design.widget.AppBarLayout + <com.google.android.material.appbar.AppBarLayout android:id="@+id/task_surface_header" android:layout_width="match_parent" android:layout_height="wrap_content" @@ -77,7 +77,7 @@ android:layout_marginStart="@dimen/tab_carousel_start_margin" android:visibility="gone" app:layout_scrollFlags="scroll"/> - </android.support.design.widget.AppBarLayout> + </com.google.android.material.appbar.AppBarLayout> <FrameLayout android:id="@+id/tasks_surface_body" android:layout_width="match_parent"
diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/TasksSurfaceMediator.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/TasksSurfaceMediator.java index 28d6f76..fd4603b6 100644 --- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/TasksSurfaceMediator.java +++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/TasksSurfaceMediator.java
@@ -12,11 +12,12 @@ import static org.chromium.chrome.browser.tasks.TasksSurfaceProperties.IS_VOICE_RECOGNITION_BUTTON_VISIBLE; import static org.chromium.chrome.browser.tasks.TasksSurfaceProperties.VOICE_SEARCH_BUTTON_CLICK_LISTENER; -import android.support.annotation.Nullable; import android.text.Editable; import android.text.TextWatcher; import android.view.View; +import androidx.annotation.Nullable; + import org.chromium.base.metrics.RecordUserAction; import org.chromium.chrome.browser.ntp.FakeboxDelegate; import org.chromium.chrome.browser.omnibox.LocationBar;
diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/TasksView.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/TasksView.java index bea5e64..775a3df 100644 --- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/TasksView.java +++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/TasksView.java
@@ -6,7 +6,6 @@ import android.content.Context; import android.content.res.Resources; -import android.support.design.widget.AppBarLayout; import android.text.TextWatcher; import android.util.AttributeSet; import android.view.View; @@ -17,6 +16,8 @@ import androidx.annotation.Nullable; +import com.google.android.material.appbar.AppBarLayout; + import org.chromium.base.ApiCompatibilityUtils; import org.chromium.chrome.browser.coordinator.CoordinatorLayoutForPointer; import org.chromium.chrome.browser.lifecycle.ActivityLifecycleDispatcher;
diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/NewTabTileView.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/NewTabTileView.java index 7a75de2..f9a08d0 100644 --- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/NewTabTileView.java +++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/NewTabTileView.java
@@ -5,12 +5,13 @@ package org.chromium.chrome.browser.tasks.tab_management; import android.content.Context; -import android.support.v4.view.ViewCompat; import android.util.AttributeSet; import android.view.View; import android.widget.ImageView; import android.widget.RelativeLayout; +import androidx.core.view.ViewCompat; + import org.chromium.base.ApiCompatibilityUtils; import org.chromium.chrome.tab_ui.R;
diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/SelectableTabGridView.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/SelectableTabGridView.java index 71ddec11..df4cb28 100644 --- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/SelectableTabGridView.java +++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/SelectableTabGridView.java
@@ -7,11 +7,12 @@ import android.content.Context; import android.graphics.drawable.Drawable; import android.graphics.drawable.InsetDrawable; -import android.support.graphics.drawable.AnimatedVectorDrawableCompat; -import android.support.v4.content.res.ResourcesCompat; import android.util.AttributeSet; import android.widget.ImageView; +import androidx.core.content.res.ResourcesCompat; +import androidx.vectordrawable.graphics.drawable.AnimatedVectorDrawableCompat; + import org.chromium.chrome.tab_ui.R; import org.chromium.components.browser_ui.widget.selectable_list.SelectableItemView;
diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogMediator.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogMediator.java index 2df2df9..0f93fa1 100644 --- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogMediator.java +++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogMediator.java
@@ -8,13 +8,13 @@ import android.content.Context; import android.content.res.ColorStateList; -import android.support.v7.content.res.AppCompatResources; import android.text.Editable; import android.text.TextWatcher; import android.view.View; import androidx.annotation.Nullable; import androidx.annotation.VisibleForTesting; +import androidx.appcompat.content.res.AppCompatResources; import org.chromium.base.Callback; import org.chromium.base.metrics.RecordUserAction;
diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogMenuCoordinator.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogMenuCoordinator.java index 56193ed1..d2cc33066 100644 --- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogMenuCoordinator.java +++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogMenuCoordinator.java
@@ -9,11 +9,12 @@ import android.content.Context; import android.content.res.Configuration; import android.graphics.Rect; -import android.support.annotation.IntDef; import android.view.LayoutInflater; import android.view.View; import android.widget.ListView; +import androidx.annotation.IntDef; + import org.chromium.base.ApiCompatibilityUtils; import org.chromium.base.Callback; import org.chromium.base.LifetimeAssert;
diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogParent.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogParent.java index 8e72b3b4..77c37af 100644 --- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogParent.java +++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogParent.java
@@ -16,9 +16,6 @@ import android.graphics.drawable.ColorDrawable; import android.graphics.drawable.Drawable; import android.graphics.drawable.GradientDrawable; -import android.support.v4.content.ContextCompat; -import android.support.v4.graphics.drawable.DrawableCompat; -import android.support.v4.widget.ImageViewCompat; import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; @@ -32,6 +29,9 @@ import androidx.annotation.IntDef; import androidx.annotation.NonNull; import androidx.annotation.VisibleForTesting; +import androidx.core.content.ContextCompat; +import androidx.core.graphics.drawable.DrawableCompat; +import androidx.core.widget.ImageViewCompat; import org.chromium.base.ApiCompatibilityUtils; import org.chromium.base.Callback;
diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridIphDialogParent.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridIphDialogParent.java index c2b9f31..c6cd1a29 100644 --- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridIphDialogParent.java +++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridIphDialogParent.java
@@ -10,8 +10,6 @@ import android.graphics.drawable.Animatable; import android.graphics.drawable.Drawable; import android.os.Handler; -import android.support.graphics.drawable.Animatable2Compat; -import android.support.graphics.drawable.AnimatedVectorDrawableCompat; import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; @@ -22,6 +20,8 @@ import android.widget.TextView; import androidx.annotation.VisibleForTesting; +import androidx.vectordrawable.graphics.drawable.Animatable2Compat; +import androidx.vectordrawable.graphics.drawable.AnimatedVectorDrawableCompat; import org.chromium.chrome.browser.widget.ScrimView; import org.chromium.chrome.tab_ui.R;
diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridViewBinder.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridViewBinder.java index 976f2a0..f71fddc 100644 --- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridViewBinder.java +++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridViewBinder.java
@@ -11,10 +11,6 @@ import android.graphics.drawable.Drawable; import android.graphics.drawable.InsetDrawable; import android.os.Build; -import android.support.graphics.drawable.AnimatedVectorDrawableCompat; -import android.support.v4.content.res.ResourcesCompat; -import android.support.v4.graphics.drawable.DrawableCompat; -import android.support.v4.view.ViewCompat; import android.text.TextUtils; import android.view.View; import android.view.ViewGroup; @@ -22,6 +18,10 @@ import android.widget.TextView; import androidx.annotation.Nullable; +import androidx.core.content.res.ResourcesCompat; +import androidx.core.graphics.drawable.DrawableCompat; +import androidx.core.view.ViewCompat; +import androidx.vectordrawable.graphics.drawable.AnimatedVectorDrawableCompat; import org.chromium.base.ApiCompatibilityUtils; import org.chromium.base.Callback;
diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGroupUiToolbarView.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGroupUiToolbarView.java index 8227fc6..cc45521 100644 --- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGroupUiToolbarView.java +++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGroupUiToolbarView.java
@@ -7,7 +7,6 @@ import android.content.Context; import android.content.res.ColorStateList; import android.graphics.Color; -import android.support.v4.widget.TextViewCompat; import android.text.TextWatcher; import android.util.AttributeSet; import android.view.Gravity; @@ -17,6 +16,8 @@ import android.widget.FrameLayout; import android.widget.LinearLayout; +import androidx.core.widget.TextViewCompat; + import org.chromium.base.ApiCompatibilityUtils; import org.chromium.chrome.tab_ui.R; import org.chromium.ui.widget.ChromeImageView;
diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListFaviconProvider.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListFaviconProvider.java index 4898fa3..5e18e3a4 100644 --- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListFaviconProvider.java +++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListFaviconProvider.java
@@ -10,9 +10,9 @@ import android.graphics.Canvas; import android.graphics.PorterDuff; import android.graphics.drawable.Drawable; -import android.support.v7.content.res.AppCompatResources; import androidx.annotation.ColorInt; +import androidx.appcompat.content.res.AppCompatResources; import org.chromium.base.Callback; import org.chromium.chrome.browser.favicon.FaviconHelper;
diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListViewBinder.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListViewBinder.java index 9c245c2..6da5fae 100644 --- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListViewBinder.java +++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListViewBinder.java
@@ -8,13 +8,13 @@ import android.graphics.drawable.Drawable; import android.graphics.drawable.InsetDrawable; import android.os.Build; -import android.support.v4.content.res.ResourcesCompat; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; import androidx.annotation.Nullable; +import androidx.core.content.res.ResourcesCompat; import org.chromium.chrome.tab_ui.R; import org.chromium.ui.modelutil.PropertyKey;
diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabSelectionEditorMediator.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabSelectionEditorMediator.java index f19f27c..a6e13cc4 100644 --- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabSelectionEditorMediator.java +++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabSelectionEditorMediator.java
@@ -7,12 +7,12 @@ import android.content.Context; import android.content.res.ColorStateList; import android.graphics.Rect; -import android.support.annotation.ColorInt; -import android.support.v7.content.res.AppCompatResources; import android.view.View; +import androidx.annotation.ColorInt; import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import androidx.appcompat.content.res.AppCompatResources; import org.chromium.base.ApiCompatibilityUtils; import org.chromium.chrome.browser.tab.Tab;
diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabSelectionEditorToolbar.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabSelectionEditorToolbar.java index 78df541..2f33529 100644 --- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabSelectionEditorToolbar.java +++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabSelectionEditorToolbar.java
@@ -6,11 +6,12 @@ import android.content.Context; import android.content.res.ColorStateList; -import android.support.annotation.ColorInt; -import android.support.v7.content.res.AppCompatResources; import android.util.AttributeSet; import android.widget.Button; +import androidx.annotation.ColorInt; +import androidx.appcompat.content.res.AppCompatResources; + import org.chromium.chrome.tab_ui.R; import org.chromium.components.browser_ui.widget.NumberRollView; import org.chromium.components.browser_ui.widget.TintedDrawable;
diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabStripViewBinder.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabStripViewBinder.java index 4a0fbb0..ccca398 100644 --- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabStripViewBinder.java +++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabStripViewBinder.java
@@ -5,13 +5,13 @@ package org.chromium.chrome.browser.tasks.tab_management; import android.graphics.drawable.Drawable; -import android.support.v4.content.res.ResourcesCompat; -import android.support.v4.view.ViewCompat; -import android.support.v7.content.res.AppCompatResources; import android.view.ViewGroup; import android.widget.ImageButton; import androidx.annotation.Nullable; +import androidx.appcompat.content.res.AppCompatResources; +import androidx.core.content.res.ResourcesCompat; +import androidx.core.view.ViewCompat; import org.chromium.chrome.tab_ui.R; import org.chromium.ui.modelutil.PropertyKey;
diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabUiColorProvider.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabUiColorProvider.java index 4c47fa5..4c229fd00 100644 --- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabUiColorProvider.java +++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabUiColorProvider.java
@@ -7,9 +7,9 @@ import android.content.Context; import android.content.res.ColorStateList; import android.graphics.drawable.Drawable; -import android.support.v7.content.res.AppCompatResources; import androidx.annotation.ColorInt; +import androidx.appcompat.content.res.AppCompatResources; import org.chromium.base.ApiCompatibilityUtils; import org.chromium.chrome.tab_ui.R;
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadController.java b/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadController.java index 9eaf212..fdf9b7b 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadController.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadController.java
@@ -16,7 +16,6 @@ import org.chromium.base.annotations.NativeMethods; import org.chromium.chrome.R; import org.chromium.chrome.browser.ChromeActivity; -import org.chromium.chrome.browser.flags.CachedFeatureFlags; import org.chromium.chrome.browser.flags.ChromeFeatureList; import org.chromium.chrome.browser.permissions.AndroidPermissionRequester; import org.chromium.chrome.browser.tab.Tab; @@ -250,7 +249,7 @@ @CalledByNative private static void onDownloadStarted() { if (!BrowserStartupController.getInstance().isFullBrowserStarted()) return; - if (CachedFeatureFlags.isDownloadProgressInfoBarEnabled()) return; + if (ChromeFeatureList.isEnabled(ChromeFeatureList.DOWNLOAD_PROGRESS_INFOBAR)) return; DownloadUtils.showDownloadStartToast(ContextUtils.getApplicationContext()); }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadInfoBarController.java b/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadInfoBarController.java index 3ed46c97..0478834 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadInfoBarController.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadInfoBarController.java
@@ -23,7 +23,6 @@ import org.chromium.chrome.browser.ChromeTabbedActivity; import org.chromium.chrome.browser.DeviceConditions; import org.chromium.chrome.browser.download.items.OfflineContentAggregatorFactory; -import org.chromium.chrome.browser.flags.CachedFeatureFlags; import org.chromium.chrome.browser.flags.ChromeFeatureList; import org.chromium.chrome.browser.infobar.DownloadProgressInfoBar; import org.chromium.chrome.browser.infobar.IPHInfoBarSupport; @@ -418,7 +417,7 @@ */ private void computeNextStepForUpdate(OfflineItem updatedItem, boolean forceShowDownloadStarted, boolean userCancel, boolean itemWasRemoved) { - if (!CachedFeatureFlags.isDownloadProgressInfoBarEnabled()) return; + if (!ChromeFeatureList.isEnabled(ChromeFeatureList.DOWNLOAD_PROGRESS_INFOBAR)) return; if (updatedItem != null && mIgnoredItems.contains(updatedItem.id)) return; @@ -753,7 +752,7 @@ */ @VisibleForTesting protected void showInfoBar(@DownloadInfoBarState int state, DownloadProgressInfoBarData info) { - if (!CachedFeatureFlags.isDownloadProgressInfoBarEnabled()) return; + if (!ChromeFeatureList.isEnabled(ChromeFeatureList.DOWNLOAD_PROGRESS_INFOBAR)) return; mCurrentInfo = info;
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/flags/CachedFeatureFlags.java b/chrome/android/java/src/org/chromium/chrome/browser/flags/CachedFeatureFlags.java index a38fdc57..9753ef6 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/flags/CachedFeatureFlags.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/flags/CachedFeatureFlags.java
@@ -201,7 +201,6 @@ */ public static void cacheAdditionalNativeFlags() { cacheNightModeAvailable(); - cacheNightModeDefaultToLight(); cacheNetworkServiceWarmUpEnabled(); cacheNativeTabSwitcherUiFlags(); cacheReachedCodeProfilerTrialGroup(); @@ -308,46 +307,6 @@ } /** - * Cache whether or not to default to the light theme when the night mode feature is enabled. - */ - public static void cacheNightModeDefaultToLight() { - // Do not cache on Q (where defaulting to light theme does not apply) or if night mode is - // not enabled. - if (BuildInfo.isAtLeastQ() - || !ChromeFeatureList.isEnabled(ChromeFeatureList.ANDROID_NIGHT_MODE)) { - return; - } - - String lightModeDefaultParam = "default_light_theme"; - boolean lightModeAsDefault = ChromeFeatureList.getFieldTrialParamByFeatureAsBoolean( - ChromeFeatureList.ANDROID_NIGHT_MODE, lightModeDefaultParam, true); - - SharedPreferencesManager.getInstance().writeBoolean( - ChromePreferenceKeys.FLAGS_CACHED_NIGHT_MODE_DEFAULT_TO_LIGHT, lightModeAsDefault); - } - - /** - * @return Whether or not to default to the light theme when the night mode feature is enabled. - */ - public static boolean isNightModeDefaultToLight() { - if (BuildInfo.isAtLeastQ()) { - return false; - } - return getConsistentBooleanValue( - ChromePreferenceKeys.FLAGS_CACHED_NIGHT_MODE_DEFAULT_TO_LIGHT, true); - } - - /** - * Toggles whether the night mode experiment is enabled for testing. Should be reset back to - * null after the test has finished. - */ - @VisibleForTesting - public static void setNightModeDefaultToLightForTesting(@Nullable Boolean available) { - sBoolValuesReturned.put( - ChromePreferenceKeys.FLAGS_CACHED_NIGHT_MODE_DEFAULT_TO_LIGHT, available); - } - - /** * @return Whether or not night mode experiment is enabled (i.e. night mode experiment is * enabled) for custom tabs. */ @@ -367,13 +326,6 @@ return isEnabled(ChromeFeatureList.COMMAND_LINE_ON_NON_ROOTED); } - /** - * @return Whether or not the download progress infobar is enabled. - */ - public static boolean isDownloadProgressInfoBarEnabled() { - return ChromeFeatureList.isEnabled(ChromeFeatureList.DOWNLOAD_PROGRESS_INFOBAR); - } - private static void cacheStartSurfaceVariation() { String feature = ChromeFeatureList.getFieldTrialParamByFeature( ChromeFeatureList.START_SURFACE_ANDROID, "start_surface_variation");
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/infobar/PermissionInfoBar.java b/chrome/android/java/src/org/chromium/chrome/browser/infobar/PermissionInfoBar.java index d7d49a0c..bcc9336c 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/infobar/PermissionInfoBar.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/infobar/PermissionInfoBar.java
@@ -13,16 +13,15 @@ import org.chromium.chrome.browser.settings.SettingsLauncher; import org.chromium.chrome.browser.settings.website.SingleCategorySettings; import org.chromium.chrome.browser.settings.website.SiteSettingsCategory; -import org.chromium.chrome.browser.tab.Tab; +import org.chromium.ui.base.WindowAndroid; /** * An infobar used for prompting the user to grant a web API permission. */ public class PermissionInfoBar extends ConfirmInfoBar implements AndroidPermissionRequester.RequestDelegate { - - /** The tab which this infobar will be displayed upon. */ - protected final Tab mTab; + /** The window which this infobar will be displayed upon. */ + protected final WindowAndroid mWindow; /** The content settings types corresponding to the permission requested in this infobar. */ protected int[] mContentSettingsTypes; @@ -42,12 +41,12 @@ /** The secondary text shown below the message in the expanded state. */ private String mDescription; - protected PermissionInfoBar(Tab tab, int[] contentSettingsTypes, int iconDrawableId, - String compactMessage, String compactLinkText, String message, String description, - String primaryButtonText, String secondaryButtonText) { + protected PermissionInfoBar(WindowAndroid window, int[] contentSettingsTypes, + int iconDrawableId, String compactMessage, String compactLinkText, String message, + String description, String primaryButtonText, String secondaryButtonText) { super(iconDrawableId, R.color.infobar_icon_drawable_color, null /* iconBitmap */, message, null /* linkText */, primaryButtonText, secondaryButtonText); - mTab = tab; + mWindow = window; mContentSettingsTypes = contentSettingsTypes; mManageButtonLastClicked = false; mIsExpanded = false; @@ -88,7 +87,7 @@ // requestAndroidPermissions will call back into this class to finalize the action if it // returns true. if (AndroidPermissionRequester.requestAndroidPermissions( - mTab, mContentSettingsTypes.clone(), this)) { + mWindow, mContentSettingsTypes.clone(), this)) { return; } } else { @@ -137,7 +136,7 @@ /** * Creates and begins the process for showing a PermissionInfoBar. - * @param tab The owning tab for the infobar. + * @param window The window this infobar will be displayed upon. * @param contentSettingsTypes The list of ContentSettingTypes being requested by this infobar. * @param enumeratedIconId ID corresponding to the icon that will be shown for the infobar. * The ID must have been mapped using the ResourceMapper class @@ -150,12 +149,12 @@ * @param buttonManage String to display on the Manage button. */ @CalledByNative - private static PermissionInfoBar create(Tab tab, int[] contentSettingsTypes, + private static PermissionInfoBar create(WindowAndroid window, int[] contentSettingsTypes, int enumeratedIconId, String compactMessage, String compactLinkText, String message, String description, String buttonOk, String buttonManage) { int drawableId = ResourceId.mapToDrawableId(enumeratedIconId); - PermissionInfoBar infoBar = new PermissionInfoBar(tab, contentSettingsTypes, drawableId, + PermissionInfoBar infoBar = new PermissionInfoBar(window, contentSettingsTypes, drawableId, compactMessage, compactLinkText, message, description, buttonOk, buttonManage); return infoBar;
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/night_mode/NightModeUtils.java b/chrome/android/java/src/org/chromium/chrome/browser/night_mode/NightModeUtils.java index 45e569c..2c3a400 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/night_mode/NightModeUtils.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/night_mode/NightModeUtils.java
@@ -16,8 +16,8 @@ import androidx.annotation.StyleRes; import androidx.annotation.VisibleForTesting; +import org.chromium.base.BuildInfo; import org.chromium.chrome.browser.ChromeBaseAppCompatActivity; -import org.chromium.chrome.browser.flags.CachedFeatureFlags; import org.chromium.chrome.browser.preferences.SharedPreferencesManager; /** @@ -25,6 +25,7 @@ */ public class NightModeUtils { private static Boolean sNightModeSupportedForTest; + private static Boolean sNightModeDefaultToLightForTesting; /** * Due to Lemon issues on resources access, night mode is disabled on Kitkat until the issue is @@ -137,8 +138,7 @@ public static @ThemeType int getThemeSetting() { int userSetting = SharedPreferencesManager.getInstance().readInt(UI_THEME_SETTING, -1); if (userSetting == -1) { - return CachedFeatureFlags.isNightModeDefaultToLight() ? ThemeType.LIGHT - : ThemeType.SYSTEM_DEFAULT; + return isNightModeDefaultToLight() ? ThemeType.LIGHT : ThemeType.SYSTEM_DEFAULT; } else { return userSetting; } @@ -148,4 +148,23 @@ public static void setNightModeSupportedForTesting(@Nullable Boolean nightModeSupported) { sNightModeSupportedForTest = nightModeSupported; } + + /** + * @return Whether or not to default to the light theme when the night mode feature is enabled. + */ + public static boolean isNightModeDefaultToLight() { + if (sNightModeDefaultToLightForTesting != null) { + return sNightModeDefaultToLightForTesting; + } + return !BuildInfo.isAtLeastQ(); + } + + /** + * Toggles whether the night mode experiment is enabled for testing. Should be reset back to + * null after the test has finished. + */ + @VisibleForTesting + public static void setNightModeDefaultToLightForTesting(@Nullable Boolean available) { + sNightModeDefaultToLightForTesting = available; + } }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/downloads/OfflinePageDownloadBridge.java b/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/downloads/OfflinePageDownloadBridge.java index 0ef500e..fabacee 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/downloads/OfflinePageDownloadBridge.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/downloads/OfflinePageDownloadBridge.java
@@ -31,7 +31,7 @@ import org.chromium.chrome.browser.download.DownloadNotifier; import org.chromium.chrome.browser.download.DownloadSharedPreferenceEntry; import org.chromium.chrome.browser.download.DownloadSharedPreferenceHelper; -import org.chromium.chrome.browser.flags.CachedFeatureFlags; +import org.chromium.chrome.browser.flags.ChromeFeatureList; import org.chromium.chrome.browser.offlinepages.OfflinePageOrigin; import org.chromium.chrome.browser.offlinepages.OfflinePageUtils; import org.chromium.chrome.browser.tab.Tab; @@ -233,7 +233,7 @@ */ @CalledByNative public static void showDownloadingToast() { - if (CachedFeatureFlags.isDownloadProgressInfoBarEnabled()) { + if (ChromeFeatureList.isEnabled(ChromeFeatureList.DOWNLOAD_PROGRESS_INFOBAR)) { DownloadManagerService.getDownloadManagerService() .getInfoBarController(false) .onDownloadStarted();
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/downloads/OfflinePageNotificationBridge.java b/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/downloads/OfflinePageNotificationBridge.java index 24796120..2dd1cd97 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/downloads/OfflinePageNotificationBridge.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/downloads/OfflinePageNotificationBridge.java
@@ -14,7 +14,7 @@ import org.chromium.chrome.browser.download.DownloadSharedPreferenceEntry; import org.chromium.chrome.browser.download.DownloadSharedPreferenceHelper; import org.chromium.chrome.browser.download.items.OfflineContentAggregatorFactory; -import org.chromium.chrome.browser.flags.CachedFeatureFlags; +import org.chromium.chrome.browser.flags.ChromeFeatureList; import org.chromium.chrome.browser.offlinepages.OfflinePageOrigin; import org.chromium.components.offline_items_collection.ContentId; import org.chromium.components.offline_items_collection.FailState; @@ -207,7 +207,7 @@ */ @CalledByNative public static void showDownloadingToast() { - if (CachedFeatureFlags.isDownloadProgressInfoBarEnabled()) { + if (ChromeFeatureList.isEnabled(ChromeFeatureList.DOWNLOAD_PROGRESS_INFOBAR)) { intializeOfflineItemsCollection(); DownloadManagerService.getDownloadManagerService() .getInfoBarController(false)
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/paint_preview/PaintPreviewTabHelper.java b/chrome/android/java/src/org/chromium/chrome/browser/paint_preview/PaintPreviewTabHelper.java index 8061207e..a07f2d0 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/paint_preview/PaintPreviewTabHelper.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/paint_preview/PaintPreviewTabHelper.java
@@ -6,7 +6,6 @@ import org.chromium.chrome.browser.tab.EmptyTabObserver; import org.chromium.chrome.browser.tab.Tab; -import org.chromium.content_public.browser.NavigationHandle; /** * Manages the Paint Preview component for a given {@link Tab}. Destroyed together with the tab. @@ -26,7 +25,7 @@ } @Override - public void onDidFinishNavigation(Tab tab, NavigationHandle navigationHandle) { + public void onPageLoadFinished(Tab tab, String url) { if (qualifiesForCapture(tab)) { PaintPreviewExperiments.runCaptureExperiment(tab.getWebContents()); }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/payments/AndroidPaymentApp.java b/chrome/android/java/src/org/chromium/chrome/browser/payments/AndroidPaymentApp.java index 61d7578..1b1587f 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/payments/AndroidPaymentApp.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/payments/AndroidPaymentApp.java
@@ -25,11 +25,13 @@ import org.chromium.IsReadyToPayServiceCallback; import org.chromium.base.ContextUtils; import org.chromium.base.ThreadUtils; +import org.chromium.base.task.PostTask; import org.chromium.chrome.R; import org.chromium.chrome.browser.ChromeActivity; import org.chromium.components.payments.ErrorStrings; import org.chromium.components.url_formatter.SchemeDisplay; import org.chromium.components.url_formatter.UrlFormatter; +import org.chromium.content_public.browser.UiThreadTaskTraits; import org.chromium.content_public.browser.WebContents; import org.chromium.payments.mojom.PaymentCurrencyAmount; import org.chromium.payments.mojom.PaymentDetailsModifier; @@ -239,6 +241,7 @@ } private void respondToIsReadyToPayQuery(boolean isReadyToPay) { + ThreadUtils.assertOnUiThread(); if (mServiceConnection != null) { if (mIsServiceBindingInitiated) { // mServiceConnection "parameter must not be null." @@ -255,12 +258,14 @@ } private void sendIsReadyToPayIntentToPaymentApp(IsReadyToPayService isReadyToPayService) { + ThreadUtils.assertOnUiThread(); if (mIsReadyToPayCallback == null) return; mIsReadyToPayQueried = true; IsReadyToPayServiceCallback.Stub callback = new IsReadyToPayServiceCallback.Stub() { @Override public void handleIsReadyToPay(boolean isReadyToPay) throws RemoteException { - respondToIsReadyToPayQuery(isReadyToPay); + PostTask.runOrPostTask( + UiThreadTaskTraits.DEFAULT, () -> respondToIsReadyToPayQuery(isReadyToPay)); } }; try {
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/permissions/AndroidPermissionRequester.java b/chrome/android/java/src/org/chromium/chrome/browser/permissions/AndroidPermissionRequester.java index c3b01531..609eb2d67 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/permissions/AndroidPermissionRequester.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/permissions/AndroidPermissionRequester.java
@@ -15,7 +15,6 @@ import org.chromium.chrome.R; import org.chromium.chrome.browser.metrics.WebApkUma; import org.chromium.chrome.browser.settings.website.WebsitePreferenceBridge; -import org.chromium.chrome.browser.tab.Tab; import org.chromium.chrome.browser.webapps.WebApkActivity; import org.chromium.components.content_settings.ContentSettingsType; import org.chromium.ui.base.PermissionCallback; @@ -89,9 +88,8 @@ * If true is returned, this method will asynchronously request the necessary permissions using * a dialog, running methods on the RequestDelegate when the user has made a decision. */ - public static boolean requestAndroidPermissions( - final Tab tab, final int[] contentSettingsTypes, final RequestDelegate delegate) { - final WindowAndroid windowAndroid = tab.getWindowAndroid(); + public static boolean requestAndroidPermissions(final WindowAndroid windowAndroid, + final int[] contentSettingsTypes, final RequestDelegate delegate) { if (windowAndroid == null) return false; final SparseArray<String[]> contentSettingsTypesToPermissionsMap = @@ -149,7 +147,9 @@ + deniedContentSettings; showMissingPermissionDialog(activity, deniedStringId, - () -> requestAndroidPermissions(tab, contentSettingsTypes, delegate), + () + -> requestAndroidPermissions( + windowAndroid, contentSettingsTypes, delegate), delegate::onAndroidPermissionCanceled); } else if (deniedContentSettings.isEmpty()) { delegate.onAndroidPermissionAccepted();
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/permissions/PermissionDialogController.java b/chrome/android/java/src/org/chromium/chrome/browser/permissions/PermissionDialogController.java index dd84e2e..c41f326 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/permissions/PermissionDialogController.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/permissions/PermissionDialogController.java
@@ -5,13 +5,12 @@ package org.chromium.chrome.browser.permissions; import android.annotation.SuppressLint; +import android.app.Activity; import androidx.annotation.IntDef; import androidx.annotation.VisibleForTesting; import org.chromium.base.annotations.CalledByNative; -import org.chromium.chrome.browser.ChromeActivity; -import org.chromium.chrome.browser.tab.TabImpl; import org.chromium.ui.modaldialog.DialogDismissalCause; import org.chromium.ui.modaldialog.ModalDialogManager; import org.chromium.ui.modaldialog.ModalDialogProperties; @@ -138,7 +137,7 @@ assert mState == State.NOT_SHOWING; mDialogDelegate = mRequestQueue.remove(0); - ChromeActivity activity = ((TabImpl) mDialogDelegate.getTab()).getActivity(); + Activity activity = mDialogDelegate.getWindow().getActivity().get(); // It's possible for the activity to be null if we reach here just after the user // backgrounds the browser and cleanup has happened. In that case, we can't show a prompt, @@ -158,8 +157,7 @@ return; } - mModalDialogManager = - ((TabImpl) mDialogDelegate.getTab()).getActivity().getModalDialogManager(); + mModalDialogManager = mDialogDelegate.getWindow().getModalDialogManager(); mDialogModel = PermissionDialogModel.getModel(this, mDialogDelegate); mModalDialogManager.showDialog(mDialogModel, ModalDialogManager.ModalDialogType.TAB); mState = State.PROMPT_OPEN; @@ -205,7 +203,7 @@ // no system level permissions need to be requested, so just run the // accept callback. mState = State.REQUEST_ANDROID_PERMISSIONS; - if (!AndroidPermissionRequester.requestAndroidPermissions(mDialogDelegate.getTab(), + if (!AndroidPermissionRequester.requestAndroidPermissions(mDialogDelegate.getWindow(), mDialogDelegate.getContentSettingsTypes(), PermissionDialogController.this)) { onAndroidPermissionAccepted();
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/permissions/PermissionDialogDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/permissions/PermissionDialogDelegate.java index 07d4099..d0287e3 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/permissions/PermissionDialogDelegate.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/permissions/PermissionDialogDelegate.java
@@ -7,7 +7,7 @@ import org.chromium.base.annotations.CalledByNative; import org.chromium.base.annotations.NativeMethods; import org.chromium.chrome.browser.ResourceId; -import org.chromium.chrome.browser.tab.Tab; +import org.chromium.ui.base.WindowAndroid; /** * Delegate class for modal permission dialogs. Contains all of the data displayed in a prompt, @@ -24,8 +24,8 @@ /** The controller for this class */ private PermissionDialogController mDialogController; - /** The tab for which to create the dialog. */ - private Tab mTab; + /** The window for which to create the dialog. */ + private WindowAndroid mWindow; /** The icon to display in the dialog. */ private int mDrawableId; @@ -42,8 +42,8 @@ /** The {@link ContentSettingsType}s requested in this dialog. */ private int[] mContentSettingsTypes; - public Tab getTab() { - return mTab; + public WindowAndroid getWindow() { + return mWindow; } public int[] getContentSettingsTypes() { @@ -105,7 +105,7 @@ * Called from C++ by |nativeDelegatePtr| to instantiate this class. * * @param nativeDelegatePtr The native counterpart that this object owns. - * @param tab The tab to create the dialog for. + * @param window The window to create the dialog for. * @param contentSettingsTypes The content settings types requested by this dialog. * @param iconResourceId The id of the icon to display in the dialog. * @param message The message to display in the dialog. @@ -113,21 +113,21 @@ * @param secondaryTextButton The text to display on the primary button. */ @CalledByNative - private static PermissionDialogDelegate create(long nativeDelegatePtr, Tab tab, + private static PermissionDialogDelegate create(long nativeDelegatePtr, WindowAndroid window, int[] contentSettingsTypes, int enumeratedIconId, String message, String primaryButtonText, String secondaryButtonText) { - return new PermissionDialogDelegate(nativeDelegatePtr, tab, contentSettingsTypes, + return new PermissionDialogDelegate(nativeDelegatePtr, window, contentSettingsTypes, enumeratedIconId, message, primaryButtonText, secondaryButtonText); } /** * Upon construction, this class takes ownership of the passed in native delegate. */ - private PermissionDialogDelegate(long nativeDelegatePtr, Tab tab, int[] contentSettingsTypes, - int enumeratedIconId, String message, String primaryButtonText, - String secondaryButtonText) { + private PermissionDialogDelegate(long nativeDelegatePtr, WindowAndroid window, + int[] contentSettingsTypes, int enumeratedIconId, String message, + String primaryButtonText, String secondaryButtonText) { mNativeDelegatePtr = nativeDelegatePtr; - mTab = tab; + mWindow = window; mContentSettingsTypes = contentSettingsTypes; mDrawableId = ResourceId.mapToDrawableId(enumeratedIconId); mMessageText = message;
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/permissions/PermissionDialogModel.java b/chrome/android/java/src/org/chromium/chrome/browser/permissions/PermissionDialogModel.java index f620466..ebb0c3e 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/permissions/PermissionDialogModel.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/permissions/PermissionDialogModel.java
@@ -12,7 +12,6 @@ import android.widget.TextView; import org.chromium.chrome.R; -import org.chromium.chrome.browser.tab.TabImpl; import org.chromium.ui.modaldialog.ModalDialogProperties; import org.chromium.ui.modelutil.PropertyModel; @@ -22,7 +21,8 @@ class PermissionDialogModel { public static PropertyModel getModel( ModalDialogProperties.Controller controller, PermissionDialogDelegate delegate) { - Context context = ((TabImpl) delegate.getTab()).getActivity(); + Context context = delegate.getWindow().getActivity().get(); + assert context != null; LayoutInflater inflater = LayoutInflater.from(context); View customView = inflater.inflate(R.layout.permission_dialog, null);
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/webauth/OWNERS b/chrome/android/java/src/org/chromium/chrome/browser/webauth/OWNERS index 50890b7..99c79f6 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/webauth/OWNERS +++ b/chrome/android/java/src/org/chromium/chrome/browser/webauth/OWNERS
@@ -1,5 +1,4 @@ -kenrb@chromium.org -kpaulhamus@chromium.org +file://device/fido/OWNERS -# COMPONENT: Blink>WebAuthentication # TEAM: identity-dev@chromium.org +# COMPONENT: Blink>WebAuthentication
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/night_mode/settings/ThemeSettingsFragmentTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/night_mode/settings/ThemeSettingsFragmentTest.java index c0dd0f2..dab5d73 100644 --- a/chrome/android/javatests/src/org/chromium/chrome/browser/night_mode/settings/ThemeSettingsFragmentTest.java +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/night_mode/settings/ThemeSettingsFragmentTest.java
@@ -24,7 +24,6 @@ import org.chromium.base.test.params.ParameterizedRunner; import org.chromium.base.test.util.Feature; import org.chromium.chrome.R; -import org.chromium.chrome.browser.flags.CachedFeatureFlags; import org.chromium.chrome.browser.night_mode.NightModeUtils; import org.chromium.chrome.browser.night_mode.ThemeType; import org.chromium.chrome.browser.preferences.SharedPreferencesManager; @@ -60,7 +59,7 @@ public ThemeSettingsFragmentTest(boolean defaultToLight) { mDefaultToLight = defaultToLight; - CachedFeatureFlags.setNightModeDefaultToLightForTesting(defaultToLight); + NightModeUtils.setNightModeDefaultToLightForTesting(defaultToLight); } @Override @@ -83,7 +82,7 @@ SharedPreferencesManager.getInstance().removeKey(UI_THEME_DARKEN_WEBSITES_ENABLED); }); - CachedFeatureFlags.setNightModeDefaultToLightForTesting(null); + NightModeUtils.setNightModeDefaultToLightForTesting(null); super.tearDownTest(); } @@ -95,7 +94,7 @@ // Default to light parameter is only applicable pre-Q. if (mDefaultToLight && BuildInfo.isAtLeastQ()) { Assert.assertFalse("Q should not default to light.", - CachedFeatureFlags.isNightModeDefaultToLight()); + NightModeUtils.isNightModeDefaultToLight()); return; } @@ -140,7 +139,7 @@ // Default to light parameter is only applicable pre-Q. if (mDefaultToLight && BuildInfo.isAtLeastQ()) { Assert.assertFalse("Q should not default to light.", - CachedFeatureFlags.isNightModeDefaultToLight()); + NightModeUtils.isNightModeDefaultToLight()); return; }
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/night_mode/GlobalNightModeStateControllerTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/night_mode/GlobalNightModeStateControllerTest.java index 49c88f4..94583e7b 100644 --- a/chrome/android/junit/src/org/chromium/chrome/browser/night_mode/GlobalNightModeStateControllerTest.java +++ b/chrome/android/junit/src/org/chromium/chrome/browser/night_mode/GlobalNightModeStateControllerTest.java
@@ -30,7 +30,6 @@ import org.chromium.base.test.BaseRobolectricTestRunner; import org.chromium.base.test.util.DisableIf; -import org.chromium.chrome.browser.flags.CachedFeatureFlags; import org.chromium.chrome.browser.preferences.SharedPreferencesManager; /** @@ -110,13 +109,13 @@ @Test @DisableIf.Build(sdk_is_greater_than = Build.VERSION_CODES.P) public void testUpdateNightMode_PowerSaveMode_DefaultsToLight() { - CachedFeatureFlags.setNightModeDefaultToLightForTesting(true); + NightModeUtils.setNightModeDefaultToLightForTesting(true); // Enable power save mode and verify night mode is not enabled. setIsPowerSaveMode(true); assertFalse(mGlobalNightModeStateController.isInNightMode()); - CachedFeatureFlags.setNightModeDefaultToLightForTesting(null); + NightModeUtils.setNightModeDefaultToLightForTesting(null); } @Test @@ -137,13 +136,13 @@ @Test @DisableIf.Build(sdk_is_greater_than = Build.VERSION_CODES.P) public void testUpdateNightMode_SystemNightMode_DefaultsToLight() { - CachedFeatureFlags.setNightModeDefaultToLightForTesting(true); + NightModeUtils.setNightModeDefaultToLightForTesting(true); // Enable system night mode and verify night mode is not enabled. setSystemNightMode(true); assertFalse(mGlobalNightModeStateController.isInNightMode()); - CachedFeatureFlags.setNightModeDefaultToLightForTesting(null); + NightModeUtils.setNightModeDefaultToLightForTesting(null); } @Test
diff --git a/chrome/app/chrome_command_ids.h b/chrome/app/chrome_command_ids.h index 6f1d335..edd20f8 100644 --- a/chrome/app/chrome_command_ids.h +++ b/chrome/app/chrome_command_ids.h
@@ -59,8 +59,6 @@ #define IDC_MINIMIZE_WINDOW 34046 #define IDC_MAXIMIZE_WINDOW 34047 #define IDC_ALL_WINDOWS_FRONT 34048 -#define IDC_VISIT_DESKTOP_OF_LRU_USER_2 34049 -#define IDC_VISIT_DESKTOP_OF_LRU_USER_3 34050 #if defined(OS_LINUX) && !defined(OS_CHROMEOS) #define IDC_USE_SYSTEM_TITLE_BAR 34051 @@ -80,6 +78,14 @@ // Terminal system app commands #define IDC_TERMINAL_SPLIT_HORIZONTAL 34070 #define IDC_TERMINAL_SPLIT_VERTICAL 34071 + +// Move window to other user commands +#define IDC_VISIT_DESKTOP_OF_LRU_USER_2 34080 +#define IDC_VISIT_DESKTOP_OF_LRU_USER_3 34081 +#define IDC_VISIT_DESKTOP_OF_LRU_USER_4 34082 +#define IDC_VISIT_DESKTOP_OF_LRU_USER_5 34083 +#define IDC_VISIT_DESKTOP_OF_LRU_USER_NEXT IDC_VISIT_DESKTOP_OF_LRU_USER_2 +#define IDC_VISIT_DESKTOP_OF_LRU_USER_LAST IDC_VISIT_DESKTOP_OF_LRU_USER_5 #endif // Page-related commands
diff --git a/chrome/app/chromeos_strings.grdp b/chrome/app/chromeos_strings.grdp index 66427a5..98e0be2 100644 --- a/chrome/app/chromeos_strings.grdp +++ b/chrome/app/chromeos_strings.grdp
@@ -2652,7 +2652,7 @@ Successful enrollment illustration </message> <message name="IDS_ENTERPRISE_ENROLLMENT_SUCCESS_DOMAIN" desc="Success message to be shown once enterprise enrollment completes."> - This <ph name="DEVICE_TYPE">$1<ex>Chromebook</ex></ph> will be managed by <ph name="BEGIN_BOLD"><strong></ph><ph name="DOMAIN">$2<ex>acmecorp.com</ex></ph><ph name="END_BOLD"></strong></ph>. + This <ph name="DEVICE_TYPE">$1<ex>Chromebook</ex></ph> will be managed by <ph name="DOMAIN">$2<ex>acmecorp.com</ex></ph>. </message> <message name="IDS_ENTERPRISE_ENROLLMENT_SUCCESS_ABE_SUPPORT" desc="Recommendation to contact support. Shown once attestation-based enterprise enrollment completes."> If this is unexpected, please contact support.
diff --git a/chrome/app/settings_strings.grdp b/chrome/app/settings_strings.grdp index 8e8560e6..45d2c40c 100644 --- a/chrome/app/settings_strings.grdp +++ b/chrome/app/settings_strings.grdp
@@ -1920,6 +1920,9 @@ <message name="IDS_SETTINGS_WAKE_ON_WIFI_DESCRIPTION" desc="In the settings tab, the text next to the checkbox for enabling quickly reconnecting to known Wi-Fi SSIDs."> Keep Wi-Fi on during sleep </message> + <message name="IDS_SETTINGS_PERMISSIONS" desc="Name of the settings page which allows users to manage permissions and site content settings"> + Permissions and content settings + </message> <message name="IDS_SETTINGS_SECURITY" desc="Name of the settings page which allows users to manage security settings"> Security @@ -1975,6 +1978,48 @@ <message name="IDS_SETTINGS_SYNC_AND_GOOGLE_SERVICES_PRIVACY_DESC_UNIFIED_CONSENT" desc="The description of the 'Sync and Google services' row in the privacy section"> More settings that relate to privacy, security, and data collection </message> + <message name="IDS_SETTINGS_RECENT_PERMISSIONS_NO_CHANGES" desc="Text shown to a user when they have not changed any site permissions instead of showing recently changed permissions"> + No recently changed permissions + </message> + <message name="IDS_SETTINGS_RECENT_PERMISSIONS_CHANGE_AUTOBLOCKED_SENTENCE_START" desc="An indicator that a specific permission has been automatically blocked by the browser, This will be used to start a sentence or by itself"> + Automatically blocked <ph name="PERMISSION">$1<ex>Notifications</ex></ph> + </message> + <message name="IDS_SETTINGS_RECENT_PERMISSIONS_CHANGE_BLOCKED_SENTENCE_START" desc="An indicator that a specific permission has been blocked for a website by the user. This will be used to start a sentence or by itself"> + Blocked <ph name="PERMISSION">$1<ex>Location</ex></ph> + </message> + <message name="IDS_SETTINGS_RECENT_PERMISSIONS_CHANGE_ALLOWED_SENTENCE_START" desc="An indicator that a specific permission has been allowed for a website by the user. This will be used to start a sentence or by itself"> + Allowed <ph name="PERMISSION">$1<ex>Camera</ex></ph> + </message> + <message name="IDS_SETTINGS_RECENT_PERMISSIONS_CHANGE_AUTOBLOCKED" desc="An indicator that a specific permission has been automatically blocked by the browser, This will be used inside a sentance"> + automatically blocked <ph name="PERMISSION">$1<ex>Notifications</ex></ph> + </message> + <message name="IDS_SETTINGS_RECENT_PERMISSIONS_CHANGE_BLOCKED" desc="An indicator that a specific permission has been blocked for a website by the user. This will be used inside a sentance"> + blocked <ph name="PERMISSION">$1<ex>Location</ex></ph> + </message> + <message name="IDS_SETTINGS_RECENT_PERMISSIONS_CHANGE_ALLOWED" desc="An indicator that a specific permission has been allowed for a website by the user. This will be used inside of a sentance"> + allowed <ph name="PERMISSION">$1<ex>Camera</ex></ph> + </message> + <message name="IDS_SETTINGS_RECENT_PERMISSIONS_TWO_ITEMS" desc="A list containing two permissions which have recently changed"> + <ph name="RECENT_PERMISSIONS_CHANGE_SENTENCE_START">$1<ex>Automatically blocked Notifications</ex></ph>, <ph name="RECENT_PERMISSIONS_CHANGE">$2<ex>blocked Location</ex></ph> + </message> + <message name="IDS_SETTINGS_RECENT_PERMISSIONS_THREE_ITEMS" desc="A list containing three permissions which have recently changed"> + <ph name="RECENT_PERMISSIONS_CHANGE_SENTENCE_START">$1<ex>Automatically blocked Notifications</ex></ph>, <ph name="RECENT_PERMISSIONS_CHANGE_1">$2<ex>blocked Location</ex></ph>, <ph name="RECENT_PERMISSIONS_CHANGE_2">$3<ex>allowed Camera</ex></ph> + </message> + <message name="IDS_SETTINGS_RECENT_PERMISSIONS_OVER_THREE_ITEMS" desc="A list containing three permissions that have recently changed, but indicating that more have also changed recently"> + <ph name="RECENT_PERMISSIONS_CHANGE_SENTENCE_START">$1<ex>Automatically blocked Notifications</ex></ph>, <ph name="RECENT_PERMISSIONS_CHANGE_1">$2<ex>blocked Location</ex></ph>, <ph name="RECENT_PERMISSIONS_CHANGE_2">$3<ex>allowed Camera</ex></ph>, and more + </message> + <message name="IDS_SETTINGS_RECENT_PERMISSIONS_ONE_ITEM_INCOGNITO" desc="A list containing a single permission which has recently changed in the users incognito session"> + Current incognito session: <ph name="RECENT_PERMISSIONS_CHANGE_SENTENCE_START">$1<ex>automatically blocked Notifications</ex></ph> + </message> + <message name="IDS_SETTINGS_RECENT_PERMISSIONS_TWO_ITEMS_INCOGNITO" desc="A list containing two permissions which have recently changed in the users incognito session"> + Current incognito session: <ph name="RECENT_PERMISSIONS_CHANGE_SENTENCE_START">$1<ex>automatically blocked Notifications</ex></ph>, <ph name="RECENT_PERMISSIONS_CHANGE_1">$2<ex>blocked Location</ex></ph> + </message> + <message name="IDS_SETTINGS_RECENT_PERMISSIONS_THREE_ITEMS_INCOGNITO" desc="A list containing three permissions which have recently changed in the users incognito session"> + Current incognito session: <ph name="RECENT_PERMISSIONS_CHANGE_SENTENCE_START">$1<ex>automatically blocked Notifications</ex></ph>, <ph name="RECENT_PERMISSIONS_CHANGE_1">$2<ex>blocked Location</ex></ph>, <ph name="RECENT_PERMISSIONS_CHANGE_2">$3<ex>allowed Camera</ex></ph> + </message> + <message name="IDS_SETTINGS_RECENT_PERMISSIONS_OVER_THREE_ITEMS_INCOGNITO" desc="A list containing three permissions that have recently changed, but indicating that more have also changed recently"> + Current incognito session: <ph name="RECENT_PERMISSIONS_CHANGE_SENTENCE_START">$1<ex>automatically blocked Notifications</ex></ph>, <ph name="RECENT_PERMISSIONS_CHANGE_1">$2<ex>blocked Location</ex></ph>, <ph name="RECENT_PERMISSIONS_CHANGE_2">$3<ex>allowed Camera</ex></ph>, and more + </message> <!-- Reset Settings Page --> <message name="IDS_SETTINGS_RESET" desc="Title for an item in the 'Reset and clean up' section of Chrome Settings. If the user clicks this option, browser settings will be returned to their default values, after a confirmation by the user." meaning="Chrome Cleanup feature. Try to use the same translation for 'Reset' in 'Reset and cleanup' string."> @@ -2322,6 +2367,9 @@ Allow identifiers for protected content (computer restart may be required) </message> </if> + <message name="IDS_SETTINGS_SITE_SETTINGS_RECENT_ACTIVITY" desc="Label for the section which contains the user's recent permissions changes"> + Recent activity + </message> <message name="IDS_SETTINGS_SITE_SETTINGS_UNSANDBOXED_PLUGINS" desc="Label for the unsandboxed plugin access site settings."> Unsandboxed plugin access </message> @@ -3369,7 +3417,7 @@ <message name="IDS_SETTINGS_KEYBOARD_SHOW_LANGUAGE_AND_INPUT" desc="The link to navigate to the language and input method settings."> Change language and input settings </message> - + <!-- Display --> <message name="IDS_SETTINGS_DISPLAY_TITLE" desc="In Device Settings, the title for display settings."> Displays
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn index dce271a..21687f0 100644 --- a/chrome/browser/BUILD.gn +++ b/chrome/browser/BUILD.gn
@@ -627,6 +627,7 @@ "installable/installable_manager.h", "installable/installable_metrics.cc", "installable/installable_metrics.h", + "installable/installable_params.cc", "installable/installable_params.h", "installable/installable_task_queue.cc", "installable/installable_task_queue.h",
diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc index 063cd333..324a9a2 100644 --- a/chrome/browser/about_flags.cc +++ b/chrome/browser/about_flags.cc
@@ -3335,13 +3335,6 @@ "HTTPReallyBadFinal")}, #if !defined(OS_ANDROID) - {"enable-web-authentication-testing-api", - flag_descriptions::kEnableWebAuthenticationTestingAPIName, - flag_descriptions::kEnableWebAuthenticationTestingAPIDescription, - kOsDesktop, SINGLE_VALUE_TYPE(switches::kEnableWebAuthTestingAPI)}, -#endif // !defined(OS_ANDROID) - -#if !defined(OS_ANDROID) {"enable-web-authentication-cable-v2-support", flag_descriptions::kEnableWebAuthenticationCableV2SupportName, flag_descriptions::kEnableWebAuthenticationCableV2SupportDescription, @@ -3479,10 +3472,6 @@ flag_descriptions::kBuiltInModuleAllDescription, kOsAll, FEATURE_VALUE_TYPE(features::kBuiltInModuleAll)}, - {"enable-display-locking", flag_descriptions::kEnableDisplayLockingName, - flag_descriptions::kEnableDisplayLockingDescription, kOsAll, - FEATURE_VALUE_TYPE(blink::features::kDisplayLocking)}, - {"enable-layout-ng", flag_descriptions::kEnableLayoutNGName, flag_descriptions::kEnableLayoutNGDescription, kOsAll, FEATURE_VALUE_TYPE(blink::features::kLayoutNG)}, @@ -3878,11 +3867,6 @@ #endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || // defined(OS_CHROMEOS) - {"shared-clipboard-receiver", - flag_descriptions::kSharedClipboardReceiverName, - flag_descriptions::kSharedClipboardReceiverDescription, kOsAll, - FEATURE_VALUE_TYPE(kSharedClipboardReceiver)}, - {"shared-clipboard-ui", flag_descriptions::kSharedClipboardUIName, flag_descriptions::kSharedClipboardUIDescription, kOsAll, FEATURE_VALUE_TYPE(kSharedClipboardUI)},
diff --git a/chrome/browser/android/shortcut_helper.cc b/chrome/browser/android/shortcut_helper.cc index fb766b6..dde3a09 100644 --- a/chrome/browser/android/shortcut_helper.cc +++ b/chrome/browser/android/shortcut_helper.cc
@@ -228,12 +228,6 @@ return g_minimum_splash_image_size; } -int ShortcutHelper::GetIdealBadgeIconSizeInPx() { - if (g_ideal_badge_icon_size == -1) - GetIconSizes(); - return g_ideal_badge_icon_size; -} - int ShortcutHelper::GetIdealAdaptiveLauncherIconSizeInPx() { if (g_ideal_adaptive_launcher_icon_size == -1) GetIconSizes();
diff --git a/chrome/browser/android/shortcut_helper.h b/chrome/browser/android/shortcut_helper.h index d5026e3..b8ed8d4a 100644 --- a/chrome/browser/android/shortcut_helper.h +++ b/chrome/browser/android/shortcut_helper.h
@@ -60,9 +60,6 @@ // screen. static int GetMinimumSplashImageSizeInPx(); - // Returns the ideal size for a badge icon of a WebAPK. - static int GetIdealBadgeIconSizeInPx(); - // Returns the ideal size for an adaptive launcher icon of a WebAPK static int GetIdealAdaptiveLauncherIconSizeInPx();
diff --git a/chrome/browser/android/webapps/add_to_homescreen_data_fetcher_unittest.cc b/chrome/browser/android/webapps/add_to_homescreen_data_fetcher_unittest.cc index 8e2f5dc..43969ce 100644 --- a/chrome/browser/android/webapps/add_to_homescreen_data_fetcher_unittest.cc +++ b/chrome/browser/android/webapps/add_to_homescreen_data_fetcher_unittest.cc
@@ -467,10 +467,9 @@ EXPECT_EQ(fetcher->shortcut_info().best_primary_icon_url, GURL(kDefaultIconUrl)); - // Check that the badge icon is requested. - EXPECT_FALSE(fetcher->badge_icon().drawsNothing()); - EXPECT_EQ(fetcher->shortcut_info().best_badge_icon_url, - GURL(kDefaultIconUrl)); + // No badge icon as InstallableManager does not fetch badge icon. + EXPECT_TRUE(fetcher->badge_icon().drawsNothing()); + EXPECT_TRUE(fetcher->shortcut_info().best_badge_icon_url.is_empty()); CheckHistograms(histograms); }
diff --git a/chrome/browser/chromeos/login/saml/saml_browsertest.cc b/chrome/browser/chromeos/login/saml/saml_browsertest.cc index fcddb737..90f4396 100644 --- a/chrome/browser/chromeos/login/saml/saml_browsertest.cc +++ b/chrome/browser/chromeos/login/saml/saml_browsertest.cc
@@ -1798,7 +1798,7 @@ // successful log in - but only if the appropriate policy is enabled. IN_PROC_BROWSER_TEST_P(SAMLPasswordAttributesTest, LoginSucceeded) { // LoginDisplayHostMojo does not show Oobe dialog by default. - LoginDisplayHost::default_host()->ShowGaiaDialog(true, EmptyAccountId()); + LoginDisplayHost::default_host()->ShowGaiaDialog(EmptyAccountId()); fake_saml_idp()->SetLoginHTMLTemplate("saml_login.html"); fake_saml_idp()->SetSamlResponseFile("saml_with_password_attributes.xml"); @@ -1833,7 +1833,7 @@ // Verify that no password attributes are stored when login fails. IN_PROC_BROWSER_TEST_P(SAMLPasswordAttributesTest, LoginFailed) { // LoginDisplayHostMojo does not show Oobe dialog by default. - LoginDisplayHost::default_host()->ShowGaiaDialog(true, EmptyAccountId()); + LoginDisplayHost::default_host()->ShowGaiaDialog(EmptyAccountId()); fake_saml_idp()->SetLoginHTMLTemplate("saml_login.html"); fake_saml_idp()->SetSamlResponseFile("saml_with_password_attributes.xml");
diff --git a/chrome/browser/chromeos/login/ui/fake_login_display_host.cc b/chrome/browser/chromeos/login/ui/fake_login_display_host.cc index 6b32ff61..746acb2 100644 --- a/chrome/browser/chromeos/login/ui/fake_login_display_host.cc +++ b/chrome/browser/chromeos/login/ui/fake_login_display_host.cc
@@ -114,8 +114,7 @@ return false; } -void FakeLoginDisplayHost::ShowGaiaDialog(bool can_close, - const AccountId& prefilled_account) {} +void FakeLoginDisplayHost::ShowGaiaDialog(const AccountId& prefilled_account) {} void FakeLoginDisplayHost::HideOobeDialog() {}
diff --git a/chrome/browser/chromeos/login/ui/fake_login_display_host.h b/chrome/browser/chromeos/login/ui/fake_login_display_host.h index 2990687..6907ff6 100644 --- a/chrome/browser/chromeos/login/ui/fake_login_display_host.h +++ b/chrome/browser/chromeos/login/ui/fake_login_display_host.h
@@ -54,8 +54,7 @@ void LoadWallpaper(const AccountId& account_id) override; void LoadSigninWallpaper() override; bool IsUserWhitelisted(const AccountId& account_id) override; - void ShowGaiaDialog(bool can_close, - const AccountId& prefilled_account) override; + void ShowGaiaDialog(const AccountId& prefilled_account) override; void HideOobeDialog() override; void UpdateOobeDialogState(ash::OobeDialogState state) override; const user_manager::UserList GetUsers() override;
diff --git a/chrome/browser/chromeos/login/ui/login_display_host.h b/chrome/browser/chromeos/login/ui/login_display_host.h index e80a646e..a3a5c60 100644 --- a/chrome/browser/chromeos/login/ui/login_display_host.h +++ b/chrome/browser/chromeos/login/ui/login_display_host.h
@@ -134,10 +134,9 @@ // Starts web kiosk splash screen. virtual void StartWebKiosk(const AccountId& account_id) = 0; - // Show the gaia dialog. |can_close| determines if the user is allowed to - // close the dialog. If available, |account| is preloaded in the gaia dialog. - virtual void ShowGaiaDialog(bool can_close, - const AccountId& prefilled_account) = 0; + // Show the gaia dialog. If available, |account| is preloaded in the gaia + // dialog. + virtual void ShowGaiaDialog(const AccountId& prefilled_account) = 0; // Hide any visible oobe dialog. virtual void HideOobeDialog() = 0;
diff --git a/chrome/browser/chromeos/login/ui/login_display_host_mojo.cc b/chrome/browser/chromeos/login/ui/login_display_host_mojo.cc index cec0aae..75026dd3 100644 --- a/chrome/browser/chromeos/login/ui/login_display_host_mojo.cc +++ b/chrome/browser/chromeos/login/ui/login_display_host_mojo.cc
@@ -254,15 +254,8 @@ NOTIMPLEMENTED(); } -void LoginDisplayHostMojo::ShowGaiaDialog(bool can_close, - const AccountId& prefilled_account) { +void LoginDisplayHostMojo::ShowGaiaDialog(const AccountId& prefilled_account) { DCHECK(GetOobeUI()); - can_close_dialog_ = can_close; - - // Always disabling closing if there are no users, otherwise a blank screen - // will be displayed. - if (users_.empty()) - can_close_dialog_ = false; ShowGaiaDialogCommon(prefilled_account); @@ -271,8 +264,6 @@ void LoginDisplayHostMojo::HideOobeDialog() { DCHECK(dialog_); - if (!can_close_dialog_) - return; // The dialog can not be hidden if there are no users on the login screen. // Reload it instead.
diff --git a/chrome/browser/chromeos/login/ui/login_display_host_mojo.h b/chrome/browser/chromeos/login/ui/login_display_host_mojo.h index d3257e4..cad1666 100644 --- a/chrome/browser/chromeos/login/ui/login_display_host_mojo.h +++ b/chrome/browser/chromeos/login/ui/login_display_host_mojo.h
@@ -83,8 +83,7 @@ void OnPreferencesChanged() override; void OnStartAppLaunch() override; void OnBrowserCreated() override; - void ShowGaiaDialog(bool can_close, - const AccountId& prefilled_account) override; + void ShowGaiaDialog(const AccountId& prefilled_account) override; void HideOobeDialog() override; void UpdateOobeDialogState(ash::OobeDialogState state) override; const user_manager::UserList GetUsers() override; @@ -176,7 +175,6 @@ // Called after host deletion. std::vector<base::OnceClosure> completion_callbacks_; OobeUIDialogDelegate* dialog_ = nullptr; // Not owned. - bool can_close_dialog_ = true; std::unique_ptr<WizardController> wizard_controller_; // Users that are visible in the views login screen.
diff --git a/chrome/browser/chromeos/login/ui/login_display_host_webui.cc b/chrome/browser/chromeos/login/ui/login_display_host_webui.cc index 6a487b5..df4ff48 100644 --- a/chrome/browser/chromeos/login/ui/login_display_host_webui.cc +++ b/chrome/browser/chromeos/login/ui/login_display_host_webui.cc
@@ -949,8 +949,7 @@ } } -void LoginDisplayHostWebUI::ShowGaiaDialog(bool can_close, - const AccountId& prefilled_account) { +void LoginDisplayHostWebUI::ShowGaiaDialog(const AccountId& prefilled_account) { // This is a special case, when WebUI sign-in screen shown with Views-based // launch bar. Then "Add user" button will be Views-based, and user click // will result in this call.
diff --git a/chrome/browser/chromeos/login/ui/login_display_host_webui.h b/chrome/browser/chromeos/login/ui/login_display_host_webui.h index ef757fa..0221c32 100644 --- a/chrome/browser/chromeos/login/ui/login_display_host_webui.h +++ b/chrome/browser/chromeos/login/ui/login_display_host_webui.h
@@ -81,8 +81,7 @@ void OnPreferencesChanged() override; void OnStartAppLaunch() override; void OnBrowserCreated() override; - void ShowGaiaDialog(bool can_close, - const AccountId& prefilled_account) override; + void ShowGaiaDialog(const AccountId& prefilled_account) override; void HideOobeDialog() override; void UpdateOobeDialogState(ash::OobeDialogState state) override; const user_manager::UserList GetUsers() override; @@ -91,7 +90,6 @@ void HandleDisplayCaptivePortal() override; void UpdateAddUserButtonStatus() override; void RequestSystemInfoUpdate() override; - void OnCancelPasswordChangedFlow() override; // Trace id for ShowLoginWebUI event (since there exists at most one login
diff --git a/chrome/browser/chromeos/login/ui/mock_login_display_host.h b/chrome/browser/chromeos/login/ui/mock_login_display_host.h index b1c8cb8..1441757c 100644 --- a/chrome/browser/chromeos/login/ui/mock_login_display_host.h +++ b/chrome/browser/chromeos/login/ui/mock_login_display_host.h
@@ -52,7 +52,7 @@ MOCK_METHOD0(StartDemoAppLaunch, void(void)); MOCK_METHOD1(StartArcKiosk, void(const AccountId&)); MOCK_METHOD1(StartWebKiosk, void(const AccountId&)); - MOCK_METHOD2(ShowGaiaDialog, void(bool, const AccountId&)); + MOCK_METHOD1(ShowGaiaDialog, void(const AccountId&)); MOCK_METHOD0(HideOobeDialog, void()); MOCK_METHOD1(UpdateOobeDialogState, void(ash::OobeDialogState state)); MOCK_METHOD0(GetUsers, const user_manager::UserList(void));
diff --git a/chrome/browser/chromeos/policy/device_login_screen_policy_browsertest.cc b/chrome/browser/chromeos/policy/device_login_screen_policy_browsertest.cc index 64fabcdb..5a59e9b 100644 --- a/chrome/browser/chromeos/policy/device_login_screen_policy_browsertest.cc +++ b/chrome/browser/chromeos/policy/device_login_screen_policy_browsertest.cc
@@ -5,6 +5,7 @@ #include <string> #include "ash/public/cpp/ash_pref_names.h" +#include "ash/public/cpp/login_screen_test_api.h" #include "base/bind.h" #include "base/bind_helpers.h" #include "base/command_line.h" @@ -17,12 +18,15 @@ #include "base/values.h" #include "chrome/browser/chromeos/accessibility/accessibility_manager.h" #include "chrome/browser/chromeos/accessibility/magnification_manager.h" +#include "chrome/browser/chromeos/login/test/oobe_screen_waiter.h" +#include "chrome/browser/chromeos/login/test/test_predicate_waiter.h" #include "chrome/browser/chromeos/policy/device_policy_builder.h" #include "chrome/browser/chromeos/policy/device_policy_cros_browser_test.h" #include "chrome/browser/chromeos/profiles/profile_helper.h" #include "chrome/browser/lifetime/application_lifetime.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/profiles/profile_manager.h" +#include "chrome/browser/ui/webui/chromeos/login/gaia_screen_handler.h" #include "chrome/common/pref_names.h" #include "chromeos/constants/chromeos_switches.h" #include "components/policy/core/common/policy_types.h" @@ -196,4 +200,36 @@ prefs->SetBoolean(prefs::kPrimaryMouseButtonRight, false); EXPECT_EQ(base::Value(false), GetPrefValue(prefs::kPrimaryMouseButtonRight)); } + +// Tests that enabling/disabling public accounts correctly reflects in the login +// UI. +IN_PROC_BROWSER_TEST_F(DeviceLoginScreenPolicyBrowsertest, DeviceLocalAccount) { + chromeos::OobeScreenWaiter(chromeos::GaiaView::kScreenId).Wait(); + + // Wait for Gaia dialog to be open. + chromeos::test::TestPredicateWaiter(base::BindRepeating([]() { + return ash::LoginScreenTestApi::IsOobeDialogVisible(); + })).Wait(); + + em::ChromeDeviceSettingsProto& proto(device_policy()->payload()); + auto* account = proto.mutable_device_local_accounts()->add_account(); + account->set_account_id("test"); + account->set_type( + em::DeviceLocalAccountInfoProto_AccountType_ACCOUNT_TYPE_PUBLIC_SESSION); + RefreshDevicePolicy(); + + // Wait for Gaia dialog to be hidden. + chromeos::test::TestPredicateWaiter(base::BindRepeating([]() { + return !ash::LoginScreenTestApi::IsOobeDialogVisible(); + })).Wait(); + + proto.clear_device_local_accounts(); + RefreshDevicePolicy(); + + // Wait for Gaia dialog to be open. + chromeos::test::TestPredicateWaiter(base::BindRepeating([]() { + return ash::LoginScreenTestApi::IsOobeDialogVisible(); + })).Wait(); +} + } // namespace policy
diff --git a/chrome/browser/devtools/chrome_devtools_manager_delegate.cc b/chrome/browser/devtools/chrome_devtools_manager_delegate.cc index 259a849..8f2fe3f0 100644 --- a/chrome/browser/devtools/chrome_devtools_manager_delegate.cc +++ b/chrome/browser/devtools/chrome_devtools_manager_delegate.cc
@@ -23,13 +23,17 @@ #include "chrome/browser/ui/browser_navigator.h" #include "chrome/browser/ui/browser_navigator_params.h" #include "chrome/browser/ui/tab_contents/tab_contents_iterator.h" +#include "chrome/common/chrome_switches.h" #include "chrome/grit/browser_resources.h" #include "components/guest_view/browser/guest_view_base.h" +#include "components/keep_alive_registry/keep_alive_types.h" +#include "components/keep_alive_registry/scoped_keep_alive.h" #include "content/public/browser/devtools_agent_host.h" #include "content/public/browser/devtools_agent_host_client_channel.h" #include "content/public/browser/render_frame_host.h" #include "content/public/browser/render_process_host.h" #include "content/public/browser/web_contents.h" +#include "content/public/common/content_switches.h" #include "extensions/browser/extension_host.h" #include "extensions/browser/extension_registry.h" #include "extensions/browser/process_manager.h" @@ -88,6 +92,18 @@ ChromeDevToolsManagerDelegate::ChromeDevToolsManagerDelegate() { DCHECK(!g_instance); g_instance = this; + + base::CommandLine* command_line = base::CommandLine::ForCurrentProcess(); + if (command_line->HasSwitch(switches::kNoStartupWindow) && + (command_line->HasSwitch(switches::kRemoteDebuggingPipe) || + command_line->HasSwitch(switches::kRemoteDebuggingPort))) { + // If running without a startup window with remote debugging, + // we are controlled entirely by the automation process. + // Keep the application running until explicit close through DevTools + // protocol. + keep_alive_.reset(new ScopedKeepAlive(KeepAliveOrigin::REMOTE_DEBUGGING, + KeepAliveRestartOption::DISABLED)); + } } ChromeDevToolsManagerDelegate::~ChromeDevToolsManagerDelegate() { @@ -319,3 +335,9 @@ // task using a raw pointer to the DeviceManager we just deleted. device_discovery_.reset(); } + +void ChromeDevToolsManagerDelegate::BrowserCloseRequested() { + // Do not keep the application running anymore, we got an explicit request + // to close. + keep_alive_.reset(); +}
diff --git a/chrome/browser/devtools/chrome_devtools_manager_delegate.h b/chrome/browser/devtools/chrome_devtools_manager_delegate.h index 8098398..0db17bc 100644 --- a/chrome/browser/devtools/chrome_devtools_manager_delegate.h +++ b/chrome/browser/devtools/chrome_devtools_manager_delegate.h
@@ -20,6 +20,7 @@ #include "net/base/host_port_pair.h" class ChromeDevToolsSession; +class ScopedKeepAlive; using RemoteLocations = std::set<net::HostPortPair>; namespace extensions { @@ -53,6 +54,8 @@ std::vector<content::BrowserContext*> GetBrowserContexts() override; content::BrowserContext* GetDefaultBrowserContext() override; + void BrowserCloseRequested(); + private: friend class DevToolsManagerDelegateTest; @@ -90,6 +93,7 @@ std::unique_ptr<DevToolsDeviceDiscovery> device_discovery_; content::DevToolsAgentHost::List remote_agent_hosts_; RemoteLocations remote_locations_; + std::unique_ptr<ScopedKeepAlive> keep_alive_; DISALLOW_COPY_AND_ASSIGN(ChromeDevToolsManagerDelegate); };
diff --git a/chrome/browser/devtools/devtools_sanity_browsertest.cc b/chrome/browser/devtools/devtools_sanity_browsertest.cc index 69c84807..4f8f968 100644 --- a/chrome/browser/devtools/devtools_sanity_browsertest.cc +++ b/chrome/browser/devtools/devtools_sanity_browsertest.cc
@@ -39,9 +39,11 @@ #include "chrome/browser/extensions/extension_service.h" #include "chrome/browser/extensions/unpacked_installer.h" #include "chrome/browser/lifetime/application_lifetime.h" +#include "chrome/browser/lifetime/browser_shutdown.h" #include "chrome/browser/policy/chrome_browser_policy_connector.h" #include "chrome/browser/policy/developer_tools_policy_handler.h" #include "chrome/browser/profiles/profile.h" +#include "chrome/browser/profiles/profile_manager.h" #include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/browser_commands.h" #include "chrome/browser/ui/browser_list.h" @@ -61,6 +63,8 @@ #include "components/autofill/core/common/autofill_features.h" #include "components/javascript_dialogs/app_modal_dialog_controller.h" #include "components/javascript_dialogs/app_modal_dialog_view.h" +#include "components/keep_alive_registry/keep_alive_registry.h" +#include "components/keep_alive_registry/keep_alive_types.h" #include "components/policy/core/common/mock_configuration_policy_provider.h" #include "components/policy/core/common/policy_map.h" #include "components/policy/policy_constants.h" @@ -2358,6 +2362,8 @@ } IN_PROC_BROWSER_TEST_F(InProcessBrowserTest, BrowserCloseWithBeforeUnload) { + EXPECT_FALSE(KeepAliveRegistry::GetInstance()->IsOriginRegistered( + KeepAliveOrigin::REMOTE_DEBUGGING)); ui_test_utils::NavigateToURL(browser(), GURL(url::kAboutBlankURL)); WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents(); ASSERT_TRUE(content::ExecuteScript( @@ -2370,6 +2376,30 @@ ui_test_utils::WaitForBrowserToClose(browser()); } +class KeepAliveDevToolsTest : public InProcessBrowserTest { + protected: + void SetUpCommandLine(base::CommandLine* command_line) override { + command_line->AppendSwitchASCII(switches::kRemoteDebuggingPort, "0"); + command_line->AppendSwitch(switches::kNoStartupWindow); + } +}; + +IN_PROC_BROWSER_TEST_F(KeepAliveDevToolsTest, KeepsAliveUntilBrowserClose) { + EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); + EXPECT_TRUE(BrowserList::GetInstance()->empty()); + EXPECT_TRUE(KeepAliveRegistry::GetInstance()->IsKeepingAlive()); + EXPECT_TRUE(KeepAliveRegistry::GetInstance()->IsOriginRegistered( + KeepAliveOrigin::REMOTE_DEBUGGING)); + chrome::NewEmptyWindow(ProfileManager::GetLastUsedProfile()); + EXPECT_FALSE(BrowserList::GetInstance()->empty()); + BrowserHandler handler(nullptr, std::string()); + handler.Close(); + ui_test_utils::WaitForBrowserToClose(); + EXPECT_FALSE(KeepAliveRegistry::GetInstance()->IsKeepingAlive()); + EXPECT_FALSE(KeepAliveRegistry::GetInstance()->IsOriginRegistered( + KeepAliveOrigin::REMOTE_DEBUGGING)); +} + class DevToolsPolicyTest : public InProcessBrowserTest { protected: DevToolsPolicyTest() {
diff --git a/chrome/browser/devtools/protocol/browser_handler.cc b/chrome/browser/devtools/protocol/browser_handler.cc index 79a6a57d..c3abe25 100644 --- a/chrome/browser/devtools/protocol/browser_handler.cc +++ b/chrome/browser/devtools/protocol/browser_handler.cc
@@ -112,8 +112,12 @@ } Response BrowserHandler::Close() { - base::PostTask(FROM_HERE, {content::BrowserThread::UI}, - base::BindOnce([]() { chrome::ExitIgnoreUnloadHandlers(); })); + base::PostTask( + FROM_HERE, {content::BrowserThread::UI}, base::BindOnce([]() { + if (ChromeDevToolsManagerDelegate::GetInstance()) + ChromeDevToolsManagerDelegate::GetInstance()->BrowserCloseRequested(); + chrome::ExitIgnoreUnloadHandlers(); + })); return Response::OK(); }
diff --git a/chrome/browser/extensions/api/passwords_private/passwords_private_delegate_impl.cc b/chrome/browser/extensions/api/passwords_private/passwords_private_delegate_impl.cc index 9799da4b..699711a 100644 --- a/chrome/browser/extensions/api/passwords_private/passwords_private_delegate_impl.cc +++ b/chrome/browser/extensions/api/passwords_private/passwords_private_delegate_impl.cc
@@ -25,6 +25,7 @@ #include "components/password_manager/core/browser/password_list_sorter.h" #include "components/password_manager/core/browser/password_manager_util.h" #include "components/password_manager/core/browser/password_ui_utils.h" +#include "components/password_manager/core/browser/ui/plaintext_reason.h" #include "components/password_manager/core/common/password_manager_features.h" #include "components/prefs/pref_service.h" #include "content/public/browser/web_contents.h" @@ -223,25 +224,39 @@ return; } - if (reason == api::passwords_private::PLAINTEXT_REASON_COPY) { - // In case of copy we don't need to give password back to UI. callback - // will receive either empty string in case of success or null otherwise. - // Copying occurs here so javascript doesn't need plaintext password. - callback = base::BindOnce( - [](PlaintextPasswordCallback callback, - base::Optional<base::string16> password) { - if (!password) { - std::move(callback).Run(base::nullopt); - return; - } - ui::ScopedClipboardWriter(ui::ClipboardBuffer::kCopyPaste) - .WriteText(*password); - std::move(callback).Run(base::string16()); - }, - std::move(callback)); + password_manager::PlaintextReason presenter_reason = + password_manager::PlaintextReason::kView; + + switch (reason) { + case api::passwords_private::PLAINTEXT_REASON_VIEW: + break; + case api::passwords_private::PLAINTEXT_REASON_COPY: + presenter_reason = password_manager::PlaintextReason::kCopy; + // In case of copy we don't need to give password back to UI. callback + // will receive either empty string in case of success or null otherwise. + // Copying occurs here so javascript doesn't need plaintext password. + callback = base::BindOnce( + [](PlaintextPasswordCallback callback, + base::Optional<base::string16> password) { + if (!password) { + std::move(callback).Run(base::nullopt); + return; + } + ui::ScopedClipboardWriter(ui::ClipboardBuffer::kCopyPaste) + .WriteText(*password); + std::move(callback).Run(base::string16()); + }, + std::move(callback)); + break; + case api::passwords_private::PLAINTEXT_REASON_EDIT: + presenter_reason = password_manager::PlaintextReason::kEdit; + break; + case api::passwords_private::PLAINTEXT_REASON_NONE: + NOTREACHED(); + break; } - password_manager_presenter_->RequestPlaintextPassword(*sort_key, - std::move(callback)); + password_manager_presenter_->RequestPlaintextPassword( + *sort_key, presenter_reason, std::move(callback)); } bool PasswordsPrivateDelegateImpl::OsReauthCall(
diff --git a/chrome/browser/extensions/api/passwords_private/passwords_private_delegate_impl_unittest.cc b/chrome/browser/extensions/api/passwords_private/passwords_private_delegate_impl_unittest.cc index b1f50a2..992496f 100644 --- a/chrome/browser/extensions/api/passwords_private/passwords_private_delegate_impl_unittest.cc +++ b/chrome/browser/extensions/api/passwords_private/passwords_private_delegate_impl_unittest.cc
@@ -14,6 +14,7 @@ #include "base/run_loop.h" #include "base/strings/utf_string_conversions.h" #include "base/test/bind_test_util.h" +#include "base/test/metrics/histogram_tester.h" #include "base/test/mock_callback.h" #include "base/values.h" #include "chrome/browser/extensions/api/passwords_private/passwords_private_delegate.h" @@ -25,6 +26,7 @@ #include "chrome/test/base/testing_profile.h" #include "components/autofill/core/common/password_form.h" #include "components/password_manager/core/browser/password_list_sorter.h" +#include "components/password_manager/core/browser/password_manager_metrics_util.h" #include "components/password_manager/core/browser/password_manager_test_utils.h" #include "components/password_manager/core/browser/reauth_purpose.h" #include "components/password_manager/core/browser/test_password_store.h" @@ -41,11 +43,12 @@ using ::testing::Ne; using ::testing::Return; using ::testing::StrictMock; - namespace extensions { namespace { +constexpr char kHistogramName[] = "PasswordManager.AccessPasswordInSettings"; + using MockPlaintextPasswordCallback = base::MockCallback<PasswordsPrivateDelegate::PlaintextPasswordCallback>; @@ -117,6 +120,8 @@ // PasswordsPrivateEventRouter. void SetUpRouters(); + base::HistogramTester& histogram_tester() { return histogram_tester_; } + protected: content::BrowserTaskEnvironment task_environment_; TestingProfile profile_; @@ -125,6 +130,7 @@ ui::TestClipboard::CreateForCurrentThread(); private: + base::HistogramTester histogram_tester_; DISALLOW_COPY_AND_ASSIGN(PasswordsPrivateDelegateImplTest); }; @@ -266,6 +272,10 @@ base::string16 result; test_clipboard_->ReadText(ui::ClipboardBuffer::kCopyPaste, &result); EXPECT_EQ(form.password_value, result); + + histogram_tester().ExpectUniqueSample( + kHistogramName, password_manager::metrics_util::ACCESS_PASSWORD_COPIED, + 1); } TEST_F(PasswordsPrivateDelegateImplTest, TestCopyPasswordCallbackResultFail) { @@ -292,6 +302,9 @@ test_clipboard_->ReadText(ui::ClipboardBuffer::kCopyPaste, &result); EXPECT_EQ(base::string16(), result); EXPECT_EQ(before_call, test_clipboard_->GetLastModifiedTime()); + + // Since Reauth had failed password was not copied and metric wasn't recorded + histogram_tester().ExpectTotalCount(kHistogramName, 0); } TEST_F(PasswordsPrivateDelegateImplTest, TestPassedReauthOnView) { @@ -313,6 +326,10 @@ delegate.RequestPlaintextPassword( 0, api::passwords_private::PLAINTEXT_REASON_VIEW, password_callback.Get(), nullptr); + + histogram_tester().ExpectUniqueSample( + kHistogramName, password_manager::metrics_util::ACCESS_PASSWORD_VIEWED, + 1); } TEST_F(PasswordsPrivateDelegateImplTest, TestFailedReauthOnView) { @@ -334,6 +351,9 @@ delegate.RequestPlaintextPassword( 0, api::passwords_private::PLAINTEXT_REASON_VIEW, password_callback.Get(), nullptr); + + // Since Reauth had failed password was not viewed and metric wasn't recorded + histogram_tester().ExpectTotalCount(kHistogramName, 0); } TEST_F(PasswordsPrivateDelegateImplTest, TestReauthOnExport) {
diff --git a/chrome/browser/extensions/api/webrtc_from_web_accessible_resource_browsertest.cc b/chrome/browser/extensions/api/webrtc_from_web_accessible_resource_browsertest.cc index 9d3a7661..34702924 100644 --- a/chrome/browser/extensions/api/webrtc_from_web_accessible_resource_browsertest.cc +++ b/chrome/browser/extensions/api/webrtc_from_web_accessible_resource_browsertest.cc
@@ -8,46 +8,13 @@ #include "chrome/browser/ui/tabs/tab_strip_model.h" #include "chrome/test/base/ui_test_utils.h" #include "components/permissions/permission_request_manager.h" +#include "components/permissions/test/permission_request_observer.h" #include "extensions/test/result_catcher.h" #include "net/dns/mock_host_resolver.h" #include "net/test/embedded_test_server/embedded_test_server.h" namespace extensions { -namespace { - -// Used to observe the creation of permission prompt without responding. -class PermissionRequestObserver - : public permissions::PermissionRequestManager::Observer { - public: - explicit PermissionRequestObserver(content::WebContents* web_contents) - : request_manager_(permissions::PermissionRequestManager::FromWebContents( - web_contents)), - request_shown_(false) { - request_manager_->AddObserver(this); - } - ~PermissionRequestObserver() override { - // Safe to remove twice if it happens. - request_manager_->RemoveObserver(this); - } - - bool request_shown() const { return request_shown_; } - - private: - // PermissionRequestManager::Observer - void OnBubbleAdded() override { - request_shown_ = true; - request_manager_->RemoveObserver(this); - } - - permissions::PermissionRequestManager* request_manager_; - bool request_shown_; - - DISALLOW_COPY_AND_ASSIGN(PermissionRequestObserver); -}; - -} // namespace - class WebRtcFromWebAccessibleResourceTest : public ExtensionApiTest { public: WebRtcFromWebAccessibleResourceTest() {} @@ -94,7 +61,8 @@ permissions::PermissionRequestManager::FromWebContents(web_contents); request_manager->set_auto_response_for_test( permissions::PermissionRequestManager::ACCEPT_ALL); - PermissionRequestObserver permission_request_observer(web_contents); + permissions::PermissionRequestObserver permission_request_observer( + web_contents); extensions::ResultCatcher catcher; ui_test_utils::NavigateToURL(browser(), url); @@ -117,7 +85,8 @@ permissions::PermissionRequestManager::FromWebContents(web_contents); request_manager->set_auto_response_for_test( permissions::PermissionRequestManager::DENY_ALL); - PermissionRequestObserver permission_request_observer(web_contents); + permissions::PermissionRequestObserver permission_request_observer( + web_contents); extensions::ResultCatcher catcher; ui_test_utils::NavigateToURL(browser(), url);
diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.json index c58adeb..25fba19 100644 --- a/chrome/browser/flag-metadata.json +++ b/chrome/browser/flag-metadata.json
@@ -30,7 +30,7 @@ [ { "name": "accessibility-internals-page-improvements", - "owners": [ "abigailbklein" ], + "owners": [ "abigailbklein@google.com" ], "expiry_milestone": 82 }, { @@ -485,7 +485,7 @@ { "name": "click-to-call-ui", "owners": [ "//chrome/browser/sharing/OWNERS" ], - "expiry_milestone": 82 + "expiry_milestone": 85 }, { "name": "click-to-open-pdf", @@ -599,42 +599,42 @@ }, { "name": "crostini-disk-resizing", - "owners": [ "davidmunro", "nverne", "clumptini" ], + "owners": [ "davidmunro@google.com", "nverne" ], "expiry_milestone": 83 }, { "name": "crostini-gpu-support", - "owners": [ "nverne", "benwells", "clumptini" ], + "owners": [ "nverne", "benwells" ], "expiry_milestone": 85 }, { "name": "crostini-port-forwarding", - "owners": [ "matterchen", "davidmunro", "hollingum" ], + "owners": [ "matterchen", "davidmunro@google.com", "hollingum@google.com" ], "expiry_milestone": 84 }, { "name": "crostini-usb-allow-unsupported", - "owners": [ "nverne", "benwells", "clumptini" ], + "owners": [ "nverne", "benwells" ], "expiry_milestone": 85 }, { "name": "crostini-usb-support", - "owners": [ "jopra", "nverne", "benwells", "clumptini" ], + "owners": [ "jopra", "nverne", "benwells" ], "expiry_milestone": 76 }, { "name": "crostini-use-buster-image", - "owners": [ "davidmunro", "benwells", "clumptini" ], + "owners": [ "davidmunro@google.com", "benwells" ], "expiry_milestone": 82 }, { "name": "crostini-username", - "owners": [ "davidmunro", "lxj", "clumptini" ], + "owners": [ "davidmunro@google.com", "lxj" ], "expiry_milestone": 83 }, { "name": "crostini-webui-upgrader", - "owners": [ "nverne", "davidmunro", "benwells", "clumptini" ], + "owners": [ "nverne", "davidmunro@google.com", "benwells" ], "expiry_milestone": 84 }, { @@ -1452,7 +1452,7 @@ }, { "name": "enable-history-favicons-google-server-query", - "owners": ["victorvianna", "jkrcal"], + "owners": [ "jkrcal" ], "expiry_milestone": 79 }, { @@ -1991,7 +1991,7 @@ { "name": "enable-unsafe-webgpu", "owners": [ "//third_party/blink/renderer/modules/webgpu/OWNERS" ], - "expiry_milestone": 82 + "expiry_milestone": 90 }, { "name": "enable-usbguard", @@ -2045,12 +2045,6 @@ "expiry_milestone": 84 }, { - "name": "enable-web-authentication-testing-api", - "owners": [ "webauthn-team@google.com" ], - // This is required for testing. - "expiry_milestone": -1 - }, - { "name": "enable-web-bluetooth-new-permissions-backend", "owners": [ "web-bluetooth@google.com" ], "expiry_milestone": 90 @@ -2207,7 +2201,7 @@ }, { "name": "exo-pointer-lock", - "owners": [ "hollingum" ], + "owners": [ "hollingum@google.com" ], "expiry_milestone": 82 }, { @@ -2360,7 +2354,7 @@ }, { "name": "gaia-action-buttons", - "owners": [ "jeroendh", "rsorokin" ], + "owners": [ "jeroendh@google.com", "rsorokin" ], "expiry_milestone": 79 }, { @@ -3267,12 +3261,12 @@ { "name": "shared-clipboard-ui", "owners": [ "//chrome/browser/sharing/OWNERS" ], - "expiry_milestone": 82 + "expiry_milestone": 85 }, { "name": "sharing-derive-vapid-key", "owners": [ "//chrome/browser/sharing/OWNERS" ], - "expiry_milestone": 82 + "expiry_milestone": 85 }, { "name": "sharing-device-expiration", @@ -3595,7 +3589,7 @@ }, { "name": "translate-ui-bubble-options", - "owners": [ "hhw", "anthonyvd", "chrome-language@google.com" ], + "owners": [ "anthonyvd", "chrome-language@google.com" ], "expiry_milestone": 82 }, { @@ -3621,7 +3615,7 @@ { "name": "turn-off-streaming-media-caching", "owners": [ "shawnpi@microsoft.com" ], - "expiry_milestone": 82 + "expiry_milestone": 86 }, { "name": "ui-disable-partial-swap",
diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc index 970df0f..0eefbe8 100644 --- a/chrome/browser/flag_descriptions.cc +++ b/chrome/browser/flag_descriptions.cc
@@ -659,11 +659,6 @@ const char kDownloadAutoResumptionNativeDescription[] = "Enables download auto-resumption in native"; -const char kEnableDisplayLockingName[] = "Enable Display Locking"; -const char kEnableDisplayLockingDescription[] = - "Enable Display Locking JavaScript API. The syntax and the APIs exposed " - "are experimental and may change."; - const char kEnableLayoutNGName[] = "Enable LayoutNG"; const char kEnableLayoutNGDescription[] = "Enable Blink's next generation layout engine."; @@ -1677,12 +1672,6 @@ "Enables browser process logic related to service workers to run on the UI " "thread rather than the IO thread."; -const char kSharedClipboardReceiverName[] = - "Enable receiver device to handle shared clipboard feature"; -const char kSharedClipboardReceiverDescription[] = - "Enables receiver device to handle shared clipboard feature by showing a " - "notification to receive the clipboard to share."; - const char kSharedClipboardUIName[] = "Enable shared clipboard feature signals to be handled"; const char kSharedClipboardUIDescription[] = @@ -2737,13 +2726,6 @@ "Allows viewing of simplified web pages by selecting 'Customize and " "control Chrome'>'Distill page'"; -const char kEnableWebAuthenticationTestingAPIName[] = - "Web Authentication Testing API"; -const char kEnableWebAuthenticationTestingAPIDescription[] = - "Enable Web Authentication Testing API support, which disconnects the API " - "implementation from the real world, and allows configuring virtual " - "authenticator devices for testing"; - const char kEnterpriseReportingInBrowserName[] = "Enterprise cloud reporting in browser"; const char kEnterpriseReportingInBrowserDescription[] =
diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h index 64758bef..6b80b94 100644 --- a/chrome/browser/flag_descriptions.h +++ b/chrome/browser/flag_descriptions.h
@@ -385,9 +385,6 @@ extern const char kBuiltInModuleKvStorageName[]; extern const char kBuiltInModuleKvStorageDescription[]; -extern const char kEnableDisplayLockingName[]; -extern const char kEnableDisplayLockingDescription[]; - extern const char kEnableLayoutNGName[]; extern const char kEnableLayoutNGDescription[]; @@ -977,9 +974,6 @@ extern const char kServiceWorkerOnUIName[]; extern const char kServiceWorkerOnUIDescription[]; -extern const char kSharedClipboardReceiverName[]; -extern const char kSharedClipboardReceiverDescription[]; - extern const char kSharedClipboardUIName[]; extern const char kSharedClipboardUIDescription[]; @@ -1571,9 +1565,6 @@ extern const char kEnableReaderModeName[]; extern const char kEnableReaderModeDescription[]; -extern const char kEnableWebAuthenticationTestingAPIName[]; -extern const char kEnableWebAuthenticationTestingAPIDescription[]; - extern const char kEnterpriseReportingInBrowserName[]; extern const char kEnterpriseReportingInBrowserDescription[];
diff --git a/chrome/browser/geolocation/geolocation_browsertest.cc b/chrome/browser/geolocation/geolocation_browsertest.cc index 5c511d8..f4f172d 100644 --- a/chrome/browser/geolocation/geolocation_browsertest.cc +++ b/chrome/browser/geolocation/geolocation_browsertest.cc
@@ -31,6 +31,7 @@ #include "components/content_settings/core/browser/host_content_settings_map.h" #include "components/permissions/features.h" #include "components/permissions/permission_request_manager.h" +#include "components/permissions/test/permission_request_observer.h" #include "content/public/browser/navigation_controller.h" #include "content/public/browser/notification_details.h" #include "content/public/browser/notification_service.h" @@ -134,44 +135,6 @@ base::RunLoop::QuitCurrentWhenIdleDeprecated(); } -// PermissionRequestObserver --------------------------------------------------- - -// Used to observe the creation of a single permission request without -// responding. -class PermissionRequestObserver - : public permissions::PermissionRequestManager::Observer { - public: - explicit PermissionRequestObserver(content::WebContents* web_contents) - : request_manager_(permissions::PermissionRequestManager::FromWebContents( - web_contents)), - request_shown_(false), - message_loop_runner_(new content::MessageLoopRunner) { - request_manager_->AddObserver(this); - } - ~PermissionRequestObserver() override { - // Safe to remove twice if it happens. - request_manager_->RemoveObserver(this); - } - - void Wait() { message_loop_runner_->Run(); } - - bool request_shown() { return request_shown_; } - - private: - // PermissionRequestManager::Observer - void OnBubbleAdded() override { - request_shown_ = true; - request_manager_->RemoveObserver(this); - message_loop_runner_->Quit(); - } - - permissions::PermissionRequestManager* request_manager_; - bool request_shown_; - scoped_refptr<content::MessageLoopRunner> message_loop_runner_; - - DISALLOW_COPY_AND_ASSIGN(PermissionRequestObserver); -}; - } // namespace @@ -377,7 +340,7 @@ void GeolocationBrowserTest::WatchPositionAndObservePermissionRequest( bool request_should_display) { - PermissionRequestObserver observer( + permissions::PermissionRequestObserver observer( current_browser_->tab_strip_model()->GetActiveWebContents()); if (request_should_display) { // Control will return as soon as the API call is made, and then the
diff --git a/chrome/browser/installable/installable_data.cc b/chrome/browser/installable/installable_data.cc index 13d093b1..74d2374 100644 --- a/chrome/browser/installable/installable_data.cc +++ b/chrome/browser/installable/installable_data.cc
@@ -12,8 +12,8 @@ const GURL& primary_icon_url, const SkBitmap* primary_icon, bool has_maskable_primary_icon, - const GURL& badge_icon_url, - const SkBitmap* badge_icon, + const GURL& splash_icon_url, + const SkBitmap* splash_icon, bool valid_manifest, bool has_worker) : errors(std::move(errors)), @@ -22,8 +22,10 @@ primary_icon_url(primary_icon_url), primary_icon(primary_icon), has_maskable_primary_icon(has_maskable_primary_icon), - badge_icon_url(badge_icon_url), - badge_icon(badge_icon), + badge_icon_url(GURL::EmptyGURL()), + badge_icon(nullptr), + splash_icon_url(splash_icon_url), + splash_icon(splash_icon), valid_manifest(valid_manifest), has_worker(has_worker) {}
diff --git a/chrome/browser/installable/installable_data.h b/chrome/browser/installable/installable_data.h index d327999..dbb5f86 100644 --- a/chrome/browser/installable/installable_data.h +++ b/chrome/browser/installable/installable_data.h
@@ -25,8 +25,8 @@ const GURL& primary_icon_url, const SkBitmap* primary_icon, bool has_maskable_primary_icon, - const GURL& badge_icon_url, - const SkBitmap* badge_icon, + const GURL& splash_icon_url, + const SkBitmap* splash_icon, bool valid_manifest, bool has_worker); ~InstallableData(); @@ -66,6 +66,17 @@ // using it. const SkBitmap* badge_icon; + // The URL of the chosen splash icon. + const GURL& splash_icon_url; + + // nullptr if the most appropriate splash icon couldn't be determined or + // downloaded. The underlying splash icon is owned by the InstallableManager; + // clients must copy the bitmap if they want to use it. Since the splash + // icon is optional, no error code is set if it cannot be fetched, and clients + // specifying |valid_splash_icon| must check that the bitmap exists before + // using it. + const SkBitmap* splash_icon; + // true if the site has a valid, installable web app manifest. If // |valid_manifest| or |has_worker| was true and the site isn't installable, // the reason will be in |errors|.
diff --git a/chrome/browser/installable/installable_manager.cc b/chrome/browser/installable/installable_manager.cc index 3af20e32..bda3f2bd 100644 --- a/chrome/browser/installable/installable_manager.cc +++ b/chrome/browser/installable/installable_manager.cc
@@ -56,10 +56,6 @@ // resized). const int kMinimumPrimaryAdaptiveLauncherIconSizeInPx = 83; -#if !defined(OS_ANDROID) -const int kMinimumBadgeIconSizeInPx = 72; -#endif - int GetIdealPrimaryIconSizeInPx() { #if defined(OS_ANDROID) return ShortcutHelper::GetIdealHomescreenIconSizeInPx(); @@ -76,14 +72,6 @@ #endif } -int GetIdealBadgeIconSizeInPx() { -#if defined(OS_ANDROID) - return ShortcutHelper::GetIdealBadgeIconSizeInPx(); -#else - return kMinimumBadgeIconSizeInPx; -#endif -} - int GetIdealPrimaryAdaptiveLauncherIconSizeInPx() { #if defined(OS_ANDROID) return ShortcutHelper::GetIdealAdaptiveLauncherIconSizeInPx(); @@ -92,6 +80,22 @@ #endif } +int GetIdealSplashIconSizeInPx() { +#if defined(OS_ANDROID) + return ShortcutHelper::GetIdealSplashImageSizeInPx(); +#else + return kMinimumPrimaryIconSizeInPx; +#endif +} + +int GetMinimumSplashIconSizeInPx() { +#if defined(OS_ANDROID) + return ShortcutHelper::GetMinimumSplashImageSizeInPx(); +#else + return kMinimumPrimaryIconSizeInPx; +#endif +} + using IconPurpose = blink::Manifest::ImageResource::Purpose; struct ImageTypeDetails { @@ -211,7 +215,10 @@ InstallableManager::ValidManifestProperty::~ValidManifestProperty() = default; InstallableManager::IconProperty::IconProperty() - : error(NO_ERROR_DETECTED), url(), icon(), fetched(false) {} + : error(NO_ERROR_DETECTED), + purpose(IconPurpose::ANY), + icon(), + fetched(false) {} InstallableManager::IconProperty::IconProperty(IconProperty&& other) = default; @@ -316,36 +323,33 @@ base::BindOnce(OnDidCompleteGetPrimaryIcon, std::move(callback))); } -bool InstallableManager::IsIconFetched(const IconPurpose purpose) const { - const auto it = icons_.find(purpose); - return it != icons_.end() && it->second.fetched; -} +bool InstallableManager::IsIconFetchComplete(const IconUsage usage) const { + const auto it = icons_.find(usage); + if (it == icons_.end() || !it->second.fetched) + return false; -bool InstallableManager::IsPrimaryIconFetched( - const InstallableParams& params) const { - return IsIconFetched(GetPrimaryIconPurpose(params)); -} - -void InstallableManager::SetIconFetched(const IconPurpose purpose) { - icons_[purpose].fetched = true; -} - -IconPurpose InstallableManager::GetPrimaryIconPurpose( - const InstallableParams& params) const { - if (params.prefer_maskable_icon) { - const auto it = icons_.find(IconPurpose::MASKABLE); - - // If we haven't attempted fetching the maskable icon yet, we still plan - // to use that one for primary. - if (it == icons_.end() || !it->second.fetched) - return IconPurpose::MASKABLE; - - // If fetching was successful, use MASKABLE. - if (it->second.error == NO_ERROR_DETECTED) - return IconPurpose::MASKABLE; + // If we fetched maskable icon, but fetching was not success, do not consider + // it's completed since we want to fallback to fetch ANY icon. + if (it->second.purpose == IconPurpose::MASKABLE && + it->second.error != NO_ERROR_DETECTED) { + return false; } - // Otherwise fall back to ANY. - return IconPurpose::ANY; + + return true; +} + +bool InstallableManager::IsMaskableIconFetched(const IconUsage usage) const { + const auto it = icons_.find(usage); + if (it == icons_.end() || !it->second.fetched) + return false; + // if we fetched MASKABLE icon, or fetched ANY icon for fallback, consider + // maskable icon is fetched. + return it->second.purpose == IconPurpose::MASKABLE || + it->second.purpose == IconPurpose::ANY; +} + +void InstallableManager::SetIconFetched(const IconUsage usage) { + icons_[usage].fetched = true; } std::vector<InstallableStatusCode> InstallableManager::GetErrors( @@ -369,17 +373,21 @@ errors.push_back(worker_->error); if (params.valid_primary_icon) { - IconProperty& icon = icons_[GetPrimaryIconPurpose(params)]; - if (icon.error != NO_ERROR_DETECTED) + IconProperty& icon = icons_[IconUsage::kPrimary]; + // If the icon is MASKABLE, ignore any error since we want to fallback to + // fetch IconPurpose::ANY. + if (icon.error != NO_ERROR_DETECTED && + icon.purpose != IconPurpose::MASKABLE) errors.push_back(icon.error); } - if (params.valid_badge_icon) { - IconProperty& icon = icons_[IconPurpose::BADGE]; + if (params.valid_splash_icon) { + IconProperty& icon = icons_[IconUsage::kSplash]; - // If the error is NO_ACCEPTABLE_ICON, there is no icon suitable as a badge - // in the manifest. Ignore this case since we only want to fail the check if - // there was a suitable badge icon specified and we couldn't fetch it. + // If the error is NO_ACCEPTABLE_ICON, there is no icon suitable as a splash + // icon in the manifest. Ignore this case since we only want to fail the + // check if there was a suitable splash icon specified and we couldn't fetch + // it. if (icon.error != NO_ERROR_DETECTED && icon.error != NO_ACCEPTABLE_ICON) errors.push_back(icon.error); } @@ -412,17 +420,16 @@ return worker_->error; } -InstallableStatusCode InstallableManager::icon_error( - const IconPurpose purpose) { - return icons_[purpose].error; +InstallableStatusCode InstallableManager::icon_error(const IconUsage usage) { + return icons_[usage].error; } -GURL& InstallableManager::icon_url(const IconPurpose purpose) { - return icons_[purpose].url; +GURL& InstallableManager::icon_url(const IconUsage usage) { + return icons_[usage].url; } -const SkBitmap* InstallableManager::icon(const IconPurpose purpose) { - return icons_[purpose].icon.get(); +const SkBitmap* InstallableManager::icon(const IconUsage usage) { + return icons_[usage].icon.get(); } content::WebContents* InstallableManager::GetWebContents() { @@ -440,8 +447,9 @@ manifest_->fetched && (!params.valid_manifest || valid_manifest_->fetched) && (!params.has_worker || worker_->fetched) && - (!params.valid_primary_icon || IsPrimaryIconFetched(params)) && - (!params.valid_badge_icon || IsIconFetched(IconPurpose::BADGE)); + (!params.valid_primary_icon || + IsIconFetchComplete(IconUsage::kPrimary)) && + (!params.valid_splash_icon || IsIconFetchComplete(IconUsage::kSplash)); } void InstallableManager::Reset() { @@ -464,9 +472,8 @@ void InstallableManager::SetManifestDependentTasksComplete() { valid_manifest_->fetched = true; worker_->fetched = true; - SetIconFetched(IconPurpose::ANY); - SetIconFetched(IconPurpose::BADGE); - SetIconFetched(IconPurpose::MASKABLE); + SetIconFetched(IconUsage::kPrimary); + SetIconFetched(IconUsage::kSplash); } void InstallableManager::CleanupAndStartNextTask() { @@ -487,20 +494,20 @@ IconProperty null_icon; IconProperty* primary_icon = &null_icon; bool has_maskable_primary_icon = false; - IconProperty* badge_icon = &null_icon; + IconProperty* splash_icon = &null_icon; - IconPurpose purpose = GetPrimaryIconPurpose(params); - if (params.valid_primary_icon && IsIconFetched(purpose)) { - primary_icon = &icons_[purpose]; - has_maskable_primary_icon = (purpose == IconPurpose::MASKABLE); + if (params.valid_primary_icon && IsIconFetchComplete(IconUsage::kPrimary)) { + primary_icon = &icons_[IconUsage::kPrimary]; + has_maskable_primary_icon = + (primary_icon->purpose == IconPurpose::MASKABLE); } - if (params.valid_badge_icon && IsIconFetched(IconPurpose::BADGE)) - badge_icon = &icons_[IconPurpose::BADGE]; + if (params.valid_splash_icon && IsIconFetchComplete(IconUsage::kSplash)) + splash_icon = &icons_[IconUsage::kSplash]; InstallableData data = { std::move(errors), manifest_url(), &manifest(), primary_icon->url, primary_icon->icon.get(), has_maskable_primary_icon, - badge_icon->url, badge_icon->icon.get(), valid_manifest_->is_valid, + splash_icon->url, splash_icon->icon.get(), valid_manifest_->is_valid, worker_->has_worker, }; @@ -532,21 +539,25 @@ } else if (!manifest_->fetched) { FetchManifest(); } else if (params.valid_primary_icon && params.prefer_maskable_icon && - !IsIconFetched(IconPurpose::MASKABLE)) { + !IsMaskableIconFetched(IconUsage::kPrimary)) { CheckAndFetchBestIcon(GetIdealPrimaryAdaptiveLauncherIconSizeInPx(), kMinimumPrimaryAdaptiveLauncherIconSizeInPx, - IconPurpose::MASKABLE); - } else if (params.valid_primary_icon && !IsIconFetched(IconPurpose::ANY)) { + IconPurpose::MASKABLE, IconUsage::kPrimary); + } else if (params.valid_primary_icon && + !IsIconFetchComplete(IconUsage::kPrimary)) { CheckAndFetchBestIcon(GetIdealPrimaryIconSizeInPx(), - GetMinimumPrimaryIconSizeInPx(), IconPurpose::ANY); + GetMinimumPrimaryIconSizeInPx(), IconPurpose::ANY, + IconUsage::kPrimary); } else if (params.valid_manifest && !valid_manifest_->fetched) { CheckManifestValid(params.check_webapp_manifest_display, params.prefer_maskable_icon); } else if (params.has_worker && !worker_->fetched) { CheckServiceWorker(); - } else if (params.valid_badge_icon && !IsIconFetched(IconPurpose::BADGE)) { - CheckAndFetchBestIcon(GetIdealBadgeIconSizeInPx(), - GetIdealBadgeIconSizeInPx(), IconPurpose::BADGE); + } else if (params.valid_splash_icon && + !IsIconFetchComplete(IconUsage::kSplash)) { + CheckAndFetchBestIcon(GetIdealSplashIconSizeInPx(), + GetMinimumSplashIconSizeInPx(), IconPurpose::ANY, + IconUsage::kSplash); } else { NOTREACHED(); } @@ -696,11 +707,14 @@ void InstallableManager::CheckAndFetchBestIcon(int ideal_icon_size_in_px, int minimum_icon_size_in_px, - const IconPurpose purpose) { + const IconPurpose purpose, + const IconUsage usage) { DCHECK(!manifest().IsEmpty()); - IconProperty& icon = icons_[purpose]; + IconProperty& icon = icons_[usage]; icon.fetched = true; + icon.purpose = purpose; + icon.error = NO_ERROR_DETECTED; GURL icon_url = blink::ManifestIconSelector::FindBestMatchingSquareIcon( manifest().icons, ideal_icon_size_in_px, minimum_icon_size_in_px, @@ -713,7 +727,7 @@ GetWebContents(), icon_url, ideal_icon_size_in_px, minimum_icon_size_in_px, base::BindOnce(&InstallableManager::OnIconFetched, - weak_factory_.GetWeakPtr(), icon_url, purpose)); + weak_factory_.GetWeakPtr(), icon_url, usage)); if (can_download_icon) return; icon.error = CANNOT_DOWNLOAD_ICON; @@ -723,12 +737,12 @@ } void InstallableManager::OnIconFetched(const GURL icon_url, - const IconPurpose purpose, + const IconUsage usage, const SkBitmap& bitmap) { if (!GetWebContents()) return; - IconProperty& icon = icons_[purpose]; + IconProperty& icon = icons_[usage]; if (bitmap.drawsNothing()) { icon.error = NO_ICON_AVAILABLE; } else {
diff --git a/chrome/browser/installable/installable_manager.h b/chrome/browser/installable/installable_manager.h index e04d5a4..469cec2d 100644 --- a/chrome/browser/installable/installable_manager.h +++ b/chrome/browser/installable/installable_manager.h
@@ -95,6 +95,8 @@ using IconPurpose = blink::Manifest::ImageResource::Purpose; + enum class IconUsage { kPrimary, kSplash }; + struct EligiblityProperty { EligiblityProperty(); ~EligiblityProperty(); @@ -133,6 +135,7 @@ IconProperty& operator=(IconProperty&& other); InstallableStatusCode error; + IconPurpose purpose; GURL url; std::unique_ptr<SkBitmap> icon; bool fetched; @@ -142,16 +145,17 @@ DISALLOW_COPY_AND_ASSIGN(IconProperty); }; - // Returns true if |purpose| matches any fetched icon, or false if no icon has - // been requested yet or there is no match. - bool IsIconFetched(const IconPurpose purpose) const; - bool IsPrimaryIconFetched(const InstallableParams& params) const; + // Returns true if an icon for the given usage is fetched successfully, or + // doesn't need to fallback to another icon purpose (i.e. MASKABLE icon + // allback to ANY icon). + bool IsIconFetchComplete(const IconUsage usage) const; - // Sets the icon matching |purpose| as fetched. - void SetIconFetched(const IconPurpose purpose); + // Returns true if we have tried fetching maskable icon. Note that this also + // returns true if the fallback icon(IconPurpose::ANY) is fetched. + bool IsMaskableIconFetched(const IconUsage usage) const; - // Gets the purpose of the icon to use as a primary icon. - IconPurpose GetPrimaryIconPurpose(const InstallableParams& params) const; + // Sets the icon matching |usage| as fetched. + void SetIconFetched(const IconUsage usage); // Returns a vector with all errors encountered for the resources requested in // |params|, or an empty vector if there is no error. @@ -163,9 +167,9 @@ InstallableStatusCode valid_manifest_error() const; void set_valid_manifest_error(InstallableStatusCode error_code); InstallableStatusCode worker_error() const; - InstallableStatusCode icon_error(const IconPurpose purpose); - GURL& icon_url(const IconPurpose purpose); - const SkBitmap* icon(const IconPurpose purpose); + InstallableStatusCode icon_error(const IconUsage usage); + GURL& icon_url(const IconUsage usage); + const SkBitmap* icon(const IconUsage usage); // Returns the WebContents to which this object is attached, or nullptr if the // WebContents doesn't exist or is currently being destroyed. @@ -205,9 +209,10 @@ void CheckAndFetchBestIcon(int ideal_icon_size_in_px, int minimum_icon_size_in_px, - const IconPurpose purpose); + const IconPurpose purpose, + const IconUsage usage); void OnIconFetched(const GURL icon_url, - const IconPurpose purpose, + const IconUsage usage, const SkBitmap& bitmap); // content::ServiceWorkerContextObserver overrides @@ -232,7 +237,7 @@ std::unique_ptr<ManifestProperty> manifest_; std::unique_ptr<ValidManifestProperty> valid_manifest_; std::unique_ptr<ServiceWorkerProperty> worker_; - std::map<IconPurpose, IconProperty> icons_; + std::map<IconUsage, IconProperty> icons_; // Owned by the storage partition attached to the content::WebContents which // this object is scoped to.
diff --git a/chrome/browser/installable/installable_manager_browsertest.cc b/chrome/browser/installable/installable_manager_browsertest.cc index 4097affa9..a4324fc4 100644 --- a/chrome/browser/installable/installable_manager_browsertest.cc +++ b/chrome/browser/installable/installable_manager_browsertest.cc
@@ -24,8 +24,6 @@ #include "content/public/test/browser_test_utils.h" #include "net/test/embedded_test_server/embedded_test_server.h" -using IconPurpose = blink::Manifest::ImageResource::Purpose; - namespace { const char kInsecureOrigin[] = "http://www.google.com"; @@ -56,10 +54,10 @@ return params; } -InstallableParams GetPrimaryIconAndBadgeIconParams() { +InstallableParams GetPrimaryIconAndSplashIconParams() { InstallableParams params = GetManifestParams(); params.valid_primary_icon = true; - params.valid_badge_icon = true; + params.valid_splash_icon = true; params.wait_for_worker = true; return params; } @@ -72,6 +70,15 @@ return params; } +InstallableParams GetPrimaryIconPreferMaskableAndSplashIconParams() { + InstallableParams params = GetManifestParams(); + params.valid_primary_icon = true; + params.prefer_maskable_icon = true; + params.valid_splash_icon = true; + params.wait_for_worker = true; + return params; +} + } // anonymous namespace // Used only for testing pages with no service workers. This class will dispatch @@ -126,9 +133,9 @@ if (data.primary_icon) primary_icon_.reset(new SkBitmap(*data.primary_icon)); has_maskable_primary_icon_ = data.has_maskable_primary_icon; - badge_icon_url_ = data.badge_icon_url; - if (data.badge_icon) - badge_icon_.reset(new SkBitmap(*data.badge_icon)); + splash_icon_url_ = data.splash_icon_url; + if (data.splash_icon) + splash_icon_.reset(new SkBitmap(*data.splash_icon)); valid_manifest_ = data.valid_manifest; has_worker_ = data.has_worker; base::SequencedTaskRunnerHandle::Get()->PostTask(FROM_HERE, quit_closure_); @@ -140,8 +147,8 @@ const GURL& primary_icon_url() const { return primary_icon_url_; } const SkBitmap* primary_icon() const { return primary_icon_.get(); } bool has_maskable_primary_icon() const { return has_maskable_primary_icon_; } - const GURL& badge_icon_url() const { return badge_icon_url_; } - const SkBitmap* badge_icon() const { return badge_icon_.get(); } + const GURL& splash_icon_url() const { return splash_icon_url_; } + const SkBitmap* splash_icon() const { return splash_icon_.get(); } bool valid_manifest() const { return valid_manifest_; } bool has_worker() const { return has_worker_; } @@ -153,8 +160,8 @@ GURL primary_icon_url_; std::unique_ptr<SkBitmap> primary_icon_; bool has_maskable_primary_icon_; - GURL badge_icon_url_; - std::unique_ptr<SkBitmap> badge_icon_; + GURL splash_icon_url_; + std::unique_ptr<SkBitmap> splash_icon_; bool valid_manifest_; bool has_worker_; }; @@ -361,8 +368,8 @@ EXPECT_FALSE(tester->has_maskable_primary_icon()); EXPECT_FALSE(tester->valid_manifest()); EXPECT_FALSE(tester->has_worker()); - EXPECT_TRUE(tester->badge_icon_url().is_empty()); - EXPECT_EQ(nullptr, tester->badge_icon()); + EXPECT_TRUE(tester->splash_icon_url().is_empty()); + EXPECT_EQ(nullptr, tester->splash_icon()); EXPECT_EQ(std::vector<InstallableStatusCode>{NO_MANIFEST}, tester->errors()); } @@ -386,8 +393,8 @@ EXPECT_FALSE(tester->has_maskable_primary_icon()); EXPECT_FALSE(tester->valid_manifest()); EXPECT_FALSE(tester->has_worker()); - EXPECT_TRUE(tester->badge_icon_url().is_empty()); - EXPECT_EQ(nullptr, tester->badge_icon()); + EXPECT_TRUE(tester->splash_icon_url().is_empty()); + EXPECT_EQ(nullptr, tester->splash_icon()); EXPECT_EQ(std::vector<InstallableStatusCode>{MANIFEST_EMPTY}, tester->errors()); } @@ -410,8 +417,8 @@ EXPECT_FALSE(tester->has_maskable_primary_icon()); EXPECT_FALSE(tester->valid_manifest()); EXPECT_FALSE(tester->has_worker()); - EXPECT_TRUE(tester->badge_icon_url().is_empty()); - EXPECT_EQ(nullptr, tester->badge_icon()); + EXPECT_TRUE(tester->splash_icon_url().is_empty()); + EXPECT_EQ(nullptr, tester->splash_icon()); EXPECT_EQ(std::vector<InstallableStatusCode>{}, tester->errors()); } @@ -436,8 +443,8 @@ EXPECT_FALSE(tester->has_maskable_primary_icon()); EXPECT_FALSE(tester->valid_manifest()); EXPECT_FALSE(tester->has_worker()); - EXPECT_TRUE(tester->badge_icon_url().is_empty()); - EXPECT_EQ(nullptr, tester->badge_icon()); + EXPECT_TRUE(tester->splash_icon_url().is_empty()); + EXPECT_EQ(nullptr, tester->splash_icon()); EXPECT_EQ(std::vector<InstallableStatusCode>{}, tester->errors()); } @@ -463,13 +470,13 @@ EXPECT_EQ(nullptr, tester->primary_icon()); EXPECT_FALSE(tester->valid_manifest()); EXPECT_FALSE(tester->has_worker()); - EXPECT_TRUE(tester->badge_icon_url().is_empty()); - EXPECT_EQ(nullptr, tester->badge_icon()); + EXPECT_TRUE(tester->splash_icon_url().is_empty()); + EXPECT_EQ(nullptr, tester->splash_icon()); EXPECT_EQ(std::vector<InstallableStatusCode>{NO_ACCEPTABLE_ICON}, tester->errors()); } - // Ask for everything except badge icon. This should fail with + // Ask for everything except splash icon. This should fail with // NO_ACCEPTABLE_ICON - the primary icon fetch has already failed, so that // cached error stops the installable check from being performed. { @@ -487,20 +494,20 @@ EXPECT_EQ(nullptr, tester->primary_icon()); EXPECT_FALSE(tester->valid_manifest()); EXPECT_FALSE(tester->has_worker()); - EXPECT_TRUE(tester->badge_icon_url().is_empty()); - EXPECT_EQ(nullptr, tester->badge_icon()); + EXPECT_TRUE(tester->splash_icon_url().is_empty()); + EXPECT_EQ(nullptr, tester->splash_icon()); EXPECT_EQ(std::vector<InstallableStatusCode>{NO_ACCEPTABLE_ICON}, tester->errors()); } - // Ask for a badge icon. This should fail to get a badge icon but not record + // Ask for a splash icon. This should fail to get a splash icon but not record // an error. { base::RunLoop run_loop; std::unique_ptr<CallbackTester> tester( new CallbackTester(run_loop.QuitClosure())); - InstallableParams params = GetPrimaryIconAndBadgeIconParams(); + InstallableParams params = GetPrimaryIconAndSplashIconParams(); params.valid_primary_icon = false; RunInstallableManager(browser(), tester.get(), params); run_loop.Run(); @@ -510,8 +517,8 @@ EXPECT_TRUE(tester->primary_icon_url().is_empty()); EXPECT_EQ(nullptr, tester->primary_icon()); - EXPECT_TRUE(tester->badge_icon_url().is_empty()); - EXPECT_EQ(nullptr, tester->badge_icon()); + EXPECT_TRUE(tester->splash_icon_url().is_empty()); + EXPECT_EQ(nullptr, tester->splash_icon()); EXPECT_FALSE(tester->valid_manifest()); EXPECT_FALSE(tester->has_worker()); EXPECT_EQ(std::vector<InstallableStatusCode>{}, tester->errors()); @@ -541,8 +548,8 @@ EXPECT_EQ(nullptr, tester->primary_icon()); EXPECT_FALSE(tester->valid_manifest()); EXPECT_FALSE(tester->has_worker()); - EXPECT_TRUE(tester->badge_icon_url().is_empty()); - EXPECT_EQ(nullptr, tester->badge_icon()); + EXPECT_TRUE(tester->splash_icon_url().is_empty()); + EXPECT_EQ(nullptr, tester->splash_icon()); EXPECT_EQ(std::vector<InstallableStatusCode>{}, tester->errors()); } @@ -564,13 +571,13 @@ EXPECT_EQ(nullptr, tester->primary_icon()); EXPECT_FALSE(tester->valid_manifest()); EXPECT_FALSE(tester->has_worker()); - EXPECT_TRUE(tester->badge_icon_url().is_empty()); - EXPECT_EQ(nullptr, tester->badge_icon()); + EXPECT_TRUE(tester->splash_icon_url().is_empty()); + EXPECT_EQ(nullptr, tester->splash_icon()); EXPECT_EQ(std::vector<InstallableStatusCode>{NO_ACCEPTABLE_ICON}, tester->errors()); } - // Ask for everything except badge icon. This should fail with + // Ask for everything except splash icon. This should fail with // NO_ACCEPTABLE_ICON - the primary icon fetch has already failed, so that // cached error stops the installable check from being performed. { @@ -589,8 +596,8 @@ EXPECT_EQ(nullptr, tester->primary_icon()); EXPECT_FALSE(tester->valid_manifest()); EXPECT_FALSE(tester->has_worker()); - EXPECT_TRUE(tester->badge_icon_url().is_empty()); - EXPECT_EQ(nullptr, tester->badge_icon()); + EXPECT_TRUE(tester->splash_icon_url().is_empty()); + EXPECT_EQ(nullptr, tester->splash_icon()); EXPECT_EQ(std::vector<InstallableStatusCode>{NO_ACCEPTABLE_ICON}, tester->errors()); } @@ -613,8 +620,8 @@ EXPECT_TRUE(tester->primary_icon_url().is_empty()); EXPECT_EQ(nullptr, tester->primary_icon()); - EXPECT_TRUE(tester->badge_icon_url().is_empty()); - EXPECT_EQ(nullptr, tester->badge_icon()); + EXPECT_TRUE(tester->splash_icon_url().is_empty()); + EXPECT_EQ(nullptr, tester->splash_icon()); EXPECT_FALSE(tester->valid_manifest()); EXPECT_FALSE(tester->has_worker()); EXPECT_EQ( @@ -644,19 +651,19 @@ EXPECT_NE(nullptr, tester->primary_icon()); EXPECT_FALSE(tester->valid_manifest()); EXPECT_FALSE(tester->has_worker()); - EXPECT_TRUE(tester->badge_icon_url().is_empty()); - EXPECT_EQ(nullptr, tester->badge_icon()); + EXPECT_TRUE(tester->splash_icon_url().is_empty()); + EXPECT_EQ(nullptr, tester->splash_icon()); EXPECT_EQ(std::vector<InstallableStatusCode>{}, tester->errors()); } - // Add to homescreen checks for manifest + primary icon + badge icon. + // Add to homescreen checks for manifest + primary icon + splash icon. { base::RunLoop run_loop; std::unique_ptr<CallbackTester> tester( new CallbackTester(run_loop.QuitClosure())); RunInstallableManager(browser(), tester.get(), - GetPrimaryIconAndBadgeIconParams()); + GetPrimaryIconAndSplashIconParams()); run_loop.Run(); EXPECT_FALSE(tester->manifest().IsEmpty()); @@ -666,31 +673,30 @@ EXPECT_NE(nullptr, tester->primary_icon()); EXPECT_FALSE(tester->valid_manifest()); EXPECT_FALSE(tester->has_worker()); - EXPECT_FALSE(tester->badge_icon_url().is_empty()); - EXPECT_NE(nullptr, tester->badge_icon()); + EXPECT_FALSE(tester->splash_icon_url().is_empty()); + EXPECT_NE(nullptr, tester->splash_icon()); EXPECT_EQ(std::vector<InstallableStatusCode>{}, tester->errors()); } - // Navigate to a page with a bad badge icon. This should now fail with - // NO_ICON_AVAILABLE, but still have the manifest and primary icon. + // Navigate to a page with a good maskable icon for primary icon and a bad any + // icon for splash icon. This should fail with NO_ICON_AVAILABLE, but still + // have the manifest and primary icon. { base::RunLoop run_loop; std::unique_ptr<CallbackTester> tester( new CallbackTester(run_loop.QuitClosure())); - - NavigateAndRunInstallableManager(browser(), tester.get(), - GetPrimaryIconAndBadgeIconParams(), - GetURLOfPageWithServiceWorkerAndManifest( - "/banners/manifest_bad_badge.json")); + NavigateAndRunInstallableManager( + browser(), tester.get(), + GetPrimaryIconPreferMaskableAndSplashIconParams(), + GetURLOfPageWithServiceWorkerAndManifest( + "/banners/manifest_bad_non_maskable_icon.json")); run_loop.Run(); - EXPECT_FALSE(tester->manifest().IsEmpty()); EXPECT_FALSE(tester->manifest_url().is_empty()); - EXPECT_FALSE(tester->primary_icon_url().is_empty()); EXPECT_NE(nullptr, tester->primary_icon()); - EXPECT_TRUE(tester->badge_icon_url().is_empty()); - EXPECT_EQ(nullptr, tester->badge_icon()); + EXPECT_TRUE(tester->splash_icon_url().is_empty()); + EXPECT_EQ(nullptr, tester->splash_icon()); EXPECT_FALSE(tester->valid_manifest()); EXPECT_FALSE(tester->has_worker()); EXPECT_EQ(std::vector<InstallableStatusCode>{NO_ICON_AVAILABLE}, @@ -699,7 +705,7 @@ } IN_PROC_BROWSER_TEST_F(InstallableManagerBrowserTest, CheckWebapp) { - // Request everything except badge icon. + // Request everything except splash icon. { base::HistogramTester histograms; base::RunLoop run_loop; @@ -719,8 +725,8 @@ EXPECT_NE(nullptr, tester->primary_icon()); EXPECT_TRUE(tester->valid_manifest()); EXPECT_TRUE(tester->has_worker()); - EXPECT_TRUE(tester->badge_icon_url().is_empty()); - EXPECT_EQ(nullptr, tester->badge_icon()); + EXPECT_TRUE(tester->splash_icon_url().is_empty()); + EXPECT_EQ(nullptr, tester->splash_icon()); EXPECT_EQ(std::vector<InstallableStatusCode>{}, tester->errors()); // Verify that the returned state matches manager internal state. @@ -731,16 +737,19 @@ EXPECT_TRUE(manager->valid_manifest()); EXPECT_TRUE(manager->has_worker()); EXPECT_EQ(1u, manager->icons_.size()); - EXPECT_FALSE((manager->icon_url(IconPurpose::ANY).is_empty())); - EXPECT_NE(nullptr, (manager->icon(IconPurpose::ANY))); + EXPECT_FALSE(( + manager->icon_url(InstallableManager::IconUsage::kPrimary).is_empty())); + EXPECT_NE(nullptr, + (manager->icon(InstallableManager::IconUsage::kPrimary))); EXPECT_EQ(NO_ERROR_DETECTED, manager->manifest_error()); EXPECT_EQ(NO_ERROR_DETECTED, manager->valid_manifest_error()); EXPECT_EQ(NO_ERROR_DETECTED, manager->worker_error()); - EXPECT_EQ(NO_ERROR_DETECTED, (manager->icon_error(IconPurpose::ANY))); + EXPECT_EQ(NO_ERROR_DETECTED, + (manager->icon_error(InstallableManager::IconUsage::kPrimary))); EXPECT_TRUE(!manager->task_queue_.HasCurrent()); } - // Request everything except badge icon again without navigating away. This + // Request everything except splash icon again without navigating away. This // should work fine. { base::RunLoop run_loop; @@ -756,8 +765,8 @@ EXPECT_NE(nullptr, tester->primary_icon()); EXPECT_TRUE(tester->valid_manifest()); EXPECT_TRUE(tester->has_worker()); - EXPECT_TRUE(tester->badge_icon_url().is_empty()); - EXPECT_EQ(nullptr, tester->badge_icon()); + EXPECT_TRUE(tester->splash_icon_url().is_empty()); + EXPECT_EQ(nullptr, tester->splash_icon()); EXPECT_EQ(std::vector<InstallableStatusCode>{}, tester->errors()); // Verify that the returned state matches manager internal state. @@ -768,12 +777,15 @@ EXPECT_TRUE(manager->valid_manifest()); EXPECT_TRUE(manager->has_worker()); EXPECT_EQ(1u, manager->icons_.size()); - EXPECT_FALSE((manager->icon_url(IconPurpose::ANY).is_empty())); - EXPECT_NE(nullptr, (manager->icon(IconPurpose::ANY))); + EXPECT_FALSE(( + manager->icon_url(InstallableManager::IconUsage::kPrimary).is_empty())); + EXPECT_NE(nullptr, + (manager->icon(InstallableManager::IconUsage::kPrimary))); EXPECT_EQ(NO_ERROR_DETECTED, manager->manifest_error()); EXPECT_EQ(NO_ERROR_DETECTED, manager->valid_manifest_error()); EXPECT_EQ(NO_ERROR_DETECTED, manager->worker_error()); - EXPECT_EQ(NO_ERROR_DETECTED, (manager->icon_error(IconPurpose::ANY))); + EXPECT_EQ(NO_ERROR_DETECTED, + (manager->icon_error(InstallableManager::IconUsage::kPrimary))); EXPECT_TRUE(!manager->task_queue_.HasCurrent()); } @@ -820,8 +832,8 @@ EXPECT_FALSE(tester->valid_manifest()); EXPECT_FALSE(tester->has_worker()); - EXPECT_TRUE(tester->badge_icon_url().is_empty()); - EXPECT_EQ(nullptr, tester->badge_icon()); + EXPECT_TRUE(tester->splash_icon_url().is_empty()); + EXPECT_EQ(nullptr, tester->splash_icon()); EXPECT_EQ(std::vector<InstallableStatusCode>{}, tester->errors()); } @@ -847,8 +859,8 @@ EXPECT_FALSE(tester->valid_manifest()); EXPECT_FALSE(tester->has_worker()); - EXPECT_TRUE(tester->badge_icon_url().is_empty()); - EXPECT_EQ(nullptr, tester->badge_icon()); + EXPECT_TRUE(tester->splash_icon_url().is_empty()); + EXPECT_EQ(nullptr, tester->splash_icon()); EXPECT_EQ(std::vector<InstallableStatusCode>{}, tester->errors()); } @@ -874,8 +886,36 @@ EXPECT_FALSE(tester->valid_manifest()); EXPECT_FALSE(tester->has_worker()); - EXPECT_TRUE(tester->badge_icon_url().is_empty()); - EXPECT_EQ(nullptr, tester->badge_icon()); + EXPECT_TRUE(tester->splash_icon_url().is_empty()); + EXPECT_EQ(nullptr, tester->splash_icon()); + EXPECT_EQ(std::vector<InstallableStatusCode>{}, tester->errors()); + } + + // Checks that we fall back to using an ANY icon if a MASKABLE icon is + // requested but the maskable icon is bad. + { + base::RunLoop run_loop; + std::unique_ptr<CallbackTester> tester( + new CallbackTester(run_loop.QuitClosure())); + + NavigateAndRunInstallableManager( + browser(), tester.get(), GetPrimaryIconPreferMaskableParams(), + GetURLOfPageWithServiceWorkerAndManifest( + "/banners/manifest_bad_maskable.json")); + + run_loop.Run(); + + EXPECT_FALSE(tester->manifest().IsEmpty()); + EXPECT_FALSE(tester->manifest_url().is_empty()); + + EXPECT_FALSE(tester->primary_icon_url().is_empty()); + EXPECT_NE(nullptr, tester->primary_icon()); + EXPECT_FALSE(tester->has_maskable_primary_icon()); + + EXPECT_FALSE(tester->valid_manifest()); + EXPECT_FALSE(tester->has_worker()); + EXPECT_TRUE(tester->splash_icon_url().is_empty()); + EXPECT_EQ(nullptr, tester->splash_icon()); EXPECT_EQ(std::vector<InstallableStatusCode>{}, tester->errors()); } } @@ -950,8 +990,8 @@ EXPECT_EQ(nullptr, tester->primary_icon()); EXPECT_FALSE(tester->valid_manifest()); EXPECT_FALSE(tester->has_worker()); - EXPECT_TRUE(tester->badge_icon_url().is_empty()); - EXPECT_EQ(nullptr, tester->badge_icon()); + EXPECT_TRUE(tester->splash_icon_url().is_empty()); + EXPECT_EQ(nullptr, tester->splash_icon()); EXPECT_EQ(std::vector<InstallableStatusCode>{NO_MANIFEST}, tester->errors()); } @@ -975,8 +1015,8 @@ EXPECT_EQ(nullptr, tester->primary_icon()); EXPECT_FALSE(tester->valid_manifest()); EXPECT_FALSE(tester->has_worker()); - EXPECT_TRUE(tester->badge_icon_url().is_empty()); - EXPECT_EQ(nullptr, tester->badge_icon()); + EXPECT_TRUE(tester->splash_icon_url().is_empty()); + EXPECT_EQ(nullptr, tester->splash_icon()); EXPECT_EQ(std::vector<InstallableStatusCode>{}, tester->errors()); } @@ -998,8 +1038,8 @@ EXPECT_NE(nullptr, tester->primary_icon()); EXPECT_TRUE(tester->valid_manifest()); EXPECT_FALSE(tester->has_worker()); - EXPECT_TRUE(tester->badge_icon_url().is_empty()); - EXPECT_EQ(nullptr, tester->badge_icon()); + EXPECT_TRUE(tester->splash_icon_url().is_empty()); + EXPECT_EQ(nullptr, tester->splash_icon()); EXPECT_EQ(std::vector<InstallableStatusCode>{NO_MATCHING_SERVICE_WORKER}, tester->errors()); } @@ -1037,12 +1077,14 @@ EXPECT_TRUE(manager->valid_manifest()); EXPECT_FALSE(manager->has_worker()); EXPECT_EQ(1u, manager->icons_.size()); - EXPECT_FALSE((manager->icon_url(IconPurpose::ANY).is_empty())); - EXPECT_NE(nullptr, (manager->icon(IconPurpose::ANY))); + EXPECT_FALSE( + (manager->icon_url(InstallableManager::IconUsage::kPrimary).is_empty())); + EXPECT_NE(nullptr, (manager->icon(InstallableManager::IconUsage::kPrimary))); EXPECT_EQ(NO_ERROR_DETECTED, manager->manifest_error()); EXPECT_EQ(NO_ERROR_DETECTED, manager->valid_manifest_error()); EXPECT_EQ(NO_ERROR_DETECTED, manager->worker_error()); - EXPECT_EQ(NO_ERROR_DETECTED, (manager->icon_error(IconPurpose::ANY))); + EXPECT_EQ(NO_ERROR_DETECTED, + (manager->icon_error(InstallableManager::IconUsage::kPrimary))); EXPECT_TRUE(!manager->task_queue_.HasCurrent()); EXPECT_TRUE(!manager->task_queue_.paused_tasks_.empty()); @@ -1064,8 +1106,8 @@ EXPECT_NE(nullptr, nested_tester->primary_icon()); EXPECT_TRUE(nested_tester->valid_manifest()); EXPECT_FALSE(nested_tester->has_worker()); - EXPECT_TRUE(nested_tester->badge_icon_url().is_empty()); - EXPECT_EQ(nullptr, nested_tester->badge_icon()); + EXPECT_TRUE(nested_tester->splash_icon_url().is_empty()); + EXPECT_EQ(nullptr, nested_tester->splash_icon()); EXPECT_EQ(std::vector<InstallableStatusCode>{}, nested_tester->errors()); } @@ -1081,8 +1123,8 @@ EXPECT_NE(nullptr, tester->primary_icon()); EXPECT_TRUE(tester->valid_manifest()); EXPECT_TRUE(tester->has_worker()); - EXPECT_TRUE(tester->badge_icon_url().is_empty()); - EXPECT_EQ(nullptr, tester->badge_icon()); + EXPECT_TRUE(tester->splash_icon_url().is_empty()); + EXPECT_EQ(nullptr, tester->splash_icon()); EXPECT_EQ(std::vector<InstallableStatusCode>{}, tester->errors()); // Verify internal state. @@ -1091,12 +1133,14 @@ EXPECT_TRUE(manager->valid_manifest()); EXPECT_TRUE(manager->has_worker()); EXPECT_EQ(1u, manager->icons_.size()); - EXPECT_FALSE((manager->icon_url(IconPurpose::ANY).is_empty())); - EXPECT_NE(nullptr, (manager->icon(IconPurpose::ANY))); + EXPECT_FALSE( + (manager->icon_url(InstallableManager::IconUsage::kPrimary).is_empty())); + EXPECT_NE(nullptr, (manager->icon(InstallableManager::IconUsage::kPrimary))); EXPECT_EQ(NO_ERROR_DETECTED, manager->manifest_error()); EXPECT_EQ(NO_ERROR_DETECTED, manager->valid_manifest_error()); EXPECT_EQ(NO_ERROR_DETECTED, manager->worker_error()); - EXPECT_EQ(NO_ERROR_DETECTED, (manager->icon_error(IconPurpose::ANY))); + EXPECT_EQ(NO_ERROR_DETECTED, + (manager->icon_error(InstallableManager::IconUsage::kPrimary))); EXPECT_TRUE(!manager->task_queue_.HasCurrent()); EXPECT_FALSE(!manager->task_queue_.paused_tasks_.empty()); } @@ -1140,8 +1184,8 @@ EXPECT_NE(nullptr, tester->primary_icon()); EXPECT_TRUE(tester->valid_manifest()); EXPECT_FALSE(tester->has_worker()); - EXPECT_TRUE(tester->badge_icon_url().is_empty()); - EXPECT_EQ(nullptr, tester->badge_icon()); + EXPECT_TRUE(tester->splash_icon_url().is_empty()); + EXPECT_EQ(nullptr, tester->splash_icon()); EXPECT_EQ(std::vector<InstallableStatusCode>{NOT_OFFLINE_CAPABLE}, tester->errors()); } @@ -1223,8 +1267,8 @@ EXPECT_NE(nullptr, tester->primary_icon()); EXPECT_TRUE(tester->valid_manifest()); EXPECT_FALSE(tester->has_worker()); - EXPECT_TRUE(tester->badge_icon_url().is_empty()); - EXPECT_EQ(nullptr, tester->badge_icon()); + EXPECT_TRUE(tester->splash_icon_url().is_empty()); + EXPECT_EQ(nullptr, tester->splash_icon()); EXPECT_EQ(std::vector<InstallableStatusCode>{NOT_OFFLINE_CAPABLE}, tester->errors()); } @@ -1248,8 +1292,8 @@ EXPECT_NE(nullptr, tester->primary_icon()); EXPECT_TRUE(tester->valid_manifest()); EXPECT_TRUE(tester->has_worker()); - EXPECT_TRUE(tester->badge_icon_url().is_empty()); - EXPECT_EQ(nullptr, tester->badge_icon()); + EXPECT_TRUE(tester->splash_icon_url().is_empty()); + EXPECT_EQ(nullptr, tester->splash_icon()); EXPECT_EQ(std::vector<InstallableStatusCode>{}, tester->errors()); } @@ -1272,8 +1316,8 @@ EXPECT_EQ(144, tester->primary_icon()->width()); EXPECT_TRUE(tester->valid_manifest()); EXPECT_TRUE(tester->has_worker()); - EXPECT_TRUE(tester->badge_icon_url().is_empty()); - EXPECT_EQ(nullptr, tester->badge_icon()); + EXPECT_TRUE(tester->splash_icon_url().is_empty()); + EXPECT_EQ(nullptr, tester->splash_icon()); EXPECT_EQ(std::vector<InstallableStatusCode>{}, tester->errors()); } @@ -1297,8 +1341,8 @@ EXPECT_EQ(nullptr, tester->primary_icon()); EXPECT_FALSE(tester->valid_manifest()); EXPECT_FALSE(tester->has_worker()); - EXPECT_TRUE(tester->badge_icon_url().is_empty()); - EXPECT_EQ(nullptr, tester->badge_icon()); + EXPECT_TRUE(tester->splash_icon_url().is_empty()); + EXPECT_EQ(nullptr, tester->splash_icon()); EXPECT_EQ(std::vector<InstallableStatusCode>{NO_ICON_AVAILABLE}, tester->errors()); } @@ -1322,8 +1366,8 @@ EXPECT_NE(nullptr, tester->primary_icon()); EXPECT_TRUE(tester->valid_manifest()); EXPECT_TRUE(tester->has_worker()); - EXPECT_TRUE(tester->badge_icon_url().is_empty()); - EXPECT_EQ(nullptr, tester->badge_icon()); + EXPECT_TRUE(tester->splash_icon_url().is_empty()); + EXPECT_EQ(nullptr, tester->splash_icon()); EXPECT_EQ(std::vector<InstallableStatusCode>{}, tester->errors()); } @@ -1342,8 +1386,8 @@ EXPECT_NE(nullptr, tester->primary_icon()); EXPECT_TRUE(tester->valid_manifest()); EXPECT_TRUE(tester->has_worker()); - EXPECT_TRUE(tester->badge_icon_url().is_empty()); - EXPECT_EQ(nullptr, tester->badge_icon()); + EXPECT_TRUE(tester->splash_icon_url().is_empty()); + EXPECT_EQ(nullptr, tester->splash_icon()); EXPECT_EQ(std::vector<InstallableStatusCode>{}, tester->errors()); } } @@ -1492,6 +1536,37 @@ } IN_PROC_BROWSER_TEST_F(InstallableManagerBrowserTest, + DebugModeBadFallbackMaskable) { + base::RunLoop run_loop; + std::unique_ptr<CallbackTester> tester( + new CallbackTester(run_loop.QuitClosure())); + + InstallableParams params = GetPrimaryIconPreferMaskableParams(); + params.is_debug_mode = true; + + NavigateAndRunInstallableManager( + browser(), tester.get(), params, + GetURLOfPageWithServiceWorkerAndManifest( + "/banners/manifest_one_bad_maskable.json")); + + run_loop.Run(); + + EXPECT_FALSE(tester->manifest().IsEmpty()); + EXPECT_FALSE(tester->manifest_url().is_empty()); + + EXPECT_TRUE(tester->primary_icon_url().is_empty()); + EXPECT_EQ(nullptr, tester->primary_icon()); + EXPECT_FALSE(tester->has_maskable_primary_icon()); + + EXPECT_FALSE(tester->valid_manifest()); + EXPECT_FALSE(tester->has_worker()); + EXPECT_TRUE(tester->splash_icon_url().is_empty()); + EXPECT_EQ(nullptr, tester->splash_icon()); + EXPECT_EQ(std::vector<InstallableStatusCode>{NO_ACCEPTABLE_ICON}, + tester->errors()); +} + +IN_PROC_BROWSER_TEST_F(InstallableManagerBrowserTest, GetAllInatallabilityErrorsNoErrors) { EXPECT_EQ(std::vector<content::InstallabilityError>{}, NavigateAndGetAllInstallabilityErrors( @@ -1554,3 +1629,63 @@ EXPECT_EQ(std::vector<InstallableStatusCode>({NO_MATCHING_SERVICE_WORKER}), tester->errors()); } + +IN_PROC_BROWSER_TEST_F(InstallableManagerBrowserTest, CheckSplashIcon) { + // Checks that InstallableManager chooses the correct splash icon. + + // Test page has a manifest with only one icon, primary icon and splash icon + // should be the same one. + { + base::RunLoop run_loop; + std::unique_ptr<CallbackTester> tester( + new CallbackTester(run_loop.QuitClosure())); + + NavigateAndRunInstallableManager(browser(), tester.get(), + GetPrimaryIconAndSplashIconParams(), + GetURLOfPageWithServiceWorkerAndManifest( + "/banners/manifest_one_icon.json")); + + run_loop.Run(); + + EXPECT_FALSE(tester->manifest().IsEmpty()); + EXPECT_FALSE(tester->manifest_url().is_empty()); + + EXPECT_FALSE(tester->primary_icon_url().is_empty()); + EXPECT_NE(nullptr, tester->primary_icon()); + EXPECT_FALSE(tester->valid_manifest()); + EXPECT_FALSE(tester->has_worker()); + EXPECT_FALSE(tester->splash_icon_url().is_empty()); + EXPECT_NE(nullptr, tester->splash_icon()); + EXPECT_EQ(std::vector<InstallableStatusCode>{}, tester->errors()); + + EXPECT_EQ(tester->primary_icon_url(), tester->splash_icon_url()); + } + + // Test page has a manifest with only one maskable icon. This should fail to + // get a splash icon but not record an error. + { + base::RunLoop run_loop; + std::unique_ptr<CallbackTester> tester( + new CallbackTester(run_loop.QuitClosure())); + + NavigateAndRunInstallableManager( + browser(), tester.get(), + GetPrimaryIconPreferMaskableAndSplashIconParams(), + GetURLOfPageWithServiceWorkerAndManifest( + "/banners/manifest_one_maskable.json")); + + run_loop.Run(); + + EXPECT_FALSE(tester->manifest().IsEmpty()); + EXPECT_FALSE(tester->manifest_url().is_empty()); + + EXPECT_FALSE(tester->primary_icon_url().is_empty()); + EXPECT_NE(nullptr, tester->primary_icon()); + EXPECT_TRUE(tester->has_maskable_primary_icon()); + EXPECT_FALSE(tester->valid_manifest()); + EXPECT_FALSE(tester->has_worker()); + EXPECT_TRUE(tester->splash_icon_url().is_empty()); + EXPECT_EQ(nullptr, tester->splash_icon()); + EXPECT_EQ(std::vector<InstallableStatusCode>{}, tester->errors()); + } +}
diff --git a/chrome/browser/installable/installable_manager_unittest.cc b/chrome/browser/installable/installable_manager_unittest.cc index d8c0a1d..f142699 100644 --- a/chrome/browser/installable/installable_manager_unittest.cc +++ b/chrome/browser/installable/installable_manager_unittest.cc
@@ -205,7 +205,7 @@ blink::Manifest manifest = GetValidManifest(); // The icon MUST have IconPurpose::ANY at least. - manifest.icons[0].purpose[0] = IconPurpose::BADGE; + manifest.icons[0].purpose[0] = IconPurpose::MASKABLE; EXPECT_FALSE(IsManifestValid(manifest)); EXPECT_EQ(MANIFEST_MISSING_SUITABLE_ICON, GetErrorCode());
diff --git a/chrome/browser/installable/installable_params.cc b/chrome/browser/installable/installable_params.cc new file mode 100644 index 0000000..9eeaf31 --- /dev/null +++ b/chrome/browser/installable/installable_params.cc
@@ -0,0 +1,8 @@ +// Copyright 2020 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chrome/browser/installable/installable_params.h" + +InstallableParams::InstallableParams() = default; +InstallableParams::InstallableParams(const InstallableParams&) = default;
diff --git a/chrome/browser/installable/installable_params.h b/chrome/browser/installable/installable_params.h index 58b4c357..a55ebdd 100644 --- a/chrome/browser/installable/installable_params.h +++ b/chrome/browser/installable/installable_params.h
@@ -11,6 +11,8 @@ // true, otherwise, all tasks will be run and a complete list of errors will be // returned. struct InstallableParams { + InstallableParams(); + InstallableParams(const InstallableParams&); // Check whether the current WebContents is eligible to be installed, i.e it: // - is served over HTTPS // - is a top-level frame @@ -28,6 +30,10 @@ // conforming to the badge icon size parameters. bool valid_badge_icon = false; + // Check whether there is a fetchable, non-empty icon in the manifest + // conforming to the splash icon size parameters. + bool valid_splash_icon = false; + // Check whether the site has a manifest valid for a web app. bool valid_manifest = false;
diff --git a/chrome/browser/installable/installable_task_queue_unittest.cc b/chrome/browser/installable/installable_task_queue_unittest.cc index 710c0c7b..f6f96c6 100644 --- a/chrome/browser/installable/installable_task_queue_unittest.cc +++ b/chrome/browser/installable/installable_task_queue_unittest.cc
@@ -13,7 +13,7 @@ bool valid_manifest = false; bool has_worker = false; bool valid_primary_icon = false; - bool valid_badge_icon = false; + bool valid_splash_icon = false; }; // Constructs an InstallableTask, with the supplied bools stored in it. @@ -22,7 +22,7 @@ task.params.valid_manifest = params.valid_manifest; task.params.has_worker = params.has_worker; task.params.valid_primary_icon = params.valid_primary_icon; - task.params.valid_badge_icon = params.valid_badge_icon; + task.params.valid_splash_icon = params.valid_splash_icon; return task; } @@ -30,7 +30,7 @@ return task.params.valid_manifest == params.valid_manifest && task.params.has_worker == params.has_worker && task.params.valid_primary_icon == params.valid_primary_icon && - task.params.valid_badge_icon == params.valid_badge_icon; + task.params.valid_splash_icon == params.valid_splash_icon; } class InstallableTaskQueueUnitTest : public testing::Test {};
diff --git a/chrome/browser/media/webrtc/webrtc_browsertest_base.cc b/chrome/browser/media/webrtc/webrtc_browsertest_base.cc index 963a351ca..806b591 100644 --- a/chrome/browser/media/webrtc/webrtc_browsertest_base.cc +++ b/chrome/browser/media/webrtc/webrtc_browsertest_base.cc
@@ -28,6 +28,7 @@ #include "chrome/common/chrome_paths.h" #include "chrome/test/base/ui_test_utils.h" #include "components/permissions/permission_request_manager.h" +#include "components/permissions/test/permission_request_observer.h" #include "content/public/test/browser_test_utils.h" #include "extensions/browser/extension_registry.h" #include "net/test/embedded_test_server/embedded_test_server.h" @@ -102,43 +103,6 @@ return false; } -// PermissionRequestObserver --------------------------------------------------- - -// Used to observe the creation of permission prompt without responding. -class PermissionRequestObserver - : public permissions::PermissionRequestManager::Observer { - public: - explicit PermissionRequestObserver(content::WebContents* web_contents) - : request_manager_(permissions::PermissionRequestManager::FromWebContents( - web_contents)), - request_shown_(false), - message_loop_runner_(new content::MessageLoopRunner) { - request_manager_->AddObserver(this); - } - ~PermissionRequestObserver() override { - // Safe to remove twice if it happens. - request_manager_->RemoveObserver(this); - } - - void Wait() { message_loop_runner_->Run(); } - - bool request_shown() const { return request_shown_; } - - private: - // PermissionRequestManager::Observer - void OnBubbleAdded() override { - request_shown_ = true; - request_manager_->RemoveObserver(this); - message_loop_runner_->Quit(); - } - - permissions::PermissionRequestManager* request_manager_; - bool request_shown_; - scoped_refptr<content::MessageLoopRunner> message_loop_runner_; - - DISALLOW_COPY_AND_ASSIGN(PermissionRequestObserver); -}; - std::vector<std::string> JsonArrayToVectorOfStrings( const std::string& json_array) { std::unique_ptr<base::Value> value = @@ -192,9 +156,9 @@ permissions::PermissionRequestManager::FromWebContents(tab_contents) ->set_auto_response_for_test( permissions::PermissionRequestManager::ACCEPT_ALL); - PermissionRequestObserver permissionRequestObserver(tab_contents); + permissions::PermissionRequestObserver observer(tab_contents); GetUserMedia(tab_contents, constraints); - EXPECT_TRUE(permissionRequestObserver.request_shown()); + EXPECT_TRUE(observer.request_shown()); EXPECT_TRUE(content::ExecuteScriptAndExtractString( tab_contents->GetMainFrame(), "obtainGetUserMediaResult();", &result)); return kOkGotStream == result; @@ -225,9 +189,9 @@ permissions::PermissionRequestManager::FromWebContents(tab_contents) ->set_auto_response_for_test( permissions::PermissionRequestManager::DENY_ALL); - PermissionRequestObserver permissionRequestObserver(tab_contents); + permissions::PermissionRequestObserver observer(tab_contents); GetUserMedia(tab_contents, constraints); - EXPECT_TRUE(permissionRequestObserver.request_shown()); + EXPECT_TRUE(observer.request_shown()); EXPECT_TRUE(content::ExecuteScriptAndExtractString( tab_contents->GetMainFrame(), "obtainGetUserMediaResult();", &result)); EXPECT_EQ(kFailedWithNotAllowedError, result); @@ -239,9 +203,9 @@ permissions::PermissionRequestManager::FromWebContents(tab_contents) ->set_auto_response_for_test( permissions::PermissionRequestManager::DISMISS); - PermissionRequestObserver permissionRequestObserver(tab_contents); + permissions::PermissionRequestObserver observer(tab_contents); GetUserMedia(tab_contents, kAudioVideoCallConstraints); - EXPECT_TRUE(permissionRequestObserver.request_shown()); + EXPECT_TRUE(observer.request_shown()); // A dismiss should be treated like a deny. EXPECT_TRUE(content::ExecuteScriptAndExtractString( tab_contents->GetMainFrame(), "obtainGetUserMediaResult();", &result)); @@ -262,9 +226,9 @@ permissions::PermissionRequestManager::FromWebContents(tab_contents) ->set_auto_response_for_test( permissions::PermissionRequestManager::DENY_ALL); - PermissionRequestObserver permissionRequestObserver(tab_contents); + permissions::PermissionRequestObserver observer(tab_contents); GetUserMedia(tab_contents, kAudioVideoCallConstraints); - EXPECT_FALSE(permissionRequestObserver.request_shown()); + EXPECT_FALSE(observer.request_shown()); EXPECT_TRUE(content::ExecuteScriptAndExtractString( tab_contents->GetMainFrame(), "obtainGetUserMediaResult();", &result)); EXPECT_EQ(kOkGotStream, result); @@ -284,9 +248,9 @@ permissions::PermissionRequestManager::FromWebContents(tab_contents) ->set_auto_response_for_test( permissions::PermissionRequestManager::ACCEPT_ALL); - PermissionRequestObserver permissionRequestObserver(tab_contents); + permissions::PermissionRequestObserver observer(tab_contents); GetUserMedia(tab_contents, kAudioVideoCallConstraints); - EXPECT_FALSE(permissionRequestObserver.request_shown()); + EXPECT_FALSE(observer.request_shown()); EXPECT_TRUE(content::ExecuteScriptAndExtractString( tab_contents->GetMainFrame(), "obtainGetUserMediaResult();", &result)); EXPECT_EQ(kFailedWithNotAllowedError, result);
diff --git a/chrome/browser/metrics/process_memory_metrics_emitter.cc b/chrome/browser/metrics/process_memory_metrics_emitter.cc index d3db0b1..8d4984d 100644 --- a/chrome/browser/metrics/process_memory_metrics_emitter.cc +++ b/chrome/browser/metrics/process_memory_metrics_emitter.cc
@@ -757,7 +757,8 @@ if (memory_dump_in_progress_ || get_process_urls_in_progress_) return; - DCHECK(global_dump_); + if (!global_dump_) + return; uint32_t private_footprint_total_kb = 0; uint32_t renderer_private_footprint_total_kb = 0; @@ -908,8 +909,6 @@ // processes. per_tab_metrics.RecordPmfs(GetUkmRecorder()); } - - global_dump_ = nullptr; } namespace {
diff --git a/chrome/browser/notifications/notification_interactive_uitest_support.cc b/chrome/browser/notifications/notification_interactive_uitest_support.cc index 6e1b5eb3..6d05f37 100644 --- a/chrome/browser/notifications/notification_interactive_uitest_support.cc +++ b/chrome/browser/notifications/notification_interactive_uitest_support.cc
@@ -17,50 +17,12 @@ #include "components/content_settings/core/common/content_settings.h" #include "components/permissions/features.h" #include "components/permissions/permission_request_manager.h" +#include "components/permissions/test/permission_request_observer.h" #include "content/public/common/content_switches.h" #include "content/public/test/browser_test_utils.h" #include "ui/message_center/message_center.h" #include "ui/message_center/message_center_observer.h" -namespace { - -// Used to observe the creation of permission prompt without responding. -class PermissionRequestObserver - : public permissions::PermissionRequestManager::Observer { - public: - explicit PermissionRequestObserver(content::WebContents* web_contents) - : request_manager_(permissions::PermissionRequestManager::FromWebContents( - web_contents)), - request_shown_(false), - message_loop_runner_(new content::MessageLoopRunner) { - request_manager_->AddObserver(this); - } - ~PermissionRequestObserver() override { - // Safe to remove twice if it happens. - request_manager_->RemoveObserver(this); - } - - void Wait() { message_loop_runner_->Run(); } - - bool request_shown() { return request_shown_; } - - private: - // PermissionRequestManager::Observer - void OnBubbleAdded() override { - request_shown_ = true; - request_manager_->RemoveObserver(this); - message_loop_runner_->Quit(); - } - - permissions::PermissionRequestManager* request_manager_; - bool request_shown_; - scoped_refptr<content::MessageLoopRunner> message_loop_runner_; - - DISALLOW_COPY_AND_ASSIGN(PermissionRequestObserver); -}; - -} // namespace - class MessageCenterChangeObserver::Impl : public message_center::MessageCenterObserver { public: @@ -236,7 +198,7 @@ bool NotificationsTest::RequestPermissionAndWait(Browser* browser) { content::WebContents* web_contents = GetActiveWebContents(browser); ui_test_utils::NavigateToURL(browser, GetTestPageURL()); - PermissionRequestObserver observer(web_contents); + permissions::PermissionRequestObserver observer(web_contents); std::string result; EXPECT_TRUE(content::ExecuteScriptAndExtractString( web_contents, "requestPermissionAndRespond();", &result));
diff --git a/chrome/browser/permissions/permission_dialog_delegate.cc b/chrome/browser/permissions/permission_dialog_delegate.cc index b5aa237..1902483 100644 --- a/chrome/browser/permissions/permission_dialog_delegate.cc +++ b/chrome/browser/permissions/permission_dialog_delegate.cc
@@ -13,9 +13,6 @@ #include "chrome/android/chrome_jni_headers/PermissionDialogController_jni.h" #include "chrome/android/chrome_jni_headers/PermissionDialogDelegate_jni.h" #include "chrome/browser/android/resource_mapper.h" -#include "chrome/browser/android/tab_android.h" -#include "chrome/browser/profiles/profile.h" -#include "chrome/common/chrome_features.h" #include "chrome/grit/generated_resources.h" #include "content/public/browser/navigation_handle.h" #include "content/public/browser/web_contents.h" @@ -30,19 +27,19 @@ PermissionPromptAndroid* permission_prompt) { DCHECK(web_contents); - // If we don't have a tab, just act as though the prompt was dismissed. - TabAndroid* tab = TabAndroid::FromWebContents(web_contents); - if (!tab) { + // If we don't have a window, just act as though the prompt was dismissed. + if (!web_contents->GetTopLevelNativeWindow()) { permission_prompt->Closing(); return; } // Dispatch the dialog to Java, which manages the lifetime of this object. - new PermissionDialogDelegate(tab, permission_prompt); + new PermissionDialogDelegate(web_contents, permission_prompt); } -void PermissionDialogDelegate::CreateJavaDelegate(JNIEnv* env, - TabAndroid* tab) { +void PermissionDialogDelegate::CreateJavaDelegate( + JNIEnv* env, + content::WebContents* web_contents) { base::android::ScopedJavaLocalRef<jstring> primaryButtonText = ConvertUTF16ToJavaString(env, l10n_util::GetStringUTF16(IDS_PERMISSION_ALLOW)); @@ -57,7 +54,8 @@ } j_delegate_.Reset(Java_PermissionDialogDelegate_create( - env, reinterpret_cast<uintptr_t>(this), tab->GetJavaObject(), + env, reinterpret_cast<uintptr_t>(this), + web_contents->GetTopLevelNativeWindow()->GetJavaObject(), base::android::ToJavaIntArray(env, content_settings_types), ResourceMapper::MapFromChromiumId(permission_prompt_->GetIconId()), ConvertUTF16ToJavaString(env, permission_prompt_->GetMessageText()), @@ -85,16 +83,15 @@ } PermissionDialogDelegate::PermissionDialogDelegate( - TabAndroid* tab, + content::WebContents* web_contents, PermissionPromptAndroid* permission_prompt) - : content::WebContentsObserver(tab->web_contents()), + : content::WebContentsObserver(web_contents), permission_prompt_(permission_prompt) { - DCHECK(tab); DCHECK(permission_prompt_); // Create our Java counterpart, which manages our lifetime. JNIEnv* env = base::android::AttachCurrentThread(); - CreateJavaDelegate(env, tab); + CreateJavaDelegate(env, web_contents); // Send the Java delegate to the Java PermissionDialogController for display. // The controller takes over lifetime management; when the Java delegate is no
diff --git a/chrome/browser/permissions/permission_dialog_delegate.h b/chrome/browser/permissions/permission_dialog_delegate.h index 869eba7..6f196aa 100644 --- a/chrome/browser/permissions/permission_dialog_delegate.h +++ b/chrome/browser/permissions/permission_dialog_delegate.h
@@ -10,7 +10,6 @@ #include "base/android/scoped_java_ref.h" #include "base/callback.h" #include "base/macros.h" -#include "chrome/browser/media/webrtc/media_stream_devices_controller.h" #include "chrome/browser/permissions/permission_prompt_android.h" #include "components/content_settings/core/common/content_settings_types.h" #include "components/permissions/permission_util.h" @@ -21,7 +20,6 @@ namespace content { class WebContents; } -class TabAndroid; // Delegate class for displaying a permission prompt as a modal dialog. Used as // the native to Java interface to allow Java to communicate the user's @@ -46,12 +44,11 @@ void Destroy(JNIEnv* env, const JavaParamRef<jobject>& obj); private: - PermissionDialogDelegate( - TabAndroid* tab, - PermissionPromptAndroid* permission_prompt); + PermissionDialogDelegate(content::WebContents* web_contents, + PermissionPromptAndroid* permission_prompt); ~PermissionDialogDelegate() override; - void CreateJavaDelegate(JNIEnv* env, TabAndroid* tab); + void CreateJavaDelegate(JNIEnv* env, content::WebContents* web_contents); // On navigation or page destruction, hide the dialog. void DismissDialog();
diff --git a/chrome/browser/policy/extension_policy_browsertest.cc b/chrome/browser/policy/extension_policy_browsertest.cc index c6d08c1..7ddfd08 100644 --- a/chrome/browser/policy/extension_policy_browsertest.cc +++ b/chrome/browser/policy/extension_policy_browsertest.cc
@@ -24,8 +24,10 @@ #include "chrome/browser/policy/profile_policy_connector_builder.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/ui/browser.h" +#include "chrome/browser/web_applications/components/app_registrar.h" #include "chrome/browser/web_applications/components/app_shortcut_manager.h" #include "chrome/browser/web_applications/components/web_app_provider_base.h" +#include "chrome/browser/web_applications/test/web_app_install_observer.h" #include "chrome/common/extensions/extension_test_util.h" #include "chrome/common/extensions/manifest_handlers/app_launch_info.h" #include "chrome/common/web_application_info.h" @@ -1493,14 +1495,15 @@ }; IN_PROC_BROWSER_TEST_F(WebAppInstallForceListPolicyTest, StartUpInstallation) { - extensions::TestExtensionRegistryObserver observer(extension_registry()); - const extensions::Extension* installed_extension = - observer.WaitForExtensionWillBeInstalled(); - - ASSERT_TRUE(installed_extension); - const GURL installed_app_url = - extensions::AppLaunchInfo::GetFullLaunchURL(installed_extension); - EXPECT_EQ(policy_app_url_, installed_app_url); + const web_app::AppRegistrar& registrar = + web_app::WebAppProviderBase::GetProviderBase(browser()->profile()) + ->registrar(); + web_app::WebAppInstallObserver install_observer(browser()->profile()); + base::Optional<web_app::AppId> app_id = + registrar.FindAppWithUrlInScope(policy_app_url_); + if (!app_id) + app_id = install_observer.AwaitNextInstall(); + EXPECT_EQ(policy_app_url_, registrar.GetAppLaunchURL(*app_id)); } // Fixture for tests that have two profiles with a different policy for each.
diff --git a/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java b/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java index 5f88f93..15d4d42 100644 --- a/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java +++ b/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java
@@ -343,12 +343,6 @@ */ public static final String FLAGS_CACHED_NIGHT_MODE_CCT_AVAILABLE = "night_mode_cct_available"; /** - * Whether or not night mode should set "light" as the default option. - * Default value is false. - */ - public static final String FLAGS_CACHED_NIGHT_MODE_DEFAULT_TO_LIGHT = - "night_mode_default_to_light"; - /** * Whether the Paint Preview Capture menu item is enabled. * Default value is false. */ @@ -744,6 +738,7 @@ "home_page_button_force_enabled", "homepage_tile_enabled", "inflate_toolbar_on_background_thread", + "night_mode_default_to_light", "ntp_button_enabled", "ntp_button_variant", "physical_web", @@ -841,7 +836,6 @@ FLAGS_CACHED_NETWORK_SERVICE_WARM_UP_ENABLED, FLAGS_CACHED_NIGHT_MODE_AVAILABLE, FLAGS_CACHED_NIGHT_MODE_CCT_AVAILABLE, - FLAGS_CACHED_NIGHT_MODE_DEFAULT_TO_LIGHT, FLAGS_CACHED_PRIORITIZE_BOOTSTRAP_TASKS, FLAGS_CACHED_SERVICE_MANAGER_FOR_BACKGROUND_PREFETCH, FLAGS_CACHED_SERVICE_MANAGER_FOR_DOWNLOAD_RESUMPTION,
diff --git a/chrome/browser/profiles/profile_impl.cc b/chrome/browser/profiles/profile_impl.cc index 55fbf20..15ad304 100644 --- a/chrome/browser/profiles/profile_impl.cc +++ b/chrome/browser/profiles/profile_impl.cc
@@ -715,10 +715,19 @@ std::make_unique<PrefsInternalsSource>(this)); if (delegate_) { - TRACE_EVENT0("browser", "ProfileImpl::DoFileInit:DelegateOnProfileCreated") - delegate_->OnProfileCreated(this, true, IsNewProfile()); + TRACE_EVENT0("browser", "ProfileImpl::DoFileInit:DelegateOnProfileCreated"); + // Fails if the browser is shutting down. This is done to avoid + // launching new UI, finalising profile creation, etc. which + // would trigger a crash down the line. See ... + const bool shutting_down = g_browser_process->IsShuttingDown(); + delegate_->OnProfileCreated(this, !shutting_down, IsNewProfile()); + // The current Profile may be immediately deleted as part of + // the call to OnProfileCreated(...) if the initialisation is + // reported as a failure, thus no code should be executed past + // that point. + if (shutting_down) + return; } - // Ensure that the SharingService is initialized now that io_data_ is // initialized. https://crbug.com/171406 SharingServiceFactory::GetForBrowserContext(this);
diff --git a/chrome/browser/resources/chromeos/login/enterprise_enrollment.html b/chrome/browser/resources/chromeos/login/enterprise_enrollment.html index ef66abb..a19ad9e 100644 --- a/chrome/browser/resources/chromeos/login/enterprise_enrollment.html +++ b/chrome/browser/resources/chromeos/login/enterprise_enrollment.html
@@ -134,17 +134,17 @@ <hd-iron-icon slot="oobe-icon" icon1x="oobe-32:enterprise" icon2x="oobe-64:enterprise"> </hd-iron-icon> - <div slot="footer" class="flex layout vertical center end-justified"> - <!-- Hide the subtitle if the domain could not be determined. --> - <div hidden="[[isEmpty_(enrolledDomain_)]]" class="self-start"> - <html-echo content= - "[[successText_(locale, deviceName_, enrolledDomain_)]]"> - </html-echo> - <!-- Attestation-based enrollment happens automatically and may - not be wanted by the user. Simple warning. --> - <div hidden="[[!isAutoEnroll_]]" - >[[i18nDynamic(locale, 'oauthEnrollAbeSuccessSupport')]]</div> + <!-- Hide the subtitle if the domain could not be determined. --> + <div hidden="[[isEmpty_(enrolledDomain_)]]" class="self-start" + slot="subtitle"> + <div>[[successText_(locale, deviceName_, enrolledDomain_)]]</div> + <!-- Attestation-based enrollment happens automatically and may + not be wanted by the user. Simple warning. --> + <div hidden="[[!isAutoEnroll_]]" + >[[i18nDynamic(locale, 'oauthEnrollAbeSuccessSupport')]] </div> + </div> + <div slot="footer" class="flex layout vertical center end-justified"> <img srcset="images/enrollment_success_illustration_1x.png 1x, images/enrollment_success_illustration_2x.png 2x" i18n-values="alt:enrollmentSuccessIllustrationTitle"
diff --git a/chrome/browser/resources/chromeos/login/oobe_buttons.html b/chrome/browser/resources/chromeos/login/oobe_buttons.html index 00d58c9..395b4034 100644 --- a/chrome/browser/resources/chromeos/login/oobe_buttons.html +++ b/chrome/browser/resources/chromeos/login/oobe_buttons.html
@@ -66,7 +66,7 @@ <div id="container" class="flex layout horizontal center center-justified self-stretch"> <slot name="text"> - <div>[[i18nDynamic(locale, textKey)]]</div> + <div class="fallback">[[i18nDynamic(locale, textKey)]]</div> </slot> </div> </cr-button> @@ -113,7 +113,7 @@ icon2x="oobe-buttons-40:arrow-forward"> </hd-iron-icon> <slot name="text"> - <div>[[i18nDynamic(locale, textKey)]]</div> + <div class="fallback">[[i18nDynamic(locale, textKey)]]</div> </slot> </div> </cr-button> @@ -132,7 +132,7 @@ aria-label$="[[labelForAria_]]" class="action-button"> <div class="flex horizontal layout start center"> <slot name="text"> - <div>[[i18nDynamic(locale, textKey)]]</div> + <div class="fallback">[[i18nDynamic(locale, textKey)]]</div> </slot> <hd-iron-icon icon1x="oobe-buttons-20:arrow-forward" @@ -179,7 +179,7 @@ class="oobe-icon" hidden> </hd-iron-icon> <slot name="text"> - <div>[[i18nDynamic(locale, textKey)]]</div> + <div class="fallback">[[i18nDynamic(locale, textKey)]]</div> </slot> </div> </div>
diff --git a/chrome/browser/resources/chromeos/login/oobe_dialog.css b/chrome/browser/resources/chromeos/login/oobe_dialog.css index b04097f..f02213c 100644 --- a/chrome/browser/resources/chromeos/login/oobe_dialog.css +++ b/chrome/browser/resources/chromeos/login/oobe_dialog.css
@@ -35,7 +35,11 @@ padding-top: 20px; } -#oobe-title ::slotted(h1) { +/* + * TODO(https://crbug.com/703984): remove the fallback class when fixed. + */ +#oobe-title ::slotted(h1), +#oobe-title .fallback { color: var(--oobe-header-text-color); @apply --oobe-header-font; margin: 0; @@ -45,7 +49,11 @@ padding-top: 8px; } -#oobe-subtitle ::slotted(*) { +/* + * TODO(https://crbug.com/703984): remove the fallback class when fixed. + */ +#oobe-subtitle ::slotted(*), +#oobe-subtitle .fallback { color: var(--oobe-subheader-text-color); line-height: var(--subtitle-line-height); margin: 0;
diff --git a/chrome/browser/resources/chromeos/login/oobe_dialog.html b/chrome/browser/resources/chromeos/login/oobe_dialog.html index 8651255..e0e5112 100644 --- a/chrome/browser/resources/chromeos/login/oobe_dialog.html +++ b/chrome/browser/resources/chromeos/login/oobe_dialog.html
@@ -83,12 +83,12 @@ <div id="oobe-title" class="slot-container layout vertical end-justified"> <slot name="title"> - <h1>[[i18nDynamic(locale, titleKey)]]</h1> + <h1 class="fallback">[[i18nDynamic(locale, titleKey)]]</h1> </slot> </div> <div id="oobe-subtitle" class="slot-container layout vertical"> <slot name="subtitle"> - <div>[[i18nDynamic(locale, subtitleKey)]]</div> + <div class="fallback">[[i18nDynamic(locale, subtitleKey)]]</div> </slot> </div> <div id="oobe-progress" class="slot-container layout vertical">
diff --git a/chrome/browser/resources/chromeos/login/oobe_help_dialog.css b/chrome/browser/resources/chromeos/login/oobe_help_dialog.css index 4bec595..cc995df7 100644 --- a/chrome/browser/resources/chromeos/login/oobe_help_dialog.css +++ b/chrome/browser/resources/chromeos/login/oobe_help_dialog.css
@@ -14,7 +14,8 @@ width: 512px; } -#help-dialog-title ::slotted(h1) { +#help-dialog-title ::slotted(h1), +#help-dialog-title .fallback { color: var(--oobe-header-text-color); @apply --oobe-help-dialog-header-font; margin: 0;
diff --git a/chrome/browser/resources/chromeos/login/oobe_help_dialog.html b/chrome/browser/resources/chromeos/login/oobe_help_dialog.html index 775dfec..f37107f 100644 --- a/chrome/browser/resources/chromeos/login/oobe_help_dialog.html +++ b/chrome/browser/resources/chromeos/login/oobe_help_dialog.html
@@ -27,7 +27,7 @@ <!-- Title --> <div id="help-dialog-title"> <slot name="title"> - <h1>[[i18nDynamic(locale, titleKey)]]</h1> + <h1 class="fallback">[[i18nDynamic(locale, titleKey)]]</h1> </slot> </div> <!-- Content to be shown -->
diff --git a/chrome/browser/resources/chromeos/login/oobe_text_buttons.css b/chrome/browser/resources/chromeos/login/oobe_text_buttons.css index 28e91ef..104f61b 100644 --- a/chrome/browser/resources/chromeos/login/oobe_text_buttons.css +++ b/chrome/browser/resources/chromeos/login/oobe_text_buttons.css
@@ -6,11 +6,11 @@ margin: 0 4px; /* So that two adjacent buttons are 8px separated. */ } -/* Default slot data is not selected by ::slotted() selector, see - * https://crbug.com/703984. +/* + * TODO(https://crbug.com/703984): remove the fallback class when fixed. */ :host ::slotted(*), -#text { +.fallback { font-family: var(--oobe-button-font-family); font-size: 12px; }
diff --git a/chrome/browser/resources/settings/autofill_page/BUILD.gn b/chrome/browser/resources/settings/autofill_page/BUILD.gn index c28f9d96..8f0eb9d4 100644 --- a/chrome/browser/resources/settings/autofill_page/BUILD.gn +++ b/chrome/browser/resources/settings/autofill_page/BUILD.gn
@@ -129,7 +129,10 @@ "//ui/webui/resources/js:web_ui_listener_behavior", "//ui/webui/resources/js/cr/ui:focus_without_ink", ] - externs_list = [ "$externs_path/passwords_private.js" ] + externs_list = [ + "$externs_path/passwords_private.js", + "$externs_path/quick_unlock_private.js", + ] } js_library("password_edit_dialog") {
diff --git a/chrome/browser/resources/settings/autofill_page/passwords_section.html b/chrome/browser/resources/settings/autofill_page/passwords_section.html index 891b287..4c3cb60 100644 --- a/chrome/browser/resources/settings/autofill_page/passwords_section.html +++ b/chrome/browser/resources/settings/autofill_page/passwords_section.html
@@ -183,7 +183,7 @@ </template> <if expr="chromeos"> <template is="dom-if" if="[[showPasswordPromptDialog_]]" restamp> - <settings-password-prompt-dialog auth-token="{{authToken_}}" + <settings-password-prompt-dialog on-token-obtained="onTokenObtained_" on-close="onPasswordPromptClosed_"> </settings-password-prompt-dialog> </template>
diff --git a/chrome/browser/resources/settings/autofill_page/passwords_section.js b/chrome/browser/resources/settings/autofill_page/passwords_section.js index 081387b..771136ba 100644 --- a/chrome/browser/resources/settings/autofill_page/passwords_section.js +++ b/chrome/browser/resources/settings/autofill_page/passwords_section.js
@@ -140,16 +140,6 @@ listBlurred_: Boolean, // <if expr="chromeos"> - /** - * Auth token for retrieving passwords if required by OS. - * @private - */ - authToken_: { - type: String, - value: '', - observer: 'onAuthTokenChanged_', - }, - /** @private */ showPasswordPromptDialog_: Boolean, @@ -309,24 +299,23 @@ // <if expr="chromeos"> /** - * When |authToken_| changes to a new non-empty value, it means that the - * password-prompt-dialog succeeded in creating a fresh token in the - * quickUnlockPrivate API. Because new tokens can only ever be created - * immediately following a GAIA password check, the passwordsPrivate API can - * now safely grant requests for secure data (i.e. saved passwords) for a - * limited time. This observer resolves the request, triggering a callback - * that requires a fresh auth token to succeed and that was provided to the - * BlockingRequestManager by another DOM element seeking secure data. + * When this event fired, it means that the password-prompt-dialog succeeded + * in creating a fresh token in the quickUnlockPrivate API. Because new tokens + * can only ever be created immediately following a GAIA password check, the + * passwordsPrivate API can now safely grant requests for secure data (i.e. + * saved passwords) for a limited time. This observer resolves the request, + * triggering a callback that requires a fresh auth token to succeed and that + * was provided to the BlockingRequestManager by another DOM element seeking + * secure data. * - * @param {string} newToken The newly created auth token. Note that its - * precise value is not relevant here, only the facts that it changed and - * that it is non-empty (i.e. not expired). + * @param {!CustomEvent<!chrome.quickUnlockPrivate.TokenInfo>} e - Contains + * newly created auth token. Note that its precise value is not relevant + * here, only the facts that it's created. * @private */ - onAuthTokenChanged_(newToken) { - if (newToken) { - this.tokenRequestManager_.resolve(); - } + onTokenObtained_(e) { + assert(e.detail); + this.tokenRequestManager_.resolve(); }, onPasswordPromptClosed_() {
diff --git a/chrome/browser/resources/settings/chromeos/multidevice_page/multidevice_page.html b/chrome/browser/resources/settings/chromeos/multidevice_page/multidevice_page.html index 7f98a7eb..cc1edae 100644 --- a/chrome/browser/resources/settings/chromeos/multidevice_page/multidevice_page.html +++ b/chrome/browser/resources/settings/chromeos/multidevice_page/multidevice_page.html
@@ -122,7 +122,7 @@ </settings-animated-pages> <template is="dom-if" if="[[showPasswordPromptDialog_]]" restamp> <settings-password-prompt-dialog id="multidevicePasswordPrompt" - auth-token="{{authToken_}}"> + on-token-obtained="onTokenObtained_"> </settings-password-prompt-dialog> </template> </template>
diff --git a/chrome/browser/resources/settings/chromeos/multidevice_page/multidevice_page.js b/chrome/browser/resources/settings/chromeos/multidevice_page/multidevice_page.js index 54bc233..a63ea1a 100644 --- a/chrome/browser/resources/settings/chromeos/multidevice_page/multidevice_page.js +++ b/chrome/browser/resources/settings/chromeos/multidevice_page/multidevice_page.js
@@ -36,11 +36,10 @@ /** * Authentication token provided by password-prompt-dialog. - * @private {string} + * @private {!chrome.quickUnlockPrivate.TokenInfo|undefined} */ authToken_: { - type: String, - value: '', + type: Object, }, /** @@ -264,13 +263,13 @@ if (this.authToken_) { this.browserProxy_.setFeatureEnabledState( this.featureToBeEnabledOnceAuthenticated_, true /* enabled */, - this.authToken_); + this.authToken_.token); settings.recordSettingChange(); // Reset |this.authToken_| now that it has been used. This ensures that // users cannot keep an old auth token and reuse it on an subsequent // request. - this.authToken_ = ''; + this.authToken_ = undefined; } // Either the feature was enabled above or the user canceled the request by @@ -381,4 +380,12 @@ this.pageContentData = newData; this.leaveNestedPageIfNoHostIsSet_(); }, + + /** + * @param {!CustomEvent<!chrome.quickUnlockPrivate.TokenInfo>} e + * @private + */ + onTokenObtained_(e) { + this.authToken_ = e.detail; + }, });
diff --git a/chrome/browser/resources/settings/chromeos/multidevice_page/multidevice_smartlock_subpage.html b/chrome/browser/resources/settings/chromeos/multidevice_page/multidevice_smartlock_subpage.html index e44e8f5..7701042 100644 --- a/chrome/browser/resources/settings/chromeos/multidevice_page/multidevice_smartlock_subpage.html +++ b/chrome/browser/resources/settings/chromeos/multidevice_page/multidevice_smartlock_subpage.html
@@ -58,7 +58,8 @@ </iron-collapse> <template is="dom-if" if="[[showPasswordPromptDialog_]]" restamp> <settings-password-prompt-dialog id="smartLockSignInPasswordPrompt" - on-close="onEnableSignInDialogClose_" auth-token="{{authToken_}}"> + on-close="onEnableSignInDialogClose_" + on-token-obtained="onTokenObtained_"> </settings-password-prompt-dialog> </template> </template>
diff --git a/chrome/browser/resources/settings/chromeos/multidevice_page/multidevice_smartlock_subpage.js b/chrome/browser/resources/settings/chromeos/multidevice_page/multidevice_smartlock_subpage.js index 83cec76..3727acd 100644 --- a/chrome/browser/resources/settings/chromeos/multidevice_page/multidevice_smartlock_subpage.js +++ b/chrome/browser/resources/settings/chromeos/multidevice_page/multidevice_smartlock_subpage.js
@@ -69,11 +69,10 @@ /** * Authentication token provided by password-prompt-dialog. - * @private {string} + * @private {!chrome.quickUnlockPrivate.TokenInfo|undefined} */ authToken_: { - type: String, - value: '', + type: Object, }, }, @@ -169,13 +168,22 @@ // If |this.authToken_| is set when the dialog has been closed, this means // that the user entered the correct password into the dialog when // attempting to enable SignIn with Smart Lock. - if (this.authToken_ !== '') { + if (this.authToken_) { this.browserProxy_.setSmartLockSignInEnabled( - true /* enabled */, this.authToken_); + true /* enabled */, this.authToken_.token); settings.recordSettingChange(); } // Always require password entry if re-enabling SignIn with Smart Lock. - this.authToken_ = ''; + this.authToken_ = undefined; }, + + /** + * @param {!CustomEvent<!chrome.quickUnlockPrivate.TokenInfo>} e + * @private + */ + onTokenObtained_(e) { + this.authToken_ = e.detail; + }, + });
diff --git a/chrome/browser/resources/settings/chromeos/os_people_page/fingerprint_list.js b/chrome/browser/resources/settings/chromeos/os_people_page/fingerprint_list.js index b829562..48fac34 100644 --- a/chrome/browser/resources/settings/chromeos/os_people_page/fingerprint_list.js +++ b/chrome/browser/resources/settings/chromeos/os_people_page/fingerprint_list.js
@@ -84,6 +84,7 @@ if (this.browserProxy_) { this.browserProxy_.endCurrentAuthentication(); } + this.showSetupFingerprintDialog_ = false; } else if (oldRoute == settings.routes.LOCK_SCREEN) { // Start fingerprint authentication when going from LOCK_SCREEN to // FINGERPRINT page.
diff --git a/chrome/browser/resources/settings/chromeos/os_people_page/lock_screen.html b/chrome/browser/resources/settings/chromeos/os_people_page/lock_screen.html index 79357b1..3a0dbc6 100644 --- a/chrome/browser/resources/settings/chromeos/os_people_page/lock_screen.html +++ b/chrome/browser/resources/settings/chromeos/os_people_page/lock_screen.html
@@ -155,7 +155,7 @@ </div> <div class="separator"></div> <div class="secondary-action"> - <cr-button on-click="onEditFingerprints_" + <cr-button id="editFingerprints" on-click="onEditFingerprints_" aria-label="$i18n{lockScreenEditFingerprints}" aria-descibedby="lockScreenEditFingerprintsSecondary"> $i18n{lockScreenSetupFingerprintButton} @@ -167,8 +167,8 @@ <template is="dom-if" if="[[showPasswordPromptDialog_]]" restamp> <settings-lock-screen-password-prompt-dialog id="lockScreenPasswordPrompt" - on-close="onPasswordPromptDialogClose_" set-modes="{{setModes_}}" - auth-token="{{authToken}}"> + on-close="onPasswordPromptDialogClose_" + on-auth-token-obtained="onAuthTokenObtained_"> </settings-lock-screen-password-prompt-dialog> </template>
diff --git a/chrome/browser/resources/settings/chromeos/os_people_page/lock_screen.js b/chrome/browser/resources/settings/chromeos/os_people_page/lock_screen.js index 46dd54c0..27d41b3 100644 --- a/chrome/browser/resources/settings/chromeos/os_people_page/lock_screen.js +++ b/chrome/browser/resources/settings/chromeos/os_people_page/lock_screen.js
@@ -41,11 +41,12 @@ /** * Authentication token provided by lock-screen-password-prompt-dialog. + * @type {!chrome.quickUnlockPrivate.TokenInfo|undefined} */ authToken: { - type: String, - value: '', + type: Object, notify: true, + observer: 'onAuthTokenChanged_', }, /** @@ -131,7 +132,10 @@ }, /** @private */ - showPasswordPromptDialog_: Boolean, + showPasswordPromptDialog_: { + type: Boolean, + value: false, + }, /** @private */ showSetupPinDialog_: Boolean, @@ -169,13 +173,6 @@ if (this.shouldAskForPassword_(newRoute)) { this.openPasswordPromptDialog_(); - } else if ( - newRoute != settings.routes.FINGERPRINT && - oldRoute != settings.routes.FINGERPRINT) { - // If the user navigated away from the lock screen settings page they will - // have to re-enter their password. An exception is if they are navigating - // to or from the fingerprint subpage. - this.setModes_ = undefined; } }, @@ -190,7 +187,7 @@ target.checked = !target.checked; return; } - this.setLockScreenEnabled(this.authToken, target.checked); + this.setLockScreenEnabled(this.authToken.token, target.checked); }, /** @@ -215,6 +212,8 @@ /** @private */ onSetModesChanged_() { + this.maybeReturnToLockPage_(); + if (this.shouldAskForPassword_( settings.Router.getInstance().getCurrentRoute())) { this.showSetupPinDialog_ = false; @@ -223,6 +222,14 @@ }, /** @private */ + maybeReturnToLockPage_() { + const route = settings.Router.getInstance().getCurrentRoute(); + if (route == settings.routes.FINGERPRINT && !this.setModes_) { + settings.Router.getInstance().navigateTo(settings.routes.LOCK_SCREEN); + } + }, + + /** @private */ openPasswordPromptDialog_() { this.showPasswordPromptDialog_ = true; }, @@ -321,4 +328,32 @@ } return this.i18n('lockScreenOptionsLock'); }, + + /** + * @param {!CustomEvent<!chrome.quickUnlockPrivate.TokenInfo>} e + * @private + * */ + onAuthTokenObtained_(e) { + this.authToken = e.detail; + }, + + /** @private */ + onAuthTokenChanged_() { + if (this.authToken === undefined) { + this.setModes_ = undefined; + return; + } + this.setModes_ = (modes, credentials, onComplete) => { + this.quickUnlockPrivate.setModes( + this.authToken.token, modes, credentials, () => { + let result = true; + if (chrome.runtime.lastError) { + console.error( + 'setModes failed: ' + chrome.runtime.lastError.message); + result = false; + } + onComplete(result); + }); + }; + }, });
diff --git a/chrome/browser/resources/settings/chromeos/os_people_page/lock_screen_password_prompt_dialog.html b/chrome/browser/resources/settings/chromeos/os_people_page/lock_screen_password_prompt_dialog.html index 19eef054..8108d3f 100644 --- a/chrome/browser/resources/settings/chromeos/os_people_page/lock_screen_password_prompt_dialog.html +++ b/chrome/browser/resources/settings/chromeos/os_people_page/lock_screen_password_prompt_dialog.html
@@ -9,7 +9,7 @@ <settings-password-prompt-dialog id="passwordPrompt" password-prompt-text="[[selectPasswordPromptEnterPasswordString_(hasPinLogin)]]" - auth-token="{{authToken}}"> + on-token-obtained="onTokenObtained_"> </settings-password-prompt-dialog> </template> <script src="lock_screen_password_prompt_dialog.js"></script>
diff --git a/chrome/browser/resources/settings/chromeos/os_people_page/lock_screen_password_prompt_dialog.js b/chrome/browser/resources/settings/chromeos/os_people_page/lock_screen_password_prompt_dialog.js index b4382c85..8d3292d1 100644 --- a/chrome/browser/resources/settings/chromeos/os_people_page/lock_screen_password_prompt_dialog.js +++ b/chrome/browser/resources/settings/chromeos/os_people_page/lock_screen_password_prompt_dialog.js
@@ -6,18 +6,14 @@ * @fileoverview * * 'settings-lock-screen-password-prompt-dialog' displays a password prompt to - * the user. Clients can determine if the user has authenticated if either the - * |authToken| string or |setModes| closure are present. - * - * The setModes binding is a wrapper around chrome.quickUnlockPrivate.setModes - * which has a prebound account password. The account password by itself is not - * available for other elements to access. + * the user. If the user has authenticated the element fires + * 'auth-token-obtained' event with |chrome.quickUnlockPrivate.TokenInfo| + * object. * * Example: * * <settings-lock-screen-password-prompt-dialog * id="lockScreenPasswordPrompt" - * set-modes="[[setModes]]"> * </settings-lock-screen-password-prompt-dialog> */ @@ -33,29 +29,6 @@ properties: { /** - * Authentication token returned by quickUnlockPrivate.getAuthToken. Should - * be passed to API calls which require authentication. - * @type {string} - */ - authToken: { - type: String, - notify: true, - observer: 'authTokenChanged_', - }, - - /** - * A wrapper around chrome.quickUnlockPrivate.setModes with the account - * password already supplied. If this is null, the authentication screen - * needs to be redisplayed. This property will be cleared after the timeout - * returned by quickUnlockPrivate.getAuthToken. - * @type {?Function} - */ - setModes: { - type: Object, - notify: true, - }, - - /** * writeUma_ is a function that handles writing uma stats. It may be * overridden for tests. * @@ -76,32 +49,13 @@ }, /** - * Called when the authToken changes. If the authToken is valid, that - * indicates the user authenticated successfully. - * @param {String} authToken + * @param {!CustomEvent<!chrome.quickUnlockPrivate.TokenInfo>} e * @private */ - authTokenChanged_(authToken) { - if (!this.authToken) { - this.setModes = null; - return; - } - + onTokenObtained_(e) { // The user successfully authenticated. this.writeUma_(LockScreenProgress.ENTER_PASSWORD_CORRECTLY); - - this.setModes = (modes, credentials, onComplete) => { - this.quickUnlockPrivate.setModes( - this.authToken, modes, credentials, () => { - let result = true; - if (chrome.runtime.lastError) { - console.error( - 'setModes failed: ' + chrome.runtime.lastError.message); - result = false; - } - onComplete(result); - }); - }; + this.fire('auth-token-obtained', e.detail); }, /**
diff --git a/chrome/browser/resources/settings/chromeos/os_people_page/lock_state_behavior.js b/chrome/browser/resources/settings/chromeos/os_people_page/lock_state_behavior.js index 3ea4fbd..fa58641 100644 --- a/chrome/browser/resources/settings/chromeos/os_people_page/lock_state_behavior.js +++ b/chrome/browser/resources/settings/chromeos/os_people_page/lock_state_behavior.js
@@ -103,7 +103,13 @@ }); }, - /** Sets the lock screen enabled state. */ + /** + * Sets the lock screen enabled state. + * @param {string} authToken The token returned by + * QuickUnlockPrivate.getAuthToken + * @param {boolean} enabled + * @see quickUnlockPrivate.setLockScreenEnabled + */ setLockScreenEnabled(authToken, enabled) { this.quickUnlockPrivate.setLockScreenEnabled(authToken, enabled); }, @@ -120,4 +126,4 @@ /** @polymerBehavior */ const LockStateBehavior = - [I18nBehavior, WebUIListenerBehavior, LockStateBehaviorImpl]; \ No newline at end of file + [I18nBehavior, WebUIListenerBehavior, LockStateBehaviorImpl];
diff --git a/chrome/browser/resources/settings/chromeos/os_people_page/os_people_page.html b/chrome/browser/resources/settings/chromeos/os_people_page/os_people_page.html index 401cac7..2054d5c 100644 --- a/chrome/browser/resources/settings/chromeos/os_people_page/os_people_page.html +++ b/chrome/browser/resources/settings/chromeos/os_people_page/os_people_page.html
@@ -185,7 +185,7 @@ <settings-subpage page-title="[[selectLockScreenTitleString(hasPinLogin)]]" associated-control="[[$$('#lock-screen-subpage-trigger')]]"> - <settings-lock-screen + <settings-lock-screen id="lock-screen" prefs="{{prefs}}" auth-token="{{authToken_}}"> </settings-lock-screen> </settings-subpage> @@ -193,7 +193,8 @@ <template is="dom-if" if="[[fingerprintUnlockEnabled_]]"> <template is="dom-if" route-path="/lockScreen/fingerprint" no-search> <settings-subpage page-title="$i18n{lockScreenFingerprintTitle}"> - <settings-fingerprint-list auth-token="[[authToken_]]"> + <settings-fingerprint-list id="fingerprint-list" + auth-token="[[authToken_.token]]"> </settings-fingerprint-list> </settings-subpage> </template>
diff --git a/chrome/browser/resources/settings/chromeos/os_people_page/os_people_page.js b/chrome/browser/resources/settings/chromeos/os_people_page/os_people_page.js index 9a902fe..1c13efa 100644 --- a/chrome/browser/resources/settings/chromeos/os_people_page/os_people_page.js +++ b/chrome/browser/resources/settings/chromeos/os_people_page/os_people_page.js
@@ -47,11 +47,11 @@ /** * Authentication token provided by settings-lock-screen. - * @private + * @private {!chrome.quickUnlockPrivate.TokenInfo|undefined} */ authToken_: { - type: String, - value: '', + type: Object, + observer: 'onAuthTokenChanged_', }, /** @@ -369,4 +369,32 @@ } return this.i18n('lockScreenTitleLock'); }, + + /** + * The timeout ID to pass to clearTimeout() to cancel auth token + * invalidation. + * @private {number|undefined} + */ + clearAccountPasswordTimeoutId_: undefined, + + /** @private */ + onAuthTokenChanged_() { + if (this.clearAuthTokenTimeoutId_) { + clearTimeout(this.clearAccountPasswordTimeoutId_); + } + if (this.authToken_ === undefined) { + return; + } + // Clear |this.authToken_| after + // |this.authToken_.tokenInfo.lifetimeSeconds|. + // Subtract time from the expiration time to account for IPC delays. + // Treat values less than the minimum as 0 for testing. + const IPC_SECONDS = 2; + const lifetimeMs = this.authToken_.lifetimeSeconds > IPC_SECONDS ? + (this.authToken_.lifetimeSeconds - IPC_SECONDS) * 1000 : + 0; + this.clearAccountPasswordTimeoutId_ = setTimeout(() => { + this.authToken_ = undefined; + }, lifetimeMs); + }, });
diff --git a/chrome/browser/resources/settings/controls/password_prompt_dialog.js b/chrome/browser/resources/settings/controls/password_prompt_dialog.js index 9182b1f2..872cb3d 100644 --- a/chrome/browser/resources/settings/controls/password_prompt_dialog.js +++ b/chrome/browser/resources/settings/controls/password_prompt_dialog.js
@@ -35,16 +35,6 @@ }, /** - * Authentication token returned by quickUnlockPrivate.getAuthToken(). - * Should be passed to API calls which require authentication. - * @type {string} - */ - authToken: { - type: String, - notify: true, - }, - - /** * @private {string} */ inputValue_: { @@ -101,19 +91,11 @@ }, /** - * The timeout ID to pass to clearTimeout() to cancel auth token - * invalidation. - * @private {number|undefined} - */ - clearAccountPasswordTimeoutId_: undefined, - - /** * Run the account password check. * @private */ submitPassword_() { this.waitingForPasswordCheck_ = true; - clearTimeout(this.clearAccountPasswordTimeoutId_); const password = this.passwordInput.value; // The user might have started entering a password and then deleted it all. @@ -133,20 +115,9 @@ return; } - this.authToken = tokenInfo.token; + this.fire('token-obtained', tokenInfo); this.passwordInvalid_ = false; - // Clear |this.authToken| after tokenInfo.lifetimeSeconds. - // Subtract time from the expiration time to account for IPC delays. - // Treat values less than the minimum as 0 for testing. - const IPC_SECONDS = 2; - const lifetimeMs = tokenInfo.lifetimeSeconds > IPC_SECONDS ? - (tokenInfo.lifetimeSeconds - IPC_SECONDS) * 1000 : - 0; - this.clearAccountPasswordTimeoutId_ = setTimeout(() => { - this.authToken = ''; - }, lifetimeMs); - if (this.$.dialog.open) { this.$.dialog.close(); }
diff --git a/chrome/browser/resources/settings/settings_resources.grd b/chrome/browser/resources/settings/settings_resources.grd index f79129c..9f3aedc 100644 --- a/chrome/browser/resources/settings/settings_resources.grd +++ b/chrome/browser/resources/settings/settings_resources.grd
@@ -898,6 +898,13 @@ file="metrics_browser_proxy.js" type="chrome_html" preprocess="true" /> + <structure name="IDR_SETTINGS_RECENT_SITE_PERMISSIONS_HTML" + file="site_settings_page/recent_site_permissions.html" + type="chrome_html" /> + <structure name="IDR_SETTINGS_RECENT_SITE_PERMISSIONS_JS" + file="site_settings_page/recent_site_permissions.js" + preprocess="true" + type="chrome_html" /> <structure name="IDR_SETTINGS_ROUTE_HTML" file="route.html" type="chrome_html" />
diff --git a/chrome/browser/resources/settings/site_settings/site_settings_prefs_browser_proxy.js b/chrome/browser/resources/settings/site_settings/site_settings_prefs_browser_proxy.js index 75f5e92..c4d128e 100644 --- a/chrome/browser/resources/settings/site_settings/site_settings_prefs_browser_proxy.js +++ b/chrome/browser/resources/settings/site_settings/site_settings_prefs_browser_proxy.js
@@ -89,10 +89,10 @@ /** * Represents a list of exceptions recently configured for a site, where recent * is defined by the maximum number of sources parameter passed to - * GetRecentSiterPermissions. - * @typedef {{origin: string, + * GetRecentSitePermissions. + * @typedef {{origin: !string, * incognito: boolean, - * recentPermissions: Array<RawSiteException>}} + * recentPermissions: !Array<!RawSiteException>}} */ let RecentSitePermissions;
diff --git a/chrome/browser/resources/settings/site_settings_page/BUILD.gn b/chrome/browser/resources/settings/site_settings_page/BUILD.gn index f4c26bb..fd26e1fd 100644 --- a/chrome/browser/resources/settings/site_settings_page/BUILD.gn +++ b/chrome/browser/resources/settings/site_settings_page/BUILD.gn
@@ -5,11 +5,26 @@ import("//third_party/closure_compiler/compile_js.gni") js_type_check("closure_compile") { - deps = [ ":site_settings_page" ] + deps = [ + ":recent_site_permissions", + ":site_settings_page", + ] +} + +js_library("recent_site_permissions") { + deps = [ + "../people_page:sync_browser_proxy", + "../prefs:prefs_behavior", + "../site_settings:site_settings_behavior", + "//ui/webui/resources/js:i18n_behavior", + "//ui/webui/resources/js:load_time_data", + "//ui/webui/resources/js:web_ui_listener_behavior", + ] } js_library("site_settings_page") { deps = [ + ":recent_site_permissions", "..:metrics_browser_proxy", "..:route", "..:router",
diff --git a/chrome/browser/resources/settings/site_settings_page/recent_site_permissions.html b/chrome/browser/resources/settings/site_settings_page/recent_site_permissions.html new file mode 100644 index 0000000..6fc8ae3 --- /dev/null +++ b/chrome/browser/resources/settings/site_settings_page/recent_site_permissions.html
@@ -0,0 +1,99 @@ +<link rel="import" href="chrome://resources/html/polymer.html"> + +<link rel="import" href="chrome://resources/cr_elements/policy/cr_tooltip_icon.html"> +<link rel="import" href="chrome://resources/html/i18n_behavior.html"> +<link rel="import" href="chrome://resources/html/load_time_data.html"> +<link rel="import" href="chrome://resources/html/web_ui_listener_behavior.html"> +<link rel="import" href="chrome://resources/polymer/v1_0/paper-tooltip/paper-tooltip.html"> +<link rel="import" href="../site_settings/site_settings_behavior.html"> +<link rel="import" href="../settings_shared_css.html"> + +<dom-module id="settings-recent-site-permissions"> + <template> + <style include="settings-shared"> + paper-tooltip { + --paper-tooltip: var(--cr-tooltip); + } + + site-favicon { + /** Pad the difference between --cr-link-row-icon-width and + site-favicon width to align with link rows */ + padding-inline-end: 24px; + } + + .row-aligned { + display: flex; + flex-direction: row; + } + + .link-button { + flex: auto; + padding-bottom: var(--cr-section-vertical-padding); + padding-top: var(--cr-section-vertical-padding); + } + + .link-button[disabled] { + cursor: auto; + pointer-events: none; + } + + .incognito-icon { + cursor: auto; + pointer-events: auto; + } + + .display-name { + flex: 1; + max-width: 100%; + } + </style> + <div id="noPermissionsText" class="list-frame" + hidden$="[[!noRecentPermissions]]"> + <div class="list-item secondary">$i18n{noRecentPermissions}</div> + </div> + <template is="dom-repeat" id="recentPermissionsList" + items="[[recentSitePermissionsList_]]"> + <div class$="settings-box [[getClassForIndex_(index)]]"> + <div class="start row-aligned link-button" + on-click="onRecentSitePermissionClick_" actionable + disabled$="[[item.incognito]]"> + <site-favicon url="[[item.origin]]"></site-favicon> + <div id="displayName_[[index]]" class="display-name"> + <div class="site-representation"> + <span class="url-directionality">[[getDisplayName_(item)]]</span> + <span class="secondary" + hidden$="[[!getSiteScheme_(item)]]"> + $i18nPolymer{siteSettingsSiteRepresentationSeparator} + </span> + <span class="secondary" + hidden$="[[!getSiteScheme_(item)]]"> + [[getSiteScheme_(item)]] + </span> + </div> + <div class="second-line secondary"> + [[getPermissionsText_(item)]] + </div> + </div> + <cr-icon-button class="subpage-arrow" + hidden$="[[item.incognito]]" + aria-label$="[[getDisplayName_(item)]]" + aria-describedby$="displayName_[[index]]" + focus-row-control focus-type="show-detail"></cr-icon-button> + <cr-tooltip-icon class="incognito-icon" + hidden$="[[!item.incognito]]" + disabled$="[[item.incognito]]" + icon-aria-label="$i18n{incognitoSiteExceptionDesc}" + icon-class="settings20:incognito" + on-click="onShowIncognitoTooltip_" + on-mouseenter="onShowIncognitoTooltip_" + on-focus="onShowIncognitoTooltip_"></cr-tooltip-icon> + </div> + </div> + </template> + <paper-tooltip id="tooltip" fit-to-visible-bounds manual-mode + position="top"> + $i18n{incognitoSiteExceptionDesc} + </paper-tooltip> + </template> + <script src="recent_site_permissions.js"></script> +</dom-module
diff --git a/chrome/browser/resources/settings/site_settings_page/recent_site_permissions.js b/chrome/browser/resources/settings/site_settings_page/recent_site_permissions.js new file mode 100644 index 0000000..bec81c5 --- /dev/null +++ b/chrome/browser/resources/settings/site_settings_page/recent_site_permissions.js
@@ -0,0 +1,268 @@ +// Copyright 2020 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +Polymer({ + is: 'settings-recent-site-permissions', + + behaviors: [ + SiteSettingsBehavior, + WebUIListenerBehavior, + I18nBehavior, + ], + + properties: { + /** @type boolean */ + noRecentPermissions: { + type: Boolean, + computed: 'noRecentPermissions_(recentSitePermissionsList_)', + notify: true, + }, + + /** + * List of recent site permissions grouped by source. + * @type {!Array<RecentSitePermissions>} + * @private + */ + recentSitePermissionsList_: { + type: Array, + value: () => [], + }, + }, + + /** @override */ + ready() { + this.addWebUIListener( + 'onIncognitoStatusChanged', this.onIncognitoStatusChanged_.bind(this)); + this.browserProxy.updateIncognitoStatus(); + }, + + /** + * Perform internationalization for the given content settings type. + * @return {string} The localised content setting type string + * @private + */ + getI18nContentTypeString_(contentSettingsType) { + switch (contentSettingsType) { + case 'cookies': + return this.i18n('siteSettingsCookies'); + case 'images': + return this.i18n('siteSettingsImages'); + case 'javascript': + return this.i18n('siteSettingsJavascript'); + case 'sound': + return this.i18n('siteSettingsSound'); + case 'popups': + return this.i18n('siteSettingsPopups'); + case 'location': + return this.i18n('siteSettingsLocation'); + case 'notifications': + return this.i18n('siteSettingsNotifications'); + case 'media-stream-mic': + return this.i18n('siteSettingsMic'); + case 'media-stream-camera': + return this.i18n('siteSettingsCamera'); + case 'register-protocol-handler': + return this.i18n('siteSettingsHandlers'); + case 'ppapi-broker': + return this.i18n('siteSettingsUnsandboxedPlugins'); + case 'multiple-automatic-downloads': + return this.i18n('siteSettingsAutomaticDownloads'); + case 'background-sync': + return this.i18n('siteSettingsBackgroundSync'); + case 'midi-sysex': + return this.i18n('siteSettingsMidiDevices'); + case 'usb-devices': + return this.i18n('siteSettingsUsbDevices'); + case 'serial-ports': + return this.i18n('siteSettingsSerialPorts'); + case 'zoom-levels': + return this.i18n('siteSettingsZoomLevels'); + case 'protected-content': + return this.i18n('siteSettingsProtectedContent'); + case 'ads': + return this.i18n('siteSettingsAds'); + case 'clipboard': + return this.i18n('siteSettingsClipboard'); + case 'sensors': + return this.i18n('siteSettingsSensors'); + case 'payment-handler': + return this.i18n('siteSettingsPaymentHandler'); + case 'mixed-script': + return this.i18n('siteSettingsInsecureContent'); + case 'bluetooth-scanning': + return this.i18n('siteSettingsBluetoothScanning'); + case 'native-file-system-write': + return this.i18n('siteSettingsNativeFileSystemWrite'); + case 'hid-devices': + return this.i18n('siteSettingsHidDevices'); + case 'ar': + return this.i18n('siteSettingsAr'); + case 'vr': + return this.i18n('siteSettingsVr'); + default: + return ''; + } + }, + + /** + * Return the display string representing a permission change. + * @param {!RawSiteException} rawSiteException + * @param {boolean} sentenceStart Whether the returned string will start a + * sentence. + * @return {string} The string representing the permission change. + * @private + */ + getI18nPermissionChangeString_({setting, source, type}, sentenceStart) { + let change; + if (setting === settings.ContentSetting.ALLOW) { + change = 'Allowed'; + } else if (setting === settings.ContentSetting.BLOCK) { + if (source === settings.SiteSettingSource.EMBARGO) { + change = 'Autoblocked'; + } else if (source === settings.SiteSettingSource.PREFERENCE) { + change = 'Blocked'; + } else { + return ''; + } + } + const suffix = sentenceStart ? 'SentenceStart' : ''; + const msgId = `recentPermissionChange${change}${suffix}`; + return this.i18n(msgId, this.getI18nContentTypeString_(type)); + }, + + /** + * Returns a user-friendly name for the origin a set of recent permissions + * is associated with. + * @param {!RecentSitePermissions} recentSitePermissions + * @return {string} The user-friendly name. + * @private + */ + getDisplayName_(recentSitePermissions) { + const url = this.toUrl(recentSitePermissions.origin); + return url.host; + }, + + /** + * Returns the site scheme for the origin of a set of recent permissions. + * @param {!RecentSitePermissions} recentSitePermissions + * @return {string} The site scheme. + * @private + */ + getSiteScheme_({origin}) { + const url = this.toUrl(origin); + const scheme = url.protocol.slice(0, -1); + return scheme === 'https' ? '' : scheme; + }, + + /** + * Returns the display text which describes the set of recent permissions. + * @param {!RecentSitePermissions} recentSitePermissions + * @return {string} The display string for set of site permissions. + * @private + */ + getPermissionsText_({recentPermissions, incognito}) { + const displayStrings = recentPermissions.map( + (rp, i) => this.getI18nPermissionChangeString_(rp, i === 0)); + + if (recentPermissions.length === 1 && !incognito) { + return displayStrings[0]; + } + + const itemsPart = [ + 'OneItem', + 'TwoItems', + 'ThreeItems', + 'OverThreeItems', + ][Math.min(recentPermissions.length, 4) - 1]; + const suffix = incognito ? 'Incognito' : ''; + const i18nStringID = `recentPermissions${itemsPart}${suffix}`; + + return this.i18n(i18nStringID, ...displayStrings); + }, + + /** + * Returns the correct class to apply depending on this recent site + * permissions entry based on the index. + * @param {number} index + * @return {string} The CSS class corresponding to the provided index + * @private + */ + getClassForIndex_(index) { + return index === 0 ? 'first' : ''; + }, + + /** + * Returns true if there are no recent site permissions to display + * @return {boolean} + * @private + */ + noRecentPermissions_() { + return this.recentSitePermissionsList_.length === 0; + }, + + /** + * Called for when incognito is enabled or disabled. Only called on change + * (opening N incognito windows only fires one message). Another message is + * sent when the *last* incognito window closes. + * @private + */ + onIncognitoStatusChanged_(hasIncognito) { + // We're only interested in the case where we transition out of incognito + // and we are currently displaying an incognito entry. + if (hasIncognito === false && + this.recentSitePermissionsList_.some(p => p.incognito)) { + this.populateList(); + } + }, + + /** + * A handler for selecting a recent site permissions entry. + * @param {!{model: !{index: number}}} e + * @private + */ + onRecentSitePermissionClick_(e) { + const origin = this.recentSitePermissionsList_[e.model.index].origin; + settings.Router.getInstance().navigateTo( + settings.routes.SITE_SETTINGS_SITE_DETAILS, + new URLSearchParams({site: origin})); + this.browserProxy.recordAction(settings.AllSitesAction.ENTER_SITE_DETAILS); + }, + + /** + * @param {!Event} e + * @private + */ + onShowIncognitoTooltip_(e) { + e.stopPropagation(); + + const target = e.target; + const tooltip = this.$.tooltip; + tooltip.target = target; + /** @type {{updatePosition: Function}} */ (tooltip).updatePosition(); + const hide = () => { + /** @type {{hide: Function}} */ (tooltip).hide(); + target.removeEventListener('mouseleave', hide); + target.removeEventListener('blur', hide); + target.removeEventListener('tap', hide); + tooltip.removeEventListener('mouseenter', hide); + }; + target.addEventListener('mouseleave', hide); + target.addEventListener('blur', hide); + target.addEventListener('tap', hide); + tooltip.addEventListener('mouseenter', hide); + + tooltip.show(); + }, + + /** + * Retrieve the list of recently changed permissions and implicitly trigger + * the update of the display list. + * @private + */ + async populateList() { + this.recentSitePermissionsList_ = + await this.browserProxy.getRecentSitePermissions( + this.getCategoryList(), 3); + }, +});
diff --git a/chrome/browser/resources/settings/site_settings_page/site_settings_page.html b/chrome/browser/resources/settings/site_settings_page/site_settings_page.html index 5d56059..466070f 100644 --- a/chrome/browser/resources/settings/site_settings_page/site_settings_page.html +++ b/chrome/browser/resources/settings/site_settings_page/site_settings_page.html
@@ -12,6 +12,7 @@ <link rel="import" href="../site_settings/constants.html"> <link rel="import" href="../site_settings/site_settings_behavior.html"> <link rel="import" href="../site_settings/site_settings_prefs_browser_proxy.html"> +<link rel="import" href="recent_site_permissions.html"> <link rel="import" href="../metrics_browser_proxy.html"> <dom-module id="settings-site-settings-page"> @@ -31,10 +32,23 @@ border-top: none; } </style> - <div class="settings-box first line-only"> - <h2 class="first">$i18n{siteSettingsAllSites}</h2> - </div> + <template is="dom-if" if="[[!privacySettingsRedesignEnabled_]]"> + <div class="settings-box first line-only"> + <h2 class="first">$i18n{siteSettingsAllSites}</h2> + </div> + </template> + + <template is="dom-if" if="[[privacySettingsRedesignEnabled_]]"> + <div class="settings-box first line-only"> + <h2 class="first">$i18n{siteSettingsRecentPermissionsSectionLabel}</h2> + </div> + <settings-recent-site-permissions id="recentSitePermissions" + no-recent-permissions="{{noRecentSitePermissions_}}"> + </settings-recent-site-permissions> + </template> + <cr-link-row data-route="SITE_SETTINGS_ALL" id="allSites" + class$="[[getClassForSiteSettingsAllLink_(noRecentSitePermissions_)]]" label="$i18n{siteSettingsAllSitesDescription}" on-click="onTapNavigate_" role-description="$i18n{subpageArrowRoleDescription}"></cr-link-row>
diff --git a/chrome/browser/resources/settings/site_settings_page/site_settings_page.js b/chrome/browser/resources/settings/site_settings_page/site_settings_page.js index 7f5c90c..8977c56 100644 --- a/chrome/browser/resources/settings/site_settings_page/site_settings_page.js +++ b/chrome/browser/resources/settings/site_settings_page/site_settings_page.js
@@ -40,7 +40,6 @@ */ let CategoryListItem; - /** * @return {!Map<!settings.ContentSettingsTypes, !settings.CategoryListItem>} */ @@ -309,7 +308,10 @@ Polymer({ is: 'settings-site-settings-page', - behaviors: [SiteSettingsBehavior, WebUIListenerBehavior, I18nBehavior], + behaviors: [ + SiteSettingsBehavior, WebUIListenerBehavior, I18nBehavior, + settings.RouteObserverBehavior + ], properties: { /** @private {!Array<!settings.CategoryListItem>} */ @@ -370,6 +372,17 @@ type: Object, observer: 'focusConfigChanged_', }, + + /** @private */ + privacySettingsRedesignEnabled_: { + type: Boolean, + value: loadTimeData.getBoolean('privacySettingsRedesignEnabled'), + }, + + /* @private */ + noRecentSitePermissions_: { + type: Boolean, + }, }, /** @@ -467,6 +480,35 @@ }, /** + * Reload the site recent site permission list when the page is navigated + * to. + * settings.RouteObserverBehavior + * @param {!settings.Route} currentRoute + * @protected + */ + currentRouteChanged(currentRoute) { + if (currentRoute == settings.routes.SITE_SETTINGS && + this.privacySettingsRedesignEnabled_) { + // Needs to be async to await the surrounding dom-if, should be removed + // when the dom-if is removed. + this.async(() => { + this.$$('#recentSitePermissions').populateList(); + }); + } + }, + + /** + * @return {string} Class for the all site settings link + * @private + */ + getClassForSiteSettingsAllLink_() { + return (this.privacySettingsRedesignEnabled_ && + !this.noRecentSitePermissions_) ? + 'hr' : + ''; + }, + + /** * Navigate to the route specified in the event dataset. * @param {!Event} event The tap event. * @private
diff --git a/chrome/browser/safe_browsing/cloud_content_scanning/OWNERS b/chrome/browser/safe_browsing/cloud_content_scanning/OWNERS index de4a5c0..0046b2a 100644 --- a/chrome/browser/safe_browsing/cloud_content_scanning/OWNERS +++ b/chrome/browser/safe_browsing/cloud_content_scanning/OWNERS
@@ -1,7 +1,7 @@ -per-file deep_scanning_dialog_delegate.cc=rogerta@chromium.org -per-file deep_scanning_dialog_delegate.h=rogerta@chromium.org -per-file deep_scanning_dialog_delegate_unittest.cc=rogerta@chromium.org -per-file fake_deep_scanning_dialog_delegate.cc=rogerta@chromium.org -per-file fake_deep_scanning_dialog_delegate.h=rogerta@chromium.org +per-file deep_scanning_dialog_delegate*=rogerta@chromium.org +per-file fake_deep_scanning_dialog_delegate*=rogerta@chromium.org +per-file deep_scanning_dialog_views*=rogerta@chromium.org +per-file deep_scanning_browsertest_base*=rogerta@chromium.org +per-file deep_scanning_utils*=rogerta@chromium.org drubery@chromium.org
diff --git a/chrome/browser/safe_browsing/cloud_content_scanning/binary_upload_service.cc b/chrome/browser/safe_browsing/cloud_content_scanning/binary_upload_service.cc index bde7b92..4d284d9 100644 --- a/chrome/browser/safe_browsing/cloud_content_scanning/binary_upload_service.cc +++ b/chrome/browser/safe_browsing/cloud_content_scanning/binary_upload_service.cc
@@ -368,8 +368,8 @@ if (response.has_malware_scan_verdict()) { base::UmaHistogramBoolean("SafeBrowsingBinaryUploadRequest.MalwareResult", - response.malware_scan_verdict().status() == - MalwareDeepScanningVerdict::SUCCESS); + response.malware_scan_verdict().verdict() != + MalwareDeepScanningVerdict::SCAN_FAILURE); } if (response.has_dlp_scan_verdict()) {
diff --git a/chrome/browser/safe_browsing/cloud_content_scanning/deep_scanning_dialog_delegate.cc b/chrome/browser/safe_browsing/cloud_content_scanning/deep_scanning_dialog_delegate.cc index 09be2f8..a36d19e 100644 --- a/chrome/browser/safe_browsing/cloud_content_scanning/deep_scanning_dialog_delegate.cc +++ b/chrome/browser/safe_browsing/cloud_content_scanning/deep_scanning_dialog_delegate.cc
@@ -514,12 +514,8 @@ bool dlp_ok = DlpTriggeredRulesOK(response.dlp_scan_verdict()); bool malware_ok = true; if (response.has_malware_scan_verdict()) { - malware_ok = response.malware_scan_verdict().status() == - MalwareDeepScanningVerdict::SUCCESS && - response.malware_scan_verdict().verdict() != - MalwareDeepScanningVerdict::UWS && - response.malware_scan_verdict().verdict() != - MalwareDeepScanningVerdict::MALWARE; + malware_ok = response.malware_scan_verdict().verdict() == + MalwareDeepScanningVerdict::CLEAN; } bool file_complies = ResultShouldAllowDataUse(result) && dlp_ok && malware_ok;
diff --git a/chrome/browser/safe_browsing/cloud_content_scanning/deep_scanning_utils.cc b/chrome/browser/safe_browsing/cloud_content_scanning/deep_scanning_utils.cc index 3272ba2f..607bf698 100644 --- a/chrome/browser/safe_browsing/cloud_content_scanning/deep_scanning_utils.cc +++ b/chrome/browser/safe_browsing/cloud_content_scanning/deep_scanning_utils.cc
@@ -91,8 +91,8 @@ return; if (response.has_malware_scan_verdict() && - response.malware_scan_verdict().status() != - MalwareDeepScanningVerdict::SUCCESS) { + response.malware_scan_verdict().verdict() == + MalwareDeepScanningVerdict::SCAN_FAILURE) { extensions::SafeBrowsingPrivateEventRouterFactory::GetForProfile(profile) ->OnUnscannedFileEvent(url, file_name, download_digest_sha256, mime_type, trigger, "malwareScanFailed", @@ -296,8 +296,6 @@ } if (malware_success.has_value()) { - response.mutable_malware_scan_verdict()->set_status( - MalwareDeepScanningVerdict::SUCCESS); if (malware_success.value()) { response.mutable_malware_scan_verdict()->set_verdict( MalwareDeepScanningVerdict::CLEAN);
diff --git a/chrome/browser/safe_browsing/cloud_content_scanning/fake_deep_scanning_dialog_delegate.cc b/chrome/browser/safe_browsing/cloud_content_scanning/fake_deep_scanning_dialog_delegate.cc index 274e112..89a1f40 100644 --- a/chrome/browser/safe_browsing/cloud_content_scanning/fake_deep_scanning_dialog_delegate.cc +++ b/chrome/browser/safe_browsing/cloud_content_scanning/fake_deep_scanning_dialog_delegate.cc
@@ -81,8 +81,6 @@ DlpDeepScanningVerdict::SUCCESS); } if (include_malware) { - response.mutable_malware_scan_verdict()->set_status( - MalwareDeepScanningVerdict::SUCCESS); response.mutable_malware_scan_verdict()->set_verdict( MalwareDeepScanningVerdict::CLEAN); } @@ -94,8 +92,6 @@ DeepScanningClientResponse FakeDeepScanningDialogDelegate::MalwareResponse( MalwareDeepScanningVerdict::Verdict verdict) { DeepScanningClientResponse response; - response.mutable_malware_scan_verdict()->set_status( - MalwareDeepScanningVerdict::SUCCESS); response.mutable_malware_scan_verdict()->set_verdict(verdict); return response; }
diff --git a/chrome/browser/safe_browsing/download_protection/deep_scanning_request.cc b/chrome/browser/safe_browsing/download_protection/deep_scanning_request.cc index c1070a5..96ce31b7 100644 --- a/chrome/browser/safe_browsing/download_protection/deep_scanning_request.cc +++ b/chrome/browser/safe_browsing/download_protection/deep_scanning_request.cc
@@ -36,9 +36,7 @@ void DeepScanningClientResponseToDownloadCheckResult( const DeepScanningClientResponse& response, DownloadCheckResult* download_result) { - if (response.has_malware_scan_verdict() && - response.malware_scan_verdict().status() == - MalwareDeepScanningVerdict::SUCCESS) { + if (response.has_malware_scan_verdict()) { if (response.malware_scan_verdict().verdict() == MalwareDeepScanningVerdict::MALWARE) { *download_result = DownloadCheckResult::DANGEROUS;
diff --git a/chrome/browser/safe_browsing/download_protection/deep_scanning_request_unittest.cc b/chrome/browser/safe_browsing/download_protection/deep_scanning_request_unittest.cc index ecf11bc..72feaf21 100644 --- a/chrome/browser/safe_browsing/download_protection/deep_scanning_request_unittest.cc +++ b/chrome/browser/safe_browsing/download_protection/deep_scanning_request_unittest.cc
@@ -343,8 +343,6 @@ &download_protection_service_); DeepScanningClientResponse response; - response.mutable_malware_scan_verdict()->set_status( - MalwareDeepScanningVerdict::SUCCESS); response.mutable_malware_scan_verdict()->set_verdict( MalwareDeepScanningVerdict::MALWARE); response.mutable_dlp_scan_verdict()->set_status( @@ -367,8 +365,6 @@ &download_protection_service_); DeepScanningClientResponse response; - response.mutable_malware_scan_verdict()->set_status( - MalwareDeepScanningVerdict::SUCCESS); response.mutable_malware_scan_verdict()->set_verdict( MalwareDeepScanningVerdict::UWS); response.mutable_dlp_scan_verdict()->set_status( @@ -471,8 +467,8 @@ &download_protection_service_); DeepScanningClientResponse response; - response.mutable_malware_scan_verdict()->set_status( - MalwareDeepScanningVerdict::FAILURE); + response.mutable_malware_scan_verdict()->set_verdict( + MalwareDeepScanningVerdict::SCAN_FAILURE); download_protection_service_.GetFakeBinaryUploadService()->SetResponse( BinaryUploadService::Result::SUCCESS, response);
diff --git a/chrome/browser/sharing/shared_clipboard/feature_flags.cc b/chrome/browser/sharing/shared_clipboard/feature_flags.cc index 2fdf694..2e9a2eb 100644 --- a/chrome/browser/sharing/shared_clipboard/feature_flags.cc +++ b/chrome/browser/sharing/shared_clipboard/feature_flags.cc
@@ -4,9 +4,6 @@ #include "chrome/browser/sharing/shared_clipboard/feature_flags.h" -const base::Feature kSharedClipboardReceiver{"SharedClipboardReceiver", - base::FEATURE_ENABLED_BY_DEFAULT}; - const base::Feature kSharedClipboardUI{"SharedClipboardUI", base::FEATURE_DISABLED_BY_DEFAULT};
diff --git a/chrome/browser/sharing/shared_clipboard/feature_flags.h b/chrome/browser/sharing/shared_clipboard/feature_flags.h index 40a711f..c466a13 100644 --- a/chrome/browser/sharing/shared_clipboard/feature_flags.h +++ b/chrome/browser/sharing/shared_clipboard/feature_flags.h
@@ -11,9 +11,6 @@ #include "base/metrics/field_trial_params.h" #include "build/build_config.h" -// Feature to allow devices to receive the shared clipboard message. -extern const base::Feature kSharedClipboardReceiver; - // Feature to allow shared clipboard gets processed. extern const base::Feature kSharedClipboardUI;
diff --git a/chrome/browser/sharing/sharing_device_registration.cc b/chrome/browser/sharing/sharing_device_registration.cc index 8e974ee..eeb1f74c 100644 --- a/chrome/browser/sharing/sharing_device_registration.cc +++ b/chrome/browser/sharing/sharing_device_registration.cc
@@ -316,7 +316,7 @@ !pref_service_->GetBoolean(prefs::kSharedClipboardEnabled)) { return false; } - return base::FeatureList::IsEnabled(kSharedClipboardReceiver); + return true; } bool SharingDeviceRegistration::IsSmsFetcherSupported() const {
diff --git a/chrome/browser/sharing/sharing_device_registration_unittest.cc b/chrome/browser/sharing/sharing_device_registration_unittest.cc index ac41146..c54b64f 100644 --- a/chrome/browser/sharing/sharing_device_registration_unittest.cc +++ b/chrome/browser/sharing/sharing_device_registration_unittest.cc
@@ -16,7 +16,6 @@ #include "base/test/task_environment.h" #include "build/build_config.h" #include "chrome/browser/sharing/features.h" -#include "chrome/browser/sharing/shared_clipboard/feature_flags.h" #include "chrome/browser/sharing/sharing_constants.h" #include "chrome/browser/sharing/sharing_device_registration_result.h" #include "chrome/browser/sharing/sharing_sync_preference.h" @@ -160,10 +159,6 @@ pref_service_->SetBoolean(prefs::kSharedClipboardEnabled, val); } - void EnableSharedClipboardReceiverFlag() { - scoped_feature_list_.InitAndEnableFeature(kSharedClipboardReceiver); - } - void RegisterDeviceSync() { base::RunLoop run_loop; sharing_device_registration_.RegisterDevice( @@ -247,14 +242,12 @@ TEST_F(SharingDeviceRegistrationTest, IsSharedClipboardSupported_True) { SetSharedClipboardPolicy(true); - EnableSharedClipboardReceiverFlag(); EXPECT_TRUE(sharing_device_registration_.IsSharedClipboardSupported()); } TEST_F(SharingDeviceRegistrationTest, IsSharedClipboardSupported_False) { SetSharedClipboardPolicy(false); - EnableSharedClipboardReceiverFlag(); EXPECT_FALSE(sharing_device_registration_.IsSharedClipboardSupported()); }
diff --git a/chrome/browser/signin/chrome_signin_helper.cc b/chrome/browser/signin/chrome_signin_helper.cc index 9fb6c4e5..a0d4821 100644 --- a/chrome/browser/signin/chrome_signin_helper.cc +++ b/chrome/browser/signin/chrome_signin_helper.cc
@@ -11,6 +11,7 @@ #include "base/bind_helpers.h" #include "base/logging.h" #include "base/memory/ref_counted.h" +#include "base/metrics/histogram_macros.h" #include "base/strings/string_util.h" #include "base/strings/utf_string_conversions.h" #include "base/supports_user_data.h" @@ -19,6 +20,7 @@ #include "base/time/time.h" #include "build/build_config.h" #include "chrome/browser/prefs/incognito_mode_prefs.h" +#include "chrome/browser/profiles/profile.h" #include "chrome/browser/profiles/profile_io_data.h" #include "chrome/browser/signin/account_consistency_mode_manager.h" #include "chrome/browser/signin/account_reconcilor_factory.h" @@ -38,6 +40,7 @@ #include "components/signin/core/browser/cookie_reminter.h" #include "components/signin/public/base/account_consistency_method.h" #include "components/signin/public/base/signin_buildflags.h" +#include "components/signin/public/identity_manager/accounts_cookie_mutator.h" #include "content/public/browser/browser_task_traits.h" #include "content/public/browser/browser_thread.h" #include "google_apis/gaia/gaia_auth_util.h" @@ -220,6 +223,23 @@ return; } + // Child users shouldn't get the re-authentication dialog for primary + // account. Log out all accounts to re-mint the cookies. + // (See the reason below.) + signin::IdentityManager* const identity_manager = + IdentityManagerFactory::GetForProfile(profile); + CoreAccountInfo primary_account = identity_manager->GetPrimaryAccountInfo( + signin::ConsentLevel::kNotRequired); + if (profile->IsChild() && + gaia::AreEmailsSame(primary_account.email, + manage_accounts_params.email)) { + identity_manager->GetAccountsCookieMutator()->LogOutAllAccounts( + gaia::GaiaSource::kChromeOS); + UMA_HISTOGRAM_BOOLEAN("AccountManager.MirrorReauthenticationRequest", + true); + return; + } + // The account's cookie is invalid but the cookie has not been removed by // |AccountReconcilor|. Ideally, this should not happen. At this point, // |AccountReconcilor| cannot detect this state because its source of truth @@ -228,8 +248,6 @@ // invalid, so that if/when this account is re-authenticated, we can force a // reconciliation for this account instead of treating it as a no-op. // See https://crbug.com/1012649 for details. - signin::IdentityManager* const identity_manager = - IdentityManagerFactory::GetForProfile(profile); base::Optional<AccountInfo> maybe_account_info = identity_manager ->FindExtendedAccountInfoForAccountWithRefreshTokenByEmailAddress(
diff --git a/chrome/browser/spellchecker/spellcheck_service.cc b/chrome/browser/spellchecker/spellcheck_service.cc index 0dc509b..8bbc5f5 100644 --- a/chrome/browser/spellchecker/spellcheck_service.cc +++ b/chrome/browser/spellchecker/spellcheck_service.cc
@@ -74,7 +74,6 @@ // initialized. if (spellcheck::WindowsVersionSupportsSpellchecker()) { platform_spell_checker_ = std::make_unique<WindowsSpellChecker>( - base::ThreadTaskRunnerHandle::Get(), base::CreateCOMSTATaskRunner({base::ThreadPool(), base::MayBlock()})); } #endif // defined(OS_WIN) && BUILDFLAG(USE_BROWSER_SPELLCHECKER)
diff --git a/chrome/browser/ssl/ssl_browsertest.cc b/chrome/browser/ssl/ssl_browsertest.cc index 86c088e..0869285 100644 --- a/chrome/browser/ssl/ssl_browsertest.cc +++ b/chrome/browser/ssl/ssl_browsertest.cc
@@ -4519,6 +4519,51 @@ EXPECT_FALSE(state->HasAllowException(https_server_host, tab)); } +// Verifies that if a bad certificate is seen for a host and the user proceeds +// through the interstitial, the decision to proceed is not forgotten once blob +// URLs are loaded (blob loads never have certificate errors). This is a +// regression test for https://crbug.com/1049625. +IN_PROC_BROWSER_TEST_F(SSLUITest, BadCertFollowedByBlobUrl) { + ASSERT_TRUE(https_server_expired_.Start()); + std::string https_server_host = + https_server_expired_.GetURL("/ssl/google.html").host(); + + WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents(); + Profile* profile = Profile::FromBrowserContext(tab->GetBrowserContext()); + ChromeSSLHostStateDelegate* state = + reinterpret_cast<ChromeSSLHostStateDelegate*>( + profile->GetSSLHostStateDelegate()); + + // Proceed through the interstitial, accepting the broken cert. + ui_test_utils::NavigateToURL( + browser(), https_server_expired_.GetURL("/ssl/google.html")); + ProceedThroughInterstitial(tab); + ASSERT_TRUE(state->HasAllowException(https_server_host, tab)); + + // Load a blob URL. + content::WebContentsConsoleObserver console_observer(tab); + console_observer.SetPattern("hello from blob"); + const char kScript[] = R"( + new Promise(function (resolvePromise, rejectPromise) { + var blob = new Blob(['console.log("hello from blob")'], + {type : 'application/javascript'}); + script = document.createElement('script'); + script.onerror = rejectPromise; + script.onload = () => resolvePromise('success'); + script.src = URL.createObjectURL(blob); + document.body.appendChild(script); + }); + )"; + ASSERT_EQ("success", content::EvalJs(tab, kScript)); + + // Verify that the script from the blob has successfully run. + console_observer.Wait(); + + // Verify that the decision to accept the broken cert has not been revoked + // (this is a regression test for https://crbug.com/1049625). + EXPECT_TRUE(state->HasAllowException(https_server_host, tab)); +} + // Tests that the SSLStatus of a navigation entry for an SSL // interstitial matches the navigation entry once the interstitial is // clicked through. https://crbug.com/529456
diff --git a/chrome/browser/sync/test/integration/single_client_polling_sync_test.cc b/chrome/browser/sync/test/integration/single_client_polling_sync_test.cc index f6db5378..bde5311d 100644 --- a/chrome/browser/sync/test/integration/single_client_polling_sync_test.cc +++ b/chrome/browser/sync/test/integration/single_client_polling_sync_test.cc
@@ -54,7 +54,8 @@ // This test verifies that updates of the poll interval get persisted // That's important make sure clients with short live times will eventually poll // (e.g. Android). -IN_PROC_BROWSER_TEST_F(SingleClientPollingSyncTest, ShouldUpdatePollPrefs) { +IN_PROC_BROWSER_TEST_F(SingleClientPollingSyncTest, + PRE_ShouldUsePollIntervalFromPrefs) { ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; sync_pb::ClientCommand client_command; @@ -76,17 +77,12 @@ IN_PROC_BROWSER_TEST_F(SingleClientPollingSyncTest, ShouldUsePollIntervalFromPrefs) { - // Setup clients and provide new poll interval via prefs. - ASSERT_TRUE(SetupClients()) << "SetupClients() failed."; - SyncPrefs sync_prefs(GetProfile(0)->GetPrefs()); - sync_prefs.SetPollInterval(base::TimeDelta::FromSeconds(123)); - // Execute a sync cycle and verify this cycle used that interval. // This test assumes the SyncScheduler reads the actual interval from the // context. This is covered in the SyncSchedulerImpl's unittest. ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; EXPECT_THAT(GetClient(0)->GetLastCycleSnapshot().poll_interval().InSeconds(), - Eq(123)); + Eq(67)); } // This test simulates the poll interval expiring between restarts.
diff --git a/chrome/browser/task_manager/providers/per_profile_worker_task_tracker.cc b/chrome/browser/task_manager/providers/per_profile_worker_task_tracker.cc index 6032931e..54af434 100644 --- a/chrome/browser/task_manager/providers/per_profile_worker_task_tracker.cc +++ b/chrome/browser/task_manager/providers/per_profile_worker_task_tracker.cc
@@ -8,7 +8,6 @@ #include "chrome/browser/task_manager/providers/worker_task.h" #include "chrome/browser/task_manager/providers/worker_task_provider.h" #include "content/public/browser/render_process_host.h" -#include "content/public/browser/shared_worker_instance.h" #include "content/public/browser/storage_partition.h" namespace task_manager { @@ -67,16 +66,18 @@ } void PerProfileWorkerTaskTracker::OnWorkerStarted( - const content::SharedWorkerInstance& instance, + content::SharedWorkerId shared_worker_id, int worker_process_id, const base::UnguessableToken& dev_tools_token) { - CreateWorkerTask(instance, Task::Type::SHARED_WORKER, worker_process_id, - instance.url(), &shared_worker_tasks_); + // TODO(https://crbug.com/1047787): Make use of the worker's URL when it is + // available. + CreateWorkerTask(shared_worker_id, Task::Type::SHARED_WORKER, + worker_process_id, GURL(), &shared_worker_tasks_); } void PerProfileWorkerTaskTracker::OnBeforeWorkerTerminated( - const content::SharedWorkerInstance& instance) { - DeleteWorkerTask(instance, &shared_worker_tasks_); + content::SharedWorkerId shared_worker_id) { + DeleteWorkerTask(shared_worker_id, &shared_worker_tasks_); } void PerProfileWorkerTaskTracker::OnVersionStartedRunning(
diff --git a/chrome/browser/task_manager/providers/per_profile_worker_task_tracker.h b/chrome/browser/task_manager/providers/per_profile_worker_task_tracker.h index b1cf84a..a7b5979 100644 --- a/chrome/browser/task_manager/providers/per_profile_worker_task_tracker.h +++ b/chrome/browser/task_manager/providers/per_profile_worker_task_tracker.h
@@ -49,16 +49,16 @@ content::GlobalFrameRoutingId ancestor_render_frame_host_id) override; // content::SharedWorkerService::Observer: - void OnWorkerStarted(const content::SharedWorkerInstance& instance, + void OnWorkerStarted(content::SharedWorkerId shared_worker_id, int worker_process_id, const base::UnguessableToken& dev_tools_token) override; void OnBeforeWorkerTerminated( - const content::SharedWorkerInstance& instance) override; + content::SharedWorkerId shared_worker_id) override; void OnClientAdded( - const content::SharedWorkerInstance& instance, + content::SharedWorkerId shared_worker_id, content::GlobalFrameRoutingId render_frame_host_id) override {} void OnClientRemoved( - const content::SharedWorkerInstance& instance, + content::SharedWorkerId shared_worker_id, content::GlobalFrameRoutingId render_frame_host_id) override {} // content::ServiceWorkerContextObserver: @@ -104,7 +104,7 @@ content::SharedWorkerService::Observer> scoped_shared_worker_service_observer_{this}; - base::flat_map<content::SharedWorkerInstance, std::unique_ptr<WorkerTask>> + base::flat_map<content::SharedWorkerId, std::unique_ptr<WorkerTask>> shared_worker_tasks_; // For service workers:
diff --git a/chrome/browser/ui/android/infobars/grouped_permission_infobar.cc b/chrome/browser/ui/android/infobars/grouped_permission_infobar.cc index d8129a9..752576f 100644 --- a/chrome/browser/ui/android/infobars/grouped_permission_infobar.cc +++ b/chrome/browser/ui/android/infobars/grouped_permission_infobar.cc
@@ -14,6 +14,8 @@ #include "chrome/browser/android/resource_mapper.h" #include "chrome/browser/android/tab_android.h" #include "chrome/browser/permissions/grouped_permission_infobar_delegate_android.h" +#include "content/public/browser/web_contents.h" +#include "ui/android/window_android.h" namespace { @@ -23,7 +25,7 @@ ScopedJavaLocalRef<jobject> CreateRenderInfoBarHelper( JNIEnv* env, int enumerated_icon_id, - const JavaRef<jobject>& tab, + const JavaRef<jobject>& window, const base::string16& compact_message_text, const base::string16& compact_link_text, const base::string16& message_text, @@ -47,7 +49,7 @@ ScopedJavaLocalRef<jintArray> content_settings_types = base::android::ToJavaIntArray(env, content_settings); return Java_PermissionInfoBar_create( - env, tab, content_settings_types, enumerated_icon_id, + env, window, content_settings_types, enumerated_icon_id, compact_message_text_java, compact_link_text_java, message_text_java, description_text_java, ok_button_text_java, cancel_button_text_java); } @@ -82,9 +84,10 @@ } return CreateRenderInfoBarHelper( - env, permission_icon, GetTab()->GetJavaObject(), compact_message_text, - compact_link_text, message_text, description_text, ok_button_text, - cancel_button_text, content_settings_types); + env, permission_icon, + GetTab()->web_contents()->GetTopLevelNativeWindow()->GetJavaObject(), + compact_message_text, compact_link_text, message_text, description_text, + ok_button_text, cancel_button_text, content_settings_types); } GroupedPermissionInfoBarDelegate* GroupedPermissionInfoBar::GetDelegate() {
diff --git a/chrome/browser/ui/ash/chrome_new_window_client.cc b/chrome/browser/ui/ash/chrome_new_window_client.cc index bb39fbe..15d4d86 100644 --- a/chrome/browser/ui/ash/chrome_new_window_client.cc +++ b/chrome/browser/ui/ash/chrome_new_window_client.cc
@@ -116,7 +116,6 @@ {ChromePage::STORAGE, chrome::kStorageSubPage}, {ChromePage::STYLUS, chrome::kStylusSubPage}, {ChromePage::SWITCHACCESS, chrome::kSwitchAccessSubPage}, - {ChromePage::SYNCSETUP, chrome::kSyncSetupSubPage}, {ChromePage::TETHERSETTINGS, chrome::kTetherSettingsSubPage}, {ChromePage::WIFI, chrome::kWiFiSettingsSubPage}}; @@ -130,7 +129,8 @@ {ChromePage::ONSTARTUP, chrome::kOnStartupSubPage}, {ChromePage::PASSWORDS, chrome::kPasswordManagerSubPage}, {ChromePage::PRIVACY, chrome::kPrivacySubPage}, - {ChromePage::SEARCH, chrome::kSearchSubPage}}; + {ChromePage::SEARCH, chrome::kSearchSubPage}, + {ChromePage::SYNCSETUP, chrome::kSyncSetupSubPage}}; constexpr std::pair<arc::mojom::ChromePage, const char*> kAboutPagesMapping[] = {{ChromePage::ABOUTBLANK, url::kAboutBlankURL},
diff --git a/chrome/browser/ui/ash/chrome_new_window_client_browsertest.cc b/chrome/browser/ui/ash/chrome_new_window_client_browsertest.cc index f1351385..e9d38ed8 100644 --- a/chrome/browser/ui/ash/chrome_new_window_client_browsertest.cc +++ b/chrome/browser/ui/ash/chrome_new_window_client_browsertest.cc
@@ -282,8 +282,6 @@ base_url.Resolve(chrome::kResetSubPage)); TestOpenChromePage(ChromePage::STORAGE, base_url.Resolve(chrome::kStorageSubPage)); - TestOpenChromePage(ChromePage::SYNCSETUP, - base_url.Resolve(chrome::kSyncSetupSubPage)); TestOpenChromePage(ChromePage::ACCESSIBILITY, base_url.Resolve(chrome::kAccessibilitySubPage)); TestOpenChromePage(ChromePage::ACCOUNTMANAGER, @@ -347,6 +345,8 @@ base_url.Resolve(chrome::kPasswordManagerSubPage)); TestOpenChromePage(ChromePage::SEARCH, base_url.Resolve(chrome::kSearchSubPage)); + TestOpenChromePage(ChromePage::SYNCSETUP, + base_url.Resolve(chrome::kSyncSetupSubPage)); } void TestAllAboutPages() {
diff --git a/chrome/browser/ui/ash/login_screen_client.cc b/chrome/browser/ui/ash/login_screen_client.cc index 3508c677..b6699f81 100644 --- a/chrome/browser/ui/ash/login_screen_client.cc +++ b/chrome/browser/ui/ash/login_screen_client.cc
@@ -180,11 +180,16 @@ delegate_->HandleFocusOobeDialog(); } -void LoginScreenClient::ShowGaiaSignin(bool can_close, - const AccountId& prefilled_account) { +void LoginScreenClient::ShowGaiaSignin(const AccountId& prefilled_account) { if (chromeos::LoginDisplayHost::default_host()) { chromeos::LoginDisplayHost::default_host()->ShowGaiaDialog( - can_close, prefilled_account); + prefilled_account); + } +} + +void LoginScreenClient::HideGaiaSignin() { + if (chromeos::LoginDisplayHost::default_host()) { + chromeos::LoginDisplayHost::default_host()->HideOobeDialog(); } }
diff --git a/chrome/browser/ui/ash/login_screen_client.h b/chrome/browser/ui/ash/login_screen_client.h index fb1a109..02baaaec 100644 --- a/chrome/browser/ui/ash/login_screen_client.h +++ b/chrome/browser/ui/ash/login_screen_client.h
@@ -109,8 +109,8 @@ void OnMaxIncorrectPasswordAttempted(const AccountId& account_id) override; void FocusLockScreenApps(bool reverse) override; void FocusOobeDialog() override; - void ShowGaiaSignin(bool can_close, - const AccountId& prefilled_account) override; + void ShowGaiaSignin(const AccountId& prefilled_account) override; + void HideGaiaSignin() override; void OnRemoveUserWarningShown() override; void RemoveUser(const AccountId& account_id) override; void LaunchPublicSession(const AccountId& account_id,
diff --git a/chrome/browser/ui/ash/multi_user/multi_user_context_menu_chromeos.cc b/chrome/browser/ui/ash/multi_user/multi_user_context_menu_chromeos.cc index 96254df..1e6a531 100644 --- a/chrome/browser/ui/ash/multi_user/multi_user_context_menu_chromeos.cc +++ b/chrome/browser/ui/ash/multi_user/multi_user_context_menu_chromeos.cc
@@ -84,15 +84,19 @@ return model; auto* menu = new MultiUserContextMenuChromeos(window); model.reset(menu); + int command_id = IDC_VISIT_DESKTOP_OF_LRU_USER_NEXT; for (size_t user_index = 1; user_index < logged_in_users.size(); ++user_index) { + if (command_id > IDC_VISIT_DESKTOP_OF_LRU_USER_LAST) { + break; + } const user_manager::UserInfo* user_info = logged_in_users[user_index]; menu->AddItem( - user_index == 1 ? IDC_VISIT_DESKTOP_OF_LRU_USER_2 - : IDC_VISIT_DESKTOP_OF_LRU_USER_3, + command_id, l10n_util::GetStringFUTF16( IDS_VISIT_DESKTOP_OF_LRU_USER, user_info->GetDisplayName(), base::ASCIIToUTF16(user_info->GetDisplayEmail()))); + ++command_id; } } return model; @@ -101,13 +105,15 @@ void ExecuteVisitDesktopCommand(int command_id, aura::Window* window) { switch (command_id) { case IDC_VISIT_DESKTOP_OF_LRU_USER_2: - case IDC_VISIT_DESKTOP_OF_LRU_USER_3: { + case IDC_VISIT_DESKTOP_OF_LRU_USER_3: + case IDC_VISIT_DESKTOP_OF_LRU_USER_4: + case IDC_VISIT_DESKTOP_OF_LRU_USER_5: { const user_manager::UserList logged_in_users = user_manager::UserManager::Get()->GetLRULoggedInUsers(); // When running the multi user mode on Chrome OS, windows can "visit" // another user's desktop. const AccountId account_id = - logged_in_users[IDC_VISIT_DESKTOP_OF_LRU_USER_2 == command_id ? 1 : 2] + logged_in_users[command_id - IDC_VISIT_DESKTOP_OF_LRU_USER_NEXT + 1] ->GetAccountId(); base::OnceCallback<void(bool, bool)> on_accept = base::Bind(&OnAcceptTeleportWarning, account_id, window);
diff --git a/chrome/browser/ui/blocked_content/popup_opener_tab_helper.cc b/chrome/browser/ui/blocked_content/popup_opener_tab_helper.cc index 3be3fdf9..5970e19 100644 --- a/chrome/browser/ui/blocked_content/popup_opener_tab_helper.cc +++ b/chrome/browser/ui/blocked_content/popup_opener_tab_helper.cc
@@ -10,9 +10,17 @@ #include "base/memory/ptr_util.h" #include "base/metrics/histogram_macros.h" #include "base/time/tick_clock.h" +#include "chrome/browser/content_settings/host_content_settings_map_factory.h" +#include "chrome/browser/profiles/profile.h" #include "chrome/browser/ui/blocked_content/tab_under_navigation_throttle.h" +#include "components/content_settings/core/browser/host_content_settings_map.h" +#include "components/content_settings/core/common/content_settings.h" +#include "components/ukm/content/source_url_recorder.h" #include "content/public/browser/navigation_handle.h" #include "content/public/browser/web_contents.h" +#include "services/metrics/public/cpp/metrics_utils.h" +#include "services/metrics/public/cpp/ukm_builders.h" +#include "services/metrics/public/cpp/ukm_recorder.h" #include "ui/base/scoped_visibility_tracker.h" // static @@ -43,6 +51,7 @@ void PopupOpenerTabHelper::OnOpenedPopup(PopupTracker* popup_tracker) { has_opened_popup_since_last_user_gesture_ = true; + has_opened_popup_ = true; last_popup_open_time_ = tick_clock_->NowTicks(); } @@ -67,6 +76,28 @@ web_contents->GetVisibility() != content::Visibility::HIDDEN); } +void PopupOpenerTabHelper::WebContentsDestroyed() { + // If the user has opened a popup, record the page popup settings ukm. + if (has_opened_popup_) { + const GURL& url = web_contents()->GetLastCommittedURL(); + if (!url.is_valid()) { + return; + } + + const ukm::SourceId source_id = + ukm::GetSourceIdForWebContentsDocument(web_contents()); + Profile* profile = + Profile::FromBrowserContext(web_contents()->GetBrowserContext()); + bool user_allows_popups = + HostContentSettingsMapFactory::GetForProfile(profile) + ->GetContentSetting(url, url, ContentSettingsType::POPUPS, + std::string()) == CONTENT_SETTING_ALLOW; + ukm::builders::Popup_Page(source_id) + .SetAllowed(user_allows_popups) + .Record(ukm::UkmRecorder::Get()); + } +} + void PopupOpenerTabHelper::OnVisibilityChanged(content::Visibility visibility) { // TODO(csharrison): Consider handling OCCLUDED tabs the same way as HIDDEN // tabs.
diff --git a/chrome/browser/ui/blocked_content/popup_opener_tab_helper.h b/chrome/browser/ui/blocked_content/popup_opener_tab_helper.h index f8aac1a..ab67992 100644 --- a/chrome/browser/ui/blocked_content/popup_opener_tab_helper.h +++ b/chrome/browser/ui/blocked_content/popup_opener_tab_helper.h
@@ -59,6 +59,7 @@ const base::TickClock* tick_clock); // content::WebContentsObserver: + void WebContentsDestroyed() override; void OnVisibilityChanged(content::Visibility visibility) override; void DidStartNavigation( content::NavigationHandle* navigation_handle) override; @@ -80,6 +81,9 @@ bool has_opened_popup_since_last_user_gesture_ = false; + // Whether this WebContents has opened a popup. + bool has_opened_popup_ = false; + WEB_CONTENTS_USER_DATA_KEY_DECL(); DISALLOW_COPY_AND_ASSIGN(PopupOpenerTabHelper);
diff --git a/chrome/browser/ui/blocked_content/popup_opener_tab_helper_unittest.cc b/chrome/browser/ui/blocked_content/popup_opener_tab_helper_unittest.cc index 5366f7f..7f325324 100644 --- a/chrome/browser/ui/blocked_content/popup_opener_tab_helper_unittest.cc +++ b/chrome/browser/ui/blocked_content/popup_opener_tab_helper_unittest.cc
@@ -17,6 +17,7 @@ #include "base/test/simple_test_tick_clock.h" #include "base/time/time.h" #include "build/build_config.h" +#include "chrome/browser/content_settings/host_content_settings_map_factory.h" #include "chrome/browser/content_settings/tab_specific_content_settings.h" #include "chrome/browser/infobars/infobar_service.h" #include "chrome/browser/ui/blocked_content/list_item_position.h" @@ -320,6 +321,73 @@ histogram_tester()->ExpectTotalCount(kPopupToTabUnder, 0); } +// Navigate to a site without pop-ups, verify the user popup settings are not +// logged to ukm. +TEST_F(PopupOpenerTabHelperTest, + PageWithNoPopups_NoProfileSettingsLoggedInUkm) { + ukm::InitializeSourceUrlRecorderForWebContents(web_contents()); + ukm::TestAutoSetUkmRecorder test_ukm_recorder; + + const GURL url("https://first.test/"); + NavigateAndCommitWithoutGesture(url); + DeleteContents(); + + auto entries = + test_ukm_recorder.GetEntriesByName(ukm::builders::Popup_Page::kEntryName); + EXPECT_EQ(0u, entries.size()); +} + +// Navigate to a site, verify histogram for user site pop up settings +// when there is at least one popup. +TEST_F(PopupOpenerTabHelperTest, + PageWithDefaultPopupBlocker_ProfileSettingsLoggedInUkm) { + ukm::InitializeSourceUrlRecorderForWebContents(web_contents()); + ukm::TestAutoSetUkmRecorder test_ukm_recorder; + + const GURL url("https://first.test/"); + NavigateAndCommitWithoutGesture(url); + SimulatePopup(); + DeleteContents(); + + auto entries = + test_ukm_recorder.GetEntriesByName(ukm::builders::Popup_Page::kEntryName); + EXPECT_EQ(1u, entries.size()); + + test_ukm_recorder.ExpectEntrySourceHasUrl(entries[0], url); + test_ukm_recorder.ExpectEntryMetric( + entries[0], ukm::builders::Popup_Page::kAllowedName, false); +} + +// Same as the test with the default pop up blocker, however, with the user +// explicitly allowing popups on the site. +TEST_F(PopupOpenerTabHelperTest, + PageWithPopupsAllowed_ProfileSettingsLoggedInUkm) { + ukm::InitializeSourceUrlRecorderForWebContents(web_contents()); + ukm::TestAutoSetUkmRecorder test_ukm_recorder; + + const GURL url("https://first.test/"); + + // Allow popups on url for the test profile. + TestingProfile* test_profile = profile(); + HostContentSettingsMap* host_content_settings_map = + HostContentSettingsMapFactory::GetForProfile(test_profile); + host_content_settings_map->SetContentSettingDefaultScope( + url, url, ContentSettingsType::POPUPS, std::string(), + CONTENT_SETTING_ALLOW); + + NavigateAndCommitWithoutGesture(url); + SimulatePopup(); + DeleteContents(); + + auto entries = + test_ukm_recorder.GetEntriesByName(ukm::builders::Popup_Page::kEntryName); + EXPECT_EQ(1u, entries.size()); + + test_ukm_recorder.ExpectEntrySourceHasUrl(entries[0], url); + test_ukm_recorder.ExpectEntryMetric( + entries[0], ukm::builders::Popup_Page::kAllowedName, true); +} + class BlockTabUnderTest : public PopupOpenerTabHelperTest { public: BlockTabUnderTest() {}
diff --git a/chrome/browser/ui/browser_command_controller.cc b/chrome/browser/ui/browser_command_controller.cc index 48713d1..18591ab 100644 --- a/chrome/browser/ui/browser_command_controller.cc +++ b/chrome/browser/ui/browser_command_controller.cc
@@ -80,6 +80,7 @@ #include "chrome/browser/platform_util.h" #include "chrome/browser/ui/ash/multi_user/multi_user_context_menu.h" #include "chrome/browser/ui/browser_commands_chromeos.h" +#include "components/session_manager/core/session_manager.h" #endif #if defined(OS_LINUX) && !defined(OS_CHROMEOS) @@ -472,6 +473,8 @@ #if defined(OS_CHROMEOS) case IDC_VISIT_DESKTOP_OF_LRU_USER_2: case IDC_VISIT_DESKTOP_OF_LRU_USER_3: + case IDC_VISIT_DESKTOP_OF_LRU_USER_4: + case IDC_VISIT_DESKTOP_OF_LRU_USER_5: ExecuteVisitDesktopCommand(id, window()->GetNativeWindow()); break; #endif @@ -958,8 +961,19 @@ command_updater_.UpdateCommandEnabled(IDC_DEBUG_FRAME_TOGGLE, true); #if defined(OS_CHROMEOS) command_updater_.UpdateCommandEnabled(IDC_MINIMIZE_WINDOW, true); + // The VisitDesktop command is only supported for up to 5 logged in users + // because that's the max number of user sessions. If that number is increased + // the IDC_VISIT_DESKTOP_OF_LRU_USER_ command ids should be updated as well. + // crbug.com/940461 + static_assert( + session_manager::kMaximumNumberOfUserSessions <= + IDC_VISIT_DESKTOP_OF_LRU_USER_LAST - + IDC_VISIT_DESKTOP_OF_LRU_USER_NEXT + 2, + "The max number of user sessions exceeds the number of users supported."); command_updater_.UpdateCommandEnabled(IDC_VISIT_DESKTOP_OF_LRU_USER_2, true); command_updater_.UpdateCommandEnabled(IDC_VISIT_DESKTOP_OF_LRU_USER_3, true); + command_updater_.UpdateCommandEnabled(IDC_VISIT_DESKTOP_OF_LRU_USER_4, true); + command_updater_.UpdateCommandEnabled(IDC_VISIT_DESKTOP_OF_LRU_USER_5, true); #endif #if defined(OS_LINUX) && !defined(OS_CHROMEOS) command_updater_.UpdateCommandEnabled(IDC_MINIMIZE_WINDOW, true);
diff --git a/chrome/browser/ui/passwords/settings/password_manager_presenter.cc b/chrome/browser/ui/passwords/settings/password_manager_presenter.cc index 93088b3..91dd093 100644 --- a/chrome/browser/ui/passwords/settings/password_manager_presenter.cc +++ b/chrome/browser/ui/passwords/settings/password_manager_presenter.cc
@@ -345,6 +345,7 @@ #if !defined(OS_ANDROID) // This is never called on Android. void PasswordManagerPresenter::RequestPlaintextPassword( const std::string& sort_key, + password_manager::PlaintextReason reason, base::OnceCallback<void(base::Optional<base::string16>)> callback) const { auto it = password_map_.find(sort_key); if (it == password_map_.end()) { @@ -369,9 +370,12 @@ // Call back the front end to reveal the password. std::move(callback).Run(form.password_value); + auto metric_type = + reason == password_manager::PlaintextReason::kCopy + ? password_manager::metrics_util::ACCESS_PASSWORD_COPIED + : password_manager::metrics_util::ACCESS_PASSWORD_VIEWED; UMA_HISTOGRAM_ENUMERATION( - "PasswordManager.AccessPasswordInSettings", - password_manager::metrics_util::ACCESS_PASSWORD_VIEWED, + "PasswordManager.AccessPasswordInSettings", metric_type, password_manager::metrics_util::ACCESS_PASSWORD_COUNT); } #endif
diff --git a/chrome/browser/ui/passwords/settings/password_manager_presenter.h b/chrome/browser/ui/passwords/settings/password_manager_presenter.h index 0f68155..b740ade 100644 --- a/chrome/browser/ui/passwords/settings/password_manager_presenter.h +++ b/chrome/browser/ui/passwords/settings/password_manager_presenter.h
@@ -11,14 +11,15 @@ #include <memory> #include <string> #include <vector> - #include "base/callback_forward.h" #include "base/macros.h" #include "base/optional.h" #include "base/strings/string16.h" +#include "build/build_config.h" #include "components/password_manager/core/browser/password_store.h" #include "components/password_manager/core/browser/password_store_consumer.h" #include "components/password_manager/core/browser/ui/credential_provider_interface.h" +#include "components/password_manager/core/browser/ui/plaintext_reason.h" #include "components/prefs/pref_member.h" #include "components/undo/undo_manager.h" #include "ui/shell_dialogs/select_file_dialog.h" @@ -91,6 +92,7 @@ // Undoes the last saved password or exception removal. void UndoRemoveSavedPasswordOrException(); +#if !defined(OS_ANDROID) // Requests to reveal the plain text password corresponding to |sort_key|. If // |sort_key| is a valid key into |password_map_|, runs |callback| with the // corresponding value, or nullopt otherwise. @@ -98,7 +100,9 @@ // instead. void RequestPlaintextPassword( const std::string& sort_key, + password_manager::PlaintextReason reason, base::OnceCallback<void(base::Optional<base::string16>)> callback) const; +#endif // Wrapper around |PasswordStore::AddLogin| that adds the corresponding undo // action to |undo_manager_|.
diff --git a/chrome/browser/ui/passwords/settings/password_manager_presenter_unittest.cc b/chrome/browser/ui/passwords/settings/password_manager_presenter_unittest.cc index 02f82eb..7eaa7ef 100644 --- a/chrome/browser/ui/passwords/settings/password_manager_presenter_unittest.cc +++ b/chrome/browser/ui/passwords/settings/password_manager_presenter_unittest.cc
@@ -15,14 +15,21 @@ #include "base/memory/scoped_refptr.h" #include "base/strings/string_piece.h" #include "base/strings/utf_string_conversions.h" +#include "base/test/bind_test_util.h" +#if !defined(OS_ANDROID) +#include "base/test/metrics/histogram_tester.h" +#endif +#include "base/test/mock_callback.h" #include "build/build_config.h" #include "chrome/browser/password_manager/password_store_factory.h" #include "chrome/browser/ui/passwords/settings/password_ui_view.h" #include "chrome/browser/ui/passwords/settings/password_ui_view_mock.h" #include "chrome/test/base/testing_profile.h" #include "components/password_manager/core/browser/password_list_sorter.h" +#include "components/password_manager/core/browser/password_manager_metrics_util.h" #include "components/password_manager/core/browser/password_manager_test_utils.h" #include "components/password_manager/core/browser/test_password_store.h" +#include "components/password_manager/core/browser/ui/plaintext_reason.h" #include "content/public/test/browser_task_environment.h" #include "testing/gmock/include/gmock/gmock.h" #include "testing/gtest/include/gtest/gtest.h" @@ -45,7 +52,9 @@ constexpr char kPassword2[] = "pass2"; constexpr char kUsername[] = "user"; constexpr char kUsername2[] = "user2"; - +#if !defined(OS_ANDROID) +constexpr char kHistogramName[] = "PasswordManager.AccessPasswordInSettings"; +#endif MATCHER(IsNotBlacklisted, "") { return !arg->blacklisted_by_user; } @@ -82,9 +91,9 @@ task_environment_.RunUntilIdle(); } - void AddPasswordEntry(const GURL& origin, - base::StringPiece username, - base::StringPiece password) { + autofill::PasswordForm AddPasswordEntry(const GURL& origin, + base::StringPiece username, + base::StringPiece password) { autofill::PasswordForm form; form.origin = origin; form.signon_realm = origin.GetOrigin().spec(); @@ -93,6 +102,7 @@ form.password_element = base::ASCIIToUTF16("Passwd"); form.password_value = base::ASCIIToUTF16(password); store_->AddLogin(form); + return form; } void AddPasswordException(const GURL& origin) { @@ -372,4 +382,28 @@ EXPECT_EQ(kSameOrigin, passwords_for_export[0]->origin); } +#if !defined(OS_ANDROID) +TEST_F(PasswordManagerPresenterTest, TestRequestPlaintextPassword) { + base::HistogramTester histogram_tester_; + autofill::PasswordForm form = + AddPasswordEntry(GURL(kExampleCom), kUsername, kPassword); + + EXPECT_CALL(GetUIController(), SetPasswordList(SizeIs(1))); + EXPECT_CALL(GetUIController(), SetPasswordExceptionList(IsEmpty())); + UpdatePasswordLists(); + base::MockOnceCallback<void(base::Optional<base::string16>)> + password_callback; + EXPECT_CALL(password_callback, + Run(testing::Eq(base::ASCIIToUTF16(kPassword)))); + std::string sort_key = password_manager::CreateSortKey(form); + GetUIController().GetPasswordManagerPresenter()->RequestPlaintextPassword( + sort_key, password_manager::PlaintextReason::kView, + password_callback.Get()); + + histogram_tester_.ExpectUniqueSample( + kHistogramName, password_manager::metrics_util::ACCESS_PASSWORD_VIEWED, + 1); +} +#endif + } // namespace
diff --git a/chrome/browser/ui/views/frame/system_menu_model_builder.cc b/chrome/browser/ui/views/frame/system_menu_model_builder.cc index 6692871c..1b7cc85 100644 --- a/chrome/browser/ui/views/frame/system_menu_model_builder.cc +++ b/chrome/browser/ui/views/frame/system_menu_model_builder.cc
@@ -165,16 +165,19 @@ return; model->AddSeparator(ui::NORMAL_SEPARATOR); - DCHECK_LE(logged_in_users.size(), 3u); + int command_id = IDC_VISIT_DESKTOP_OF_LRU_USER_NEXT; for (size_t user_index = 1; user_index < logged_in_users.size(); ++user_index) { + if (command_id > IDC_VISIT_DESKTOP_OF_LRU_USER_LAST) { + break; + } const user_manager::UserInfo* user_info = logged_in_users[user_index]; model->AddItem( - user_index == 1 ? IDC_VISIT_DESKTOP_OF_LRU_USER_2 - : IDC_VISIT_DESKTOP_OF_LRU_USER_3, + command_id, l10n_util::GetStringFUTF16( IDS_VISIT_DESKTOP_OF_LRU_USER, user_info->GetDisplayName(), base::ASCIIToUTF16(user_info->GetDisplayEmail()))); + ++command_id; } #endif }
diff --git a/chrome/browser/ui/views/frame/system_menu_model_builder_browsertest_chromeos.cc b/chrome/browser/ui/views/frame/system_menu_model_builder_browsertest_chromeos.cc index e7483c7..91d46b5 100644 --- a/chrome/browser/ui/views/frame/system_menu_model_builder_browsertest_chromeos.cc +++ b/chrome/browser/ui/views/frame/system_menu_model_builder_browsertest_chromeos.cc
@@ -95,6 +95,8 @@ // Settings window cannot be teleported. EXPECT_FALSE(base::Contains(commands, IDC_VISIT_DESKTOP_OF_LRU_USER_2)); EXPECT_FALSE(base::Contains(commands, IDC_VISIT_DESKTOP_OF_LRU_USER_3)); + EXPECT_FALSE(base::Contains(commands, IDC_VISIT_DESKTOP_OF_LRU_USER_4)); + EXPECT_FALSE(base::Contains(commands, IDC_VISIT_DESKTOP_OF_LRU_USER_5)); } } // namespace
diff --git a/chrome/browser/ui/views/sync/profile_signin_confirmation_dialog_views.cc b/chrome/browser/ui/views/sync/profile_signin_confirmation_dialog_views.cc index 049592f..18f1239 100644 --- a/chrome/browser/ui/views/sync/profile_signin_confirmation_dialog_views.cc +++ b/chrome/browser/ui/views/sync/profile_signin_confirmation_dialog_views.cc
@@ -71,8 +71,10 @@ using DelegateNotifyFn = void (Delegate::*)(); auto notify_delegate = [](ProfileSigninConfirmationDialogViews* dialog, DelegateNotifyFn fn) { - (dialog->delegate_.get()->*fn)(); - dialog->delegate_.reset(); + if (dialog->delegate_) { + (dialog->delegate_.get()->*fn)(); + dialog->delegate_.reset(); + } }; DialogDelegate::set_accept_callback( base::BindOnce(notify_delegate, base::Unretained(this),
diff --git a/chrome/browser/ui/views/sync/profile_signin_confirmation_dialog_views_unittest.cc b/chrome/browser/ui/views/sync/profile_signin_confirmation_dialog_views_unittest.cc new file mode 100644 index 0000000..bddcd57a --- /dev/null +++ b/chrome/browser/ui/views/sync/profile_signin_confirmation_dialog_views_unittest.cc
@@ -0,0 +1,67 @@ +// Copyright 2020 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "testing/gtest/include/gtest/gtest.h" + +#include "chrome/browser/ui/views/sync/profile_signin_confirmation_dialog_views.h" +#include "chrome/test/views/chrome_views_test_base.h" +#include "ui/views/test/widget_test.h" + +namespace { + +class TestDelegate : public ui::ProfileSigninConfirmationDelegate { + public: + TestDelegate(int* cancels, int* continues, int* signins) + : cancels_(cancels), continues_(continues), signins_(signins) {} + ~TestDelegate() override = default; + + void OnCancelSignin() override { (*cancels_)++; } + void OnContinueSignin() override { (*continues_)++; } + void OnSigninWithNewProfile() override { (*signins_)++; } + + int* cancels_; + int* continues_; + int* signins_; +}; + +} // namespace + +using ProfileSigninConfirmationDialogTest = ChromeViewsTestBase; + +// Regression test for https://crbug.com/1054866 +TEST_F(ProfileSigninConfirmationDialogTest, CloseButtonOnlyCallsDelegateOnce) { + int cancels = 0; + int continues = 0; + int signins = 0; + + auto delegate = + std::make_unique<TestDelegate>(&cancels, &continues, &signins); + auto dialog = std::make_unique<ProfileSigninConfirmationDialogViews>( + nullptr, "foo@bar.com", std::move(delegate), true); + ProfileSigninConfirmationDialogViews* weak_dialog = dialog.get(); + + views::Widget* widget = views::DialogDelegate::CreateDialogWidget( + dialog.release(), GetContext(), nullptr); + views::test::WidgetDestroyedWaiter destroy_waiter(widget); + + widget->Show(); + + // Press the "continue signin" button. + views::Button* button = + static_cast<views::Button*>(weak_dialog->GetExtraView()); + // Synthesize both press & release - different platforms have different + // notions about whether buttons activate on press or on release. + button->OnKeyPressed( + ui::KeyEvent(ui::ET_KEY_PRESSED, ui::VKEY_SPACE, ui::EF_NONE)); + button->OnKeyReleased( + ui::KeyEvent(ui::ET_KEY_RELEASED, ui::VKEY_SPACE, ui::EF_NONE)); + destroy_waiter.Wait(); + + // The delegate should *not* have gotten a call back to OnCancelSignin. If the + // fix for https://crbug.com/1054866 regresses, either it will, or we'll have + // crashed above. + EXPECT_EQ(cancels, 0); + EXPECT_EQ(continues, 1); + EXPECT_EQ(signins, 0); +}
diff --git a/chrome/browser/ui/views/webauthn/authenticator_request_dialog_view.cc b/chrome/browser/ui/views/webauthn/authenticator_request_dialog_view.cc index 14c857b7..804d99d4 100644 --- a/chrome/browser/ui/views/webauthn/authenticator_request_dialog_view.cc +++ b/chrome/browser/ui/views/webauthn/authenticator_request_dialog_view.cc
@@ -73,6 +73,10 @@ DCHECK(!model_->should_dialog_be_closed()); model_->AddObserver(this); + DialogDelegate::set_close_callback( + base::BindOnce(&AuthenticatorRequestDialogView::OnDialogClosing, + base::Unretained(this))); + // Currently, all sheets have a label on top and controls at the bottom. // Consider moving this to AuthenticatorRequestSheetView if this changes. SetLayoutManager(std::make_unique<views::FillLayout>()); @@ -113,7 +117,7 @@ return false; } -bool AuthenticatorRequestDialogView::Close() { +void AuthenticatorRequestDialogView::OnDialogClosing() { // To keep the UI responsive, always allow immediately closing the dialog when // desired; but still trigger cancelling the AuthenticatorRequest unless it is // already complete. @@ -141,8 +145,6 @@ // over observers in SetCurrentStep(). if (!model_->should_dialog_be_closed()) Cancel(); - - return true; } bool AuthenticatorRequestDialogView::IsDialogButtonEnabled(
diff --git a/chrome/browser/ui/views/webauthn/authenticator_request_dialog_view.h b/chrome/browser/ui/views/webauthn/authenticator_request_dialog_view.h index 69e3678..5663dc6 100644 --- a/chrome/browser/ui/views/webauthn/authenticator_request_dialog_view.h +++ b/chrome/browser/ui/views/webauthn/authenticator_request_dialog_view.h
@@ -68,7 +68,6 @@ gfx::Size CalculatePreferredSize() const override; bool Accept() override; bool Cancel() override; - bool Close() override; bool IsDialogButtonEnabled(ui::DialogButton button) const override; View* GetInitiallyFocusedView() override; ui::ModalType GetModalType() const override; @@ -100,6 +99,8 @@ // Shows the dialog after creation or after being hidden. void Show(); + void OnDialogClosing(); + std::unique_ptr<AuthenticatorRequestDialogModel> model_; AuthenticatorRequestSheetView* sheet_ = nullptr;
diff --git a/chrome/browser/ui/web_applications/create_shortcut_browsertest.cc b/chrome/browser/ui/web_applications/create_shortcut_browsertest.cc index 62c69b3..240efbc 100644 --- a/chrome/browser/ui/web_applications/create_shortcut_browsertest.cc +++ b/chrome/browser/ui/web_applications/create_shortcut_browsertest.cc
@@ -18,6 +18,7 @@ #include "chrome/browser/web_applications/components/web_app_id.h" #include "chrome/browser/web_applications/components/web_app_provider_base.h" #include "chrome/browser/web_applications/test/web_app_install_observer.h" +#include "content/public/test/browser_test_utils.h" #include "url/gurl.h" namespace web_app { @@ -126,6 +127,28 @@ NavigateAndCheckForToolbar(app_browser, popup_url, false); } +// Tests that Create Shortcut doesn't timeout on a page that has a delayed +// iframe load. Context: crbug.com/1046883 +IN_PROC_BROWSER_TEST_P(CreateShortcutBrowserTest, WorksAfterDelayedIFrameLoad) { + ASSERT_TRUE(embedded_test_server()->Start()); + NavigateToURLAndWait(browser(), embedded_test_server()->GetURL( + "/favicon/page_with_favicon.html")); + + // Append an iframe and wait for it to finish loading. + const char script[] = R"( + const iframe = document.createElement('iframe'); + iframe.onload = _ => domAutomationController.send('success'); + iframe.srcdoc = 'inner page'; + document.body.appendChild(iframe); + )"; + EXPECT_EQ(content::EvalJsWithManualReply( + browser()->tab_strip_model()->GetActiveWebContents(), script) + .ExtractString(), + "success"); + + InstallShortcutAppForCurrentUrl(); +} + INSTANTIATE_TEST_SUITE_P( All, CreateShortcutBrowserTest,
diff --git a/chrome/browser/ui/webui/settings/people_handler.cc b/chrome/browser/ui/webui/settings/people_handler.cc index 8f697e5..e540a1e 100644 --- a/chrome/browser/ui/webui/settings/people_handler.cc +++ b/chrome/browser/ui/webui/settings/people_handler.cc
@@ -36,6 +36,7 @@ #include "chrome/browser/ui/webui/signin/login_ui_service.h" #include "chrome/browser/ui/webui/signin/login_ui_service_factory.h" #include "chrome/common/url_constants.h" +#include "chrome/common/webui_url_constants.h" #include "chrome/grit/generated_resources.h" #include "components/autofill/core/common/autofill_prefs.h" #include "components/browsing_data/core/history_notice_utils.h" @@ -64,9 +65,7 @@ #include "ui/base/webui/web_ui_util.h" #include "ui/gfx/image/image.h" -#if defined(OS_CHROMEOS) -#include "chromeos/constants/chromeos_features.h" -#else +#if !defined(OS_CHROMEOS) #include "chrome/browser/ui/webui/profile_helper.h" #endif @@ -95,15 +94,7 @@ }; bool IsSyncSubpage(const GURL& current_url) { - if (current_url == chrome::GetSettingsUrl(chrome::kSyncSetupSubPage)) - return true; -#if defined(OS_CHROMEOS) - if (!chromeos::features::IsSplitSettingsSyncEnabled() && - current_url == chrome::GetOSSettingsUrl(chrome::kSyncSetupSubPage)) { - return true; - } -#endif // defined(OS_CHROMEOS) - return false; + return current_url == chrome::GetSettingsUrl(chrome::kSyncSetupSubPage); } SyncConfigInfo::SyncConfigInfo() @@ -893,6 +884,10 @@ if (!service) return; + // The user opened settings directly to the syncSetup sub-page, because they + // clicked "Settings" in the browser sync consent dialog or because they + // clicked "Review sync options" in the Chrome OS out-of-box experience. + // Don't start syncing until they finish setup. if (IsSyncSubpage(web_contents->GetVisibleURL())) { sync_blocker_ = service->GetSetupInProgressHandle(); }
diff --git a/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc b/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc index 6bf4534..3a1ad68 100644 --- a/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc +++ b/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc
@@ -1031,6 +1031,7 @@ {"privacyPageMore", IDS_SETTINGS_PRIVACY_MORE}, {"doNotTrack", IDS_SETTINGS_ENABLE_DO_NOT_TRACK}, {"doNotTrackDialogTitle", IDS_SETTINGS_ENABLE_DO_NOT_TRACK_DIALOG_TITLE}, + {"permissionsPageTitle", IDS_SETTINGS_PERMISSIONS}, {"securityPageTitle", IDS_SETTINGS_SECURITY}, {"securityPageAdvancedSectionLabel", IDS_SETTINGS_SECURITY_ADVANCED_SECTION_LABEL}, @@ -1067,6 +1068,32 @@ IDS_SETTINGS_ENABLE_URL_KEYED_ANONYMIZED_DATA_COLLECTION}, {"urlKeyedAnonymizedDataCollectionDesc", IDS_SETTINGS_ENABLE_URL_KEYED_ANONYMIZED_DATA_COLLECTION_DESC}, + {"noRecentPermissions", IDS_SETTINGS_RECENT_PERMISSIONS_NO_CHANGES}, + {"recentPermissionChangeAutoblockedSentenceStart", + IDS_SETTINGS_RECENT_PERMISSIONS_CHANGE_AUTOBLOCKED_SENTENCE_START}, + {"recentPermissionChangeBlockedSentenceStart", + IDS_SETTINGS_RECENT_PERMISSIONS_CHANGE_BLOCKED_SENTENCE_START}, + {"recentPermissionChangeAllowedSentenceStart", + IDS_SETTINGS_RECENT_PERMISSIONS_CHANGE_ALLOWED_SENTENCE_START}, + {"recentPermissionChangeAutoblocked", + IDS_SETTINGS_RECENT_PERMISSIONS_CHANGE_AUTOBLOCKED}, + {"recentPermissionChangeBlocked", + IDS_SETTINGS_RECENT_PERMISSIONS_CHANGE_BLOCKED}, + {"recentPermissionChangeAllowed", + IDS_SETTINGS_RECENT_PERMISSIONS_CHANGE_ALLOWED}, + {"recentPermissionsTwoItems", IDS_SETTINGS_RECENT_PERMISSIONS_TWO_ITEMS}, + {"recentPermissionsThreeItems", + IDS_SETTINGS_RECENT_PERMISSIONS_THREE_ITEMS}, + {"recentPermissionsOverThreeItems", + IDS_SETTINGS_RECENT_PERMISSIONS_OVER_THREE_ITEMS}, + {"recentPermissionsOneItemIncognito", + IDS_SETTINGS_RECENT_PERMISSIONS_ONE_ITEM_INCOGNITO}, + {"recentPermissionsTwoItemsIncognito", + IDS_SETTINGS_RECENT_PERMISSIONS_TWO_ITEMS_INCOGNITO}, + {"recentPermissionsThreeItemsIncognito", + IDS_SETTINGS_RECENT_PERMISSIONS_THREE_ITEMS_INCOGNITO}, + {"recentPermissionsOverThreeItemsIncognito", + IDS_SETTINGS_RECENT_PERMISSIONS_OVER_THREE_ITEMS_INCOGNITO}, {"networkPredictionEnabled", IDS_SETTINGS_NETWORK_PREDICTION_ENABLED_LABEL}, {"networkPredictionEnabledDesc", @@ -1231,6 +1258,8 @@ {"sharedWorkerWorker", IDS_SETTINGS_COOKIES_SHARED_WORKER_WORKER_LABEL}, {"sharedWorkerName", IDS_SETTINGS_COOKIES_COOKIE_NAME_LABEL}, {"siteSettingsCategoryPageTitle", IDS_SETTINGS_SITE_SETTINGS_CATEGORY}, + {"siteSettingsRecentPermissionsSectionLabel", + IDS_SETTINGS_SITE_SETTINGS_RECENT_ACTIVITY}, {"siteSettingsCategoryCamera", IDS_SETTINGS_SITE_SETTINGS_CAMERA}, {"siteSettingsCameraLabel", IDS_SETTINGS_SITE_SETTINGS_CAMERA_LABEL}, {"cookiePageTitle", IDS_SETTINGS_COOKIES_PAGE},
diff --git a/chrome/browser/wake_lock/wake_lock_browsertest.cc b/chrome/browser/wake_lock/wake_lock_browsertest.cc index 51be0af..4ecf0d0 100644 --- a/chrome/browser/wake_lock/wake_lock_browsertest.cc +++ b/chrome/browser/wake_lock/wake_lock_browsertest.cc
@@ -9,7 +9,7 @@ #include "chrome/browser/ui/tabs/tab_strip_model.h" #include "chrome/test/base/in_process_browser_test.h" #include "chrome/test/base/ui_test_utils.h" -#include "components/permissions/permission_request_manager.h" +#include "components/permissions/test/permission_request_observer.h" #include "content/public/browser/web_contents.h" #include "content/public/common/content_switches.h" #include "content/public/test/browser_test_utils.h" @@ -20,38 +20,6 @@ namespace { -// Trimmed down version of the class found in geolocation_browsertest.cc. -// Used to observe the creation of a single permission request without -// responding. -class PermissionRequestObserver - : public permissions::PermissionRequestManager::Observer { - public: - explicit PermissionRequestObserver(content::WebContents* web_contents) - : request_manager_(permissions::PermissionRequestManager::FromWebContents( - web_contents)), - request_shown_(false) { - request_manager_->AddObserver(this); - } - ~PermissionRequestObserver() override { - // Safe to remove twice if it happens. - request_manager_->RemoveObserver(this); - } - - bool request_shown() { return request_shown_; } - - private: - // PermissionRequestManager::Observer - void OnBubbleAdded() override { - request_shown_ = true; - request_manager_->RemoveObserver(this); - } - - permissions::PermissionRequestManager* request_manager_; - bool request_shown_; - - DISALLOW_COPY_AND_ASSIGN(PermissionRequestObserver); -}; - // Handles HTTP requests to |path| with |content| as the response body. // |content| is expected to be JavaScript; the response mime type is always set // to "text/javascript". @@ -117,7 +85,7 @@ // https://w3c.github.io/wake-lock/#request-static-method // Screen locks are never allowed from workers. IN_PROC_BROWSER_TEST_F(WakeLockBrowserTest, RequestScreenLockFromWorker) { - PermissionRequestObserver observer( + permissions::PermissionRequestObserver observer( browser()->tab_strip_model()->GetActiveWebContents()); const std::string kWorkerScript = "navigator.wakeLock.request('screen').catch(err => " @@ -129,13 +97,13 @@ "NotAllowedError", content::EvalJs(browser()->tab_strip_model()->GetActiveWebContents(), "waitForMessage();")); - EXPECT_EQ(observer.request_shown(), false); + EXPECT_FALSE(observer.request_shown()); } // Requests for a system lock should always be denied, and there should be no // permission prompt. IN_PROC_BROWSER_TEST_F(WakeLockBrowserTest, RequestSystemLockFromWorker) { - PermissionRequestObserver observer( + permissions::PermissionRequestObserver observer( browser()->tab_strip_model()->GetActiveWebContents()); const std::string kWorkerScript = "navigator.wakeLock.request('system').catch(err => " @@ -147,7 +115,7 @@ "NotAllowedError", content::EvalJs(browser()->tab_strip_model()->GetActiveWebContents(), "waitForMessage();")); - EXPECT_EQ(observer.request_shown(), false); + EXPECT_FALSE(observer.request_shown()); } IN_PROC_BROWSER_TEST_F(WakeLockBrowserTest, RequestPermissionScreen) { @@ -155,13 +123,13 @@ // permission prompt. NavigateToSimplePage(); - PermissionRequestObserver observer( + permissions::PermissionRequestObserver observer( browser()->tab_strip_model()->GetActiveWebContents()); EXPECT_EQ("granted", content::EvalJs( browser()->tab_strip_model()->GetActiveWebContents(), "navigator.wakeLock.request('screen').then(lock => {" " lock.release(); return 'granted'; });")); - EXPECT_EQ(observer.request_shown(), false); + EXPECT_FALSE(observer.request_shown()); } IN_PROC_BROWSER_TEST_F(WakeLockBrowserTest, @@ -170,7 +138,7 @@ // permission prompt. NavigateToSimplePage(); - PermissionRequestObserver observer( + permissions::PermissionRequestObserver observer( browser()->tab_strip_model()->GetActiveWebContents()); EXPECT_EQ( "granted", @@ -178,7 +146,7 @@ "navigator.wakeLock.request('screen').then(lock => {" " lock.release(); return 'granted'; });", content::EvalJsOptions::EXECUTE_SCRIPT_NO_USER_GESTURE)); - EXPECT_EQ(observer.request_shown(), false); + EXPECT_FALSE(observer.request_shown()); } IN_PROC_BROWSER_TEST_F(WakeLockBrowserTest, RequestPermissionSystem) { @@ -186,14 +154,14 @@ // permission prompt. NavigateToSimplePage(); - PermissionRequestObserver observer( + permissions::PermissionRequestObserver observer( browser()->tab_strip_model()->GetActiveWebContents()); EXPECT_EQ( "NotAllowedError", content::EvalJs(browser()->tab_strip_model()->GetActiveWebContents(), "navigator.wakeLock.request('system').catch(err => {" " return err.name; });")); - EXPECT_EQ(observer.request_shown(), false); + EXPECT_FALSE(observer.request_shown()); } IN_PROC_BROWSER_TEST_F(WakeLockBrowserTest, @@ -202,7 +170,7 @@ // permission prompt. NavigateToSimplePage(); - PermissionRequestObserver observer( + permissions::PermissionRequestObserver observer( browser()->tab_strip_model()->GetActiveWebContents()); EXPECT_EQ( "NotAllowedError", @@ -210,5 +178,5 @@ "navigator.wakeLock.request('system').catch(err => {" " return err.name; });", content::EvalJsOptions::EXECUTE_SCRIPT_NO_USER_GESTURE)); - EXPECT_EQ(observer.request_shown(), false); + EXPECT_FALSE(observer.request_shown()); }
diff --git a/chrome/common/webui_url_constants.cc b/chrome/common/webui_url_constants.cc index 99a8852..825a7ec1 100644 --- a/chrome/common/webui_url_constants.cc +++ b/chrome/common/webui_url_constants.cc
@@ -10,10 +10,6 @@ #include "components/safe_browsing/core/web_ui/constants.h" #include "extensions/buildflags/buildflags.h" -#if defined(OS_CHROMEOS) -#include "chromeos/constants/chromeos_features.h" -#endif - namespace chrome { // Please keep this file in the same order as the header. @@ -485,6 +481,9 @@ kStorageSubPage, kStylusSubPage, kSwitchAccessSubPage, + // kSyncSetupSubPage is both an OS and browser sub page, but prefer the + // browser version. Delete this comment when SplitSettingsSync is the + // default, because it will introduce an "osSync" sub-page. kVPNSettingsSubPage, kWiFiSettingsSubPage, }; @@ -494,12 +493,6 @@ if (index != std::string::npos) sub_page_without_query.resize(index); - // SplitSettingsSync doesn't use the same sync subpage as browser. - if (!chromeos::features::IsSplitSettingsSyncEnabled() && - sub_page_without_query == kSyncSetupSubPage) { - return true; - } - for (const char* p : kSubPages) { if (sub_page_without_query == p) return true;
diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn index b71c6ea..eb50f97 100644 --- a/chrome/test/BUILD.gn +++ b/chrome/test/BUILD.gn
@@ -5405,6 +5405,7 @@ sources += [ "../browser/ui/views/frame/opaque_browser_frame_view_layout_unittest.cc", "../browser/ui/views/sync/one_click_signin_dialog_view_unittest.cc", + "../browser/ui/views/sync/profile_signin_confirmation_dialog_views_unittest.cc", ] } if ((is_linux && !is_chromeos) || is_win) {
diff --git a/chrome/test/data/banners/manifest_bad_badge.json b/chrome/test/data/banners/manifest_bad_badge.json deleted file mode 100644 index fc551c7..0000000 --- a/chrome/test/data/banners/manifest_bad_badge.json +++ /dev/null
@@ -1,39 +0,0 @@ -{ - "name": "Manifest test app", - "icons": [ - { - "src": "launcher-icon-1x.png", - "sizes": "48x48", - "type": "image/png" - }, - { - "src": "launcher-icon-1-5x.png", - "sizes": "72x72", - "type": "image/png" - }, - { - "src": "bad_icon.png", - "sizes": "96x96", - "type": "image/png", - "purpose": "any badge" - }, - { - "src": "launcher-icon-3x.png", - "sizes": "144x144", - "type": "image/png" - }, - { - "src": "launcher-icon-4x.png", - "sizes": "192x192", - "type": "image/png" - }, - { - "src": "image-512px.png", - "sizes": "512x512", - "type": "image/png" - } - ], - "start_url": "manifest_test_page.html", - "display": "standalone", - "orientation": "landscape" -} \ No newline at end of file
diff --git a/chrome/test/data/banners/manifest_bad_maskable.json b/chrome/test/data/banners/manifest_bad_maskable.json new file mode 100644 index 0000000..70ef118 --- /dev/null +++ b/chrome/test/data/banners/manifest_bad_maskable.json
@@ -0,0 +1,20 @@ +{ + "name": "Manifest test app", + "icons": [ + { + "src": "bad_icon.png", + "sizes": "192x192", + "type": "image/png", + "purpose": "maskable" + }, + { + "src": "launcher-icon-4x.png", + "sizes": "192x192", + "type": "image/png", + "purpose": "any" + } + ], + "start_url": "manifest_test_page.html", + "display": "standalone", + "orientation": "landscape" +}
diff --git a/chrome/test/data/banners/manifest_bad_non_maskable_icon.json b/chrome/test/data/banners/manifest_bad_non_maskable_icon.json new file mode 100644 index 0000000..ae824b2 --- /dev/null +++ b/chrome/test/data/banners/manifest_bad_non_maskable_icon.json
@@ -0,0 +1,19 @@ +{ + "name": "Manifest test app", + "icons": [ + { + "src": "launcher-icon-4x.png", + "sizes": "192x192", + "type": "image/png", + "purpose": "maskable" + }, + { + "src": "bad_icon.png", + "sizes": "512x512", + "type": "image/png" + } + ], + "start_url": "manifest_test_page.html", + "display": "standalone", + "orientation": "landscape" +}
diff --git a/chrome/test/data/banners/manifest_one_bad_maskable.json b/chrome/test/data/banners/manifest_one_bad_maskable.json new file mode 100644 index 0000000..905f6531 --- /dev/null +++ b/chrome/test/data/banners/manifest_one_bad_maskable.json
@@ -0,0 +1,14 @@ +{ + "name": "Manifest test app", + "icons": [ + { + "src": "bad_icon.png", + "sizes": "192x192", + "type": "image/png", + "purpose": "maskable" + } + ], + "start_url": "manifest_test_page.html", + "display": "standalone", + "orientation": "landscape" +}
diff --git a/chrome/test/data/banners/manifest_one_maskable.json b/chrome/test/data/banners/manifest_one_maskable.json new file mode 100644 index 0000000..045931f7 --- /dev/null +++ b/chrome/test/data/banners/manifest_one_maskable.json
@@ -0,0 +1,14 @@ +{ + "name": "Manifest test app", + "icons": [ + { + "src": "image-512px.png", + "sizes": "512x512", + "type": "image/png", + "purpose": "maskable" + } + ], + "start_url": "manifest_test_page.html", + "display": "standalone", + "orientation": "landscape" +}
diff --git a/chrome/test/data/webui/settings/chromeos/fake_quick_unlock_private.js b/chrome/test/data/webui/settings/chromeos/fake_quick_unlock_private.js index f60553f..bd3a9f0 100644 --- a/chrome/test/data/webui/settings/chromeos/fake_quick_unlock_private.js +++ b/chrome/test/data/webui/settings/chromeos/fake_quick_unlock_private.js
@@ -39,7 +39,7 @@ FakeQuickUnlockPrivate.prototype = { // Public testing methods. getFakeToken: function() { - return FAKE_TOKEN; + return {token: FAKE_TOKEN, lifetime: 0}; }, // Public fake API implementations.
diff --git a/chrome/test/data/webui/settings/chromeos/multidevice_page_tests.js b/chrome/test/data/webui/settings/chromeos/multidevice_page_tests.js index 73401a1..ce44e00 100644 --- a/chrome/test/data/webui/settings/chromeos/multidevice_page_tests.js +++ b/chrome/test/data/webui/settings/chromeos/multidevice_page_tests.js
@@ -59,8 +59,10 @@ if (authRequired) { assertTrue(multidevicePage.showPasswordPromptDialog_); // Simulate the user entering a valid password, then closing the dialog. - multidevicePage.$$('#multidevicePasswordPrompt').authToken = - 'validAuthToken'; + multidevicePage.$$('#multidevicePasswordPrompt').fire('token-obtained', { + token: 'validAuthToken', + lifetimeSeconds: 300 + }); // Simulate closing the password prompt dialog multidevicePage.$$('#multidevicePasswordPrompt').fire('close'); Polymer.dom.flush();
diff --git a/chrome/test/data/webui/settings/chromeos/os_people_page_test.js b/chrome/test/data/webui/settings/chromeos/os_people_page_test.js index 74c86a8..ca070a4 100644 --- a/chrome/test/data/webui/settings/chromeos/os_people_page_test.js +++ b/chrome/test/data/webui/settings/chromeos/os_people_page_test.js
@@ -203,5 +203,53 @@ settings.Router.getInstance().getCurrentRoute(), settings.routes.ACCOUNT_MANAGER); }); + + test('Fingerprint dialog closes when token expires', async () => { + loadTimeData.overrideValues({ + fingerprintUnlockEnabled: true, + }); + + peoplePage = document.createElement('os-settings-people-page'); + document.body.appendChild(peoplePage); + + await accountManagerBrowserProxy.whenCalled('getAccounts'); + await syncBrowserProxy.whenCalled('getSyncStatus'); + quickUnlockPrivateApi = new settings.FakeQuickUnlockPrivate(); + peoplePage.authToken_ = quickUnlockPrivateApi.getFakeToken(); + + settings.Router.getInstance().navigateTo(settings.routes.LOCK_SCREEN); + Polymer.dom.flush(); + + const subpageTrigger = peoplePage.$$('#lock-screen-subpage-trigger'); + // Sub-page trigger navigates to the lock screen page. + subpageTrigger.click(); + Polymer.dom.flush(); + + assertEquals( + settings.Router.getInstance().getCurrentRoute(), + settings.routes.LOCK_SCREEN); + const lockScreenPage = assert(peoplePage.$$('#lock-screen')); + + // Password dialog should not open because the authToken_ is set. + assertFalse(lockScreenPage.showPasswordPromptDialog_); + + const editFingerprintsTrigger = lockScreenPage.$$('#editFingerprints'); + editFingerprintsTrigger.click(); + Polymer.dom.flush(); + + assertEquals( + settings.Router.getInstance().getCurrentRoute(), + settings.routes.FINGERPRINT); + + const fingerprintTrigger = + peoplePage.$$('#fingerprint-list').$$('#addFingerprint'); + fingerprintTrigger.click(); + peoplePage.authToken_ = undefined; + + assertEquals( + settings.Router.getInstance().getCurrentRoute(), + settings.routes.LOCK_SCREEN); + assertTrue(lockScreenPage.showPasswordPromptDialog_); + }); }); });
diff --git a/chrome/test/data/webui/settings/chromeos/os_settings_browsertest.js b/chrome/test/data/webui/settings/chromeos/os_settings_browsertest.js index 42cc0fd8..a5f376d 100644 --- a/chrome/test/data/webui/settings/chromeos/os_settings_browsertest.js +++ b/chrome/test/data/webui/settings/chromeos/os_settings_browsertest.js
@@ -891,10 +891,13 @@ /** @override */ get extraLibraries() { return super.extraLibraries.concat([ + BROWSER_SETTINGS_PATH + '../fake_chrome_event.js', BROWSER_SETTINGS_PATH + '../test_browser_proxy.js', BROWSER_SETTINGS_PATH + 'sync_test_util.js', BROWSER_SETTINGS_PATH + 'test_profile_info_browser_proxy.js', BROWSER_SETTINGS_PATH + 'test_sync_browser_proxy.js', + BROWSER_SETTINGS_PATH + + '../settings/chromeos/fake_quick_unlock_private.js', 'os_people_page_test.js', ]); }
diff --git a/chrome/test/data/webui/settings/chromeos/quick_unlock_authenticate_browsertest_chromeos.js b/chrome/test/data/webui/settings/chromeos/quick_unlock_authenticate_browsertest_chromeos.js index 65ae98c..f1a4229 100644 --- a/chrome/test/data/webui/settings/chromeos/quick_unlock_authenticate_browsertest_chromeos.js +++ b/chrome/test/data/webui/settings/chromeos/quick_unlock_authenticate_browsertest_chromeos.js
@@ -74,6 +74,7 @@ suite('authenticate', function() { let passwordPromptDialog = null; let passwordElement = null; + let authTokenObtainedFired = false; setup(function() { PolymerTest.clearBody(); @@ -84,6 +85,9 @@ testElement = document.createElement( 'settings-lock-screen-password-prompt-dialog'); testElement.writeUma_ = fakeUma.recordProgress.bind(fakeUma); + testElement.addEventListener('auth-token-obtained', (e) => { + authTokenObtainedFired = true; + }); document.body.appendChild(testElement); passwordPromptDialog = getFromElement('#passwordPrompt'); @@ -155,7 +159,7 @@ 0, fakeUma.getHistogramValue( LockScreenProgress.ENTER_PASSWORD_CORRECTLY)); - assertFalse(!!testElement.setModes); + assertFalse(authTokenObtainedFired); }); // A valid password provides an authenticated setModes object, and a @@ -170,7 +174,7 @@ 1, fakeUma.getHistogramValue( LockScreenProgress.ENTER_PASSWORD_CORRECTLY)); - assertTrue(!!testElement.setModes); + assertTrue(authTokenObtainedFired); }); // The setModes objects times out after a delay. @@ -298,8 +302,8 @@ Polymer.dom.flush(); testElement.setModes_ = quickUnlockPrivateApi.setModes.bind( - quickUnlockPrivateApi, quickUnlockPrivateApi.getFakeToken(), - [], [], () => { + quickUnlockPrivateApi, + quickUnlockPrivateApi.getFakeToken().token, [], [], () => { return true; }); @@ -360,6 +364,7 @@ assertFalse(isSetupPinButtonVisible()); assertDeepEquals([], quickUnlockPrivateApi.activeModes); } + testElement.authToken = quickUnlockPrivateApi.getFakeToken(); // Verify toggling PIN on/off does not disable screen lock. setLockScreenPref(true); @@ -433,7 +438,8 @@ const testPinKeyboard = testElement.$.pinKeyboard; testPinKeyboard.setModes = (modes, credentials, onComplete) => { quickUnlockPrivateApi.setModes( - quickUnlockPrivateApi.getFakeToken(), modes, credentials, () => { + quickUnlockPrivateApi.getFakeToken().token, modes, credentials, + () => { onComplete(true); }); };
diff --git a/chrome/test/data/webui/settings/cr_settings_browsertest.js b/chrome/test/data/webui/settings/cr_settings_browsertest.js index 8b6727f..3ab7c3cb 100644 --- a/chrome/test/data/webui/settings/cr_settings_browsertest.js +++ b/chrome/test/data/webui/settings/cr_settings_browsertest.js
@@ -1260,6 +1260,35 @@ /** * Test fixture for + * chrome/browser/resources/settings/site_settings_page/ + * recent_site_permissions.js + * @constructor + * @extends {CrSettingsBrowserTest} + */ +function CrSettingsRecentSitePermissionsTest() {} + +CrSettingsRecentSitePermissionsTest.prototype = { + __proto__: CrSettingsBrowserTest.prototype, + + /** @override */ + browsePreload: 'chrome://settings/recent_site_permissions.html', + + /** @override */ + extraLibraries: CrSettingsBrowserTest.prototype.extraLibraries.concat([ + '../test_browser_proxy.js', + '../test_util.js', + 'test_site_settings_prefs_browser_proxy.js', + 'test_util.js', + 'recent_site_permissions_test.js', + ]), +}; + +TEST_F('CrSettingsRecentSitePermissionsTest', 'All', function() { + mocha.run(); +}); + +/** + * Test fixture for * chrome/browser/resources/settings/privacy_page/security_page.html. * @constructor * @extends {CrSettingsBrowserTest}
diff --git a/chrome/test/data/webui/settings/recent_site_permissions_test.js b/chrome/test/data/webui/settings/recent_site_permissions_test.js new file mode 100644 index 0000000..be99330b --- /dev/null +++ b/chrome/test/data/webui/settings/recent_site_permissions_test.js
@@ -0,0 +1,71 @@ +// Copyright 2020 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +suite('CrSettingsRecentSitePermissionsTest', function() { + /** + * The mock proxy object to use during test. + * @type {TestSiteSettingsPrefsBrowserProxy} + */ + let browserProxy = null; + + /** @type {SettingsRecentSitePermissionsElement} */ + let testElement; + + setup(function() { + browserProxy = new TestSiteSettingsPrefsBrowserProxy(); + settings.SiteSettingsPrefsBrowserProxyImpl.instance_ = browserProxy; + + PolymerTest.clearBody(); + testElement = document.createElement('settings-recent-site-permissions'); + document.body.appendChild(testElement); + Polymer.dom.flush(); + }); + + test('No recent permissions', async function() { + browserProxy.setResultFor('getRecentSitePermissions', Promise.resolve([])); + await testElement.populateList(); + assertTrue(test_util.isVisible(testElement, '#noPermissionsText')); + }); + + test('Various recent permissions', async function() { + const mock_data = Promise.resolve([ + { + origin: 'https://bar.com', + incognito: true, + recentPermissions: + [{setting: settings.ContentSetting.BLOCK, displayName: 'location'}] + }, + { + origin: 'https://bar.com', + recentPermissions: [ + {setting: settings.ContentSetting.ALLOW, displayName: 'notifications'} + ] + }, + { + origin: 'http://foo.com', + recentPermissions: [ + {setting: settings.ContentSetting.BLOCK, displayName: 'popups'}, { + setting: settings.ContentSetting.BLOCK, + displayName: 'clipboard', + source: settings.SiteSettingSource.EMBARGO + } + ] + }, + ]); + browserProxy.setResultFor('getRecentSitePermissions', mock_data); + + await testElement.populateList(); + assertFalse(testElement.noRecentPermissions); + assertFalse(test_util.isChildVisible(testElement, '#noPermissionsText')); + + const siteEntries = testElement.shadowRoot.querySelectorAll('.link-button'); + assertEquals(3, siteEntries.length); + + const incognitoIcons = + testElement.shadowRoot.querySelectorAll('.incognito-icon'); + assertTrue(test_util.isVisible(incognitoIcons[0])); + assertFalse(test_util.isVisible(incognitoIcons[1])); + assertFalse(test_util.isVisible(incognitoIcons[2])); + }); +});
diff --git a/chrome/test/data/webui/settings/test_site_settings_prefs_browser_proxy.js b/chrome/test/data/webui/settings/test_site_settings_prefs_browser_proxy.js index 52a60643..d5890f4 100644 --- a/chrome/test/data/webui/settings/test_site_settings_prefs_browser_proxy.js +++ b/chrome/test/data/webui/settings/test_site_settings_prefs_browser_proxy.js
@@ -28,6 +28,7 @@ 'fetchBlockAutoplayStatus', 'fetchZoomLevels', 'getAllSites', + 'getRecentSitePermissions', 'getChooserExceptionList', 'getDefaultValueForContentType', 'getFormattedBytes', @@ -237,6 +238,12 @@ } /** @override */ + getRecentSitePermissions(contentTypes, numSources) { + this.methodCalled('getRecentSitePermissions', contentTypes); + return this.getResultFor('getRecentSitePermissions'); + } + + /** @override */ getFormattedBytes(numBytes) { this.methodCalled('getFormattedBytes', numBytes); return Promise.resolve(`${numBytes} B`);
diff --git a/chromecast/media/cma/backend/android/audio_decoder_android.cc b/chromecast/media/cma/backend/android/audio_decoder_android.cc index c2b5a188..d9effc8 100644 --- a/chromecast/media/cma/backend/android/audio_decoder_android.cc +++ b/chromecast/media/cma/backend/android/audio_decoder_android.cc
@@ -313,10 +313,12 @@ } // Create a decoder. - decoder_ = CastAudioDecoder::Create( - task_runner_, config_, kDecoderSampleFormat, - base::BindOnce(&AudioDecoderAndroid::OnDecoderInitialized, - base::Unretained(this))); + decoder_ = + CastAudioDecoder::Create(task_runner_, config_, kDecoderSampleFormat); + if (!decoder_) { + LOG(INFO) << __func__ << ": Decoder initialization was unsuccessful"; + delegate_->OnDecoderError(); + } } void AudioDecoderAndroid::CreateRateShifter(const AudioConfig& config) { @@ -373,15 +375,6 @@ return delay; } -void AudioDecoderAndroid::OnDecoderInitialized(bool success) { - TRACE_FUNCTION_ENTRY0(); - DCHECK(task_runner_->BelongsToCurrentThread()); - LOG(INFO) << __func__ << ": Decoder initialization was " - << (success ? "successful" : "unsuccessful"); - if (!success) - delegate_->OnDecoderError(); -} - void AudioDecoderAndroid::OnBufferDecoded( uint64_t input_bytes, CastAudioDecoder::Status status,
diff --git a/chromecast/media/cma/backend/android/audio_decoder_android.h b/chromecast/media/cma/backend/android/audio_decoder_android.h index aab43905..d03d6dc6 100644 --- a/chromecast/media/cma/backend/android/audio_decoder_android.h +++ b/chromecast/media/cma/backend/android/audio_decoder_android.h
@@ -79,7 +79,6 @@ void ResetSinkForNewConfig(const AudioConfig& config); void CreateDecoder(); void CreateRateShifter(const AudioConfig& config); - void OnDecoderInitialized(bool success); void OnBufferDecoded(uint64_t input_bytes, CastAudioDecoder::Status status, const AudioConfig& config,
diff --git a/chromecast/media/cma/backend/audio_decoder_for_mixer.cc b/chromecast/media/cma/backend/audio_decoder_for_mixer.cc index 216308a..f1e6ff9 100644 --- a/chromecast/media/cma/backend/audio_decoder_for_mixer.cc +++ b/chromecast/media/cma/backend/audio_decoder_for_mixer.cc
@@ -144,15 +144,15 @@ bool AudioDecoderForMixer::Start(int64_t playback_start_pts, bool start_playback_asap) { TRACE_FUNCTION_ENTRY0(); - DCHECK(IsValidConfig(config_)); - - CreateMixerInput(config_, start_playback_asap); + DCHECK(IsValidConfig(input_config_)); // Create decoder_ if necessary. This can happen if Stop() was called, and // SetConfig() was not called since then. if (!decoder_) { CreateDecoder(); } + decoded_config_ = (decoder_ ? decoder_->GetOutputConfig() : input_config_); + CreateMixerInput(decoded_config_, start_playback_asap); playback_start_pts_ = playback_start_pts; start_playback_asap_ = start_playback_asap; @@ -316,7 +316,10 @@ return MediaPipelineBackend::kBufferPending; } - DCHECK(decoder_); + if (!decoder_) { + return MediaPipelineBackend::kBufferFailed; + } + // Decode the buffer. decoder_->Decode(std::move(buffer_base), base::BindOnce(&AudioDecoderForMixer::OnBufferDecoded, @@ -345,18 +348,21 @@ return false; } - bool changed_config = - (config.samples_per_second != config_.samples_per_second || - config.channel_number != config_.channel_number); - - if (mixer_input_ && changed_config) { - ResetMixerInputForNewConfig(config); - } - - config_ = config; + input_config_ = config; decoder_.reset(); CreateDecoder(); + auto decoded_config = + (decoder_ ? decoder_->GetOutputConfig() : input_config_); + bool changed_config = + (decoded_config.samples_per_second != + decoded_config_.samples_per_second || + decoded_config.channel_number != decoded_config_.channel_number); + decoded_config_ = decoded_config; + if (mixer_input_ && changed_config) { + ResetMixerInputForNewConfig(decoded_config); + } + if (pending_buffer_complete_ && changed_config) { pending_buffer_complete_ = false; delegate_->OnPushBufferComplete(MediaPipelineBackend::kBufferSuccess); @@ -379,7 +385,7 @@ void AudioDecoderForMixer::CreateDecoder() { DCHECK(!decoder_); - DCHECK(IsValidConfig(config_)); + DCHECK(IsValidConfig(input_config_)); // No need to create a decoder if the samples are already decoded. if (BypassDecoder()) { @@ -388,10 +394,12 @@ } // Create a decoder. - decoder_ = CastAudioDecoder::Create( - task_runner_, config_, kDecoderSampleFormat, - base::BindOnce(&AudioDecoderForMixer::OnDecoderInitialized, - base::Unretained(this))); + decoder_ = CastAudioDecoder::Create(task_runner_, input_config_, + kDecoderSampleFormat); + if (!decoder_) { + LOG(ERROR) << "Failed to create audio decoder"; + delegate_->OnDecoderError(); + } } bool AudioDecoderForMixer::SetVolume(float multiplier) { @@ -411,7 +419,7 @@ AudioDecoderForMixer::RenderingDelay delay = next_buffer_delay_; if (delay.timestamp_microseconds != INT64_MIN) { - double usec_per_sample = 1000000.0 / config_.samples_per_second; + double usec_per_sample = 1000000.0 / decoded_config_.samples_per_second; double queued_output_frames = 0.0; // Account for data that is in the process of being pushed to the mixer. @@ -424,15 +432,6 @@ return delay; } -void AudioDecoderForMixer::OnDecoderInitialized(bool success) { - TRACE_FUNCTION_ENTRY0(); - DCHECK(task_runner_->BelongsToCurrentThread()); - LOG(INFO) << "Decoder initialization was " - << (success ? "successful" : "unsuccessful"); - if (!success) - delegate_->OnDecoderError(); -} - void AudioDecoderForMixer::OnBufferDecoded( uint64_t input_bytes, bool has_config, @@ -463,29 +462,30 @@ if (has_config) { bool changed_config = false; - if (config.samples_per_second != config_.samples_per_second) { + if (config.samples_per_second != decoded_config_.samples_per_second) { LOG(INFO) << "Input sample rate changed from " - << config_.samples_per_second << " to " + << decoded_config_.samples_per_second << " to " << config.samples_per_second; - config_.samples_per_second = config.samples_per_second; + decoded_config_.samples_per_second = config.samples_per_second; changed_config = true; } - if (config.channel_number != config_.channel_number) { - LOG(INFO) << "Input channel count changed from " << config_.channel_number - << " to " << config.channel_number; - config_.channel_number = config.channel_number; + if (config.channel_number != decoded_config_.channel_number) { + LOG(INFO) << "Input channel count changed from " + << decoded_config_.channel_number << " to " + << config.channel_number; + decoded_config_.channel_number = config.channel_number; changed_config = true; } if (changed_config) { // Config from actual stream doesn't match supposed config from the // container. Update the mixer. - ResetMixerInputForNewConfig(config_); + ResetMixerInputForNewConfig(decoded_config_); } } if (!decoded->end_of_stream()) { pending_output_frames_ = - decoded->data_size() / (config_.channel_number * sizeof(float)); + decoded->data_size() / (decoded_config_.channel_number * sizeof(float)); last_push_pts_ = decoded->timestamp(); last_push_playout_timestamp_ = (next_buffer_delay_.timestamp_microseconds == kInvalidTimestamp @@ -508,8 +508,8 @@ bool AudioDecoderForMixer::BypassDecoder() const { DCHECK(task_runner_->BelongsToCurrentThread()); // The mixer input requires planar float PCM data. - return (config_.codec == kCodecPCM && - config_.sample_format == kSampleFormatPlanarF32); + return (input_config_.codec == kCodecPCM && + input_config_.sample_format == kSampleFormatPlanarF32); } void AudioDecoderForMixer::WritePcm(scoped_refptr<DecoderBufferBase> buffer) { @@ -523,7 +523,7 @@ return; } - const int frame_size = sizeof(float) * config_.channel_number; + const int frame_size = sizeof(float) * decoded_config_.channel_number; const int original_frame_count = buffer->data_size() / frame_size; if (original_frame_count == 0) { // Don't send empty buffers since it is interpreted as EOS. @@ -535,7 +535,7 @@ DCHECK_GT(frame_count, 0); if (frame_count > buffer_pool_frames_) { - CreateBufferPool(config_, frame_count * 2); + CreateBufferPool(decoded_config_, frame_count * 2); } auto io_buffer = buffer_pool_->GetBuffer();
diff --git a/chromecast/media/cma/backend/audio_decoder_for_mixer.h b/chromecast/media/cma/backend/audio_decoder_for_mixer.h index cd65c86..b326aaa 100644 --- a/chromecast/media/cma/backend/audio_decoder_for_mixer.h +++ b/chromecast/media/cma/backend/audio_decoder_for_mixer.h
@@ -82,7 +82,6 @@ void ResetMixerInputForNewConfig(const AudioConfig& config); void CreateDecoder(); - void OnDecoderInitialized(bool success); void OnBufferDecoded(uint64_t input_bytes, bool has_config, CastAudioDecoder::Status status, @@ -106,7 +105,8 @@ bool reported_ready_for_playback_ = false; RenderingDelay mixer_delay_; - AudioConfig config_; + AudioConfig input_config_; + AudioConfig decoded_config_; std::unique_ptr<CastAudioDecoder> decoder_; double av_sync_clock_rate_ = 1.0;
diff --git a/chromecast/media/cma/backend/audio_decoder_software_wrapper.cc b/chromecast/media/cma/backend/audio_decoder_software_wrapper.cc index ec0fec4d..089d76f 100644 --- a/chromecast/media/cma/backend/audio_decoder_software_wrapper.cc +++ b/chromecast/media/cma/backend/audio_decoder_software_wrapper.cc
@@ -101,19 +101,7 @@ LOG(INFO) << "Using software decoder for " << config.codec; - output_config_.codec = media::kCodecPCM; - output_config_.sample_format = media::kSampleFormatS16; - // The underlying software decoder will always convert mono to stereo, - // so set output stereo in the case of mono input. - if (config.channel_number == kMonoChannelCount) { - output_config_.channel_number = kStereoChannelCount; - } else { - output_config_.channel_number = config.channel_number; - } - output_config_.bytes_per_channel = 2; - output_config_.samples_per_second = config.samples_per_second; - output_config_.encryption_scheme = EncryptionScheme::kUnencrypted; - output_config_.channel_layout = config.channel_layout; + output_config_ = software_decoder_->GetOutputConfig(); return backend_decoder_->SetConfig(output_config_); } @@ -140,20 +128,13 @@ // TODO(kmackay) Consider using planar float instead. software_decoder_ = media::CastAudioDecoder::Create( base::ThreadTaskRunnerHandle::Get(), config, - media::CastAudioDecoder::kOutputSigned16, - base::BindOnce(&AudioDecoderSoftwareWrapper::OnDecoderInitialized, - base::Unretained(this))); - return (software_decoder_.get() != nullptr); -} - -void AudioDecoderSoftwareWrapper::OnDecoderInitialized(bool success) { - if (!success) { + media::CastAudioDecoder::kOutputSigned16); + if (!software_decoder_) { decoder_error_ = true; LOG(ERROR) << "Failed to initialize software decoder"; - if (delegate_) { - delegate_->OnDecoderError(); - } + return false; } + return true; } void AudioDecoderSoftwareWrapper::OnDecodedBuffer(
diff --git a/chromecast/media/cma/backend/audio_decoder_software_wrapper.h b/chromecast/media/cma/backend/audio_decoder_software_wrapper.h index e0cc59cd..5d558815 100644 --- a/chromecast/media/cma/backend/audio_decoder_software_wrapper.h +++ b/chromecast/media/cma/backend/audio_decoder_software_wrapper.h
@@ -41,7 +41,6 @@ private: bool CreateSoftwareDecoder(const AudioConfig& config); - void OnDecoderInitialized(bool success); void OnDecodedBuffer(CastAudioDecoder::Status status, const media::AudioConfig& config, scoped_refptr<DecoderBufferBase> decoded);
diff --git a/chromecast/media/cma/base/decoder_config_adapter.cc b/chromecast/media/cma/base/decoder_config_adapter.cc index 6262469..7131b43 100644 --- a/chromecast/media/cma/base/decoder_config_adapter.cc +++ b/chromecast/media/cma/base/decoder_config_adapter.cc
@@ -220,8 +220,7 @@ audio_config.sample_format = ToSampleFormat(config.sample_format()); audio_config.bytes_per_channel = config.bytes_per_channel(); audio_config.channel_layout = ToChannelLayout(config.channel_layout()); - audio_config.channel_number = - ::media::ChannelLayoutToChannelCount(config.channel_layout()), + audio_config.channel_number = config.channels(); audio_config.samples_per_second = config.samples_per_second(); audio_config.extra_data = config.extra_data(); audio_config.encryption_scheme = @@ -240,11 +239,15 @@ // static ::media::AudioDecoderConfig DecoderConfigAdapter::ToMediaAudioDecoderConfig( const AudioConfig& config) { - return ::media::AudioDecoderConfig( + ::media::AudioDecoderConfig audio_decoder_config( ToMediaAudioCodec(config.codec), ToMediaSampleFormat(config.sample_format), ToMediaChannelLayout(config.channel_layout), config.samples_per_second, config.extra_data, ToMediaEncryptionScheme(config.encryption_scheme)); + if (config.channel_layout == ChannelLayout::DISCRETE) { + audio_decoder_config.SetChannelsForDiscrete(config.channel_number); + } + return audio_decoder_config; } // static
diff --git a/chromecast/media/cma/decoder/cast_audio_decoder.cc b/chromecast/media/cma/decoder/cast_audio_decoder.cc index 1f06881..e20bcbc 100644 --- a/chromecast/media/cma/decoder/cast_audio_decoder.cc +++ b/chromecast/media/cma/decoder/cast_audio_decoder.cc
@@ -39,52 +39,53 @@ class CastAudioDecoderImpl : public CastAudioDecoder { public: CastAudioDecoderImpl(scoped_refptr<base::SingleThreadTaskRunner> task_runner, - InitializedCallback initialized_callback, OutputFormat output_format) : task_runner_(std::move(task_runner)), - initialized_callback_(std::move(initialized_callback)), output_format_(output_format), - initialized_(false), - decode_pending_(false), weak_factory_(this) { weak_this_ = weak_factory_.GetWeakPtr(); DCHECK(task_runner_); - DCHECK(initialized_callback_); } - void Initialize(const media::AudioConfig& config) { + bool Initialize(const media::AudioConfig& config) { DCHECK(task_runner_->RunsTasksInCurrentSequence()); DCHECK(!initialized_); - config_ = config; - if (config_.is_encrypted()) { - LOG(ERROR) << "Cannot decode encrypted audio"; - // TODO(kmackay) Should call OnInitialized(false) here, but that generally - // causes the browsertests to crash since it happens during the render - // pipeline initialization. - config_.encryption_scheme = EncryptionScheme::kUnencrypted; - } + input_config_ = config; + input_config_.encryption_scheme = EncryptionScheme::kUnencrypted; + + output_config_ = input_config_; + output_config_.codec = kCodecPCM; + output_config_.sample_format = + (output_format_ == kOutputSigned16 ? kSampleFormatS16 + : kSampleFormatPlanarF32); decoder_ = std::make_unique<::media::FFmpegAudioDecoder>(task_runner_, &media_log_); decoder_->Initialize( - media::DecoderConfigAdapter::ToMediaAudioDecoderConfig(config_), + media::DecoderConfigAdapter::ToMediaAudioDecoderConfig(input_config_), nullptr, base::BindRepeating(&CastAudioDecoderImpl::OnInitialized, weak_this_), base::BindRepeating(&CastAudioDecoderImpl::OnDecoderOutput, weak_this_), base::NullCallback()); // Unfortunately there is no result from decoder_->Initialize() until later // (the pipeline status callback is posted to the task runner). + return true; } // CastAudioDecoder implementation: + const AudioConfig& GetOutputConfig() const override { return output_config_; } + void Decode(scoped_refptr<media::DecoderBufferBase> data, DecodeCallback decode_callback) override { DCHECK(decode_callback); DCHECK(task_runner_->RunsTasksInCurrentSequence()); - if (data->decrypt_context() != nullptr) { - LOG(ERROR) << "Audio decoder doesn't support encrypted stream"; + if (data->decrypt_context() != nullptr || error_) { + if (data->decrypt_context() != nullptr) { + LOG(ERROR) << "Audio decoder doesn't support encrypted stream"; + } + // Post the task to ensure that |decode_callback| is not called from // within a call to Decode(). task_runner_->PostTask( @@ -106,7 +107,7 @@ void CallDecodeCallback(DecodeCallback decode_callback, Status status, scoped_refptr<media::DecoderBufferBase> data) { - std::move(decode_callback).Run(status, config_, std::move(data)); + std::move(decode_callback).Run(status, output_config_, std::move(data)); } void DecodeNow(scoped_refptr<media::DecoderBufferBase> data, @@ -136,26 +137,29 @@ void OnInitialized(bool success) { DCHECK(!initialized_); - DCHECK(initialized_callback_); + initialized_ = true; if (success) { - initialized_ = true; if (!decode_queue_.empty()) { auto& d = decode_queue_.front(); DecodeNow(std::move(d.first), std::move(d.second)); decode_queue_.pop(); } - } else { - LOG(ERROR) << "Failed to initialize FFmpegAudioDecoder"; - LOG(INFO) << "Config:"; - LOG(INFO) << "\tEncrypted: " - << (config_.is_encrypted() ? "true" : "false"); - LOG(INFO) << "\tCodec: " << config_.codec; - LOG(INFO) << "\tSample format: " << config_.sample_format; - LOG(INFO) << "\tChannels: " << config_.channel_number; - LOG(INFO) << "\tSample rate: " << config_.samples_per_second; + return; } - std::move(initialized_callback_).Run(initialized_); + error_ = true; + LOG(ERROR) << "Failed to initialize audio decoder"; + LOG(INFO) << "Config:"; + LOG(INFO) << "\tCodec: " << input_config_.codec; + LOG(INFO) << "\tSample format: " << input_config_.sample_format; + LOG(INFO) << "\tChannels: " << input_config_.channel_number; + LOG(INFO) << "\tSample rate: " << input_config_.samples_per_second; + + while (!decode_queue_.empty()) { + auto& d = decode_queue_.front(); + std::move(d.second).Run(kDecodeError, output_config_, std::move(d.first)); + decode_queue_.pop(); + } } void OnDecodeStatus(base::TimeDelta buffer_timestamp, @@ -170,13 +174,13 @@ if (status != ::media::DecodeStatus::OK) result_status = kDecodeError; decoded = base::MakeRefCounted<media::DecoderBufferAdapter>( - config_.id, base::MakeRefCounted<::media::DecoderBuffer>(0)); + output_config_.id, base::MakeRefCounted<::media::DecoderBuffer>(0)); } decoded_chunks_.clear(); decoded->set_timestamp(buffer_timestamp); base::WeakPtr<CastAudioDecoderImpl> self = weak_factory_.GetWeakPtr(); std::move(pending_decode_callback_) - .Run(result_status, config_, std::move(decoded)); + .Run(result_status, output_config_, std::move(decoded)); if (!self) return; // Return immediately if the decode callback deleted this. @@ -196,16 +200,16 @@ } void OnDecoderOutput(scoped_refptr<::media::AudioBuffer> decoded) { - if (decoded->sample_rate() != config_.samples_per_second) { + if (decoded->sample_rate() != output_config_.samples_per_second) { LOG(WARNING) << "sample_rate changed to " << decoded->sample_rate() - << " from " << config_.samples_per_second; - config_.samples_per_second = decoded->sample_rate(); + << " from " << output_config_.samples_per_second; + output_config_.samples_per_second = decoded->sample_rate(); } - if (decoded->channel_count() != config_.channel_number) { + if (decoded->channel_count() != output_config_.channel_number) { LOG(WARNING) << "channel_count changed to " << decoded->channel_count() - << " from " << config_.channel_number; - config_.channel_number = decoded->channel_count(); + << " from " << output_config_.channel_number; + output_config_.channel_number = decoded->channel_count(); decoded_bus_.reset(); } @@ -220,8 +224,8 @@ // Copy decoded data into an AudioBus for conversion. if (!decoded_bus_ || decoded_bus_->frames() < num_frames) { - decoded_bus_ = - ::media::AudioBus::Create(config_.channel_number, num_frames * 2); + decoded_bus_ = ::media::AudioBus::Create(output_config_.channel_number, + num_frames * 2); } int bus_frame_offset = 0; for (auto& chunk : decoded_chunks_) { @@ -257,22 +261,23 @@ result->set_duration(base::TimeDelta::FromMicroseconds( num_frames * base::Time::kMicrosecondsPerSecond / - config_.samples_per_second)); - return base::MakeRefCounted<media::DecoderBufferAdapter>(config_.id, + output_config_.samples_per_second)); + return base::MakeRefCounted<media::DecoderBufferAdapter>(output_config_.id, result); } ::media::NullMediaLog media_log_; const scoped_refptr<base::SingleThreadTaskRunner> task_runner_; - InitializedCallback initialized_callback_; OutputFormat output_format_; - bool initialized_; - media::AudioConfig config_; + bool initialized_ = false; + bool error_ = false; + media::AudioConfig input_config_; + media::AudioConfig output_config_; std::unique_ptr<::media::AudioDecoder> decoder_; base::queue<DecodeBufferCallbackPair> decode_queue_; - bool decode_pending_; + bool decode_pending_ = false; DecodeCallback pending_decode_callback_; std::vector<scoped_refptr<::media::AudioBuffer>> decoded_chunks_; @@ -290,12 +295,13 @@ std::unique_ptr<CastAudioDecoder> CastAudioDecoder::Create( scoped_refptr<base::SingleThreadTaskRunner> task_runner, const media::AudioConfig& config, - OutputFormat output_format, - InitializedCallback initialized_callback) { - std::unique_ptr<CastAudioDecoderImpl> decoder(new CastAudioDecoderImpl( - std::move(task_runner), std::move(initialized_callback), output_format)); - decoder->Initialize(config); - return std::move(decoder); + OutputFormat output_format) { + auto decoder = std::make_unique<CastAudioDecoderImpl>(std::move(task_runner), + output_format); + if (!decoder->Initialize(config)) { + decoder.reset(); + } + return decoder; } // static
diff --git a/chromecast/media/cma/decoder/cast_audio_decoder.h b/chromecast/media/cma/decoder/cast_audio_decoder.h index 30eaeb7..f6c45ee 100644 --- a/chromecast/media/cma/decoder/cast_audio_decoder.h +++ b/chromecast/media/cma/decoder/cast_audio_decoder.h
@@ -32,13 +32,8 @@ kOutputPlanarFloat, // Output planar float samples. }; - // The callback that is called when the decoder initialization is complete. - // |success| is true if initialization was successful; if |success| is false - // then the CastAudioDecoder instance is unusable and should be destroyed. - typedef base::OnceCallback<void(bool success)> InitializedCallback; - // Callback called when a buffer has been decoded. |config| is the actual - // config of the buffer, which may differ from the config indicated the the + // config of the buffer, which may differ from the config indicated by the // wrapper format. typedef base::OnceCallback<void( Status status, @@ -48,15 +43,11 @@ // Creates a CastAudioDecoder instance for the given |config|. Decoding must // occur on the same thread as |task_runner|. Returns an empty unique_ptr if - // the decoder could not be created. |initialized_callback| will be called - // once initialization completes (either successfully, or if it failed). - // The callback will not be called after the CastAudioDecoder instance is - // destroyed. + // the decoder could not be created. static std::unique_ptr<CastAudioDecoder> Create( scoped_refptr<base::SingleThreadTaskRunner> task_runner, const media::AudioConfig& config, - OutputFormat output_format, - InitializedCallback initialized_callback); + OutputFormat output_format); // Given a CastAudioDecoder::OutputFormat, return the size of each sample in // that OutputFormat in bytes. @@ -64,6 +55,10 @@ virtual ~CastAudioDecoder() = default; + // Returns the expected config of the next decoded audio. Note that the config + // may change as more audio is decoded. + virtual const AudioConfig& GetOutputConfig() const = 0; + // Converts encoded data to the |output_format|. Must be called on the same // thread as |task_runner|. Decoded data will be passed to |decode_callback|. // It is OK to call Decode before the |initialized_callback| has been called;
diff --git a/components/download/internal/common/download_job_factory.cc b/components/download/internal/common/download_job_factory.cc index fbb3c72..36c530e 100644 --- a/components/download/internal/common/download_job_factory.cc +++ b/components/download/internal/common/download_job_factory.cc
@@ -75,8 +75,14 @@ base::FeatureList::IsEnabled(features::kUseParallelRequestsForQUIC)); bool http_get_method = create_info.method == "GET" && create_info.url().SchemeIsHTTPOrHTTPS(); - bool partial_response_success = - download_item->GetReceivedSlices().empty() || create_info.offset != 0; + // If the file is empty, we always assume parallel download is supported. + // Otherwise, check if the download already has multiple slices and whether + // the http response offset is non-zero. + bool can_support_parallel_requests = + download_item->GetReceivedBytes() <= 0 || + (download_item->GetReceivedSlices().size() > 0 && + create_info.offset != 0); + bool range_support_allowed = create_info.accept_range == RangeRequestSupportType::kSupport || (base::FeatureList::IsEnabled( @@ -85,7 +91,7 @@ bool is_parallelizable = has_strong_validator && range_support_allowed && has_content_length && satisfy_min_file_size && satisfy_connection_type && http_get_method && - partial_response_success; + can_support_parallel_requests; RecordDownloadConnectionInfo(create_info.connection_info); if (!IsParallelDownloadEnabled()) @@ -123,7 +129,11 @@ RecordParallelDownloadCreationEvent( ParallelDownloadCreationEvent::FALLBACK_REASON_HTTP_METHOD); } - + if (!can_support_parallel_requests) { + RecordParallelDownloadCreationEvent( + ParallelDownloadCreationEvent:: + FALLBACK_REASON_RESUMPTION_WITHOUT_SLICES); + } return is_parallelizable; }
diff --git a/components/download/public/common/download_stats.h b/components/download/public/common/download_stats.h index 8d0e9868..1729552 100644 --- a/components/download/public/common/download_stats.h +++ b/components/download/public/common/download_stats.h
@@ -219,6 +219,9 @@ // Range support is unknown from the response. FALLBACK_REASON_UNKNOWN_RANGE_SUPPORT, + // Resumed download doesn't have any slices. + FALLBACK_REASON_RESUMPTION_WITHOUT_SLICES, + // Last entry of the enum. COUNT, };
diff --git a/components/keep_alive_registry/keep_alive_types.cc b/components/keep_alive_registry/keep_alive_types.cc index 582c3d3..68d4fb0 100644 --- a/components/keep_alive_registry/keep_alive_types.cc +++ b/components/keep_alive_registry/keep_alive_types.cc
@@ -25,6 +25,8 @@ return out << "LOGIN_DISPLAY_HOST_WEBUI"; case KeepAliveOrigin::PIN_MIGRATION: return out << "PIN_MIGRATION"; + case KeepAliveOrigin::REMOTE_DEBUGGING: + return out << "REMOTE_DEBUGGING"; case KeepAliveOrigin::NOTIFICATION: return out << "NOTIFICATION"; case KeepAliveOrigin::PENDING_NOTIFICATION_CLICK_EVENT:
diff --git a/components/keep_alive_registry/keep_alive_types.h b/components/keep_alive_registry/keep_alive_types.h index 22287cc..2ff1dfad 100644 --- a/components/keep_alive_registry/keep_alive_types.h +++ b/components/keep_alive_registry/keep_alive_types.h
@@ -31,6 +31,9 @@ LOGIN_DISPLAY_HOST_WEBUI, PIN_MIGRATION, + // c/b/devtools + REMOTE_DEBUGGING, + // c/b/extensions NATIVE_MESSAGING_HOST_ERROR_REPORT,
diff --git a/components/password_manager/core/browser/BUILD.gn b/components/password_manager/core/browser/BUILD.gn index ee64f8c..7e52ad35 100644 --- a/components/password_manager/core/browser/BUILD.gn +++ b/components/password_manager/core/browser/BUILD.gn
@@ -224,6 +224,7 @@ "ui/export_flow.h", "ui/export_progress_status.h", "ui/import_flow.h", + "ui/plaintext_reason.h", "ui/saved_passwords_presenter.cc", "ui/saved_passwords_presenter.h", "votes_uploader.cc",
diff --git a/components/password_manager/core/browser/ui/plaintext_reason.h b/components/password_manager/core/browser/ui/plaintext_reason.h new file mode 100644 index 0000000..fa0a533 --- /dev/null +++ b/components/password_manager/core/browser/ui/plaintext_reason.h
@@ -0,0 +1,19 @@ +// Copyright 2020 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef COMPONENTS_PASSWORD_MANAGER_CORE_BROWSER_UI_PLAINTEXT_REASON_H_ +#define COMPONENTS_PASSWORD_MANAGER_CORE_BROWSER_UI_PLAINTEXT_REASON_H_ + +namespace password_manager { + +// Possible reasons why a plaintext password was requested. +enum class PlaintextReason { + kView, + kCopy, + kEdit, +}; + +} // namespace password_manager + +#endif // COMPONENTS_PASSWORD_MANAGER_CORE_BROWSER_UI_PLAINTEXT_REASON_H_
diff --git a/components/performance_manager/worker_watcher.cc b/components/performance_manager/worker_watcher.cc index d105ffe..ce64c29 100644 --- a/components/performance_manager/worker_watcher.cc +++ b/components/performance_manager/worker_watcher.cc
@@ -12,7 +12,6 @@ #include "components/performance_manager/graph/worker_node_impl.h" #include "components/performance_manager/performance_manager_impl.h" #include "components/performance_manager/process_node_source.h" -#include "content/public/browser/shared_worker_instance.h" namespace performance_manager { @@ -142,20 +141,21 @@ } void WorkerWatcher::OnWorkerStarted( - const content::SharedWorkerInstance& instance, + content::SharedWorkerId shared_worker_id, int worker_process_id, const base::UnguessableToken& dev_tools_token) { auto worker_node = PerformanceManagerImpl::GetInstance()->CreateWorkerNode( browser_context_id_, WorkerNode::WorkerType::kShared, process_node_source_->GetProcessNode(worker_process_id), dev_tools_token); bool inserted = - shared_worker_nodes_.emplace(instance, std::move(worker_node)).second; + shared_worker_nodes_.emplace(shared_worker_id, std::move(worker_node)) + .second; DCHECK(inserted); } void WorkerWatcher::OnBeforeWorkerTerminated( - const content::SharedWorkerInstance& instance) { - auto it = shared_worker_nodes_.find(instance); + content::SharedWorkerId shared_worker_id) { + auto it = shared_worker_nodes_.find(shared_worker_id); DCHECK(it != shared_worker_nodes_.end()); auto worker_node = std::move(it->second); @@ -168,15 +168,16 @@ } void WorkerWatcher::OnClientAdded( - const content::SharedWorkerInstance& instance, + content::SharedWorkerId shared_worker_id, content::GlobalFrameRoutingId render_frame_host_id) { - AddClientFrame(GetSharedWorkerNode(instance), render_frame_host_id); + AddClientFrame(GetSharedWorkerNode(shared_worker_id), render_frame_host_id); } void WorkerWatcher::OnClientRemoved( - const content::SharedWorkerInstance& instance, + content::SharedWorkerId shared_worker_id, content::GlobalFrameRoutingId render_frame_host_id) { - RemoveClientFrame(GetSharedWorkerNode(instance), render_frame_host_id); + RemoveClientFrame(GetSharedWorkerNode(shared_worker_id), + render_frame_host_id); } void WorkerWatcher::AddClientFrame( @@ -306,8 +307,8 @@ } WorkerNodeImpl* WorkerWatcher::GetSharedWorkerNode( - const content::SharedWorkerInstance& instance) { - auto it = shared_worker_nodes_.find(instance); + content::SharedWorkerId shared_worker_id) { + auto it = shared_worker_nodes_.find(shared_worker_id); if (it == shared_worker_nodes_.end()) { NOTREACHED(); return nullptr;
diff --git a/components/performance_manager/worker_watcher.h b/components/performance_manager/worker_watcher.h index 507d798..f19e1f5 100644 --- a/components/performance_manager/worker_watcher.h +++ b/components/performance_manager/worker_watcher.h
@@ -17,10 +17,6 @@ #include "content/public/browser/global_routing_id.h" #include "content/public/browser/shared_worker_service.h" -namespace content { -class SharedWorkerInstance; -} - namespace performance_manager { class FrameNodeImpl; @@ -56,16 +52,16 @@ content::GlobalFrameRoutingId ancestor_render_frame_host_id) override; // content::SharedWorkerService::Observer: - void OnWorkerStarted(const content::SharedWorkerInstance& instance, + void OnWorkerStarted(content::SharedWorkerId shared_worker_id, int worker_process_id, const base::UnguessableToken& dev_tools_token) override; void OnBeforeWorkerTerminated( - const content::SharedWorkerInstance& instance) override; + content::SharedWorkerId shared_worker_id) override; void OnClientAdded( - const content::SharedWorkerInstance& instance, + content::SharedWorkerId shared_worker_id, content::GlobalFrameRoutingId render_frame_host_id) override; void OnClientRemoved( - const content::SharedWorkerInstance& instance, + content::SharedWorkerId shared_worker_id, content::GlobalFrameRoutingId render_frame_host_id) override; private: @@ -90,8 +86,7 @@ // Helper function to retrieve an existing shared worker node. WorkerNodeImpl* GetDedicatedWorkerNode( content::DedicatedWorkerId dedicated_worker_id); - WorkerNodeImpl* GetSharedWorkerNode( - const content::SharedWorkerInstance& instance); + WorkerNodeImpl* GetSharedWorkerNode(content::SharedWorkerId shared_worker_id); // The ID of the BrowserContext who owns the shared worker service. const std::string browser_context_id_; @@ -117,8 +112,8 @@ base::flat_map<content::DedicatedWorkerId, std::unique_ptr<WorkerNodeImpl>> dedicated_worker_nodes_; - // Maps each SharedWorkerInstance to its worker node. - base::flat_map<content::SharedWorkerInstance, std::unique_ptr<WorkerNodeImpl>> + // Maps each shared worker ID to its worker node. + base::flat_map<content::SharedWorkerId, std::unique_ptr<WorkerNodeImpl>> shared_worker_nodes_; // Maps each frame to the shared workers that this frame is a client of. This
diff --git a/components/performance_manager/worker_watcher_unittest.cc b/components/performance_manager/worker_watcher_unittest.cc index 147279d0..a61452e 100644 --- a/components/performance_manager/worker_watcher_unittest.cc +++ b/components/performance_manager/worker_watcher_unittest.cc
@@ -23,7 +23,6 @@ #include "components/performance_manager/graph/worker_node_impl.h" #include "components/performance_manager/performance_manager_impl.h" #include "components/performance_manager/process_node_source.h" -#include "content/public/browser/shared_worker_instance.h" #include "content/public/browser/shared_worker_service.h" #include "testing/gtest/include/gtest/gtest.h" @@ -65,7 +64,7 @@ void RemoveObserver(Observer* observer) override; void EnumerateDedicatedWorkers(Observer* observer) override; - // Starts a new shared worker and returns its instance. + // Starts a new dedicated worker and returns its ID. content::DedicatedWorkerId StartDedicatedWorker( int worker_process_id, content::GlobalFrameRoutingId client_render_frame_host_id); @@ -134,7 +133,7 @@ for (auto& observer : observer_list_) observer.OnBeforeWorkerTerminated(dedicated_worker_id, it->second); - // Remove the worker instance from the map. + // Remove the worker ID from the map. dedicated_worker_client_frame_.erase(it); } @@ -155,20 +154,20 @@ const std::string& name, const url::Origin& constructor_origin) override; - // Starts a new shared worker and returns its instance. - content::SharedWorkerInstance StartSharedWorker(int worker_process_id); + // Starts a new shared worker and returns its ID. + content::SharedWorkerId StartSharedWorker(int worker_process_id); // Stops a running shared worker. - void StopSharedWorker(const content::SharedWorkerInstance& instance); + void StopSharedWorker(content::SharedWorkerId shared_worker_id); // Adds a new frame client to an existing worker. void AddWorkerClient( - const content::SharedWorkerInstance& instance, + content::SharedWorkerId shared_worker_id, content::GlobalFrameRoutingId client_render_frame_host_id); // Removes an existing frame client from a worker. void RemoveWorkerClient( - const content::SharedWorkerInstance& instance, + content::SharedWorkerId shared_worker_id, content::GlobalFrameRoutingId client_render_frame_host_id); private: @@ -178,7 +177,7 @@ content::SharedWorkerId::Generator shared_worker_id_generator_; // Contains the set of clients for each running workers. - base::flat_map<content::SharedWorkerInstance, + base::flat_map<content::SharedWorkerId, base::flat_set<content::GlobalFrameRoutingId>> shared_worker_client_frames_; @@ -210,34 +209,29 @@ return false; } -content::SharedWorkerInstance TestSharedWorkerService::StartSharedWorker( +content::SharedWorkerId TestSharedWorkerService::StartSharedWorker( int worker_process_id) { - // Create a new SharedWorkerInstance and add it to the map. + // Create a new DedicatedWorkerId for the worker and add it to the map. + content::SharedWorkerId shared_worker_id = + shared_worker_id_generator_.GenerateNextId(); GURL worker_url = GenerateWorkerUrl(); - content::SharedWorkerInstance instance( - shared_worker_id_generator_.GenerateNextId(), worker_url, - blink::mojom::ScriptType::kClassic, - network::mojom::CredentialsMode::kSameOrigin, "SharedWorker", - url::Origin::Create(worker_url), "", - network::mojom::ContentSecurityPolicyType::kReport, - network::mojom::IPAddressSpace::kPublic, - blink::mojom::SharedWorkerCreationContextType::kSecure); - bool inserted = shared_worker_client_frames_.insert({instance, {}}).second; + bool inserted = + shared_worker_client_frames_.insert({shared_worker_id, {}}).second; DCHECK(inserted); // Notify observers. for (auto& observer : observer_list_) { - observer.OnWorkerStarted(instance, worker_process_id, + observer.OnWorkerStarted(shared_worker_id, worker_process_id, base::UnguessableToken::Create()); } - return instance; + return shared_worker_id; } void TestSharedWorkerService::StopSharedWorker( - const content::SharedWorkerInstance& instance) { - auto it = shared_worker_client_frames_.find(instance); + content::SharedWorkerId shared_worker_id) { + auto it = shared_worker_client_frames_.find(shared_worker_id); DCHECK(it != shared_worker_client_frames_.end()); // A stopping worker should have no clients. @@ -245,17 +239,17 @@ // Notify observers that the worker is terminating. for (auto& observer : observer_list_) - observer.OnBeforeWorkerTerminated(instance); + observer.OnBeforeWorkerTerminated(shared_worker_id); - // Remove the worker instance from the map. + // Remove the worker ID from the map. shared_worker_client_frames_.erase(it); } void TestSharedWorkerService::AddWorkerClient( - const content::SharedWorkerInstance& instance, + content::SharedWorkerId shared_worker_id, content::GlobalFrameRoutingId client_render_frame_host_id) { // Add the frame to the set of clients for this worker. - auto it = shared_worker_client_frames_.find(instance); + auto it = shared_worker_client_frames_.find(shared_worker_id); DCHECK(it != shared_worker_client_frames_.end()); base::flat_set<content::GlobalFrameRoutingId>& client_frames = it->second; @@ -264,18 +258,18 @@ // Then notify observers. for (auto& observer : observer_list_) - observer.OnClientAdded(instance, client_render_frame_host_id); + observer.OnClientAdded(shared_worker_id, client_render_frame_host_id); } void TestSharedWorkerService::RemoveWorkerClient( - const content::SharedWorkerInstance& instance, + content::SharedWorkerId shared_worker_id, content::GlobalFrameRoutingId client_render_frame_host_id) { // Notify observers. for (auto& observer : observer_list_) - observer.OnClientRemoved(instance, client_render_frame_host_id); + observer.OnClientRemoved(shared_worker_id, client_render_frame_host_id); // Then remove the frame from the set of clients of this worker. - auto it = shared_worker_client_frames_.find(instance); + auto it = shared_worker_client_frames_.find(shared_worker_id); DCHECK(it != shared_worker_client_frames_.end()); base::flat_set<content::GlobalFrameRoutingId>& client_frames = it->second; @@ -486,8 +480,7 @@ // Retrieves an existing worker node. WorkerNodeImpl* GetDedicatedWorkerNode( content::DedicatedWorkerId dedicated_worker_id); - WorkerNodeImpl* GetSharedWorkerNode( - const content::SharedWorkerInstance& instance); + WorkerNodeImpl* GetSharedWorkerNode(content::SharedWorkerId shared_worker_id); PerformanceManagerImpl* performance_manager() { return performance_manager_.get(); @@ -570,8 +563,8 @@ } WorkerNodeImpl* WorkerWatcherTest::GetSharedWorkerNode( - const content::SharedWorkerInstance& instance) { - return worker_watcher_->GetSharedWorkerNode(instance); + content::SharedWorkerId shared_worker_id) { + return worker_watcher_->GetSharedWorkerNode(shared_worker_id); } // This test creates one dedicated worker. @@ -619,17 +612,17 @@ process_node_source()->GetProcessNode(render_process_id)); // Create the worker. - content::SharedWorkerInstance shared_worker_instance = + content::SharedWorkerId shared_worker_id = shared_worker_service()->StartSharedWorker(render_process_id); // Connect the frame to the worker. - shared_worker_service()->AddWorkerClient(shared_worker_instance, + shared_worker_service()->AddWorkerClient(shared_worker_id, render_frame_host_id); // Check expectations on the graph. CallOnGraphAndWait(base::BindLambdaForTesting( [process_node = process_node_source()->GetProcessNode(render_process_id), - worker_node = GetSharedWorkerNode(shared_worker_instance), + worker_node = GetSharedWorkerNode(shared_worker_id), client_frame_node = frame_node_source()->GetFrameNode( render_frame_host_id)](GraphImpl* graph) { EXPECT_TRUE(graph->NodeInGraph(worker_node)); @@ -639,9 +632,9 @@ })); // Disconnect and clean up the worker. - shared_worker_service()->RemoveWorkerClient(shared_worker_instance, + shared_worker_service()->RemoveWorkerClient(shared_worker_id, render_frame_host_id); - shared_worker_service()->StopSharedWorker(shared_worker_instance); + shared_worker_service()->StopSharedWorker(shared_worker_id); } TEST_F(WorkerWatcherTest, SharedWorkerCrossProcessClient) { @@ -654,18 +647,18 @@ // Create the worker in a different process. int worker_process_id = process_node_source()->CreateProcessNode(); - content::SharedWorkerInstance shared_worker_instance = + content::SharedWorkerId shared_worker_id = shared_worker_service()->StartSharedWorker(worker_process_id); // Connect the frame to the worker. - shared_worker_service()->AddWorkerClient(shared_worker_instance, + shared_worker_service()->AddWorkerClient(shared_worker_id, render_frame_host_id); // Check expectations on the graph. CallOnGraphAndWait(base::BindLambdaForTesting( [worker_process_node = process_node_source()->GetProcessNode(worker_process_id), - worker_node = GetSharedWorkerNode(shared_worker_instance), + worker_node = GetSharedWorkerNode(shared_worker_id), client_process_node = process_node_source()->GetProcessNode(frame_process_id), client_frame_node = frame_node_source()->GetFrameNode( @@ -677,16 +670,16 @@ })); // Disconnect and clean up the worker. - shared_worker_service()->RemoveWorkerClient(shared_worker_instance, + shared_worker_service()->RemoveWorkerClient(shared_worker_id, render_frame_host_id); - shared_worker_service()->StopSharedWorker(shared_worker_instance); + shared_worker_service()->StopSharedWorker(shared_worker_id); } TEST_F(WorkerWatcherTest, OneSharedWorkerTwoClients) { int render_process_id = process_node_source()->CreateProcessNode(); // Create the worker. - content::SharedWorkerInstance shared_worker_instance = + content::SharedWorkerId shared_worker_id = shared_worker_service()->StartSharedWorker(render_process_id); // Create 2 client frame nodes and connect them to the worker. @@ -694,19 +687,19 @@ frame_node_source()->CreateFrameNode( render_process_id, process_node_source()->GetProcessNode(render_process_id)); - shared_worker_service()->AddWorkerClient(shared_worker_instance, + shared_worker_service()->AddWorkerClient(shared_worker_id, render_frame_host_id_1); content::GlobalFrameRoutingId render_frame_host_id_2 = frame_node_source()->CreateFrameNode( render_process_id, process_node_source()->GetProcessNode(render_process_id)); - shared_worker_service()->AddWorkerClient(shared_worker_instance, + shared_worker_service()->AddWorkerClient(shared_worker_id, render_frame_host_id_2); // Check expectations on the graph. CallOnGraphAndWait(base::BindLambdaForTesting( - [worker_node = GetSharedWorkerNode(shared_worker_instance), + [worker_node = GetSharedWorkerNode(shared_worker_id), client_frame_node_1 = frame_node_source()->GetFrameNode(render_frame_host_id_1), client_frame_node_2 = frame_node_source()->GetFrameNode( @@ -722,11 +715,11 @@ })); // Disconnect and clean up the worker. - shared_worker_service()->RemoveWorkerClient(shared_worker_instance, + shared_worker_service()->RemoveWorkerClient(shared_worker_id, render_frame_host_id_1); - shared_worker_service()->RemoveWorkerClient(shared_worker_instance, + shared_worker_service()->RemoveWorkerClient(shared_worker_id, render_frame_host_id_2); - shared_worker_service()->StopSharedWorker(shared_worker_instance); + shared_worker_service()->StopSharedWorker(shared_worker_id); } TEST_F(WorkerWatcherTest, OneClientTwoSharedWorkers) { @@ -739,20 +732,20 @@ process_node_source()->GetProcessNode(render_process_id)); // Create the 2 workers and connect them to the frame. - content::SharedWorkerInstance shared_worker_instance_1 = + content::SharedWorkerId shared_worker_id_1 = shared_worker_service()->StartSharedWorker(render_process_id); - shared_worker_service()->AddWorkerClient(shared_worker_instance_1, + shared_worker_service()->AddWorkerClient(shared_worker_id_1, render_frame_host_id); - content::SharedWorkerInstance shared_worker_instance_2 = + content::SharedWorkerId shared_worker_id_2 = shared_worker_service()->StartSharedWorker(render_process_id); - shared_worker_service()->AddWorkerClient(shared_worker_instance_2, + shared_worker_service()->AddWorkerClient(shared_worker_id_2, render_frame_host_id); // Check expectations on the graph. CallOnGraphAndWait(base::BindLambdaForTesting( - [worker_node_1 = GetSharedWorkerNode(shared_worker_instance_1), - worker_node_2 = GetSharedWorkerNode(shared_worker_instance_2), + [worker_node_1 = GetSharedWorkerNode(shared_worker_id_1), + worker_node_2 = GetSharedWorkerNode(shared_worker_id_2), client_frame_node = frame_node_source()->GetFrameNode( render_frame_host_id)](GraphImpl* graph) { // Check worker 1. @@ -769,13 +762,13 @@ })); // Disconnect and clean up the workers. - shared_worker_service()->RemoveWorkerClient(shared_worker_instance_1, + shared_worker_service()->RemoveWorkerClient(shared_worker_id_1, render_frame_host_id); - shared_worker_service()->StopSharedWorker(shared_worker_instance_1); + shared_worker_service()->StopSharedWorker(shared_worker_id_1); - shared_worker_service()->RemoveWorkerClient(shared_worker_instance_2, + shared_worker_service()->RemoveWorkerClient(shared_worker_id_2, render_frame_host_id); - shared_worker_service()->StopSharedWorker(shared_worker_instance_2); + shared_worker_service()->StopSharedWorker(shared_worker_id_2); } TEST_F(WorkerWatcherTest, FrameDestroyed) { @@ -791,17 +784,17 @@ content::DedicatedWorkerId dedicated_worker_id = dedicated_worker_service()->StartDedicatedWorker(render_process_id, render_frame_host_id); - content::SharedWorkerInstance shared_worker_instance = + content::SharedWorkerId shared_worker_id = shared_worker_service()->StartSharedWorker(render_process_id); // Connect the frame to the shared worker. - shared_worker_service()->AddWorkerClient(shared_worker_instance, + shared_worker_service()->AddWorkerClient(shared_worker_id, render_frame_host_id); // Check that everything is wired up correctly. CallOnGraphAndWait(base::BindLambdaForTesting( [dedicated_worker_node = GetDedicatedWorkerNode(dedicated_worker_id), - shared_worker_node = GetSharedWorkerNode(shared_worker_instance), + shared_worker_node = GetSharedWorkerNode(shared_worker_id), client_frame_node = frame_node_source()->GetFrameNode( render_frame_host_id)](GraphImpl* graph) { EXPECT_TRUE(graph->NodeInGraph(dedicated_worker_node)); @@ -818,7 +811,7 @@ CallOnGraphAndWait(base::BindLambdaForTesting( [dedicated_worker_node = GetDedicatedWorkerNode(dedicated_worker_id), shared_worker_node = - GetSharedWorkerNode(shared_worker_instance)](GraphImpl* graph) { + GetSharedWorkerNode(shared_worker_id)](GraphImpl* graph) { EXPECT_TRUE(graph->NodeInGraph(dedicated_worker_node)); EXPECT_TRUE(graph->NodeInGraph(shared_worker_node)); EXPECT_TRUE(dedicated_worker_node->client_frames().empty()); @@ -826,9 +819,9 @@ })); // The watcher is still expecting a worker removed notification. - shared_worker_service()->RemoveWorkerClient(shared_worker_instance, + shared_worker_service()->RemoveWorkerClient(shared_worker_id, render_frame_host_id); - shared_worker_service()->StopSharedWorker(shared_worker_instance); + shared_worker_service()->StopSharedWorker(shared_worker_id); dedicated_worker_service()->StopDedicatedWorker(dedicated_worker_id); }
diff --git a/components/permissions/BUILD.gn b/components/permissions/BUILD.gn index 873e807..4067cac 100644 --- a/components/permissions/BUILD.gn +++ b/components/permissions/BUILD.gn
@@ -61,6 +61,8 @@ "test/mock_permission_prompt_factory.h", "test/mock_permission_request.cc", "test/mock_permission_request.h", + "test/permission_request_observer.cc", + "test/permission_request_observer.h", "test/test_permissions_client.cc", "test/test_permissions_client.h", ]
diff --git a/components/permissions/test/permission_request_observer.cc b/components/permissions/test/permission_request_observer.cc new file mode 100644 index 0000000..5a38a98 --- /dev/null +++ b/components/permissions/test/permission_request_observer.cc
@@ -0,0 +1,25 @@ +// Copyright 2020 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "components/permissions/test/permission_request_observer.h" + +namespace permissions { + +PermissionRequestObserver::PermissionRequestObserver( + content::WebContents* web_contents) { + observer_.Add(PermissionRequestManager::FromWebContents(web_contents)); +} + +PermissionRequestObserver::~PermissionRequestObserver() = default; + +void PermissionRequestObserver::Wait() { + loop_.Run(); +} + +void PermissionRequestObserver::OnBubbleAdded() { + request_shown_ = true; + loop_.Quit(); +} + +} // namespace permissions
diff --git a/components/permissions/test/permission_request_observer.h b/components/permissions/test/permission_request_observer.h new file mode 100644 index 0000000..69d1a72 --- /dev/null +++ b/components/permissions/test/permission_request_observer.h
@@ -0,0 +1,41 @@ +// Copyright 2020 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef COMPONENTS_PERMISSIONS_TEST_PERMISSION_REQUEST_OBSERVER_H_ +#define COMPONENTS_PERMISSIONS_TEST_PERMISSION_REQUEST_OBSERVER_H_ + +#include "base/run_loop.h" +#include "base/scoped_observer.h" +#include "components/permissions/permission_request_manager.h" + +namespace permissions { + +// Observer for use in tests that want to detect whether a permission request +// was shown. Can be used in a blocking or non-blocking way. +class PermissionRequestObserver : public PermissionRequestManager::Observer { + public: + explicit PermissionRequestObserver(content::WebContents* web_contents); + PermissionRequestObserver(const PermissionRequestObserver&) = delete; + PermissionRequestObserver& operator=(const PermissionRequestObserver&) = + delete; + ~PermissionRequestObserver() override; + + bool request_shown() const { return request_shown_; } + + // Blocks until a request is shown. + void Wait(); + + // PermissionRequestManager::Observer: + void OnBubbleAdded() override; + + private: + ScopedObserver<PermissionRequestManager, PermissionRequestManager::Observer> + observer_{this}; + base::RunLoop loop_; + bool request_shown_ = false; +}; + +} // namespace permissions + +#endif // COMPONENTS_PERMISSIONS_TEST_PERMISSION_REQUEST_OBSERVER_H_
diff --git a/components/remote_cocoa/app_shim/browser_native_widget_window_mac.mm b/components/remote_cocoa/app_shim/browser_native_widget_window_mac.mm index 1ffb647..cf88f696 100644 --- a/components/remote_cocoa/app_shim/browser_native_widget_window_mac.mm +++ b/components/remote_cocoa/app_shim/browser_native_widget_window_mac.mm
@@ -53,12 +53,6 @@ return YES; } -// The base implementation justs tests [self class] == [NSThemeFrame class]. -- (BOOL)_shouldFlipTrafficLightsForRTL API_AVAILABLE(macos(10.12)) { - return [[self window] windowTitlebarLayoutDirection] == - NSUserInterfaceLayoutDirectionRightToLeft; -} - // On 10.10, this prevents the window server from treating the title bar as an // unconditionally-draggable region, and allows -[BridgedContentView hitTest:] // to choose case-by-case whether to take a mouse event or let it turn into a
diff --git a/components/remote_cocoa/app_shim/native_widget_mac_nswindow.mm b/components/remote_cocoa/app_shim/native_widget_mac_nswindow.mm index 9117bd3..c10c6633 100644 --- a/components/remote_cocoa/app_shim/native_widget_mac_nswindow.mm +++ b/components/remote_cocoa/app_shim/native_widget_mac_nswindow.mm
@@ -65,6 +65,11 @@ - (BOOL)usesCustomDrawing { return NO; } +// The base implementation just tests [self class] == [NSThemeFrame class]. +- (BOOL)_shouldFlipTrafficLightsForRTL API_AVAILABLE(macos(10.12)) { + return [[self window] windowTitlebarLayoutDirection] == + NSUserInterfaceLayoutDirectionRightToLeft; +} @end @implementation NativeWidgetMacNSWindowBorderlessFrame
diff --git a/components/safe_browsing/content/web_ui/safe_browsing_ui.cc b/components/safe_browsing/content/web_ui/safe_browsing_ui.cc index e38af28a..c57483c 100644 --- a/components/safe_browsing/content/web_ui/safe_browsing_ui.cc +++ b/components/safe_browsing/content/web_ui/safe_browsing_ui.cc
@@ -1338,18 +1338,6 @@ if (response.has_malware_scan_verdict()) { base::DictionaryValue malware_verdict; - switch (response.malware_scan_verdict().status()) { - case MalwareDeepScanningVerdict::STATUS_UNKNOWN: - malware_verdict.SetStringKey("status", "STATUS_UNKNOWN"); - break; - case MalwareDeepScanningVerdict::SUCCESS: - malware_verdict.SetStringKey("status", "SUCCESS"); - break; - case MalwareDeepScanningVerdict::FAILURE: - malware_verdict.SetStringKey("status", "FAILURE"); - break; - } - switch (response.malware_scan_verdict().verdict()) { case MalwareDeepScanningVerdict::VERDICT_UNSPECIFIED: malware_verdict.SetStringKey("verdict", "VERDICT_UNSPECIFIED"); @@ -1363,6 +1351,9 @@ case MalwareDeepScanningVerdict::MALWARE: malware_verdict.SetStringKey("verdict", "MALWARE"); break; + case MalwareDeepScanningVerdict::SCAN_FAILURE: + malware_verdict.SetStringKey("verdict", "SCAN_FAILURE"); + break; } response_dict.SetKey("malware_scan_verdict", std::move(malware_verdict));
diff --git a/components/safe_browsing/core/proto/webprotect.proto b/components/safe_browsing/core/proto/webprotect.proto index 02d39da9..c283525 100644 --- a/components/safe_browsing/core/proto/webprotect.proto +++ b/components/safe_browsing/core/proto/webprotect.proto
@@ -62,19 +62,14 @@ // Malware-specific response given back for scanned content. message MalwareDeepScanningVerdict { - // The status of the malware verdict. - enum Status { - STATUS_UNKNOWN = 0; - SUCCESS = 1; - FAILURE = 2; - } - optional Status status = 2; + reserved 2; enum Verdict { VERDICT_UNSPECIFIED = 0; CLEAN = 1; UWS = 2; MALWARE = 3; + SCAN_FAILURE = 4; } // Verdict given to scanned content. optional Verdict verdict = 1;
diff --git a/components/schema_org/BUILD.gn b/components/schema_org/BUILD.gn index f8eadfb..8eb8ef1 100644 --- a/components/schema_org/BUILD.gn +++ b/components/schema_org/BUILD.gn
@@ -4,12 +4,17 @@ source_set("unit_tests") { testonly = true - sources = [ "generate_schema_org_code_unittest.cc" ] + sources = [ + "extractor_unittest.cc", + "generate_schema_org_code_unittest.cc", + ] deps = [ + ":extractor", ":generate_schema_org_code", ":schema_org_properties", "//base", + "//components/schema_org/common:mojom", "//testing/gmock", "//testing/gtest", ] @@ -55,3 +60,16 @@ deps = [ ":generate_schema_org_code" ] } + +static_library("extractor") { + sources = [ + "extractor.cc", + "extractor.h", + ] + + deps = [ + "//components/schema_org:generate_schema_org_code", + "//components/schema_org:schema_org_properties", + "//components/schema_org/common:mojom", + ] +}
diff --git a/components/schema_org/extractor.cc b/components/schema_org/extractor.cc new file mode 100644 index 0000000..ba48e2c2 --- /dev/null +++ b/components/schema_org/extractor.cc
@@ -0,0 +1,231 @@ +// Copyright 2020 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "components/schema_org/extractor.h" + +#include <algorithm> +#include <memory> +#include <unordered_set> +#include <utility> +#include <vector> + +#include "base/json/json_parser.h" +#include "base/strings/string_number_conversions.h" +#include "base/values.h" +#include "components/schema_org/common/metadata.mojom.h" +#include "components/schema_org/schema_org_entity_names.h" + +namespace schema_org { + +namespace { + +// App Indexing enforces a max nesting depth of 5. Our top level message +// corresponds to the WebPage, so this only leaves 4 more levels. We will parse +// entities up to this depth, and ignore any further nesting. If an object at +// the max nesting depth has a property corresponding to an entity, that +// property will be dropped. Note that we will still parse json-ld blocks deeper +// than this, but it won't be passed to App Indexing. +constexpr int kMaxDepth = 5; +// Some strings are very long, and we don't currently use those, so limit string +// length to something reasonable to avoid undue pressure on Icing. Note that +// App Indexing supports strings up to length 20k. +constexpr size_t kMaxStringLength = 200; +// Enforced by App Indexing, so stop processing early if possible. +constexpr size_t kMaxNumFields = 25; +// Enforced by App Indexing, so stop processing early if possible. +constexpr size_t kMaxRepeatedSize = 100; + +constexpr char kJSONLDKeyType[] = "@type"; + +const std::unordered_set<std::string> kSupportedTypes{ + entity::kVideoObject, entity::kMovie, entity::kTVEpisode, entity::kTVSeason, + entity::kTVSeries}; +bool IsSupportedType(const std::string& type) { + return kSupportedTypes.find(type) != kSupportedTypes.end(); +} + +void ExtractEntity(base::DictionaryValue*, mojom::Entity&, int recursionLevel); + +bool ParseRepeatedValue(base::Value::ListView& arr, + mojom::Values& values, + int recursionLevel) { + if (arr.empty()) { + return false; + } + + bool is_first_item = true; + base::Value::Type type = base::Value::Type::NONE; + + for (size_t j = 0; j < std::min(arr.size(), kMaxRepeatedSize); ++j) { + auto& listItem = arr[j]; + if (is_first_item) { + is_first_item = false; + type = listItem.type(); + switch (type) { + case base::Value::Type::BOOLEAN: + values.set_bool_values(std::vector<bool>()); + break; + case base::Value::Type::INTEGER: + values.set_long_values(std::vector<int64_t>()); + break; + case base::Value::Type::DOUBLE: + // App Indexing doesn't support double type, so just encode its + // decimal value as a string instead. + values.set_string_values(std::vector<std::string>()); + break; + case base::Value::Type::STRING: + values.set_string_values(std::vector<std::string>()); + break; + case base::Value::Type::DICTIONARY: + if (recursionLevel + 1 >= kMaxDepth) { + return false; + } + values.set_entity_values(std::vector<mojom::EntityPtr>()); + break; + case base::Value::Type::LIST: + // App Indexing doesn't support nested arrays. + return false; + default: + // Unknown value type. + return false; + } + } + + if (listItem.type() != type) { + // App Indexing doesn't support mixed types. If there are mixed + // types in the parsed object, we will drop the property. + return false; + } + switch (listItem.type()) { + case base::Value::Type::BOOLEAN: { + bool v; + listItem.GetAsBoolean(&v); + values.get_bool_values().push_back(v); + } break; + case base::Value::Type::INTEGER: { + int v = listItem.GetInt(); + values.get_long_values().push_back(v); + } break; + case base::Value::Type::DOUBLE: { + // App Indexing doesn't support double type, so just encode its decimal + // value as a string instead. + double v = listItem.GetDouble(); + std::string s = base::NumberToString(v); + s = s.substr(0, kMaxStringLength); + values.get_string_values().push_back(s); + } break; + case base::Value::Type::STRING: { + std::string v = listItem.GetString(); + v = v.substr(0, kMaxStringLength); + values.get_string_values().push_back(v); + } break; + case base::Value::Type::DICTIONARY: { + values.get_entity_values().push_back(mojom::Entity::New()); + + base::DictionaryValue* dict_value = nullptr; + if (listItem.GetAsDictionary(&dict_value)) { + ExtractEntity(dict_value, *(values.get_entity_values().at(j)), + recursionLevel + 1); + } + } break; + default: + break; + } + } + return true; +} + +void ExtractEntity(base::DictionaryValue* val, + mojom::Entity& entity, + int recursionLevel) { + if (recursionLevel >= kMaxDepth) { + return; + } + + std::string type = ""; + val->GetString(kJSONLDKeyType, &type); + if (type == "") { + type = "Thing"; + } + entity.type = type; + for (const auto& entry : val->DictItems()) { + if (entity.properties.size() >= kMaxNumFields) { + break; + } + mojom::PropertyPtr property = mojom::Property::New(); + property->name = entry.first; + if (property->name == kJSONLDKeyType) { + continue; + } + property->values = mojom::Values::New(); + + if (entry.second.is_bool()) { + bool v; + val->GetBoolean(entry.first, &v); + property->values->set_bool_values({v}); + } else if (entry.second.is_int()) { + int v; + val->GetInteger(entry.first, &v); + property->values->set_long_values({v}); + } else if (entry.second.is_double()) { + double v; + val->GetDouble(entry.first, &v); + std::string s = base::NumberToString(v); + s = s.substr(0, kMaxStringLength); + property->values->set_string_values({s}); + } else if (entry.second.is_string()) { + std::string v; + val->GetString(entry.first, &v); + v = v.substr(0, kMaxStringLength); + property->values->set_string_values({v}); + } else if (entry.second.is_dict()) { + if (recursionLevel + 1 >= kMaxDepth) { + continue; + } + property->values->set_entity_values(std::vector<mojom::EntityPtr>()); + property->values->get_entity_values().push_back(mojom::Entity::New()); + + base::DictionaryValue* dict_value = nullptr; + if (!entry.second.GetAsDictionary(&dict_value)) { + continue; + } + ExtractEntity(dict_value, *(property->values->get_entity_values().at(0)), + recursionLevel + 1); + } else if (entry.second.is_list()) { + base::Value::ListView list_view = entry.second.GetList(); + if (!ParseRepeatedValue(list_view, *(property->values), recursionLevel)) { + continue; + } + } + + entity.properties.push_back(std::move(property)); + } +} + +// Extract a JSONObject which corresponds to a single (possibly nested) entity. +mojom::EntityPtr ExtractTopLevelEntity(base::DictionaryValue* val) { + mojom::EntityPtr entity = mojom::Entity::New(); + std::string type; + val->GetString(kJSONLDKeyType, &type); + if (!IsSupportedType(type)) { + return nullptr; + } + ExtractEntity(val, *entity, 0); + return entity; +} + +} // namespace + +mojom::EntityPtr Extractor::Extract(const std::string& content) { + base::Optional<base::Value> value(base::JSONReader::Read(content)); + base::DictionaryValue* dict_value = nullptr; + + if (!value || !value.value().GetAsDictionary(&dict_value)) { + return nullptr; + } + + return ExtractTopLevelEntity(dict_value); +} + +} // namespace schema_org
diff --git a/components/schema_org/extractor.h b/components/schema_org/extractor.h new file mode 100644 index 0000000..6f0337a --- /dev/null +++ b/components/schema_org/extractor.h
@@ -0,0 +1,22 @@ +// Copyright 2020 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef COMPONENTS_SCHEMA_ORG_EXTRACTOR_H_ +#define COMPONENTS_SCHEMA_ORG_EXTRACTOR_H_ + +#include <string> + +#include "components/schema_org/common/metadata.mojom-forward.h" + +namespace schema_org { + +// Extract structured metadata (schema.org in JSON-LD) from text content. +class Extractor { + public: + static mojom::EntityPtr Extract(const std::string& content); +}; + +} // namespace schema_org + +#endif // COMPONENTS_SCHEMA_ORG_EXTRACTOR_H_
diff --git a/components/schema_org/extractor_unittest.cc b/components/schema_org/extractor_unittest.cc new file mode 100644 index 0000000..167d43a --- /dev/null +++ b/components/schema_org/extractor_unittest.cc
@@ -0,0 +1,399 @@ +// Copyright 2020 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "components/schema_org/extractor.h" + +#include <memory> +#include <utility> +#include <vector> + +#include "base/strings/string_number_conversions.h" +#include "components/schema_org/common/metadata.mojom.h" +#include "testing/gtest/include/gtest/gtest.h" + +namespace schema_org { + +using mojom::Entity; +using mojom::EntityPtr; +using mojom::Property; +using mojom::PropertyPtr; +using mojom::Values; +using mojom::ValuesPtr; + +class SchemaOrgExtractorTest : public testing::Test { + public: + SchemaOrgExtractorTest() = default; + + protected: + EntityPtr Extract(const std::string& text) { + return Extractor::Extract(text); + } + + PropertyPtr CreateStringProperty(const std::string& name, + const std::string& value); + + PropertyPtr CreateBooleanProperty(const std::string& name, const bool& value); + + PropertyPtr CreateLongProperty(const std::string& name, const int64_t& value); + + PropertyPtr CreateEntityProperty(const std::string& name, EntityPtr value); +}; + +PropertyPtr SchemaOrgExtractorTest::CreateStringProperty( + const std::string& name, + const std::string& value) { + PropertyPtr property = Property::New(); + property->name = name; + property->values = Values::New(); + property->values->set_string_values({value}); + return property; +} + +PropertyPtr SchemaOrgExtractorTest::CreateBooleanProperty( + const std::string& name, + const bool& value) { + PropertyPtr property = Property::New(); + property->name = name; + property->values = Values::New(); + property->values->set_bool_values({value}); + return property; +} + +PropertyPtr SchemaOrgExtractorTest::CreateLongProperty(const std::string& name, + const int64_t& value) { + PropertyPtr property = Property::New(); + property->name = name; + property->values = Values::New(); + property->values->set_long_values({value}); + return property; +} + +PropertyPtr SchemaOrgExtractorTest::CreateEntityProperty( + const std::string& name, + EntityPtr value) { + PropertyPtr property = Property::New(); + property->name = name; + property->values = Values::New(); + property->values->set_entity_values(std::vector<EntityPtr>()); + property->values->get_entity_values().push_back(std::move(value)); + return property; +} + +TEST_F(SchemaOrgExtractorTest, Empty) { + ASSERT_TRUE(Extract("").is_null()); +} + +TEST_F(SchemaOrgExtractorTest, Basic) { + EntityPtr extracted = + Extract("{\"@type\": \"VideoObject\", \"name\": \"a video!\"}"); + ASSERT_FALSE(extracted.is_null()); + + EntityPtr expected = Entity::New(); + expected->type = "VideoObject"; + expected->properties.push_back(CreateStringProperty("name", "a video!")); + + EXPECT_EQ(expected, extracted); +} + +TEST_F(SchemaOrgExtractorTest, booleanValue) { + EntityPtr extracted = + Extract("{\"@type\": \"VideoObject\", \"requiresSubscription\": true }"); + ASSERT_FALSE(extracted.is_null()); + + EntityPtr expected = Entity::New(); + expected->type = "VideoObject"; + expected->properties.push_back( + CreateBooleanProperty("requiresSubscription", true)); + + EXPECT_EQ(expected, extracted); +} + +TEST_F(SchemaOrgExtractorTest, longValue) { + EntityPtr extracted = + Extract("{\"@type\": \"VideoObject\", \"position\": 111 }"); + ASSERT_FALSE(extracted.is_null()); + + EntityPtr expected = Entity::New(); + expected->type = "VideoObject"; + expected->properties.push_back(CreateLongProperty("position", 111)); + + EXPECT_EQ(expected, extracted); +} + +TEST_F(SchemaOrgExtractorTest, doubleValue) { + EntityPtr extracted = + Extract("{\"@type\": \"VideoObject\", \"width\": 111.5 }"); + ASSERT_FALSE(extracted.is_null()); + + EntityPtr expected = Entity::New(); + expected->type = "VideoObject"; + expected->properties.push_back(CreateStringProperty("width", "111.5")); + + EXPECT_EQ(expected, extracted); +} + +TEST_F(SchemaOrgExtractorTest, NestedEntities) { + EntityPtr extracted = Extract( + "{\"@type\": \"VideoObject\", \"actor\": { \"@type\": \"Person\", " + "\"name\": \"Talented Actor\" } }"); + ASSERT_FALSE(extracted.is_null()); + + EntityPtr expected = Entity::New(); + expected->type = "VideoObject"; + + EntityPtr nested = Entity::New(); + nested->type = "Person"; + nested->properties.push_back(CreateStringProperty("name", "Talented Actor")); + + expected->properties.push_back( + CreateEntityProperty("actor", std::move(nested))); + + EXPECT_EQ(expected, extracted); +} + +TEST_F(SchemaOrgExtractorTest, RepeatedProperty) { + EntityPtr extracted = Extract( + "{\"@type\": \"VideoObject\", \"name\": [\"Movie Title\", \"The Second " + "One\"] }"); + ASSERT_FALSE(extracted.is_null()); + + EntityPtr expected = Entity::New(); + expected->type = "VideoObject"; + + PropertyPtr name = Property::New(); + name->name = "name"; + name->values = Values::New(); + std::vector<std::string> nameValues; + nameValues.push_back("Movie Title"); + nameValues.push_back("The Second One"); + name->values->set_string_values(nameValues); + + expected->properties.push_back(std::move(name)); + + EXPECT_EQ(expected, extracted); +} + +TEST_F(SchemaOrgExtractorTest, RepeatedObject) { + EntityPtr extracted = Extract( + "{\"@type\": \"VideoObject\", \"actor\": [ {\"@type\": \"Person\", " + "\"name\": \"Talented " + "Actor\"}, {\"@type\": \"Person\", \"name\": \"Famous Actor\"} ] }"); + + ASSERT_FALSE(extracted.is_null()); + + EntityPtr expected = Entity::New(); + expected->type = "VideoObject"; + PropertyPtr actorProperty = Property::New(); + actorProperty->name = "actor"; + actorProperty->values = Values::New(); + actorProperty->values->set_entity_values(std::vector<EntityPtr>()); + + EntityPtr nested1 = Entity::New(); + nested1->type = "Person"; + nested1->properties.push_back(CreateStringProperty("name", "Talented Actor")); + actorProperty->values->get_entity_values().push_back(std::move(nested1)); + + EntityPtr nested2 = Entity::New(); + nested2->type = "Person"; + nested2->properties.push_back(CreateStringProperty("name", "Famous Actor")); + actorProperty->values->get_entity_values().push_back(std::move(nested2)); + + expected->properties.push_back(std::move(actorProperty)); + + EXPECT_EQ(expected, extracted); +} + +TEST_F(SchemaOrgExtractorTest, TruncateLongString) { + std::string maxLengthString = ""; + for (int i = 0; i < 200; ++i) { + maxLengthString += "a"; + } + std::string tooLongString; + tooLongString.append(maxLengthString); + tooLongString.append("a"); + + EntityPtr extracted = Extract("{\"@type\": \"VideoObject\", \"name\": \"" + + tooLongString + "\"}"); + ASSERT_FALSE(extracted.is_null()); + + EntityPtr expected = Entity::New(); + expected->type = "VideoObject"; + expected->properties.push_back(CreateStringProperty("name", maxLengthString)); + + EXPECT_EQ(expected, extracted); +} + +TEST_F(SchemaOrgExtractorTest, EnforceTypeExists) { + EntityPtr extracted = Extract("{\"name\": \"a video!\"}"); + ASSERT_TRUE(extracted.is_null()); +} + +TEST_F(SchemaOrgExtractorTest, UnhandledTypeIgnored) { + EntityPtr extracted = + Extract("{\"@type\": \"UnsupportedType\", \"name\": \"a video!\"}"); + ASSERT_TRUE(extracted.is_null()); +} + +TEST_F(SchemaOrgExtractorTest, TruncateTooManyValuesInField) { + std::string largeRepeatedField = "["; + for (int i = 0; i < 101; ++i) { + largeRepeatedField += "\"a\""; + if (i != 100) { + largeRepeatedField += ","; + } + } + largeRepeatedField += "]"; + + EntityPtr extracted = Extract( + "{\"@type\": \"VideoObject\", \"name\": " + largeRepeatedField + "}"); + ASSERT_FALSE(extracted.is_null()); + + EntityPtr expected = Entity::New(); + expected->type = "VideoObject"; + PropertyPtr name = Property::New(); + name->name = "name"; + name->values = Values::New(); + std::vector<std::string> nameValues; + + for (int i = 0; i < 100; i++) { + nameValues.push_back("a"); + } + name->values->set_string_values(nameValues); + expected->properties.push_back(std::move(name)); + + EXPECT_EQ(expected, extracted); +} + +TEST_F(SchemaOrgExtractorTest, truncateTooManyFields) { + std::stringstream tooManyFields; + for (int i = 0; i < 26; ++i) { + tooManyFields << "\"" << i << "\": \"a\""; + if (i != 25) { + tooManyFields << ","; + } + } + EntityPtr extracted = + Extract("{\"@type\": \"VideoObject\"," + tooManyFields.str() + "}"); + ASSERT_FALSE(extracted.is_null()); + + EntityPtr expected = Entity::New(); + expected->type = "VideoObject"; + + for (int i = 0; i < 25; ++i) { + expected->properties.push_back( + CreateStringProperty(base::NumberToString(i), "a")); + } + + EXPECT_EQ(expected->properties.size(), extracted->properties.size()); +} + +TEST_F(SchemaOrgExtractorTest, IgnorePropertyWithEmptyArray) { + EntityPtr extracted = Extract("{\"@type\": \"VideoObject\", \"name\": [] }"); + ASSERT_FALSE(extracted.is_null()); + + EntityPtr expected = Entity::New(); + expected->type = "VideoObject"; + + EXPECT_EQ(expected, extracted); +} + +TEST_F(SchemaOrgExtractorTest, IgnorePropertyWithMixedTypes) { + EntityPtr extracted = + Extract("{\"@type\": \"VideoObject\", \"name\": [\"Name\", 1] }"); + ASSERT_FALSE(extracted.is_null()); + + EntityPtr expected = Entity::New(); + expected->type = "VideoObject"; + + EXPECT_EQ(expected, extracted); +} + +TEST_F(SchemaOrgExtractorTest, IgnorePropertyWithNestedArray) { + EntityPtr extracted = + Extract("{\"@type\": \"VideoObject\", \"name\": [[\"Name\"]] }"); + ASSERT_FALSE(extracted.is_null()); + + EntityPtr expected = Entity::New(); + expected->type = "VideoObject"; + + EXPECT_EQ(expected, extracted); +} + +TEST_F(SchemaOrgExtractorTest, EnforceMaxNestingDepth) { + EntityPtr extracted = Extract( + "{\"@type\": \"VideoObject\", \"name\": \"a video!\"," + "\"1\": {" + " \"2\": {" + " \"3\": {" + " \"4\": {" + " \"5\": {" + " \"6\": 7" + " }" + " }" + " }" + " }" + "}" + "}"); + ASSERT_FALSE(extracted.is_null()); + + EntityPtr expected = Entity::New(); + expected->type = "VideoObject"; + + EntityPtr entity1 = Entity::New(); + entity1->type = "Thing"; + EntityPtr entity2 = Entity::New(); + entity2->type = "Thing"; + EntityPtr entity3 = Entity::New(); + entity3->type = "Thing"; + EntityPtr entity4 = Entity::New(); + entity4->type = "Thing"; + + entity3->properties.push_back(CreateEntityProperty("4", std::move(entity4))); + entity2->properties.push_back(CreateEntityProperty("3", std::move(entity3))); + entity1->properties.push_back(CreateEntityProperty("2", std::move(entity2))); + expected->properties.push_back(CreateEntityProperty("1", std::move(entity1))); + expected->properties.push_back(CreateStringProperty("name", "a video!")); + + EXPECT_EQ(expected, extracted); +} + +TEST_F(SchemaOrgExtractorTest, MaxNestingDepthWithTerminalProperty) { + EntityPtr extracted = Extract( + "{\"@type\": \"VideoObject\", \"name\": \"a video!\"," + "\"1\": {" + " \"2\": {" + " \"3\": {" + " \"4\": {" + " \"5\": 6" + " }" + " }" + " }" + " }" + "}"); + ASSERT_FALSE(extracted.is_null()); + + EntityPtr expected = Entity::New(); + expected->type = "VideoObject"; + + EntityPtr entity1 = Entity::New(); + entity1->type = "Thing"; + EntityPtr entity2 = Entity::New(); + entity2->type = "Thing"; + EntityPtr entity3 = Entity::New(); + entity3->type = "Thing"; + EntityPtr entity4 = Entity::New(); + entity4->type = "Thing"; + + entity4->properties.push_back(CreateLongProperty("5", 6)); + entity3->properties.push_back(CreateEntityProperty("4", std::move(entity4))); + entity2->properties.push_back(CreateEntityProperty("3", std::move(entity3))); + entity1->properties.push_back(CreateEntityProperty("2", std::move(entity2))); + + expected->properties.push_back(CreateEntityProperty("1", std::move(entity1))); + expected->properties.push_back(CreateStringProperty("name", "a video!")); + + EXPECT_EQ(expected, extracted); +} + +} // namespace schema_org
diff --git a/components/spellcheck/browser/windows_spell_checker.cc b/components/spellcheck/browser/windows_spell_checker.cc index 8e67f7c7..c285f81 100644 --- a/components/spellcheck/browser/windows_spell_checker.cc +++ b/components/spellcheck/browser/windows_spell_checker.cc
@@ -24,6 +24,7 @@ #include "base/strings/utf_string_conversions.h" #include "base/task/post_task.h" #include "base/task/single_thread_task_runner_thread_mode.h" +#include "base/task_runner_util.h" #include "base/threading/thread_task_runner_handle.h" #include "base/win/com_init_util.h" #include "base/win/core_winrt_util.h" @@ -38,10 +39,8 @@ #include "components/spellcheck/spellcheck_buildflags.h" WindowsSpellChecker::BackgroundHelper::BackgroundHelper( - scoped_refptr<base::SingleThreadTaskRunner> main_task_runner, scoped_refptr<base::SingleThreadTaskRunner> background_task_runner) - : main_task_runner_(std::move(main_task_runner)), - background_task_runner_(std::move(background_task_runner)) {} + : background_task_runner_(std::move(background_task_runner)) {} WindowsSpellChecker::BackgroundHelper::~BackgroundHelper() { DCHECK(background_task_runner_->RunsTasksInCurrentSequence()); @@ -59,30 +58,30 @@ } } -void WindowsSpellChecker::BackgroundHelper::CreateSpellChecker( - const std::string& lang_tag, - base::OnceCallback<void(bool)> callback) { +bool WindowsSpellChecker::BackgroundHelper::CreateSpellChecker( + const std::string& lang_tag) { DCHECK(background_task_runner_->RunsTasksInCurrentSequence()); - bool result = false; - if (IsSpellCheckerFactoryInitialized()) { - if (SpellCheckerReady(lang_tag)) { - result = true; - } else if (IsLanguageSupported(lang_tag)) { - Microsoft::WRL::ComPtr<ISpellChecker> spell_checker; - std::wstring bcp47_language_tag = base::UTF8ToWide(lang_tag); - HRESULT hr = spell_checker_factory_->CreateSpellChecker( - bcp47_language_tag.c_str(), &spell_checker); - if (SUCCEEDED(hr)) { - spell_checker_map_.insert({lang_tag, spell_checker}); - result = true; - } - } + if (!IsSpellCheckerFactoryInitialized()) + return false; + + if (SpellCheckerReady(lang_tag)) + return true; + + if (!IsLanguageSupported(lang_tag)) + return false; + + Microsoft::WRL::ComPtr<ISpellChecker> spell_checker; + std::wstring bcp47_language_tag = base::UTF8ToWide(lang_tag); + HRESULT hr = spell_checker_factory_->CreateSpellChecker( + bcp47_language_tag.c_str(), &spell_checker); + + if (SUCCEEDED(hr)) { + spell_checker_map_.insert({lang_tag, spell_checker}); + return true; } - // Run the callback with result on the main thread. - main_task_runner_->PostTask(FROM_HERE, - base::BindOnce(std::move(callback), result)); + return false; } void WindowsSpellChecker::BackgroundHelper::DisableSpellChecker( @@ -98,10 +97,10 @@ } } -void WindowsSpellChecker::BackgroundHelper::RequestTextCheckForAllLanguages( +std::vector<SpellCheckResult> +WindowsSpellChecker::BackgroundHelper::RequestTextCheckForAllLanguages( int document_tag, - const base::string16& text, - spellcheck_platform::TextCheckCompleteCallback callback) { + const base::string16& text) { DCHECK(background_task_runner_->RunsTasksInCurrentSequence()); // Construct a map to store spellchecking results. The key of the map is a @@ -162,14 +161,12 @@ } } - // Runs the callback on the main thread after spellcheck completed. - main_task_runner_->PostTask( - FROM_HERE, base::BindOnce(std::move(callback), final_results)); + return final_results; } -void WindowsSpellChecker::BackgroundHelper::GetPerLanguageSuggestions( - const base::string16& word, - spellcheck_platform::GetSuggestionsCallback callback) { +spellcheck::PerLanguageSuggestions +WindowsSpellChecker::BackgroundHelper::GetPerLanguageSuggestions( + const base::string16& word) { DCHECK(background_task_runner_->RunsTasksInCurrentSequence()); spellcheck::PerLanguageSuggestions suggestions; std::vector<base::string16> language_suggestions; @@ -181,9 +178,7 @@ suggestions.push_back(language_suggestions); } - // Runs the callback on the main thread after spellcheck completed. - main_task_runner_->PostTask( - FROM_HERE, base::BindOnce(std::move(callback), std::move(suggestions))); + return suggestions; } void WindowsSpellChecker::BackgroundHelper::FillSuggestionList( @@ -263,21 +258,9 @@ return SUCCEEDED(hr) && is_language_supported; } -void WindowsSpellChecker::BackgroundHelper::IsLanguageSupportedWithCallback( - const std::string& lang_tag, - base::OnceCallback<void(bool)> callback) { - DCHECK(background_task_runner_->RunsTasksInCurrentSequence()); - bool result = IsLanguageSupported(lang_tag); - - // Run the callback with result on the main thread. - main_task_runner_->PostTask(FROM_HERE, - base::BindOnce(std::move(callback), result)); -} - #if BUILDFLAG(USE_WINDOWS_PREFERRED_LANGUAGES_FOR_SPELLCHECK) -void WindowsSpellChecker::BackgroundHelper:: - GetSupportedWindowsPreferredLanguages( - spellcheck_platform::GetSupportedLanguagesCompleteCallback callback) { +std::vector<std::string> +WindowsSpellChecker::BackgroundHelper::GetSupportedWindowsPreferredLanguages() { DCHECK(background_task_runner_->RunsTasksInCurrentSequence()); std::vector<std::string> supported_languages; @@ -348,8 +331,7 @@ } } - main_task_runner_->PostTask( - FROM_HERE, base::BindOnce(std::move(callback), supported_languages)); + return supported_languages; } #endif // #if BUILDFLAG(USE_WINDOWS_PREFERRED_LANGUAGES_FOR_SPELLCHECK) @@ -434,11 +416,10 @@ } WindowsSpellChecker::WindowsSpellChecker( - scoped_refptr<base::SingleThreadTaskRunner> main_task_runner, scoped_refptr<base::SingleThreadTaskRunner> background_task_runner) : background_task_runner_(background_task_runner) { background_helper_ = std::make_unique<WindowsSpellChecker::BackgroundHelper>( - std::move(main_task_runner), std::move(background_task_runner)); + std::move(background_task_runner)); background_task_runner_->PostTask( FROM_HERE, base::BindOnce(&BackgroundHelper::CreateSpellCheckerFactory, @@ -452,10 +433,11 @@ void WindowsSpellChecker::CreateSpellChecker( const std::string& lang_tag, base::OnceCallback<void(bool)> callback) { - background_task_runner_->PostTask( - FROM_HERE, base::BindOnce(&BackgroundHelper::CreateSpellChecker, - base::Unretained(background_helper_.get()), - lang_tag, std::move(callback))); + base::PostTaskAndReplyWithResult( + background_task_runner_.get(), FROM_HERE, + base::BindOnce(&BackgroundHelper::CreateSpellChecker, + base::Unretained(background_helper_.get()), lang_tag), + std::move(callback)); } void WindowsSpellChecker::DisableSpellChecker(const std::string& lang_tag) { @@ -469,20 +451,22 @@ int document_tag, const base::string16& text, spellcheck_platform::TextCheckCompleteCallback callback) { - background_task_runner_->PostTask( - FROM_HERE, + base::PostTaskAndReplyWithResult( + background_task_runner_.get(), FROM_HERE, base::BindOnce(&BackgroundHelper::RequestTextCheckForAllLanguages, base::Unretained(background_helper_.get()), document_tag, - text, std::move(callback))); + text), + std::move(callback)); } void WindowsSpellChecker::GetPerLanguageSuggestions( const base::string16& word, spellcheck_platform::GetSuggestionsCallback callback) { - background_task_runner_->PostTask( - FROM_HERE, base::BindOnce(&BackgroundHelper::GetPerLanguageSuggestions, - base::Unretained(background_helper_.get()), - word, std::move(callback))); + base::PostTaskAndReplyWithResult( + background_task_runner_.get(), FROM_HERE, + base::BindOnce(&BackgroundHelper::GetPerLanguageSuggestions, + base::Unretained(background_helper_.get()), word), + std::move(callback)); } void WindowsSpellChecker::AddWordForAllLanguages(const base::string16& word) { @@ -511,11 +495,11 @@ void WindowsSpellChecker::IsLanguageSupported( const std::string& lang_tag, base::OnceCallback<void(bool)> callback) { - background_task_runner_->PostTask( - FROM_HERE, - base::BindOnce(&BackgroundHelper::IsLanguageSupportedWithCallback, - base::Unretained(background_helper_.get()), lang_tag, - std::move(callback))); + base::PostTaskAndReplyWithResult( + background_task_runner_.get(), FROM_HERE, + base::BindOnce(&BackgroundHelper::IsLanguageSupported, + base::Unretained(background_helper_.get()), lang_tag), + std::move(callback)); } void WindowsSpellChecker::RecordChromeLocalesStats( @@ -539,10 +523,10 @@ #if BUILDFLAG(USE_WINDOWS_PREFERRED_LANGUAGES_FOR_SPELLCHECK) void WindowsSpellChecker::GetSupportedWindowsPreferredLanguages( spellcheck_platform::GetSupportedLanguagesCompleteCallback callback) { - background_task_runner_->PostTask( - FROM_HERE, + base::PostTaskAndReplyWithResult( + background_task_runner_.get(), FROM_HERE, base::BindOnce(&BackgroundHelper::GetSupportedWindowsPreferredLanguages, - base::Unretained(background_helper_.get()), - std::move(callback))); + base::Unretained(background_helper_.get())), + std::move(callback)); } #endif // BUILDFLAG(USE_WINDOWS_PREFERRED_LANGUAGES_FOR_SPELLCHECK
diff --git a/components/spellcheck/browser/windows_spell_checker.h b/components/spellcheck/browser/windows_spell_checker.h index e922e2ee..e30c2f9 100644 --- a/components/spellcheck/browser/windows_spell_checker.h +++ b/components/spellcheck/browser/windows_spell_checker.h
@@ -15,6 +15,7 @@ #include "components/spellcheck/browser/platform_spell_checker.h" #include "components/spellcheck/browser/spellcheck_host_metrics.h" #include "components/spellcheck/browser/spellcheck_platform.h" +#include "components/spellcheck/common/spellcheck_result.h" #include "components/spellcheck/spellcheck_buildflags.h" namespace base { @@ -27,7 +28,6 @@ class WindowsSpellChecker : public PlatformSpellChecker { public: WindowsSpellChecker( - scoped_refptr<base::SingleThreadTaskRunner> main_task_runner, scoped_refptr<base::SingleThreadTaskRunner> background_task_runner); WindowsSpellChecker(const WindowsSpellChecker&) = delete; @@ -79,7 +79,6 @@ class BackgroundHelper { public: BackgroundHelper( - scoped_refptr<base::SingleThreadTaskRunner> main_task_runner, scoped_refptr<base::SingleThreadTaskRunner> background_task_runner); ~BackgroundHelper(); @@ -88,27 +87,25 @@ void CreateSpellCheckerFactory(); // Creates a native |ISpellchecker| for the given language |lang_tag| and - // invokes the given callback with the creation result. - void CreateSpellChecker(const std::string& lang_tag, - base::OnceCallback<void(bool)> callback); + // returns a boolean indicating success. + bool CreateSpellChecker(const std::string& lang_tag); // Removes the native spell checker for the given language |lang_tag| from // the map of active spell checkers. void DisableSpellChecker(const std::string& lang_tag); // Requests spell checking of string |text| for all active spell checkers - // (all languages) and invokes the given callback with the results. - void RequestTextCheckForAllLanguages( + // (all languages) and returns a vector of |SpellCheckResult| containing the + // results. + std::vector<SpellCheckResult> RequestTextCheckForAllLanguages( int document_tag, - const base::string16& text, - spellcheck_platform::TextCheckCompleteCallback callback); + const base::string16& text); // Gets spelling suggestions for |word| from all active spell checkers (all - // languages), keeping the suggestions separate per language, and invokes - // the given callback with the results. - void GetPerLanguageSuggestions( - const base::string16& word, - spellcheck_platform::GetSuggestionsCallback callback); + // languages), keeping the suggestions separate per language, and returns + // the results in a vector of vector of strings. + spellcheck::PerLanguageSuggestions GetPerLanguageSuggestions( + const base::string16& word); // Fills the given vector |optional_suggestions| with a number (up to // kMaxSuggestions) of suggestions for the string |wrong_word| using the @@ -135,12 +132,6 @@ // OS settings. bool IsLanguageSupported(const std::string& lang_tag); - // Checks if a native spell checker is available for the given language - // |lang_tag| and invokes the given callback with the result. - void IsLanguageSupportedWithCallback( - const std::string& lang_tag, - base::OnceCallback<void(bool)> callback); - // Returns |true| if an |ISpellCheckerFactory| has been initialized. bool IsSpellCheckerFactoryInitialized(); @@ -166,8 +157,7 @@ // Gets the user's preferred languages from the OS settings, filters out // languages for which a native spell checker isn't available, and invokes // the given callback with the results. - void GetSupportedWindowsPreferredLanguages( - spellcheck_platform::GetSupportedLanguagesCompleteCallback callback); + std::vector<std::string> GetSupportedWindowsPreferredLanguages(); #endif // BUILDFLAG(USE_WINDOWS_PREFERRED_LANGUAGES_FOR_SPELLCHECK) // Sorts the given locales into four buckets based on spell check support @@ -184,9 +174,6 @@ std::map<std::string, Microsoft::WRL::ComPtr<ISpellChecker>> spell_checker_map_; - // Task runner used to post callback invocations to the main thread. - scoped_refptr<base::SingleThreadTaskRunner> main_task_runner_; - // Task runner only used to enforce valid sequencing. scoped_refptr<base::SingleThreadTaskRunner> background_task_runner_; }; // class BackgroundHelper
diff --git a/components/spellcheck/browser/windows_spell_checker_unittest.cc b/components/spellcheck/browser/windows_spell_checker_unittest.cc index 80170abc..e7ca8d9 100644 --- a/components/spellcheck/browser/windows_spell_checker_unittest.cc +++ b/components/spellcheck/browser/windows_spell_checker_unittest.cc
@@ -15,7 +15,6 @@ #include "base/task/post_task.h" #include "base/test/scoped_feature_list.h" #include "base/test/task_environment.h" -#include "base/threading/thread_task_runner_handle.h" #include "base/win/windows_version.h" #include "build/build_config.h" #include "components/spellcheck/browser/windows_spell_checker.h" @@ -35,7 +34,6 @@ spellcheck::kWinUseBrowserSpellChecker); win_spell_checker_ = std::make_unique<WindowsSpellChecker>( - base::ThreadTaskRunnerHandle::Get(), base::CreateCOMSTATaskRunner({base::ThreadPool(), base::MayBlock()})); win_spell_checker_->CreateSpellChecker(
diff --git a/components/sync/base/sync_prefs.cc b/components/sync/base/sync_prefs.cc index f7962ac..204b720a 100644 --- a/components/sync/base/sync_prefs.cc +++ b/components/sync/base/sync_prefs.cc
@@ -293,6 +293,10 @@ } #endif + // The encryption bootstrap token represents a user-entered passphrase. + registry->RegisterStringPref(prefs::kSyncEncryptionBootstrapToken, + std::string()); + // Internal or bookkeeping prefs. registry->RegisterStringPref(prefs::kSyncCacheGuid, std::string()); registry->RegisterStringPref(prefs::kSyncBirthday, std::string()); @@ -301,8 +305,6 @@ registry->RegisterInt64Pref(prefs::kSyncLastPollTime, 0); registry->RegisterInt64Pref(prefs::kSyncPollIntervalSeconds, 0); registry->RegisterBooleanPref(prefs::kSyncManaged, false); - registry->RegisterStringPref(prefs::kSyncEncryptionBootstrapToken, - std::string()); registry->RegisterStringPref(prefs::kSyncKeystoreEncryptionBootstrapToken, std::string()); registry->RegisterBooleanPref(prefs::kSyncPassphrasePrompted, false); @@ -347,7 +349,7 @@ sync_pref_observers_.RemoveObserver(sync_pref_observer); } -void SyncPrefs::ClearPreferences() { +void SyncPrefs::ClearLocalSyncTransportData() { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); // Clear user's birth year and gender. @@ -357,31 +359,19 @@ // even reveal their true birth year. pref_service_->ClearPref(prefs::kSyncDemographics); - ClearDirectoryConsistencyPreferences(); - pref_service_->ClearPref(prefs::kSyncLastSyncedTime); pref_service_->ClearPref(prefs::kSyncLastPollTime); pref_service_->ClearPref(prefs::kSyncPollIntervalSeconds); - pref_service_->ClearPref(prefs::kSyncEncryptionBootstrapToken); pref_service_->ClearPref(prefs::kSyncKeystoreEncryptionBootstrapToken); pref_service_->ClearPref(prefs::kSyncPassphrasePrompted); pref_service_->ClearPref(prefs::kSyncInvalidationVersions); pref_service_->ClearPref(prefs::kSyncLastRunVersion); - // No need to clear kManaged, kEnableLocalSyncBackend or kLocalSyncBackendDir, - // since they're never actually set as user preferences. - - // Note: We do *not* clear prefs which are directly user-controlled such as - // the set of selected types here, so that if the user ever chooses to enable - // Sync again, they start off with their previous settings by default. - // We do however require going through first-time setup again. - pref_service_->ClearPref(prefs::kSyncFirstSetupComplete); -} - -void SyncPrefs::ClearDirectoryConsistencyPreferences() { - DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); pref_service_->ClearPref(prefs::kSyncCacheGuid); pref_service_->ClearPref(prefs::kSyncBirthday); pref_service_->ClearPref(prefs::kSyncBagOfChips); + + // No need to clear kManaged, kEnableLocalSyncBackend or kLocalSyncBackendDir, + // since they're never actually set as user preferences. } bool SyncPrefs::IsFirstSetupComplete() const { @@ -394,6 +384,11 @@ pref_service_->SetBoolean(prefs::kSyncFirstSetupComplete, true); } +void SyncPrefs::ClearFirstSetupComplete() { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + pref_service_->ClearPref(prefs::kSyncFirstSetupComplete); +} + bool SyncPrefs::IsSyncRequested() const { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); return pref_service_->GetBoolean(prefs::kSyncRequested); @@ -556,6 +551,11 @@ pref_service_->SetString(prefs::kSyncEncryptionBootstrapToken, token); } +void SyncPrefs::ClearEncryptionBootstrapToken() { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + pref_service_->ClearPref(prefs::kSyncEncryptionBootstrapToken); +} + std::string SyncPrefs::GetKeystoreEncryptionBootstrapToken() const { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); return pref_service_->GetString(prefs::kSyncKeystoreEncryptionBootstrapToken);
diff --git a/components/sync/base/sync_prefs.h b/components/sync/base/sync_prefs.h index fb90584..75b71e7a 100644 --- a/components/sync/base/sync_prefs.h +++ b/components/sync/base/sync_prefs.h
@@ -77,19 +77,15 @@ // Clears "bookkeeping" sync preferences, such as the last synced time, // whether the last shutdown was clean, etc. Does *not* clear sync preferences // which are directly user-controlled, such as the set of selected types. - void ClearPreferences(); - - // Clears only the subset of preferences that are redundant with the sync - // directory and used only for verifying consistency with prefs. - // TODO(crbug.com/923285): Remove this function and instead rely solely on - // ClearPreferences() once investigations are finalized are we understand the - // source of discrepancies for UMA Sync.DirectoryVsPrefsConsistency. - void ClearDirectoryConsistencyPreferences(); + void ClearLocalSyncTransportData(); // Getters and setters for global sync prefs. + // First-Setup-Complete is conceptually similar to the user's consent to + // enable sync-the-feature. bool IsFirstSetupComplete() const; void SetFirstSetupComplete(); + void ClearFirstSetupComplete(); bool IsSyncRequested() const; void SetSyncRequested(bool is_requested); @@ -139,9 +135,14 @@ // policy, is handled directly in ProfileSyncService. bool IsManaged() const; - // Use this encryption bootstrap token if we're using an explicit passphrase. + // The encryption bootstrap token is used for explicit passphrase users + // (usually custom passphrase) and represents a user-entered passphrase. + // Hence, it gets treated as user-controlled similarly to sync datatype + // selection settings (i.e. doesn't get cleared in + // ClearLocalSyncTransportData()). std::string GetEncryptionBootstrapToken() const override; void SetEncryptionBootstrapToken(const std::string& token) override; + void ClearEncryptionBootstrapToken(); // Use this keystore bootstrap token if we're not using an explicit // passphrase. @@ -151,10 +152,6 @@ // Maps |type| to its corresponding preference name. static const char* GetPrefNameForType(UserSelectableType type); - // Copy of various fields historically owned and persisted by the Directory. - // This is a future-proof approach to ultimately replace the Directory once - // most users have populated prefs and the Directory is about to be removed. - // TODO(crbug.com/923287): Figure out if this is an appropriate place. void SetCacheGuid(const std::string& cache_guid); std::string GetCacheGuid() const; void SetBirthday(const std::string& birthday);
diff --git a/components/sync/base/sync_prefs_unittest.cc b/components/sync/base/sync_prefs_unittest.cc index 3bb06474..da2e6880 100644 --- a/components/sync/base/sync_prefs_unittest.cc +++ b/components/sync/base/sync_prefs_unittest.cc
@@ -122,9 +122,7 @@ sync_prefs_->SetFirstSetupComplete(); EXPECT_TRUE(sync_prefs_->IsFirstSetupComplete()); - // There's no direct way to clear the first-setup-complete bit, so just reset - // all prefs instead. - sync_prefs_->ClearPreferences(); + sync_prefs_->ClearFirstSetupComplete(); EXPECT_FALSE(sync_prefs_->IsFirstSetupComplete()); sync_prefs_->SetSyncRequested(true); @@ -148,24 +146,32 @@ } #endif -TEST_F(SyncPrefsTest, ClearPreferences) { - EXPECT_FALSE(sync_prefs_->IsFirstSetupComplete()); - EXPECT_EQ(base::Time(), sync_prefs_->GetLastSyncedTime()); - EXPECT_TRUE(sync_prefs_->GetEncryptionBootstrapToken().empty()); +TEST_F(SyncPrefsTest, ClearLocalSyncTransportData) { + ASSERT_FALSE(sync_prefs_->IsFirstSetupComplete()); + ASSERT_EQ(base::Time(), sync_prefs_->GetLastSyncedTime()); + ASSERT_TRUE(sync_prefs_->GetEncryptionBootstrapToken().empty()); sync_prefs_->SetFirstSetupComplete(); sync_prefs_->SetLastSyncedTime(base::Time::Now()); - sync_prefs_->SetEncryptionBootstrapToken("token"); + sync_prefs_->SetEncryptionBootstrapToken("explicit_passphrase_token"); + sync_prefs_->SetKeystoreEncryptionBootstrapToken("keystore_token"); - EXPECT_TRUE(sync_prefs_->IsFirstSetupComplete()); - EXPECT_NE(base::Time(), sync_prefs_->GetLastSyncedTime()); - EXPECT_EQ("token", sync_prefs_->GetEncryptionBootstrapToken()); + ASSERT_TRUE(sync_prefs_->IsFirstSetupComplete()); + ASSERT_NE(base::Time(), sync_prefs_->GetLastSyncedTime()); + ASSERT_EQ("explicit_passphrase_token", + sync_prefs_->GetEncryptionBootstrapToken()); + ASSERT_EQ("keystore_token", + sync_prefs_->GetKeystoreEncryptionBootstrapToken()); - sync_prefs_->ClearPreferences(); + sync_prefs_->ClearLocalSyncTransportData(); - EXPECT_FALSE(sync_prefs_->IsFirstSetupComplete()); EXPECT_EQ(base::Time(), sync_prefs_->GetLastSyncedTime()); - EXPECT_TRUE(sync_prefs_->GetEncryptionBootstrapToken().empty()); + EXPECT_TRUE(sync_prefs_->GetKeystoreEncryptionBootstrapToken().empty()); + + // User-entered field should not have been cleared. + EXPECT_TRUE(sync_prefs_->IsFirstSetupComplete()); + EXPECT_EQ("explicit_passphrase_token", + sync_prefs_->GetEncryptionBootstrapToken()); } TEST_F(SyncPrefsTest, ReadDemographicsWithRandomOffset) { @@ -221,7 +227,7 @@ ASSERT_TRUE(demographics_result.IsSuccess()); } - sync_prefs_->ClearPreferences(); + sync_prefs_->ClearLocalSyncTransportData(); // Verify that demographics are not provided and kSyncDemographics is cleared. // Note that we retain kSyncDemographicsBirthYearOffset. If the user resumes
diff --git a/components/sync/driver/profile_sync_service.cc b/components/sync/driver/profile_sync_service.cc index dd3df1e..30a51a6 100644 --- a/components/sync/driver/profile_sync_service.cc +++ b/components/sync/driver/profile_sync_service.cc
@@ -516,9 +516,7 @@ // updates requires that the request either has a birthday, or there should be // no progress marker). if (sync_prefs_.GetCacheGuid().empty() || sync_prefs_.GetBirthday().empty()) { - // TODO(crbug.com/923285): This doesn't seem to belong here, or if it does, - // all preferences should be cleared via SyncPrefs::ClearPreferences(). - sync_prefs_.ClearDirectoryConsistencyPreferences(); + sync_prefs_.ClearLocalSyncTransportData(); sync_prefs_.SetCacheGuid(GenerateCacheGUID()); } @@ -625,6 +623,7 @@ base::BindOnce(&syncable::Directory::DeleteDirectoryFiles, sync_client_->GetSyncDataPath())); } + sync_prefs_.ClearLocalSyncTransportData(); } return; } @@ -679,6 +678,10 @@ auth_manager_->ConnectionClosed(); } + if (reason == ShutdownReason::DISABLE_SYNC) { + sync_prefs_.ClearLocalSyncTransportData(); + } + NotifyObservers(); } @@ -690,11 +693,15 @@ case CLEAR_DATA: ClearUnrecoverableError(); ShutdownImpl(DISABLE_SYNC); - // Clear prefs (including SyncSetupHasCompleted) before shutting down so - // PSS clients don't think we're set up while we're shutting down. - // Note: We do this after shutting down, so that notifications about the - // changed pref values don't mess up our state. - sync_prefs_.ClearPreferences(); + // Note: ShutdownImpl(DISABLE_SYNC) does *not* clear prefs which are + // directly user-controlled such as the set of selected types here, so + // that if the user ever chooses to enable Sync again, they start off + // with their previous settings by default. We do however require going + // through first-time setup again. + sync_prefs_.ClearFirstSetupComplete(); + // For explicit passphrase users, clear the encryption key, such that they + // will need to reenter it if sync gets re-enabled. + sync_prefs_.ClearEncryptionBootstrapToken(); break; } } @@ -854,15 +861,6 @@ // Shut all data types down. ShutdownImpl(DISABLE_SYNC); - - // This is the equivalent for Directory::DeleteDirectoryFiles(), guaranteed - // to be called, either directly in ShutdownImpl(), or later in - // SyncEngineBackend::DoShutdown(). - // TODO(crbug.com/923285): This doesn't seem to belong here, or if it does, - // all preferences should be cleared via SyncPrefs::ClearPreferences(), - // which is done by some of the callers (but not all). Care must be taken - // however for scenarios like custom passphrase being set. - sync_prefs_.ClearDirectoryConsistencyPreferences(); } void ProfileSyncService::DataTypePreconditionChanged(ModelType type) { @@ -1060,27 +1058,9 @@ // restart. sync_disabled_by_admin_ = true; ShutdownImpl(DISABLE_SYNC); - // This is the equivalent for Directory::DeleteDirectoryFiles(), - // guaranteed to be called, either directly in ShutdownImpl(), or later in - // SyncEngineBackend::DoShutdown(). - // TODO(crbug.com/923285): This doesn't seem to belong here, or if it - // does, all preferences should be cleared via - // SyncPrefs::ClearPreferences(), which is done by some of the callers - // (but not all). Care must be taken however for scenarios like custom - // passphrase being set. - sync_prefs_.ClearDirectoryConsistencyPreferences(); break; case RESET_LOCAL_SYNC_DATA: ShutdownImpl(DISABLE_SYNC); - // This is the equivalent for Directory::DeleteDirectoryFiles(), - // guaranteed to be called, either directly in ShutdownImpl(), or later in - // SyncEngineBackend::DoShutdown(). - // TODO(crbug.com/923285): This doesn't seem to belong here, or if it - // does, all preferences should be cleared via - // SyncPrefs::ClearPreferences(), which is done by some of the callers - // (but not all). Care must be taken however for scenarios like custom - // passphrase being set. - sync_prefs_.ClearDirectoryConsistencyPreferences(); startup_controller_->TryStart(/*force_immediate=*/true); break; case UNKNOWN_ACTION:
diff --git a/components/sync/driver/profile_sync_service_unittest.cc b/components/sync/driver/profile_sync_service_unittest.cc index 8bcaa84..f768888 100644 --- a/components/sync/driver/profile_sync_service_unittest.cc +++ b/components/sync/driver/profile_sync_service_unittest.cc
@@ -54,6 +54,7 @@ constexpr int kOldEnoughForDemographicsUserBirthYear = 1983; constexpr char kTestUser[] = "test_user@gmail.com"; +constexpr char kTestCacheGuid[] = "test_cache_guid"; // Now time in string format. constexpr char kNowTimeInStringFormat[] = "23 Mar 2019 16:00:00 UDT"; @@ -231,6 +232,8 @@ void InitializeForNthSync() { // Set first sync time before initialize to simulate a complete sync setup. SyncPrefs sync_prefs(prefs()); + sync_prefs.SetCacheGuid(kTestCacheGuid); + sync_prefs.SetBirthday(FakeSyncEngine::kTestBirthday); sync_prefs.SetLastSyncedTime(base::Time::Now()); sync_prefs.SetSyncRequested(true); sync_prefs.SetSelectedTypes( @@ -387,13 +390,18 @@ CreateService(ProfileSyncService::MANUAL_START); SyncPrefs sync_prefs(prefs()); - base::Time now = base::Time::Now(); - sync_prefs.SetLastSyncedTime(now); sync_prefs.SetSyncRequested(true); sync_prefs.SetSelectedTypes( /*keep_everything_synced=*/true, /*registered_types=*/UserSelectableTypeSet::All(), /*selected_types=*/UserSelectableTypeSet::All()); + + // Mimic a sync cycle (transport-only) having completed earlier. + const base::Time kLastSyncedTime = base::Time::Now(); + sync_prefs.SetLastSyncedTime(kLastSyncedTime); + sync_prefs.SetCacheGuid(kTestCacheGuid); + sync_prefs.SetBirthday(FakeSyncEngine::kTestBirthday); + service()->Initialize(); EXPECT_EQ(SyncService::DisableReasonSet(), service()->GetDisableReasons()); @@ -404,10 +412,9 @@ EXPECT_FALSE(service()->IsSyncFeatureActive()); EXPECT_FALSE(service()->IsSyncFeatureEnabled()); - // The last sync time shouldn't be cleared. - // TODO(zea): figure out a way to check that the directory itself wasn't - // cleared. - EXPECT_EQ(now, sync_prefs.GetLastSyncedTime()); + // The local sync data shouldn't be cleared. + EXPECT_EQ(kTestCacheGuid, sync_prefs.GetCacheGuid()); + EXPECT_EQ(kLastSyncedTime, sync_prefs.GetLastSyncedTime()); } // Verify that the SetSetupInProgress function call updates state
diff --git a/components/viz/common/display/renderer_settings.h b/components/viz/common/display/renderer_settings.h index f4d5e4d..a27d84c 100644 --- a/components/viz/common/display/renderer_settings.h +++ b/components/viz/common/display/renderer_settings.h
@@ -49,6 +49,14 @@ // The maximum number of occluding Rects to track during occlusion culling. int kMaximumOccluderComplexity = 10; + // The maximum number (exclusive) of quads one draw quad may be split into + // during occlusion culling. e.g. an L-shaped visible region split into two + // quads + int quad_split_limit = 5; + // The minimum number of fragments that would not be drawn if a quads was + // split into multiple quads during occlusion culling. + int minimum_fragments_reduced = 128 * 128; + #if defined(OS_ANDROID) // The screen size at renderer creation time. gfx::Size initial_screen_size = gfx::Size(0, 0);
diff --git a/components/viz/common/quads/render_pass.cc b/components/viz/common/quads/render_pass.cc index 0418e51..2e08e45 100644 --- a/components/viz/common/quads/render_pass.cc +++ b/components/viz/common/quads/render_pass.cc
@@ -60,6 +60,63 @@ needs_blending, SK_ColorTRANSPARENT, true); } +QuadList::Iterator QuadList::InsertCopyBeforeDrawQuad(Iterator at, + size_t count) { + DCHECK(at->shared_quad_state); + switch (at->material) { + case DrawQuad::Material::kDebugBorder: { + const auto copy = *DebugBorderDrawQuad::MaterialCast(*at); + return InsertBeforeAndInvalidateAllPointers<DebugBorderDrawQuad>( + at, count, copy); + } + case DrawQuad::Material::kPictureContent: { + const auto copy = *PictureDrawQuad::MaterialCast(*at); + return InsertBeforeAndInvalidateAllPointers<PictureDrawQuad>(at, count, + copy); + } + case DrawQuad::Material::kTextureContent: { + const auto copy = *TextureDrawQuad::MaterialCast(*at); + return InsertBeforeAndInvalidateAllPointers<TextureDrawQuad>(at, count, + copy); + } + case DrawQuad::Material::kSolidColor: { + const auto copy = *SolidColorDrawQuad::MaterialCast(*at); + return InsertBeforeAndInvalidateAllPointers<SolidColorDrawQuad>(at, count, + copy); + } + case DrawQuad::Material::kTiledContent: { + const auto copy = *TileDrawQuad::MaterialCast(*at); + return InsertBeforeAndInvalidateAllPointers<TileDrawQuad>(at, count, + copy); + } + case DrawQuad::Material::kStreamVideoContent: { + const auto copy = *StreamVideoDrawQuad::MaterialCast(*at); + return InsertBeforeAndInvalidateAllPointers<StreamVideoDrawQuad>( + at, count, copy); + } + case DrawQuad::Material::kSurfaceContent: { + const auto copy = *SurfaceDrawQuad::MaterialCast(*at); + return InsertBeforeAndInvalidateAllPointers<SurfaceDrawQuad>(at, count, + copy); + } + case DrawQuad::Material::kVideoHole: { + const auto copy = *VideoHoleDrawQuad::MaterialCast(*at); + return InsertBeforeAndInvalidateAllPointers<VideoHoleDrawQuad>(at, count, + copy); + } + case DrawQuad::Material::kYuvVideoContent: { + const auto copy = *YUVVideoDrawQuad::MaterialCast(*at); + return InsertBeforeAndInvalidateAllPointers<YUVVideoDrawQuad>(at, count, + copy); + } + // RenderPass quads should not be copied. + case DrawQuad::Material::kRenderPass: + case DrawQuad::Material::kInvalid: + NOTREACHED(); // Invalid DrawQuad material. + return at; + } +} + std::unique_ptr<RenderPass> RenderPass::Create() { return base::WrapUnique(new RenderPass()); }
diff --git a/components/viz/common/quads/render_pass.h b/components/viz/common/quads/render_pass.h index 4bf737d3..c020979 100644 --- a/components/viz/common/quads/render_pass.h +++ b/components/viz/common/quads/render_pass.h
@@ -54,6 +54,7 @@ // This function is used by overlay algorithm to fill the backbuffer with // transparent black. void ReplaceExistingQuadWithOpaqueTransparentSolidColor(Iterator at); + Iterator InsertCopyBeforeDrawQuad(Iterator at, size_t count); }; using SharedQuadStateList = cc::ListContainer<SharedQuadState>;
diff --git a/components/viz/service/display/display.cc b/components/viz/service/display/display.cc index 7155d337..41dcaf61 100644 --- a/components/viz/service/display/display.cc +++ b/components/viz/service/display/display.cc
@@ -10,6 +10,7 @@ #include "base/debug/dump_without_crashing.h" #include "base/metrics/histogram_macros.h" #include "base/optional.h" +#include "base/stl_util.h" #include "base/timer/elapsed_timer.h" #include "base/trace_event/trace_event.h" #include "build/build_config.h" @@ -47,6 +48,18 @@ namespace { +const DrawQuad::Material kNonSplittableMaterials[] = { + // Exclude debug quads from quad splitting + DrawQuad::Material::kDebugBorder, + // Exclude possible overlay candidates from quad splitting + // See OverlayCandidate::FromDrawQuad + DrawQuad::Material::kStreamVideoContent, + DrawQuad::Material::kTextureContent, + DrawQuad::Material::kVideoHole, + // See DCLayerOverlayProcessor::ProcessRenderPass + DrawQuad::Material::kYuvVideoContent, +}; + constexpr base::TimeDelta kAllowedDeltaFromFuture = base::TimeDelta::FromMilliseconds(16); @@ -145,6 +158,28 @@ return safe_rect; } +// TODO(sashamcintosh): consider moving to cc::Region +int ComputeRegionArea(const cc::Region& region) { + int area = 0; + for (const auto& r : region) + area += r.size().GetArea(); + return area; +} + +bool CanSplitQuad(const DrawQuad::Material m, + const cc::Region& visible_region, + const int quad_split_limit, + const int minimum_fragments_reduced, + const int device_scale_factor, + const bool enable_quad_splitting) { + return enable_quad_splitting && !base::Contains(kNonSplittableMaterials, m) && + visible_region.GetRegionComplexity() < quad_split_limit && + (visible_region.bounds().size().GetArea() - + ComputeRegionArea(visible_region)) * + device_scale_factor * device_scale_factor > + minimum_fragments_reduced; +} + } // namespace constexpr base::TimeDelta Display::kDrawToSwapMin; @@ -319,7 +354,7 @@ } void Display::Resize(const gfx::Size& size) { - disable_draw_until_resize_ = false; + disable_swap_until_resize_ = false; if (size == current_surface_size_) return; @@ -341,7 +376,7 @@ TRACE_EVENT0("viz", "Display::DisableSwapUntilResize"); DCHECK(no_pending_swaps_callback_.is_null()); - if (!disable_draw_until_resize_) { + if (!disable_swap_until_resize_) { DCHECK(scheduler_); if (!swapped_since_resize_) @@ -353,7 +388,7 @@ no_pending_swaps_callback_ = std::move(no_pending_swaps_callback); } - disable_draw_until_resize_ = true; + disable_swap_until_resize_ = true; } // There are no pending swaps for current size so immediately run callback. @@ -583,8 +618,7 @@ if (!size_matches) TRACE_EVENT_INSTANT0("viz", "Size mismatch.", TRACE_EVENT_SCOPE_THREAD); - bool should_draw = !disable_draw_until_resize_ && - (have_copy_requests || (have_damage && size_matches)); + bool should_draw = have_copy_requests || (have_damage && size_matches); client_->DisplayWillDrawAndSwap(should_draw, &frame.render_pass_list); base::Optional<base::ElapsedTimer> draw_timer; @@ -631,7 +665,7 @@ TRACE_EVENT_INSTANT0("viz", "Draw skipped.", TRACE_EVENT_SCOPE_THREAD); } - bool should_swap = should_draw && size_matches; + bool should_swap = !disable_swap_until_resize_ && should_draw && size_matches; if (should_swap) { PresentationGroupTiming presentation_group_timing; presentation_group_timing.OnDraw(draw_timer->Begin()); @@ -987,10 +1021,27 @@ // Case 2: for simple transforms, if the quad is partially shown on // screen and the region formed by (occlusion region - visible_rect) is // a rect, then update visible_rect to the resulting rect. - cc::Region origin_rect = quad->visible_rect; - origin_rect.Subtract(occlusion_in_quad_content_space); - quad->visible_rect = origin_rect.bounds(); - ++quad; + cc::Region visible_region = quad->visible_rect; + visible_region.Subtract(occlusion_in_quad_content_space); + quad->visible_rect = visible_region.bounds(); + + // Split quad into multiple draw quads when area can be reduce by + // more than X fragments. + const bool should_split_quads = CanSplitQuad( + quad->material, visible_region, settings_.quad_split_limit, + settings_.minimum_fragments_reduced, device_scale_factor_, + !overlay_processor_->DisableSplittingQuads()); + if (should_split_quads) { + auto new_quad = pass->quad_list.InsertCopyBeforeDrawQuad( + quad, visible_region.GetRegionComplexity() - 1); + for (const auto& visible_rect : visible_region) { + new_quad->visible_rect = visible_rect; + ++new_quad; + } + quad = new_quad; + } else { + ++quad; + } } else if (occlusion_in_quad_content_space.IsEmpty() && occlusion_in_target_space.Contains( cc::MathUtil::MapEnclosingClippedRect(
diff --git a/components/viz/service/display/display.h b/components/viz/service/display/display.h index 5a867ca..10c7a00 100644 --- a/components/viz/service/display/display.h +++ b/components/viz/service/display/display.h
@@ -253,7 +253,7 @@ base::circular_deque<Display::PresentationGroupTiming> pending_presentation_group_timings_; - bool disable_draw_until_resize_ = true; + bool disable_swap_until_resize_ = true; // Callback that will be run after all pending swaps have acked. base::OnceClosure no_pending_swaps_callback_;
diff --git a/components/viz/service/display/display_unittest.cc b/components/viz/service/display/display_unittest.cc index 9812289..dd8f700 100644 --- a/components/viz/service/display/display_unittest.cc +++ b/components/viz/service/display/display_unittest.cc
@@ -12,6 +12,7 @@ #include "base/test/metrics/histogram_tester.h" #include "base/test/null_task_runner.h" #include "cc/base/math_util.h" +#include "cc/base/region.h" #include "cc/test/scheduler_test_common.h" #include "components/viz/common/frame_sinks/begin_frame_source.h" #include "components/viz/common/frame_sinks/copy_output_request.h" @@ -4116,6 +4117,99 @@ TearDownDisplay(); } +TEST_F(DisplayTest, DrawOcclusionSplit) { + SetUpGpuDisplay(RendererSettings()); + + StubDisplayClient client; + display_->Initialize(&client, manager_.surface_manager()); + + // The two partially occluded quads will be split into two additional quads, + // preserving only the visible regions. + CompositorFrame frame = MakeDefaultCompositorFrame(); + + // +--------------------------------+ + // |***+----------------------+ <- Large occluding Rect + // +---|- - - - + - - -|-----+ + // |***| . |*****| + // |***+----------------------+*****| + // |****************|***************| + // +----------------+---------------+ + // + // * -> Visible rect for the quads. + + const gfx::Rect occluding_rect(10, 10, 1000, 490); + const gfx::Rect quad_rects[3] = { + gfx::Rect(0, 0, 1200, 20), + gfx::Rect(0, 20, 600, 490), + gfx::Rect(600, 20, 600, 490), + }; + gfx::Rect occluded_sqs_rect(0, 0, 1200, 510); + + const bool is_clipped = false; + const bool are_contents_opaque = true; + const float opacity = 1.f; + SharedQuadState* shared_quad_state_occluder = + frame.render_pass_list.front()->CreateAndAppendSharedQuadState(); + SharedQuadState* shared_quad_state_occluded = + frame.render_pass_list.front()->CreateAndAppendSharedQuadState(); + + SolidColorDrawQuad* quads[4]; + for (auto*& quad : quads) { + quad = frame.render_pass_list.front() + ->quad_list.AllocateAndConstruct<SolidColorDrawQuad>(); + } + + { + shared_quad_state_occluder->SetAll( + gfx::Transform(), occluding_rect, occluding_rect, gfx::RRectF(), + occluding_rect, is_clipped, are_contents_opaque, opacity, + SkBlendMode::kSrcOver, 0); + quads[0]->SetNew(shared_quad_state_occluder, occluding_rect, occluding_rect, + SK_ColorRED, false); + + shared_quad_state_occluded->SetAll( + gfx::Transform(), occluded_sqs_rect, occluded_sqs_rect, gfx::RRectF(), + occluded_sqs_rect, is_clipped, are_contents_opaque, opacity, + SkBlendMode::kSrcOver, 0); + for (int i = 1; i < 4; i++) { + quads[i]->SetNew(shared_quad_state_occluded, quad_rects[i - 1], + quad_rects[i - 1], SK_ColorRED, false); + } + + EXPECT_EQ(4u, frame.render_pass_list.front()->quad_list.size()); + display_->RemoveOverdrawQuads(&frame); + ASSERT_EQ(6u, frame.render_pass_list.front()->quad_list.size()); + EXPECT_EQ(occluding_rect.ToString(), frame.render_pass_list.front() + ->quad_list.ElementAt(0) + ->visible_rect.ToString()); + + // Computed the expected quads + // +--------------------------------+ + // | 1 | + // +---+----------------------+-----+ + // | 2 | | 3 | + // +---+------------+---------+-----+ + // | 4 | 5 | + // +----------------+---------------+ + const gfx::Rect expected_visible_rects[5]{ + // The occluded region of rest one is small, so we do not split the + // quad. + quad_rects[0], + gfx::Rect(0, 20, 10, 480), + gfx::Rect(0, 500, 600, 10), + gfx::Rect(1010, 20, 190, 480), + gfx::Rect(600, 500, 600, 10), + }; + + const QuadList& quad_list = frame.render_pass_list.front()->quad_list; + for (int i = 0; i < 5; i++) { + EXPECT_EQ(expected_visible_rects[i], + quad_list.ElementAt(i + 1)->visible_rect); + } + } + TearDownDisplay(); +} + TEST_F(DisplayTest, DrawOcclusionWithRoundedCornerPartialOcclude) { SetUpGpuDisplay(RendererSettings()); @@ -4139,7 +4233,7 @@ // | | // +----------------------+ // - // * -> Visiblg rect for the quads. + // * -> Visible rect for the quads. gfx::Rect quad_rect(10, 10, 1000, 1000); gfx::RRectF rounded_corner_bounds(gfx::RectF(quad_rect), 10.f); gfx::Rect occluded_quad_rect_1(0, 20, 600, 490);
diff --git a/components/viz/service/display/overlay_processor_interface.cc b/components/viz/service/display/overlay_processor_interface.cc index b346114..2762495 100644 --- a/components/viz/service/display/overlay_processor_interface.cc +++ b/components/viz/service/display/overlay_processor_interface.cc
@@ -136,6 +136,10 @@ #endif } +bool OverlayProcessorInterface::DisableSplittingQuads() const { + return false; +} + OverlayProcessorInterface::OutputSurfaceOverlayPlane OverlayProcessorInterface::ProcessOutputSurfaceAsOverlay( const gfx::Size& viewport_size,
diff --git a/components/viz/service/display/overlay_processor_interface.h b/components/viz/service/display/overlay_processor_interface.h index 145cd2f..2806e60 100644 --- a/components/viz/service/display/overlay_processor_interface.h +++ b/components/viz/service/display/overlay_processor_interface.h
@@ -52,6 +52,8 @@ using FilterOperationsMap = base::flat_map<RenderPassId, cc::FilterOperations*>; + virtual bool DisableSplittingQuads() const; + // Used by Window's DCLayerOverlay system and OverlayProcessorUsingStrategy. static void RecordOverlayDamageRectHistograms( bool is_overlay,
diff --git a/components/viz/service/display/overlay_processor_mac.cc b/components/viz/service/display/overlay_processor_mac.cc index 62ca44d..d972c98 100644 --- a/components/viz/service/display/overlay_processor_mac.cc +++ b/components/viz/service/display/overlay_processor_mac.cc
@@ -29,6 +29,10 @@ OverlayProcessorMac::~OverlayProcessorMac() = default; +bool OverlayProcessorMac::DisableSplittingQuads() const { + return true; +} + bool OverlayProcessorMac::IsOverlaySupported() const { return could_overlay_; }
diff --git a/components/viz/service/display/overlay_processor_mac.h b/components/viz/service/display/overlay_processor_mac.h index 462b41a..03a8112 100644 --- a/components/viz/service/display/overlay_processor_mac.h +++ b/components/viz/service/display/overlay_processor_mac.h
@@ -32,6 +32,8 @@ std::unique_ptr<CALayerOverlayProcessor> ca_layer_overlay_processor); ~OverlayProcessorMac() override; + bool DisableSplittingQuads() const override; + bool IsOverlaySupported() const override; gfx::Rect GetAndResetOverlayDamage() override;
diff --git a/components/viz/service/display_embedder/skia_output_device_buffer_queue.cc b/components/viz/service/display_embedder/skia_output_device_buffer_queue.cc index 44fdc63..1e733bf 100644 --- a/components/viz/service/display_embedder/skia_output_device_buffer_queue.cc +++ b/components/viz/service/display_embedder/skia_output_device_buffer_queue.cc
@@ -542,8 +542,8 @@ std::unique_ptr<gfx::GpuFence> gpu_fence) { DCHECK(!gpu_fence); - PageFlipComplete(image.get()); FinishSwapBuffers(result, size, latency_info); + PageFlipComplete(image.get()); } bool SkiaOutputDeviceBufferQueue::Reshape(const gfx::Size& size,
diff --git a/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.cc b/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.cc index 749e70e..3e4d2ee4 100644 --- a/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.cc +++ b/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.cc
@@ -55,8 +55,8 @@ #include "gpu/vulkan/buildflags.h" #include "skia/buildflags.h" #include "skia/ext/image_operations.h" +#include "third_party/skia/include/core/SkDeferredDisplayList.h" #include "third_party/skia/include/core/SkPixelRef.h" -#include "third_party/skia/include/private/SkDDLTmpRedirect.h" #include "ui/gfx/color_space.h" #include "ui/gfx/geometry/rect_conversions.h" #include "ui/gfx/skia_util.h"
diff --git a/components/viz/service/gl/gpu_service_impl.cc b/components/viz/service/gl/gpu_service_impl.cc index 5cb82bd4..2a2b5ea 100644 --- a/components/viz/service/gl/gpu_service_impl.cc +++ b/components/viz/service/gl/gpu_service_impl.cc
@@ -195,7 +195,7 @@ gpu_feature_info_.status_values[gpu::GPU_FEATURE_TYPE_OOP_RASTERIZATION] = gpu::kGpuFeatureStatusEnabled; } else { - DLOG(WARNING) << "Failed to create Vulkan context provider."; + DLOG(ERROR) << "Failed to create Vulkan context provider."; } } #endif @@ -208,7 +208,7 @@ gpu_feature_info_.status_values[gpu::GPU_FEATURE_TYPE_OOP_RASTERIZATION] = gpu::kGpuFeatureStatusEnabled; } else { - DLOG(WARNING) << "Failed to create Dawn context provider."; + DLOG(ERROR) << "Failed to create Dawn context provider."; } } #endif
diff --git a/content/app/content_main_runner_impl.cc b/content/app/content_main_runner_impl.cc index 2ce220c8..62af126 100644 --- a/content/app/content_main_runner_impl.cc +++ b/content/app/content_main_runner_impl.cc
@@ -680,7 +680,16 @@ // // Startup tracing flags are not (and should not be) passed to Zygote // processes. We will enable tracing when forked, if needed. - if (process_type != service_manager::switches::kZygoteProcess) + bool enable_startup_tracing = + process_type != service_manager::switches::kZygoteProcess; +#if BUILDFLAG(USE_ZYGOTE_HANDLE) + // In the browser process, we have to enable startup tracing after + // InitializeZygoteSandboxForBrowserProcess() is run below, because that + // function forks and may call trace macros in the forked process. + if (process_type.empty()) + enable_startup_tracing = false; +#endif // BUILDFLAG(USE_ZYGOTE_HANDLE) + if (enable_startup_tracing) tracing::EnableStartupTracingIfNeeded(); #if defined(OS_WIN) @@ -820,6 +829,13 @@ // SandboxInitialized(). InitializeZygoteSandboxForBrowserProcess( *base::CommandLine::ForCurrentProcess()); + + // We can only enable startup tracing after + // InitializeZygoteSandboxForBrowserProcess(), because the latter may fork + // and run code that calls trace event macros in the forked process (which + // could cause all sorts of issues, like writing to the same tracing SMB + // from two processes). + tracing::EnableStartupTracingIfNeeded(); } #endif // BUILDFLAG(USE_ZYGOTE_HANDLE)
diff --git a/content/browser/DEPS b/content/browser/DEPS index 412200b..108e441e 100644 --- a/content/browser/DEPS +++ b/content/browser/DEPS
@@ -99,6 +99,7 @@ "+third_party/blink/public/platform/web_cursor_info.h", "+third_party/blink/public/platform/web_drag_operation.h", "+third_party/blink/public/platform/web_fullscreen_video_status.h", + "+third_party/blink/public/platform/web_insecure_request_policy.h", "+third_party/blink/public/platform/web_intrinsic_sizing_info.h", "+third_party/blink/public/platform/web_mixed_content_context_type.h", "+third_party/blink/public/platform/web_screen_info.h",
diff --git a/content/browser/accessibility/dump_accessibility_tree_browsertest.cc b/content/browser/accessibility/dump_accessibility_tree_browsertest.cc index 70b7666..64fb826 100644 --- a/content/browser/accessibility/dump_accessibility_tree_browsertest.cc +++ b/content/browser/accessibility/dump_accessibility_tree_browsertest.cc
@@ -75,7 +75,7 @@ switches::kEnableBlinkFeatures, "AccessibilityObjectModel"); // Enable display locking, used in some tests. base::CommandLine::ForCurrentProcess()->AppendSwitchASCII( - switches::kEnableBlinkFeatures, "DisplayLocking"); + switches::kEnableBlinkFeatures, "CSSRenderSubtree"); } void RunAriaTest(const base::FilePath::CharType* file_path) { @@ -2273,7 +2273,9 @@ RunHtmlTest(FILE_PATH_LITERAL("delete-selection-crash.html")); } -IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, DisplayLockingActivatable) { +// crbug.com/1053526: Disabled pending the referenced bug fix. +IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, + DISABLED_DisplayLockingActivatable) { RunDisplayLockingTest(FILE_PATH_LITERAL("activatable.html")); }
diff --git a/content/browser/appcache/appcache_disk_cache_ops.cc b/content/browser/appcache/appcache_disk_cache_ops.cc index f40f7d4..81a2cf2 100644 --- a/content/browser/appcache/appcache_disk_cache_ops.cc +++ b/content/browser/appcache/appcache_disk_cache_ops.cc
@@ -46,13 +46,16 @@ // HttpResponseInfoIOBuffer ------------------------------------------ +// static +constexpr int HttpResponseInfoIOBuffer::kUnknownResponseDataSize; + HttpResponseInfoIOBuffer::HttpResponseInfoIOBuffer() - : response_data_size(kUnknownResponseDataSize) {} + : response_data_size(HttpResponseInfoIOBuffer::kUnknownResponseDataSize) {} HttpResponseInfoIOBuffer::HttpResponseInfoIOBuffer( std::unique_ptr<net::HttpResponseInfo> info) : http_info(std::move(info)), - response_data_size(kUnknownResponseDataSize) {} + response_data_size(HttpResponseInfoIOBuffer::kUnknownResponseDataSize) {} HttpResponseInfoIOBuffer::~HttpResponseInfoIOBuffer() = default;
diff --git a/content/browser/appcache/appcache_disk_cache_ops.h b/content/browser/appcache/appcache_disk_cache_ops.h index 1e846878..f81c0d0 100644 --- a/content/browser/appcache/appcache_disk_cache_ops.h +++ b/content/browser/appcache/appcache_disk_cache_ops.h
@@ -22,12 +22,12 @@ class AppCacheDiskCache; class AppCacheDiskCacheEntry; -static const int kUnknownResponseDataSize = -1; - // A refcounted wrapper for HttpResponseInfo so we can apply the // refcounting semantics used with IOBuffer with these structures too. struct CONTENT_EXPORT HttpResponseInfoIOBuffer : public base::RefCountedThreadSafe<HttpResponseInfoIOBuffer> { + static constexpr int kUnknownResponseDataSize = -1; + std::unique_ptr<net::HttpResponseInfo> http_info; int response_data_size;
diff --git a/content/browser/appcache/appcache_storage_unittest.cc b/content/browser/appcache/appcache_storage_unittest.cc index 05121dd0..8f727a9 100644 --- a/content/browser/appcache/appcache_storage_unittest.cc +++ b/content/browser/appcache/appcache_storage_unittest.cc
@@ -68,7 +68,8 @@ scoped_refptr<AppCacheResponseInfo> info = base::MakeRefCounted<AppCacheResponseInfo>( service.storage()->GetWeakPtr(), kManifestUrl, 111, - std::make_unique<net::HttpResponseInfo>(), kUnknownResponseDataSize); + std::make_unique<net::HttpResponseInfo>(), + HttpResponseInfoIOBuffer::kUnknownResponseDataSize); EXPECT_EQ(info.get(), service.storage()->working_set()->GetResponseInfo(111)); @@ -89,7 +90,8 @@ const GURL kManifestUrl("http://origin/"); info = base::MakeRefCounted<AppCacheResponseInfo>( service.storage()->GetWeakPtr(), kManifestUrl, 111, - std::make_unique<net::HttpResponseInfo>(), kUnknownResponseDataSize); + std::make_unique<net::HttpResponseInfo>(), + HttpResponseInfoIOBuffer::kUnknownResponseDataSize); EXPECT_EQ(info.get(), service.storage()->working_set()->GetResponseInfo(111));
diff --git a/content/browser/compositor/viz_process_transport_factory.cc b/content/browser/compositor/viz_process_transport_factory.cc index 1b1badb00..165294a 100644 --- a/content/browser/compositor/viz_process_transport_factory.cc +++ b/content/browser/compositor/viz_process_transport_factory.cc
@@ -324,15 +324,21 @@ worker_context_provider_.reset(); main_context_provider_.reset(); + // ReleaseAcceleratedWidget() removes an entry from |compositor_data_map_|, + // so first copy the compositors to a new set. + base::flat_set<ui::Compositor*> all_compositors; + all_compositors.reserve(compositor_data_map_.size()); + for (auto& pair : compositor_data_map_) + all_compositors.insert(pair.first); + // Remove the FrameSink from every compositor that needs to fall back to // software compositing. - for (auto& pair : compositor_data_map_) { - ui::Compositor* compositor = pair.first; + for (auto* compositor : all_compositors) { // The |guilty_compositor| is in the process of setting up its FrameSink // so removing it from |compositor_data_map_| would be both pointless and // the cause of a crash. // Compositors with force_software_compositor() do not follow the global - // compositing mode, so they do not need to changed. + // compositing mode, so they do not need to be changed. if (compositor == guilty_compositor || compositor->force_software_compositor()) continue;
diff --git a/content/browser/devtools/devtools_pipe_handler.cc b/content/browser/devtools/devtools_pipe_handler.cc index 5510538..ed19058 100644 --- a/content/browser/devtools/devtools_pipe_handler.cc +++ b/content/browser/devtools/devtools_pipe_handler.cc
@@ -295,7 +295,8 @@ if (!write_thread_) { base::PostTask( FROM_HERE, - {base::ThreadPool(), base::MayBlock(), base::TaskPriority::BEST_EFFORT}, + {base::ThreadPool(), base::MayBlock(), base::WithBaseSyncPrimitives(), + base::TaskPriority::BEST_EFFORT}, base::BindOnce([](base::Thread* rthread) { delete rthread; }, read_thread_.release())); return; @@ -326,7 +327,8 @@ // Post background task that would join and destroy the threads. base::PostTask( FROM_HERE, - {base::ThreadPool(), base::MayBlock(), base::TaskPriority::BEST_EFFORT}, + {base::ThreadPool(), base::MayBlock(), base::WithBaseSyncPrimitives(), + base::TaskPriority::BEST_EFFORT}, base::BindOnce( [](base::Thread* rthread, base::Thread* wthread) { delete rthread;
diff --git a/content/browser/download/download_browsertest.cc b/content/browser/download/download_browsertest.cc index f709f2e..60304f5 100644 --- a/content/browser/download/download_browsertest.cc +++ b/content/browser/download/download_browsertest.cc
@@ -1259,6 +1259,12 @@ file.Close(); } + // Parallel download should create more than 1 slices in most cases. If + // there is only one slice, consider this is a regular download and remove + // all slices. + download::DownloadItem::ReceivedSlices parallel_slices; + if (slices.size() != 1 || slices[0].offset != 0) + parallel_slices = slices; download::DownloadItem* download = DownloadManagerForShell(shell())->CreateDownloadItem( "F7FB1F59-7DE1-4845-AFDB-8A688F70F583", 1, path, base::FilePath(), @@ -1269,7 +1275,7 @@ std::string(), download::DownloadItem::INTERRUPTED, download::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, download::DOWNLOAD_INTERRUPT_REASON_NETWORK_FAILED, false, - base::Time(), false, slices); + base::Time(), false, parallel_slices); ClearAutoResumptionCount(download); return download; } @@ -4182,6 +4188,18 @@ true /* support_partial_response */); } +// Verify parallel download resumption when only 1 slice was created in previous +// attempt. +IN_PROC_BROWSER_TEST_F(ParallelDownloadTest, ResumptionWithOnlyOneSlice) { + // Create the received slices data with only 1 slice. + std::vector<download::DownloadItem::ReceivedSlice> received_slices = { + download::DownloadItem::ReceivedSlice(0, 1000, false /* finished */)}; + + // Only 1 request should be sent. + RunResumptionTest(received_slices, 3000000, 1, + true /* support_partial_response */); +} + // Verifies that if the last slice is finished, but the database record is not // finished, which may happen in database migration. // When the server sends HTTP range not satisfied, the download can complete.
diff --git a/content/browser/frame_host/frame_tree_node.cc b/content/browser/frame_host/frame_tree_node.cc index 26e47d7..0386a95 100644 --- a/content/browser/frame_host/frame_tree_node.cc +++ b/content/browser/frame_host/frame_tree_node.cc
@@ -31,7 +31,6 @@ #include "content/public/common/navigation_policy.h" #include "third_party/blink/public/common/frame/sandbox_flags.h" #include "third_party/blink/public/mojom/frame/user_activation_update_types.mojom.h" -#include "third_party/blink/public/mojom/security_context/insecure_request_policy.mojom.h" namespace content { @@ -120,10 +119,7 @@ scope, name, unique_name, - blink::mojom::InsecureRequestPolicy:: - kLeaveInsecureRequestsAlone /* should enforce strict mixed content - checking */ - , + false /* should enforce strict mixed content checking */, std::vector<uint32_t>() /* hashes of hosts for insecure request upgrades */, false /* is a potentially trustworthy unique origin */, @@ -347,7 +343,7 @@ } void FrameTreeNode::SetInsecureRequestPolicy( - blink::mojom::InsecureRequestPolicy policy) { + blink::WebInsecureRequestPolicy policy) { if (policy == replication_state_.insecure_request_policy) return; render_manager_.OnEnforceInsecureRequestPolicy(policy);
diff --git a/content/browser/frame_host/frame_tree_node.h b/content/browser/frame_host/frame_tree_node.h index 89ba68e8..07208b4 100644 --- a/content/browser/frame_host/frame_tree_node.h +++ b/content/browser/frame_host/frame_tree_node.h
@@ -25,8 +25,7 @@ #include "third_party/blink/public/common/frame/user_activation_state.h" #include "third_party/blink/public/mojom/frame/frame_owner_properties.mojom.h" #include "third_party/blink/public/mojom/frame/user_activation_update_types.mojom.h" -#include "third_party/blink/public/mojom/security_context/insecure_request_policy.mojom-forward.h" - +#include "third_party/blink/public/platform/web_insecure_request_policy.h" #include "url/gurl.h" #include "url/origin.h" @@ -190,7 +189,7 @@ // Sets the current insecure request policy, and notifies proxies about the // update. - void SetInsecureRequestPolicy(blink::mojom::InsecureRequestPolicy policy); + void SetInsecureRequestPolicy(blink::WebInsecureRequestPolicy policy); // Sets the current set of insecure urls to upgrade, and notifies proxies // about the update.
diff --git a/content/browser/frame_host/mixed_content_navigation_throttle.cc b/content/browser/frame_host/mixed_content_navigation_throttle.cc index 608f464..78fdf47 100644 --- a/content/browser/frame_host/mixed_content_navigation_throttle.cc +++ b/content/browser/frame_host/mixed_content_navigation_throttle.cc
@@ -20,10 +20,7 @@ #include "content/public/common/origin_util.h" #include "content/public/common/web_preferences.h" #include "net/base/url_util.h" -#include "third_party/blink/public/common/security_context/insecure_request_policy.h" #include "third_party/blink/public/mojom/fetch/fetch_api_request.mojom.h" -#include "third_party/blink/public/mojom/security_context/insecure_request_policy.mojom.h" - #include "url/gurl.h" #include "url/origin.h" #include "url/url_constants.h" @@ -147,10 +144,9 @@ // If we're in strict mode, we'll automagically fail everything, and // intentionally skip the client/embedder checks in order to prevent degrading // the site's security UI. - bool block_all_mixed_content = - (mixed_content_node->current_replication_state().insecure_request_policy & - blink::mojom::InsecureRequestPolicy::kBlockAllMixedContent) != - blink::mojom::InsecureRequestPolicy::kLeaveInsecureRequestsAlone; + bool block_all_mixed_content = !!( + mixed_content_node->current_replication_state().insecure_request_policy & + blink::kBlockAllMixedContent); const WebPreferences& prefs = mixed_content_node->current_frame_host() ->render_view_host() ->GetWebkitPreferences();
diff --git a/content/browser/frame_host/navigation_request.cc b/content/browser/frame_host/navigation_request.cc index 1fd9df6d..2fcd5024 100644 --- a/content/browser/frame_host/navigation_request.cc +++ b/content/browser/frame_host/navigation_request.cc
@@ -1753,7 +1753,7 @@ if (cross_origin_embedder_policy == network::mojom::CrossOriginEmbedderPolicy::kNone) { OnRequestFailedInternal( - network::URLLoaderCompletionStatus(net::ERR_FAILED), + network::URLLoaderCompletionStatus(net::ERR_BLOCKED_BY_RESPONSE), false /* skip_throttles */, base::nullopt /* error_page_content */, false /* collapse_frame */); // DO NOT ADD CODE after this. The previous call to @@ -1772,7 +1772,7 @@ (frame_tree_node_->pending_frame_policy().sandbox_flags != blink::mojom::WebSandboxFlags::kNone)) { OnRequestFailedInternal( - network::URLLoaderCompletionStatus(net::ERR_FAILED), + network::URLLoaderCompletionStatus(net::ERR_BLOCKED_BY_RESPONSE), false /* skip_throttles */, base::nullopt /* error_page_content */, false /* collapse_frame */); // DO NOT ADD CODE after this. The previous call to
diff --git a/content/browser/frame_host/render_frame_host_impl.cc b/content/browser/frame_host/render_frame_host_impl.cc index 0fc04d6..4f63d977 100644 --- a/content/browser/frame_host/render_frame_host_impl.cc +++ b/content/browser/frame_host/render_frame_host_impl.cc
@@ -212,7 +212,6 @@ #include "third_party/blink/public/mojom/loader/pause_subresource_loading_handle.mojom.h" #include "third_party/blink/public/mojom/loader/resource_load_info.mojom.h" #include "third_party/blink/public/mojom/loader/url_loader_factory_bundle.mojom.h" -#include "third_party/blink/public/mojom/security_context/insecure_request_policy.mojom.h" #include "third_party/blink/public/mojom/service_worker/service_worker_object.mojom.h" #include "third_party/blink/public/mojom/sms/sms_receiver.mojom.h" #include "third_party/blink/public/mojom/timing/resource_timing.mojom.h" @@ -3577,7 +3576,7 @@ } void RenderFrameHostImpl::EnforceInsecureRequestPolicy( - blink::mojom::InsecureRequestPolicy policy) { + blink::WebInsecureRequestPolicy policy) { frame_tree_node()->SetInsecureRequestPolicy(policy); } @@ -7050,13 +7049,10 @@ receiver) { #if !defined(OS_ANDROID) if (base::FeatureList::IsEnabled(features::kWebAuth)) { - if (base::CommandLine::ForCurrentProcess()->HasSwitch( - switches::kEnableWebAuthTestingAPI)) { - auto* environment_singleton = AuthenticatorEnvironmentImpl::GetInstance(); - environment_singleton->EnableVirtualAuthenticatorFor(frame_tree_node_); - environment_singleton->AddVirtualAuthenticatorReceiver( - frame_tree_node_, std::move(receiver)); - } + auto* environment_singleton = AuthenticatorEnvironmentImpl::GetInstance(); + environment_singleton->EnableVirtualAuthenticatorFor(frame_tree_node_); + environment_singleton->AddVirtualAuthenticatorReceiver(frame_tree_node_, + std::move(receiver)); } #endif // !defined(OS_ANDROID) }
diff --git a/content/browser/frame_host/render_frame_host_impl.h b/content/browser/frame_host/render_frame_host_impl.h index 052469c..99bda02 100644 --- a/content/browser/frame_host/render_frame_host_impl.h +++ b/content/browser/frame_host/render_frame_host_impl.h
@@ -111,7 +111,6 @@ #include "third_party/blink/public/mojom/portal/portal.mojom-forward.h" #include "third_party/blink/public/mojom/presentation/presentation.mojom.h" #include "third_party/blink/public/mojom/scroll/scroll_into_view_params.mojom.h" -#include "third_party/blink/public/mojom/security_context/insecure_request_policy.mojom-forward.h" #include "third_party/blink/public/mojom/service_worker/service_worker_provider.mojom.h" #include "third_party/blink/public/mojom/sms/sms_receiver.mojom-forward.h" #include "third_party/blink/public/mojom/speech/speech_synthesis.mojom-forward.h" @@ -122,6 +121,7 @@ #include "third_party/blink/public/mojom/websockets/websocket_connector.mojom.h" #include "third_party/blink/public/mojom/webtransport/quic_transport_connector.mojom.h" #include "third_party/blink/public/mojom/worker/dedicated_worker_host_factory.mojom.h" +#include "third_party/blink/public/platform/web_insecure_request_policy.h" #include "third_party/blink/public/web/web_tree_scope_type.h" #include "third_party/skia/include/core/SkColor.h" #include "ui/accessibility/ax_action_handler.h" @@ -1357,7 +1357,7 @@ void DidAddContentSecurityPolicies( std::vector<network::mojom::ContentSecurityPolicyPtr> policies) override; void EnforceInsecureRequestPolicy( - blink::mojom::InsecureRequestPolicy policy) override; + blink::WebInsecureRequestPolicy policy) override; void EnforceInsecureNavigationsSet(const std::vector<uint32_t>& set) override; void DidChangeActiveSchedulerTrackedFeatures(uint64_t features_mask) override; void SuddenTerminationDisablerChanged(
diff --git a/content/browser/frame_host/render_frame_host_manager.cc b/content/browser/frame_host/render_frame_host_manager.cc index b3b3e4b..0686a9ca 100644 --- a/content/browser/frame_host/render_frame_host_manager.cc +++ b/content/browser/frame_host/render_frame_host_manager.cc
@@ -60,7 +60,6 @@ #include "services/network/public/cpp/features.h" #include "third_party/blink/public/mojom/frame/frame_owner_properties.mojom.h" #include "third_party/blink/public/mojom/frame/user_activation_update_types.mojom.h" -#include "third_party/blink/public/mojom/security_context/insecure_request_policy.mojom.h" #if defined(OS_MACOSX) #include "ui/gfx/mac/scoped_cocoa_disable_screen_updates.h" @@ -1025,7 +1024,7 @@ } void RenderFrameHostManager::OnEnforceInsecureRequestPolicy( - blink::mojom::InsecureRequestPolicy policy) { + blink::WebInsecureRequestPolicy policy) { for (const auto& pair : proxy_hosts_) { pair.second->Send(new FrameMsg_EnforceInsecureRequestPolicy( pair.second->GetRoutingID(), policy));
diff --git a/content/browser/frame_host/render_frame_host_manager.h b/content/browser/frame_host/render_frame_host_manager.h index b6482bea..2ff1397 100644 --- a/content/browser/frame_host/render_frame_host_manager.h +++ b/content/browser/frame_host/render_frame_host_manager.h
@@ -26,7 +26,6 @@ #include "services/network/public/mojom/content_security_policy.mojom-forward.h" #include "third_party/blink/public/mojom/frame/frame_owner_properties.mojom-forward.h" #include "third_party/blink/public/mojom/frame/user_activation_update_types.mojom.h" -#include "third_party/blink/public/mojom/security_context/insecure_request_policy.mojom-forward.h" #include "ui/base/page_transition_types.h" #include "url/origin.h" @@ -346,8 +345,7 @@ // Sends updated enforcement of insecure request policy to all frame proxies // when the frame changes its setting. - void OnEnforceInsecureRequestPolicy( - blink::mojom::InsecureRequestPolicy policy); + void OnEnforceInsecureRequestPolicy(blink::WebInsecureRequestPolicy policy); // Sends updated enforcement of upgrade insecure navigations set to all frame // proxies when the frame changes its setting.
diff --git a/content/browser/frame_host/render_frame_host_manager_unittest.cc b/content/browser/frame_host/render_frame_host_manager_unittest.cc index 22f8715..e8f39d1 100644 --- a/content/browser/frame_host/render_frame_host_manager_unittest.cc +++ b/content/browser/frame_host/render_frame_host_manager_unittest.cc
@@ -66,7 +66,7 @@ #include "third_party/blink/public/common/frame/frame_policy.h" #include "third_party/blink/public/mojom/favicon/favicon_url.mojom.h" #include "third_party/blink/public/mojom/frame/frame_owner_properties.mojom.h" -#include "third_party/blink/public/mojom/security_context/insecure_request_policy.mojom.h" +#include "third_party/blink/public/platform/web_insecure_request_policy.h" #include "ui/base/page_transition_types.h" #if defined(OS_ANDROID) @@ -90,7 +90,7 @@ // Helper function for strict mixed content checking tests. void CheckInsecureRequestPolicyIPC( TestRenderFrameHost* rfh, - blink::mojom::InsecureRequestPolicy expected_param, + blink::WebInsecureRequestPolicy expected_param, int expected_routing_id) { const IPC::Message* message = rfh->GetProcess()->sink().GetUniqueMessageMatching( @@ -2952,17 +2952,17 @@ // Change the parent's enforcement of strict mixed content checking, // and check that the correct IPC is sent to the child frame's // process. - EXPECT_EQ(blink::mojom::InsecureRequestPolicy::kLeaveInsecureRequestsAlone, + EXPECT_EQ(blink::kLeaveInsecureRequestsAlone, root->current_replication_state().insecure_request_policy); main_test_rfh()->DidEnforceInsecureRequestPolicy( - blink::mojom::InsecureRequestPolicy::kBlockAllMixedContent); + blink::kBlockAllMixedContent); RenderFrameProxyHost* proxy_to_child = root->render_manager()->GetRenderFrameProxyHost( child_host->GetSiteInstance()); - EXPECT_NO_FATAL_FAILURE(CheckInsecureRequestPolicyIPC( - child_host, blink::mojom::InsecureRequestPolicy::kBlockAllMixedContent, - proxy_to_child->GetRoutingID())); - EXPECT_EQ(blink::mojom::InsecureRequestPolicy::kBlockAllMixedContent, + EXPECT_NO_FATAL_FAILURE( + CheckInsecureRequestPolicyIPC(child_host, blink::kBlockAllMixedContent, + proxy_to_child->GetRoutingID())); + EXPECT_EQ(blink::kBlockAllMixedContent, root->current_replication_state().insecure_request_policy); // Do the same for the child's enforcement. In general, the parent @@ -2972,18 +2972,16 @@ // A.com process needs to know B.com's flag so that the grandchild // A.com frame can inherit it. EXPECT_EQ( - blink::mojom::InsecureRequestPolicy::kLeaveInsecureRequestsAlone, + blink::kLeaveInsecureRequestsAlone, root->child_at(0)->current_replication_state().insecure_request_policy); - child_host->DidEnforceInsecureRequestPolicy( - blink::mojom::InsecureRequestPolicy::kBlockAllMixedContent); + child_host->DidEnforceInsecureRequestPolicy(blink::kBlockAllMixedContent); RenderFrameProxyHost* proxy_to_parent = child->GetRenderFrameProxyHost(main_test_rfh()->GetSiteInstance()); EXPECT_NO_FATAL_FAILURE(CheckInsecureRequestPolicyIPC( - main_test_rfh(), - blink::mojom::InsecureRequestPolicy::kBlockAllMixedContent, + main_test_rfh(), blink::kBlockAllMixedContent, proxy_to_parent->GetRoutingID())); EXPECT_EQ( - blink::mojom::InsecureRequestPolicy::kBlockAllMixedContent, + blink::kBlockAllMixedContent, root->child_at(0)->current_replication_state().insecure_request_policy); // Check that the flag for the parent's proxy to the child is reset @@ -2991,11 +2989,10 @@ main_test_rfh()->GetProcess()->sink().ClearMessages(); NavigationSimulator::NavigateAndCommitFromDocument(kUrl3, child_host); EXPECT_NO_FATAL_FAILURE(CheckInsecureRequestPolicyIPC( - main_test_rfh(), - blink::mojom::InsecureRequestPolicy::kLeaveInsecureRequestsAlone, + main_test_rfh(), blink::kLeaveInsecureRequestsAlone, proxy_to_parent->GetRoutingID())); EXPECT_EQ( - blink::mojom::InsecureRequestPolicy::kLeaveInsecureRequestsAlone, + blink::kLeaveInsecureRequestsAlone, root->child_at(0)->current_replication_state().insecure_request_policy); }
diff --git a/content/browser/site_per_process_browsertest.cc b/content/browser/site_per_process_browsertest.cc index 1383a8e..a36f9ec 100644 --- a/content/browser/site_per_process_browsertest.cc +++ b/content/browser/site_per_process_browsertest.cc
@@ -124,7 +124,7 @@ #include "third_party/blink/public/common/frame/sandbox_flags.h" #include "third_party/blink/public/common/input/web_input_event.h" #include "third_party/blink/public/mojom/frame/frame.mojom-test-utils.h" -#include "third_party/blink/public/mojom/security_context/insecure_request_policy.mojom.h" +#include "third_party/blink/public/platform/web_insecure_request_policy.h" #include "ui/display/display_switches.h" #include "ui/display/screen.h" #include "ui/events/base_event_utils.h" @@ -6951,27 +6951,27 @@ SSLStatus::DISPLAYED_INSECURE_CONTENT)); FrameTreeNode* root = web_contents->GetFrameTree()->root(); - EXPECT_EQ(blink::mojom::InsecureRequestPolicy::kBlockAllMixedContent, + EXPECT_EQ(blink::kBlockAllMixedContent, root->current_replication_state().insecure_request_policy); EXPECT_EQ( - blink::mojom::InsecureRequestPolicy::kBlockAllMixedContent, + blink::kBlockAllMixedContent, root->child_at(0)->current_replication_state().insecure_request_policy); // When the subframe navigates, it should still be marked as enforcing // strict mixed content. GURL navigate_url(https_server.GetURL("/title1.html")); NavigateFrameToURL(root->child_at(0), navigate_url); - EXPECT_EQ(blink::mojom::InsecureRequestPolicy::kBlockAllMixedContent, + EXPECT_EQ(blink::kBlockAllMixedContent, root->current_replication_state().insecure_request_policy); EXPECT_EQ( - blink::mojom::InsecureRequestPolicy::kBlockAllMixedContent, + blink::kBlockAllMixedContent, root->child_at(0)->current_replication_state().insecure_request_policy); // When the main frame navigates, it should no longer be marked as // enforcing strict mixed content. EXPECT_TRUE( NavigateToURL(shell(), https_server.GetURL("b.com", "/title1.html"))); - EXPECT_EQ(blink::mojom::InsecureRequestPolicy::kLeaveInsecureRequestsAlone, + EXPECT_EQ(blink::kLeaveInsecureRequestsAlone, root->current_replication_state().insecure_request_policy); } @@ -6995,27 +6995,27 @@ SSLStatus::DISPLAYED_INSECURE_CONTENT)); FrameTreeNode* root = web_contents->GetFrameTree()->root(); - EXPECT_EQ(blink::mojom::InsecureRequestPolicy::kUpgradeInsecureRequests, + EXPECT_EQ(blink::kUpgradeInsecureRequests, root->current_replication_state().insecure_request_policy); EXPECT_EQ( - blink::mojom::InsecureRequestPolicy::kUpgradeInsecureRequests, + blink::kUpgradeInsecureRequests, root->child_at(0)->current_replication_state().insecure_request_policy); // When the subframe navigates, it should still be marked as upgrading // insecure requests. GURL navigate_url(https_server.GetURL("/title1.html")); NavigateFrameToURL(root->child_at(0), navigate_url); - EXPECT_EQ(blink::mojom::InsecureRequestPolicy::kUpgradeInsecureRequests, + EXPECT_EQ(blink::kUpgradeInsecureRequests, root->current_replication_state().insecure_request_policy); EXPECT_EQ( - blink::mojom::InsecureRequestPolicy::kUpgradeInsecureRequests, + blink::kUpgradeInsecureRequests, root->child_at(0)->current_replication_state().insecure_request_policy); // When the main frame navigates, it should no longer be marked as // upgrading insecure requests. EXPECT_TRUE( NavigateToURL(shell(), https_server.GetURL("b.com", "/title1.html"))); - EXPECT_EQ(blink::mojom::InsecureRequestPolicy::kLeaveInsecureRequestsAlone, + EXPECT_EQ(blink::kLeaveInsecureRequestsAlone, root->current_replication_state().insecure_request_policy); }
diff --git a/content/browser/tracing/background_tracing_manager_browsertest.cc b/content/browser/tracing/background_tracing_manager_browsertest.cc index cc76603c0..2fece112 100644 --- a/content/browser/tracing/background_tracing_manager_browsertest.cc +++ b/content/browser/tracing/background_tracing_manager_browsertest.cc
@@ -84,11 +84,10 @@ // PosixSystemProducer so this assert ensures that the // static_cast below is safe. ASSERT_FALSE(tracing::PerfettoTracedProcess::Get() - ->SystemProducerForTesting() + ->system_producer() ->IsDummySystemProducerForTesting()); auto* producer = static_cast<tracing::PosixSystemProducer*>( - tracing::PerfettoTracedProcess::Get() - ->SystemProducerForTesting()); + tracing::PerfettoTracedProcess::Get()->system_producer()); producer->SetNewSocketForTesting(producer_socket.c_str()); producer->SetDisallowPreAndroidPieForTesting(false); },
diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc index 4b85f236..e6abd33d 100644 --- a/content/browser/web_contents/web_contents_impl.cc +++ b/content/browser/web_contents/web_contents_impl.cc
@@ -4412,7 +4412,8 @@ void WebContentsImpl::DidStartNavigation(NavigationHandle* navigation_handle) { TRACE_EVENT1("navigation", "WebContentsImpl::DidStartNavigation", "navigation_handle", navigation_handle); - favicon_urls_.clear(); + if (navigation_handle->IsInMainFrame()) + favicon_urls_.clear(); for (auto& observer : observers_) observer.DidStartNavigation(navigation_handle);
diff --git a/content/browser/webauth/authenticator_common.cc b/content/browser/webauth/authenticator_common.cc index ee80cdd..b47691c 100644 --- a/content/browser/webauth/authenticator_common.cc +++ b/content/browser/webauth/authenticator_common.cc
@@ -32,7 +32,6 @@ #include "content/public/browser/web_contents.h" #include "content/public/common/content_client.h" #include "content/public/common/content_features.h" -#include "content/public/common/content_switches.h" #include "content/public/common/origin_util.h" #include "crypto/sha2.h" #include "device/base/features.h" @@ -372,9 +371,10 @@ return ret; } -base::flat_set<device::FidoTransportProtocol> GetTransportsEnabledByFlags() { - if (base::CommandLine::ForCurrentProcess()->HasSwitch( - switches::kEnableWebAuthTestingAPI)) { +base::flat_set<device::FidoTransportProtocol> GetTransportsEnabledByFlags( + FrameTreeNode* frame_tree_node) { + if (AuthenticatorEnvironmentImpl::GetInstance()->GetVirtualFactoryFor( + frame_tree_node)) { return device::GetAllTransportProtocols(); } base::flat_set<device::FidoTransportProtocol> transports; @@ -415,7 +415,9 @@ RenderFrameHost* render_frame_host, std::unique_ptr<base::OneShotTimer> timer) : render_frame_host_(render_frame_host), - transports_(GetTransportsEnabledByFlags()), + transports_(GetTransportsEnabledByFlags( + static_cast<RenderFrameHostImpl*>(render_frame_host) + ->frame_tree_node())), security_checker_(static_cast<RenderFrameHostImpl*>(render_frame_host) ->GetWebAuthRequestSecurityChecker()), timer_(std::move(timer)) {
diff --git a/content/browser/webauth/authenticator_environment_impl.cc b/content/browser/webauth/authenticator_environment_impl.cc index 7bbf7a9..31097df4 100644 --- a/content/browser/webauth/authenticator_environment_impl.cc +++ b/content/browser/webauth/authenticator_environment_impl.cc
@@ -10,7 +10,6 @@ #include "base/stl_util.h" #include "content/browser/webauth/virtual_discovery.h" #include "content/browser/webauth/virtual_fido_discovery_factory.h" -#include "content/public/common/content_switches.h" #include "device/fido/fido_discovery_factory.h" namespace content { @@ -26,13 +25,7 @@ return environment.get(); } -AuthenticatorEnvironmentImpl::AuthenticatorEnvironmentImpl() { - if (base::CommandLine::ForCurrentProcess()->HasSwitch( - switches::kEnableWebAuthTestingAPI)) { - replaced_discovery_factory_ = - std::make_unique<VirtualFidoDiscoveryFactory>(); - } -} +AuthenticatorEnvironmentImpl::AuthenticatorEnvironmentImpl() = default; AuthenticatorEnvironmentImpl::~AuthenticatorEnvironmentImpl() = default;
diff --git a/content/browser/webauth/virtual_fido_discovery_factory.cc b/content/browser/webauth/virtual_fido_discovery_factory.cc index 35bacc7..d5134db 100644 --- a/content/browser/webauth/virtual_fido_discovery_factory.cc +++ b/content/browser/webauth/virtual_fido_discovery_factory.cc
@@ -103,19 +103,6 @@ VirtualFidoDiscoveryFactory::Create(device::FidoTransportProtocol transport) { auto discovery = std::make_unique<VirtualFidoDiscovery>(transport); - if (receivers_.empty() && authenticators_.empty() && - base::CommandLine::ForCurrentProcess()->HasSwitch( - switches::kEnableWebAuthTestingAPI)) { - // If no bindings are active then create a virtual device. This is a - // stop-gap measure for running web-platform tests on the chromium CI. - // See crbug.com/1020361 - CreateAuthenticator( - ::device::ProtocolVersion::kCtap2, - ::device::FidoTransportProtocol::kUsbHumanInterfaceDevice, - ::device::AuthenticatorAttachment::kCrossPlatform, - false /* has_resident_key */, false /* has_user_verification */); - } - for (auto& authenticator : authenticators_) { if (discovery->transport() != authenticator.second->transport()) continue;
diff --git a/content/browser/webui/web_ui_unittest.cc b/content/browser/webui/web_ui_unittest.cc new file mode 100644 index 0000000..3fe944f --- /dev/null +++ b/content/browser/webui/web_ui_unittest.cc
@@ -0,0 +1,39 @@ +// Copyright 2020 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include <utility> + +#include "content/public/test/test_web_ui.h" +#include "testing/gtest/include/gtest/gtest.h" + +class WebUITest : public testing::Test { + public: + WebUITest() = default; + ~WebUITest() override = default; + + void SetUp() override { web_ui_ = std::make_unique<content::TestWebUI>(); } + + std::unique_ptr<content::TestWebUI> web_ui_; +}; + +namespace { + +void HandleTestMessage(int number, bool conditional, const std::string& text) { + ASSERT_EQ(11, number); + ASSERT_TRUE(conditional); + ASSERT_EQ("test text", text); +} + +} // namespace + +TEST_F(WebUITest, TestHandler) { + web_ui_->RegisterHandlerCallback("testMessage", + base::BindRepeating(&HandleTestMessage)); + base::Value args(base::Value::Type::LIST); + args.Append(11); + args.Append(true); + args.Append("test text"); + web_ui_->HandleReceivedMessage("testMessage", + &base::Value::AsListValue(args)); +}
diff --git a/content/browser/worker_host/dedicated_worker_host.cc b/content/browser/worker_host/dedicated_worker_host.cc index d55aeb1..ea1c0ef5b 100644 --- a/content/browser/worker_host/dedicated_worker_host.cc +++ b/content/browser/worker_host/dedicated_worker_host.cc
@@ -229,7 +229,8 @@ } // TODO(https://crbug.com/986188): Check if the main script's final response - // URL is commitable. + // URL is committable. + service_->NotifyWorkerFinalResponseURLDetermined(id_, final_response_url); // TODO(cammie): Change this approach when we support shared workers // creating dedicated workers, as there might be no ancestor frame.
diff --git a/content/browser/worker_host/dedicated_worker_service_impl.cc b/content/browser/worker_host/dedicated_worker_service_impl.cc index 5b704e6..37d5484 100644 --- a/content/browser/worker_host/dedicated_worker_service_impl.cc +++ b/content/browser/worker_host/dedicated_worker_service_impl.cc
@@ -4,6 +4,8 @@ #include "content/browser/worker_host/dedicated_worker_service_impl.h" +#include "base/stl_util.h" + namespace content { DedicatedWorkerServiceImpl::DedicatedWorkerServiceImpl() = default; @@ -63,4 +65,13 @@ } } +void DedicatedWorkerServiceImpl::NotifyWorkerFinalResponseURLDetermined( + DedicatedWorkerId dedicated_worker_id, + const GURL& url) { + DCHECK(base::Contains(dedicated_worker_infos_, dedicated_worker_id)); + + for (Observer& observer : observers_) + observer.OnFinalResponseURLDetermined(dedicated_worker_id, url); +} + } // namespace content
diff --git a/content/browser/worker_host/dedicated_worker_service_impl.h b/content/browser/worker_host/dedicated_worker_service_impl.h index bf299b1d..4fb3a35 100644 --- a/content/browser/worker_host/dedicated_worker_service_impl.h +++ b/content/browser/worker_host/dedicated_worker_service_impl.h
@@ -25,14 +25,21 @@ DedicatedWorkerId GenerateNextDedicatedWorkerId(); + // Notifies all observers about a starting worker. void NotifyWorkerStarted(DedicatedWorkerId dedicated_worker_id, int worker_process_id, GlobalFrameRoutingId ancestor_render_frame_host_id); + // Notifies all observers about a terminating worker. void NotifyWorkerTerminating( DedicatedWorkerId dedicated_worker_id, GlobalFrameRoutingId ancestor_render_frame_host_id); + // Notifies all observers that a worker's final response URL was determined. + void NotifyWorkerFinalResponseURLDetermined( + DedicatedWorkerId dedicated_worker_id, + const GURL& url); + private: // Generates IDs for new dedicated workers. DedicatedWorkerId::Generator dedicated_worker_id_generator_;
diff --git a/content/browser/worker_host/dedicated_worker_service_impl_unittest.cc b/content/browser/worker_host/dedicated_worker_service_impl_unittest.cc index e5572fd..24fa2c0 100644 --- a/content/browser/worker_host/dedicated_worker_service_impl_unittest.cc +++ b/content/browser/worker_host/dedicated_worker_service_impl_unittest.cc
@@ -173,6 +173,8 @@ if (on_worker_event_callback_) std::move(on_worker_event_callback_).Run(); } + void OnFinalResponseURLDetermined(DedicatedWorkerId dedicated_worker_id, + const GURL& url) override {} void RunUntilWorkerEvent() { base::RunLoop run_loop;
diff --git a/content/browser/worker_host/shared_worker_host.cc b/content/browser/worker_host/shared_worker_host.cc index 67407cf..6e6ce87 100644 --- a/content/browser/worker_host/shared_worker_host.cc +++ b/content/browser/worker_host/shared_worker_host.cc
@@ -88,9 +88,11 @@ }; SharedWorkerHost::SharedWorkerHost(SharedWorkerServiceImpl* service, + SharedWorkerId id, const SharedWorkerInstance& instance, RenderProcessHost* worker_process_host) : service_(service), + id_(id), instance_(instance), worker_process_host_(worker_process_host), scoped_process_host_ref_( @@ -117,9 +119,9 @@ // Notify the service that each client still connected will be removed and // that the worker will terminate. for (const auto& client : clients_) { - service_->NotifyClientRemoved(instance_, client.render_frame_host_id); + service_->NotifyClientRemoved(id_, client.render_frame_host_id); } - service_->NotifyWorkerTerminating(instance_); + service_->NotifyWorkerTerminating(id_); } else { // Tell clients that this worker failed to start. for (const ClientInfo& info : clients_) @@ -237,10 +239,10 @@ // Notify the service that the worker was started and that some clients were // already connected. - service_->NotifyWorkerStarted(instance_, worker_process_host_->GetID(), + service_->NotifyWorkerStarted(id_, worker_process_host_->GetID(), dev_tools_token_); for (const auto& client : clients_) { - service_->NotifyClientAdded(instance_, client.render_frame_host_id); + service_->NotifyClientAdded(id_, client.render_frame_host_id); } } @@ -436,7 +438,7 @@ // Start() function will handle sending a notification for each existing // client. if (started_) - service_->NotifyClientAdded(instance_, client_render_frame_host_id); + service_->NotifyClientAdded(id_, client_render_frame_host_id); } void SharedWorkerHost::SetAppCacheHandle( @@ -485,7 +487,7 @@ // Notify the service that a client was removed while the worker was // running. if (started_) { - service_->NotifyClientRemoved(instance_, it->render_frame_host_id); + service_->NotifyClientRemoved(id_, it->render_frame_host_id); } clients_.erase(it); break;
diff --git a/content/browser/worker_host/shared_worker_host.h b/content/browser/worker_host/shared_worker_host.h index cd68309c..065bdd789 100644 --- a/content/browser/worker_host/shared_worker_host.h +++ b/content/browser/worker_host/shared_worker_host.h
@@ -22,6 +22,7 @@ #include "content/public/browser/render_process_host.h" #include "content/public/browser/render_process_host_observer.h" #include "content/public/browser/shared_worker_instance.h" +#include "content/public/browser/shared_worker_service.h" #include "media/mojo/mojom/video_decode_perf_history.mojom.h" #include "mojo/public/cpp/bindings/pending_receiver.h" #include "mojo/public/cpp/bindings/pending_remote.h" @@ -54,14 +55,14 @@ class SharedWorkerContentSettingsProxyImpl; class SharedWorkerServiceImpl; -// The SharedWorkerHost is the interface that represents the browser side of -// the browser <-> worker communication channel. This is owned by -// SharedWorkerServiceImpl and destroyed when the connection to the worker in -// the renderer is lost, or the RenderProcessHost of the worker is destroyed. +// SharedWorkerHost is the browser-side host of a single shared worker running +// in the renderer. This class is owned by the SharedWorkerServiceImpl of the +// current BrowserContext. class CONTENT_EXPORT SharedWorkerHost : public blink::mojom::SharedWorkerHost, public RenderProcessHostObserver { public: SharedWorkerHost(SharedWorkerServiceImpl* service, + SharedWorkerId id, const SharedWorkerInstance& instance, RenderProcessHost* worker_process_host); ~SharedWorkerHost() override; @@ -128,6 +129,8 @@ // Returns true if this worker is connected to at least one client. bool HasClients() const; + SharedWorkerId id() const { return id_; } + const SharedWorkerInstance& instance() const { return instance_; } const base::UnguessableToken& dev_tools_token() const { @@ -192,7 +195,13 @@ mojo::Receiver<blink::mojom::SharedWorkerHost> receiver_{this}; // |service_| owns |this|. - SharedWorkerServiceImpl* service_; + SharedWorkerServiceImpl* const service_; + + // An identifier for this worker that is unique within a storage partition. + SharedWorkerId id_; + + // This holds information used to match a shared worker connection request to + // this shared worker. SharedWorkerInstance instance_; ClientList clients_;
diff --git a/content/browser/worker_host/shared_worker_host_unittest.cc b/content/browser/worker_host/shared_worker_host_unittest.cc index 6e3e4e2e..ec9395e 100644 --- a/content/browser/worker_host/shared_worker_host_unittest.cc +++ b/content/browser/worker_host/shared_worker_host_unittest.cc
@@ -53,15 +53,15 @@ GURL url("http://www.example.com/w.js"); SharedWorkerInstance instance( - service_.shared_worker_id_generator_.GenerateNextId(), url, - blink::mojom::ScriptType::kClassic, + url, blink::mojom::ScriptType::kClassic, network::mojom::CredentialsMode::kSameOrigin, "name", url::Origin::Create(url), /*content_security_policy=*/"", network::mojom::ContentSecurityPolicyType::kReport, network::mojom::IPAddressSpace::kPublic, blink::mojom::SharedWorkerCreationContextType::kSecure); - auto host = std::make_unique<SharedWorkerHost>(&service_, instance, - &mock_render_process_host_); + auto host = std::make_unique<SharedWorkerHost>( + &service_, service_.shared_worker_id_generator_.GenerateNextId(), + instance, &mock_render_process_host_); auto weak_host = host->AsWeakPtr(); service_.worker_hosts_.insert(std::move(host)); return weak_host;
diff --git a/content/browser/worker_host/shared_worker_instance_unittest.cc b/content/browser/worker_host/shared_worker_instance_unittest.cc index 1b75d0b9..7943703 100644 --- a/content/browser/worker_host/shared_worker_instance_unittest.cc +++ b/content/browser/worker_host/shared_worker_instance_unittest.cc
@@ -22,8 +22,7 @@ const std::string& name, const url::Origin& constructor_origin) { return SharedWorkerInstance( - shared_worker_id_generator_.GenerateNextId(), script_url, - blink::mojom::ScriptType::kClassic, + script_url, blink::mojom::ScriptType::kClassic, network::mojom::CredentialsMode::kSameOrigin, name, constructor_origin, std::string(), network::mojom::ContentSecurityPolicyType::kReport, network::mojom::IPAddressSpace::kPublic, @@ -42,8 +41,6 @@ } private: - SharedWorkerId::Generator shared_worker_id_generator_; - DISALLOW_COPY_AND_ASSIGN(SharedWorkerInstanceTest); }; @@ -273,8 +270,7 @@ network::mojom::IPAddressSpace::kPublic}; for (auto address_space : kAddressSpaces) { SharedWorkerInstance instance( - SharedWorkerId(), GURL("http://example.com/w.js"), - blink::mojom::ScriptType::kClassic, + GURL("http://example.com/w.js"), blink::mojom::ScriptType::kClassic, network::mojom::CredentialsMode::kSameOrigin, "name", url::Origin::Create(GURL("http://example.com/")), std::string(), network::mojom::ContentSecurityPolicyType::kReport, address_space, @@ -283,30 +279,4 @@ } } -// This test ensures that 2 distinct SharedWorkerInstance using the same file: -// script URL have different identities and can be ordered. -TEST_F(SharedWorkerInstanceTest, StrictWeakOrderingFileURLs) { - GURL script_url("file://path/to/script.js"); - std::string name = "name"; - url::Origin constructor_origin = url::Origin::Create(script_url); - - SharedWorkerInstance instance1 = - CreateInstance(script_url, name, constructor_origin); - SharedWorkerInstance instance2 = - CreateInstance(script_url, name, constructor_origin); - - // file: URLs are treated as opaque. Both instances should not match. - EXPECT_FALSE(instance1.Matches(instance2.url(), instance2.name(), - instance2.constructor_origin())); - EXPECT_FALSE(instance2.Matches(instance1.url(), instance1.name(), - instance1.constructor_origin())); - - // The instances are not equivalent - EXPECT_TRUE(instance1 < instance2 || instance2 < instance1); - - // An instance is equivalent to itself. - EXPECT_FALSE(instance1 < instance1); - EXPECT_FALSE(instance2 < instance2); -} - } // namespace content
diff --git a/content/browser/worker_host/shared_worker_service_impl.cc b/content/browser/worker_host/shared_worker_service_impl.cc index 2a51956..77149e93 100644 --- a/content/browser/worker_host/shared_worker_service_impl.cc +++ b/content/browser/worker_host/shared_worker_service_impl.cc
@@ -79,8 +79,7 @@ void SharedWorkerServiceImpl::EnumerateSharedWorkers(Observer* observer) { for (const auto& host : worker_hosts_) { if (host->started()) { - observer->OnWorkerStarted(host->instance(), - host->GetProcessHost()->GetID(), + observer->OnWorkerStarted(host->id(), host->GetProcessHost()->GetID(), host->dev_tools_token()); } } @@ -196,12 +195,11 @@ /*can_be_default=*/true, &storage_domain, &partition_name, &in_memory); SharedWorkerInstance instance( - shared_worker_id_generator_.GenerateNextId(), info->url, - info->options->type, info->options->credentials, info->options->name, - constructor_origin, info->content_security_policy, + info->url, info->options->type, info->options->credentials, + info->options->name, constructor_origin, info->content_security_policy, info->content_security_policy_type, info->creation_address_space, creation_context_type); - host = CreateWorker(instance, + host = CreateWorker(shared_worker_id_generator_.GenerateNextId(), instance, std::move(info->outside_fetch_client_settings_object), client_render_frame_host_id, storage_domain, message_port, std::move(blob_url_loader_factory)); @@ -216,24 +214,26 @@ } void SharedWorkerServiceImpl::NotifyWorkerStarted( - const SharedWorkerInstance& instance, + SharedWorkerId shared_worker_id, int worker_process_id, const base::UnguessableToken& dev_tools_token) { - for (Observer& observer : observers_) - observer.OnWorkerStarted(instance, worker_process_id, dev_tools_token); + for (Observer& observer : observers_) { + observer.OnWorkerStarted(shared_worker_id, worker_process_id, + dev_tools_token); + } } void SharedWorkerServiceImpl::NotifyWorkerTerminating( - const SharedWorkerInstance& instance) { + SharedWorkerId shared_worker_id) { for (Observer& observer : observers_) - observer.OnBeforeWorkerTerminated(instance); + observer.OnBeforeWorkerTerminated(shared_worker_id); } void SharedWorkerServiceImpl::NotifyClientAdded( - const SharedWorkerInstance& instance, + SharedWorkerId shared_worker_id, GlobalFrameRoutingId client_render_frame_host_id) { auto insertion_result = shared_worker_client_counts_.insert( - {{instance, client_render_frame_host_id}, 0}); + {{shared_worker_id, client_render_frame_host_id}, 0}); int& count = insertion_result.first->second; ++count; @@ -242,15 +242,15 @@ // shared worker. if (insertion_result.second) { for (Observer& observer : observers_) - observer.OnClientAdded(instance, client_render_frame_host_id); + observer.OnClientAdded(shared_worker_id, client_render_frame_host_id); } } void SharedWorkerServiceImpl::NotifyClientRemoved( - const SharedWorkerInstance& instance, + SharedWorkerId shared_worker_id, GlobalFrameRoutingId client_render_frame_host_id) { auto it = shared_worker_client_counts_.find( - std::make_pair(instance, client_render_frame_host_id)); + std::make_pair(shared_worker_id, client_render_frame_host_id)); DCHECK(it != shared_worker_client_counts_.end()); int& count = it->second; @@ -262,11 +262,12 @@ if (count == 0) { shared_worker_client_counts_.erase(it); for (Observer& observer : observers_) - observer.OnClientRemoved(instance, client_render_frame_host_id); + observer.OnClientRemoved(shared_worker_id, client_render_frame_host_id); } } SharedWorkerHost* SharedWorkerServiceImpl::CreateWorker( + SharedWorkerId shared_worker_id, const SharedWorkerInstance& instance, blink::mojom::FetchClientSettingsObjectPtr outside_fetch_client_settings_object, @@ -286,8 +287,9 @@ // because we are about to bounce to the IO thread. If another ConnectToWorker // request arrives in the meantime, it finds and reuses the host instead of // creating a new host and therefore new SharedWorker thread. - auto insertion_result = worker_hosts_.insert( - std::make_unique<SharedWorkerHost>(this, instance, worker_process_host)); + auto insertion_result = + worker_hosts_.insert(std::make_unique<SharedWorkerHost>( + this, shared_worker_id, instance, worker_process_host)); DCHECK(insertion_result.second); SharedWorkerHost* host = insertion_result.first->get(); @@ -335,8 +337,7 @@ std::move(blob_url_loader_factory), url_loader_factory_override_, storage_partition_, storage_domain, base::BindOnce(&SharedWorkerServiceImpl::StartWorker, - weak_factory_.GetWeakPtr(), instance, weak_host, - message_port, + weak_factory_.GetWeakPtr(), weak_host, message_port, std::move(cloned_outside_fetch_client_settings_object))); // Ensures that WorkerScriptFetchInitiator::Start() doesn't synchronously @@ -347,7 +348,6 @@ } void SharedWorkerServiceImpl::StartWorker( - const SharedWorkerInstance& instance, base::WeakPtr<SharedWorkerHost> host, const blink::MessagePortChannel& message_port, blink::mojom::FetchClientSettingsObjectPtr @@ -399,6 +399,8 @@ std::move(subresource_loader_factories), std::move(controller), std::move(controller_service_worker_object_host), std::move(outside_fetch_client_settings_object)); + for (Observer& observer : observers_) + observer.OnFinalResponseURLDetermined(host->id(), final_response_url); } SharedWorkerHost* SharedWorkerServiceImpl::FindMatchingSharedWorkerHost(
diff --git a/content/browser/worker_host/shared_worker_service_impl.h b/content/browser/worker_host/shared_worker_service_impl.h index b216a1e4..68828b1 100644 --- a/content/browser/worker_host/shared_worker_service_impl.h +++ b/content/browser/worker_host/shared_worker_service_impl.h
@@ -74,13 +74,13 @@ // Virtual for testing. virtual void DestroyHost(SharedWorkerHost* host); - void NotifyWorkerStarted(const SharedWorkerInstance& instance, + void NotifyWorkerStarted(SharedWorkerId shared_worker_id, int worker_process_id, const base::UnguessableToken& dev_tools_token); - void NotifyWorkerTerminating(const SharedWorkerInstance& instance); - void NotifyClientAdded(const SharedWorkerInstance& instance, + void NotifyWorkerTerminating(SharedWorkerId shared_worker_id); + void NotifyClientAdded(SharedWorkerId shared_worker_id, GlobalFrameRoutingId render_frame_host_id); - void NotifyClientRemoved(const SharedWorkerInstance& instance, + void NotifyClientRemoved(SharedWorkerId shared_worker_id, GlobalFrameRoutingId render_frame_host_id); StoragePartitionImpl* storage_partition() { return storage_partition_; } @@ -93,6 +93,7 @@ // Creates a new worker in the creator's renderer process. SharedWorkerHost* CreateWorker( + SharedWorkerId shared_worker_id, const SharedWorkerInstance& instance, blink::mojom::FetchClientSettingsObjectPtr outside_fetch_client_settings_object, @@ -102,7 +103,6 @@ scoped_refptr<network::SharedURLLoaderFactory> blob_url_loader_factory); void StartWorker( - const SharedWorkerInstance& instance, base::WeakPtr<SharedWorkerHost> host, const blink::MessagePortChannel& message_port, blink::mojom::FetchClientSettingsObjectPtr @@ -142,7 +142,7 @@ // duplicate OnClientAdded() notifications if the same frame connects multiple // times to the same shared worker. Note that this is a situation unique to // shared worker and cannot happen with dedicated workers and service workers. - base::flat_map<std::pair<SharedWorkerInstance, GlobalFrameRoutingId>, int> + base::flat_map<std::pair<SharedWorkerId, GlobalFrameRoutingId>, int> shared_worker_client_counts_; base::ObserverList<Observer> observers_;
diff --git a/content/browser/worker_host/shared_worker_service_impl_unittest.cc b/content/browser/worker_host/shared_worker_service_impl_unittest.cc index ec16529..6446dc0 100644 --- a/content/browser/worker_host/shared_worker_service_impl_unittest.cc +++ b/content/browser/worker_host/shared_worker_service_impl_unittest.cc
@@ -1272,26 +1272,28 @@ ~TestSharedWorkerServiceObserver() override = default; // SharedWorkerService::Observer: - void OnWorkerStarted(const SharedWorkerInstance& instance, + void OnWorkerStarted(SharedWorkerId shared_worker_id, int worker_process_id, const base::UnguessableToken& dev_tools_token) override { - EXPECT_TRUE(running_workers_.insert({instance, {}}).second); + EXPECT_TRUE(running_workers_.insert({shared_worker_id, {}}).second); } - void OnBeforeWorkerTerminated(const SharedWorkerInstance& instance) override { - EXPECT_EQ(1u, running_workers_.erase(instance)); + void OnBeforeWorkerTerminated(SharedWorkerId shared_worker_id) override { + EXPECT_EQ(1u, running_workers_.erase(shared_worker_id)); } + void OnFinalResponseURLDetermined(SharedWorkerId shared_worker_id, + const GURL& url) override {} void OnClientAdded( - const SharedWorkerInstance& instance, + SharedWorkerId shared_worker_id, GlobalFrameRoutingId client_render_frame_host_id) override { - auto it = running_workers_.find(instance); + auto it = running_workers_.find(shared_worker_id); EXPECT_TRUE(it != running_workers_.end()); std::set<GlobalFrameRoutingId>& clients = it->second; EXPECT_TRUE(clients.insert(client_render_frame_host_id).second); } void OnClientRemoved( - const SharedWorkerInstance& instance, + SharedWorkerId shared_worker_id, GlobalFrameRoutingId client_render_frame_host_id) override { - auto it = running_workers_.find(instance); + auto it = running_workers_.find(shared_worker_id); EXPECT_TRUE(it != running_workers_.end()); std::set<GlobalFrameRoutingId>& clients = it->second; EXPECT_EQ(1u, clients.erase(client_render_frame_host_id)); @@ -1307,7 +1309,7 @@ } private: - base::flat_map<SharedWorkerInstance, std::set<GlobalFrameRoutingId>> + base::flat_map<SharedWorkerId, std::set<GlobalFrameRoutingId>> running_workers_; DISALLOW_COPY_AND_ASSIGN(TestSharedWorkerServiceObserver);
diff --git a/content/child/runtime_features.cc b/content/child/runtime_features.cc index 3299027..141ac8d 100644 --- a/content/child/runtime_features.cc +++ b/content/child/runtime_features.cc
@@ -100,6 +100,11 @@ #endif #if defined(OS_ANDROID) + WebRuntimeFeatures::EnableWebNfc( + base::FeatureList::IsEnabled(features::kWebNfc)); +#endif + +#if defined(OS_ANDROID) // APIs for Web Authentication are not available prior to N. WebRuntimeFeatures::EnableWebAuth( base::FeatureList::IsEnabled(features::kWebAuth) && @@ -274,8 +279,6 @@ {wf::EnableSkipTouchEventFilter, features::kSkipTouchEventFilter, kUseFeatureState}, {wf::EnableSmsReceiver, features::kSmsReceiver, kDisableOnly}, - {wf::EnableDisplayLocking, blink::features::kDisplayLocking, - kUseFeatureState}, {wf::EnableConsolidatedMovementXY, features::kConsolidatedMovementXY, kUseFeatureState}, {wf::EnableCooperativeScheduling, features::kCooperativeScheduling, @@ -307,10 +310,6 @@ features::kBrowserVerifiedUserActivationMouse, kEnableOnly}, {wf::EnablePercentBasedScrolling, features::kPercentBasedScrolling, kUseFeatureState}, -#if defined(OS_ANDROID) - {wf::EnableWebNfc, - features::kWebNfc, kDisableOnly}, -#endif }; for (const auto& mapping : blinkFeatureToBaseFeatureMapping) { const bool featureEnabled = @@ -548,7 +547,6 @@ WebRuntimeFeatures::EnableNetInfoDownlinkMax(true); WebRuntimeFeatures::EnableFetchMetadata(true); WebRuntimeFeatures::EnableFetchMetadataDestination(true); - WebRuntimeFeatures::EnableDisplayLocking(true); } WebRuntimeFeatures::EnableBackForwardCache(
diff --git a/content/common/DEPS b/content/common/DEPS index 58c9ad0d..cadd92e 100644 --- a/content/common/DEPS +++ b/content/common/DEPS
@@ -29,6 +29,7 @@ "+third_party/blink/public/platform/web_fullscreen_video_status.h", "+third_party/blink/public/platform/web_http_body.h", "+third_party/blink/public/platform/web_history_scroll_restoration_type.h", + "+third_party/blink/public/platform/web_insecure_request_policy.h", "+third_party/blink/public/platform/web_intrinsic_sizing_info.h", "+third_party/blink/public/platform/web_mixed_content_context_type.h", "+third_party/blink/public/platform/web_screen_info.h",
diff --git a/content/common/frame_messages.h b/content/common/frame_messages.h index 71f20d53..fa751d0 100644 --- a/content/common/frame_messages.h +++ b/content/common/frame_messages.h
@@ -63,9 +63,9 @@ #include "third_party/blink/public/mojom/input/focus_type.mojom.h" #include "third_party/blink/public/mojom/loader/resource_load_info.mojom-shared.h" #include "third_party/blink/public/mojom/scroll/scrollbar_mode.mojom.h" -#include "third_party/blink/public/mojom/security_context/insecure_request_policy.mojom.h" #include "third_party/blink/public/mojom/web_feature/web_feature.mojom.h" #include "third_party/blink/public/platform/viewport_intersection_state.h" +#include "third_party/blink/public/platform/web_insecure_request_policy.h" #include "third_party/blink/public/platform/web_intrinsic_sizing_info.h" #include "third_party/blink/public/web/web_frame_owner_properties.h" #include "third_party/blink/public/web/web_tree_scope_type.h" @@ -137,8 +137,6 @@ blink::mojom::WebFeature::kMaxValue) IPC_ENUM_TRAITS_MAX_VALUE(network::mojom::RequestDestination, network::mojom::RequestDestination::kMaxValue) -IPC_ENUM_TRAITS_MAX_VALUE(blink::mojom::InsecureRequestPolicy, - blink::mojom::InsecureRequestPolicy::kMaxValue) IPC_STRUCT_TRAITS_BEGIN(content::NavigationDownloadPolicy) IPC_STRUCT_TRAITS_MEMBER(observed_types) @@ -323,8 +321,7 @@ IPC_STRUCT_MEMBER(url::Origin, origin) // The insecure request policy the document for the load is enforcing. - IPC_STRUCT_MEMBER(blink::mojom::InsecureRequestPolicy, - insecure_request_policy) + IPC_STRUCT_MEMBER(blink::WebInsecureRequestPolicy, insecure_request_policy) // The upgrade insecure navigations set the document for the load is // enforcing. @@ -561,7 +558,7 @@ // Update a proxy's replicated enforcement of insecure request policy. // Used when the frame's policy is changed in another process. IPC_MESSAGE_ROUTED1(FrameMsg_EnforceInsecureRequestPolicy, - blink::mojom::InsecureRequestPolicy) + blink::WebInsecureRequestPolicy) // Send to the RenderFrame to set text tracks state and style settings. // Sent for top-level frames.
diff --git a/content/common/frame_replication_state.cc b/content/common/frame_replication_state.cc index abae9b0b..5017cac 100644 --- a/content/common/frame_replication_state.cc +++ b/content/common/frame_replication_state.cc
@@ -5,7 +5,6 @@ #include "content/common/frame_replication_state.h" #include "third_party/blink/public/common/frame/sandbox_flags.h" -#include "third_party/blink/public/mojom/security_context/insecure_request_policy.mojom.h" #include "third_party/blink/public/web/web_tree_scope_type.h" namespace content { @@ -13,8 +12,7 @@ FrameReplicationState::FrameReplicationState() : active_sandbox_flags(blink::mojom::WebSandboxFlags::kNone), scope(blink::WebTreeScopeType::kDocument), - insecure_request_policy( - blink::mojom::InsecureRequestPolicy::kLeaveInsecureRequestsAlone), + insecure_request_policy(blink::kLeaveInsecureRequestsAlone), has_potentially_trustworthy_unique_origin(false), has_received_user_gesture(false), has_received_user_gesture_before_nav(false) {} @@ -23,7 +21,7 @@ blink::WebTreeScopeType scope, const std::string& name, const std::string& unique_name, - blink::mojom::InsecureRequestPolicy insecure_request_policy, + blink::WebInsecureRequestPolicy insecure_request_policy, const std::vector<uint32_t>& insecure_navigations_set, bool has_potentially_trustworthy_unique_origin, bool has_received_user_gesture,
diff --git a/content/common/frame_replication_state.h b/content/common/frame_replication_state.h index 98226da..3400ccb2 100644 --- a/content/common/frame_replication_state.h +++ b/content/common/frame_replication_state.h
@@ -14,7 +14,7 @@ #include "third_party/blink/public/common/frame/frame_owner_element_type.h" #include "third_party/blink/public/common/frame/frame_policy.h" #include "third_party/blink/public/mojom/ad_tagging/ad_frame.mojom-shared.h" -#include "third_party/blink/public/mojom/security_context/insecure_request_policy.mojom-forward.h" +#include "third_party/blink/public/platform/web_insecure_request_policy.h" #include "url/origin.h" namespace blink { @@ -28,16 +28,15 @@ // RenderFrame and any of its associated RenderFrameProxies. struct CONTENT_EXPORT FrameReplicationState { FrameReplicationState(); - FrameReplicationState( - blink::WebTreeScopeType scope, - const std::string& name, - const std::string& unique_name, - blink::mojom::InsecureRequestPolicy insecure_request_policy, - const std::vector<uint32_t>& insecure_navigations_set, - bool has_potentially_trustworthy_unique_origin, - bool has_received_user_gesture, - bool has_received_user_gesture_before_nav, - blink::FrameOwnerElementType owner_type); + FrameReplicationState(blink::WebTreeScopeType scope, + const std::string& name, + const std::string& unique_name, + blink::WebInsecureRequestPolicy insecure_request_policy, + const std::vector<uint32_t>& insecure_navigations_set, + bool has_potentially_trustworthy_unique_origin, + bool has_received_user_gesture, + bool has_received_user_gesture_before_nav, + blink::FrameOwnerElementType owner_type); FrameReplicationState(const FrameReplicationState& other); ~FrameReplicationState(); @@ -124,7 +123,7 @@ // The insecure request policy that a frame's current document is enforcing. // Updates are immediately sent to all frame proxies when frames live in // different processes. - blink::mojom::InsecureRequestPolicy insecure_request_policy; + blink::WebInsecureRequestPolicy insecure_request_policy; // The upgrade insecure navigations set that a frame's current document is // enforcing. Updates are immediately sent to all frame proxies when frames
diff --git a/content/public/browser/dedicated_worker_service.h b/content/public/browser/dedicated_worker_service.h index 98ac744..6ca048c 100644 --- a/content/public/browser/dedicated_worker_service.h +++ b/content/public/browser/dedicated_worker_service.h
@@ -10,6 +10,8 @@ #include "content/common/content_export.h" #include "content/public/browser/global_routing_id.h" +class GURL; + namespace content { using DedicatedWorkerId = util::IdType64<class DedicatedWorkerTag>; @@ -28,6 +30,14 @@ virtual void OnBeforeWorkerTerminated( DedicatedWorkerId dedicated_worker_id, GlobalFrameRoutingId ancestor_render_frame_host_id) = 0; + + // Called when the final response URL (the URL after redirects) was + // determined when fetching the worker's script. + // + // TODO(pmonette): Implement this in derived classes and make it pure. + virtual void OnFinalResponseURLDetermined( + DedicatedWorkerId dedicated_worker_id, + const GURL& url) {} }; // Adds/removes an observer.
diff --git a/content/public/browser/shared_worker_instance.cc b/content/public/browser/shared_worker_instance.cc index 98169913..284730f 100644 --- a/content/public/browser/shared_worker_instance.cc +++ b/content/public/browser/shared_worker_instance.cc
@@ -4,8 +4,6 @@ #include "content/public/browser/shared_worker_instance.h" -#include <tuple> - #include "base/logging.h" #include "content/public/browser/content_browser_client.h" #include "content/public/common/content_client.h" @@ -13,7 +11,6 @@ namespace content { SharedWorkerInstance::SharedWorkerInstance( - SharedWorkerId id, const GURL& url, blink::mojom::ScriptType script_type, network::mojom::CredentialsMode credentials_mode, @@ -23,8 +20,7 @@ network::mojom::ContentSecurityPolicyType security_policy_type, network::mojom::IPAddressSpace creation_address_space, blink::mojom::SharedWorkerCreationContextType creation_context_type) - : id_(id), - url_(url), + : url_(url), script_type_(script_type), credentials_mode_(credentials_mode), name_(name), @@ -46,12 +42,6 @@ SharedWorkerInstance::SharedWorkerInstance(SharedWorkerInstance&& other) = default; -SharedWorkerInstance& SharedWorkerInstance::operator=( - const SharedWorkerInstance& other) = default; - -SharedWorkerInstance& SharedWorkerInstance::operator=( - SharedWorkerInstance&& other) = default; - SharedWorkerInstance::~SharedWorkerInstance() = default; bool SharedWorkerInstance::Matches( @@ -76,9 +66,4 @@ return true; } -bool operator<(const SharedWorkerInstance& lhs, - const SharedWorkerInstance& rhs) { - return lhs.id_ < rhs.id_; -} - } // namespace content
diff --git a/content/public/browser/shared_worker_instance.h b/content/public/browser/shared_worker_instance.h index 739550e..b3f1c35 100644 --- a/content/public/browser/shared_worker_instance.h +++ b/content/public/browser/shared_worker_instance.h
@@ -7,7 +7,6 @@ #include <string> -#include "base/util/type_safety/id_type.h" #include "content/common/content_export.h" #include "services/network/public/mojom/content_security_policy.mojom.h" #include "services/network/public/mojom/fetch_api.mojom.h" @@ -19,14 +18,17 @@ namespace content { -using SharedWorkerId = util::IdType64<class SharedWorkerTag>; - -// SharedWorkerInstance is the browser-side representation of one instance of a +// This class hold the necessary information to decide if a shared worker +// connection request (SharedWorkerConnector::Connect()) matches an existing // shared worker. +// +// Note: There exist one SharedWorkerInstance per SharedWorkerHost but it's +// possible to have 2 distinct SharedWorkerHost that have an identical +// SharedWorkerInstance. An example is if |url_| or |constructor_origin| has a +// "file:" scheme, which is treated as opaque. class CONTENT_EXPORT SharedWorkerInstance { public: SharedWorkerInstance( - SharedWorkerId id, const GURL& url, blink::mojom::ScriptType script_type, network::mojom::CredentialsMode credentials_mode, @@ -38,8 +40,8 @@ blink::mojom::SharedWorkerCreationContextType creation_context_type); SharedWorkerInstance(const SharedWorkerInstance& other); SharedWorkerInstance(SharedWorkerInstance&& other); - SharedWorkerInstance& operator=(const SharedWorkerInstance& other); - SharedWorkerInstance& operator=(SharedWorkerInstance&& other); + SharedWorkerInstance& operator=(const SharedWorkerInstance& other) = delete; + SharedWorkerInstance& operator=(SharedWorkerInstance&& other) = delete; ~SharedWorkerInstance(); // Checks if this SharedWorkerInstance matches the passed url, name, and @@ -73,34 +75,23 @@ } private: - // Compares SharedWorkerInstances using the |id_|. - CONTENT_EXPORT friend bool operator<(const SharedWorkerInstance& lhs, - const SharedWorkerInstance& rhs); - - // An internal ID that is unique within a storage partition. It is needed to - // differentiate 2 SharedWorkerInstance that have the same url, name and - // constructor origin but actually represent different workers. This is - // possible with a file: |url| or |constructor_origin| since they are treated - // as opaque in this class. - SharedWorkerId id_; - - GURL url_; - blink::mojom::ScriptType script_type_; + const GURL url_; + const blink::mojom::ScriptType script_type_; // Used for fetching the top-level worker script. - network::mojom::CredentialsMode credentials_mode_; + const network::mojom::CredentialsMode credentials_mode_; - std::string name_; + const std::string name_; // The origin of the document that created this shared worker instance. Used // for security checks. See Matches() for details. // https://html.spec.whatwg.org/multipage/workers.html#concept-sharedworkerglobalscope-constructor-origin - url::Origin constructor_origin_; + const url::Origin constructor_origin_; - std::string content_security_policy_; - network::mojom::ContentSecurityPolicyType content_security_policy_type_; - network::mojom::IPAddressSpace creation_address_space_; - blink::mojom::SharedWorkerCreationContextType creation_context_type_; + const std::string content_security_policy_; + const network::mojom::ContentSecurityPolicyType content_security_policy_type_; + const network::mojom::IPAddressSpace creation_address_space_; + const blink::mojom::SharedWorkerCreationContextType creation_context_type_; }; } // namespace content
diff --git a/content/public/browser/shared_worker_service.h b/content/public/browser/shared_worker_service.h index e1f5ae1..abc8b85 100644 --- a/content/public/browser/shared_worker_service.h +++ b/content/public/browser/shared_worker_service.h
@@ -8,6 +8,7 @@ #include <string> #include "base/observer_list_types.h" +#include "base/util/type_safety/id_type.h" #include "content/common/content_export.h" #include "content/public/browser/global_routing_id.h" @@ -23,7 +24,7 @@ namespace content { -class SharedWorkerInstance; +using SharedWorkerId = util::IdType64<class SharedWorkerTag>; // An interface for managing shared workers. These may be run in a separate // process, since multiple renderer processes can be talking to a single shared @@ -38,20 +39,26 @@ // running in the renderer. This differs a bit from the "started" state of // the embedded worker. virtual void OnWorkerStarted( - const SharedWorkerInstance& instance, + SharedWorkerId shared_worker_id, int worker_process_id, const base::UnguessableToken& dev_tools_token) = 0; - virtual void OnBeforeWorkerTerminated( - const SharedWorkerInstance& instance) = 0; + virtual void OnBeforeWorkerTerminated(SharedWorkerId shared_worker_id) = 0; + + // Called when the final response URL (the URL after redirects) was + // determined when fetching the worker's script. + // + // TODO(pmonette): Implement this in derived classes and make it pure. + virtual void OnFinalResponseURLDetermined(SharedWorkerId shared_worker_id, + const GURL& url) {} // Called when a frame starts/stop being a client of a shared worker. It is // guaranteed that OnWorkerStarted() is called before receiving these // notifications. virtual void OnClientAdded( - const SharedWorkerInstance& instance, + SharedWorkerId shared_worker_id, content::GlobalFrameRoutingId render_frame_host_id) = 0; virtual void OnClientRemoved( - const SharedWorkerInstance& instance, + SharedWorkerId shared_worker_id, content::GlobalFrameRoutingId render_frame_host_id) = 0; };
diff --git a/content/public/browser/web_ui.h b/content/public/browser/web_ui.h index 12ea870..4e6aa0e2 100644 --- a/content/public/browser/web_ui.h +++ b/content/public/browser/web_ui.h
@@ -7,21 +7,19 @@ #include <memory> #include <string> +#include <utility> #include <vector> +#include "base/bind.h" #include "base/callback.h" #include "base/strings/string16.h" #include "base/strings/string_piece.h" +#include "base/values.h" #include "content/common/content_export.h" #include "ui/base/page_transition_types.h" class GURL; -namespace base { -class ListValue; -class Value; -} - namespace content { class WebContents; @@ -82,6 +80,16 @@ virtual void RegisterMessageCallback(base::StringPiece message, const MessageCallback& callback) = 0; + template <typename... Args> + void RegisterHandlerCallback( + base::StringPiece message, + base::RepeatingCallback<void(Args...)> callback) { + RegisterMessageCallback( + message, base::BindRepeating( + &Call<std::index_sequence_for<Args...>, Args...>::Impl, + callback, message)); + } + // This is only needed if an embedder overrides handling of a WebUIMessage and // then later wants to undo that, or to route it to a different WebUI object. virtual void ProcessWebUIMessage(const GURL& source_url, @@ -125,6 +133,40 @@ // Allows mutable access to this WebUI's message handlers for testing. virtual std::vector<std::unique_ptr<WebUIMessageHandler>>* GetHandlersForTesting() = 0; + + private: + template <typename T> + static T GetValue(const base::Value& value); + + template <> + inline bool GetValue<bool>(const base::Value& value) { + return value.GetBool(); + } + + template <> + inline int GetValue<int>(const base::Value& value) { + return value.GetInt(); + } + + template <> + inline const std::string& GetValue<const std::string&>( + const base::Value& value) { + return value.GetString(); + } + + template <typename Is, typename... Args> + struct Call; + + template <size_t... Is, typename... Args> + struct Call<std::index_sequence<Is...>, Args...> { + static void Impl(base::RepeatingCallback<void(Args...)> callback, + base::StringPiece message, + const base::ListValue* list) { + base::span<const base::Value> args = list->GetList(); + CHECK_EQ(args.size(), sizeof...(Args)) << message; + callback.Run(GetValue<Args>(args[Is])...); + } + }; }; } // namespace content
diff --git a/content/public/common/content_features.cc b/content/public/common/content_features.cc index a65c846..7bfac85 100644 --- a/content/public/common/content_features.cc +++ b/content/public/common/content_features.cc
@@ -832,10 +832,9 @@ const base::Feature kForce60HzRefreshRate{"Force60HzRefreshRate", base::FEATURE_DISABLED_BY_DEFAULT}; -// Kill switch for the WebNFC feature. This feature can be enabled for all sites -// using the kEnableExperimentalWebPlatformFeatures flag or by a particular site -// if it includes an Origin Trial key. https://w3c.github.io/web-nfc/ -const base::Feature kWebNfc{"WebNFC", base::FEATURE_ENABLED_BY_DEFAULT}; +// Controls whether the WebNFC API is enabled: +// https://w3c.github.io/web-nfc/ +const base::Feature kWebNfc{"WebNFC", base::FEATURE_DISABLED_BY_DEFAULT}; #endif // defined(OS_ANDROID) #if defined(OS_CHROMEOS)
diff --git a/content/public/common/content_switches.cc b/content/public/common/content_switches.cc index f7a71a4..3915630b 100644 --- a/content/public/common/content_switches.cc +++ b/content/public/common/content_switches.cc
@@ -450,10 +450,6 @@ // Enable the Vtune profiler support. const char kEnableVtune[] = "enable-vtune-support"; -// Enable the Web Authentication Testing API. -// https://w3c.github.io/webauthn -const char kEnableWebAuthTestingAPI[] = "enable-web-authentication-testing-api"; - // Enable WebGL2 Compute context. const char kEnableWebGL2ComputeContext[] = "enable-webgl2-compute-context";
diff --git a/content/public/common/content_switches.h b/content/public/common/content_switches.h index cd68675..b2f61c83 100644 --- a/content/public/common/content_switches.h +++ b/content/public/common/content_switches.h
@@ -140,7 +140,6 @@ CONTENT_EXPORT extern const char kEnableUseZoomForDSF[]; CONTENT_EXPORT extern const char kEnableViewport[]; CONTENT_EXPORT extern const char kEnableVtune[]; -CONTENT_EXPORT extern const char kEnableWebAuthTestingAPI[]; CONTENT_EXPORT extern const char kEnableWebGL2ComputeContext[]; CONTENT_EXPORT extern const char kEnableWebGLDraftExtensions[]; CONTENT_EXPORT extern const char kEnableWebGLImageChromium[];
diff --git a/content/public/test/browser_test_utils.cc b/content/public/test/browser_test_utils.cc index 20429a5..f4b6a21 100644 --- a/content/public/test/browser_test_utils.cc +++ b/content/public/test/browser_test_utils.cc
@@ -2386,6 +2386,10 @@ void RenderProcessHostWatcher::Wait() { run_loop_.Run(); + + DCHECK(allow_renderer_crashes_) + << "RenderProcessHostWatcher::Wait() may only be called once"; + allow_renderer_crashes_.reset(); } void RenderProcessHostWatcher::RenderProcessReady(RenderProcessHost* host) {
diff --git a/content/renderer/input/frame_input_handler_impl.cc b/content/renderer/input/frame_input_handler_impl.cc index 1d98b814..e0f8cf5 100644 --- a/content/renderer/input/frame_input_handler_impl.cc +++ b/content/renderer/input/frame_input_handler_impl.cc
@@ -10,7 +10,6 @@ #include "base/logging.h" #include "content/common/input/ime_text_span_conversions.h" #include "content/common/input/input_handler.mojom.h" -#include "content/renderer/compositor/layer_tree_view.h" #include "content/renderer/ime_event_guard.h" #include "content/renderer/input/widget_input_handler_manager.h" #include "content/renderer/render_thread_impl.h"
diff --git a/content/renderer/input/render_widget_input_handler.cc b/content/renderer/input/render_widget_input_handler.cc index 0d870984..c16638f 100644 --- a/content/renderer/input/render_widget_input_handler.cc +++ b/content/renderer/input/render_widget_input_handler.cc
@@ -19,7 +19,6 @@ #include "content/public/common/content_switches.h" #include "content/public/common/input_event_ack_state.h" #include "content/public/renderer/render_frame.h" -#include "content/renderer/compositor/layer_tree_view.h" #include "content/renderer/ime_event_guard.h" #include "content/renderer/input/render_widget_input_handler_delegate.h" #include "content/renderer/render_frame_proxy.h"
diff --git a/content/renderer/input/widget_input_handler_impl.cc b/content/renderer/input/widget_input_handler_impl.cc index 3f99c8a..a0fc212 100644 --- a/content/renderer/input/widget_input_handler_impl.cc +++ b/content/renderer/input/widget_input_handler_impl.cc
@@ -10,7 +10,6 @@ #include "base/logging.h" #include "content/common/input/ime_text_span_conversions.h" #include "content/common/input_messages.h" -#include "content/renderer/compositor/layer_tree_view.h" #include "content/renderer/ime_event_guard.h" #include "content/renderer/input/widget_input_handler_manager.h" #include "content/renderer/render_thread_impl.h"
diff --git a/content/renderer/input/widget_input_handler_manager.cc b/content/renderer/input/widget_input_handler_manager.cc index e7d9375..005c531 100644 --- a/content/renderer/input/widget_input_handler_manager.cc +++ b/content/renderer/input/widget_input_handler_manager.cc
@@ -10,7 +10,6 @@ #include "base/logging.h" #include "base/metrics/histogram_macros.h" #include "content/common/input_messages.h" -#include "content/renderer/compositor/layer_tree_view.h" #include "content/renderer/ime_event_guard.h" #include "content/renderer/input/widget_input_handler_impl.h" #include "content/renderer/render_thread_impl.h"
diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc index dccea8b1..aafa807 100644 --- a/content/renderer/render_frame_impl.cc +++ b/content/renderer/render_frame_impl.cc
@@ -90,7 +90,6 @@ #include "content/renderer/accessibility/aom_content_ax_tree.h" #include "content/renderer/accessibility/render_accessibility_impl.h" #include "content/renderer/accessibility/render_accessibility_manager.h" -#include "content/renderer/compositor/layer_tree_view.h" #include "content/renderer/content_security_policy_util.h" #include "content/renderer/context_menu_params_builder.h" #include "content/renderer/crash_helpers.h" @@ -1366,7 +1365,7 @@ render_frame->InitializeBlameContext(nullptr); WebLocalFrame* web_frame = WebLocalFrame::CreateMainFrame( - render_view->webview(), render_frame, + render_view->GetWebView(), render_frame, render_frame->blink_interface_registry_.get(), opener, // This conversion is a little sad, as this often comes from a // WebString... @@ -1394,7 +1393,7 @@ // The WebFrame created here was already attached to the Page as its // main frame, and the WebFrameWidget has been initialized, so we can call // WebViewImpl's DidAttachLocalMainFrame(). - render_view->webview()->DidAttachLocalMainFrame(); + render_view->GetWebView()->DidAttachLocalMainFrame(); // The RenderWidget should start with valid VisualProperties, including a // non-zero size. While RenderWidget would not normally receive IPCs and @@ -1992,7 +1991,7 @@ PepperPluginInstanceImpl* plugin) { // Get the URL of the main frame if possible. blink::WebURL main_frame_url; - WebFrame* main_frame = render_view()->webview()->MainFrame(); + WebFrame* main_frame = render_view()->GetWebView()->MainFrame(); if (main_frame->IsWebLocalFrame()) main_frame_url = main_frame->ToWebLocalFrame()->GetDocument().Url(); @@ -2397,7 +2396,7 @@ frame_->SendPings(custom_context.link_followed); } - render_view()->webview()->DidCloseContextMenu(); + render_view()->GetWebView()->DidCloseContextMenu(); } void RenderFrameImpl::OnCustomContextMenuAction( @@ -2411,7 +2410,7 @@ client->OnMenuAction(custom_context.request_id, action); } else { // Internal request, forward to WebKit. - render_view_->webview()->PerformCustomContextMenuAction(action); + render_view_->GetWebView()->PerformCustomContextMenuAction(action); } } @@ -2669,41 +2668,41 @@ RenderFrameProxy* source_frame = RenderFrameProxy::FromRoutingID(source_routing_id); if (!source_frame) { - render_view_->webview()->SetInitialFocus( + render_view_->GetWebView()->SetInitialFocus( type == blink::mojom::FocusType::kBackward); return; } - render_view_->webview()->AdvanceFocusAcrossFrames( + render_view_->GetWebView()->AdvanceFocusAcrossFrames( type, source_frame->web_frame(), frame_); } void RenderFrameImpl::OnTextTrackSettingsChanged( const FrameMsg_TextTrackSettings_Params& params) { DCHECK(!frame_->Parent()); - if (!render_view_->webview()) + if (!render_view_->GetWebView()) return; if (params.text_tracks_enabled) { - render_view_->webview()->GetSettings()->SetTextTrackKindUserPreference( + render_view_->GetWebView()->GetSettings()->SetTextTrackKindUserPreference( WebSettings::TextTrackKindUserPreference::kCaptions); } else { - render_view_->webview()->GetSettings()->SetTextTrackKindUserPreference( + render_view_->GetWebView()->GetSettings()->SetTextTrackKindUserPreference( WebSettings::TextTrackKindUserPreference::kDefault); } - render_view_->webview()->GetSettings()->SetTextTrackBackgroundColor( + render_view_->GetWebView()->GetSettings()->SetTextTrackBackgroundColor( WebString::FromUTF8(params.text_track_background_color)); - render_view_->webview()->GetSettings()->SetTextTrackFontFamily( + render_view_->GetWebView()->GetSettings()->SetTextTrackFontFamily( WebString::FromUTF8(params.text_track_font_family)); - render_view_->webview()->GetSettings()->SetTextTrackFontStyle( + render_view_->GetWebView()->GetSettings()->SetTextTrackFontStyle( WebString::FromUTF8(params.text_track_font_style)); - render_view_->webview()->GetSettings()->SetTextTrackFontVariant( + render_view_->GetWebView()->GetSettings()->SetTextTrackFontVariant( WebString::FromUTF8(params.text_track_font_variant)); - render_view_->webview()->GetSettings()->SetTextTrackTextColor( + render_view_->GetWebView()->GetSettings()->SetTextTrackTextColor( WebString::FromUTF8(params.text_track_text_color)); - render_view_->webview()->GetSettings()->SetTextTrackTextShadow( + render_view_->GetWebView()->GetSettings()->SetTextTrackTextShadow( WebString::FromUTF8(params.text_track_text_shadow)); - render_view_->webview()->GetSettings()->SetTextTrackTextSize( + render_view_->GetWebView()->GetSettings()->SetTextTrackTextSize( WebString::FromUTF8(params.text_track_text_size)); } @@ -4934,7 +4933,7 @@ } blink::WebString RenderFrameImpl::UserAgentOverride() { - if (!render_view_->webview() || !render_view_->webview()->MainFrame() || + if (!render_view_->GetWebView() || !render_view_->GetWebView()->MainFrame() || render_view_->renderer_preferences_.user_agent_override.empty()) { return blink::WebString(); } @@ -4943,10 +4942,10 @@ // WebDocumentLoader associated with it, so the checks below are not valid. // Temporarily return early and fix properly as part of // https://crbug.com/426555. - if (render_view_->webview()->MainFrame()->IsWebRemoteFrame()) + if (render_view_->GetWebView()->MainFrame()->IsWebRemoteFrame()) return blink::WebString(); WebLocalFrame* main_frame = - render_view_->webview()->MainFrame()->ToWebLocalFrame(); + render_view_->GetWebView()->MainFrame()->ToWebLocalFrame(); WebDocumentLoader* document_loader = main_frame->GetDocumentLoader(); InternalDocumentStateData* internal_data = @@ -5306,7 +5305,7 @@ UpdateNavigationHistory(item, commit_type); if (internal_data->must_reset_scroll_and_scale_state()) { - render_view_->webview()->ResetScrollAndScaleState(); + render_view_->GetWebView()->ResetScrollAndScaleState(); internal_data->set_must_reset_scroll_and_scale_state(false); } if (!frame_->Parent()) { // Only for top frames. @@ -5341,13 +5340,13 @@ // existing autoplay flags on the Page. This is because flags are stored at // the page level so subframes would only add to them. if (!frame_->Parent() && !navigation_state->WasWithinSameDocument()) { - render_view_->webview()->ClearAutoplayFlags(); + render_view_->GetWebView()->ClearAutoplayFlags(); } // Set the correct autoplay flags on the Page and wipe the cached origin so // this will not be used incorrectly. if (url::Origin(frame_->GetSecurityOrigin()) == autoplay_flags_.first) { - render_view_->webview()->AddAutoplayFlags(autoplay_flags_.second); + render_view_->GetWebView()->AddAutoplayFlags(autoplay_flags_.second); autoplay_flags_.first = url::Origin(); } } @@ -5505,7 +5504,7 @@ // its main frame, and the WebFrameWidget was previously initialized when // the frame was created, so we can call WebViewImpl's // DidAttachLocalMainFrame(). - render_view_->webview()->DidAttachLocalMainFrame(); + render_view_->GetWebView()->DidAttachLocalMainFrame(); } return true; @@ -6149,7 +6148,9 @@ rect_for_scrolled_focused_editable_node_ = rect; has_scrolled_focused_editable_node_into_rect_ = true; - if (!GetLocalRootRenderWidget()->HasPendingPageScaleAnimation() && + if (!GetLocalRootRenderWidget() + ->layer_tree_host() + ->HasPendingPageScaleAnimation() && autofill_client) { autofill_client->DidCompleteFocusChangeInFrame(); } @@ -6172,7 +6173,7 @@ void RenderFrameImpl::PrepareRenderViewForNavigation( const GURL& url, const mojom::CommitNavigationParams& commit_params) { - DCHECK(render_view_->webview()); + DCHECK(render_view_->GetWebView()); render_view_->history_list_offset_ = commit_params.current_history_list_offset;
diff --git a/content/renderer/render_frame_impl_browsertest.cc b/content/renderer/render_frame_impl_browsertest.cc index 6215eb4..4d0f0abb 100644 --- a/content/renderer/render_frame_impl_browsertest.cc +++ b/content/renderer/render_frame_impl_browsertest.cc
@@ -157,7 +157,7 @@ } static int32_t AutoplayFlagsForFrame(TestRenderFrame* frame) { - return frame->render_view()->webview()->AutoplayFlagsForTest(); + return frame->render_view()->GetWebView()->AutoplayFlagsForTest(); } #if defined(OS_ANDROID)
diff --git a/content/renderer/render_frame_proxy.cc b/content/renderer/render_frame_proxy.cc index 60888e8..27cb8bc 100644 --- a/content/renderer/render_frame_proxy.cc +++ b/content/renderer/render_frame_proxy.cc
@@ -36,7 +36,6 @@ #include "third_party/blink/public/common/feature_policy/feature_policy.h" #include "third_party/blink/public/common/frame/frame_policy.h" #include "third_party/blink/public/common/navigation/triggering_event_info.h" -#include "third_party/blink/public/mojom/security_context/insecure_request_policy.mojom.h" #include "third_party/blink/public/platform/url_conversion.h" #include "third_party/blink/public/platform/web_rect.h" #include "third_party/blink/public/platform/web_string.h" @@ -429,7 +428,7 @@ } void RenderFrameProxy::OnEnforceInsecureRequestPolicy( - blink::mojom::InsecureRequestPolicy policy) { + blink::WebInsecureRequestPolicy policy) { web_frame_->SetReplicatedInsecureRequestPolicy(policy); }
diff --git a/content/renderer/render_frame_proxy.h b/content/renderer/render_frame_proxy.h index 708d49d..8fce01a 100644 --- a/content/renderer/render_frame_proxy.h +++ b/content/renderer/render_frame_proxy.h
@@ -26,7 +26,7 @@ #include "third_party/blink/public/mojom/frame/frame.mojom.h" #include "third_party/blink/public/mojom/frame/user_activation_update_types.mojom.h" #include "third_party/blink/public/mojom/input/focus_type.mojom-forward.h" -#include "third_party/blink/public/mojom/security_context/insecure_request_policy.mojom-forward.h" +#include "third_party/blink/public/platform/web_insecure_request_policy.h" #include "third_party/blink/public/web/web_remote_frame.h" #include "third_party/blink/public/web/web_remote_frame_client.h" #include "url/origin.h" @@ -227,8 +227,7 @@ void OnCompositorFrameSwapped(const IPC::Message& message); void OnUpdateOpener(int opener_routing_id); void OnDidUpdateName(const std::string& name, const std::string& unique_name); - void OnEnforceInsecureRequestPolicy( - blink::mojom::InsecureRequestPolicy policy); + void OnEnforceInsecureRequestPolicy(blink::WebInsecureRequestPolicy policy); void OnTransferUserActivationFrom(int32_t source_routing_id); // mojom::RenderFrameProxy implementation:
diff --git a/content/renderer/render_view_browsertest.cc b/content/renderer/render_view_browsertest.cc index 75b2468..5ec5092 100644 --- a/content/renderer/render_view_browsertest.cc +++ b/content/renderer/render_view_browsertest.cc
@@ -452,7 +452,7 @@ } int GetScrollbarWidth() { - blink::WebView* webview = view()->webview(); + blink::WebView* webview = view()->GetWebView(); return webview->MainFrameWidget()->Size().width - webview->MainFrame()->ToWebLocalFrame()->VisibleContentRect().width; } @@ -467,7 +467,7 @@ RenderViewImplTest::SetUp(); } - blink::WebSettings* settings() { return view()->webview()->GetSettings(); } + blink::WebSettings* settings() { return view()->GetWebView()->GetSettings(); } protected: // Blink settings may be specified on the command line, which must @@ -606,7 +606,7 @@ args.browser_controls_constraint = cc::BrowserControlsState::kHidden; args.scroll_gesture_did_end = false; - view()->webview()->MainFrameWidget()->ApplyViewportChanges(args); + view()->GetWebView()->MainFrameWidget()->ApplyViewportChanges(args); EXPECT_TRUE(child_proxy_1->is_pinch_gesture_active_for_testing()); // Create a new remote child, and get its proxy. Unloading will force creation @@ -623,7 +623,7 @@ // Reset the flag, make sure both children respond. args.is_pinch_gesture_active = false; - view()->webview()->MainFrameWidget()->ApplyViewportChanges(args); + view()->GetWebView()->MainFrameWidget()->ApplyViewportChanges(args); EXPECT_FALSE(child_proxy_1->is_pinch_gesture_active_for_testing()); EXPECT_FALSE(child_proxy_2->is_pinch_gesture_active_for_testing()); } @@ -1179,7 +1179,7 @@ ReconstructReplicationStateForTesting(frame()); // replication_state.origin = url::Origin(GURL("http://foo.com")); frame()->Unload(kProxyRoutingId, true, replication_state); - EXPECT_TRUE(view()->webview()->MainFrame()->IsWebRemoteFrame()); + EXPECT_TRUE(view()->GetWebView()->MainFrame()->IsWebRemoteFrame()); // Do the remote-to-local transition for the proxy, which is to create a // provisional local frame. @@ -1219,7 +1219,8 @@ base::RunLoop().RunUntilIdle(); EXPECT_EQ(device_scale, view()->GetMainRenderFrame()->GetDeviceScaleFactor()); - EXPECT_EQ(device_scale, view()->webview()->ZoomFactorForDeviceScaleFactor()); + EXPECT_EQ(device_scale, + view()->GetWebView()->ZoomFactorForDeviceScaleFactor()); double device_pixel_ratio; base::string16 get_dpr = @@ -1232,7 +1233,7 @@ base::string16 get_width = base::ASCIIToUTF16("Number(document.documentElement.clientWidth)"); EXPECT_TRUE(ExecuteJavaScriptAndReturnIntValue(get_width, &width)); - EXPECT_EQ(view()->webview()->MainFrameWidget()->Size().width, + EXPECT_EQ(view()->GetWebView()->MainFrameWidget()->Size().width, width * device_scale); } @@ -1304,7 +1305,7 @@ static_cast<TestRenderFrame*>(view()->GetMainRenderFrame()); main_frame->Unload(kProxyRoutingId, true, ReconstructReplicationStateForTesting(main_frame)); - EXPECT_TRUE(view()->webview()->MainFrame()->IsWebRemoteFrame()); + EXPECT_TRUE(view()->GetWebView()->MainFrame()->IsWebRemoteFrame()); } // Test that our IME backend sends a notification message when the input focus @@ -2737,8 +2738,8 @@ "}" "</style>"); - EXPECT_EQ(1.f, view()->webview()->PageScaleFactor()); - EXPECT_EQ(1.f, view()->webview()->MinimumPageScaleFactor()); + EXPECT_EQ(1.f, view()->GetWebView()->PageScaleFactor()); + EXPECT_EQ(1.f, view()->GetWebView()->MinimumPageScaleFactor()); WebPreferences prefs; prefs.shrinks_viewport_contents_to_fit = true; @@ -2746,9 +2747,9 @@ prefs.default_maximum_page_scale_factor = 5.5f; view()->SetWebkitPreferences(prefs); - EXPECT_EQ(1.f, view()->webview()->PageScaleFactor()); - EXPECT_EQ(1.f, view()->webview()->MinimumPageScaleFactor()); - EXPECT_EQ(5.5f, view()->webview()->MaximumPageScaleFactor()); + EXPECT_EQ(1.f, view()->GetWebView()->PageScaleFactor()); + EXPECT_EQ(1.f, view()->GetWebView()->MinimumPageScaleFactor()); + EXPECT_EQ(5.5f, view()->GetWebView()->MaximumPageScaleFactor()); } TEST_F(RenderViewImplDisableZoomForDSFTest,
diff --git a/content/renderer/render_view_impl.cc b/content/renderer/render_view_impl.cc index f935157..1b73997 100644 --- a/content/renderer/render_view_impl.cc +++ b/content/renderer/render_view_impl.cc
@@ -63,7 +63,6 @@ #include "content/public/renderer/render_view_observer.h" #include "content/public/renderer/render_view_visitor.h" #include "content/public/renderer/window_features_converter.h" -#include "content/renderer/compositor/layer_tree_view.h" #include "content/renderer/drop_data_builder.h" #include "content/renderer/history_serialization.h" #include "content/renderer/ime_event_guard.h" @@ -449,17 +448,17 @@ /*compositing_enabled=*/true, opener_frame ? opener_frame->View() : nullptr); - g_view_map.Get().insert(std::make_pair(webview(), this)); + g_view_map.Get().insert(std::make_pair(GetWebView(), this)); g_routing_id_view_map.Get().insert(std::make_pair(GetRoutingID(), this)); bool local_main_frame = params->main_frame_routing_id != MSG_ROUTING_NONE; // TODO(danakj): Put this in with making the RenderFrame? Does order matter? if (local_main_frame) - webview()->SetDisplayMode(params->visual_properties.display_mode); + GetWebView()->SetDisplayMode(params->visual_properties.display_mode); - ApplyWebPreferences(webkit_preferences_, webview()); - ApplyCommandLineToSettings(webview()->GetSettings()); + ApplyWebPreferences(webkit_preferences_, GetWebView()); + ApplyCommandLineToSettings(GetWebView()->GetSettings()); if (local_main_frame) { main_render_frame_ = RenderFrameImpl::CreateMainFrame( @@ -473,7 +472,7 @@ // TODO(davidben): Move this state from Blink into content. if (params->window_was_created_with_opener) - webview()->SetOpenedByDOM(); + GetWebView()->SetOpenedByDOM(); OnSetRendererPrefs(*params->renderer_preferences); @@ -484,7 +483,7 @@ // We pass this state to Page, but it's only used by the main frame in the // page. if (params->inside_portal) - webview()->SetInsidePortal(true); + GetWebView()->SetInsidePortal(true); #if defined(OS_ANDROID) // TODO(sgurun): crbug.com/325351 Needed only for android webview's deprecated @@ -1018,19 +1017,11 @@ observers_.RemoveObserver(observer); } -blink::WebView* RenderViewImpl::webview() { - return webview_; -} - -const blink::WebView* RenderViewImpl::webview() const { - return webview_; -} - // RenderWidgetOwnerDelegate ----------------------------------------- void RenderViewImpl::SetActiveForWidget(bool active) { - if (webview()) - webview()->SetIsActive(active); + if (GetWebView()) + GetWebView()->SetIsActive(active); } bool RenderViewImpl::SupportsMultipleWindowsForWidget() { @@ -1048,16 +1039,16 @@ void RenderViewImpl::ApplyNewDisplayModeForWidget( blink::mojom::DisplayMode new_display_mode) { - webview()->SetDisplayMode(new_display_mode); + GetWebView()->SetDisplayMode(new_display_mode); } void RenderViewImpl::ApplyAutoResizeLimitsForWidget(const gfx::Size& min_size, const gfx::Size& max_size) { - webview()->EnableAutoResizeMode(min_size, max_size); + GetWebView()->EnableAutoResizeMode(min_size, max_size); } void RenderViewImpl::DisableAutoResizeForWidget() { - webview()->DisableAutoResizeMode(); + GetWebView()->DisableAutoResizeMode(); } void RenderViewImpl::ScrollFocusedNodeIntoViewForWidget() { @@ -1073,7 +1064,7 @@ // WebLocalFrame. // TODO(ajwong): Can this be removed and just check |delegate_| in // RenderWidget instead? - CHECK(webview()->MainFrame()->IsWebLocalFrame()); + CHECK(GetWebView()->MainFrame()->IsWebLocalFrame()); } void RenderViewImpl::DidCommitCompositorFrameForWidget() { @@ -1092,16 +1083,16 @@ void RenderViewImpl::ResizeWebWidgetForWidget( const gfx::Size& widget_size, cc::BrowserControlsParams browser_controls_params) { - webview()->ResizeWithBrowserControls(widget_size, browser_controls_params); + GetWebView()->ResizeWithBrowserControls(widget_size, browser_controls_params); } void RenderViewImpl::SetScreenMetricsEmulationParametersForWidget( bool enabled, const blink::WebDeviceEmulationParams& params) { if (enabled) - webview()->EnableDeviceEmulation(params); + GetWebView()->EnableDeviceEmulation(params); else - webview()->DisableDeviceEmulation(); + GetWebView()->DisableDeviceEmulation(); } // IPC message handlers ----------------------------------------- @@ -1126,13 +1117,13 @@ } void RenderViewImpl::OnSetInitialFocus(bool reverse) { - if (!webview()) + if (!GetWebView()) return; - webview()->SetInitialFocus(reverse); + GetWebView()->SetInitialFocus(reverse); } void RenderViewImpl::OnAudioStateChanged(bool is_audio_playing) { - webview()->AudioStateChanged(is_audio_playing); + GetWebView()->AudioStateChanged(is_audio_playing); } /////////////////////////////////////////////////////////////////////////////// @@ -1166,7 +1157,7 @@ // IPC::Listener ------------------------------------------------------------- bool RenderViewImpl::OnMessageReceived(const IPC::Message& message) { - WebFrame* main_frame = webview() ? webview()->MainFrame() : nullptr; + WebFrame* main_frame = GetWebView() ? GetWebView()->MainFrame() : nullptr; if (main_frame) { GURL active_url; if (main_frame->IsWebLocalFrame()) @@ -1285,7 +1276,7 @@ // used much in Blink, except to enable web testing... perhaps this should // be checked directly in the browser side. if (status == mojom::CreateNewWindowStatus::kReuse) - return webview(); + return GetWebView(); DCHECK(reply); DCHECK_NE(MSG_ROUTING_NONE, reply->route_id); @@ -1347,7 +1338,7 @@ compositor_deps_, std::move(view_params), std::move(show_callback), creator->GetTaskRunner(blink::TaskType::kInternalDefault)); - return view->webview(); + return view->GetWebView(); } blink::WebPagePopup* RenderViewImpl::CreatePopup( @@ -1440,31 +1431,31 @@ // If we change the zoom level for the view, make sure any subsequent subframe // loads reflect the current zoom level. page_zoom_level_ = zoom_level; - webview()->SetZoomLevel(zoom_level); + GetWebView()->SetZoomLevel(zoom_level); for (auto& observer : observers_) observer.OnZoomLevelChanged(); return true; } void RenderViewImpl::SetPreferCompositingToLCDTextEnabled(bool prefer) { - webview()->GetSettings()->SetPreferCompositingToLCDTextEnabled(prefer); + GetWebView()->GetSettings()->SetPreferCompositingToLCDTextEnabled(prefer); } void RenderViewImpl::SetDeviceScaleFactor(bool use_zoom_for_dsf, float device_scale_factor) { if (use_zoom_for_dsf) - webview()->SetZoomFactorForDeviceScaleFactor(device_scale_factor); + GetWebView()->SetZoomFactorForDeviceScaleFactor(device_scale_factor); else - webview()->SetDeviceScaleFactor(device_scale_factor); + GetWebView()->SetDeviceScaleFactor(device_scale_factor); } void RenderViewImpl::PropagatePageZoomToNewlyAttachedFrame( bool use_zoom_for_dsf, float device_scale_factor) { if (use_zoom_for_dsf) - webview()->SetZoomFactorForDeviceScaleFactor(device_scale_factor); + GetWebView()->SetZoomFactorForDeviceScaleFactor(device_scale_factor); else - webview()->SetZoomLevel(page_zoom_level_); + GetWebView()->SetZoomLevel(page_zoom_level_); } void RenderViewImpl::SetValidationMessageDirection( @@ -1648,14 +1639,14 @@ // We don't always want to send the change messages over IPC, only if we've // been put in that mode by getting a |ViewMsg_EnablePreferredSizeChangedMode| // message. - if (!send_preferred_size_changes_ || !webview() || !main_render_frame_) + if (!send_preferred_size_changes_ || !GetWebView() || !main_render_frame_) return; if (!needs_preferred_size_update_) return; needs_preferred_size_update_ = false; - blink::WebSize web_size = webview()->ContentsPreferredMinimumSize(); + blink::WebSize web_size = GetWebView()->ContentsPreferredMinimumSize(); blink::WebRect web_rect(0, 0, web_size.width, web_size.height); main_render_frame_->GetLocalRootRenderWidget()->ConvertViewportToWindow( &web_rect); @@ -1701,7 +1692,7 @@ } blink::WebView* RenderViewImpl::GetWebView() { - return webview(); + return webview_; } bool RenderViewImpl::GetContentStateImmediately() { @@ -1711,7 +1702,7 @@ void RenderViewImpl::ApplyPageVisibilityState( PageVisibilityState visibility_state, bool initial_setting) { - webview()->SetVisibilityState(visibility_state, initial_setting); + GetWebView()->SetVisibilityState(visibility_state, initial_setting); for (auto& observer : observers_) observer.OnPageVisibilityChanged(visibility_state); // Note: RenderWidget visibility is separately set from the IPC handlers, and @@ -1720,7 +1711,7 @@ void RenderViewImpl::OnUpdateWebPreferences(const WebPreferences& prefs) { webkit_preferences_ = prefs; - ApplyWebPreferences(webkit_preferences_, webview()); + ApplyWebPreferences(webkit_preferences_, GetWebView()); } void RenderViewImpl::OnEnablePreferredSizeChangedMode() { @@ -1728,15 +1719,15 @@ return; send_preferred_size_changes_ = true; - if (!webview()) + if (!GetWebView()) return; needs_preferred_size_update_ = true; // We need to ensure |UpdatePreferredSize| gets called. If a layout is needed, // force an update here which will call |DidUpdateMainFrameLayout|. - if (webview()->MainFrameWidget()) { - webview()->MainFrameWidget()->UpdateLifecycle( + if (GetWebView()->MainFrameWidget()) { + GetWebView()->MainFrameWidget()->UpdateLifecycle( WebWidget::LifecycleUpdate::kLayout, blink::DocumentUpdateReason::kSizeChange); } @@ -1771,8 +1762,8 @@ renderer_prefs.active_selection_fg_color, renderer_prefs.inactive_selection_bg_color, renderer_prefs.inactive_selection_fg_color); - if (webview() && webview()->MainFrameWidget()) - webview()->MainFrameWidget()->ThemeChanged(); + if (GetWebView() && GetWebView()->MainFrameWidget()) + GetWebView()->MainFrameWidget()->ThemeChanged(); } #endif @@ -1781,15 +1772,15 @@ blink::SetFocusRingColor(renderer_prefs.focus_ring_color); } - if (webview() && + if (GetWebView() && old_accept_languages != renderer_preferences_.accept_languages) { - webview()->AcceptLanguagesChanged(); + GetWebView()->AcceptLanguagesChanged(); } } void RenderViewImpl::OnMoveOrResizeStarted() { - if (webview()) - webview()->CancelPagePopup(); + if (GetWebView()) + GetWebView()->CancelPagePopup(); } void RenderViewImpl::OnPageVisibilityChanged( @@ -1812,7 +1803,7 @@ // RenderWidget tree like other VisualProperties do, in order to set the // value in each WebView holds a part of the local frame tree. if (!main_render_frame_) - webview()->Resize(viewport_size_for_blink); + GetWebView()->Resize(viewport_size_for_blink); } void RenderViewImpl::ResizeVisualViewportForWidget( @@ -1822,23 +1813,23 @@ // here via RenderViewImpl::OnUpdateLocalMainFramePageVisualProperties(). In // that case, WebViewImpl will need to implement its Size() function based on // something other than the widget size. - webview()->ResizeVisualViewport(scaled_viewport_size); + GetWebView()->ResizeVisualViewport(scaled_viewport_size); } void RenderViewImpl::SetPageFrozen(bool frozen) { - if (webview()) - webview()->SetPageFrozen(frozen); + if (GetWebView()) + GetWebView()->SetPageFrozen(frozen); } void RenderViewImpl::PutPageIntoBackForwardCache() { - if (webview()) - webview()->PutPageIntoBackForwardCache(); + if (GetWebView()) + GetWebView()->PutPageIntoBackForwardCache(); } void RenderViewImpl::RestorePageFromBackForwardCache( base::TimeTicks navigation_start) { - if (webview()) - webview()->RestorePageFromBackForwardCache(navigation_start); + if (GetWebView()) + GetWebView()->RestorePageFromBackForwardCache(navigation_start); } // This function receives TextAutosizerPageInfo from the main frame's renderer @@ -1851,17 +1842,17 @@ // corresponds to a local main frame. Since a local main frame will generate // these values for itself, we shouldn't override them with values from // another renderer. - if (!webview()->MainFrame()->IsWebLocalFrame()) - webview()->SetTextAutosizePageInfo(page_info); + if (!GetWebView()->MainFrame()->IsWebLocalFrame()) + GetWebView()->SetTextAutosizePageInfo(page_info); } void RenderViewImpl::OnSetInsidePortal(bool inside_portal) { - webview()->SetInsidePortal(inside_portal); + GetWebView()->SetInsidePortal(inside_portal); } void RenderViewImpl::DidUpdateTextAutosizerPageInfo( const blink::WebTextAutosizerPageInfo& page_info) { - DCHECK(webview()->MainFrame()->IsWebLocalFrame()); + DCHECK(GetWebView()->MainFrame()->IsWebLocalFrame()); Send(new ViewHostMsg_NotifyTextAutosizerPageInfoChangedInLocalMainFrame( GetRoutingID(), page_info)); } @@ -1935,24 +1926,24 @@ void RenderViewImpl::OnAnimateDoubleTapZoomInMainFrame( const gfx::Point& point, const blink::WebRect& bound) { - webview()->AnimateDoubleTapZoom(point, bound); + GetWebView()->AnimateDoubleTapZoom(point, bound); } void RenderViewImpl::OnZoomToFindInPageRect( const blink::WebRect& rect_to_zoom) { - webview()->ZoomToFindInPageRect(rect_to_zoom); + GetWebView()->ZoomToFindInPageRect(rect_to_zoom); } void RenderViewImpl::OnSetBackgroundOpaque(bool opaque) { - if (!webview()) + if (!GetWebView()) return; if (opaque) { - webview()->ClearBaseBackgroundColorOverride(); - webview()->ClearBackgroundColorOverride(); + GetWebView()->ClearBaseBackgroundColorOverride(); + GetWebView()->ClearBackgroundColorOverride(); } else { - webview()->SetBaseBackgroundColorOverride(SK_ColorTRANSPARENT); - webview()->SetBackgroundColorOverride(SK_ColorTRANSPARENT); + GetWebView()->SetBaseBackgroundColorOverride(SK_ColorTRANSPARENT); + GetWebView()->SetBackgroundColorOverride(SK_ColorTRANSPARENT); } }
diff --git a/content/renderer/render_view_impl.h b/content/renderer/render_view_impl.h index 22ff2ca..9c42e83 100644 --- a/content/renderer/render_view_impl.h +++ b/content/renderer/render_view_impl.h
@@ -124,10 +124,6 @@ // Returns the RenderViewImpl for the given routing ID. static RenderViewImpl* FromRoutingID(int routing_id); - // May return NULL when the view is closing. - blink::WebView* webview(); - const blink::WebView* webview() const; - // When true, a hint to all RenderWidgets that they will never be // user-visible and thus never need to produce pixels for display. This is // separate from page visibility, as background pages can be marked visible in
diff --git a/content/renderer/render_widget.cc b/content/renderer/render_widget.cc index c325637a..f2aeb23 100644 --- a/content/renderer/render_widget.cc +++ b/content/renderer/render_widget.cc
@@ -1036,10 +1036,6 @@ return input_handler_->GetFrameSinkIdAtPoint(point, local_point); } -bool RenderWidget::HasPendingPageScaleAnimation() const { - return layer_tree_host_->HasPendingPageScaleAnimation(); -} - bool RenderWidget::HandleInputEvent( const blink::WebCoalescedInputEvent& input_event, const ui::LatencyInfo& latency_info,
diff --git a/content/renderer/render_widget.h b/content/renderer/render_widget.h index 3b6608f..c398cde 100644 --- a/content/renderer/render_widget.h +++ b/content/renderer/render_widget.h
@@ -570,9 +570,6 @@ return last_capture_sequence_number_; } - // Returns true if a page scale animation is active. - bool HasPendingPageScaleAnimation() const; - // MainThreadEventQueueClient overrides. bool HandleInputEvent(const blink::WebCoalescedInputEvent& input_event, const ui::LatencyInfo& latency_info,
diff --git a/content/renderer/render_widget_fullscreen_pepper.cc b/content/renderer/render_widget_fullscreen_pepper.cc index fd88f94..cbdb2df 100644 --- a/content/renderer/render_widget_fullscreen_pepper.cc +++ b/content/renderer/render_widget_fullscreen_pepper.cc
@@ -15,7 +15,6 @@ #include "content/common/widget_messages.h" #include "content/public/common/content_switches.h" #include "content/public/common/use_zoom_for_dsf_policy.h" -#include "content/renderer/compositor/layer_tree_view.h" #include "content/renderer/pepper/pepper_plugin_instance_impl.h" #include "content/renderer/render_thread_impl.h" #include "gpu/ipc/client/gpu_channel_host.h"
diff --git a/content/shell/app/shell_main_delegate.cc b/content/shell/app/shell_main_delegate.cc index 3fca3c28..b7ddbc7 100644 --- a/content/shell/app/shell_main_delegate.cc +++ b/content/shell/app/shell_main_delegate.cc
@@ -260,8 +260,6 @@ "MAP *.test. 127.0.0.1," "MAP *.test 127.0.0.1"); - command_line.AppendSwitch(switches::kEnableWebAuthTestingAPI); - if (!command_line.HasSwitch(switches::kForceGpuRasterization) && !command_line.HasSwitch(switches::kEnableGpuRasterization)) { command_line.AppendSwitch(switches::kDisableGpuRasterization);
diff --git a/content/shell/test_runner/accessibility_controller.cc b/content/shell/test_runner/accessibility_controller.cc index 0c56252..6ad5b4b 100644 --- a/content/shell/test_runner/accessibility_controller.cc +++ b/content/shell/test_runner/accessibility_controller.cc
@@ -292,7 +292,7 @@ } blink::WebView* AccessibilityController::web_view() { - return web_view_test_proxy_->webview(); + return web_view_test_proxy_->GetWebView(); } blink::WebAXObject
diff --git a/content/shell/test_runner/event_sender.cc b/content/shell/test_runner/event_sender.cc index eda52633..7a0e048 100644 --- a/content/shell/test_runner/event_sender.cc +++ b/content/shell/test_runner/event_sender.cc
@@ -1824,7 +1824,7 @@ content::RenderFrameImpl* main_frame = view_proxy->GetMainRenderFrame(); if (main_frame) { main_frame->GetLocalRootRenderWidget()->SetZoomLevelForTesting( - view_proxy->webview()->ZoomLevel() + 1); + view_proxy->GetWebView()->ZoomLevel() + 1); } } } @@ -1837,7 +1837,7 @@ content::RenderFrameImpl* main_frame = view_proxy->GetMainRenderFrame(); if (main_frame) { main_frame->GetLocalRootRenderWidget()->SetZoomLevelForTesting( - view_proxy->webview()->ZoomLevel() - 1); + view_proxy->GetWebView()->ZoomLevel() - 1); } } } @@ -2855,11 +2855,11 @@ } const blink::WebView* EventSender::view() const { - return web_widget_test_proxy_->GetWebViewTestProxy()->webview(); + return web_widget_test_proxy_->GetWebViewTestProxy()->GetWebView(); } blink::WebView* EventSender::view() { - return web_widget_test_proxy_->GetWebViewTestProxy()->webview(); + return web_widget_test_proxy_->GetWebViewTestProxy()->GetWebView(); } blink::WebWidget* EventSender::widget() {
diff --git a/content/shell/test_runner/test_runner.cc b/content/shell/test_runner/test_runner.cc index 2573345..8143419 100644 --- a/content/shell/test_runner/test_runner.cc +++ b/content/shell/test_runner/test_runner.cc
@@ -1706,7 +1706,7 @@ bool allowed = web_test_runtime_flags_.plugins_allowed(); for (WebViewTestProxy* window : test_interfaces_->GetWindowList()) - window->webview()->GetSettings()->SetPluginsEnabled(allowed); + window->GetWebView()->GetSettings()->SetPluginsEnabled(allowed); } } @@ -2167,7 +2167,7 @@ } for (WebViewTestProxy* window : test_interfaces_->GetWindowList()) { - blink::WebFrame* main_frame = window->webview()->MainFrame(); + blink::WebFrame* main_frame = window->GetWebView()->MainFrame(); // TODO(lukasza): Need to make this work for remote frames. if (main_frame->IsWebLocalFrame()) { bool screen_orientation_changed = @@ -2264,7 +2264,7 @@ OnWebTestRuntimeFlagsChanged(); for (WebViewTestProxy* window : test_interfaces_->GetWindowList()) - window->webview()->AcceptLanguagesChanged(); + window->GetWebView()->AcceptLanguagesChanged(); } void TestRunner::SetPluginsEnabled(bool enabled) { @@ -2373,7 +2373,7 @@ web_test_runtime_flags_.set_plugins_allowed(allowed); for (WebViewTestProxy* window : test_interfaces_->GetWindowList()) - window->webview()->GetSettings()->SetPluginsEnabled(allowed); + window->GetWebView()->GetSettings()->SetPluginsEnabled(allowed); OnWebTestRuntimeFlagsChanged(); }
diff --git a/content/shell/test_runner/test_runner_for_specific_view.cc b/content/shell/test_runner/test_runner_for_specific_view.cc index 43bc1bd4..c22088e 100644 --- a/content/shell/test_runner/test_runner_for_specific_view.cc +++ b/content/shell/test_runner/test_runner_for_specific_view.cc
@@ -740,7 +740,7 @@ } blink::WebView* TestRunnerForSpecificView::web_view() { - return web_view_test_proxy_->webview(); + return web_view_test_proxy_->GetWebView(); } WebTestDelegate* TestRunnerForSpecificView::delegate() {
diff --git a/content/shell/test_runner/text_input_controller.cc b/content/shell/test_runner/text_input_controller.cc index 5a7cbc0..21025fb 100644 --- a/content/shell/test_runner/text_input_controller.cc +++ b/content/shell/test_runner/text_input_controller.cc
@@ -407,7 +407,7 @@ } blink::WebView* TextInputController::view() { - return web_view_test_proxy_->webview(); + return web_view_test_proxy_->GetWebView(); } blink::WebInputMethodController*
diff --git a/content/shell/test_runner/web_test_interfaces.cc b/content/shell/test_runner/web_test_interfaces.cc index 60514094..4816f67 100644 --- a/content/shell/test_runner/web_test_interfaces.cc +++ b/content/shell/test_runner/web_test_interfaces.cc
@@ -63,7 +63,7 @@ std::vector<blink::WebView*> WebTestInterfaces::GetWindowList() { std::vector<blink::WebView*> result; for (WebViewTestProxy* proxy : interfaces_->GetWindowList()) - result.push_back(proxy->webview()); + result.push_back(proxy->GetWebView()); return result; }
diff --git a/content/shell/test_runner/web_view_test_proxy.cc b/content/shell/test_runner/web_view_test_proxy.cc index 11524ac..951cf6a7 100644 --- a/content/shell/test_runner/web_view_test_proxy.cc +++ b/content/shell/test_runner/web_view_test_proxy.cc
@@ -74,7 +74,7 @@ } void WebViewTestProxy::DidFocus(blink::WebLocalFrame* calling_frame) { - GetTestRunner()->SetFocus(webview(), true); + GetTestRunner()->SetFocus(GetWebView(), true); RenderViewImpl::DidFocus(calling_frame); } @@ -88,7 +88,7 @@ widget_proxy->Reset(); } - for (blink::WebFrame* frame = webview()->MainFrame(); frame; + for (blink::WebFrame* frame = GetWebView()->MainFrame(); frame; frame = frame->TraverseNext()) { if (frame->IsWebLocalFrame()) delegate_->GetWebWidgetTestProxy(frame->ToWebLocalFrame())->Reset();
diff --git a/content/shell/test_runner/web_widget_test_proxy.cc b/content/shell/test_runner/web_widget_test_proxy.cc index 20de762..301cfd5 100644 --- a/content/shell/test_runner/web_widget_test_proxy.cc +++ b/content/shell/test_runner/web_widget_test_proxy.cc
@@ -221,7 +221,7 @@ // WebView without a main frame, would have no opportunity to execute this // method call. if (delegate()) { - blink::WebView* view = GetWebViewTestProxy()->webview(); + blink::WebView* view = GetWebViewTestProxy()->GetWebView(); if (blink::WebPagePopup* popup = view->GetPagePopup()) { auto* popup_render_widget = static_cast<RenderWidget*>(popup->GetClientForTesting());
diff --git a/content/test/BUILD.gn b/content/test/BUILD.gn index 45bb8f3..08b8ac653 100644 --- a/content/test/BUILD.gn +++ b/content/test/BUILD.gn
@@ -1854,6 +1854,7 @@ "../browser/webrtc/webrtc_internals_unittest.cc", "../browser/webui/web_ui_data_source_unittest.cc", "../browser/webui/web_ui_message_handler_unittest.cc", + "../browser/webui/web_ui_unittest.cc", "../browser/worker_host/dedicated_worker_service_impl_unittest.cc", "../browser/worker_host/mock_shared_worker.cc", "../browser/worker_host/mock_shared_worker.h",
diff --git a/content/test/data/accessibility/display-locking/activatable-activated.html b/content/test/data/accessibility/display-locking/activatable-activated.html index e233996d..72eb623 100644 --- a/content/test/data/accessibility/display-locking/activatable-activated.html +++ b/content/test/data/accessibility/display-locking/activatable-activated.html
@@ -2,10 +2,10 @@ @BLINK-ALLOW:offscreen --> <div> - <div id="locked" rendersubtree="invisible skip-viewport-activation"> + <div id="locked" style="render-subtree: invisible skip-viewport-activation"> <div>child</div> - <div id="nested" rendersubtree="invisible skip-viewport-activation">nested locked element!</div> - <div id="nonActivatable" rendersubtree="invisible skip-activation">nested non activatable locked element</div> + <div id="nested" style="render-subtree: invisible skip-viewport-activation">nested locked element!</div> + <div id="nonActivatable" style="render-subtree: invisible skip-activation">nested non activatable locked element</div> </div> </div>
diff --git a/content/test/data/accessibility/display-locking/activatable.html b/content/test/data/accessibility/display-locking/activatable.html index a868edf..448f53b 100644 --- a/content/test/data/accessibility/display-locking/activatable.html +++ b/content/test/data/accessibility/display-locking/activatable.html
@@ -2,9 +2,9 @@ @BLINK-ALLOW:offscreen --> <div> - <div id="locked" rendersubtree="invisible skip-viewport-activation"> + <div id="locked" style="render-subtree: invisible skip-viewport-activation"> <div>child</div> - <div id="nested" rendersubtree="invisible skip-viewport-activation">nested locked element!</div> - <div id="nonActivatable" rendersubtree="invisible skip-activation">nested non activatable locked element</div> + <div id="nested" style="render-subtree: invisible skip-viewport-activation">nested locked element!</div> + <div id="nonActivatable" style="render-subtree: invisible skip-activation">nested non activatable locked element</div> </div> </div>
diff --git a/content/test/data/accessibility/display-locking/all-committed.html b/content/test/data/accessibility/display-locking/all-committed.html index 5ffc4cf..f4207ad9 100644 --- a/content/test/data/accessibility/display-locking/all-committed.html +++ b/content/test/data/accessibility/display-locking/all-committed.html
@@ -2,10 +2,10 @@ @BLINK-ALLOW:offscreen --> <div> - <div id="locked" rendersubtree="invisible skip-viewport-activation"> + <div id="locked" style="render-subtree: invisible skip-viewport-activation"> <div>child</div> - <div id="nested" rendersubtree="invisible skip-viewport-activation">nested locked element!</div> - <div id="nonActivatable" rendersubtree="invisible skip-activation">nested non activatable locked element</div> + <div id="nested" style="render-subtree: invisible skip-viewport-activation">nested locked element!</div> + <div id="nonActivatable" style="render-subtree: invisible skip-activation">nested non activatable locked element</div> <!-- TODO(rakina): Make display:none, visibility:hidden, aria-hidden nodes in locked subtrees get ignored for accessibility/marked invisible. @@ -21,7 +21,7 @@ <script> // Force layout, then commit everything. - locked.removeAttribute("rendersubtree"); - nested.removeAttribute("rendersubtree"); - nonActivatable.removeAttribute("rendersubtree"); + locked.removeAttribute("style"); + nested.removeAttribute("style"); + nonActivatable.removeAttribute("style"); </script>
diff --git a/content/test/data/accessibility/display-locking/all.html b/content/test/data/accessibility/display-locking/all.html index fbdfd07..4095fe6 100644 --- a/content/test/data/accessibility/display-locking/all.html +++ b/content/test/data/accessibility/display-locking/all.html
@@ -2,10 +2,10 @@ @BLINK-ALLOW:offscreen --> <div> - <div id="locked" rendersubtree="invisible skip-viewport-activation"> + <div id="locked" style="render-subtree: invisible skip-viewport-activation"> <div>child</div> - <div id="nested" rendersubtree="invisible skip-viewport-activation">nested locked element!</div> - <div id="nonActivatable" rendersubtree="invisible skip-activation">nested non activatable locked element</div> + <div id="nested" style="render-subtree: invisible skip-viewport-activation">nested locked element!</div> + <div id="nonActivatable" style="render-subtree: invisible skip-activation">nested non activatable locked element</div> <!-- TODO(rakina): Make display:none, visibility:hidden, aria-hidden nodes in locked subtrees get ignored for accessibility/marked invisible.
diff --git a/content/test/data/accessibility/display-locking/non-activatable.html b/content/test/data/accessibility/display-locking/non-activatable.html index 8597805a..482e48e 100644 --- a/content/test/data/accessibility/display-locking/non-activatable.html +++ b/content/test/data/accessibility/display-locking/non-activatable.html
@@ -2,9 +2,9 @@ @BLINK-ALLOW:offscreen --> <div> - <div id="locked" rendersubtree="invisible skip-activation"> + <div id="locked" style="render-subtree: invisible skip-activation"> <div>child</div> - <div id="nested" rendersubtree="invisible skip-activation">nested locked element!</div> - <div id="activatable" rendersubtree="invisible skip-viewport-activation">activatable locked element</div> + <div id="nested" style="render-subtree: invisible skip-activation">nested locked element!</div> + <div id="activatable" style="render-subtree: invisible skip-viewport-activation">activatable locked element</div> </div> </div>
diff --git a/content/test/test_render_frame_host.cc b/content/test/test_render_frame_host.cc index 3fc0afe6..2db78c1 100644 --- a/content/test/test_render_frame_host.cc +++ b/content/test/test_render_frame_host.cc
@@ -38,7 +38,6 @@ #include "third_party/blink/public/common/frame/frame_policy.h" #include "third_party/blink/public/mojom/bluetooth/web_bluetooth.mojom.h" #include "third_party/blink/public/mojom/frame/frame_owner_properties.mojom.h" -#include "third_party/blink/public/mojom/security_context/insecure_request_policy.mojom.h" #include "third_party/blink/public/platform/web_mixed_content_context_type.h" #include "third_party/blink/public/web/web_tree_scope_type.h" #include "ui/base/page_transition_types.h" @@ -359,7 +358,7 @@ } void TestRenderFrameHost::DidEnforceInsecureRequestPolicy( - blink::mojom::InsecureRequestPolicy policy) { + blink::WebInsecureRequestPolicy policy) { EnforceInsecureRequestPolicy(policy); }
diff --git a/content/test/test_render_frame_host.h b/content/test/test_render_frame_host.h index 4bf93a8..a920a5c 100644 --- a/content/test/test_render_frame_host.h +++ b/content/test/test_render_frame_host.h
@@ -24,7 +24,6 @@ #include "mojo/public/cpp/bindings/pending_receiver.h" #include "mojo/public/cpp/bindings/pending_remote.h" #include "third_party/blink/public/mojom/bluetooth/web_bluetooth.mojom-forward.h" -#include "third_party/blink/public/mojom/security_context/insecure_request_policy.mojom-forward.h" #include "ui/base/page_transition_types.h" namespace net { @@ -121,8 +120,7 @@ void DidChangeOpener(int opener_routing_id); - void DidEnforceInsecureRequestPolicy( - blink::mojom::InsecureRequestPolicy policy); + void DidEnforceInsecureRequestPolicy(blink::WebInsecureRequestPolicy policy); // If set, navigations will appear to have cleared the history list in the // RenderFrame
diff --git a/content/test/test_web_contents.cc b/content/test/test_web_contents.cc index a3185c6..511416f3 100644 --- a/content/test/test_web_contents.cc +++ b/content/test/test_web_contents.cc
@@ -30,7 +30,6 @@ #include "content/public/test/mock_render_process_host.h" #include "content/public/test/navigation_simulator.h" #include "content/test/test_render_view_host.h" -#include "third_party/blink/public/mojom/security_context/insecure_request_policy.mojom.h" #include "ui/base/page_transition_types.h" namespace content { @@ -185,8 +184,7 @@ params.is_overriding_user_agent = false; params.history_list_was_cleared = false; params.origin = url::Origin::Create(url); - params.insecure_request_policy = - blink::mojom::InsecureRequestPolicy::kLeaveInsecureRequestsAlone; + params.insecure_request_policy = blink::kLeaveInsecureRequestsAlone; params.has_potentially_trustworthy_unique_origin = false; rfh->SendNavigateWithParams(¶ms, was_within_same_document);
diff --git a/content/test/web_test_support.cc b/content/test/web_test_support.cc index 0566c922..9a18bdee 100644 --- a/content/test/web_test_support.cc +++ b/content/test/web_test_support.cc
@@ -241,7 +241,7 @@ // main frame is remote, and doesn't have a corresponding RenderWidget. // Currently none of those tests are run out of headless mode. blink::WebFrame* frame = - web_widget_test_proxy->GetWebViewTestProxy()->webview()->MainFrame(); + web_widget_test_proxy->GetWebViewTestProxy()->GetWebView()->MainFrame(); if (frame->IsWebLocalFrame()) { test_runner::WebWidgetTestProxy* root_widget = GetWebWidgetTestProxy(frame->ToWebLocalFrame());
diff --git a/device/fido/OWNERS b/device/fido/OWNERS index 3dacbaf..6a9c2bae 100644 --- a/device/fido/OWNERS +++ b/device/fido/OWNERS
@@ -1,29 +1,28 @@ -# Webauthn OWNERS +# WebAuthn OWNERS. +# +# Any non-emeriti are reasonable reviewers for WebAuthn-related code. Some +# people are more familiar with certain areas of the code so, if you spot that +# your area of alteration is listed, you should prefer to select that person. -# General, esp chrome/ UI and Android integration. -kpaulhamus@chromium.org - -# TouchID, Windows Hello. +# esp TouchID, Windows Hello. martinkr@google.com # (Secondary email; prefer google.com address.) martinkr@chromium.org -# Attestation and legacy U2F implementation. +# esp attestation and legacy U2F implementation. agl@chromium.org -# Bluetooth. +# esp Bluetooth. kenrb@chromium.org -# chrome/ UI and VirtualAuthenticator environment. +# esp chrome/ UI and VirtualAuthenticator environment. nsatragno@chromium.org + # Emeriti; for occasional reviews -# esp. view & frame lifetimes -engedy@chromium.org -# Bluetooth -jdoerrie@chromium.org -# CTAP2 implementation -hongjunchoi@chromium.org + +# General, esp chrome/ UI and Android integration. +kpaulhamus@chromium.org # TEAM: identity-dev@chromium.org # COMPONENT: Blink>WebAuthentication
diff --git a/device/fido/fido_constants.h b/device/fido/fido_constants.h index e87db48..78c0c3f1 100644 --- a/device/fido/fido_constants.h +++ b/device/fido/fido_constants.h
@@ -117,7 +117,7 @@ kCtap2ErrVendorLast = 0xFF }; -constexpr std::array<CtapDeviceResponseCode, 51> GetCtapResponseCodeList() { +constexpr std::array<CtapDeviceResponseCode, 49> GetCtapResponseCodeList() { return {CtapDeviceResponseCode::kSuccess, CtapDeviceResponseCode::kCtap1ErrInvalidCommand, CtapDeviceResponseCode::kCtap1ErrInvalidParameter, @@ -160,6 +160,7 @@ CtapDeviceResponseCode::kCtap2ErrPinPolicyViolation, CtapDeviceResponseCode::kCtap2ErrPinTokenExpired, CtapDeviceResponseCode::kCtap2ErrRequestTooLarge, + CtapDeviceResponseCode::kCtap2ErrUvBlocked, CtapDeviceResponseCode::kCtap2ErrOther, CtapDeviceResponseCode::kCtap2ErrSpecLast, CtapDeviceResponseCode::kCtap2ErrExtensionFirst,
diff --git a/gpu/command_buffer/service/shared_image_factory.cc b/gpu/command_buffer/service/shared_image_factory.cc index 76dc5afb..1e052def2 100644 --- a/gpu/command_buffer/service/shared_image_factory.cc +++ b/gpu/command_buffer/service/shared_image_factory.cc
@@ -9,6 +9,7 @@ #include "base/strings/stringprintf.h" #include "base/trace_event/memory_dump_manager.h" #include "build/build_config.h" +#include "components/viz/common/gpu/vulkan_context_provider.h" #include "components/viz/common/resources/resource_format_utils.h" #include "gpu/command_buffer/common/gpu_memory_buffer_support.h" #include "gpu/command_buffer/common/shared_image_trace_utils.h" @@ -32,6 +33,7 @@ #elif defined(OS_ANDROID) && BUILDFLAG(ENABLE_VULKAN) #include "gpu/command_buffer/service/external_vk_image_factory.h" #include "gpu/command_buffer/service/shared_image_backing_factory_ahardwarebuffer.h" +#include "gpu/vulkan/vulkan_device_queue.h" #elif defined(OS_MACOSX) #include "gpu/command_buffer/service/shared_image_backing_factory_iosurface.h" #elif defined(OS_CHROMEOS) @@ -103,9 +105,19 @@ if (using_vulkan_) { external_vk_image_factory_ = std::make_unique<ExternalVkImageFactory>(context_state); + const auto& enabled_extensions = context_state->vk_context_provider() + ->GetDeviceQueue() + ->enabled_extensions(); + if (gfx::HasExtension( + enabled_extensions, + VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_EXTENSION_NAME)) { + interop_backing_factory_ = std::make_unique<SharedImageBackingFactoryAHB>( + workarounds, gpu_feature_info); + } + } else { + interop_backing_factory_ = std::make_unique<SharedImageBackingFactoryAHB>( + workarounds, gpu_feature_info); } - interop_backing_factory_ = std::make_unique<SharedImageBackingFactoryAHB>( - workarounds, gpu_feature_info); #elif defined(OS_MACOSX) // OSX DCHECK(!using_vulkan_); @@ -414,10 +426,6 @@ return wrapped_sk_image_factory_.get(); if (using_interop_factory) { - LOG_IF(ERROR, !interop_backing_factory_) - << "Unable to create SharedImage backing: GL / Vulkan interoperability " - "is not supported on this platform"; - // TODO(crbug.com/969114): Not all shared image factory implementations // support concurrent read/write usage. if (usage & SHARED_IMAGE_USAGE_CONCURRENT_READ_WRITE) { @@ -431,17 +439,21 @@ // interop if the format is not supported by the AHB backing factory. auto* ahb_backing_factory = static_cast<SharedImageBackingFactoryAHB*>( interop_backing_factory_.get()); - if (!ahb_backing_factory->IsFormatSupported(format) && - external_vk_image_factory_) { - if (share_between_threads) { - LOG(FATAL) << "ExternalVkImageFactory currently do not support " - "cross-thread usage."; - } - *allow_legacy_mailbox = false; - return external_vk_image_factory_.get(); + if (ahb_backing_factory && ahb_backing_factory->IsFormatSupported(format)) + return ahb_backing_factory; + if (share_between_threads) { + LOG(FATAL) << "ExternalVkImageFactory currently do not support " + "cross-thread usage."; } -#endif + *allow_legacy_mailbox = false; + return external_vk_image_factory_.get(); +#else // defined(OS_ANDROID) + LOG_IF(ERROR, !interop_backing_factory_) + << "Unable to create SharedImage backing: GL / Vulkan interoperability " + "is not supported on this platform"; + return interop_backing_factory_.get(); +#endif // !defined(OS_ANDROID) } return gl_backing_factory_.get();
diff --git a/gpu/ipc/service/gpu_init.cc b/gpu/ipc/service/gpu_init.cc index 0a01ccb..f046b33 100644 --- a/gpu/ipc/service/gpu_init.cc +++ b/gpu/ipc/service/gpu_init.cc
@@ -217,6 +217,12 @@ // execute the pre-sandbox steps now. sandbox_helper_->PreSandboxStartup(); } +#else + // For some reasons MacOSX's VideoToolbox might crash when called after + // initializing GL, see crbug.com/1047643 and crbug.com/871280. On other + // operating systems like Windows and Android the pre-sandbox steps have + // always been executed before initializing GL so keep it this way. + sandbox_helper_->PreSandboxStartup(); #endif // Start the GPU watchdog only after anything that is expected to be time @@ -313,6 +319,7 @@ } } +#if defined(OS_LINUX) // The ContentSandboxHelper is currently the only one implementation of // gpu::GpuSandboxHelper and it has no dependency. Except on Linux where // VaapiWrapper checks the GL implementation to determine which display @@ -329,6 +336,7 @@ if (watchdog_thread_) watchdog_thread_->ResumeWatchdog(); } +#endif bool gl_disabled = gl::GetGLImplementation() == gl::kGLImplementationDisabled;
diff --git a/gpu/vulkan/android/vulkan_implementation_android.cc b/gpu/vulkan/android/vulkan_implementation_android.cc index 39d666ff..f59c60c 100644 --- a/gpu/vulkan/android/vulkan_implementation_android.cc +++ b/gpu/vulkan/android/vulkan_implementation_android.cc
@@ -121,6 +121,11 @@ std::vector<const char*> VulkanImplementationAndroid::GetRequiredDeviceExtensions() { + return {}; +} + +std::vector<const char*> +VulkanImplementationAndroid::GetOptionalDeviceExtensions() { // VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME also requires // VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME as per spec. return {VK_KHR_SWAPCHAIN_EXTENSION_NAME,
diff --git a/gpu/vulkan/android/vulkan_implementation_android.h b/gpu/vulkan/android/vulkan_implementation_android.h index 2f141cf9..80d6510 100644 --- a/gpu/vulkan/android/vulkan_implementation_android.h +++ b/gpu/vulkan/android/vulkan_implementation_android.h
@@ -31,6 +31,7 @@ const std::vector<VkQueueFamilyProperties>& queue_family_properties, uint32_t queue_family_index) override; std::vector<const char*> GetRequiredDeviceExtensions() override; + std::vector<const char*> GetOptionalDeviceExtensions() override; VkFence CreateVkFenceForGpuFence(VkDevice vk_device) override; std::unique_ptr<gfx::GpuFence> ExportVkFenceToGpuFence( VkDevice vk_device,
diff --git a/gpu/vulkan/vulkan_device_queue.cc b/gpu/vulkan/vulkan_device_queue.cc index 55266dac..d599cca 100644 --- a/gpu/vulkan/vulkan_device_queue.cc +++ b/gpu/vulkan/vulkan_device_queue.cc
@@ -30,6 +30,7 @@ uint32_t options, const VulkanInfo& info, const std::vector<const char*>& required_extensions, + const std::vector<const char*>& optional_extensions, bool allow_protected_memory, const GetPresentationSupportCallback& get_presentation_support) { DCHECK_EQ(static_cast<VkPhysicalDevice>(VK_NULL_HANDLE), vk_physical_device_); @@ -102,9 +103,35 @@ #endif // DCHECK_IS_ON() std::vector<const char*> enabled_extensions; - enabled_extensions.insert(std::end(enabled_extensions), - std::begin(required_extensions), - std::end(required_extensions)); + for (const char* extension : required_extensions) { + const auto it = + std::find_if(physical_device_info.extensions.begin(), + physical_device_info.extensions.end(), + [extension](const VkExtensionProperties& p) { + return std::strcmp(extension, p.extensionName) == 0; + }); + if (it == physical_device_info.extensions.end()) { + DLOG(ERROR) << "Required Vulkan extension " << extension + << " is not supported."; + return false; + } + enabled_extensions.push_back(extension); + } + + for (const char* extension : optional_extensions) { + const auto it = + std::find_if(physical_device_info.extensions.begin(), + physical_device_info.extensions.end(), + [extension](const VkExtensionProperties& p) { + return std::strcmp(extension, p.extensionName) == 0; + }); + if (it == physical_device_info.extensions.end()) { + DLOG(ERROR) << "Optional Vulkan extension " << extension + << " is not supported."; + } else { + enabled_extensions.push_back(extension); + } + } uint32_t device_api_version = std::min( info.used_api_version, vk_physical_device_properties_.apiVersion); @@ -185,7 +212,6 @@ cleanup_helper_ = std::make_unique<VulkanFenceHelper>(this); allow_protected_memory_ = allow_protected_memory; - return true; }
diff --git a/gpu/vulkan/vulkan_device_queue.h b/gpu/vulkan/vulkan_device_queue.h index 3fbc53b2..7e76592 100644 --- a/gpu/vulkan/vulkan_device_queue.h +++ b/gpu/vulkan/vulkan_device_queue.h
@@ -41,6 +41,7 @@ uint32_t options, const VulkanInfo& info, const std::vector<const char*>& required_extensions, + const std::vector<const char*>& optional_extensions, bool allow_protected_memory, const GetPresentationSupportCallback& get_presentation_support);
diff --git a/gpu/vulkan/vulkan_implementation.cc b/gpu/vulkan/vulkan_implementation.cc index 2731519..2dde313 100644 --- a/gpu/vulkan/vulkan_implementation.cc +++ b/gpu/vulkan/vulkan_implementation.cc
@@ -31,9 +31,11 @@ base::Unretained(vulkan_implementation)); std::vector<const char*> required_extensions = vulkan_implementation->GetRequiredDeviceExtensions(); + std::vector<const char*> optional_extensions = + vulkan_implementation->GetOptionalDeviceExtensions(); if (!device_queue->Initialize( option, vulkan_implementation->GetVulkanInstance()->vulkan_info(), - std::move(required_extensions), + std::move(required_extensions), std::move(optional_extensions), vulkan_implementation->allow_protected_memory(), callback)) { device_queue->Destroy(); return nullptr;
diff --git a/gpu/vulkan/vulkan_implementation.h b/gpu/vulkan/vulkan_implementation.h index 3bf07c2..f26d6e7c 100644 --- a/gpu/vulkan/vulkan_implementation.h +++ b/gpu/vulkan/vulkan_implementation.h
@@ -70,6 +70,7 @@ uint32_t queue_family_index) = 0; virtual std::vector<const char*> GetRequiredDeviceExtensions() = 0; + virtual std::vector<const char*> GetOptionalDeviceExtensions() = 0; // Creates a VkFence that is exportable to a gfx::GpuFence. virtual VkFence CreateVkFenceForGpuFence(VkDevice vk_device) = 0;
diff --git a/gpu/vulkan/win32/vulkan_implementation_win32.cc b/gpu/vulkan/win32/vulkan_implementation_win32.cc index 77b8f99cb..8340ae1 100644 --- a/gpu/vulkan/win32/vulkan_implementation_win32.cc +++ b/gpu/vulkan/win32/vulkan_implementation_win32.cc
@@ -94,6 +94,11 @@ return {VK_KHR_SWAPCHAIN_EXTENSION_NAME}; } +std::vector<const char*> +VulkanImplementationWin32::GetOptionalDeviceExtensions() { + return {}; +} + VkFence VulkanImplementationWin32::CreateVkFenceForGpuFence( VkDevice vk_device) { NOTREACHED();
diff --git a/gpu/vulkan/win32/vulkan_implementation_win32.h b/gpu/vulkan/win32/vulkan_implementation_win32.h index 4d18e4f6..4c49602b 100644 --- a/gpu/vulkan/win32/vulkan_implementation_win32.h +++ b/gpu/vulkan/win32/vulkan_implementation_win32.h
@@ -29,6 +29,7 @@ const std::vector<VkQueueFamilyProperties>& queue_family_properties, uint32_t queue_family_index) override; std::vector<const char*> GetRequiredDeviceExtensions() override; + std::vector<const char*> GetOptionalDeviceExtensions() override; VkFence CreateVkFenceForGpuFence(VkDevice vk_device) override; std::unique_ptr<gfx::GpuFence> ExportVkFenceToGpuFence( VkDevice vk_device,
diff --git a/gpu/vulkan/x/vulkan_implementation_x11.cc b/gpu/vulkan/x/vulkan_implementation_x11.cc index 4544bca..53ff9bd 100644 --- a/gpu/vulkan/x/vulkan_implementation_x11.cc +++ b/gpu/vulkan/x/vulkan_implementation_x11.cc
@@ -129,6 +129,11 @@ return extensions; } +std::vector<const char*> +VulkanImplementationX11::GetOptionalDeviceExtensions() { + return {}; +} + VkFence VulkanImplementationX11::CreateVkFenceForGpuFence(VkDevice vk_device) { NOTREACHED(); return VK_NULL_HANDLE;
diff --git a/gpu/vulkan/x/vulkan_implementation_x11.h b/gpu/vulkan/x/vulkan_implementation_x11.h index 7a4b0c5..a1636fff 100644 --- a/gpu/vulkan/x/vulkan_implementation_x11.h +++ b/gpu/vulkan/x/vulkan_implementation_x11.h
@@ -30,6 +30,7 @@ const std::vector<VkQueueFamilyProperties>& queue_family_properties, uint32_t queue_family_index) override; std::vector<const char*> GetRequiredDeviceExtensions() override; + std::vector<const char*> GetOptionalDeviceExtensions() override; VkFence CreateVkFenceForGpuFence(VkDevice vk_device) override; std::unique_ptr<gfx::GpuFence> ExportVkFenceToGpuFence( VkDevice vk_device,
diff --git a/ios/chrome/app/resources/BUILD.gn b/ios/chrome/app/resources/BUILD.gn index 6fbce16..24111cd 100644 --- a/ios/chrome/app/resources/BUILD.gn +++ b/ios/chrome/app/resources/BUILD.gn
@@ -121,7 +121,7 @@ public_deps = [ ":launchscreen_app_logo", ":launchscreen_brand_name", - "//ios/chrome/common/colors/resources:background_color", + "//ios/chrome/common/ui/colors/resources:background_color", ] }
diff --git a/ios/chrome/browser/BUILD.gn b/ios/chrome/browser/BUILD.gn index 68e9695..3274c4d 100644 --- a/ios/chrome/browser/BUILD.gn +++ b/ios/chrome/browser/BUILD.gn
@@ -101,7 +101,6 @@ "//ios/chrome/browser/drag_and_drop", "//ios/chrome/browser/find_in_page:feature_flags", "//ios/chrome/browser/itunes_urls", - "//ios/chrome/browser/policy", "//ios/chrome/browser/signin:feature_flags", "//ios/chrome/browser/ssl:feature_flags", "//ios/chrome/browser/sync/glue", @@ -229,6 +228,7 @@ "//ios/chrome/browser/metrics:expired_histograms_array", "//ios/chrome/browser/net", "//ios/chrome/browser/open_from_clipboard", + "//ios/chrome/browser/policy", "//ios/chrome/browser/prefs", "//ios/chrome/browser/prefs:browser_prefs", "//ios/chrome/browser/send_tab_to_self",
diff --git a/ios/chrome/browser/DEPS b/ios/chrome/browser/DEPS index f06d218..26a01f4 100644 --- a/ios/chrome/browser/DEPS +++ b/ios/chrome/browser/DEPS
@@ -56,6 +56,7 @@ "+components/payments/mojom", "+components/policy/core/browser", "+components/policy/core/common", + "+components/policy/policy_constants.h", "+components/pref_registry", "+components/prefs", "+components/profile_metrics",
diff --git a/ios/chrome/browser/application_context.h b/ios/chrome/browser/application_context.h index 256f9ae..fcbb243 100644 --- a/ios/chrome/browser/application_context.h +++ b/ios/chrome/browser/application_context.h
@@ -64,6 +64,7 @@ } class ApplicationContext; +class BrowserPolicyConnectorIOS; class IOSChromeIOThread; class PrefService; @@ -146,6 +147,10 @@ // Returns the NetworkConnectionTracker instance for this ApplicationContext. virtual network::NetworkConnectionTracker* GetNetworkConnectionTracker() = 0; + // Returns the BrowserPolicyConnectorIOS that starts and manages the policy + // system. May be |nullptr| if policy is not enabled. + virtual BrowserPolicyConnectorIOS* GetBrowserPolicyConnector() = 0; + protected: // Sets the global ApplicationContext instance. static void SetApplicationContext(ApplicationContext* context);
diff --git a/ios/chrome/browser/application_context_impl.cc b/ios/chrome/browser/application_context_impl.cc index 13280d9c..d418a8d 100644 --- a/ios/chrome/browser/application_context_impl.cc +++ b/ios/chrome/browser/application_context_impl.cc
@@ -50,6 +50,9 @@ #include "ios/chrome/browser/history/history_service_factory.h" #include "ios/chrome/browser/ios_chrome_io_thread.h" #include "ios/chrome/browser/metrics/ios_chrome_metrics_services_manager_client.h" +#include "ios/chrome/browser/policy/browser_policy_connector_ios.h" +#include "ios/chrome/browser/policy/configuration_policy_handler_list_factory.h" +#include "ios/chrome/browser/policy/policy_features.h" #include "ios/chrome/browser/pref_names.h" #include "ios/chrome/browser/prefs/browser_prefs.h" #include "ios/chrome/browser/prefs/ios_chrome_pref_service_factory.h" @@ -66,6 +69,7 @@ #include "services/network/network_change_manager.h" #include "services/network/public/cpp/network_connection_tracker.h" #include "services/network/public/mojom/network_service.mojom.h" +#include "ui/base/resource/resource_bundle.h" namespace { @@ -144,6 +148,13 @@ // Need to clear browser states before the IO thread. chrome_browser_state_manager_.reset(); + // The policy providers managed by |browser_policy_connector_| need to shut + // down while the IO threads is still alive. The monitoring framework owned by + // |browser_policy_connector_| relies on |gcm_driver_|, so this must be + // shutdown before |gcm_driver_| below. + if (browser_policy_connector_) + browser_policy_connector_->Shutdown(); + // The GCMDriver must shut down while the IO thread is still alive. if (gcm_driver_) gcm_driver_->Shutdown(); @@ -371,6 +382,22 @@ return network_connection_tracker_.get(); } +BrowserPolicyConnectorIOS* ApplicationContextImpl::GetBrowserPolicyConnector() { + DCHECK(thread_checker_.CalledOnValidThread()); + if (IsEnterprisePolicyEnabled()) { + if (!browser_policy_connector_.get()) { + // Ensure that the ResourceBundle has already been initialized. If this + // DCHECK ever fails, a call to + // BrowserPolicyConnector::OnResourceBundleCreated() will need to be added + // later in the startup sequence, after the ResourceBundle is initialized. + DCHECK(ui::ResourceBundle::HasSharedInstance()); + browser_policy_connector_ = std::make_unique<BrowserPolicyConnectorIOS>( + base::Bind(&BuildPolicyHandlerList)); + } + } + return browser_policy_connector_.get(); +} + void ApplicationContextImpl::SetApplicationLocale(const std::string& locale) { DCHECK(thread_checker_.CalledOnValidThread()); application_locale_ = locale; @@ -389,8 +416,9 @@ // Register local state preferences. RegisterLocalStatePrefs(pref_registry.get()); - local_state_ = ::CreateLocalState( - local_state_path, local_state_task_runner_.get(), pref_registry); + local_state_ = + ::CreateLocalState(local_state_path, local_state_task_runner_.get(), + pref_registry, GetBrowserPolicyConnector()); DCHECK(local_state_); sessions::SessionIdGenerator::GetInstance()->Init(local_state_.get());
diff --git a/ios/chrome/browser/application_context_impl.h b/ios/chrome/browser/application_context_impl.h index e0a53cd..da0b548a 100644 --- a/ios/chrome/browser/application_context_impl.h +++ b/ios/chrome/browser/application_context_impl.h
@@ -71,6 +71,7 @@ component_updater::ComponentUpdateService* GetComponentUpdateService() override; network::NetworkConnectionTracker* GetNetworkConnectionTracker() override; + BrowserPolicyConnectorIOS* GetBrowserPolicyConnector() override; private: // Sets the locale used by the application. @@ -91,6 +92,9 @@ // |breadcrumb_manager_|. Will be null if breadcrumbs feature is not enabled. std::unique_ptr<ApplicationBreadcrumbsLogger> application_breadcrumbs_logger_; + // Must be destroyed after |local_state_|. + std::unique_ptr<BrowserPolicyConnectorIOS> browser_policy_connector_; + std::unique_ptr<PrefService> local_state_; std::unique_ptr<net_log::NetExportFileWriter> net_export_file_writer_; std::unique_ptr<network_time::NetworkTimeTracker> network_time_tracker_;
diff --git a/ios/chrome/browser/autofill/BUILD.gn b/ios/chrome/browser/autofill/BUILD.gn index a83d88e4..3c4f4d2 100644 --- a/ios/chrome/browser/autofill/BUILD.gn +++ b/ios/chrome/browser/autofill/BUILD.gn
@@ -66,7 +66,7 @@ "//ios/chrome/browser/ui/image_util", "//ios/chrome/browser/ui/util", "//ios/chrome/browser/webdata_services", - "//ios/chrome/common/colors", + "//ios/chrome/common/ui/colors", "//ios/chrome/common/ui/util", "//ios/web/common", "//ios/web/public/deprecated",
diff --git a/ios/chrome/browser/autofill/form_suggestion_label.mm b/ios/chrome/browser/autofill/form_suggestion_label.mm index dcc8ef3..b1ca7b3 100644 --- a/ios/chrome/browser/autofill/form_suggestion_label.mm +++ b/ios/chrome/browser/autofill/form_suggestion_label.mm
@@ -19,7 +19,7 @@ #import "ios/chrome/browser/autofill/form_suggestion_constants.h" #include "ios/chrome/browser/ui/util/ui_util.h" #import "ios/chrome/browser/ui/util/uikit_ui_util.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #include "ios/chrome/common/ui/util/constraints_ui_util.h" #include "ios/chrome/grit/ios_strings.h" #include "ui/base/l10n/l10n_util.h"
diff --git a/ios/chrome/browser/overscroll_actions/BUILD.gn b/ios/chrome/browser/overscroll_actions/BUILD.gn index 0115f0d2..c786e27 100644 --- a/ios/chrome/browser/overscroll_actions/BUILD.gn +++ b/ios/chrome/browser/overscroll_actions/BUILD.gn
@@ -28,7 +28,7 @@ "//base/test:test_support", "//ios/chrome/browser/browser_state:test_support", "//ios/chrome/browser/ui/overscroll_actions", - "//ios/chrome/common/colors", + "//ios/chrome/common/ui/colors", "//ios/chrome/test/fakes", "//ios/web/public", "//ios/web/public/test",
diff --git a/ios/chrome/browser/overscroll_actions/overscroll_actions_tab_helper_unittest.mm b/ios/chrome/browser/overscroll_actions/overscroll_actions_tab_helper_unittest.mm index c27428b..f0dc1901 100644 --- a/ios/chrome/browser/overscroll_actions/overscroll_actions_tab_helper_unittest.mm +++ b/ios/chrome/browser/overscroll_actions/overscroll_actions_tab_helper_unittest.mm
@@ -10,8 +10,8 @@ #include "ios/chrome/browser/browser_state/test_chrome_browser_state.h" #import "ios/chrome/browser/ui/overscroll_actions/overscroll_actions_controller.h" #import "ios/chrome/browser/ui/overscroll_actions/overscroll_actions_view.h" -#import "ios/chrome/common/colors/dynamic_color_util.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/dynamic_color_util.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #import "ios/chrome/test/fakes/fake_overscroll_actions_controller_delegate.h" #import "ios/web/public/test/fakes/test_web_state.h" #include "ios/web/public/test/web_task_environment.h"
diff --git a/ios/chrome/browser/policy/BUILD.gn b/ios/chrome/browser/policy/BUILD.gn index b3d17a42f1..9b44a61 100644 --- a/ios/chrome/browser/policy/BUILD.gn +++ b/ios/chrome/browser/policy/BUILD.gn
@@ -6,15 +6,21 @@ sources = [ "browser_policy_connector_ios.h", "browser_policy_connector_ios.mm", + "configuration_policy_handler_list_factory.h", + "configuration_policy_handler_list_factory.mm", ] deps = [ "//base", + "//components/policy:generated", "//components/policy/core/common", "//services/network/public/cpp", ] - public_deps = [ "//components/policy/core/browser" ] + public_deps = [ + ":feature_flags", + "//components/policy/core/browser", + ] configs += [ "//build/config/compiler:enable_arc" ] }
diff --git a/ios/chrome/browser/policy/configuration_policy_handler_list_factory.h b/ios/chrome/browser/policy/configuration_policy_handler_list_factory.h new file mode 100644 index 0000000..1c57406 --- /dev/null +++ b/ios/chrome/browser/policy/configuration_policy_handler_list_factory.h
@@ -0,0 +1,19 @@ +// Copyright 2020 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef IOS_CHROME_BROWSER_POLICY_CONFIGURATION_POLICY_HANDLER_LIST_FACTORY_H_ +#define IOS_CHROME_BROWSER_POLICY_CONFIGURATION_POLICY_HANDLER_LIST_FACTORY_H_ + +#include <memory> + +namespace policy { +class ConfigurationPolicyHandlerList; +class Schema; +} // namespace policy + +// Builds a policy handler list. +std::unique_ptr<policy::ConfigurationPolicyHandlerList> BuildPolicyHandlerList( + const policy::Schema& chrome_schema); + +#endif // IOS_CHROME_BROWSER_POLICY_CONFIGURATION_POLICY_HANDLER_LIST_FACTORY_H_
diff --git a/ios/chrome/browser/policy/configuration_policy_handler_list_factory.mm b/ios/chrome/browser/policy/configuration_policy_handler_list_factory.mm new file mode 100644 index 0000000..c642fb2 --- /dev/null +++ b/ios/chrome/browser/policy/configuration_policy_handler_list_factory.mm
@@ -0,0 +1,34 @@ +// Copyright 2020 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#import "ios/chrome/browser/policy/configuration_policy_handler_list_factory.h" + +#include "base/bind.h" +#include "base/logging.h" +#include "components/policy/core/browser/configuration_policy_handler.h" +#include "components/policy/core/browser/configuration_policy_handler_list.h" +#include "components/policy/core/browser/configuration_policy_handler_parameters.h" +#include "components/policy/policy_constants.h" +#include "ios/chrome/browser/policy/policy_features.h" + +#if !defined(__has_feature) || !__has_feature(objc_arc) +#error "This file requires ARC support." +#endif + +namespace { + +void PopulatePolicyHandlerParameters( + policy::PolicyHandlerParameters* parameters) {} + +} // namespace + +std::unique_ptr<policy::ConfigurationPolicyHandlerList> BuildPolicyHandlerList( + const policy::Schema& chrome_schema) { + DCHECK(IsEnterprisePolicyEnabled()); + std::unique_ptr<policy::ConfigurationPolicyHandlerList> handlers = + std::make_unique<policy::ConfigurationPolicyHandlerList>( + base::Bind(&PopulatePolicyHandlerParameters), + base::Bind(&policy::GetChromePolicyDetails)); + return handlers; +}
diff --git a/ios/chrome/browser/prefs/BUILD.gn b/ios/chrome/browser/prefs/BUILD.gn index d5fd155..eeea0a1d 100644 --- a/ios/chrome/browser/prefs/BUILD.gn +++ b/ios/chrome/browser/prefs/BUILD.gn
@@ -13,12 +13,14 @@ deps = [ "//base", "//components/content_settings/core/browser", + "//components/policy/core/browser", "//components/prefs", "//components/prefs/ios", "//components/proxy_config", "//components/search_engines", "//components/sync_preferences", "//ios/chrome/browser", + "//ios/chrome/browser/policy:feature_flags", ] }
diff --git a/ios/chrome/browser/prefs/ios_chrome_pref_service_factory.cc b/ios/chrome/browser/prefs/ios_chrome_pref_service_factory.cc index 54794a09..ec1acb6 100644 --- a/ios/chrome/browser/prefs/ios_chrome_pref_service_factory.cc +++ b/ios/chrome/browser/prefs/ios_chrome_pref_service_factory.cc
@@ -7,8 +7,12 @@ #include <vector> #include "base/bind.h" +#include "base/feature_list.h" +#include "base/logging.h" #include "base/memory/ptr_util.h" #include "base/metrics/histogram_macros.h" +#include "components/policy/core/browser/browser_policy_connector.h" +#include "components/policy/core/common/policy_service.h" #include "components/prefs/json_pref_store.h" #include "components/prefs/persistent_pref_store.h" #include "components/prefs/pref_filter.h" @@ -18,6 +22,7 @@ #include "components/sync_preferences/pref_service_syncable.h" #include "components/sync_preferences/pref_service_syncable_factory.h" #include "ios/chrome/browser/application_context.h" +#include "ios/chrome/browser/policy/policy_features.h" #include "ios/chrome/browser/prefs/ios_chrome_pref_model_associator_client.h" namespace { @@ -34,7 +39,16 @@ void PrepareFactory(sync_preferences::PrefServiceSyncableFactory* factory, const base::FilePath& pref_filename, - base::SequencedTaskRunner* pref_io_task_runner) { + base::SequencedTaskRunner* pref_io_task_runner, + policy::BrowserPolicyConnector* policy_connector) { + if (policy_connector) { + DCHECK(IsEnterprisePolicyEnabled()); + policy::PolicyService* policy_service = + policy_connector->GetPolicyService(); + factory->SetManagedPolicies(policy_service, policy_connector); + factory->SetRecommendedPolicies(policy_service, policy_connector); + } + factory->set_user_prefs(base::MakeRefCounted<JsonPrefStore>( pref_filename, std::unique_ptr<PrefFilter>(), pref_io_task_runner)); @@ -48,9 +62,11 @@ std::unique_ptr<PrefService> CreateLocalState( const base::FilePath& pref_filename, base::SequencedTaskRunner* pref_io_task_runner, - const scoped_refptr<PrefRegistry>& pref_registry) { + const scoped_refptr<PrefRegistry>& pref_registry, + policy::BrowserPolicyConnector* policy_connector) { sync_preferences::PrefServiceSyncableFactory factory; - PrepareFactory(&factory, pref_filename, pref_io_task_runner); + PrepareFactory(&factory, pref_filename, pref_io_task_runner, + policy_connector); return factory.Create(pref_registry.get()); } @@ -65,7 +81,7 @@ // on platforms that do not track preference modifications). sync_preferences::PrefServiceSyncableFactory factory; PrepareFactory(&factory, browser_state_path.Append(kPreferencesFilename), - pref_io_task_runner); + pref_io_task_runner, nullptr); std::unique_ptr<sync_preferences::PrefServiceSyncable> pref_service = factory.CreateSyncable(pref_registry.get()); return pref_service;
diff --git a/ios/chrome/browser/prefs/ios_chrome_pref_service_factory.h b/ios/chrome/browser/prefs/ios_chrome_pref_service_factory.h index 75fb938..6e936c4 100644 --- a/ios/chrome/browser/prefs/ios_chrome_pref_service_factory.h +++ b/ios/chrome/browser/prefs/ios_chrome_pref_service_factory.h
@@ -17,6 +17,10 @@ class SequencedTaskRunner; } +namespace policy { +class BrowserPolicyConnector; +} + namespace sync_preferences { class PrefServiceSyncable; } @@ -33,7 +37,8 @@ std::unique_ptr<PrefService> CreateLocalState( const base::FilePath& pref_filename, base::SequencedTaskRunner* pref_io_task_runner, - const scoped_refptr<PrefRegistry>& pref_registry); + const scoped_refptr<PrefRegistry>& pref_registry, + policy::BrowserPolicyConnector* policy_connector); std::unique_ptr<sync_preferences::PrefServiceSyncable> CreateBrowserStatePrefs( const base::FilePath& browser_state_path,
diff --git a/ios/chrome/browser/ui/alert_view/BUILD.gn b/ios/chrome/browser/ui/alert_view/BUILD.gn index 2c33935..32af28c 100644 --- a/ios/chrome/browser/ui/alert_view/BUILD.gn +++ b/ios/chrome/browser/ui/alert_view/BUILD.gn
@@ -15,7 +15,7 @@ "//ios/chrome/browser/ui/elements", "//ios/chrome/browser/ui/presenters", "//ios/chrome/browser/ui/util", - "//ios/chrome/common/colors", + "//ios/chrome/common/ui/colors", "//ios/chrome/common/ui/util", ] libs = [ "UIKit.framework" ]
diff --git a/ios/chrome/browser/ui/alert_view/alert_view_controller.mm b/ios/chrome/browser/ui/alert_view/alert_view_controller.mm index f9dcc7c..230aea0 100644 --- a/ios/chrome/browser/ui/alert_view/alert_view_controller.mm +++ b/ios/chrome/browser/ui/alert_view/alert_view_controller.mm
@@ -9,8 +9,8 @@ #import "ios/chrome/browser/ui/elements/gray_highlight_button.h" #import "ios/chrome/browser/ui/elements/text_field_configuration.h" #import "ios/chrome/browser/ui/util/uikit_ui_util.h" -#import "ios/chrome/common/colors/UIColor+cr_semantic_colors.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/UIColor+cr_semantic_colors.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #import "ios/chrome/common/ui/util/constraints_ui_util.h" #if !defined(__has_feature) || !__has_feature(objc_arc)
diff --git a/ios/chrome/browser/ui/appearance/BUILD.gn b/ios/chrome/browser/ui/appearance/BUILD.gn index ed90b799..f3a5444 100644 --- a/ios/chrome/browser/ui/appearance/BUILD.gn +++ b/ios/chrome/browser/ui/appearance/BUILD.gn
@@ -12,7 +12,7 @@ deps = [ "//ios/chrome/browser/ui/settings:settings_root", "//ios/chrome/browser/ui/table_view", - "//ios/chrome/common/colors", + "//ios/chrome/common/ui/colors", ] configs += [ "//build/config/compiler:enable_arc" ] }
diff --git a/ios/chrome/browser/ui/appearance/appearance_customization.mm b/ios/chrome/browser/ui/appearance/appearance_customization.mm index 406d09a..6edb91b 100644 --- a/ios/chrome/browser/ui/appearance/appearance_customization.mm +++ b/ios/chrome/browser/ui/appearance/appearance_customization.mm
@@ -6,7 +6,7 @@ #import "ios/chrome/browser/ui/settings/settings_navigation_controller.h" #import "ios/chrome/browser/ui/table_view/table_view_navigation_controller.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #if !defined(__has_feature) || !__has_feature(objc_arc) #error "This file requires ARC support."
diff --git a/ios/chrome/browser/ui/authentication/BUILD.gn b/ios/chrome/browser/ui/authentication/BUILD.gn index a030659..df18e10 100644 --- a/ios/chrome/browser/ui/authentication/BUILD.gn +++ b/ios/chrome/browser/ui/authentication/BUILD.gn
@@ -58,7 +58,7 @@ "//ios/chrome/browser/unified_consent", "//ios/chrome/browser/web_state_list", "//ios/chrome/common", - "//ios/chrome/common/colors", + "//ios/chrome/common/ui/colors", "//ios/chrome/common/ui/util", "//ios/public/provider/chrome/browser", "//ios/public/provider/chrome/browser/signin",
diff --git a/ios/chrome/browser/ui/authentication/cells/BUILD.gn b/ios/chrome/browser/ui/authentication/cells/BUILD.gn index fe89df5..08da6266 100644 --- a/ios/chrome/browser/ui/authentication/cells/BUILD.gn +++ b/ios/chrome/browser/ui/authentication/cells/BUILD.gn
@@ -30,7 +30,7 @@ "//ios/chrome/browser/ui/table_view:styler", "//ios/chrome/browser/ui/table_view/cells", "//ios/chrome/browser/ui/table_view/cells:cells_constants", - "//ios/chrome/common/colors", + "//ios/chrome/common/ui/colors", "//ios/chrome/common/ui/util", "//ios/public/provider/chrome/browser", "//ios/public/provider/chrome/browser/signin", @@ -72,7 +72,7 @@ "//ios/chrome/browser/ui/signin_interaction/public", "//ios/chrome/browser/ui/table_view:styler", "//ios/chrome/browser/ui/table_view/cells", - "//ios/chrome/common/colors", + "//ios/chrome/common/ui/colors", "//ios/chrome/test:test_support", "//ios/public/provider/chrome/browser/signin:test_support", "//ios/third_party/material_components_ios",
diff --git a/ios/chrome/browser/ui/authentication/cells/signin_promo_view.mm b/ios/chrome/browser/ui/authentication/cells/signin_promo_view.mm index 5302276a..c760973d 100644 --- a/ios/chrome/browser/ui/authentication/cells/signin_promo_view.mm +++ b/ios/chrome/browser/ui/authentication/cells/signin_promo_view.mm
@@ -12,8 +12,8 @@ #import "ios/chrome/browser/ui/authentication/cells/signin_promo_view_delegate.h" #import "ios/chrome/browser/ui/colors/MDCPalette+CrAdditions.h" #import "ios/chrome/browser/ui/util/uikit_ui_util.h" -#import "ios/chrome/common/colors/UIColor+cr_semantic_colors.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/UIColor+cr_semantic_colors.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #import "ios/chrome/common/ui/util/constraints_ui_util.h" #include "ios/chrome/grit/ios_strings.h" #include "ui/base/l10n/l10n_util.h"
diff --git a/ios/chrome/browser/ui/authentication/cells/table_view_account_item.mm b/ios/chrome/browser/ui/authentication/cells/table_view_account_item.mm index d4380c59..b022d99 100644 --- a/ios/chrome/browser/ui/authentication/cells/table_view_account_item.mm +++ b/ios/chrome/browser/ui/authentication/cells/table_view_account_item.mm
@@ -8,8 +8,8 @@ #import "ios/chrome/browser/ui/settings/cells/settings_cells_constants.h" #include "ios/chrome/browser/ui/table_view/cells/table_view_cells_constants.h" #import "ios/chrome/browser/ui/util/uikit_ui_util.h" -#import "ios/chrome/common/colors/UIColor+cr_semantic_colors.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/UIColor+cr_semantic_colors.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #if !defined(__has_feature) || !__has_feature(objc_arc) #error "This file requires ARC support."
diff --git a/ios/chrome/browser/ui/authentication/chrome_signin_view_controller.mm b/ios/chrome/browser/ui/authentication/chrome_signin_view_controller.mm index a65dab41..d937b7c 100644 --- a/ios/chrome/browser/ui/authentication/chrome_signin_view_controller.mm +++ b/ios/chrome/browser/ui/authentication/chrome_signin_view_controller.mm
@@ -42,9 +42,9 @@ #import "ios/chrome/browser/ui/util/ui_util.h" #import "ios/chrome/browser/ui/util/uikit_ui_util.h" #include "ios/chrome/browser/unified_consent/unified_consent_service_factory.h" -#import "ios/chrome/common/colors/UIColor+cr_semantic_colors.h" -#import "ios/chrome/common/colors/semantic_color_names.h" #include "ios/chrome/common/string_util.h" +#import "ios/chrome/common/ui/colors/UIColor+cr_semantic_colors.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #include "ios/chrome/grit/ios_chromium_strings.h" #include "ios/chrome/grit/ios_strings.h" #import "ios/public/provider/chrome/browser/chrome_browser_provider.h" @@ -692,7 +692,9 @@ // The user can refuse to sign-in into a managed account, so the state // returns to "IdentityPicker". In that case, there is no need to create a // new UnifiedConsentCoordinator. The current one should be used. - _unifiedConsentCoordinator = [[UnifiedConsentCoordinator alloc] init]; + _unifiedConsentCoordinator = [[UnifiedConsentCoordinator alloc] + initWithBaseViewController:nil + browser:self.browser]; _unifiedConsentCoordinator.delegate = self; if (_selectedIdentity) _unifiedConsentCoordinator.selectedIdentity = _selectedIdentity;
diff --git a/ios/chrome/browser/ui/authentication/signed_in_accounts_view_controller.mm b/ios/chrome/browser/ui/authentication/signed_in_accounts_view_controller.mm index b491e75..568f3719 100644 --- a/ios/chrome/browser/ui/authentication/signed_in_accounts_view_controller.mm +++ b/ios/chrome/browser/ui/authentication/signed_in_accounts_view_controller.mm
@@ -19,7 +19,7 @@ #import "ios/chrome/browser/ui/collection_view/collection_view_model.h" #import "ios/chrome/browser/ui/colors/MDCPalette+CrAdditions.h" #import "ios/chrome/browser/ui/commands/application_commands.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #import "ios/chrome/common/ui/util/constraints_ui_util.h" #include "ios/chrome/grit/ios_chromium_strings.h" #include "ios/chrome/grit/ios_strings.h"
diff --git a/ios/chrome/browser/ui/authentication/signin/user_signin/BUILD.gn b/ios/chrome/browser/ui/authentication/signin/user_signin/BUILD.gn index c856320..ef27784 100644 --- a/ios/chrome/browser/ui/authentication/signin/user_signin/BUILD.gn +++ b/ios/chrome/browser/ui/authentication/signin/user_signin/BUILD.gn
@@ -17,7 +17,7 @@ "//ios/chrome/browser/ui/authentication/unified_consent", "//ios/chrome/browser/ui/collection_view/cells", "//ios/chrome/browser/ui/util", - "//ios/chrome/common/colors", + "//ios/chrome/common/ui/colors", "//ios/chrome/common/ui/util", "//ui/base", ]
diff --git a/ios/chrome/browser/ui/authentication/signin/user_signin/user_signin_coordinator.mm b/ios/chrome/browser/ui/authentication/signin/user_signin/user_signin_coordinator.mm index b28e5e4..658d0f5d 100644 --- a/ios/chrome/browser/ui/authentication/signin/user_signin/user_signin_coordinator.mm +++ b/ios/chrome/browser/ui/authentication/signin/user_signin/user_signin_coordinator.mm
@@ -59,7 +59,9 @@ self.viewController = [[UserSigninViewController alloc] init]; self.viewController.delegate = self; - self.unifiedConsentCoordinator = [[UnifiedConsentCoordinator alloc] init]; + self.unifiedConsentCoordinator = [[UnifiedConsentCoordinator alloc] + initWithBaseViewController:nil + browser:self.browser]; self.unifiedConsentCoordinator.delegate = self; // Set UnifiedConsentCoordinator properties.
diff --git a/ios/chrome/browser/ui/authentication/signin/user_signin/user_signin_view_controller.mm b/ios/chrome/browser/ui/authentication/signin/user_signin/user_signin_view_controller.mm index 93058e8..899be9d 100644 --- a/ios/chrome/browser/ui/authentication/signin/user_signin/user_signin_view_controller.mm +++ b/ios/chrome/browser/ui/authentication/signin/user_signin/user_signin_view_controller.mm
@@ -7,8 +7,8 @@ #import "base/logging.h" #import "ios/chrome/browser/ui/util/rtl_geometry.h" #import "ios/chrome/browser/ui/util/uikit_ui_util.h" -#import "ios/chrome/common/colors/UIColor+cr_semantic_colors.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/UIColor+cr_semantic_colors.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #import "ios/chrome/common/ui/util/constraints_ui_util.h" #import "ios/chrome/grit/ios_strings.h" #import "ios/third_party/material_components_ios/src/components/ActivityIndicator/src/MaterialActivityIndicator.h"
diff --git a/ios/chrome/browser/ui/authentication/unified_consent/BUILD.gn b/ios/chrome/browser/ui/authentication/unified_consent/BUILD.gn index 29001c4..cd2ce80e 100644 --- a/ios/chrome/browser/ui/authentication/unified_consent/BUILD.gn +++ b/ios/chrome/browser/ui/authentication/unified_consent/BUILD.gn
@@ -16,8 +16,10 @@ ":unified_consent_ui", "//base", "//ios/chrome/browser", + "//ios/chrome/browser/main:public", "//ios/chrome/browser/signin", "//ios/chrome/browser/ui/authentication/unified_consent/identity_chooser", + "//ios/chrome/browser/ui/coordinators:chrome_coordinators", "//ios/public/provider/chrome/browser/signin", ] } @@ -43,7 +45,7 @@ "//ios/chrome/browser/ui/colors", "//ios/chrome/browser/ui/util", "//ios/chrome/common", - "//ios/chrome/common/colors", + "//ios/chrome/common/ui/colors", "//ios/chrome/common/ui/util", "//ios/third_party/material_components_ios", "//ui/base",
diff --git a/ios/chrome/browser/ui/authentication/unified_consent/identity_chooser/BUILD.gn b/ios/chrome/browser/ui/authentication/unified_consent/identity_chooser/BUILD.gn index 1a3a7bd..5c57f37 100644 --- a/ios/chrome/browser/ui/authentication/unified_consent/identity_chooser/BUILD.gn +++ b/ios/chrome/browser/ui/authentication/unified_consent/identity_chooser/BUILD.gn
@@ -62,7 +62,7 @@ "//ios/chrome/browser/ui/util", "//ios/chrome/browser/ui/util", "//ios/chrome/common", - "//ios/chrome/common/colors", + "//ios/chrome/common/ui/colors", "//ios/chrome/common/ui/util", "//ios/third_party/material_components_ios", "//ui/base",
diff --git a/ios/chrome/browser/ui/authentication/unified_consent/identity_chooser/identity_chooser_cell.mm b/ios/chrome/browser/ui/authentication/unified_consent/identity_chooser/identity_chooser_cell.mm index d2576bd..0e36fb3 100644 --- a/ios/chrome/browser/ui/authentication/unified_consent/identity_chooser/identity_chooser_cell.mm +++ b/ios/chrome/browser/ui/authentication/unified_consent/identity_chooser/identity_chooser_cell.mm
@@ -7,7 +7,7 @@ #include "base/i18n/rtl.h" #import "ios/chrome/browser/ui/authentication/unified_consent/identity_chooser/identity_view.h" #import "ios/chrome/browser/ui/util/uikit_ui_util.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #import "ios/chrome/common/ui/util/constraints_ui_util.h" #if !defined(__has_feature) || !__has_feature(objc_arc)
diff --git a/ios/chrome/browser/ui/authentication/unified_consent/identity_chooser/identity_chooser_header_item.mm b/ios/chrome/browser/ui/authentication/unified_consent/identity_chooser/identity_chooser_header_item.mm index 514ced24..3a46db6f 100644 --- a/ios/chrome/browser/ui/authentication/unified_consent/identity_chooser/identity_chooser_header_item.mm +++ b/ios/chrome/browser/ui/authentication/unified_consent/identity_chooser/identity_chooser_header_item.mm
@@ -4,7 +4,7 @@ #import "ios/chrome/browser/ui/authentication/unified_consent/identity_chooser/identity_chooser_header_item.h" -#import "ios/chrome/common/colors/UIColor+cr_semantic_colors.h" +#import "ios/chrome/common/ui/colors/UIColor+cr_semantic_colors.h" #import "ios/chrome/common/ui/util/constraints_ui_util.h" #include "ios/chrome/grit/ios_strings.h" #import "ui/base/l10n/l10n_util.h"
diff --git a/ios/chrome/browser/ui/authentication/unified_consent/identity_chooser/identity_view.mm b/ios/chrome/browser/ui/authentication/unified_consent/identity_chooser/identity_view.mm index 7509673..89697f3 100644 --- a/ios/chrome/browser/ui/authentication/unified_consent/identity_chooser/identity_view.mm +++ b/ios/chrome/browser/ui/authentication/unified_consent/identity_chooser/identity_view.mm
@@ -6,7 +6,7 @@ #include "base/logging.h" #import "ios/chrome/browser/ui/util/uikit_ui_util.h" -#import "ios/chrome/common/colors/UIColor+cr_semantic_colors.h" +#import "ios/chrome/common/ui/colors/UIColor+cr_semantic_colors.h" #import "ios/chrome/common/ui/util/constraints_ui_util.h" #if !defined(__has_feature) || !__has_feature(objc_arc)
diff --git a/ios/chrome/browser/ui/authentication/unified_consent/identity_picker_view.mm b/ios/chrome/browser/ui/authentication/unified_consent/identity_picker_view.mm index f7382ee..4dbd586 100644 --- a/ios/chrome/browser/ui/authentication/unified_consent/identity_picker_view.mm +++ b/ios/chrome/browser/ui/authentication/unified_consent/identity_picker_view.mm
@@ -9,7 +9,7 @@ #import "ios/chrome/browser/ui/authentication/unified_consent/identity_chooser/identity_view.h" #import "ios/chrome/browser/ui/authentication/unified_consent/unified_consent_constants.h" #import "ios/chrome/browser/ui/util/uikit_ui_util.h" -#import "ios/chrome/common/colors/UIColor+cr_semantic_colors.h" +#import "ios/chrome/common/ui/colors/UIColor+cr_semantic_colors.h" #import "ios/chrome/common/ui/util/constraints_ui_util.h" #import "ios/third_party/material_components_ios/src/components/Ink/src/MaterialInk.h"
diff --git a/ios/chrome/browser/ui/authentication/unified_consent/unified_consent_coordinator.h b/ios/chrome/browser/ui/authentication/unified_consent/unified_consent_coordinator.h index eb7c9e68..b9b2b4a8 100644 --- a/ios/chrome/browser/ui/authentication/unified_consent/unified_consent_coordinator.h +++ b/ios/chrome/browser/ui/authentication/unified_consent/unified_consent_coordinator.h
@@ -5,7 +5,7 @@ #ifndef IOS_CHROME_BROWSER_UI_AUTHENTICATION_UNIFIED_CONSENT_UNIFIED_CONSENT_COORDINATOR_H_ #define IOS_CHROME_BROWSER_UI_AUTHENTICATION_UNIFIED_CONSENT_UNIFIED_CONSENT_COORDINATOR_H_ -#import <UIKit/UIKit.h> +#import "ios/chrome/browser/ui/coordinators/chrome_coordinator.h" #include <vector> @@ -42,7 +42,15 @@ // All the string ids displayed by the view are available with // |consentStringIds| and |openSettingsStringId|. Those can be used to record // the consent agreed by the user. -@interface UnifiedConsentCoordinator : NSObject +@interface UnifiedConsentCoordinator : ChromeCoordinator + +// Unavailable, use -initWithBaseViewController:browser:. +- (instancetype)initWithBaseViewController:(UIViewController*)viewController + NS_UNAVAILABLE; +// Unavailable, use -initWithBaseViewController:browser:. +- (instancetype)initWithBaseViewController:(UIViewController*)viewController + browserState:(ChromeBrowserState*)browserState + NS_UNAVAILABLE; @property(nonatomic, weak) id<UnifiedConsentCoordinatorDelegate> delegate; // Identity selected by the user to sign-in. By default, the first identity from @@ -66,9 +74,6 @@ // ChromeSigninViewController. @property(nonatomic, assign, getter=isUIDisabled) BOOL uiDisabled; -// Starts this coordinator. -- (void)start; - // List of string ids used for the user consent. The string ids order matches // the way they appear on the screen. - (const std::vector<int>&)consentStringIds;
diff --git a/ios/chrome/browser/ui/authentication/unified_consent/unified_consent_coordinator.mm b/ios/chrome/browser/ui/authentication/unified_consent/unified_consent_coordinator.mm index 790fe92..ea948ef 100644 --- a/ios/chrome/browser/ui/authentication/unified_consent/unified_consent_coordinator.mm +++ b/ios/chrome/browser/ui/authentication/unified_consent/unified_consent_coordinator.mm
@@ -5,6 +5,7 @@ #include "ios/chrome/browser/ui/authentication/unified_consent/unified_consent_coordinator.h" #include "base/logging.h" +#import "ios/chrome/browser/main/browser.h" #import "ios/chrome/browser/ui/authentication/unified_consent/identity_chooser/identity_chooser_coordinator.h" #import "ios/chrome/browser/ui/authentication/unified_consent/identity_chooser/identity_chooser_coordinator_delegate.h" #import "ios/chrome/browser/ui/authentication/unified_consent/unified_consent_mediator.h" @@ -34,8 +35,9 @@ @implementation UnifiedConsentCoordinator -- (instancetype)init { - self = [super init]; +- (instancetype)initWithBaseViewController:(UIViewController*)viewController + browser:(Browser*)browser { + self = [super initWithBaseViewController:nil browser:browser]; if (self) { _unifiedConsentViewController = [[UnifiedConsentViewController alloc] init]; _unifiedConsentViewController.delegate = self;
diff --git a/ios/chrome/browser/ui/authentication/unified_consent/unified_consent_view_controller.mm b/ios/chrome/browser/ui/authentication/unified_consent/unified_consent_view_controller.mm index 7250e77..085a5098 100644 --- a/ios/chrome/browser/ui/authentication/unified_consent/unified_consent_view_controller.mm +++ b/ios/chrome/browser/ui/authentication/unified_consent/unified_consent_view_controller.mm
@@ -14,9 +14,9 @@ #import "ios/chrome/browser/ui/colors/MDCPalette+CrAdditions.h" #import "ios/chrome/browser/ui/util/label_link_controller.h" #import "ios/chrome/browser/ui/util/uikit_ui_util.h" -#import "ios/chrome/common/colors/UIColor+cr_semantic_colors.h" -#import "ios/chrome/common/colors/semantic_color_names.h" #include "ios/chrome/common/string_util.h" +#import "ios/chrome/common/ui/colors/UIColor+cr_semantic_colors.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #import "ios/chrome/common/ui/util/constraints_ui_util.h" #include "ios/chrome/grit/ios_chromium_strings.h" #include "ios/chrome/grit/ios_strings.h"
diff --git a/ios/chrome/browser/ui/autofill/BUILD.gn b/ios/chrome/browser/ui/autofill/BUILD.gn index 0a1d517..7dd458f 100644 --- a/ios/chrome/browser/ui/autofill/BUILD.gn +++ b/ios/chrome/browser/ui/autofill/BUILD.gn
@@ -87,7 +87,7 @@ "//ios/chrome/browser/ui/list_model", "//ios/chrome/browser/ui/table_view/cells", "//ios/chrome/browser/ui/util", - "//ios/chrome/common/colors", + "//ios/chrome/common/ui/colors", "//ios/third_party/material_components_ios", "//ios/web", "//ui/base", @@ -124,7 +124,7 @@ "//ios/chrome/browser/ui/toolbar/public", "//ios/chrome/browser/ui/util", "//ios/chrome/common", - "//ios/chrome/common/colors", + "//ios/chrome/common/ui/colors", "//ios/chrome/common/ui/util", "//ios/third_party/material_components_ios", "//ui/base",
diff --git a/ios/chrome/browser/ui/autofill/card_expiration_date_fix_flow_view_bridge.mm b/ios/chrome/browser/ui/autofill/card_expiration_date_fix_flow_view_bridge.mm index b5d2165..6be2862 100644 --- a/ios/chrome/browser/ui/autofill/card_expiration_date_fix_flow_view_bridge.mm +++ b/ios/chrome/browser/ui/autofill/card_expiration_date_fix_flow_view_bridge.mm
@@ -17,7 +17,7 @@ #import "ios/chrome/browser/ui/util/label_link_controller.h" #import "ios/chrome/browser/ui/util/rtl_geometry.h" #import "ios/chrome/browser/ui/util/uikit_ui_util.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #include "ui/base/l10n/l10n_util.h" #if !defined(__has_feature) || !__has_feature(objc_arc)
diff --git a/ios/chrome/browser/ui/autofill/card_name_fix_flow_view_bridge.mm b/ios/chrome/browser/ui/autofill/card_name_fix_flow_view_bridge.mm index ee933ee..dafae96 100644 --- a/ios/chrome/browser/ui/autofill/card_name_fix_flow_view_bridge.mm +++ b/ios/chrome/browser/ui/autofill/card_name_fix_flow_view_bridge.mm
@@ -16,7 +16,7 @@ #import "ios/chrome/browser/ui/util/label_link_controller.h" #import "ios/chrome/browser/ui/util/rtl_geometry.h" #import "ios/chrome/browser/ui/util/uikit_ui_util.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #include "ui/base/l10n/l10n_util.h" #if !defined(__has_feature) || !__has_feature(objc_arc)
diff --git a/ios/chrome/browser/ui/autofill/card_unmask_prompt_view_bridge.mm b/ios/chrome/browser/ui/autofill/card_unmask_prompt_view_bridge.mm index c544088e..9e24d199 100644 --- a/ios/chrome/browser/ui/autofill/card_unmask_prompt_view_bridge.mm +++ b/ios/chrome/browser/ui/autofill/card_unmask_prompt_view_bridge.mm
@@ -20,7 +20,7 @@ #import "ios/chrome/browser/ui/collection_view/collection_view_controller.h" #import "ios/chrome/browser/ui/collection_view/collection_view_model.h" #import "ios/chrome/browser/ui/util/rtl_geometry.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #import "ios/third_party/material_components_ios/src/components/Typography/src/MaterialTypography.h" #include "ui/base/l10n/l10n_util.h"
diff --git a/ios/chrome/browser/ui/autofill/cells/cvc_item.mm b/ios/chrome/browser/ui/autofill/cells/cvc_item.mm index 1f440d42..f973483 100644 --- a/ios/chrome/browser/ui/autofill/cells/cvc_item.mm +++ b/ios/chrome/browser/ui/autofill/cells/cvc_item.mm
@@ -6,7 +6,7 @@ #include "components/strings/grit/components_strings.h" #import "ios/chrome/browser/ui/util/uikit_ui_util.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #include "ios/chrome/grit/ios_strings.h" #import "ios/public/provider/chrome/browser/chrome_browser_provider.h" #import "ios/third_party/material_components_ios/src/components/Typography/src/MaterialTypography.h"
diff --git a/ios/chrome/browser/ui/autofill/cells/legacy_autofill_edit_item.mm b/ios/chrome/browser/ui/autofill/cells/legacy_autofill_edit_item.mm index 17ff071..f2a44965b 100644 --- a/ios/chrome/browser/ui/autofill/cells/legacy_autofill_edit_item.mm +++ b/ios/chrome/browser/ui/autofill/cells/legacy_autofill_edit_item.mm
@@ -7,8 +7,8 @@ #include "ios/chrome/browser/ui/collection_view/cells/collection_view_cell_constants.h" #import "ios/chrome/browser/ui/util/rtl_geometry.h" #import "ios/chrome/browser/ui/util/uikit_ui_util.h" -#import "ios/chrome/common/colors/UIColor+cr_semantic_colors.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/UIColor+cr_semantic_colors.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #import "ios/chrome/common/ui/util/constraints_ui_util.h" #import "ios/third_party/material_components_ios/src/components/Typography/src/MaterialTypography.h"
diff --git a/ios/chrome/browser/ui/autofill/cells/status_item.mm b/ios/chrome/browser/ui/autofill/cells/status_item.mm index 0c8bf81..563f917a 100644 --- a/ios/chrome/browser/ui/autofill/cells/status_item.mm +++ b/ios/chrome/browser/ui/autofill/cells/status_item.mm
@@ -6,7 +6,7 @@ #include "base/logging.h" #import "ios/chrome/browser/ui/util/uikit_ui_util.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #include "ios/chrome/grit/ios_theme_resources.h" #import "ios/third_party/material_components_ios/src/components/ActivityIndicator/src/MaterialActivityIndicator.h" #import "ios/third_party/material_components_ios/src/components/Typography/src/MaterialTypography.h"
diff --git a/ios/chrome/browser/ui/autofill/form_input_accessory/BUILD.gn b/ios/chrome/browser/ui/autofill/form_input_accessory/BUILD.gn index 93c5ee3..8ad0c52 100644 --- a/ios/chrome/browser/ui/autofill/form_input_accessory/BUILD.gn +++ b/ios/chrome/browser/ui/autofill/form_input_accessory/BUILD.gn
@@ -56,7 +56,7 @@ "//ios/chrome/browser/autofill:autofill_shared", "//ios/chrome/browser/ui/image_util", "//ios/chrome/browser/ui/util", - "//ios/chrome/common/colors", + "//ios/chrome/common/ui/colors", "//ios/chrome/common/ui/util", "//ui/base", ]
diff --git a/ios/chrome/browser/ui/autofill/form_input_accessory/form_input_accessory_view.mm b/ios/chrome/browser/ui/autofill/form_input_accessory/form_input_accessory_view.mm index b6e3d27..94f41f7 100644 --- a/ios/chrome/browser/ui/autofill/form_input_accessory/form_input_accessory_view.mm +++ b/ios/chrome/browser/ui/autofill/form_input_accessory/form_input_accessory_view.mm
@@ -11,7 +11,7 @@ #import "ios/chrome/browser/autofill/form_input_navigator.h" #import "ios/chrome/browser/ui/image_util/image_util.h" #include "ios/chrome/browser/ui/util/ui_util.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #import "ios/chrome/common/ui/util/constraints_ui_util.h" #include "ios/chrome/grit/ios_strings.h" #include "ui/base/l10n/l10n_util.h"
diff --git a/ios/chrome/browser/ui/autofill/manual_fill/BUILD.gn b/ios/chrome/browser/ui/autofill/manual_fill/BUILD.gn index 85ea477..799cebb 100644 --- a/ios/chrome/browser/ui/autofill/manual_fill/BUILD.gn +++ b/ios/chrome/browser/ui/autofill/manual_fill/BUILD.gn
@@ -60,7 +60,7 @@ "//ios/chrome/browser/ui/table_view:table_view", "//ios/chrome/browser/ui/util", "//ios/chrome/browser/web_state_list:web_state_list", - "//ios/chrome/common/colors", + "//ios/chrome/common/ui/colors", "//ios/web/public", "//ios/web/public/deprecated", "//ios/web/public/js_messaging",
diff --git a/ios/chrome/browser/ui/autofill/manual_fill/chip_button.mm b/ios/chrome/browser/ui/autofill/manual_fill/chip_button.mm index 8f9de44..cf5238ea 100644 --- a/ios/chrome/browser/ui/autofill/manual_fill/chip_button.mm +++ b/ios/chrome/browser/ui/autofill/manual_fill/chip_button.mm
@@ -5,7 +5,7 @@ #import "ios/chrome/browser/ui/autofill/manual_fill/chip_button.h" #include "base/mac/foundation_util.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #if !defined(__has_feature) || !__has_feature(objc_arc) #error "This file requires ARC support."
diff --git a/ios/chrome/browser/ui/autofill/manual_fill/fallback_coordinator.mm b/ios/chrome/browser/ui/autofill/manual_fill/fallback_coordinator.mm index e6d2421..13984a3 100644 --- a/ios/chrome/browser/ui/autofill/manual_fill/fallback_coordinator.mm +++ b/ios/chrome/browser/ui/autofill/manual_fill/fallback_coordinator.mm
@@ -16,7 +16,7 @@ #import "ios/chrome/browser/ui/table_view/chrome_table_view_controller.h" #import "ios/chrome/browser/ui/table_view/table_view_navigation_controller.h" #include "ios/chrome/browser/ui/util/ui_util.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #if !defined(__has_feature) || !__has_feature(objc_arc) #error "This file requires ARC support."
diff --git a/ios/chrome/browser/ui/autofill/manual_fill/fallback_view_controller.mm b/ios/chrome/browser/ui/autofill/manual_fill/fallback_view_controller.mm index 15f0fb5..80294e3 100644 --- a/ios/chrome/browser/ui/autofill/manual_fill/fallback_view_controller.mm +++ b/ios/chrome/browser/ui/autofill/manual_fill/fallback_view_controller.mm
@@ -9,7 +9,7 @@ #import "ios/chrome/browser/ui/table_view/chrome_table_view_styler.h" #include "ios/chrome/browser/ui/util/ui_util.h" #import "ios/chrome/browser/ui/util/uikit_ui_util.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #include "ios/chrome/grit/ios_strings.h" #include "ui/base/l10n/l10n_util_mac.h"
diff --git a/ios/chrome/browser/ui/autofill/manual_fill/manual_fill_accessory_view_controller.mm b/ios/chrome/browser/ui/autofill/manual_fill/manual_fill_accessory_view_controller.mm index 0fc645bb..4d33c69 100644 --- a/ios/chrome/browser/ui/autofill/manual_fill/manual_fill_accessory_view_controller.mm +++ b/ios/chrome/browser/ui/autofill/manual_fill/manual_fill_accessory_view_controller.mm
@@ -6,7 +6,7 @@ #include "base/metrics/user_metrics.h" #include "ios/chrome/browser/ui/util/ui_util.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #import "ios/chrome/common/ui/util/constraints_ui_util.h" #include "ios/chrome/grit/ios_strings.h" #include "ui/base/l10n/l10n_util.h"
diff --git a/ios/chrome/browser/ui/autofill/manual_fill/manual_fill_action_cell.mm b/ios/chrome/browser/ui/autofill/manual_fill/manual_fill_action_cell.mm index 5bb62dc..ae9b705f 100644 --- a/ios/chrome/browser/ui/autofill/manual_fill/manual_fill_action_cell.mm +++ b/ios/chrome/browser/ui/autofill/manual_fill/manual_fill_action_cell.mm
@@ -7,7 +7,7 @@ #import "ios/chrome/browser/ui/autofill/manual_fill/manual_fill_cell_button.h" #import "ios/chrome/browser/ui/autofill/manual_fill/manual_fill_cell_utils.h" #import "ios/chrome/browser/ui/list_model/list_model.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #import "ios/chrome/common/ui/util/constraints_ui_util.h" #if !defined(__has_feature) || !__has_feature(objc_arc)
diff --git a/ios/chrome/browser/ui/autofill/manual_fill/manual_fill_address_cell.mm b/ios/chrome/browser/ui/autofill/manual_fill/manual_fill_address_cell.mm index d423566a..114cf9a5 100644 --- a/ios/chrome/browser/ui/autofill/manual_fill/manual_fill_address_cell.mm +++ b/ios/chrome/browser/ui/autofill/manual_fill/manual_fill_address_cell.mm
@@ -8,7 +8,7 @@ #import "ios/chrome/browser/ui/autofill/manual_fill/manual_fill_cell_utils.h" #import "ios/chrome/browser/ui/autofill/manual_fill/manual_fill_content_injector.h" #import "ios/chrome/browser/ui/list_model/list_model.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #import "ios/chrome/common/ui/util/constraints_ui_util.h" #if !defined(__has_feature) || !__has_feature(objc_arc)
diff --git a/ios/chrome/browser/ui/autofill/manual_fill/manual_fill_card_cell.mm b/ios/chrome/browser/ui/autofill/manual_fill/manual_fill_card_cell.mm index 808820d..61d06bc7 100644 --- a/ios/chrome/browser/ui/autofill/manual_fill/manual_fill_card_cell.mm +++ b/ios/chrome/browser/ui/autofill/manual_fill/manual_fill_card_cell.mm
@@ -13,7 +13,7 @@ #import "ios/chrome/browser/ui/autofill/manual_fill/manual_fill_credit_card.h" #import "ios/chrome/browser/ui/list_model/list_model.h" #import "ios/chrome/browser/ui/util/uikit_ui_util.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #import "ios/chrome/common/ui/util/constraints_ui_util.h" #include "ios/chrome/grit/ios_strings.h" #include "ui/base/l10n/l10n_util_mac.h"
diff --git a/ios/chrome/browser/ui/autofill/manual_fill/manual_fill_cell_button.mm b/ios/chrome/browser/ui/autofill/manual_fill/manual_fill_cell_button.mm index 14b950b..829ac23 100644 --- a/ios/chrome/browser/ui/autofill/manual_fill/manual_fill_cell_button.mm +++ b/ios/chrome/browser/ui/autofill/manual_fill/manual_fill_cell_button.mm
@@ -5,7 +5,7 @@ #import "ios/chrome/browser/ui/autofill/manual_fill/manual_fill_cell_button.h" #import "ios/chrome/browser/ui/autofill/manual_fill/manual_fill_cell_utils.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #if !defined(__has_feature) || !__has_feature(objc_arc) #error "This file requires ARC support."
diff --git a/ios/chrome/browser/ui/autofill/manual_fill/manual_fill_cell_utils.mm b/ios/chrome/browser/ui/autofill/manual_fill/manual_fill_cell_utils.mm index 30106fd..928e887 100644 --- a/ios/chrome/browser/ui/autofill/manual_fill/manual_fill_cell_utils.mm +++ b/ios/chrome/browser/ui/autofill/manual_fill/manual_fill_cell_utils.mm
@@ -7,7 +7,7 @@ #include "base/strings/sys_string_conversions.h" #include "base/strings/utf_string_conversions.h" #import "ios/chrome/browser/ui/autofill/manual_fill/chip_button.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #import "ios/chrome/common/ui/util/constraints_ui_util.h" #include "ios/chrome/grit/ios_strings.h" #include "ui/base/l10n/l10n_util_mac.h"
diff --git a/ios/chrome/browser/ui/autofill/manual_fill/manual_fill_password_cell.mm b/ios/chrome/browser/ui/autofill/manual_fill/manual_fill_password_cell.mm index 2c065e5..16aedcbb 100644 --- a/ios/chrome/browser/ui/autofill/manual_fill/manual_fill_password_cell.mm +++ b/ios/chrome/browser/ui/autofill/manual_fill/manual_fill_password_cell.mm
@@ -11,7 +11,7 @@ #import "ios/chrome/browser/ui/autofill/manual_fill/manual_fill_content_injector.h" #import "ios/chrome/browser/ui/autofill/manual_fill/manual_fill_credential.h" #import "ios/chrome/browser/ui/list_model/list_model.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #import "ios/chrome/common/ui/favicon/favicon_view.h" #import "ios/chrome/common/ui/util/constraints_ui_util.h" #include "ios/chrome/grit/ios_strings.h"
diff --git a/ios/chrome/browser/ui/autofill/save_card_infobar_view.mm b/ios/chrome/browser/ui/autofill/save_card_infobar_view.mm index c7435f4..7c2b95e 100644 --- a/ios/chrome/browser/ui/autofill/save_card_infobar_view.mm +++ b/ios/chrome/browser/ui/autofill/save_card_infobar_view.mm
@@ -15,7 +15,7 @@ #import "ios/chrome/browser/ui/util/label_link_controller.h" #import "ios/chrome/browser/ui/util/named_guide.h" #import "ios/chrome/browser/ui/util/uikit_ui_util.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #import "ios/chrome/common/ui/util/constraints_ui_util.h" #import "ios/third_party/material_components_ios/src/components/Buttons/src/MaterialButtons.h" #import "ios/third_party/material_components_ios/src/components/Typography/src/MaterialTypography.h"
diff --git a/ios/chrome/browser/ui/badges/BUILD.gn b/ios/chrome/browser/ui/badges/BUILD.gn index a28c91c3..a9c7548 100644 --- a/ios/chrome/browser/ui/badges/BUILD.gn +++ b/ios/chrome/browser/ui/badges/BUILD.gn
@@ -68,7 +68,7 @@ "//ios/chrome/browser/web", "//ios/chrome/browser/web_state_list", "//ios/chrome/common:timing", - "//ios/chrome/common/colors", + "//ios/chrome/common/ui/colors", "//ios/chrome/common/ui/util", "//ios/web/public", "//ui/base", @@ -99,7 +99,7 @@ "//ios/chrome/browser/ui/table_view:styler", "//ios/chrome/browser/ui/table_view/cells", "//ios/chrome/browser/ui/util", - "//ios/chrome/common/colors", + "//ios/chrome/common/ui/colors", "//ios/chrome/common/ui/util", "//ui/base", ]
diff --git a/ios/chrome/browser/ui/badges/badge_button.mm b/ios/chrome/browser/ui/badges/badge_button.mm index 12aeb72a..b4cab8a 100644 --- a/ios/chrome/browser/ui/badges/badge_button.mm +++ b/ios/chrome/browser/ui/badges/badge_button.mm
@@ -7,7 +7,7 @@ #import "base/logging.h" #import "ios/chrome/browser/ui/badges/badge_constants.h" #import "ios/chrome/browser/ui/util/uikit_ui_util.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #if !defined(__has_feature) || !__has_feature(objc_arc) #error "This file requires ARC support."
diff --git a/ios/chrome/browser/ui/badges/badge_button_factory.mm b/ios/chrome/browser/ui/badges/badge_button_factory.mm index c38a438..b57fc4b 100644 --- a/ios/chrome/browser/ui/badges/badge_button_factory.mm +++ b/ios/chrome/browser/ui/badges/badge_button_factory.mm
@@ -8,8 +8,8 @@ #import "ios/chrome/browser/ui/badges/badge_button.h" #import "ios/chrome/browser/ui/badges/badge_constants.h" #import "ios/chrome/browser/ui/badges/badge_delegate.h" -#import "ios/chrome/common/colors/dynamic_color_util.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/dynamic_color_util.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #include "ios/chrome/grit/ios_strings.h" #include "ui/base/l10n/l10n_util.h"
diff --git a/ios/chrome/browser/ui/badges/badge_popup_menu_item.mm b/ios/chrome/browser/ui/badges/badge_popup_menu_item.mm index 7ccb1b3..8151952 100644 --- a/ios/chrome/browser/ui/badges/badge_popup_menu_item.mm +++ b/ios/chrome/browser/ui/badges/badge_popup_menu_item.mm
@@ -7,7 +7,7 @@ #import "base/logging.h" #import "ios/chrome/browser/ui/list_model/list_model.h" #import "ios/chrome/browser/ui/table_view/chrome_table_view_styler.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #import "ios/chrome/common/ui/util/constraints_ui_util.h" #include "ios/chrome/grit/ios_strings.h" #include "ui/base/l10n/l10n_util.h"
diff --git a/ios/chrome/browser/ui/badges/badge_view_controller.mm b/ios/chrome/browser/ui/badges/badge_view_controller.mm index 9c9b07d..89a0e11 100644 --- a/ios/chrome/browser/ui/badges/badge_view_controller.mm +++ b/ios/chrome/browser/ui/badges/badge_view_controller.mm
@@ -11,8 +11,8 @@ #import "ios/chrome/browser/ui/badges/badge_item.h" #import "ios/chrome/browser/ui/elements/extended_touch_target_button.h" #import "ios/chrome/browser/ui/util/named_guide.h" -#import "ios/chrome/common/colors/semantic_color_names.h" #import "ios/chrome/common/material_timing.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #import "ios/chrome/common/ui/util/constraints_ui_util.h" #if !defined(__has_feature) || !__has_feature(objc_arc)
diff --git a/ios/chrome/browser/ui/bookmarks/BUILD.gn b/ios/chrome/browser/ui/bookmarks/BUILD.gn index 3fbf3e0a..936c304 100644 --- a/ios/chrome/browser/ui/bookmarks/BUILD.gn +++ b/ios/chrome/browser/ui/bookmarks/BUILD.gn
@@ -99,7 +99,7 @@ "//ios/chrome/browser/undo", "//ios/chrome/browser/url_loading", "//ios/chrome/browser/web_state_list", - "//ios/chrome/common/colors", + "//ios/chrome/common/ui/colors", "//ios/chrome/common/ui/favicon", "//ios/chrome/common/ui/util", "//ios/public/provider/chrome/browser",
diff --git a/ios/chrome/browser/ui/bookmarks/bookmark_edit_view_controller.mm b/ios/chrome/browser/ui/bookmarks/bookmark_edit_view_controller.mm index 69c2ca7..32af208d 100644 --- a/ios/chrome/browser/ui/bookmarks/bookmark_edit_view_controller.mm +++ b/ios/chrome/browser/ui/bookmarks/bookmark_edit_view_controller.mm
@@ -36,7 +36,7 @@ #include "ios/chrome/browser/ui/util/rtl_geometry.h" #include "ios/chrome/browser/ui/util/ui_util.h" #import "ios/chrome/browser/ui/util/uikit_ui_util.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #import "ios/chrome/common/ui/util/constraints_ui_util.h" #include "ios/chrome/grit/ios_strings.h" #import "ios/public/provider/chrome/browser/chrome_browser_provider.h"
diff --git a/ios/chrome/browser/ui/bookmarks/bookmark_empty_background.mm b/ios/chrome/browser/ui/bookmarks/bookmark_empty_background.mm index 9cc8446..1e905b6 100644 --- a/ios/chrome/browser/ui/bookmarks/bookmark_empty_background.mm +++ b/ios/chrome/browser/ui/bookmarks/bookmark_empty_background.mm
@@ -5,7 +5,7 @@ #include "ios/chrome/browser/ui/bookmarks/bookmark_empty_background.h" #import "ios/chrome/browser/ui/bookmarks/bookmark_ui_constants.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #if !defined(__has_feature) || !__has_feature(objc_arc) #error "This file requires ARC support."
diff --git a/ios/chrome/browser/ui/bookmarks/bookmark_folder_editor_view_controller.mm b/ios/chrome/browser/ui/bookmarks/bookmark_folder_editor_view_controller.mm index 2239f66..2cb0770 100644 --- a/ios/chrome/browser/ui/bookmarks/bookmark_folder_editor_view_controller.mm +++ b/ios/chrome/browser/ui/bookmarks/bookmark_folder_editor_view_controller.mm
@@ -28,7 +28,7 @@ #import "ios/chrome/browser/ui/material_components/utils.h" #import "ios/chrome/browser/ui/table_view/chrome_table_view_styler.h" #include "ios/chrome/browser/ui/util/rtl_geometry.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #import "ios/chrome/common/ui/util/constraints_ui_util.h" #include "ios/chrome/grit/ios_strings.h" #include "ui/base/l10n/l10n_util.h"
diff --git a/ios/chrome/browser/ui/bookmarks/bookmark_folder_view_controller.mm b/ios/chrome/browser/ui/bookmarks/bookmark_folder_view_controller.mm index 782d5497..1f31f110 100644 --- a/ios/chrome/browser/ui/bookmarks/bookmark_folder_view_controller.mm +++ b/ios/chrome/browser/ui/bookmarks/bookmark_folder_view_controller.mm
@@ -18,7 +18,7 @@ #import "ios/chrome/browser/ui/bookmarks/cells/bookmark_folder_item.h" #import "ios/chrome/browser/ui/icons/chrome_icon.h" #import "ios/chrome/browser/ui/material_components/utils.h" -#import "ios/chrome/common/colors/UIColor+cr_semantic_colors.h" +#import "ios/chrome/common/ui/colors/UIColor+cr_semantic_colors.h" #include "ios/chrome/grit/ios_strings.h" #include "ui/base/l10n/l10n_util_mac.h"
diff --git a/ios/chrome/browser/ui/bookmarks/bookmark_home_mediator.mm b/ios/chrome/browser/ui/bookmarks/bookmark_home_mediator.mm index c5b604ce..39f33aa 100644 --- a/ios/chrome/browser/ui/bookmarks/bookmark_home_mediator.mm +++ b/ios/chrome/browser/ui/bookmarks/bookmark_home_mediator.mm
@@ -22,7 +22,7 @@ #import "ios/chrome/browser/ui/signin_interaction/public/signin_presenter.h" #import "ios/chrome/browser/ui/table_view/cells/table_view_text_item.h" #import "ios/chrome/browser/ui/table_view/table_view_model.h" -#import "ios/chrome/common/colors/UIColor+cr_semantic_colors.h" +#import "ios/chrome/common/ui/colors/UIColor+cr_semantic_colors.h" #if !defined(__has_feature) || !__has_feature(objc_arc) #error "This file requires ARC support."
diff --git a/ios/chrome/browser/ui/bookmarks/bookmark_home_view_controller.mm b/ios/chrome/browser/ui/bookmarks/bookmark_home_view_controller.mm index 554d9a77..4e5c3823 100644 --- a/ios/chrome/browser/ui/bookmarks/bookmark_home_view_controller.mm +++ b/ios/chrome/browser/ui/bookmarks/bookmark_home_view_controller.mm
@@ -52,7 +52,7 @@ #import "ios/chrome/browser/url_loading/url_loading_service.h" #import "ios/chrome/browser/url_loading/url_loading_service_factory.h" #import "ios/chrome/browser/web_state_list/web_state_list.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #import "ios/chrome/common/ui/favicon/favicon_attributes.h" #import "ios/chrome/common/ui/favicon/favicon_view.h" #import "ios/chrome/common/ui/util/constraints_ui_util.h"
diff --git a/ios/chrome/browser/ui/bookmarks/bookmark_navigation_controller.mm b/ios/chrome/browser/ui/bookmarks/bookmark_navigation_controller.mm index 0eff335..f09595a 100644 --- a/ios/chrome/browser/ui/bookmarks/bookmark_navigation_controller.mm +++ b/ios/chrome/browser/ui/bookmarks/bookmark_navigation_controller.mm
@@ -6,7 +6,7 @@ #import "ios/chrome/browser/ui/bookmarks/bookmark_ui_constants.h" #import "ios/chrome/browser/ui/bookmarks/bookmark_utils_ios.h" -#import "ios/chrome/common/colors/UIColor+cr_semantic_colors.h" +#import "ios/chrome/common/ui/colors/UIColor+cr_semantic_colors.h" #if !defined(__has_feature) || !__has_feature(objc_arc) #error "This file requires ARC support."
diff --git a/ios/chrome/browser/ui/bookmarks/bookmark_utils_ios.mm b/ios/chrome/browser/ui/bookmarks/bookmark_utils_ios.mm index 28c9b0a..e50c7fd9 100644 --- a/ios/chrome/browser/ui/bookmarks/bookmark_utils_ios.mm +++ b/ios/chrome/browser/ui/bookmarks/bookmark_utils_ios.mm
@@ -23,7 +23,7 @@ #include "ios/chrome/browser/ui/bookmarks/undo_manager_wrapper.h" #include "ios/chrome/browser/ui/util/ui_util.h" #import "ios/chrome/browser/ui/util/uikit_ui_util.h" -#import "ios/chrome/common/colors/UIColor+cr_semantic_colors.h" +#import "ios/chrome/common/ui/colors/UIColor+cr_semantic_colors.h" #include "ios/chrome/grit/ios_strings.h" #import "ios/third_party/material_components_ios/src/components/Snackbar/src/MaterialSnackbar.h" #include "third_party/skia/include/core/SkColor.h"
diff --git a/ios/chrome/browser/ui/bookmarks/cells/bookmark_parent_folder_item.mm b/ios/chrome/browser/ui/bookmarks/cells/bookmark_parent_folder_item.mm index bec0827..36dfac1 100644 --- a/ios/chrome/browser/ui/bookmarks/cells/bookmark_parent_folder_item.mm +++ b/ios/chrome/browser/ui/bookmarks/cells/bookmark_parent_folder_item.mm
@@ -10,7 +10,7 @@ #import "ios/chrome/browser/ui/bookmarks/bookmark_utils_ios.h" #import "ios/chrome/browser/ui/icons/chrome_icon.h" #import "ios/chrome/browser/ui/util/uikit_ui_util.h" -#import "ios/chrome/common/colors/UIColor+cr_semantic_colors.h" +#import "ios/chrome/common/ui/colors/UIColor+cr_semantic_colors.h" #import "ios/chrome/common/ui/util/constraints_ui_util.h" #include "ios/chrome/grit/ios_strings.h" #include "ui/base/l10n/l10n_util_mac.h"
diff --git a/ios/chrome/browser/ui/bookmarks/cells/bookmark_text_field_item.mm b/ios/chrome/browser/ui/bookmarks/cells/bookmark_text_field_item.mm index cee6ed5..0eb0a90 100644 --- a/ios/chrome/browser/ui/bookmarks/cells/bookmark_text_field_item.mm +++ b/ios/chrome/browser/ui/bookmarks/cells/bookmark_text_field_item.mm
@@ -9,7 +9,7 @@ #import "ios/chrome/browser/ui/bookmarks/bookmark_ui_constants.h" #import "ios/chrome/browser/ui/bookmarks/bookmark_utils_ios.h" #import "ios/chrome/browser/ui/util/uikit_ui_util.h" -#import "ios/chrome/common/colors/UIColor+cr_semantic_colors.h" +#import "ios/chrome/common/ui/colors/UIColor+cr_semantic_colors.h" #import "ios/chrome/common/ui/util/constraints_ui_util.h" #include "ios/chrome/grit/ios_strings.h" #import "ios/public/provider/chrome/browser/chrome_browser_provider.h"
diff --git a/ios/chrome/browser/ui/browser_view/BUILD.gn b/ios/chrome/browser/ui/browser_view/BUILD.gn index 37d09f0..e3598f7 100644 --- a/ios/chrome/browser/ui/browser_view/BUILD.gn +++ b/ios/chrome/browser/ui/browser_view/BUILD.gn
@@ -164,7 +164,7 @@ "//ios/chrome/browser/web_state_list/web_usage_enabler", "//ios/chrome/browser/webui", "//ios/chrome/common", - "//ios/chrome/common/colors", + "//ios/chrome/common/ui/colors", "//ios/chrome/common/ui/util", "//ios/public/provider/chrome/browser", "//ios/public/provider/chrome/browser/ui",
diff --git a/ios/chrome/browser/ui/browser_view/browser_coordinator.mm b/ios/chrome/browser/ui/browser_view/browser_coordinator.mm index 1bf9ad9..ded7ff6 100644 --- a/ios/chrome/browser/ui/browser_view/browser_coordinator.mm +++ b/ios/chrome/browser/ui/browser_view/browser_coordinator.mm
@@ -15,6 +15,7 @@ #include "ios/chrome/browser/chrome_url_constants.h" #include "ios/chrome/browser/download/download_directory_util.h" #import "ios/chrome/browser/download/pass_kit_tab_helper.h" +#import "ios/chrome/browser/find_in_page/find_tab_helper.h" #import "ios/chrome/browser/main/browser.h" #import "ios/chrome/browser/store_kit/store_kit_coordinator.h" #import "ios/chrome/browser/store_kit/store_kit_tab_helper.h" @@ -32,11 +33,15 @@ #import "ios/chrome/browser/ui/commands/application_commands.h" #import "ios/chrome/browser/ui/commands/browser_coordinator_commands.h" #import "ios/chrome/browser/ui/commands/command_dispatcher.h" +#import "ios/chrome/browser/ui/commands/find_in_page_commands.h" #import "ios/chrome/browser/ui/commands/infobar_commands.h" #import "ios/chrome/browser/ui/commands/page_info_commands.h" #import "ios/chrome/browser/ui/commands/password_breach_commands.h" +#import "ios/chrome/browser/ui/commands/text_zoom_commands.h" #import "ios/chrome/browser/ui/download/ar_quick_look_coordinator.h" #import "ios/chrome/browser/ui/download/pass_kit_coordinator.h" +#import "ios/chrome/browser/ui/find_bar/find_bar_controller_ios.h" +#import "ios/chrome/browser/ui/find_bar/find_bar_coordinator.h" #import "ios/chrome/browser/ui/infobars/infobar_feature.h" #import "ios/chrome/browser/ui/open_in/open_in_mediator.h" #import "ios/chrome/browser/ui/overlays/overlay_container_coordinator.h" @@ -50,6 +55,9 @@ #import "ios/chrome/browser/ui/recent_tabs/recent_tabs_coordinator.h" #import "ios/chrome/browser/ui/settings/autofill/autofill_add_credit_card_coordinator.h" #import "ios/chrome/browser/ui/snackbar/snackbar_coordinator.h" +#import "ios/chrome/browser/ui/text_zoom/text_zoom_coordinator.h" +#import "ios/chrome/browser/ui/toolbar/accessory/toolbar_accessory_coordinator_delegate.h" +#import "ios/chrome/browser/ui/toolbar/accessory/toolbar_accessory_presenter.h" #import "ios/chrome/browser/ui/translate/legacy_translate_infobar_coordinator.h" #import "ios/chrome/browser/url_loading/url_loading_params.h" #import "ios/chrome/browser/url_loading/url_loading_service.h" @@ -71,6 +79,7 @@ FormInputAccessoryCoordinatorNavigator, PageInfoCommands, RepostFormTabHelperDelegate, + ToolbarAccessoryCoordinatorDelegate, URLLoadingServiceDelegate, WebStateListObserving> @@ -105,6 +114,9 @@ @property(nonatomic, strong) BadgePopupMenuCoordinator* badgePopupMenuCoordinator; +// Coordinator for the find bar. +@property(nonatomic, strong) FindBarCoordinator* findBarCoordinator; + // Coordinator in charge of the presenting autofill options above the // keyboard. @property(nonatomic, strong) @@ -118,6 +130,9 @@ @property(nonatomic, strong) ManualFillAllPasswordCoordinator* allPasswordCoordinator; +// Weak reference for the next coordinator to be displayed over the toolbar. +@property(nonatomic, weak) ChromeCoordinator* nextToolbarCoordinator; + // Coordinator for Page Info UI. @property(nonatomic, strong) ChromeCoordinator* pageInfoCoordinator; @@ -150,6 +165,9 @@ // Coordinator for presenting SKStoreProductViewController. @property(nonatomic, strong) StoreKitCoordinator* storeKitCoordinator; +// Coordinator for Text Zoom. +@property(nonatomic, strong) TextZoomCoordinator* textZoomCoordinator; + // Coordinator for the translate infobar's language selection and translate // option popup menus. @property(nonatomic, strong) @@ -187,6 +205,10 @@ DCHECK(self.browserState); DCHECK(!self.viewController); [self startBrowserContainer]; + [self.dispatcher startDispatchingToTarget:self + forProtocol:@protocol(TextZoomCommands)]; + [self.dispatcher startDispatchingToTarget:self + forProtocol:@protocol(FindInPageCommands)]; [self createViewController]; [self startChildCoordinators]; [self.dispatcher @@ -394,6 +416,9 @@ [self.ARQuickLookCoordinator stop]; self.ARQuickLookCoordinator = nil; + [self.findBarCoordinator stop]; + self.findBarCoordinator = nil; + [self.formInputAccessoryCoordinator stop]; self.formInputAccessoryCoordinator = nil; self.injectionHandler = nil; @@ -429,6 +454,9 @@ [self.storeKitCoordinator stop]; self.storeKitCoordinator = nil; + [self.textZoomCoordinator stop]; + self.textZoomCoordinator = nil; + [self.translateInfobarCoordinator stop]; self.translateInfobarCoordinator = nil; @@ -527,6 +555,116 @@ [self.addCreditCardCoordinator start]; } +#pragma mark - FindInPageCommands + +- (void)openFindInPage { + if (!self.canShowFindBar) + return; + + self.findBarCoordinator = + [[FindBarCoordinator alloc] initWithBaseViewController:self.viewController + browser:self.browser]; + self.findBarCoordinator.presenter = + self.viewController.toolbarAccessoryPresenter; + self.findBarCoordinator.delegate = self; + self.findBarCoordinator.presentationDelegate = self.viewController; + + if (self.viewController.toolbarAccessoryPresenter.isPresenting) { + self.nextToolbarCoordinator = self.findBarCoordinator; + [self hideTextZoom]; + return; + } + + [self.findBarCoordinator start]; +} + +- (void)closeFindInPage { + web::WebState* currentWebState = + self.browser->GetWebStateList()->GetActiveWebState(); + + __weak __typeof(self) weakSelf = self; + if (currentWebState) { + FindTabHelper* findTabHelper = FindTabHelper::FromWebState(currentWebState); + if (findTabHelper->IsFindUIActive()) { + findTabHelper->StopFinding(^{ + [weakSelf.findBarCoordinator stop]; + }); + } else { + [self.findBarCoordinator stop]; + } + } +} + +- (void)showFindUIIfActive { + web::WebState* currentWebState = + self.browser->GetWebStateList()->GetActiveWebState(); + auto* findHelper = FindTabHelper::FromWebState(currentWebState); + if (findHelper && findHelper->IsFindUIActive() && + !self.findBarCoordinator.presenter.isPresenting) { + [self.findBarCoordinator start]; + } +} + +- (void)hideFindUI { + [self.findBarCoordinator stop]; +} + +- (void)defocusFindInPage { + [self.findBarCoordinator defocusFindBar]; +} + +- (void)searchFindInPage { + web::WebState* currentWebState = + self.browser->GetWebStateList()->GetActiveWebState(); + DCHECK(currentWebState); + FindTabHelper* helper = FindTabHelper::FromWebState(currentWebState); + __weak __typeof(self) weakSelf = self; + helper->StartFinding([self.findBarCoordinator.findBarController searchTerm], + ^(FindInPageModel* model) { + [weakSelf.findBarCoordinator.findBarController + updateResultsCount:model]; + }); + + if (!self.browserState->IsOffTheRecord()) + helper->PersistSearchTerm(); +} + +- (void)findNextStringInPage { + web::WebState* currentWebState = + self.browser->GetWebStateList()->GetActiveWebState(); + DCHECK(currentWebState); + // TODO(crbug.com/603524): Reshow find bar if necessary. + FindTabHelper::FromWebState(currentWebState) + ->ContinueFinding(FindTabHelper::FORWARD, ^(FindInPageModel* model) { + [self.findBarCoordinator.findBarController updateResultsCount:model]; + }); +} + +- (void)findPreviousStringInPage { + web::WebState* currentWebState = + self.browser->GetWebStateList()->GetActiveWebState(); + DCHECK(currentWebState); + // TODO(crbug.com/603524): Reshow find bar if necessary. + FindTabHelper::FromWebState(currentWebState) + ->ContinueFinding(FindTabHelper::REVERSE, ^(FindInPageModel* model) { + [self.findBarCoordinator.findBarController updateResultsCount:model]; + }); +} + +#pragma mark - FindInPageCommands Helpers + +- (BOOL)canShowFindBar { + web::WebState* currentWebState = + self.browser->GetWebStateList()->GetActiveWebState(); + if (!currentWebState) { + return NO; + } + + auto* helper = FindTabHelper::FromWebState(currentWebState); + return (helper && helper->CurrentPageSupportsFindInPage() && + !helper->IsFindUIActive()); +} + #pragma mark - PageInfoCommands - (void)legacyShowPageInfoForOriginPoint:(CGPoint)originPoint { @@ -608,6 +746,45 @@ self.repostFormCoordinator = nil; } +#pragma mark - ToolbarAccessoryCoordinatorDelegate + +- (void)toolbarAccessoryCoordinatorDidDismissUI: + (ChromeCoordinator*)coordinator { + if (!self.nextToolbarCoordinator) { + return; + } + if (self.nextToolbarCoordinator == self.findBarCoordinator) { + [self openFindInPage]; + self.nextToolbarCoordinator = nil; + } else if (self.nextToolbarCoordinator == self.textZoomCoordinator) { + [self showTextZoom]; + self.nextToolbarCoordinator = nil; + } +} + +#pragma mark - TextZoomCommands + +- (void)showTextZoom { + self.textZoomCoordinator = [[TextZoomCoordinator alloc] + initWithBaseViewController:self.viewController + browser:self.browser]; + self.textZoomCoordinator.presenter = + self.viewController.toolbarAccessoryPresenter; + self.textZoomCoordinator.delegate = self; + + if (self.viewController.toolbarAccessoryPresenter.isPresenting) { + self.nextToolbarCoordinator = self.textZoomCoordinator; + [self closeFindInPage]; + return; + } + + [self.textZoomCoordinator start]; +} + +- (void)hideTextZoom { + [self.textZoomCoordinator stop]; +} + #pragma mark - URLLoadingServiceDelegate - (void)animateOpenBackgroundTabFromParams:(const UrlLoadParams&)params
diff --git a/ios/chrome/browser/ui/browser_view/browser_view_controller.h b/ios/chrome/browser/ui/browser_view/browser_view_controller.h index 1e216a02..5e3cf9ba 100644 --- a/ios/chrome/browser/ui/browser_view/browser_view_controller.h +++ b/ios/chrome/browser/ui/browser_view/browser_view_controller.h
@@ -8,6 +8,7 @@ #import <UIKit/UIKit.h> #import "base/ios/block_types.h" +#import "ios/chrome/browser/ui/find_bar/find_bar_coordinator.h" #import "ios/chrome/browser/ui/page_info/requirements/page_info_presentation.h" #import "ios/chrome/browser/ui/settings/sync/utils/sync_presenter.h" #import "ios/chrome/browser/ui/toolbar/toolbar_coordinator_delegate.h" @@ -35,6 +36,7 @@ // which implement the interface. @interface BrowserViewController : UIViewController <LogoAnimationControllerOwnerOwner, + FindBarPresentationDelegate, PageInfoPresentation, SyncPresenter, ToolbarCoordinatorDelegate> @@ -96,6 +98,10 @@ @property(nonatomic, strong) UIViewController* infobarModalOverlayContainerViewController; +// Presenter used to display accessories over the toolbar (e.g. Find In Page). +@property(nonatomic, strong) + ToolbarAccessoryPresenter* toolbarAccessoryPresenter; + // Whether the receiver is currently the primary BVC. - (void)setPrimary:(BOOL)primary;
diff --git a/ios/chrome/browser/ui/browser_view/browser_view_controller.mm b/ios/chrome/browser/ui/browser_view/browser_view_controller.mm index b59e49a..72736f7 100644 --- a/ios/chrome/browser/ui/browser_view/browser_view_controller.mm +++ b/ios/chrome/browser/ui/browser_view/browser_view_controller.mm
@@ -34,7 +34,6 @@ #import "ios/chrome/browser/download/download_manager_tab_helper.h" #include "ios/chrome/browser/feature_engagement/tracker_factory.h" #include "ios/chrome/browser/feature_engagement/tracker_util.h" -#import "ios/chrome/browser/find_in_page/find_in_page_response_delegate.h" #import "ios/chrome/browser/find_in_page/find_tab_helper.h" #include "ios/chrome/browser/first_run/first_run.h" #import "ios/chrome/browser/geolocation/omnibox_geolocation_controller.h" @@ -93,9 +92,6 @@ #import "ios/chrome/browser/ui/dialogs/overlay_java_script_dialog_presenter.h" #import "ios/chrome/browser/ui/download/download_manager_coordinator.h" #import "ios/chrome/browser/ui/elements/activity_overlay_coordinator.h" -#import "ios/chrome/browser/ui/find_bar/find_bar_controller_ios.h" -#import "ios/chrome/browser/ui/find_bar/find_bar_coordinator.h" -#import "ios/chrome/browser/ui/find_bar/find_bar_view_controller.h" #import "ios/chrome/browser/ui/first_run/welcome_to_chrome_view_controller.h" #import "ios/chrome/browser/ui/fullscreen/fullscreen_animator.h" #import "ios/chrome/browser/ui/fullscreen/fullscreen_controller.h" @@ -129,8 +125,6 @@ #import "ios/chrome/browser/ui/tabs/requirements/tab_strip_presentation.h" #import "ios/chrome/browser/ui/tabs/switch_to_tab_animation_view.h" #import "ios/chrome/browser/ui/tabs/tab_strip_legacy_coordinator.h" -#import "ios/chrome/browser/ui/text_zoom/text_zoom_coordinator.h" -#import "ios/chrome/browser/ui/text_zoom/text_zoom_view_controller.h" #import "ios/chrome/browser/ui/toolbar/accessory/toolbar_accessory_coordinator_delegate.h" #import "ios/chrome/browser/ui/toolbar/accessory/toolbar_accessory_presenter.h" #import "ios/chrome/browser/ui/toolbar/adaptive_toolbar_coordinator.h" @@ -180,7 +174,7 @@ #import "ios/chrome/browser/webui/net_export_tab_helper.h" #import "ios/chrome/browser/webui/net_export_tab_helper_delegate.h" #import "ios/chrome/browser/webui/show_mail_composer_context.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #import "ios/chrome/common/ui/util/constraints_ui_util.h" #include "ios/chrome/grit/ios_strings.h" #include "ios/public/provider/chrome/browser/chrome_browser_provider.h" @@ -365,7 +359,7 @@ SigninPresenter, SnapshotGeneratorDelegate, TabStripPresentation, - ToolbarAccessoryCoordinatorDelegate, + FindBarPresentationDelegate, ToolbarHeightProviderForFullscreen, WebStateListObserving, UIGestureRecognizerDelegate, @@ -498,8 +492,6 @@ @property(nonatomic, strong, readonly) DialogPresenter* dialogPresenter; // The object that manages keyboard commands on behalf of the BVC. @property(nonatomic, strong, readonly) KeyCommandsProvider* keyCommandsProvider; -// Helper method to check web controller canShowFindBar method. -@property(nonatomic, assign, readonly) BOOL canShowFindBar; // Whether the controller's view is currently available. // YES from viewWillAppear to viewWillDisappear. @property(nonatomic, assign, getter=isVisible) BOOL visible; @@ -517,9 +509,6 @@ // Whether BVC prefers to hide the status bar. This value is used to determine // the response from the |prefersStatusBarHidden| method. @property(nonatomic, assign) BOOL hideStatusBar; -// Presenter used to display accessories over the toolbar (e.g. Find In Page). -@property(nonatomic, strong) - ToolbarAccessoryPresenter* toolbarAccessoryPresenter; // Coordinator for displaying a modal overlay with activity indicator to prevent // the user from interacting with the browser view. @property(nonatomic, strong) @@ -553,16 +542,11 @@ // Coordinator for the popup menus. @property(nonatomic, strong) PopupMenuCoordinator* popupMenuCoordinator; -// Coordinator for find in page. -@property(nonatomic, strong) FindBarCoordinator* findBarCoordinator; - -// Coordinator for text zoom. -@property(nonatomic, strong) TextZoomCoordinator* textZoomCoordinator; - -@property(nonatomic, weak) ChromeCoordinator* nextToolbarCoordinator; - @property(nonatomic, strong) BubblePresenter* bubblePresenter; +// Command handler for text zoom commands +@property(nonatomic, weak) id<TextZoomCommands> textZoomHandler; + // Primary toolbar. @property(nonatomic, strong) PrimaryToolbarCoordinator* primaryToolbarCoordinator; @@ -742,16 +726,12 @@ _browserContainerViewController = browserContainerViewController; _dependencyFactory = factory; self.commandDispatcher = browser->GetCommandDispatcher(); + self.textZoomHandler = + HandlerForProtocol(self.commandDispatcher, TextZoomCommands); [self.commandDispatcher startDispatchingToTarget:self forProtocol:@protocol(BrowserCommands)]; [self.commandDispatcher - startDispatchingToTarget:self - forProtocol:@protocol(FindInPageCommands)]; - [self.commandDispatcher - startDispatchingToTarget:self - forProtocol:@protocol(TextZoomCommands)]; - [self.commandDispatcher startDispatchingToTarget:applicationCommandEndpoint forProtocol:@protocol(ApplicationCommands)]; // -startDispatchingToTarget:forProtocol: doesn't pick up protocols the @@ -916,18 +896,6 @@ return _keyCommandsProvider; } -- (BOOL)canShowFindBar { - // Make sure web controller can handle find in page. - web::WebState* webState = self.currentWebState; - if (!webState) { - return NO; - } - - auto* helper = FindTabHelper::FromWebState(webState); - return (helper && helper->CurrentPageSupportsFindInPage() && - !helper->IsFindUIActive()); -} - - (BOOL)canShowTabStrip { return IsRegularXRegularSizeClass(self); } @@ -1148,11 +1116,6 @@ completion:nil]; } [self.bubblePresenter userEnteredTabSwitcher]; - - // TODO(crbug.com/1052818): These should not be necessary once the - // coordinators are moved up to BrowserCoordinator. - [self.dispatcher hideFindUI]; - [self.textZoomCoordinator stop]; } - (void)presentBubblesIfEligible { @@ -1236,7 +1199,7 @@ // Keyboard shouldn't overlay the ecoutez window, so dismiss find in page and // dismiss the keyboard. [self.dispatcher closeFindInPage]; - [self hideTextZoom]; + [self.textZoomHandler hideTextZoom]; [[self viewForWebState:self.currentWebState] endEditing:NO]; // Ensure that voice search objects are created. @@ -1322,7 +1285,7 @@ [_ntpCoordinatorsForWebStates[webState] dismissModals]; } [self.dispatcher closeFindInPage]; - [self.textZoomCoordinator stop]; + [self.textZoomHandler hideTextZoom]; } [self.dispatcher dismissPopupMenuAnimated:NO]; @@ -1717,7 +1680,7 @@ if (ShouldShowCompactToolbar(previousTraitCollection) != ShouldShowCompactToolbar()) { [self.dispatcher hideFindUI]; - [self.textZoomCoordinator stop]; + [self.textZoomHandler hideTextZoom]; } // Update the toolbar visibility. @@ -2394,7 +2357,7 @@ if (!self.inNewTabAnimation) { // Hide findbar. |updateToolbar| will restore the findbar later. [self.dispatcher hideFindUI]; - [self.textZoomCoordinator stop]; + [self.textZoomHandler hideTextZoom]; // Make new content visible, resizing it first as the orientation may // have changed from the last time it was displayed. @@ -4203,26 +4166,6 @@ } } -- (void)showTextZoom { - if (self.toolbarAccessoryPresenter.isPresenting) { - self.nextToolbarCoordinator = self.textZoomCoordinator; - [self closeFindInPage]; - return; - } - - self.textZoomCoordinator = - [[TextZoomCoordinator alloc] initWithBaseViewController:self - browser:self.browser]; - self.textZoomCoordinator.presenter = self.toolbarAccessoryPresenter; - self.textZoomCoordinator.delegate = self; - - [self.textZoomCoordinator start]; -} - -- (void)hideTextZoom { - [self.textZoomCoordinator stop]; -} - #pragma mark - BrowserCommands helpers // Reloads the original url of the last non-redirect item (including non-history @@ -4235,92 +4178,6 @@ navigationManager->ReloadWithUserAgentType(userAgentType); } -#pragma mark - FindInPageCommands - -- (void)openFindInPage { - if (!self.canShowFindBar) - return; - - if (self.toolbarAccessoryPresenter.isPresenting) { - self.nextToolbarCoordinator = self.findBarCoordinator; - [self hideTextZoom]; - return; - } - - self.findBarCoordinator = - [[FindBarCoordinator alloc] initWithBaseViewController:self - browser:self.browser]; - self.findBarCoordinator.presenter = self.toolbarAccessoryPresenter; - self.findBarCoordinator.delegate = self; - - [self.findBarCoordinator start]; -} - -- (void)closeFindInPage { - __weak BrowserViewController* weakSelf = self; - if (self.currentWebState) { - FindTabHelper* findTabHelper = - FindTabHelper::FromWebState(self.currentWebState); - if (findTabHelper->IsFindUIActive()) { - findTabHelper->StopFinding(^{ - [weakSelf hideFindUI]; - }); - } else { - [self hideFindUI]; - } - } -} - -- (void)showFindUIIfActive { - web::WebState* currentWebState = - self.browser->GetWebStateList()->GetActiveWebState(); - auto* findHelper = FindTabHelper::FromWebState(currentWebState); - if (findHelper && findHelper->IsFindUIActive() && - !self.findBarCoordinator.presenter.isPresenting) { - [self.findBarCoordinator start]; - } -} - -- (void)hideFindUI { - [self.findBarCoordinator stop]; -} - -- (void)defocusFindInPage { - [self.findBarCoordinator defocusFindBar]; -} - -- (void)searchFindInPage { - DCHECK(self.currentWebState); - FindTabHelper* helper = FindTabHelper::FromWebState(self.currentWebState); - __weak __typeof(self) weakSelf = self; - helper->StartFinding([self.findBarCoordinator.findBarController searchTerm], - ^(FindInPageModel* model) { - [weakSelf.findBarCoordinator.findBarController - updateResultsCount:model]; - }); - - if (!_isOffTheRecord) - helper->PersistSearchTerm(); -} - -- (void)findNextStringInPage { - DCHECK(self.currentWebState); - // TODO(crbug.com/603524): Reshow find bar if necessary. - FindTabHelper::FromWebState(self.currentWebState) - ->ContinueFinding(FindTabHelper::FORWARD, ^(FindInPageModel* model) { - [self.findBarCoordinator.findBarController updateResultsCount:model]; - }); -} - -- (void)findPreviousStringInPage { - DCHECK(self.currentWebState); - // TODO(crbug.com/603524): Reshow find bar if necessary. - FindTabHelper::FromWebState(self.currentWebState) - ->ContinueFinding(FindTabHelper::REVERSE, ^(FindInPageModel* model) { - [self.findBarCoordinator.findBarController updateResultsCount:model]; - }); -} - #pragma mark - WebStateListObserving methods // Observer method, active WebState changed. @@ -4363,7 +4220,7 @@ // Remove the find bar for now. [self.dispatcher hideFindUI]; - [self.textZoomCoordinator stop]; + [self.textZoomHandler hideTextZoom]; } - (void)webStateList:(WebStateList*)webStateList @@ -4630,7 +4487,7 @@ // Hide UI accessories such as find bar and first visit overlays // for welcome page. [self.dispatcher hideFindUI]; - [self.textZoomCoordinator stop]; + [self.textZoomHandler hideTextZoom]; [self.infobarContainerCoordinator hideContainer:YES]; } } @@ -4803,32 +4660,14 @@ [[self view] addSubview:tabStripView]; } -#pragma mark - ToolbarAccessoryCoordinatorDelegate +#pragma mark - FindBarPresentationDelegate -- (void)setHeadersForToolbarAccessoryCoordinator: - (ChromeCoordinator*)toolbarAccessoryCoordinator { +- (void)setHeadersForFindBarCoordinator: + (FindBarCoordinator*)findBarCoordinator { [self setFramesForHeaders:[self headerViews] atOffset:[self currentHeaderOffset]]; } -- (void)toolbarAccessoryCoordinatorDidDismissUI: - (ChromeCoordinator*)coordinator { - if (!self.nextToolbarCoordinator) { - return; - } - if (self.nextToolbarCoordinator == self.findBarCoordinator) { - dispatch_async(dispatch_get_main_queue(), ^{ - [self openFindInPage]; - }); - self.nextToolbarCoordinator = nil; - } else if (self.nextToolbarCoordinator == self.textZoomCoordinator) { - dispatch_async(dispatch_get_main_queue(), ^{ - [self showTextZoom]; - }); - self.nextToolbarCoordinator = nil; - } -} - #pragma mark - Toolbar Accessory Methods - (ToolbarAccessoryPresenter*)toolbarAccessoryPresenter {
diff --git a/ios/chrome/browser/ui/browser_view/browser_view_controller_unittest.mm b/ios/chrome/browser/ui/browser_view/browser_view_controller_unittest.mm index 1eaf821..58ebfb81 100644 --- a/ios/chrome/browser/ui/browser_view/browser_view_controller_unittest.mm +++ b/ios/chrome/browser/ui/browser_view/browser_view_controller_unittest.mm
@@ -29,7 +29,9 @@ #import "ios/chrome/browser/ui/browser_view/key_commands_provider.h" #import "ios/chrome/browser/ui/commands/application_commands.h" #import "ios/chrome/browser/ui/commands/command_dispatcher.h" +#import "ios/chrome/browser/ui/commands/find_in_page_commands.h" #import "ios/chrome/browser/ui/commands/page_info_commands.h" +#import "ios/chrome/browser/ui/commands/text_zoom_commands.h" #include "ios/chrome/browser/ui/util/ui_util.h" #include "ios/chrome/browser/web_state_list/fake_web_state_list_delegate.h" #include "ios/chrome/browser/web_state_list/web_state_list.h" @@ -136,6 +138,17 @@ SessionRestorationBrowserAgent::CreateForBrowser( browser_.get(), [[TestSessionService alloc] init]); + id mockFindInPageCommandHandler = + OCMProtocolMock(@protocol(FindInPageCommands)); + [browser_->GetCommandDispatcher() + startDispatchingToTarget:mockFindInPageCommandHandler + forProtocol:@protocol(FindInPageCommands)]; + id mockTextZoomCommandHandler = + OCMProtocolMock(@protocol(TextZoomCommands)); + [browser_->GetCommandDispatcher() + startDispatchingToTarget:mockTextZoomCommandHandler + forProtocol:@protocol(TextZoomCommands)]; + // Create three web states. for (int i = 0; i < 3; i++) { web::WebState::CreateParams params(chrome_browser_state_.get());
diff --git a/ios/chrome/browser/ui/bubble/BUILD.gn b/ios/chrome/browser/ui/bubble/BUILD.gn index a3b527d7..d447472 100644 --- a/ios/chrome/browser/ui/bubble/BUILD.gn +++ b/ios/chrome/browser/ui/bubble/BUILD.gn
@@ -30,7 +30,7 @@ "//ios/chrome/browser/ui/toolbar/public:feature_flags", "//ios/chrome/browser/ui/util", "//ios/chrome/common", - "//ios/chrome/common/colors", + "//ios/chrome/common/ui/colors", "//ios/third_party/material_components_ios", "//net", "//ui/base",
diff --git a/ios/chrome/browser/ui/bubble/bubble_view.mm b/ios/chrome/browser/ui/bubble/bubble_view.mm index c741607b..250234e 100644 --- a/ios/chrome/browser/ui/bubble/bubble_view.mm +++ b/ios/chrome/browser/ui/bubble/bubble_view.mm
@@ -9,7 +9,7 @@ #import "ios/chrome/browser/ui/colors/MDCPalette+CrAdditions.h" #include "ios/chrome/browser/ui/util/ui_util.h" #include "ios/chrome/browser/ui/util/uikit_ui_util.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #if !defined(__has_feature) || !__has_feature(objc_arc) #error "This file requires ARC support."
diff --git a/ios/chrome/browser/ui/collection_view/BUILD.gn b/ios/chrome/browser/ui/collection_view/BUILD.gn index 7e652d94..51ea6c1 100644 --- a/ios/chrome/browser/ui/collection_view/BUILD.gn +++ b/ios/chrome/browser/ui/collection_view/BUILD.gn
@@ -14,7 +14,7 @@ "//base", "//ios/chrome/browser/ui/list_model", "//ios/chrome/browser/ui/material_components", - "//ios/chrome/common/colors", + "//ios/chrome/common/ui/colors", ] public_deps = [ "//ios/chrome/browser/ui/collection_view/cells",
diff --git a/ios/chrome/browser/ui/collection_view/cells/BUILD.gn b/ios/chrome/browser/ui/collection_view/cells/BUILD.gn index 00c7bea..3b8a5931 100644 --- a/ios/chrome/browser/ui/collection_view/cells/BUILD.gn +++ b/ios/chrome/browser/ui/collection_view/cells/BUILD.gn
@@ -29,7 +29,7 @@ "//ios/chrome/browser/ui/util", "//ios/chrome/browser/ui/util", "//ios/chrome/common", - "//ios/chrome/common/colors", + "//ios/chrome/common/ui/colors", "//ios/chrome/common/ui/util", "//ui/base", "//url",
diff --git a/ios/chrome/browser/ui/collection_view/cells/MDCCollectionViewCell+Chrome.mm b/ios/chrome/browser/ui/collection_view/cells/MDCCollectionViewCell+Chrome.mm index 3d277dd..a6119f5 100644 --- a/ios/chrome/browser/ui/collection_view/cells/MDCCollectionViewCell+Chrome.mm +++ b/ios/chrome/browser/ui/collection_view/cells/MDCCollectionViewCell+Chrome.mm
@@ -5,7 +5,7 @@ #import "ios/chrome/browser/ui/collection_view/cells/MDCCollectionViewCell+Chrome.h" #import "ios/chrome/browser/ui/collection_view/cells/collection_view_item.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #if !defined(__has_feature) || !__has_feature(objc_arc) #error "This file requires ARC support."
diff --git a/ios/chrome/browser/ui/collection_view/cells/collection_view_account_item.mm b/ios/chrome/browser/ui/collection_view/cells/collection_view_account_item.mm index 7f8f933..24e3ffc 100644 --- a/ios/chrome/browser/ui/collection_view/cells/collection_view_account_item.mm +++ b/ios/chrome/browser/ui/collection_view/cells/collection_view_account_item.mm
@@ -9,8 +9,8 @@ #include "ios/chrome/browser/ui/collection_view/cells/collection_view_cell_constants.h" #import "ios/chrome/browser/ui/colors/MDCPalette+CrAdditions.h" #import "ios/chrome/browser/ui/util/uikit_ui_util.h" -#import "ios/chrome/common/colors/UIColor+cr_semantic_colors.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/UIColor+cr_semantic_colors.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #import "ios/third_party/material_components_ios/src/components/Palettes/src/MaterialPalettes.h" #import "ios/third_party/material_components_ios/src/components/Typography/src/MaterialTypography.h" #include "ui/base/l10n/l10n_util.h"
diff --git a/ios/chrome/browser/ui/collection_view/cells/collection_view_footer_item.mm b/ios/chrome/browser/ui/collection_view/cells/collection_view_footer_item.mm index 77809d45..6a9b8c3 100644 --- a/ios/chrome/browser/ui/collection_view/cells/collection_view_footer_item.mm +++ b/ios/chrome/browser/ui/collection_view/cells/collection_view_footer_item.mm
@@ -7,9 +7,9 @@ #include "ios/chrome/browser/ui/collection_view/cells/collection_view_cell_constants.h" #import "ios/chrome/browser/ui/util/label_link_controller.h" #import "ios/chrome/browser/ui/util/uikit_ui_util.h" -#import "ios/chrome/common/colors/UIColor+cr_semantic_colors.h" -#import "ios/chrome/common/colors/semantic_color_names.h" #import "ios/chrome/common/string_util.h" +#import "ios/chrome/common/ui/colors/UIColor+cr_semantic_colors.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #import "ios/third_party/material_components_ios/src/components/Typography/src/MaterialTypography.h" #if !defined(__has_feature) || !__has_feature(objc_arc)
diff --git a/ios/chrome/browser/ui/collection_view/cells/collection_view_switch_item.mm b/ios/chrome/browser/ui/collection_view/cells/collection_view_switch_item.mm index 1c14626..7aaad74 100644 --- a/ios/chrome/browser/ui/collection_view/cells/collection_view_switch_item.mm +++ b/ios/chrome/browser/ui/collection_view/cells/collection_view_switch_item.mm
@@ -5,7 +5,7 @@ #import "ios/chrome/browser/ui/collection_view/cells/collection_view_switch_item.h" #import "ios/chrome/browser/ui/util/uikit_ui_util.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #include "ios/chrome/grit/ios_strings.h" #import "ios/third_party/material_components_ios/src/components/Typography/src/MaterialTypography.h" #include "ui/base/l10n/l10n_util_mac.h"
diff --git a/ios/chrome/browser/ui/collection_view/collection_view_controller.mm b/ios/chrome/browser/ui/collection_view/collection_view_controller.mm index 53d9c49..6d5e741 100644 --- a/ios/chrome/browser/ui/collection_view/collection_view_controller.mm +++ b/ios/chrome/browser/ui/collection_view/collection_view_controller.mm
@@ -11,7 +11,7 @@ #import "ios/chrome/browser/ui/collection_view/collection_view_model.h" #import "ios/chrome/browser/ui/material_components/chrome_app_bar_view_controller.h" #import "ios/chrome/browser/ui/material_components/utils.h" -#import "ios/chrome/common/colors/UIColor+cr_semantic_colors.h" +#import "ios/chrome/common/ui/colors/UIColor+cr_semantic_colors.h" #import "ios/third_party/material_components_ios/src/components/CollectionCells/src/MaterialCollectionCells.h" #if !defined(__has_feature) || !__has_feature(objc_arc)
diff --git a/ios/chrome/browser/ui/content_suggestions/BUILD.gn b/ios/chrome/browser/ui/content_suggestions/BUILD.gn index 3acc2c1..27134ddc 100644 --- a/ios/chrome/browser/ui/content_suggestions/BUILD.gn +++ b/ios/chrome/browser/ui/content_suggestions/BUILD.gn
@@ -144,7 +144,7 @@ "//ios/chrome/browser/ui/toolbar/buttons", "//ios/chrome/browser/ui/toolbar/public", "//ios/chrome/browser/ui/util:util", - "//ios/chrome/common/colors", + "//ios/chrome/common/ui/colors", "//ios/chrome/common/ui/favicon", "//ios/chrome/common/ui/util", "//ios/web/common", @@ -159,7 +159,7 @@ "ntp_home_constant.h", "ntp_home_constant.mm", ] - deps = [ "//ios/chrome/common/colors" ] + deps = [ "//ios/chrome/common/ui/colors" ] configs += [ "//build/config/compiler:enable_arc" ] } @@ -181,7 +181,7 @@ "//ios/chrome/browser/ui/ntp_tile_views:constants", "//ios/chrome/browser/ui/toolbar/public", "//ios/chrome/browser/ui/util", - "//ios/chrome/common/colors", + "//ios/chrome/common/ui/colors", "//ios/third_party/material_components_ios", "//ios/web/common", "//ui/base",
diff --git a/ios/chrome/browser/ui/content_suggestions/cells/BUILD.gn b/ios/chrome/browser/ui/content_suggestions/cells/BUILD.gn index 29a80e0..27201983 100644 --- a/ios/chrome/browser/ui/content_suggestions/cells/BUILD.gn +++ b/ios/chrome/browser/ui/content_suggestions/cells/BUILD.gn
@@ -64,7 +64,7 @@ "//ios/chrome/browser/ui/ntp_tile_views:constants", "//ios/chrome/browser/ui/util", "//ios/chrome/common", - "//ios/chrome/common/colors", + "//ios/chrome/common/ui/colors", "//ios/chrome/common/ui/favicon", "//ios/chrome/common/ui/util", "//ui/base",
diff --git a/ios/chrome/browser/ui/content_suggestions/cells/content_suggestions_articles_header_item.mm b/ios/chrome/browser/ui/content_suggestions/cells/content_suggestions_articles_header_item.mm index c421806..6a14926d 100644 --- a/ios/chrome/browser/ui/content_suggestions/cells/content_suggestions_articles_header_item.mm +++ b/ios/chrome/browser/ui/content_suggestions/cells/content_suggestions_articles_header_item.mm
@@ -5,8 +5,8 @@ #import "ios/chrome/browser/ui/content_suggestions/cells/content_suggestions_articles_header_item.h" #import "ios/chrome/browser/ui/util/uikit_ui_util.h" -#import "ios/chrome/common/colors/UIColor+cr_semantic_colors.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/UIColor+cr_semantic_colors.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #import "ios/chrome/common/ui/util/constraints_ui_util.h" #include "ios/chrome/grit/ios_strings.h" #include "ui/base/l10n/l10n_util.h"
diff --git a/ios/chrome/browser/ui/content_suggestions/cells/content_suggestions_cell.mm b/ios/chrome/browser/ui/content_suggestions/cells/content_suggestions_cell.mm index bf6a2d2..1e5ccfb 100644 --- a/ios/chrome/browser/ui/content_suggestions/cells/content_suggestions_cell.mm +++ b/ios/chrome/browser/ui/content_suggestions/cells/content_suggestions_cell.mm
@@ -8,7 +8,7 @@ #import "ios/chrome/browser/ui/util/i18n_string.h" #include "ios/chrome/browser/ui/util/ui_util.h" #import "ios/chrome/browser/ui/util/uikit_ui_util.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #import "ios/chrome/common/ui/favicon/favicon_view.h" #import "ios/chrome/common/ui/util/constraints_ui_util.h" #import "ios/third_party/material_components_ios/src/components/Typography/src/MaterialTypography.h"
diff --git a/ios/chrome/browser/ui/content_suggestions/cells/content_suggestions_footer_item.mm b/ios/chrome/browser/ui/content_suggestions/cells/content_suggestions_footer_item.mm index 218f778..b4573c1 100644 --- a/ios/chrome/browser/ui/content_suggestions/cells/content_suggestions_footer_item.mm +++ b/ios/chrome/browser/ui/content_suggestions/cells/content_suggestions_footer_item.mm
@@ -6,7 +6,7 @@ #import "ios/chrome/browser/ui/colors/MDCPalette+CrAdditions.h" #include "ios/chrome/browser/ui/util/ui_util.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #import "ios/chrome/common/ui/util/constraints_ui_util.h" #import "ios/third_party/material_components_ios/src/components/ActivityIndicator/src/MaterialActivityIndicator.h"
diff --git a/ios/chrome/browser/ui/content_suggestions/cells/content_suggestions_learn_more_item.mm b/ios/chrome/browser/ui/content_suggestions/cells/content_suggestions_learn_more_item.mm index 8ab3c86..511c315 100644 --- a/ios/chrome/browser/ui/content_suggestions/cells/content_suggestions_learn_more_item.mm +++ b/ios/chrome/browser/ui/content_suggestions/cells/content_suggestions_learn_more_item.mm
@@ -7,8 +7,8 @@ #include "base/logging.h" #import "ios/chrome/browser/ui/content_suggestions/content_suggestions_constants.h" #import "ios/chrome/browser/ui/util/uikit_ui_util.h" -#import "ios/chrome/common/colors/semantic_color_names.h" #include "ios/chrome/common/string_util.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #import "ios/chrome/common/ui/util/constraints_ui_util.h" #include "ios/chrome/grit/ios_strings.h" #import "ios/third_party/material_components_ios/src/components/Palettes/src/MaterialPalettes.h"
diff --git a/ios/chrome/browser/ui/content_suggestions/cells/content_suggestions_text_item.mm b/ios/chrome/browser/ui/content_suggestions/cells/content_suggestions_text_item.mm index 7a5ad32..3480969 100644 --- a/ios/chrome/browser/ui/content_suggestions/cells/content_suggestions_text_item.mm +++ b/ios/chrome/browser/ui/content_suggestions/cells/content_suggestions_text_item.mm
@@ -6,7 +6,7 @@ #import "ios/chrome/browser/ui/collection_view/cells/collection_view_text_cell.h" #import "ios/chrome/browser/ui/content_suggestions/identifier/content_suggestion_identifier.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #if !defined(__has_feature) || !__has_feature(objc_arc) #error "This file requires ARC support."
diff --git a/ios/chrome/browser/ui/content_suggestions/cells/content_suggestions_whats_new_item.mm b/ios/chrome/browser/ui/content_suggestions/cells/content_suggestions_whats_new_item.mm index 6dfd6d05..297fbf6 100644 --- a/ios/chrome/browser/ui/content_suggestions/cells/content_suggestions_whats_new_item.mm +++ b/ios/chrome/browser/ui/content_suggestions/cells/content_suggestions_whats_new_item.mm
@@ -6,8 +6,8 @@ #include "base/logging.h" #import "ios/chrome/browser/ui/util/uikit_ui_util.h" -#import "ios/chrome/common/colors/semantic_color_names.h" #include "ios/chrome/common/string_util.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #import "ios/chrome/common/ui/util/constraints_ui_util.h" #import "ios/third_party/material_components_ios/src/components/Typography/src/MaterialTypography.h"
diff --git a/ios/chrome/browser/ui/content_suggestions/content_suggestions_collection_utils.mm b/ios/chrome/browser/ui/content_suggestions/content_suggestions_collection_utils.mm index 73851642b..e552df2b 100644 --- a/ios/chrome/browser/ui/content_suggestions/content_suggestions_collection_utils.mm +++ b/ios/chrome/browser/ui/content_suggestions/content_suggestions_collection_utils.mm
@@ -15,7 +15,7 @@ #include "ios/chrome/browser/ui/util/dynamic_type_util.h" #include "ios/chrome/browser/ui/util/ui_util.h" #import "ios/chrome/browser/ui/util/uikit_ui_util.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #include "ios/chrome/grit/ios_strings.h" #include "ui/base/l10n/l10n_util.h"
diff --git a/ios/chrome/browser/ui/content_suggestions/content_suggestions_header_view.mm b/ios/chrome/browser/ui/content_suggestions/content_suggestions_header_view.mm index 48ce46c..2084917 100644 --- a/ios/chrome/browser/ui/content_suggestions/content_suggestions_header_view.mm +++ b/ios/chrome/browser/ui/content_suggestions/content_suggestions_header_view.mm
@@ -24,7 +24,7 @@ #import "ios/chrome/browser/ui/util/named_guide.h" #import "ios/chrome/browser/ui/util/named_guide_util.h" #import "ios/chrome/browser/ui/util/uikit_ui_util.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #import "ios/chrome/common/ui/util/constraints_ui_util.h" #include "ui/base/l10n/l10n_util.h" #import "ui/gfx/ios/NSString+CrStringDrawing.h"
diff --git a/ios/chrome/browser/ui/content_suggestions/content_suggestions_view_controller.mm b/ios/chrome/browser/ui/content_suggestions/content_suggestions_view_controller.mm index 4eb846e0..b39d1ab9 100644 --- a/ios/chrome/browser/ui/content_suggestions/content_suggestions_view_controller.mm +++ b/ios/chrome/browser/ui/content_suggestions/content_suggestions_view_controller.mm
@@ -28,8 +28,8 @@ #import "ios/chrome/browser/ui/toolbar/public/toolbar_utils.h" #import "ios/chrome/browser/ui/ui_feature_flags.h" #import "ios/chrome/browser/ui/util/uikit_ui_util.h" -#import "ios/chrome/common/colors/UIColor+cr_semantic_colors.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/UIColor+cr_semantic_colors.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #import "ios/chrome/common/ui/util/constraints_ui_util.h" #if !defined(__has_feature) || !__has_feature(objc_arc)
diff --git a/ios/chrome/browser/ui/content_suggestions/ntp_home_constant.mm b/ios/chrome/browser/ui/content_suggestions/ntp_home_constant.mm index b3d217c..5baa412 100644 --- a/ios/chrome/browser/ui/content_suggestions/ntp_home_constant.mm +++ b/ios/chrome/browser/ui/content_suggestions/ntp_home_constant.mm
@@ -4,7 +4,7 @@ #import "ios/chrome/browser/ui/content_suggestions/ntp_home_constant.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #if !defined(__has_feature) || !__has_feature(objc_arc) #error "This file requires ARC support."
diff --git a/ios/chrome/browser/ui/download/BUILD.gn b/ios/chrome/browser/ui/download/BUILD.gn index c8ce8ef..7af83c4 100644 --- a/ios/chrome/browser/ui/download/BUILD.gn +++ b/ios/chrome/browser/ui/download/BUILD.gn
@@ -48,7 +48,7 @@ "//ios/chrome/browser/ui/util", "//ios/chrome/browser/web:web_internal", "//ios/chrome/browser/web_state_list:web_state_list", - "//ios/chrome/common/colors", + "//ios/chrome/common/ui/colors", "//ios/chrome/common/ui/util", "//ios/public/provider/chrome/browser", "//ios/public/provider/chrome/browser/images",
diff --git a/ios/chrome/browser/ui/download/download_manager_view_controller.mm b/ios/chrome/browser/ui/download/download_manager_view_controller.mm index 73b17ba..f6b9bca 100644 --- a/ios/chrome/browser/ui/download/download_manager_view_controller.mm +++ b/ios/chrome/browser/ui/download/download_manager_view_controller.mm
@@ -12,7 +12,7 @@ #include "ios/chrome/browser/ui/download/download_manager_animation_constants.h" #import "ios/chrome/browser/ui/download/download_manager_state_view.h" #import "ios/chrome/browser/ui/download/radial_progress_view.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #import "ios/chrome/common/ui/util/constraints_ui_util.h" #include "ios/chrome/grit/ios_strings.h" #include "ios/public/provider/chrome/browser/chrome_browser_provider.h"
diff --git a/ios/chrome/browser/ui/download/radial_progress_view.mm b/ios/chrome/browser/ui/download/radial_progress_view.mm index 0d14013..29001868 100644 --- a/ios/chrome/browser/ui/download/radial_progress_view.mm +++ b/ios/chrome/browser/ui/download/radial_progress_view.mm
@@ -7,7 +7,7 @@ #import <QuartzCore/QuartzCore.h> #include "base/mac/foundation_util.h" -#import "ios/chrome/common/colors/UIColor+cr_dynamic_colors.h" +#import "ios/chrome/common/ui/colors/UIColor+cr_dynamic_colors.h" #if !defined(__has_feature) || !__has_feature(objc_arc) #error "This file requires ARC support."
diff --git a/ios/chrome/browser/ui/elements/BUILD.gn b/ios/chrome/browser/ui/elements/BUILD.gn index 93e2645..27a065f 100644 --- a/ios/chrome/browser/ui/elements/BUILD.gn +++ b/ios/chrome/browser/ui/elements/BUILD.gn
@@ -26,7 +26,7 @@ deps = [ "//base", "//ios/chrome/browser/ui/util", - "//ios/chrome/common/colors", + "//ios/chrome/common/ui/colors", ] } @@ -42,7 +42,7 @@ "//ios/chrome/browser", "//ios/chrome/browser/ui/coordinators:chrome_coordinators", "//ios/chrome/browser/ui/util", - "//ios/chrome/common/colors", + "//ios/chrome/common/ui/colors", ] } @@ -88,7 +88,7 @@ "//ios/chrome/browser/ui/coordinators:chrome_coordinators", "//ios/chrome/browser/ui/material_components", "//ios/chrome/browser/ui/util", - "//ios/chrome/common/colors", + "//ios/chrome/common/ui/colors", "//ios/chrome/common/ui/util", "//ios/third_party/material_components_ios", ]
diff --git a/ios/chrome/browser/ui/elements/chrome_activity_overlay_view_controller.mm b/ios/chrome/browser/ui/elements/chrome_activity_overlay_view_controller.mm index bced3888..874ca7c 100644 --- a/ios/chrome/browser/ui/elements/chrome_activity_overlay_view_controller.mm +++ b/ios/chrome/browser/ui/elements/chrome_activity_overlay_view_controller.mm
@@ -4,7 +4,7 @@ #import "ios/chrome/browser/ui/elements/chrome_activity_overlay_view_controller.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #import "ios/chrome/common/ui/util/constraints_ui_util.h" #if !defined(__has_feature) || !__has_feature(objc_arc)
diff --git a/ios/chrome/browser/ui/elements/gray_highlight_button.mm b/ios/chrome/browser/ui/elements/gray_highlight_button.mm index 352476c..2affe411 100644 --- a/ios/chrome/browser/ui/elements/gray_highlight_button.mm +++ b/ios/chrome/browser/ui/elements/gray_highlight_button.mm
@@ -4,7 +4,7 @@ #import "ios/chrome/browser/ui/elements/gray_highlight_button.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #if !defined(__has_feature) || !__has_feature(objc_arc) #error "This file requires ARC support."
diff --git a/ios/chrome/browser/ui/fancy_ui/BUILD.gn b/ios/chrome/browser/ui/fancy_ui/BUILD.gn index 755b000a2..cf0070c1 100644 --- a/ios/chrome/browser/ui/fancy_ui/BUILD.gn +++ b/ios/chrome/browser/ui/fancy_ui/BUILD.gn
@@ -14,7 +14,7 @@ "//base", "//base:i18n", "//ios/chrome/browser/ui/colors", - "//ios/chrome/common/colors", + "//ios/chrome/common/ui/colors", ] public_deps = [ "//ios/third_party/material_components_ios" ] libs = [ "UIKit.framework" ]
diff --git a/ios/chrome/browser/ui/fancy_ui/primary_action_button.mm b/ios/chrome/browser/ui/fancy_ui/primary_action_button.mm index d64dbc47..f197263 100644 --- a/ios/chrome/browser/ui/fancy_ui/primary_action_button.mm +++ b/ios/chrome/browser/ui/fancy_ui/primary_action_button.mm
@@ -5,8 +5,8 @@ #import "ios/chrome/browser/ui/fancy_ui/primary_action_button.h" #import "ios/chrome/browser/ui/colors/MDCPalette+CrAdditions.h" -#import "ios/chrome/common/colors/UIColor+cr_semantic_colors.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/UIColor+cr_semantic_colors.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #if !defined(__has_feature) || !__has_feature(objc_arc) #error "This file requires ARC support."
diff --git a/ios/chrome/browser/ui/find_bar/BUILD.gn b/ios/chrome/browser/ui/find_bar/BUILD.gn index 2b9f63c..f59a2f0 100644 --- a/ios/chrome/browser/ui/find_bar/BUILD.gn +++ b/ios/chrome/browser/ui/find_bar/BUILD.gn
@@ -36,7 +36,7 @@ "//ios/chrome/browser/ui/toolbar/public", "//ios/chrome/browser/ui/util", "//ios/chrome/browser/web_state_list", - "//ios/chrome/common/colors", + "//ios/chrome/common/ui/colors", "//ios/chrome/common/ui/util", "//ios/third_party/material_components_ios", "//ui/base",
diff --git a/ios/chrome/browser/ui/find_bar/find_bar_controller_ios.mm b/ios/chrome/browser/ui/find_bar/find_bar_controller_ios.mm index e4a46e1..a961237 100644 --- a/ios/chrome/browser/ui/find_bar/find_bar_controller_ios.mm +++ b/ios/chrome/browser/ui/find_bar/find_bar_controller_ios.mm
@@ -22,8 +22,8 @@ #include "ios/chrome/browser/ui/util/rtl_geometry.h" #include "ios/chrome/browser/ui/util/ui_util.h" #import "ios/chrome/browser/ui/util/uikit_ui_util.h" -#import "ios/chrome/common/colors/dynamic_color_util.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/dynamic_color_util.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #import "ios/chrome/common/ui/util/constraints_ui_util.h" #include "ui/base/l10n/l10n_util_mac.h" #include "ui/base/resource/resource_bundle.h"
diff --git a/ios/chrome/browser/ui/find_bar/find_bar_coordinator.h b/ios/chrome/browser/ui/find_bar/find_bar_coordinator.h index 313a233..9e7150bc 100644 --- a/ios/chrome/browser/ui/find_bar/find_bar_coordinator.h +++ b/ios/chrome/browser/ui/find_bar/find_bar_coordinator.h
@@ -12,6 +12,12 @@ @class ToolbarAccessoryPresenter; @protocol ToolbarAccessoryCoordinatorDelegate; +@protocol FindBarPresentationDelegate + +- (void)setHeadersForFindBarCoordinator:(FindBarCoordinator*)findBarCoordinator; + +@end + // Coordinator for the Find Bar and the Find In page feature. Currently, this // is mostly a collection of code extracted from BrowserViewController and not // a good example of the ideal coordinator architecture. @@ -22,6 +28,8 @@ @property(nonatomic, weak) id<ToolbarAccessoryCoordinatorDelegate> delegate; +@property(nonatomic, weak) id<FindBarPresentationDelegate> presentationDelegate; + // Find bar controller object. This should probably be private, but is not to // make the transition easier. @property(nonatomic, strong) FindBarControllerIOS* findBarController;
diff --git a/ios/chrome/browser/ui/find_bar/find_bar_coordinator.mm b/ios/chrome/browser/ui/find_bar/find_bar_coordinator.mm index 4bb11b0..08bc60d5 100644 --- a/ios/chrome/browser/ui/find_bar/find_bar_coordinator.mm +++ b/ios/chrome/browser/ui/find_bar/find_bar_coordinator.mm
@@ -77,8 +77,6 @@ } [self.findBarController findBarViewWillHide]; [self.presenter dismissAnimated:animated]; - - self.mediator = nil; } - (void)showAnimated:(BOOL)animated shouldFocus:(BOOL)shouldFocus { @@ -99,7 +97,7 @@ if (!self.browserState->IsOffTheRecord()) { helper->RestoreSearchTerm(); } - [self.delegate setHeadersForToolbarAccessoryCoordinator:self]; + [self.presentationDelegate setHeadersForFindBarCoordinator:self]; [self.findBarController updateView:helper->GetFindResult() initialUpdate:YES focusTextfield:shouldFocus];
diff --git a/ios/chrome/browser/ui/find_bar/find_bar_view.mm b/ios/chrome/browser/ui/find_bar/find_bar_view.mm index 1651ad1..f690e44 100644 --- a/ios/chrome/browser/ui/find_bar/find_bar_view.mm +++ b/ios/chrome/browser/ui/find_bar/find_bar_view.mm
@@ -8,9 +8,9 @@ #import "ios/chrome/browser/ui/find_bar/find_bar_constants.h" #import "ios/chrome/browser/ui/toolbar/public/toolbar_constants.h" #import "ios/chrome/browser/ui/util/uikit_ui_util.h" -#import "ios/chrome/common/colors/UIColor+cr_semantic_colors.h" -#import "ios/chrome/common/colors/dynamic_color_util.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/UIColor+cr_semantic_colors.h" +#import "ios/chrome/common/ui/colors/dynamic_color_util.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #import "ios/chrome/common/ui/util/constraints_ui_util.h" #include "ios/chrome/grit/ios_strings.h" #include "ui/base/l10n/l10n_util_mac.h" @@ -110,7 +110,6 @@ [self.inputField.leadingAnchor constraintEqualToAnchor:safeArea.leadingAnchor constant:kPadding], - [self.inputField.trailingAnchor constraintEqualToAnchor:self.previousButton.leadingAnchor constant:-kPadding],
diff --git a/ios/chrome/browser/ui/first_run/BUILD.gn b/ios/chrome/browser/ui/first_run/BUILD.gn index 8b5eb4e..00433ee 100644 --- a/ios/chrome/browser/ui/first_run/BUILD.gn +++ b/ios/chrome/browser/ui/first_run/BUILD.gn
@@ -48,7 +48,7 @@ "//ios/chrome/browser/ui/util:terms_util", "//ios/chrome/browser/web_state_list", "//ios/chrome/common", - "//ios/chrome/common/colors", + "//ios/chrome/common/ui/colors", "//ios/public/provider/chrome/browser", "//ios/public/provider/chrome/browser/signin", "//ios/third_party/material_components_ios",
diff --git a/ios/chrome/browser/ui/first_run/first_run_chrome_signin_view_controller.mm b/ios/chrome/browser/ui/first_run/first_run_chrome_signin_view_controller.mm index f7f87c5..16e02930c 100644 --- a/ios/chrome/browser/ui/first_run/first_run_chrome_signin_view_controller.mm +++ b/ios/chrome/browser/ui/first_run/first_run_chrome_signin_view_controller.mm
@@ -17,7 +17,7 @@ #import "ios/chrome/browser/ui/promos/signin_promo_view_controller.h" #include "ios/chrome/browser/ui/util/ui_util.h" #import "ios/chrome/browser/web_state_list/web_state_list.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #include "ios/chrome/grit/ios_strings.h" #import "ios/public/provider/chrome/browser/chrome_browser_provider.h" #import "ios/public/provider/chrome/browser/signin/chrome_identity.h"
diff --git a/ios/chrome/browser/ui/first_run/first_run_egtest.mm b/ios/chrome/browser/ui/first_run/first_run_egtest.mm index b0ece23..97b52df 100644 --- a/ios/chrome/browser/ui/first_run/first_run_egtest.mm +++ b/ios/chrome/browser/ui/first_run/first_run_egtest.mm
@@ -119,7 +119,9 @@ } // Dismisses the first run screens. -- (void)testDismissFirstRun { +// TODO(crbug.com/1055457): Re-enable after updating tests. Button has +// unexpected text. +- (void)DISABLED_testDismissFirstRun { [FirstRunAppInterface showFirstRunUI]; [[EarlGrey selectElementWithMatcher:FirstRunOptInAcceptButton()]
diff --git a/ios/chrome/browser/ui/first_run/static_file_view_controller.mm b/ios/chrome/browser/ui/first_run/static_file_view_controller.mm index 51a17df..5464ae3 100644 --- a/ios/chrome/browser/ui/first_run/static_file_view_controller.mm +++ b/ios/chrome/browser/ui/first_run/static_file_view_controller.mm
@@ -11,7 +11,7 @@ #import "ios/chrome/browser/ui/icons/chrome_icon.h" #import "ios/chrome/browser/ui/material_components/utils.h" #include "ios/chrome/browser/ui/util/rtl_geometry.h" -#import "ios/chrome/common/colors/UIColor+cr_semantic_colors.h" +#import "ios/chrome/common/ui/colors/UIColor+cr_semantic_colors.h" #import "ios/third_party/material_components_ios/src/components/AppBar/src/MDCAppBarViewController.h" #import "ios/web/common/web_view_creation_util.h"
diff --git a/ios/chrome/browser/ui/first_run/welcome_to_chrome_view.mm b/ios/chrome/browser/ui/first_run/welcome_to_chrome_view.mm index d9a85af..6e6c66f 100644 --- a/ios/chrome/browser/ui/first_run/welcome_to_chrome_view.mm +++ b/ios/chrome/browser/ui/first_run/welcome_to_chrome_view.mm
@@ -14,8 +14,8 @@ #import "ios/chrome/browser/ui/util/label_observer.h" #include "ios/chrome/browser/ui/util/ui_util.h" #import "ios/chrome/browser/ui/util/uikit_ui_util.h" -#import "ios/chrome/common/colors/semantic_color_names.h" #include "ios/chrome/common/string_util.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #include "ios/chrome/grit/ios_chromium_strings.h" #include "ios/chrome/grit/ios_strings.h" #import "ios/third_party/material_components_ios/src/components/Typography/src/MaterialTypography.h"
diff --git a/ios/chrome/browser/ui/history/history_table_view_controller.mm b/ios/chrome/browser/ui/history/history_table_view_controller.mm index b2261e8..625f111f 100644 --- a/ios/chrome/browser/ui/history/history_table_view_controller.mm +++ b/ios/chrome/browser/ui/history/history_table_view_controller.mm
@@ -36,8 +36,8 @@ #import "ios/chrome/browser/url_loading/url_loading_params.h" #import "ios/chrome/browser/url_loading/url_loading_service.h" #import "ios/chrome/browser/url_loading/url_loading_service_factory.h" -#import "ios/chrome/common/colors/UIColor+cr_semantic_colors.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/UIColor+cr_semantic_colors.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #import "ios/chrome/common/ui/favicon/favicon_view.h" #import "ios/chrome/common/ui/util/constraints_ui_util.h" #include "ios/chrome/grit/ios_strings.h"
diff --git a/ios/chrome/browser/ui/infobars/BUILD.gn b/ios/chrome/browser/ui/infobars/BUILD.gn index 1888dde..1eb4931 100644 --- a/ios/chrome/browser/ui/infobars/BUILD.gn +++ b/ios/chrome/browser/ui/infobars/BUILD.gn
@@ -89,7 +89,7 @@ "//ios/chrome/browser/ui/fullscreen:ui", "//ios/chrome/browser/ui/toolbar/public", "//ios/chrome/browser/ui/util", - "//ios/chrome/common/colors", + "//ios/chrome/common/ui/colors", "//ios/public/provider/chrome/browser/ui", "//ios/third_party/material_components_ios", "//ui/base",
diff --git a/ios/chrome/browser/ui/infobars/banners/BUILD.gn b/ios/chrome/browser/ui/infobars/banners/BUILD.gn index b662089..5ffff7d 100644 --- a/ios/chrome/browser/ui/infobars/banners/BUILD.gn +++ b/ios/chrome/browser/ui/infobars/banners/BUILD.gn
@@ -18,7 +18,7 @@ "//ios/chrome/app/strings:ios_strings_grit", "//ios/chrome/browser/infobars:public", "//ios/chrome/browser/ui/util", - "//ios/chrome/common/colors", + "//ios/chrome/common/ui/colors", "//ui/base", ] }
diff --git a/ios/chrome/browser/ui/infobars/banners/infobar_banner_view_controller.mm b/ios/chrome/browser/ui/infobars/banners/infobar_banner_view_controller.mm index a668448..080baf78 100644 --- a/ios/chrome/browser/ui/infobars/banners/infobar_banner_view_controller.mm +++ b/ios/chrome/browser/ui/infobars/banners/infobar_banner_view_controller.mm
@@ -11,7 +11,7 @@ #import "ios/chrome/browser/ui/infobars/banners/infobar_banner_constants.h" #import "ios/chrome/browser/ui/infobars/banners/infobar_banner_delegate.h" #import "ios/chrome/browser/ui/util/uikit_ui_util.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #include "ios/chrome/grit/ios_strings.h" #include "ui/base/l10n/l10n_util.h"
diff --git a/ios/chrome/browser/ui/infobars/confirm_infobar_view.mm b/ios/chrome/browser/ui/infobars/confirm_infobar_view.mm index a1b16868..19f4aadc 100644 --- a/ios/chrome/browser/ui/infobars/confirm_infobar_view.mm +++ b/ios/chrome/browser/ui/infobars/confirm_infobar_view.mm
@@ -19,7 +19,7 @@ #import "ios/chrome/browser/ui/util/label_link_controller.h" #import "ios/chrome/browser/ui/util/named_guide.h" #import "ios/chrome/browser/ui/util/uikit_ui_util.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #include "ios/chrome/grit/ios_theme_resources.h" #import "ios/third_party/material_components_ios/src/components/Buttons/src/MaterialButtons.h" #include "ui/base/l10n/l10n_util.h"
diff --git a/ios/chrome/browser/ui/infobars/modals/infobar_modal_view_controller.mm b/ios/chrome/browser/ui/infobars/modals/infobar_modal_view_controller.mm index 37eaeb52..74c1bd7 100644 --- a/ios/chrome/browser/ui/infobars/modals/infobar_modal_view_controller.mm +++ b/ios/chrome/browser/ui/infobars/modals/infobar_modal_view_controller.mm
@@ -6,7 +6,7 @@ #import "ios/chrome/browser/ui/infobars/modals/infobar_modal_constants.h" #import "ios/chrome/browser/ui/infobars/modals/infobar_modal_delegate.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #if !defined(__has_feature) || !__has_feature(objc_arc) #error "This file requires ARC support."
diff --git a/ios/chrome/browser/ui/infobars/modals/infobar_password_table_view_controller.mm b/ios/chrome/browser/ui/infobars/modals/infobar_password_table_view_controller.mm index af91e2f..8d39fbd 100644 --- a/ios/chrome/browser/ui/infobars/modals/infobar_password_table_view_controller.mm +++ b/ios/chrome/browser/ui/infobars/modals/infobar_password_table_view_controller.mm
@@ -17,7 +17,7 @@ #import "ios/chrome/browser/ui/table_view/cells/table_view_text_edit_item.h" #import "ios/chrome/browser/ui/table_view/chrome_table_view_styler.h" #import "ios/chrome/browser/ui/util/uikit_ui_util.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #include "ios/chrome/grit/ios_strings.h" #include "ui/base/l10n/l10n_util.h"
diff --git a/ios/chrome/browser/ui/infobars/modals/infobar_save_card_table_view_controller.mm b/ios/chrome/browser/ui/infobars/modals/infobar_save_card_table_view_controller.mm index 89d598d..4177e79 100644 --- a/ios/chrome/browser/ui/infobars/modals/infobar_save_card_table_view_controller.mm +++ b/ios/chrome/browser/ui/infobars/modals/infobar_save_card_table_view_controller.mm
@@ -17,7 +17,7 @@ #import "ios/chrome/browser/ui/table_view/cells/table_view_text_edit_item.h" #import "ios/chrome/browser/ui/table_view/cells/table_view_text_link_item.h" #import "ios/chrome/browser/ui/table_view/chrome_table_view_styler.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #include "ios/chrome/grit/ios_strings.h" #include "ui/base/l10n/l10n_util.h" #include "url/gurl.h"
diff --git a/ios/chrome/browser/ui/infobars/modals/infobar_translate_language_selection_table_view_controller.mm b/ios/chrome/browser/ui/infobars/modals/infobar_translate_language_selection_table_view_controller.mm index 6dfc40f1..9dcdac3 100644 --- a/ios/chrome/browser/ui/infobars/modals/infobar_translate_language_selection_table_view_controller.mm +++ b/ios/chrome/browser/ui/infobars/modals/infobar_translate_language_selection_table_view_controller.mm
@@ -11,7 +11,7 @@ #import "ios/chrome/browser/ui/table_view/cells/table_view_cells_constants.h" #import "ios/chrome/browser/ui/table_view/cells/table_view_text_item.h" #import "ios/chrome/browser/ui/table_view/chrome_table_view_styler.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #if !defined(__has_feature) || !__has_feature(objc_arc) #error "This file requires ARC support."
diff --git a/ios/chrome/browser/ui/infobars/modals/infobar_translate_table_view_controller.mm b/ios/chrome/browser/ui/infobars/modals/infobar_translate_table_view_controller.mm index 14ea6b15..6dab48a 100644 --- a/ios/chrome/browser/ui/infobars/modals/infobar_translate_table_view_controller.mm +++ b/ios/chrome/browser/ui/infobars/modals/infobar_translate_table_view_controller.mm
@@ -14,7 +14,7 @@ #import "ios/chrome/browser/ui/table_view/cells/table_view_text_edit_item.h" #import "ios/chrome/browser/ui/table_view/cells/table_view_text_item.h" #import "ios/chrome/browser/ui/table_view/chrome_table_view_styler.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #include "ios/chrome/grit/ios_strings.h" #include "ui/base/l10n/l10n_util.h"
diff --git a/ios/chrome/browser/ui/infobars/presentation/BUILD.gn b/ios/chrome/browser/ui/infobars/presentation/BUILD.gn index 7d31a0a..930121b 100644 --- a/ios/chrome/browser/ui/infobars/presentation/BUILD.gn +++ b/ios/chrome/browser/ui/infobars/presentation/BUILD.gn
@@ -24,6 +24,6 @@ "//base", "//ios/chrome/browser/ui/infobars/banners:public", "//ios/chrome/browser/ui/util", - "//ios/chrome/common/colors", + "//ios/chrome/common/ui/colors", ] }
diff --git a/ios/chrome/browser/ui/infobars/presentation/infobar_modal_presentation_controller.mm b/ios/chrome/browser/ui/infobars/presentation/infobar_modal_presentation_controller.mm index c9f416ca..48a7e67d 100644 --- a/ios/chrome/browser/ui/infobars/presentation/infobar_modal_presentation_controller.mm +++ b/ios/chrome/browser/ui/infobars/presentation/infobar_modal_presentation_controller.mm
@@ -7,7 +7,7 @@ #include "base/logging.h" #import "ios/chrome/browser/ui/infobars/presentation/infobar_modal_positioner.h" #import "ios/chrome/browser/ui/util/uikit_ui_util.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #if !defined(__has_feature) || !__has_feature(objc_arc) #error "This file requires ARC support."
diff --git a/ios/chrome/browser/ui/location_bar/BUILD.gn b/ios/chrome/browser/ui/location_bar/BUILD.gn index 8cda3ee..18bcb57 100644 --- a/ios/chrome/browser/ui/location_bar/BUILD.gn +++ b/ios/chrome/browser/ui/location_bar/BUILD.gn
@@ -73,7 +73,7 @@ "//ios/chrome/browser/web", "//ios/chrome/browser/web_state_list", "//ios/chrome/common:timing", - "//ios/chrome/common/colors", + "//ios/chrome/common/ui/colors", "//ios/chrome/common/ui/util", "//ios/public/provider/chrome/browser:browser", "//ios/public/provider/chrome/browser/voice",
diff --git a/ios/chrome/browser/ui/location_bar/location_bar_coordinator.mm b/ios/chrome/browser/ui/location_bar/location_bar_coordinator.mm index 46d72db..a97cac924 100644 --- a/ios/chrome/browser/ui/location_bar/location_bar_coordinator.mm +++ b/ios/chrome/browser/ui/location_bar/location_bar_coordinator.mm
@@ -168,8 +168,6 @@ self.omniboxPopupCoordinator = [self.omniboxCoordinator createPopupCoordinator:self.popupPresenterDelegate]; - self.omniboxPopupCoordinator.dispatcher = self.dispatcher; - self.omniboxPopupCoordinator.webStateList = self.webStateList; [self.omniboxPopupCoordinator start]; // Create button factory that wil be used by the ViewController to get
diff --git a/ios/chrome/browser/ui/location_bar/location_bar_steady_view.mm b/ios/chrome/browser/ui/location_bar/location_bar_steady_view.mm index 85aae8f..1b938c0 100644 --- a/ios/chrome/browser/ui/location_bar/location_bar_steady_view.mm +++ b/ios/chrome/browser/ui/location_bar/location_bar_steady_view.mm
@@ -11,7 +11,7 @@ #import "ios/chrome/browser/ui/toolbar/public/toolbar_constants.h" #import "ios/chrome/browser/ui/util/dynamic_type_util.h" #import "ios/chrome/browser/ui/util/uikit_ui_util.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #import "ios/chrome/common/ui/util/constraints_ui_util.h" #include "ios/chrome/grit/ios_strings.h" #include "ui/base/l10n/l10n_util.h"
diff --git a/ios/chrome/browser/ui/material_components/BUILD.gn b/ios/chrome/browser/ui/material_components/BUILD.gn index 391c14e..07f22df 100644 --- a/ios/chrome/browser/ui/material_components/BUILD.gn +++ b/ios/chrome/browser/ui/material_components/BUILD.gn
@@ -17,7 +17,7 @@ "//base", "//build:branding_buildflags", "//ios/chrome/browser/ui/colors", - "//ios/chrome/common/colors", + "//ios/chrome/common/ui/colors", "//ios/third_party/material_components_ios", ] libs = [ "UIKit.framework" ]
diff --git a/ios/chrome/browser/ui/material_components/utils.mm b/ios/chrome/browser/ui/material_components/utils.mm index 6033711..b54b22d 100644 --- a/ios/chrome/browser/ui/material_components/utils.mm +++ b/ios/chrome/browser/ui/material_components/utils.mm
@@ -7,7 +7,7 @@ #import <UIKit/UIKit.h> #include "base/mac/foundation_util.h" -#import "ios/chrome/common/colors/UIColor+cr_semantic_colors.h" +#import "ios/chrome/common/ui/colors/UIColor+cr_semantic_colors.h" #import "ios/third_party/material_components_ios/src/components/AppBar/src/MDCAppBarContainerViewController.h" #import "ios/third_party/material_components_ios/src/components/AppBar/src/MaterialAppBar.h" #import "ios/third_party/material_components_ios/src/components/FlexibleHeader/src/MaterialFlexibleHeader.h"
diff --git a/ios/chrome/browser/ui/ntp/BUILD.gn b/ios/chrome/browser/ui/ntp/BUILD.gn index 1c49da3..faf43e5 100644 --- a/ios/chrome/browser/ui/ntp/BUILD.gn +++ b/ios/chrome/browser/ui/ntp/BUILD.gn
@@ -111,8 +111,8 @@ "//ios/chrome/browser/web_state_list", "//ios/chrome/common", "//ios/chrome/common/app_group", - "//ios/chrome/common/colors", "//ios/chrome/common/ntp_tile", + "//ios/chrome/common/ui/colors", "//ios/chrome/common/ui/favicon", "//ios/chrome/common/ui/util", "//ios/public/provider/chrome/browser",
diff --git a/ios/chrome/browser/ui/ntp/incognito_view.mm b/ios/chrome/browser/ui/ntp/incognito_view.mm index 642c4ceb..6eac9616 100644 --- a/ios/chrome/browser/ui/ntp/incognito_view.mm +++ b/ios/chrome/browser/ui/ntp/incognito_view.mm
@@ -14,9 +14,9 @@ #import "ios/chrome/browser/ui/util/uikit_ui_util.h" #import "ios/chrome/browser/url_loading/url_loading_params.h" #import "ios/chrome/browser/url_loading/url_loading_service.h" -#import "ios/chrome/common/colors/dynamic_color_util.h" -#import "ios/chrome/common/colors/semantic_color_names.h" #import "ios/chrome/common/string_util.h" +#import "ios/chrome/common/ui/colors/dynamic_color_util.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #import "ios/chrome/common/ui/util/constraints_ui_util.h" #import "ios/web/public/navigation/navigation_manager.h" #include "ios/web/public/navigation/referrer.h"
diff --git a/ios/chrome/browser/ui/ntp/incognito_view_controller.mm b/ios/chrome/browser/ui/ntp/incognito_view_controller.mm index d5bb512..a0dc7750 100644 --- a/ios/chrome/browser/ui/ntp/incognito_view_controller.mm +++ b/ios/chrome/browser/ui/ntp/incognito_view_controller.mm
@@ -11,8 +11,8 @@ #import "ios/chrome/browser/ui/ntp/incognito_view.h" #import "ios/chrome/browser/ui/util/uikit_ui_util.h" #import "ios/chrome/browser/url_loading/url_loading_service.h" -#import "ios/chrome/common/colors/dynamic_color_util.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/dynamic_color_util.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #if !defined(__has_feature) || !__has_feature(objc_arc) #error "This file requires ARC support."
diff --git a/ios/chrome/browser/ui/ntp_tile_views/BUILD.gn b/ios/chrome/browser/ui/ntp_tile_views/BUILD.gn index 76e768bb..f5e179b 100644 --- a/ios/chrome/browser/ui/ntp_tile_views/BUILD.gn +++ b/ios/chrome/browser/ui/ntp_tile_views/BUILD.gn
@@ -23,7 +23,7 @@ "resources:ntp_recent_icon", "//base", "//ios/chrome/browser/ui/util", - "//ios/chrome/common/colors", + "//ios/chrome/common/ui/colors", "//ios/chrome/common/ui/favicon", "//ios/chrome/common/ui/util", "//ios/chrome/common/ui/util:dynamic_type_util",
diff --git a/ios/chrome/browser/ui/ntp_tile_views/ntp_shortcut_tile_view.mm b/ios/chrome/browser/ui/ntp_tile_views/ntp_shortcut_tile_view.mm index 469a3bf..e61e4c4 100644 --- a/ios/chrome/browser/ui/ntp_tile_views/ntp_shortcut_tile_view.mm +++ b/ios/chrome/browser/ui/ntp_tile_views/ntp_shortcut_tile_view.mm
@@ -4,7 +4,7 @@ #import "ios/chrome/browser/ui/ntp_tile_views/ntp_shortcut_tile_view.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #import "ios/chrome/common/ui/util/constraints_ui_util.h" #import "ios/third_party/material_components_ios/src/components/Typography/src/MaterialTypography.h"
diff --git a/ios/chrome/browser/ui/ntp_tile_views/ntp_tile_view.mm b/ios/chrome/browser/ui/ntp_tile_views/ntp_tile_view.mm index af02261..a25aa981 100644 --- a/ios/chrome/browser/ui/ntp_tile_views/ntp_tile_view.mm +++ b/ios/chrome/browser/ui/ntp_tile_views/ntp_tile_view.mm
@@ -5,8 +5,8 @@ #import "ios/chrome/browser/ui/ntp_tile_views/ntp_tile_view.h" #import "ios/chrome/browser/ui/util/dynamic_type_util.h" -#import "ios/chrome/common/colors/UIColor+cr_semantic_colors.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/UIColor+cr_semantic_colors.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #import "ios/chrome/common/ui/util/constraints_ui_util.h" #include "ios/chrome/common/ui/util/dynamic_type_util.h"
diff --git a/ios/chrome/browser/ui/omnibox/BUILD.gn b/ios/chrome/browser/ui/omnibox/BUILD.gn index 69d1e89..9c9bc40 100644 --- a/ios/chrome/browser/ui/omnibox/BUILD.gn +++ b/ios/chrome/browser/ui/omnibox/BUILD.gn
@@ -161,7 +161,7 @@ "//ios/chrome/browser/ui/toolbar/public:feature_flags", "//ios/chrome/browser/ui/util", "//ios/chrome/common", - "//ios/chrome/common/colors", + "//ios/chrome/common/ui/colors", "//ios/chrome/common/ui/favicon", "//ios/chrome/common/ui/util:dynamic_type_util", "//ios/public/provider/chrome/browser",
diff --git a/ios/chrome/browser/ui/omnibox/omnibox_coordinator.mm b/ios/chrome/browser/ui/omnibox/omnibox_coordinator.mm index 38b3597b..e7b2f1f 100644 --- a/ios/chrome/browser/ui/omnibox/omnibox_coordinator.mm +++ b/ios/chrome/browser/ui/omnibox/omnibox_coordinator.mm
@@ -161,9 +161,10 @@ _editView->model()->set_popup_model(popupView->model()); _editView->SetPopupProvider(popupView.get()); - OmniboxPopupCoordinator* coordinator = - [[OmniboxPopupCoordinator alloc] initWithPopupView:std::move(popupView)]; - coordinator.browserState = self.browser->GetBrowserState(); + OmniboxPopupCoordinator* coordinator = [[OmniboxPopupCoordinator alloc] + initWithBaseViewController:nil + browser:self.browser + popupView:std::move(popupView)]; coordinator.presenterDelegate = presenterDelegate; return coordinator;
diff --git a/ios/chrome/browser/ui/omnibox/omnibox_text_field_ios.mm b/ios/chrome/browser/ui/omnibox/omnibox_text_field_ios.mm index 1d8d3c27..1a9c921f 100644 --- a/ios/chrome/browser/ui/omnibox/omnibox_text_field_ios.mm +++ b/ios/chrome/browser/ui/omnibox/omnibox_text_field_ios.mm
@@ -27,8 +27,8 @@ #include "ios/chrome/browser/ui/util/rtl_geometry.h" #include "ios/chrome/browser/ui/util/ui_util.h" #import "ios/chrome/browser/ui/util/uikit_ui_util.h" -#import "ios/chrome/common/colors/semantic_color_names.h" #import "ios/chrome/common/material_timing.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #include "ios/chrome/common/ui/util/dynamic_type_util.h" #include "ios/chrome/grit/ios_strings.h" #include "ios/chrome/grit/ios_theme_resources.h"
diff --git a/ios/chrome/browser/ui/omnibox/omnibox_view_controller.mm b/ios/chrome/browser/ui/omnibox/omnibox_view_controller.mm index f9b32b9..7d2cdb9 100644 --- a/ios/chrome/browser/ui/omnibox/omnibox_view_controller.mm +++ b/ios/chrome/browser/ui/omnibox/omnibox_view_controller.mm
@@ -21,8 +21,8 @@ #include "ios/chrome/browser/ui/ui_feature_flags.h" #include "ios/chrome/browser/ui/util/ui_util.h" #include "ios/chrome/browser/ui/util/uikit_ui_util.h" -#import "ios/chrome/common/colors/dynamic_color_util.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/dynamic_color_util.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #include "ios/chrome/grit/ios_strings.h" #include "ui/base/l10n/l10n_util.h"
diff --git a/ios/chrome/browser/ui/omnibox/popup/BUILD.gn b/ios/chrome/browser/ui/omnibox/popup/BUILD.gn index e5f9064..690d0a6 100644 --- a/ios/chrome/browser/ui/omnibox/popup/BUILD.gn +++ b/ios/chrome/browser/ui/omnibox/popup/BUILD.gn
@@ -27,9 +27,11 @@ "//ios/chrome/browser", "//ios/chrome/browser/browser_state", "//ios/chrome/browser/favicon", + "//ios/chrome/browser/main:public", "//ios/chrome/browser/search_engines", "//ios/chrome/browser/ui:feature_flags", "//ios/chrome/browser/ui/commands", + "//ios/chrome/browser/ui/coordinators:chrome_coordinators", "//ios/chrome/browser/ui/ntp:util", "//ios/chrome/browser/ui/omnibox:omnibox_util", "//ios/chrome/browser/ui/toolbar/buttons", @@ -37,7 +39,7 @@ "//ios/chrome/browser/ui/toolbar/public:feature_flags", "//ios/chrome/browser/ui/util", "//ios/chrome/browser/web_state_list:web_state_list", - "//ios/chrome/common/colors", + "//ios/chrome/common/ui/colors", "//ios/chrome/common/ui/favicon", "//ios/chrome/common/ui/util", "//ios/web/public:public", @@ -94,7 +96,7 @@ "//ios/chrome/browser/ui/toolbar/buttons", "//ios/chrome/browser/ui/toolbar/public", "//ios/chrome/browser/ui/util", - "//ios/chrome/common/colors", + "//ios/chrome/common/ui/colors", "//ios/chrome/common/ui/util", "//ios/public/provider/chrome/browser", "//ios/public/provider/chrome/browser/images", @@ -120,7 +122,7 @@ "//ios/chrome/browser/ui/colors", "//ios/chrome/browser/ui/omnibox:omnibox_util", "//ios/chrome/browser/ui/util", - "//ios/chrome/common/colors", + "//ios/chrome/common/ui/colors", "//ios/third_party/material_components_ios", ] configs += [ "//build/config/compiler:enable_arc" ]
diff --git a/ios/chrome/browser/ui/omnibox/popup/autocomplete_match_formatter.mm b/ios/chrome/browser/ui/omnibox/popup/autocomplete_match_formatter.mm index 53fba95..8dcfd7c 100644 --- a/ios/chrome/browser/ui/omnibox/popup/autocomplete_match_formatter.mm +++ b/ios/chrome/browser/ui/omnibox/popup/autocomplete_match_formatter.mm
@@ -14,9 +14,9 @@ #import "ios/chrome/browser/ui/omnibox/popup/omnibox_icon_formatter.h" #include "ios/chrome/browser/ui/ui_feature_flags.h" #import "ios/chrome/browser/ui/util/ui_util.h" -#import "ios/chrome/common/colors/UIColor+cr_semantic_colors.h" -#import "ios/chrome/common/colors/dynamic_color_util.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/UIColor+cr_semantic_colors.h" +#import "ios/chrome/common/ui/colors/dynamic_color_util.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #if !defined(__has_feature) || !__has_feature(objc_arc) #error "This file requires ARC support."
diff --git a/ios/chrome/browser/ui/omnibox/popup/omnibox_popup_coordinator.h b/ios/chrome/browser/ui/omnibox/popup/omnibox_popup_coordinator.h index 28e4946..77b8e90 100644 --- a/ios/chrome/browser/ui/omnibox/popup/omnibox_popup_coordinator.h +++ b/ios/chrome/browser/ui/omnibox/popup/omnibox_popup_coordinator.h
@@ -5,39 +5,39 @@ #ifndef IOS_CHROME_BROWSER_UI_OMNIBOX_POPUP_OMNIBOX_POPUP_COORDINATOR_H_ #define IOS_CHROME_BROWSER_UI_OMNIBOX_POPUP_OMNIBOX_POPUP_COORDINATOR_H_ -#import <UIKit/UIKit.h> +#import "ios/chrome/browser/ui/coordinators/chrome_coordinator.h" #include <memory> -class ChromeBrowserState; -@class CommandDispatcher; @protocol OmniboxPopupPresenterDelegate; @protocol OmniboxFocuser; class OmniboxPopupViewIOS; -class WebStateList; // Coordinator for the Omnibox Popup. -@interface OmniboxPopupCoordinator : NSObject +@interface OmniboxPopupCoordinator : ChromeCoordinator -- (instancetype)initWithPopupView: - (std::unique_ptr<OmniboxPopupViewIOS>)popupView NS_DESIGNATED_INITIALIZER; -- (instancetype)init NS_UNAVAILABLE; +- (instancetype) + initWithBaseViewController:(UIViewController*)viewController + browser:(Browser*)browser + popupView:(std::unique_ptr<OmniboxPopupViewIOS>)popupView + NS_DESIGNATED_INITIALIZER; -// BrowserState. -@property(nonatomic, assign) ChromeBrowserState* browserState; +- (instancetype)initWithBaseViewController:(UIViewController*)viewController + NS_UNAVAILABLE; + +- (instancetype)initWithBaseViewController:(UIViewController*)viewController + browser:(Browser*)browser NS_UNAVAILABLE; + +- (instancetype)initWithBaseViewController:(UIViewController*)viewController + browserState:(ChromeBrowserState*)browserState + NS_UNAVAILABLE; + // Positioner for the popup. @property(nonatomic, weak) id<OmniboxPopupPresenterDelegate> presenterDelegate; // Whether this coordinator has results to show. @property(nonatomic, assign, readonly) BOOL hasResults; // Whether the popup is open. @property(nonatomic, assign, readonly) BOOL isOpen; -// The dispatcher for this view controller. -@property(nonatomic, readwrite, weak) CommandDispatcher* dispatcher; -// The web state list this coordinator is handling. -@property(nonatomic, assign) WebStateList* webStateList; - -- (void)start; -- (void)stop; @end
diff --git a/ios/chrome/browser/ui/omnibox/popup/omnibox_popup_coordinator.mm b/ios/chrome/browser/ui/omnibox/popup/omnibox_popup_coordinator.mm index 398509f..b1598d44 100644 --- a/ios/chrome/browser/ui/omnibox/popup/omnibox_popup_coordinator.mm +++ b/ios/chrome/browser/ui/omnibox/popup/omnibox_popup_coordinator.mm
@@ -11,6 +11,7 @@ #import "components/search_engines/template_url_service.h" #include "ios/chrome/browser/browser_state/chrome_browser_state.h" #include "ios/chrome/browser/favicon/ios_chrome_favicon_loader_factory.h" +#import "ios/chrome/browser/main/browser.h" #include "ios/chrome/browser/search_engines/template_url_service_factory.h" #import "ios/chrome/browser/ui/commands/command_dispatcher.h" #import "ios/chrome/browser/ui/ntp/ntp_util.h" @@ -38,16 +39,16 @@ @implementation OmniboxPopupCoordinator -@synthesize browserState = _browserState; @synthesize mediator = _mediator; @synthesize popupViewController = _popupViewController; -@synthesize dispatcher = _dispatcher; #pragma mark - Public -- (instancetype)initWithPopupView: - (std::unique_ptr<OmniboxPopupViewIOS>)popupView { - self = [super init]; +- (instancetype) + initWithBaseViewController:(UIViewController*)viewController + browser:(Browser*)browser + popupView:(std::unique_ptr<OmniboxPopupViewIOS>)popupView { + self = [super initWithBaseViewController:nil browser:browser]; if (self) { _popupView = std::move(popupView); } @@ -57,26 +58,31 @@ - (void)start { std::unique_ptr<image_fetcher::IOSImageDataFetcherWrapper> imageFetcher = std::make_unique<image_fetcher::IOSImageDataFetcherWrapper>( - self.browserState->GetSharedURLLoaderFactory()); + self.browser->GetBrowserState()->GetSharedURLLoaderFactory()); self.mediator = [[OmniboxPopupMediator alloc] initWithFetcher:std::move(imageFetcher) faviconLoader:IOSChromeFaviconLoaderFactory::GetForBrowserState( - self.browserState) + self.browser->GetBrowserState()) delegate:_popupView.get()]; - self.mediator.dispatcher = (id<BrowserCommands>)self.dispatcher; - self.mediator.webStateList = self.webStateList; + // TODO(crbug.com/1045047): Use HandlerForProtocol after commands protocol + // clean up. + self.mediator.dispatcher = + static_cast<id<BrowserCommands>>(self.browser->GetCommandDispatcher()); + self.mediator.webStateList = self.browser->GetWebStateList(); TemplateURLService* templateURLService = - ios::TemplateURLServiceFactory::GetForBrowserState(self.browserState); + ios::TemplateURLServiceFactory::GetForBrowserState( + self.browser->GetBrowserState()); self.mediator.defaultSearchEngineIsGoogle = templateURLService && templateURLService->GetDefaultSearchProvider() && templateURLService->GetDefaultSearchProvider()->GetEngineType( templateURLService->search_terms_data()) == SEARCH_ENGINE_GOOGLE; self.popupViewController = [[OmniboxPopupViewController alloc] init]; - self.popupViewController.incognito = self.browserState->IsOffTheRecord(); + self.popupViewController.incognito = + self.browser->GetBrowserState()->IsOffTheRecord(); - BOOL isIncognito = self.browserState->IsOffTheRecord(); + BOOL isIncognito = self.browser->GetBrowserState()->IsOffTheRecord(); self.mediator.incognito = isIncognito; self.mediator.consumer = self.popupViewController; self.mediator.presenter = [[OmniboxPopupPresenter alloc] @@ -86,7 +92,7 @@ self.popupViewController.imageRetriever = self.mediator; self.popupViewController.faviconRetriever = self.mediator; self.popupViewController.delegate = self.mediator; - [self.dispatcher + [self.browser->GetCommandDispatcher() startDispatchingToTarget:self.popupViewController forProtocol:@protocol(OmniboxSuggestionCommands)]; @@ -95,7 +101,7 @@ - (void)stop { _popupView.reset(); - [self.dispatcher + [self.browser->GetCommandDispatcher() stopDispatchingForProtocol:@protocol(OmniboxSuggestionCommands)]; }
diff --git a/ios/chrome/browser/ui/omnibox/popup/omnibox_popup_presenter.mm b/ios/chrome/browser/ui/omnibox/popup/omnibox_popup_presenter.mm index 6cbae41..111b0fa 100644 --- a/ios/chrome/browser/ui/omnibox/popup/omnibox_popup_presenter.mm +++ b/ios/chrome/browser/ui/omnibox/popup/omnibox_popup_presenter.mm
@@ -10,7 +10,7 @@ #import "ios/chrome/browser/ui/util/named_guide.h" #include "ios/chrome/browser/ui/util/ui_util.h" #import "ios/chrome/browser/ui/util/uikit_ui_util.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #include "ios/chrome/common/ui/util/constraints_ui_util.h" #include "ios/chrome/grit/ios_theme_resources.h" #import "ui/gfx/ios/uikit_util.h"
diff --git a/ios/chrome/browser/ui/omnibox/popup/omnibox_popup_row_cell.mm b/ios/chrome/browser/ui/omnibox/popup/omnibox_popup_row_cell.mm index 6d76426..d4c49a13 100644 --- a/ios/chrome/browser/ui/omnibox/popup/omnibox_popup_row_cell.mm +++ b/ios/chrome/browser/ui/omnibox/popup/omnibox_popup_row_cell.mm
@@ -15,8 +15,8 @@ #import "ios/chrome/browser/ui/toolbar/public/toolbar_constants.h" #import "ios/chrome/browser/ui/util/named_guide.h" #import "ios/chrome/browser/ui/util/uikit_ui_util.h" -#import "ios/chrome/common/colors/dynamic_color_util.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/dynamic_color_util.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #include "ios/chrome/grit/ios_strings.h" #include "ios/chrome/grit/ios_theme_resources.h" #include "ui/base/l10n/l10n_util.h"
diff --git a/ios/chrome/browser/ui/omnibox/popup/simple_omnibox_icon.mm b/ios/chrome/browser/ui/omnibox/popup/simple_omnibox_icon.mm index 5c397f9..1db0123 100644 --- a/ios/chrome/browser/ui/omnibox/popup/simple_omnibox_icon.mm +++ b/ios/chrome/browser/ui/omnibox/popup/simple_omnibox_icon.mm
@@ -7,8 +7,8 @@ #import "ios/chrome/browser/ui/colors/MDCPalette+CrAdditions.h" #import "ios/chrome/browser/ui/omnibox/omnibox_suggestion_icon_util.h" #import "ios/chrome/browser/ui/ui_feature_flags.h" -#import "ios/chrome/common/colors/dynamic_color_util.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/dynamic_color_util.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #include "ios/public/provider/chrome/browser/chrome_browser_provider.h" #include "ios/public/provider/chrome/browser/images/branded_image_provider.h" #import "url/gurl.h"
diff --git a/ios/chrome/browser/ui/open_in/BUILD.gn b/ios/chrome/browser/ui/open_in/BUILD.gn index 4b457e99..72f37b66 100644 --- a/ios/chrome/browser/ui/open_in/BUILD.gn +++ b/ios/chrome/browser/ui/open_in/BUILD.gn
@@ -23,7 +23,7 @@ "//ios/chrome/browser/ui/coordinators:chrome_coordinators", "//ios/chrome/browser/ui/util", "//ios/chrome/browser/web_state_list", - "//ios/chrome/common/colors", + "//ios/chrome/common/ui/colors", "//ios/chrome/common/ui/util", "//ios/third_party/material_components_ios", "//ios/web/public",
diff --git a/ios/chrome/browser/ui/open_in/open_in_toolbar.mm b/ios/chrome/browser/ui/open_in/open_in_toolbar.mm index 30d200d..88e3f3e 100644 --- a/ios/chrome/browser/ui/open_in/open_in_toolbar.mm +++ b/ios/chrome/browser/ui/open_in/open_in_toolbar.mm
@@ -10,7 +10,7 @@ #import "ios/chrome/browser/ui/util/named_guide.h" #include "ios/chrome/browser/ui/util/rtl_geometry.h" #import "ios/chrome/browser/ui/util/uikit_ui_util.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #import "ios/chrome/common/ui/util/constraints_ui_util.h" #include "ios/chrome/grit/ios_strings.h" #import "ios/third_party/material_components_ios/src/components/Buttons/src/MaterialButtons.h"
diff --git a/ios/chrome/browser/ui/overscroll_actions/BUILD.gn b/ios/chrome/browser/ui/overscroll_actions/BUILD.gn index 16f783e71..16b576cd 100644 --- a/ios/chrome/browser/ui/overscroll_actions/BUILD.gn +++ b/ios/chrome/browser/ui/overscroll_actions/BUILD.gn
@@ -32,7 +32,7 @@ "//ios/chrome/browser/ui/toolbar/public", "//ios/chrome/browser/ui/util", "//ios/chrome/browser/ui/voice", - "//ios/chrome/common/colors", + "//ios/chrome/common/ui/colors", "//ios/public/provider/chrome/browser", "//ios/public/provider/chrome/browser/ui", "//ios/web/common",
diff --git a/ios/chrome/browser/ui/overscroll_actions/overscroll_actions_view.mm b/ios/chrome/browser/ui/overscroll_actions/overscroll_actions_view.mm index 95ab2ff22..6ab6f97 100644 --- a/ios/chrome/browser/ui/overscroll_actions/overscroll_actions_view.mm +++ b/ios/chrome/browser/ui/overscroll_actions/overscroll_actions_view.mm
@@ -12,8 +12,8 @@ #import "ios/chrome/browser/ui/content_suggestions/ntp_home_constant.h" #include "ios/chrome/browser/ui/util/rtl_geometry.h" #include "ios/chrome/browser/ui/util/uikit_ui_util.h" -#import "ios/chrome/common/colors/dynamic_color_util.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/dynamic_color_util.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #include "ios/chrome/grit/ios_chromium_strings.h" #include "ios/chrome/grit/ios_strings.h" #include "ios/chrome/grit/ios_theme_resources.h"
diff --git a/ios/chrome/browser/ui/page_info/BUILD.gn b/ios/chrome/browser/ui/page_info/BUILD.gn index e46bf92a..0e389d8 100644 --- a/ios/chrome/browser/ui/page_info/BUILD.gn +++ b/ios/chrome/browser/ui/page_info/BUILD.gn
@@ -29,7 +29,7 @@ "//ios/chrome/browser/ui/popup_menu", "//ios/chrome/browser/ui/util", "//ios/chrome/common", - "//ios/chrome/common/colors", + "//ios/chrome/common/ui/colors", "//ios/web", "//ios/web/public/security", "//ui/base",
diff --git a/ios/chrome/browser/ui/page_info/legacy_page_info_view_controller.mm b/ios/chrome/browser/ui/page_info/legacy_page_info_view_controller.mm index 230aaba..1f4f9b1 100644 --- a/ios/chrome/browser/ui/page_info/legacy_page_info_view_controller.mm +++ b/ios/chrome/browser/ui/page_info/legacy_page_info_view_controller.mm
@@ -21,9 +21,9 @@ #include "ios/chrome/browser/ui/util/rtl_geometry.h" #include "ios/chrome/browser/ui/util/ui_util.h" #import "ios/chrome/browser/ui/util/uikit_ui_util.h" -#import "ios/chrome/common/colors/UIColor+cr_semantic_colors.h" -#import "ios/chrome/common/colors/semantic_color_names.h" #import "ios/chrome/common/material_timing.h" +#import "ios/chrome/common/ui/colors/UIColor+cr_semantic_colors.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #include "ios/chrome/grit/ios_strings.h" #import "ios/third_party/material_components_ios/src/components/Typography/src/MaterialTypography.h" #include "ui/base/l10n/l10n_util.h"
diff --git a/ios/chrome/browser/ui/passwords/BUILD.gn b/ios/chrome/browser/ui/passwords/BUILD.gn index d22f06f..960f911 100644 --- a/ios/chrome/browser/ui/passwords/BUILD.gn +++ b/ios/chrome/browser/ui/passwords/BUILD.gn
@@ -28,7 +28,7 @@ "//ios/chrome/browser/ui/commands", "//ios/chrome/browser/ui/coordinators:chrome_coordinators", "//ios/chrome/browser/ui/util", - "//ios/chrome/common/colors", + "//ios/chrome/common/ui/colors", "//ios/chrome/common/ui/confirmation_alert", "//ios/chrome/common/ui/util", "//ui/base",
diff --git a/ios/chrome/browser/ui/passwords/password_breach_learn_more_view_controller.mm b/ios/chrome/browser/ui/passwords/password_breach_learn_more_view_controller.mm index f409fb5..ebb66ff0 100644 --- a/ios/chrome/browser/ui/passwords/password_breach_learn_more_view_controller.mm +++ b/ios/chrome/browser/ui/passwords/password_breach_learn_more_view_controller.mm
@@ -6,7 +6,7 @@ #include "components/strings/grit/components_strings.h" #import "ios/chrome/browser/ui/passwords/password_breach_presenter.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #import "ios/chrome/common/ui/util/constraints_ui_util.h" #include "ui/base/l10n/l10n_util.h"
diff --git a/ios/chrome/browser/ui/popup_menu/cells/popup_menu_navigation_item.mm b/ios/chrome/browser/ui/popup_menu/cells/popup_menu_navigation_item.mm index bd6e859..f06e05d0 100644 --- a/ios/chrome/browser/ui/popup_menu/cells/popup_menu_navigation_item.mm +++ b/ios/chrome/browser/ui/popup_menu/cells/popup_menu_navigation_item.mm
@@ -7,7 +7,7 @@ #include "base/logging.h" #import "ios/chrome/browser/ui/popup_menu/public/popup_menu_ui_constants.h" #import "ios/chrome/browser/ui/table_view/chrome_table_view_styler.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #import "ios/chrome/common/ui/util/constraints_ui_util.h" #if !defined(__has_feature) || !__has_feature(objc_arc)
diff --git a/ios/chrome/browser/ui/popup_menu/cells/popup_menu_tools_item.mm b/ios/chrome/browser/ui/popup_menu/cells/popup_menu_tools_item.mm index fa7e44e..7dabae0 100644 --- a/ios/chrome/browser/ui/popup_menu/cells/popup_menu_tools_item.mm +++ b/ios/chrome/browser/ui/popup_menu/cells/popup_menu_tools_item.mm
@@ -12,8 +12,8 @@ #import "ios/chrome/browser/ui/reading_list/text_badge_view.h" #import "ios/chrome/browser/ui/table_view/chrome_table_view_styler.h" #import "ios/chrome/browser/ui/util/uikit_ui_util.h" -#import "ios/chrome/common/colors/semantic_color_names.h" #import "ios/chrome/common/material_timing.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #import "ios/chrome/common/ui/util/constraints_ui_util.h" #if !defined(__has_feature) || !__has_feature(objc_arc)
diff --git a/ios/chrome/browser/ui/popup_menu/public/popup_menu_view_controller.mm b/ios/chrome/browser/ui/popup_menu/public/popup_menu_view_controller.mm index f593b093..165beb7 100644 --- a/ios/chrome/browser/ui/popup_menu/public/popup_menu_view_controller.mm +++ b/ios/chrome/browser/ui/popup_menu/public/popup_menu_view_controller.mm
@@ -8,7 +8,7 @@ #import "ios/chrome/browser/ui/popup_menu/public/popup_menu_ui_constants.h" #import "ios/chrome/browser/ui/popup_menu/public/popup_menu_view_controller_delegate.h" #import "ios/chrome/browser/ui/util/accessibility_close_menu_button.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #import "ios/chrome/common/ui/util/constraints_ui_util.h" #if !defined(__has_feature) || !__has_feature(objc_arc)
diff --git a/ios/chrome/browser/ui/promos/BUILD.gn b/ios/chrome/browser/ui/promos/BUILD.gn index e1356441..145ac7b 100644 --- a/ios/chrome/browser/ui/promos/BUILD.gn +++ b/ios/chrome/browser/ui/promos/BUILD.gn
@@ -20,7 +20,7 @@ "//ios/chrome/browser/main", "//ios/chrome/browser/signin", "//ios/chrome/browser/ui/commands", - "//ios/chrome/common/colors", + "//ios/chrome/common/ui/colors", "//ios/public/provider/chrome/browser", "//ios/public/provider/chrome/browser/signin", "//net",
diff --git a/ios/chrome/browser/ui/promos/signin_promo_view_controller.mm b/ios/chrome/browser/ui/promos/signin_promo_view_controller.mm index ae0f20db..33fc1bda 100644 --- a/ios/chrome/browser/ui/promos/signin_promo_view_controller.mm +++ b/ios/chrome/browser/ui/promos/signin_promo_view_controller.mm
@@ -17,7 +17,7 @@ #include "ios/chrome/browser/signin/authentication_service.h" #include "ios/chrome/browser/signin/authentication_service_factory.h" #import "ios/chrome/browser/ui/commands/application_commands.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #include "ios/public/provider/chrome/browser/chrome_browser_provider.h" #import "ios/public/provider/chrome/browser/signin/chrome_identity.h" #import "ios/public/provider/chrome/browser/signin/chrome_identity_service.h"
diff --git a/ios/chrome/browser/ui/reading_list/BUILD.gn b/ios/chrome/browser/ui/reading_list/BUILD.gn index c6fcbdd..18abca6 100644 --- a/ios/chrome/browser/ui/reading_list/BUILD.gn +++ b/ios/chrome/browser/ui/reading_list/BUILD.gn
@@ -118,7 +118,7 @@ "//ios/chrome/browser/ui/table_view/cells/resources:table_view_cell_check_mark", "//ios/chrome/browser/ui/util", "//ios/chrome/common", - "//ios/chrome/common/colors", + "//ios/chrome/common/ui/colors", "//ios/chrome/common/ui/favicon", "//ui/base", "//ui/strings:ui_strings_grit",
diff --git a/ios/chrome/browser/ui/reading_list/empty_reading_list_message_util.mm b/ios/chrome/browser/ui/reading_list/empty_reading_list_message_util.mm index 81015f6..43cbea2 100644 --- a/ios/chrome/browser/ui/reading_list/empty_reading_list_message_util.mm +++ b/ios/chrome/browser/ui/reading_list/empty_reading_list_message_util.mm
@@ -8,7 +8,7 @@ #include "ios/chrome/browser/system_flags.h" #include "ios/chrome/browser/ui/util/rtl_geometry.h" #import "ios/chrome/browser/ui/util/uikit_ui_util.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #include "ios/chrome/grit/ios_strings.h" #include "ui/base/l10n/l10n_util_mac.h"
diff --git a/ios/chrome/browser/ui/reading_list/reading_list_toolbar_button_manager.mm b/ios/chrome/browser/ui/reading_list/reading_list_toolbar_button_manager.mm index cba43666..ecd4339 100644 --- a/ios/chrome/browser/ui/reading_list/reading_list_toolbar_button_manager.mm +++ b/ios/chrome/browser/ui/reading_list/reading_list_toolbar_button_manager.mm
@@ -8,7 +8,7 @@ #import "ios/chrome/browser/ui/alert_coordinator/action_sheet_coordinator.h" #import "ios/chrome/browser/ui/reading_list/reading_list_constants.h" #import "ios/chrome/browser/ui/reading_list/reading_list_toolbar_button_commands.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #include "ios/chrome/grit/ios_strings.h" #include "ui/base/l10n/l10n_util_mac.h"
diff --git a/ios/chrome/browser/ui/reading_list/text_badge_view.mm b/ios/chrome/browser/ui/reading_list/text_badge_view.mm index 7778bd5..544d011 100644 --- a/ios/chrome/browser/ui/reading_list/text_badge_view.mm +++ b/ios/chrome/browser/ui/reading_list/text_badge_view.mm
@@ -6,7 +6,7 @@ #include "base/logging.h" #include "ios/chrome/browser/ui/util/ui_util.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #if !defined(__has_feature) || !__has_feature(objc_arc) #error "This file requires ARC support."
diff --git a/ios/chrome/browser/ui/recent_tabs/BUILD.gn b/ios/chrome/browser/ui/recent_tabs/BUILD.gn index 7508caad..f8ac7df 100644 --- a/ios/chrome/browser/ui/recent_tabs/BUILD.gn +++ b/ios/chrome/browser/ui/recent_tabs/BUILD.gn
@@ -89,7 +89,7 @@ "//ios/chrome/browser/url_loading", "//ios/chrome/browser/web_state_list", "//ios/chrome/browser/web_state_list", - "//ios/chrome/common/colors", + "//ios/chrome/common/ui/colors", "//ios/chrome/common/ui/favicon", "//ui/base", ]
diff --git a/ios/chrome/browser/ui/recent_tabs/recent_tabs_table_view_controller.mm b/ios/chrome/browser/ui/recent_tabs/recent_tabs_table_view_controller.mm index 53fc479..19e176f 100644 --- a/ios/chrome/browser/ui/recent_tabs/recent_tabs_table_view_controller.mm +++ b/ios/chrome/browser/ui/recent_tabs/recent_tabs_table_view_controller.mm
@@ -53,7 +53,7 @@ #import "ios/chrome/browser/url_loading/url_loading_util.h" #include "ios/chrome/browser/web_state_list/web_state_list.h" #include "ios/chrome/browser/web_state_list/web_state_opener.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #import "ios/chrome/common/ui/favicon/favicon_attributes.h" #import "ios/chrome/common/ui/favicon/favicon_view.h" #include "ios/chrome/grit/ios_chromium_strings.h"
diff --git a/ios/chrome/browser/ui/sad_tab/BUILD.gn b/ios/chrome/browser/ui/sad_tab/BUILD.gn index 24e0085..44ba834 100644 --- a/ios/chrome/browser/ui/sad_tab/BUILD.gn +++ b/ios/chrome/browser/ui/sad_tab/BUILD.gn
@@ -20,7 +20,7 @@ "//ios/chrome/browser/ui/commands", "//ios/chrome/browser/ui/overscroll_actions", "//ios/chrome/browser/ui/util", - "//ios/chrome/common/colors", + "//ios/chrome/common/ui/colors", "//ios/chrome/common/ui/util", "//ios/third_party/material_components_ios", "//ios/web",
diff --git a/ios/chrome/browser/ui/sad_tab/sad_tab_view.mm b/ios/chrome/browser/ui/sad_tab/sad_tab_view.mm index e4e4623..08d2033 100644 --- a/ios/chrome/browser/ui/sad_tab/sad_tab_view.mm +++ b/ios/chrome/browser/ui/sad_tab/sad_tab_view.mm
@@ -15,7 +15,7 @@ #import "ios/chrome/browser/ui/util/label_link_controller.h" #include "ios/chrome/browser/ui/util/rtl_geometry.h" #import "ios/chrome/browser/ui/util/uikit_ui_util.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #import "ios/third_party/material_components_ios/src/components/Buttons/src/MaterialButtons.h" #import "ios/third_party/material_components_ios/src/components/Typography/src/MaterialTypography.h" #include "ios/web/public/browser_state.h"
diff --git a/ios/chrome/browser/ui/sad_tab/sad_tab_view_controller.mm b/ios/chrome/browser/ui/sad_tab/sad_tab_view_controller.mm index 1e01ded..e3b7415 100644 --- a/ios/chrome/browser/ui/sad_tab/sad_tab_view_controller.mm +++ b/ios/chrome/browser/ui/sad_tab/sad_tab_view_controller.mm
@@ -9,7 +9,7 @@ #import "ios/chrome/browser/ui/overscroll_actions/overscroll_actions_controller.h" #import "ios/chrome/browser/ui/sad_tab/sad_tab_view.h" #import "ios/chrome/browser/ui/util/uikit_ui_util.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #import "ios/chrome/common/ui/util/constraints_ui_util.h" #include "url/gurl.h"
diff --git a/ios/chrome/browser/ui/safe_mode/BUILD.gn b/ios/chrome/browser/ui/safe_mode/BUILD.gn index 0f2a9ebd..c6ceece1 100644 --- a/ios/chrome/browser/ui/safe_mode/BUILD.gn +++ b/ios/chrome/browser/ui/safe_mode/BUILD.gn
@@ -21,7 +21,7 @@ "//ios/chrome/browser/safe_mode", "//ios/chrome/browser/ui/fancy_ui", "//ios/chrome/browser/ui/util", - "//ios/chrome/common/colors", + "//ios/chrome/common/ui/colors", "//ui/gfx", ]
diff --git a/ios/chrome/browser/ui/safe_mode/safe_mode_view_controller.mm b/ios/chrome/browser/ui/safe_mode/safe_mode_view_controller.mm index bb7e2b2..a65b875 100644 --- a/ios/chrome/browser/ui/safe_mode/safe_mode_view_controller.mm +++ b/ios/chrome/browser/ui/safe_mode/safe_mode_view_controller.mm
@@ -13,7 +13,7 @@ #import "ios/chrome/browser/ui/fancy_ui/primary_action_button.h" #include "ios/chrome/browser/ui/util/ui_util.h" #import "ios/chrome/browser/ui/util/uikit_ui_util.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #include "ios/chrome/grit/ios_chromium_strings.h" #import "ui/gfx/ios/NSString+CrStringDrawing.h"
diff --git a/ios/chrome/browser/ui/send_tab_to_self/BUILD.gn b/ios/chrome/browser/ui/send_tab_to_self/BUILD.gn index 4ecb4ed..43e1a10 100644 --- a/ios/chrome/browser/ui/send_tab_to_self/BUILD.gn +++ b/ios/chrome/browser/ui/send_tab_to_self/BUILD.gn
@@ -45,7 +45,7 @@ "//ios/chrome/browser/ui/table_view:styler", "//ios/chrome/browser/ui/table_view/cells", "//ios/chrome/browser/ui/table_view/cells:cells_constants", - "//ios/chrome/common/colors", + "//ios/chrome/common/ui/colors", "//ui/base", ] }
diff --git a/ios/chrome/browser/ui/send_tab_to_self/send_tab_to_self_modal_presentation_controller.mm b/ios/chrome/browser/ui/send_tab_to_self/send_tab_to_self_modal_presentation_controller.mm index 8b3c574..4ec9866 100644 --- a/ios/chrome/browser/ui/send_tab_to_self/send_tab_to_self_modal_presentation_controller.mm +++ b/ios/chrome/browser/ui/send_tab_to_self/send_tab_to_self_modal_presentation_controller.mm
@@ -7,7 +7,7 @@ #include "base/logging.h" #import "ios/chrome/browser/ui/send_tab_to_self/send_tab_to_self_modal_positioner.h" #import "ios/chrome/browser/ui/util/uikit_ui_util.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #if !defined(__has_feature) || !__has_feature(objc_arc) #error "This file requires ARC support."
diff --git a/ios/chrome/browser/ui/send_tab_to_self/send_tab_to_self_table_view_controller.mm b/ios/chrome/browser/ui/send_tab_to_self/send_tab_to_self_table_view_controller.mm index 715ca96..9100ca1 100644 --- a/ios/chrome/browser/ui/send_tab_to_self/send_tab_to_self_table_view_controller.mm +++ b/ios/chrome/browser/ui/send_tab_to_self/send_tab_to_self_table_view_controller.mm
@@ -20,8 +20,8 @@ #include "ios/chrome/browser/ui/table_view/cells/table_view_url_item.h" #import "ios/chrome/browser/ui/table_view/chrome_table_view_styler.h" #import "ios/chrome/browser/ui/util/uikit_ui_util.h" -#import "ios/chrome/common/colors/UIColor+cr_semantic_colors.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/UIColor+cr_semantic_colors.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #include "ios/chrome/grit/ios_strings.h" #include "ui/base/l10n/l10n_util.h"
diff --git a/ios/chrome/browser/ui/settings/BUILD.gn b/ios/chrome/browser/ui/settings/BUILD.gn index 080cc9ae..50b34cf8 100644 --- a/ios/chrome/browser/ui/settings/BUILD.gn +++ b/ios/chrome/browser/ui/settings/BUILD.gn
@@ -23,7 +23,7 @@ "//ios/chrome/browser/ui/table_view", "//ios/chrome/browser/ui/table_view:styler", "//ios/chrome/browser/ui/table_view/cells", - "//ios/chrome/common/colors", + "//ios/chrome/common/ui/colors", "//ios/chrome/common/ui/util", "//ios/public/provider/chrome/browser", "//ios/public/provider/chrome/browser/user_feedback", @@ -172,7 +172,7 @@ "//ios/chrome/browser/voice", "//ios/chrome/browser/web:web", "//ios/chrome/common", - "//ios/chrome/common/colors", + "//ios/chrome/common/ui/colors", "//ios/chrome/common/ui/favicon", "//ios/chrome/common/ui/util", "//ios/public/provider/chrome/browser",
diff --git a/ios/chrome/browser/ui/settings/about_chrome_table_view_controller.mm b/ios/chrome/browser/ui/settings/about_chrome_table_view_controller.mm index 1e8a245..23ab3bd 100644 --- a/ios/chrome/browser/ui/settings/about_chrome_table_view_controller.mm +++ b/ios/chrome/browser/ui/settings/about_chrome_table_view_controller.mm
@@ -20,7 +20,7 @@ #include "ios/chrome/browser/ui/ui_feature_flags.h" #include "ios/chrome/browser/ui/util/uikit_ui_util.h" #include "ios/chrome/common/channel_info.h" -#import "ios/chrome/common/colors/UIColor+cr_semantic_colors.h" +#import "ios/chrome/common/ui/colors/UIColor+cr_semantic_colors.h" #include "ios/chrome/grit/ios_chromium_strings.h" #include "ios/chrome/grit/ios_strings.h" #import "ios/third_party/material_components_ios/src/components/Snackbar/src/MaterialSnackbar.h"
diff --git a/ios/chrome/browser/ui/settings/autofill/BUILD.gn b/ios/chrome/browser/ui/settings/autofill/BUILD.gn index 907d658..3318029 100644 --- a/ios/chrome/browser/ui/settings/autofill/BUILD.gn +++ b/ios/chrome/browser/ui/settings/autofill/BUILD.gn
@@ -56,7 +56,7 @@ "//ios/chrome/browser/ui/table_view/cells", "//ios/chrome/browser/ui/table_view/cells:cells_constants", "//ios/chrome/browser/ui/util", - "//ios/chrome/common/colors", + "//ios/chrome/common/ui/colors", "//ui/base", ] }
diff --git a/ios/chrome/browser/ui/settings/autofill/autofill_add_credit_card_view_controller.mm b/ios/chrome/browser/ui/settings/autofill/autofill_add_credit_card_view_controller.mm index c29ddf10..7364418 100644 --- a/ios/chrome/browser/ui/settings/autofill/autofill_add_credit_card_view_controller.mm +++ b/ios/chrome/browser/ui/settings/autofill/autofill_add_credit_card_view_controller.mm
@@ -15,8 +15,8 @@ #import "ios/chrome/browser/ui/table_view/cells/table_view_text_item.h" #import "ios/chrome/browser/ui/table_view/chrome_table_view_controller.h" #include "ios/chrome/browser/ui/ui_feature_flags.h" -#import "ios/chrome/common/colors/UIColor+cr_semantic_colors.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/UIColor+cr_semantic_colors.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #include "ios/chrome/grit/ios_strings.h" #include "ui/base/l10n/l10n_util_mac.h"
diff --git a/ios/chrome/browser/ui/settings/autofill/autofill_credit_card_table_view_controller.mm b/ios/chrome/browser/ui/settings/autofill/autofill_credit_card_table_view_controller.mm index 72519de..aa6dbd6 100644 --- a/ios/chrome/browser/ui/settings/autofill/autofill_credit_card_table_view_controller.mm +++ b/ios/chrome/browser/ui/settings/autofill/autofill_credit_card_table_view_controller.mm
@@ -30,7 +30,7 @@ #import "ios/chrome/browser/ui/table_view/cells/table_view_text_header_footer_item.h" #include "ios/chrome/browser/ui/ui_feature_flags.h" #import "ios/chrome/browser/ui/util/uikit_ui_util.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #include "ios/chrome/grit/ios_strings.h" #include "ui/base/l10n/l10n_util.h"
diff --git a/ios/chrome/browser/ui/settings/autofill/autofill_profile_table_view_controller.mm b/ios/chrome/browser/ui/settings/autofill/autofill_profile_table_view_controller.mm index c5ba908..c28641cd60 100644 --- a/ios/chrome/browser/ui/settings/autofill/autofill_profile_table_view_controller.mm +++ b/ios/chrome/browser/ui/settings/autofill/autofill_profile_table_view_controller.mm
@@ -27,7 +27,7 @@ #import "ios/chrome/browser/ui/table_view/table_view_model.h" #include "ios/chrome/browser/ui/ui_feature_flags.h" #import "ios/chrome/browser/ui/util/uikit_ui_util.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #include "ios/chrome/grit/ios_strings.h" #include "ui/base/l10n/l10n_util.h"
diff --git a/ios/chrome/browser/ui/settings/cells/BUILD.gn b/ios/chrome/browser/ui/settings/cells/BUILD.gn index 20ace5e..0be2e73 100644 --- a/ios/chrome/browser/ui/settings/cells/BUILD.gn +++ b/ios/chrome/browser/ui/settings/cells/BUILD.gn
@@ -46,7 +46,7 @@ "//ios/chrome/browser/ui/table_view/cells", "//ios/chrome/browser/ui/table_view/cells:cells_constants", "//ios/chrome/browser/ui/util", - "//ios/chrome/common/colors", + "//ios/chrome/common/ui/colors", "//ios/chrome/common/ui/util", "//ios/public/provider/chrome/browser", "//ios/public/provider/chrome/browser/signin",
diff --git a/ios/chrome/browser/ui/settings/cells/copied_to_chrome_item.mm b/ios/chrome/browser/ui/settings/cells/copied_to_chrome_item.mm index 38217b8f..ae22fce8 100644 --- a/ios/chrome/browser/ui/settings/cells/copied_to_chrome_item.mm +++ b/ios/chrome/browser/ui/settings/cells/copied_to_chrome_item.mm
@@ -7,8 +7,8 @@ #include "components/strings/grit/components_strings.h" #import "ios/chrome/browser/ui/table_view/cells/table_view_cells_constants.h" #import "ios/chrome/browser/ui/util/uikit_ui_util.h" -#import "ios/chrome/common/colors/UIColor+cr_semantic_colors.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/UIColor+cr_semantic_colors.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #import "ios/chrome/common/ui/util/constraints_ui_util.h" #include "ios/chrome/grit/ios_chromium_strings.h" #include "ui/base/l10n/l10n_util_mac.h"
diff --git a/ios/chrome/browser/ui/settings/cells/search_engine_item.mm b/ios/chrome/browser/ui/settings/cells/search_engine_item.mm index 7b7f7af..eecdde75 100644 --- a/ios/chrome/browser/ui/settings/cells/search_engine_item.mm +++ b/ios/chrome/browser/ui/settings/cells/search_engine_item.mm
@@ -12,7 +12,7 @@ #import "ios/chrome/browser/ui/table_view/chrome_table_view_styler.h" #include "ios/chrome/browser/ui/ui_feature_flags.h" #include "ios/chrome/browser/ui/util/uikit_ui_util.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #include "url/gurl.h" #if !defined(__has_feature) || !__has_feature(objc_arc)
diff --git a/ios/chrome/browser/ui/settings/cells/settings_image_detail_text_cell.mm b/ios/chrome/browser/ui/settings/cells/settings_image_detail_text_cell.mm index a22cee6..264d54ec 100644 --- a/ios/chrome/browser/ui/settings/cells/settings_image_detail_text_cell.mm +++ b/ios/chrome/browser/ui/settings/cells/settings_image_detail_text_cell.mm
@@ -7,7 +7,7 @@ #include "base/logging.h" #include "ios/chrome/browser/ui/table_view/cells/table_view_cells_constants.h" #import "ios/chrome/browser/ui/util/uikit_ui_util.h" -#import "ios/chrome/common/colors/UIColor+cr_semantic_colors.h" +#import "ios/chrome/common/ui/colors/UIColor+cr_semantic_colors.h" #if !defined(__has_feature) || !__has_feature(objc_arc) #error "This file requires ARC support."
diff --git a/ios/chrome/browser/ui/settings/cells/settings_multiline_detail_item.mm b/ios/chrome/browser/ui/settings/cells/settings_multiline_detail_item.mm index e73b849..61ee554 100644 --- a/ios/chrome/browser/ui/settings/cells/settings_multiline_detail_item.mm +++ b/ios/chrome/browser/ui/settings/cells/settings_multiline_detail_item.mm
@@ -7,7 +7,7 @@ #import "ios/chrome/browser/ui/settings/cells/settings_cells_constants.h" #import "ios/chrome/browser/ui/table_view/cells/table_view_cells_constants.h" #import "ios/chrome/browser/ui/util/uikit_ui_util.h" -#import "ios/chrome/common/colors/UIColor+cr_semantic_colors.h" +#import "ios/chrome/common/ui/colors/UIColor+cr_semantic_colors.h" #import "ios/chrome/common/ui/util/constraints_ui_util.h" #if !defined(__has_feature) || !__has_feature(objc_arc)
diff --git a/ios/chrome/browser/ui/settings/cells/settings_switch_cell.mm b/ios/chrome/browser/ui/settings/cells/settings_switch_cell.mm index 7698368..afc7cb1 100644 --- a/ios/chrome/browser/ui/settings/cells/settings_switch_cell.mm +++ b/ios/chrome/browser/ui/settings/cells/settings_switch_cell.mm
@@ -7,8 +7,8 @@ #import "ios/chrome/browser/ui/settings/cells/settings_cells_constants.h" #include "ios/chrome/browser/ui/table_view/cells/table_view_cells_constants.h" #import "ios/chrome/browser/ui/util/uikit_ui_util.h" -#import "ios/chrome/common/colors/UIColor+cr_semantic_colors.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/UIColor+cr_semantic_colors.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #import "ios/chrome/common/ui/util/constraints_ui_util.h" #include "ios/chrome/grit/ios_strings.h" #include "ui/base/l10n/l10n_util_mac.h"
diff --git a/ios/chrome/browser/ui/settings/cells/table_view_clear_browsing_data_item.mm b/ios/chrome/browser/ui/settings/cells/table_view_clear_browsing_data_item.mm index 4d65979..ed33e0b 100644 --- a/ios/chrome/browser/ui/settings/cells/table_view_clear_browsing_data_item.mm +++ b/ios/chrome/browser/ui/settings/cells/table_view_clear_browsing_data_item.mm
@@ -8,7 +8,7 @@ #include "ios/chrome/browser/ui/table_view/cells/table_view_cells_constants.h" #import "ios/chrome/browser/ui/table_view/chrome_table_view_styler.h" #include "ios/chrome/browser/ui/util/uikit_ui_util.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #if !defined(__has_feature) || !__has_feature(objc_arc) #error "This file requires ARC support."
diff --git a/ios/chrome/browser/ui/settings/cells/version_item.mm b/ios/chrome/browser/ui/settings/cells/version_item.mm index c4830184..90b0fc52 100644 --- a/ios/chrome/browser/ui/settings/cells/version_item.mm +++ b/ios/chrome/browser/ui/settings/cells/version_item.mm
@@ -7,7 +7,7 @@ #include "ios/chrome/browser/ui/collection_view/cells/collection_view_cell_constants.h" #import "ios/chrome/browser/ui/table_view/cells/table_view_cells_constants.h" #import "ios/chrome/browser/ui/util/uikit_ui_util.h" -#import "ios/chrome/common/colors/UIColor+cr_semantic_colors.h" +#import "ios/chrome/common/ui/colors/UIColor+cr_semantic_colors.h" #import "ios/chrome/common/ui/util/constraints_ui_util.h" #include "ios/chrome/grit/ios_strings.h" #include "ui/base/l10n/l10n_util_mac.h"
diff --git a/ios/chrome/browser/ui/settings/clear_browsing_data/BUILD.gn b/ios/chrome/browser/ui/settings/clear_browsing_data/BUILD.gn index 47dbaa96..119db6d 100644 --- a/ios/chrome/browser/ui/settings/clear_browsing_data/BUILD.gn +++ b/ios/chrome/browser/ui/settings/clear_browsing_data/BUILD.gn
@@ -54,7 +54,7 @@ "//ios/chrome/browser/ui/table_view/cells", "//ios/chrome/browser/ui/table_view/cells:cells_constants", "//ios/chrome/common", - "//ios/chrome/common/colors", + "//ios/chrome/common/ui/colors", "//ios/public/provider/chrome/browser", "//ios/public/provider/chrome/browser/images", "//ui/base",
diff --git a/ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_manager.mm b/ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_manager.mm index ab55d1f..0b03af7 100644 --- a/ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_manager.mm +++ b/ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_manager.mm
@@ -52,7 +52,7 @@ #import "ios/chrome/browser/ui/table_view/cells/table_view_text_link_item.h" #import "ios/chrome/browser/ui/util/uikit_ui_util.h" #include "ios/chrome/common/channel_info.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #include "ios/chrome/grit/ios_chromium_strings.h" #include "ios/chrome/grit/ios_strings.h" #import "ios/public/provider/chrome/browser/chrome_browser_provider.h"
diff --git a/ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_table_view_controller.mm b/ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_table_view_controller.mm index bc1f2eb..a6e182d2 100644 --- a/ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_table_view_controller.mm +++ b/ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_table_view_controller.mm
@@ -29,8 +29,8 @@ #import "ios/chrome/browser/ui/table_view/cells/table_view_text_button_item.h" #import "ios/chrome/browser/ui/table_view/cells/table_view_text_link_item.h" #import "ios/chrome/browser/ui/table_view/chrome_table_view_styler.h" -#import "ios/chrome/common/colors/UIColor+cr_semantic_colors.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/UIColor+cr_semantic_colors.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #include "ios/chrome/grit/ios_chromium_strings.h" #include "ios/chrome/grit/ios_strings.h" #include "ui/base/l10n/l10n_util.h"
diff --git a/ios/chrome/browser/ui/settings/clear_browsing_data/time_range_selector_table_view_controller.mm b/ios/chrome/browser/ui/settings/clear_browsing_data/time_range_selector_table_view_controller.mm index 5a5b92e..0db71e7 100644 --- a/ios/chrome/browser/ui/settings/clear_browsing_data/time_range_selector_table_view_controller.mm +++ b/ios/chrome/browser/ui/settings/clear_browsing_data/time_range_selector_table_view_controller.mm
@@ -12,7 +12,7 @@ #include "components/prefs/pref_service.h" #import "ios/chrome/browser/ui/table_view/cells/table_view_detail_text_item.h" #import "ios/chrome/browser/ui/table_view/chrome_table_view_styler.h" -#import "ios/chrome/common/colors/UIColor+cr_semantic_colors.h" +#import "ios/chrome/common/ui/colors/UIColor+cr_semantic_colors.h" #include "ios/chrome/grit/ios_strings.h" #include "ui/base/l10n/l10n_util_mac.h"
diff --git a/ios/chrome/browser/ui/settings/dataplan_usage_table_view_controller.mm b/ios/chrome/browser/ui/settings/dataplan_usage_table_view_controller.mm index 0ce02223..3c0d7aa6 100644 --- a/ios/chrome/browser/ui/settings/dataplan_usage_table_view_controller.mm +++ b/ios/chrome/browser/ui/settings/dataplan_usage_table_view_controller.mm
@@ -12,7 +12,7 @@ #import "ios/chrome/browser/ui/table_view/cells/table_view_text_item.h" #import "ios/chrome/browser/ui/table_view/chrome_table_view_styler.h" #include "ios/chrome/browser/ui/ui_feature_flags.h" -#import "ios/chrome/common/colors/UIColor+cr_semantic_colors.h" +#import "ios/chrome/common/ui/colors/UIColor+cr_semantic_colors.h" #include "ios/chrome/grit/ios_strings.h" #include "ui/base/l10n/l10n_util.h" #include "ui/base/l10n/l10n_util_mac.h"
diff --git a/ios/chrome/browser/ui/settings/google_services/BUILD.gn b/ios/chrome/browser/ui/settings/google_services/BUILD.gn index 1fe29b8b..4d738b5 100644 --- a/ios/chrome/browser/ui/settings/google_services/BUILD.gn +++ b/ios/chrome/browser/ui/settings/google_services/BUILD.gn
@@ -73,7 +73,7 @@ "//ios/chrome/browser/ui/table_view", "//ios/chrome/browser/ui/table_view/cells:cells_constants", "//ios/chrome/browser/ui/util", - "//ios/chrome/common/colors", + "//ios/chrome/common/ui/colors", "//ios/public/provider/chrome/browser", "//ios/public/provider/chrome/browser/images", "//ios/public/provider/chrome/browser/signin",
diff --git a/ios/chrome/browser/ui/settings/google_services/google_services_settings_mediator.mm b/ios/chrome/browser/ui/settings/google_services/google_services_settings_mediator.mm index b8c6322b..92356d3 100644 --- a/ios/chrome/browser/ui/settings/google_services/google_services_settings_mediator.mm +++ b/ios/chrome/browser/ui/settings/google_services/google_services_settings_mediator.mm
@@ -33,7 +33,7 @@ #import "ios/chrome/browser/ui/table_view/cells/table_view_cells_constants.h" #import "ios/chrome/browser/ui/table_view/cells/table_view_image_item.h" #import "ios/chrome/browser/ui/util/uikit_ui_util.h" -#import "ios/chrome/common/colors/UIColor+cr_semantic_colors.h" +#import "ios/chrome/common/ui/colors/UIColor+cr_semantic_colors.h" #include "ios/chrome/grit/ios_chromium_strings.h" #include "ios/chrome/grit/ios_strings.h" #import "ios/public/provider/chrome/browser/signin/chrome_identity.h"
diff --git a/ios/chrome/browser/ui/settings/google_services/manage_sync_settings_mediator.mm b/ios/chrome/browser/ui/settings/google_services/manage_sync_settings_mediator.mm index 12c0095..b20dce5 100644 --- a/ios/chrome/browser/ui/settings/google_services/manage_sync_settings_mediator.mm +++ b/ios/chrome/browser/ui/settings/google_services/manage_sync_settings_mediator.mm
@@ -23,7 +23,7 @@ #import "ios/chrome/browser/ui/table_view/cells/table_view_image_item.h" #import "ios/chrome/browser/ui/table_view/cells/table_view_item.h" #import "ios/chrome/browser/ui/util/uikit_ui_util.h" -#import "ios/chrome/common/colors/UIColor+cr_semantic_colors.h" +#import "ios/chrome/common/ui/colors/UIColor+cr_semantic_colors.h" #include "ios/chrome/grit/ios_chromium_strings.h" #include "ios/chrome/grit/ios_strings.h" #include "ui/base/l10n/l10n_util.h"
diff --git a/ios/chrome/browser/ui/settings/language/BUILD.gn b/ios/chrome/browser/ui/settings/language/BUILD.gn index c068b8d1..2c3ff742 100644 --- a/ios/chrome/browser/ui/settings/language/BUILD.gn +++ b/ios/chrome/browser/ui/settings/language/BUILD.gn
@@ -54,7 +54,7 @@ "//ios/chrome/browser/ui/table_view/cells", "//ios/chrome/browser/ui/table_view/cells:cells_constants", "//ios/chrome/browser/ui/util", - "//ios/chrome/common/colors", + "//ios/chrome/common/ui/colors", "//ios/chrome/common/ui/util", "//ui/base", ]
diff --git a/ios/chrome/browser/ui/settings/language/add_language_table_view_controller.mm b/ios/chrome/browser/ui/settings/language/add_language_table_view_controller.mm index c0e9f10f..a6dc40369 100644 --- a/ios/chrome/browser/ui/settings/language/add_language_table_view_controller.mm +++ b/ios/chrome/browser/ui/settings/language/add_language_table_view_controller.mm
@@ -14,7 +14,7 @@ #import "ios/chrome/browser/ui/table_view/table_view_navigation_controller_constants.h" #include "ios/chrome/browser/ui/ui_feature_flags.h" #import "ios/chrome/browser/ui/util/uikit_ui_util.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #import "ios/chrome/common/ui/util/constraints_ui_util.h" #include "ios/chrome/grit/ios_strings.h" #include "ui/base/l10n/l10n_util_mac.h"
diff --git a/ios/chrome/browser/ui/settings/language/language_details_table_view_controller.mm b/ios/chrome/browser/ui/settings/language/language_details_table_view_controller.mm index b1bd834..17410f2 100644 --- a/ios/chrome/browser/ui/settings/language/language_details_table_view_controller.mm +++ b/ios/chrome/browser/ui/settings/language/language_details_table_view_controller.mm
@@ -15,7 +15,7 @@ #import "ios/chrome/browser/ui/table_view/cells/table_view_text_item.h" #include "ios/chrome/browser/ui/ui_feature_flags.h" #import "ios/chrome/browser/ui/util/uikit_ui_util.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #include "ios/chrome/grit/ios_strings.h" #include "ui/base/l10n/l10n_util_mac.h"
diff --git a/ios/chrome/browser/ui/settings/language/language_settings_table_view_controller.mm b/ios/chrome/browser/ui/settings/language/language_settings_table_view_controller.mm index 6f744aa2..14f7229a 100644 --- a/ios/chrome/browser/ui/settings/language/language_settings_table_view_controller.mm +++ b/ios/chrome/browser/ui/settings/language/language_settings_table_view_controller.mm
@@ -24,8 +24,8 @@ #import "ios/chrome/browser/ui/table_view/cells/table_view_text_item.h" #include "ios/chrome/browser/ui/ui_feature_flags.h" #import "ios/chrome/browser/ui/util/uikit_ui_util.h" -#import "ios/chrome/common/colors/UIColor+cr_semantic_colors.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/UIColor+cr_semantic_colors.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #include "ios/chrome/grit/ios_strings.h" #include "ui/base/l10n/l10n_util_mac.h"
diff --git a/ios/chrome/browser/ui/settings/password/BUILD.gn b/ios/chrome/browser/ui/settings/password/BUILD.gn index 2c2c41b..3244087c 100644 --- a/ios/chrome/browser/ui/settings/password/BUILD.gn +++ b/ios/chrome/browser/ui/settings/password/BUILD.gn
@@ -43,7 +43,7 @@ "//ios/chrome/browser/ui/table_view/cells", "//ios/chrome/browser/ui/table_view/cells:cells_constants", "//ios/chrome/browser/ui/util", - "//ios/chrome/common/colors", + "//ios/chrome/common/ui/colors", "//ios/chrome/common/ui/util", "//ios/third_party/material_components_ios", "//ui/base", @@ -99,7 +99,7 @@ "//ios/chrome/browser/ui/table_view/cells:cells_constants", "//ios/chrome/browser/ui/util", "//ios/chrome/browser/web:test_support", - "//ios/chrome/common/colors", + "//ios/chrome/common/ui/colors", "//ios/chrome/test/app:test_support", "//ios/web/public/test", "//ios/web/public/test",
diff --git a/ios/chrome/browser/ui/settings/password/password_details_table_view_controller.mm b/ios/chrome/browser/ui/settings/password/password_details_table_view_controller.mm index c691b21..8a618d4b 100644 --- a/ios/chrome/browser/ui/settings/password/password_details_table_view_controller.mm +++ b/ios/chrome/browser/ui/settings/password/password_details_table_view_controller.mm
@@ -27,7 +27,7 @@ #import "ios/chrome/browser/ui/table_view/cells/table_view_text_item.h" #include "ios/chrome/browser/ui/ui_feature_flags.h" #include "ios/chrome/browser/ui/util/uikit_ui_util.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #include "ios/chrome/grit/ios_strings.h" #import "ios/third_party/material_components_ios/src/components/Snackbar/src/MaterialSnackbar.h" #include "ui/base/l10n/l10n_util_mac.h"
diff --git a/ios/chrome/browser/ui/settings/password/passwords_table_view_controller.mm b/ios/chrome/browser/ui/settings/password/passwords_table_view_controller.mm index db86cbf..0ecbf4c 100644 --- a/ios/chrome/browser/ui/settings/password/passwords_table_view_controller.mm +++ b/ios/chrome/browser/ui/settings/password/passwords_table_view_controller.mm
@@ -53,8 +53,8 @@ #include "ios/chrome/browser/ui/ui_feature_flags.h" #include "ios/chrome/browser/ui/util/ui_util.h" #import "ios/chrome/browser/ui/util/uikit_ui_util.h" -#import "ios/chrome/common/colors/UIColor+cr_semantic_colors.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/UIColor+cr_semantic_colors.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #import "ios/chrome/common/ui/util/constraints_ui_util.h" #include "ios/chrome/grit/ios_strings.h" #include "ui/base/l10n/l10n_util_mac.h"
diff --git a/ios/chrome/browser/ui/settings/password/passwords_table_view_controller_unittest.mm b/ios/chrome/browser/ui/settings/password/passwords_table_view_controller_unittest.mm index 69b7200..ce124d33 100644 --- a/ios/chrome/browser/ui/settings/password/passwords_table_view_controller_unittest.mm +++ b/ios/chrome/browser/ui/settings/password/passwords_table_view_controller_unittest.mm
@@ -21,8 +21,8 @@ #import "ios/chrome/browser/ui/table_view/cells/table_view_detail_text_item.h" #include "ios/chrome/browser/ui/table_view/chrome_table_view_controller_test.h" #import "ios/chrome/browser/ui/util/uikit_ui_util.h" -#import "ios/chrome/common/colors/UIColor+cr_semantic_colors.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/UIColor+cr_semantic_colors.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #include "ios/chrome/grit/ios_strings.h" #include "ios/web/public/test/web_task_environment.h" #include "testing/gmock/include/gmock/gmock.h"
diff --git a/ios/chrome/browser/ui/settings/settings_root_table_view_controller.mm b/ios/chrome/browser/ui/settings/settings_root_table_view_controller.mm index 0489ee6..d118718 100644 --- a/ios/chrome/browser/ui/settings/settings_root_table_view_controller.mm +++ b/ios/chrome/browser/ui/settings/settings_root_table_view_controller.mm
@@ -14,8 +14,8 @@ #import "ios/chrome/browser/ui/table_view/chrome_table_view_styler.h" #include "ios/chrome/browser/ui/ui_feature_flags.h" #import "ios/chrome/browser/ui/util/uikit_ui_util.h" -#import "ios/chrome/common/colors/UIColor+cr_semantic_colors.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/UIColor+cr_semantic_colors.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #include "ios/chrome/grit/ios_strings.h" #include "ui/base/l10n/l10n_util.h"
diff --git a/ios/chrome/browser/ui/settings/settings_table_view_controller.mm b/ios/chrome/browser/ui/settings/settings_table_view_controller.mm index 388cbe4..f6b04df 100644 --- a/ios/chrome/browser/ui/settings/settings_table_view_controller.mm +++ b/ios/chrome/browser/ui/settings/settings_table_view_controller.mm
@@ -71,8 +71,8 @@ #include "ios/chrome/browser/ui/ui_feature_flags.h" #import "ios/chrome/browser/ui/util/uikit_ui_util.h" #include "ios/chrome/browser/voice/speech_input_locale_config.h" -#import "ios/chrome/common/colors/UIColor+cr_semantic_colors.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/UIColor+cr_semantic_colors.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #include "ios/chrome/grit/ios_chromium_strings.h" #include "ios/chrome/grit/ios_strings.h" #import "ios/public/provider/chrome/browser/chrome_browser_provider.h"
diff --git a/ios/chrome/browser/ui/settings/sync/BUILD.gn b/ios/chrome/browser/ui/settings/sync/BUILD.gn index bf8d6498..be7a7c7 100644 --- a/ios/chrome/browser/ui/settings/sync/BUILD.gn +++ b/ios/chrome/browser/ui/settings/sync/BUILD.gn
@@ -44,7 +44,7 @@ "//ios/chrome/browser/ui/table_view/cells", "//ios/chrome/browser/ui/table_view/cells:cells_constants", "//ios/chrome/browser/ui/util", - "//ios/chrome/common/colors", + "//ios/chrome/common/ui/colors", "//ios/public/provider/chrome/browser", "//ios/public/provider/chrome/browser/signin", "//ui/base",
diff --git a/ios/chrome/browser/ui/settings/sync/sync_encryption_table_view_controller.mm b/ios/chrome/browser/ui/settings/sync/sync_encryption_table_view_controller.mm index 4e49e9d..7a932b3 100644 --- a/ios/chrome/browser/ui/settings/sync/sync_encryption_table_view_controller.mm +++ b/ios/chrome/browser/ui/settings/sync/sync_encryption_table_view_controller.mm
@@ -29,7 +29,7 @@ #import "ios/chrome/browser/ui/table_view/table_view_model.h" #include "ios/chrome/browser/ui/ui_feature_flags.h" #import "ios/chrome/browser/ui/util/uikit_ui_util.h" -#import "ios/chrome/common/colors/UIColor+cr_semantic_colors.h" +#import "ios/chrome/common/ui/colors/UIColor+cr_semantic_colors.h" #include "ios/chrome/grit/ios_strings.h" #include "ui/base/l10n/l10n_util_mac.h" #include "url/gurl.h"
diff --git a/ios/chrome/browser/ui/settings/table_cell_catalog_view_controller.mm b/ios/chrome/browser/ui/settings/table_cell_catalog_view_controller.mm index 32f8c89d..36187fb6 100644 --- a/ios/chrome/browser/ui/settings/table_cell_catalog_view_controller.mm +++ b/ios/chrome/browser/ui/settings/table_cell_catalog_view_controller.mm
@@ -27,8 +27,8 @@ #import "ios/chrome/browser/ui/table_view/table_view_model.h" #include "ios/chrome/browser/ui/ui_feature_flags.h" #import "ios/chrome/browser/ui/util/uikit_ui_util.h" -#import "ios/chrome/common/colors/UIColor+cr_semantic_colors.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/UIColor+cr_semantic_colors.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #import "ios/public/provider/chrome/browser/chrome_browser_provider.h" #import "ios/public/provider/chrome/browser/signin/signin_resources_provider.h" #include "url/gurl.h"
diff --git a/ios/chrome/browser/ui/side_swipe/BUILD.gn b/ios/chrome/browser/ui/side_swipe/BUILD.gn index 30d9d39a..eac6515 100644 --- a/ios/chrome/browser/ui/side_swipe/BUILD.gn +++ b/ios/chrome/browser/ui/side_swipe/BUILD.gn
@@ -41,7 +41,7 @@ "//ios/chrome/browser/web:page_placeholder", "//ios/chrome/browser/web_state_list", "//ios/chrome/common", - "//ios/chrome/common/colors", + "//ios/chrome/common/ui/colors", "//ios/chrome/common/ui/util", "//ios/web/common", "//ui/base",
diff --git a/ios/chrome/browser/ui/side_swipe/side_swipe_navigation_view.mm b/ios/chrome/browser/ui/side_swipe/side_swipe_navigation_view.mm index 09c185d8..f9a0431 100644 --- a/ios/chrome/browser/ui/side_swipe/side_swipe_navigation_view.mm +++ b/ios/chrome/browser/ui/side_swipe/side_swipe_navigation_view.mm
@@ -14,8 +14,8 @@ #import "ios/chrome/browser/ui/toolbar/public/toolbar_constants.h" #include "ios/chrome/browser/ui/util/ui_util.h" #import "ios/chrome/browser/ui/util/uikit_ui_util.h" -#import "ios/chrome/common/colors/semantic_color_names.h" #import "ios/chrome/common/material_timing.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #import "ui/gfx/ios/uikit_util.h" #if !defined(__has_feature) || !__has_feature(objc_arc)
diff --git a/ios/chrome/browser/ui/tab_grid/grid/BUILD.gn b/ios/chrome/browser/ui/tab_grid/grid/BUILD.gn index 8fdfc808..4f3bfd49 100644 --- a/ios/chrome/browser/ui/tab_grid/grid/BUILD.gn +++ b/ios/chrome/browser/ui/tab_grid/grid/BUILD.gn
@@ -42,7 +42,7 @@ "//ios/chrome/browser/ui/elements", "//ios/chrome/browser/ui/tab_grid/transitions", "//ios/chrome/browser/ui/util", - "//ios/chrome/common/colors", + "//ios/chrome/common/ui/colors", "//ios/chrome/common/ui/util", "//ui/base", ]
diff --git a/ios/chrome/browser/ui/tab_grid/grid/grid_cell.mm b/ios/chrome/browser/ui/tab_grid/grid/grid_cell.mm index 9855f33..be0f63ca 100644 --- a/ios/chrome/browser/ui/tab_grid/grid/grid_cell.mm +++ b/ios/chrome/browser/ui/tab_grid/grid/grid_cell.mm
@@ -8,7 +8,7 @@ #import "ios/chrome/browser/ui/elements/top_aligned_image_view.h" #import "ios/chrome/browser/ui/tab_grid/grid/grid_constants.h" #import "ios/chrome/browser/ui/util/uikit_ui_util.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #include "ios/chrome/grit/ios_strings.h" #include "ui/base/l10n/l10n_util.h"
diff --git a/ios/chrome/browser/ui/tab_grid/tab_grid_view_controller.mm b/ios/chrome/browser/ui/tab_grid/tab_grid_view_controller.mm index b45cb35..c61e419 100644 --- a/ios/chrome/browser/ui/tab_grid/tab_grid_view_controller.mm +++ b/ios/chrome/browser/ui/tab_grid/tab_grid_view_controller.mm
@@ -29,7 +29,7 @@ #include "ios/chrome/browser/ui/ui_feature_flags.h" #import "ios/chrome/browser/ui/util/rtl_geometry.h" #import "ios/chrome/browser/ui/util/uikit_ui_util.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #import "ios/chrome/common/ui/util/constraints_ui_util.h" #include "ios/chrome/grit/ios_strings.h" #include "ios/web/public/thread/web_task_traits.h"
diff --git a/ios/chrome/browser/ui/table_view/BUILD.gn b/ios/chrome/browser/ui/table_view/BUILD.gn index 29cd15b..1362a376 100644 --- a/ios/chrome/browser/ui/table_view/BUILD.gn +++ b/ios/chrome/browser/ui/table_view/BUILD.gn
@@ -22,7 +22,7 @@ "//base", "//ios/chrome/browser/ui/list_model", "//ios/chrome/browser/ui/material_components", - "//ios/chrome/common/colors", + "//ios/chrome/common/ui/colors", "//ios/third_party/material_components_ios", ] public_deps = [ @@ -49,7 +49,7 @@ ] public_deps = [ "//ios/chrome/browser/ui/util", - "//ios/chrome/common/colors", + "//ios/chrome/common/ui/colors", ] } @@ -85,7 +85,7 @@ "//ios/chrome/browser/ui/colors", "//ios/chrome/browser/ui/material_components", "//ios/chrome/browser/ui/util", - "//ios/chrome/common/colors", + "//ios/chrome/common/ui/colors", "//ios/third_party/material_components_ios", ] }
diff --git a/ios/chrome/browser/ui/table_view/cells/BUILD.gn b/ios/chrome/browser/ui/table_view/cells/BUILD.gn index 7170e98..b51aef8 100644 --- a/ios/chrome/browser/ui/table_view/cells/BUILD.gn +++ b/ios/chrome/browser/ui/table_view/cells/BUILD.gn
@@ -58,7 +58,7 @@ "//ios/chrome/browser/ui/table_view:styler", "//ios/chrome/browser/ui/util", "//ios/chrome/common", - "//ios/chrome/common/colors", + "//ios/chrome/common/ui/colors", "//ios/chrome/common/ui/favicon", "//ios/chrome/common/ui/util", "//ios/third_party/material_components_ios", @@ -99,7 +99,7 @@ ":cells_constants", "//base", "//ios/chrome/browser/ui/table_view:styler", - "//ios/chrome/common/colors", + "//ios/chrome/common/ui/colors", "//net:net", "//testing/gtest", "//third_party/ocmock:ocmock",
diff --git a/ios/chrome/browser/ui/table_view/cells/table_view_activity_indicator_header_footer_item.mm b/ios/chrome/browser/ui/table_view/cells/table_view_activity_indicator_header_footer_item.mm index 6bf3fdfe..27904bd0 100644 --- a/ios/chrome/browser/ui/table_view/cells/table_view_activity_indicator_header_footer_item.mm +++ b/ios/chrome/browser/ui/table_view/cells/table_view_activity_indicator_header_footer_item.mm
@@ -9,7 +9,7 @@ #import "ios/chrome/browser/ui/table_view/cells/table_view_cells_constants.h" #import "ios/chrome/browser/ui/table_view/chrome_table_view_styler.h" #import "ios/chrome/browser/ui/util/uikit_ui_util.h" -#import "ios/chrome/common/colors/UIColor+cr_semantic_colors.h" +#import "ios/chrome/common/ui/colors/UIColor+cr_semantic_colors.h" #import "ios/third_party/material_components_ios/src/components/ActivityIndicator/src/MaterialActivityIndicator.h" #if !defined(__has_feature) || !__has_feature(objc_arc)
diff --git a/ios/chrome/browser/ui/table_view/cells/table_view_cell.mm b/ios/chrome/browser/ui/table_view/cells/table_view_cell.mm index 32fa9c4..6ea0eea 100644 --- a/ios/chrome/browser/ui/table_view/cells/table_view_cell.mm +++ b/ios/chrome/browser/ui/table_view/cells/table_view_cell.mm
@@ -7,7 +7,7 @@ #import "ios/chrome/browser/ui/table_view/cells/table_view_cells_constants.h" #import "ios/chrome/browser/ui/util/ui_util.h" #import "ios/chrome/browser/ui/util/uikit_ui_util.h" -#import "ios/chrome/common/colors/UIColor+cr_semantic_colors.h" +#import "ios/chrome/common/ui/colors/UIColor+cr_semantic_colors.h" #if !defined(__has_feature) || !__has_feature(objc_arc) #error "This file requires ARC support."
diff --git a/ios/chrome/browser/ui/table_view/cells/table_view_detail_icon_item.mm b/ios/chrome/browser/ui/table_view/cells/table_view_detail_icon_item.mm index eaf857b..cc2adcf 100644 --- a/ios/chrome/browser/ui/table_view/cells/table_view_detail_icon_item.mm +++ b/ios/chrome/browser/ui/table_view/cells/table_view_detail_icon_item.mm
@@ -10,7 +10,7 @@ #import "ios/chrome/browser/ui/table_view/cells/table_view_cells_constants.h" #import "ios/chrome/browser/ui/table_view/chrome_table_view_styler.h" #import "ios/chrome/browser/ui/util/uikit_ui_util.h" -#import "ios/chrome/common/colors/UIColor+cr_semantic_colors.h" +#import "ios/chrome/common/ui/colors/UIColor+cr_semantic_colors.h" #import "ios/chrome/common/ui/util/constraints_ui_util.h" #if !defined(__has_feature) || !__has_feature(objc_arc)
diff --git a/ios/chrome/browser/ui/table_view/cells/table_view_detail_text_item.mm b/ios/chrome/browser/ui/table_view/cells/table_view_detail_text_item.mm index cb1d2fd5..c457b60f 100644 --- a/ios/chrome/browser/ui/table_view/cells/table_view_detail_text_item.mm +++ b/ios/chrome/browser/ui/table_view/cells/table_view_detail_text_item.mm
@@ -7,8 +7,8 @@ #import "ios/chrome/browser/ui/table_view/cells/table_view_cells_constants.h" #import "ios/chrome/browser/ui/table_view/chrome_table_view_styler.h" #import "ios/chrome/browser/ui/util/uikit_ui_util.h" -#import "ios/chrome/common/colors/UIColor+cr_semantic_colors.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/UIColor+cr_semantic_colors.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #import "ios/chrome/common/ui/util/constraints_ui_util.h" #if !defined(__has_feature) || !__has_feature(objc_arc)
diff --git a/ios/chrome/browser/ui/table_view/cells/table_view_detail_text_item_unittest.mm b/ios/chrome/browser/ui/table_view/cells/table_view_detail_text_item_unittest.mm index 30adfa2..17ed8a9d 100644 --- a/ios/chrome/browser/ui/table_view/cells/table_view_detail_text_item_unittest.mm +++ b/ios/chrome/browser/ui/table_view/cells/table_view_detail_text_item_unittest.mm
@@ -8,7 +8,7 @@ #import "ios/chrome/browser/ui/table_view/cells/table_view_cells_constants.h" #import "ios/chrome/browser/ui/table_view/chrome_table_view_styler.h" #import "ios/chrome/browser/ui/util/uikit_ui_util.h" -#import "ios/chrome/common/colors/UIColor+cr_semantic_colors.h" +#import "ios/chrome/common/ui/colors/UIColor+cr_semantic_colors.h" #include "testing/gtest/include/gtest/gtest.h" #include "testing/gtest_mac.h" #include "testing/platform_test.h"
diff --git a/ios/chrome/browser/ui/table_view/cells/table_view_disclosure_header_footer_item.mm b/ios/chrome/browser/ui/table_view/cells/table_view_disclosure_header_footer_item.mm index 4dd91b2..f1f83111 100644 --- a/ios/chrome/browser/ui/table_view/cells/table_view_disclosure_header_footer_item.mm +++ b/ios/chrome/browser/ui/table_view/cells/table_view_disclosure_header_footer_item.mm
@@ -10,7 +10,7 @@ #import "ios/chrome/browser/ui/table_view/chrome_table_view_styler.h" #import "ios/chrome/browser/ui/util/rtl_geometry.h" #import "ios/chrome/browser/ui/util/uikit_ui_util.h" -#import "ios/chrome/common/colors/UIColor+cr_semantic_colors.h" +#import "ios/chrome/common/ui/colors/UIColor+cr_semantic_colors.h" #include "ios/chrome/grit/ios_strings.h" #include "ui/base/l10n/l10n_util_mac.h"
diff --git a/ios/chrome/browser/ui/table_view/cells/table_view_image_item.mm b/ios/chrome/browser/ui/table_view/cells/table_view_image_item.mm index 0b708894..84b10a8 100644 --- a/ios/chrome/browser/ui/table_view/cells/table_view_image_item.mm +++ b/ios/chrome/browser/ui/table_view/cells/table_view_image_item.mm
@@ -9,7 +9,7 @@ #import "ios/chrome/browser/ui/table_view/cells/table_view_cells_constants.h" #import "ios/chrome/browser/ui/table_view/chrome_table_view_styler.h" #import "ios/chrome/browser/ui/util/uikit_ui_util.h" -#import "ios/chrome/common/colors/UIColor+cr_semantic_colors.h" +#import "ios/chrome/common/ui/colors/UIColor+cr_semantic_colors.h" #if !defined(__has_feature) || !__has_feature(objc_arc) #error "This file requires ARC support."
diff --git a/ios/chrome/browser/ui/table_view/cells/table_view_link_header_footer_item.mm b/ios/chrome/browser/ui/table_view/cells/table_view_link_header_footer_item.mm index bb47adb9..063fa13 100644 --- a/ios/chrome/browser/ui/table_view/cells/table_view_link_header_footer_item.mm +++ b/ios/chrome/browser/ui/table_view/cells/table_view_link_header_footer_item.mm
@@ -6,9 +6,9 @@ #import "ios/chrome/browser/ui/table_view/cells/table_view_cells_constants.h" #import "ios/chrome/browser/ui/util/uikit_ui_util.h" -#import "ios/chrome/common/colors/UIColor+cr_semantic_colors.h" -#import "ios/chrome/common/colors/semantic_color_names.h" #import "ios/chrome/common/string_util.h" +#import "ios/chrome/common/ui/colors/UIColor+cr_semantic_colors.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #import "net/base/mac/url_conversions.h" #if !defined(__has_feature) || !__has_feature(objc_arc)
diff --git a/ios/chrome/browser/ui/table_view/cells/table_view_multi_detail_text_item.mm b/ios/chrome/browser/ui/table_view/cells/table_view_multi_detail_text_item.mm index b746d8f2..a7e91fd 100644 --- a/ios/chrome/browser/ui/table_view/cells/table_view_multi_detail_text_item.mm +++ b/ios/chrome/browser/ui/table_view/cells/table_view_multi_detail_text_item.mm
@@ -6,7 +6,7 @@ #import "ios/chrome/browser/ui/table_view/cells/table_view_cells_constants.h" #import "ios/chrome/browser/ui/util/uikit_ui_util.h" -#import "ios/chrome/common/colors/UIColor+cr_semantic_colors.h" +#import "ios/chrome/common/ui/colors/UIColor+cr_semantic_colors.h" #import "ios/chrome/common/ui/util/constraints_ui_util.h" #if !defined(__has_feature) || !__has_feature(objc_arc)
diff --git a/ios/chrome/browser/ui/table_view/cells/table_view_text_button_item.mm b/ios/chrome/browser/ui/table_view/cells/table_view_text_button_item.mm index 136bb95..bc850132 100644 --- a/ios/chrome/browser/ui/table_view/cells/table_view_text_button_item.mm +++ b/ios/chrome/browser/ui/table_view/cells/table_view_text_button_item.mm
@@ -8,8 +8,8 @@ #import "ios/chrome/browser/ui/table_view/cells/table_view_cells_constants.h" #import "ios/chrome/browser/ui/table_view/chrome_table_view_styler.h" #import "ios/chrome/browser/ui/util/uikit_ui_util.h" -#import "ios/chrome/common/colors/UIColor+cr_semantic_colors.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/UIColor+cr_semantic_colors.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #if !defined(__has_feature) || !__has_feature(objc_arc) #error "This file requires ARC support."
diff --git a/ios/chrome/browser/ui/table_view/cells/table_view_text_edit_item.mm b/ios/chrome/browser/ui/table_view/cells/table_view_text_edit_item.mm index 66247ce..1906880 100644 --- a/ios/chrome/browser/ui/table_view/cells/table_view_text_edit_item.mm +++ b/ios/chrome/browser/ui/table_view/cells/table_view_text_edit_item.mm
@@ -11,8 +11,8 @@ #import "ios/chrome/browser/ui/table_view/chrome_table_view_styler.h" #import "ios/chrome/browser/ui/util/rtl_geometry.h" #import "ios/chrome/browser/ui/util/uikit_ui_util.h" -#import "ios/chrome/common/colors/UIColor+cr_semantic_colors.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/UIColor+cr_semantic_colors.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #import "ios/chrome/common/ui/util/constraints_ui_util.h" #if !defined(__has_feature) || !__has_feature(objc_arc)
diff --git a/ios/chrome/browser/ui/table_view/cells/table_view_text_item.mm b/ios/chrome/browser/ui/table_view/cells/table_view_text_item.mm index 6b78689b..bd968236 100644 --- a/ios/chrome/browser/ui/table_view/cells/table_view_text_item.mm +++ b/ios/chrome/browser/ui/table_view/cells/table_view_text_item.mm
@@ -8,7 +8,7 @@ #import "ios/chrome/browser/ui/table_view/cells/table_view_cells_constants.h" #import "ios/chrome/browser/ui/table_view/chrome_table_view_styler.h" #import "ios/chrome/browser/ui/util/uikit_ui_util.h" -#import "ios/chrome/common/colors/UIColor+cr_semantic_colors.h" +#import "ios/chrome/common/ui/colors/UIColor+cr_semantic_colors.h" #include "ios/chrome/grit/ios_strings.h" #include "ui/base/l10n/l10n_util_mac.h"
diff --git a/ios/chrome/browser/ui/table_view/cells/table_view_text_item_unittest.mm b/ios/chrome/browser/ui/table_view/cells/table_view_text_item_unittest.mm index 949f1876..23c7524 100644 --- a/ios/chrome/browser/ui/table_view/cells/table_view_text_item_unittest.mm +++ b/ios/chrome/browser/ui/table_view/cells/table_view_text_item_unittest.mm
@@ -8,7 +8,7 @@ #import "ios/chrome/browser/ui/table_view/cells/table_view_cells_constants.h" #import "ios/chrome/browser/ui/table_view/chrome_table_view_styler.h" #import "ios/chrome/browser/ui/util/uikit_ui_util.h" -#import "ios/chrome/common/colors/UIColor+cr_semantic_colors.h" +#import "ios/chrome/common/ui/colors/UIColor+cr_semantic_colors.h" #include "testing/gtest/include/gtest/gtest.h" #include "testing/gtest_mac.h" #include "testing/platform_test.h"
diff --git a/ios/chrome/browser/ui/table_view/cells/table_view_text_link_item.mm b/ios/chrome/browser/ui/table_view/cells/table_view_text_link_item.mm index 67e2b2a..23adc0d 100644 --- a/ios/chrome/browser/ui/table_view/cells/table_view_text_link_item.mm +++ b/ios/chrome/browser/ui/table_view/cells/table_view_text_link_item.mm
@@ -9,9 +9,9 @@ #import "ios/chrome/browser/ui/table_view/chrome_table_view_styler.h" #import "ios/chrome/browser/ui/util/label_link_controller.h" #import "ios/chrome/browser/ui/util/uikit_ui_util.h" -#import "ios/chrome/common/colors/UIColor+cr_semantic_colors.h" -#import "ios/chrome/common/colors/semantic_color_names.h" #import "ios/chrome/common/string_util.h" +#import "ios/chrome/common/ui/colors/UIColor+cr_semantic_colors.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #include "url/gurl.h" #if !defined(__has_feature) || !__has_feature(objc_arc)
diff --git a/ios/chrome/browser/ui/table_view/cells/table_view_url_item.mm b/ios/chrome/browser/ui/table_view/cells/table_view_url_item.mm index 307e173..76e872b0 100644 --- a/ios/chrome/browser/ui/table_view/cells/table_view_url_item.mm +++ b/ios/chrome/browser/ui/table_view/cells/table_view_url_item.mm
@@ -11,8 +11,8 @@ #import "ios/chrome/browser/ui/table_view/chrome_table_view_styler.h" #include "ios/chrome/browser/ui/util/ui_util.h" #import "ios/chrome/browser/ui/util/uikit_ui_util.h" -#import "ios/chrome/common/colors/UIColor+cr_semantic_colors.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/UIColor+cr_semantic_colors.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #import "ios/chrome/common/ui/favicon/favicon_view.h" #import "ios/chrome/common/ui/util/constraints_ui_util.h" #include "url/gurl.h"
diff --git a/ios/chrome/browser/ui/table_view/chrome_table_view_controller.mm b/ios/chrome/browser/ui/table_view/chrome_table_view_controller.mm index 9682a58..db7a88e 100644 --- a/ios/chrome/browser/ui/table_view/chrome_table_view_controller.mm +++ b/ios/chrome/browser/ui/table_view/chrome_table_view_controller.mm
@@ -15,7 +15,7 @@ #import "ios/chrome/browser/ui/table_view/table_view_loading_view.h" #import "ios/chrome/browser/ui/table_view/table_view_model.h" #import "ios/chrome/browser/ui/util/uikit_ui_util.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #if !defined(__has_feature) || !__has_feature(objc_arc) #error "This file requires ARC support."
diff --git a/ios/chrome/browser/ui/table_view/chrome_table_view_styler.mm b/ios/chrome/browser/ui/table_view/chrome_table_view_styler.mm index 20937b4d..dcb83af 100644 --- a/ios/chrome/browser/ui/table_view/chrome_table_view_styler.mm +++ b/ios/chrome/browser/ui/table_view/chrome_table_view_styler.mm
@@ -5,7 +5,7 @@ #import "ios/chrome/browser/ui/table_view/chrome_table_view_styler.h" #import "ios/chrome/browser/ui/util/uikit_ui_util.h" -#import "ios/chrome/common/colors/UIColor+cr_semantic_colors.h" +#import "ios/chrome/common/ui/colors/UIColor+cr_semantic_colors.h" #if !defined(__has_feature) || !__has_feature(objc_arc) #error "This file requires ARC support."
diff --git a/ios/chrome/browser/ui/table_view/table_view_empty_view.mm b/ios/chrome/browser/ui/table_view/table_view_empty_view.mm index 036f4ec..374a937 100644 --- a/ios/chrome/browser/ui/table_view/table_view_empty_view.mm +++ b/ios/chrome/browser/ui/table_view/table_view_empty_view.mm
@@ -5,7 +5,7 @@ #import "ios/chrome/browser/ui/table_view/table_view_empty_view.h" #import "ios/chrome/browser/ui/table_view/table_view_constants.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #if !defined(__has_feature) || !__has_feature(objc_arc) #error "This file requires ARC support."
diff --git a/ios/chrome/browser/ui/table_view/table_view_navigation_controller.mm b/ios/chrome/browser/ui/table_view/table_view_navigation_controller.mm index c23efe2..e148122c 100644 --- a/ios/chrome/browser/ui/table_view/table_view_navigation_controller.mm +++ b/ios/chrome/browser/ui/table_view/table_view_navigation_controller.mm
@@ -7,7 +7,7 @@ #include "base/mac/foundation_util.h" #import "ios/chrome/browser/ui/table_view/chrome_table_view_controller.h" #import "ios/chrome/browser/ui/table_view/chrome_table_view_styler.h" -#import "ios/chrome/common/colors/UIColor+cr_semantic_colors.h" +#import "ios/chrome/common/ui/colors/UIColor+cr_semantic_colors.h" #if !defined(__has_feature) || !__has_feature(objc_arc) #error "This file requires ARC support."
diff --git a/ios/chrome/browser/ui/tabs/BUILD.gn b/ios/chrome/browser/ui/tabs/BUILD.gn index a19066e7..883280b 100644 --- a/ios/chrome/browser/ui/tabs/BUILD.gn +++ b/ios/chrome/browser/ui/tabs/BUILD.gn
@@ -61,7 +61,7 @@ "//ios/chrome/browser/web_state_list", "//ios/chrome/common", "//ios/chrome/common:common_extension", - "//ios/chrome/common/colors", + "//ios/chrome/common/ui/colors", "//ios/chrome/common/ui/util", "//ios/third_party/material_components_ios", "//ios/web",
diff --git a/ios/chrome/browser/ui/tabs/background_tab_animation_view.mm b/ios/chrome/browser/ui/tabs/background_tab_animation_view.mm index 1b7982b6a..2705d754 100644 --- a/ios/chrome/browser/ui/tabs/background_tab_animation_view.mm +++ b/ios/chrome/browser/ui/tabs/background_tab_animation_view.mm
@@ -9,9 +9,9 @@ #import "ios/chrome/browser/ui/util/named_guide.h" #import "ios/chrome/browser/ui/util/named_guide_util.h" #import "ios/chrome/browser/ui/util/uikit_ui_util.h" -#import "ios/chrome/common/colors/dynamic_color_util.h" -#import "ios/chrome/common/colors/semantic_color_names.h" #import "ios/chrome/common/material_timing.h" +#import "ios/chrome/common/ui/colors/dynamic_color_util.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #import "ios/chrome/common/ui/util/constraints_ui_util.h" #if !defined(__has_feature) || !__has_feature(objc_arc)
diff --git a/ios/chrome/browser/ui/tabs/tab_strip_controller.mm b/ios/chrome/browser/ui/tabs/tab_strip_controller.mm index caf337c6..24d6a249 100644 --- a/ios/chrome/browser/ui/tabs/tab_strip_controller.mm +++ b/ios/chrome/browser/ui/tabs/tab_strip_controller.mm
@@ -48,7 +48,7 @@ #import "ios/chrome/browser/web_state_list/web_state_list.h" #import "ios/chrome/browser/web_state_list/web_state_list_favicon_driver_observer.h" #import "ios/chrome/browser/web_state_list/web_state_list_observer_bridge.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #include "ios/chrome/grit/ios_strings.h" #import "ios/web/public/navigation/navigation_manager.h" #import "ios/web/public/web_state.h"
diff --git a/ios/chrome/browser/ui/tabs/tab_view.mm b/ios/chrome/browser/ui/tabs/tab_view.mm index 4721b38..dc594e57 100644 --- a/ios/chrome/browser/ui/tabs/tab_view.mm +++ b/ios/chrome/browser/ui/tabs/tab_view.mm
@@ -18,8 +18,8 @@ #import "ios/chrome/browser/ui/image_util/image_util.h" #include "ios/chrome/browser/ui/util/rtl_geometry.h" #import "ios/chrome/browser/ui/util/uikit_ui_util.h" -#import "ios/chrome/common/colors/semantic_color_names.h" #import "ios/chrome/common/highlight_button.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #import "ios/chrome/common/ui/util/constraints_ui_util.h" #include "ios/chrome/grit/ios_strings.h" #import "ios/third_party/material_components_ios/src/components/ActivityIndicator/src/MaterialActivityIndicator.h"
diff --git a/ios/chrome/browser/ui/text_zoom/BUILD.gn b/ios/chrome/browser/ui/text_zoom/BUILD.gn index 845b8e0..0b65da261 100644 --- a/ios/chrome/browser/ui/text_zoom/BUILD.gn +++ b/ios/chrome/browser/ui/text_zoom/BUILD.gn
@@ -20,7 +20,7 @@ "//ios/chrome/browser/ui/toolbar/public:constants", "//ios/chrome/browser/web", "//ios/chrome/browser/web_state_list", - "//ios/chrome/common/colors", + "//ios/chrome/common/ui/colors", ] configs += [ "//build/config/compiler:enable_arc" ] } @@ -39,7 +39,7 @@ "//ios/chrome/app/strings:ios_strings", "//ios/chrome/browser/ui/commands", "//ios/chrome/browser/ui/util", - "//ios/chrome/common/colors", + "//ios/chrome/common/ui/colors", "//ui/base", ] configs += [ "//build/config/compiler:enable_arc" ]
diff --git a/ios/chrome/browser/ui/text_zoom/text_zoom_coordinator.mm b/ios/chrome/browser/ui/text_zoom/text_zoom_coordinator.mm index 4ed0069..f9d395d30 100644 --- a/ios/chrome/browser/ui/text_zoom/text_zoom_coordinator.mm +++ b/ios/chrome/browser/ui/text_zoom/text_zoom_coordinator.mm
@@ -14,8 +14,8 @@ #import "ios/chrome/browser/ui/toolbar/accessory/toolbar_accessory_coordinator_delegate.h" #import "ios/chrome/browser/ui/toolbar/accessory/toolbar_accessory_presenter.h" #import "ios/chrome/browser/ui/toolbar/public/toolbar_constants.h" -#import "ios/chrome/common/colors/dynamic_color_util.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/dynamic_color_util.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #if !defined(__has_feature) || !__has_feature(objc_arc) #error "This file requires ARC support."
diff --git a/ios/chrome/browser/ui/text_zoom/text_zoom_view_controller.mm b/ios/chrome/browser/ui/text_zoom/text_zoom_view_controller.mm index 1d7d5f7..3a63be2 100644 --- a/ios/chrome/browser/ui/text_zoom/text_zoom_view_controller.mm +++ b/ios/chrome/browser/ui/text_zoom/text_zoom_view_controller.mm
@@ -9,8 +9,8 @@ #import "ios/chrome/browser/ui/commands/text_zoom_commands.h" #import "ios/chrome/browser/ui/text_zoom/text_zoom_constants.h" #import "ios/chrome/browser/ui/util/uikit_ui_util.h" -#import "ios/chrome/common/colors/dynamic_color_util.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/dynamic_color_util.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #include "ios/chrome/grit/ios_strings.h" #include "ui/base/l10n/l10n_util_mac.h"
diff --git a/ios/chrome/browser/ui/toolbar/BUILD.gn b/ios/chrome/browser/ui/toolbar/BUILD.gn index 39774b94..7a33986 100644 --- a/ios/chrome/browser/ui/toolbar/BUILD.gn +++ b/ios/chrome/browser/ui/toolbar/BUILD.gn
@@ -99,7 +99,7 @@ "//ios/chrome/browser/ui/util", "//ios/chrome/browser/ui/util", "//ios/chrome/common:timing", - "//ios/chrome/common/colors", + "//ios/chrome/common/ui/colors", "//ios/chrome/common/ui/util", "//ios/third_party/material_components_ios", "//ui/base",
diff --git a/ios/chrome/browser/ui/toolbar/accessory/BUILD.gn b/ios/chrome/browser/ui/toolbar/accessory/BUILD.gn index afd6ce0..c1b1258c 100644 --- a/ios/chrome/browser/ui/toolbar/accessory/BUILD.gn +++ b/ios/chrome/browser/ui/toolbar/accessory/BUILD.gn
@@ -17,7 +17,7 @@ "//ios/chrome/browser/ui/presenters", "//ios/chrome/browser/ui/toolbar/public:constants", "//ios/chrome/browser/ui/util", - "//ios/chrome/common/colors", + "//ios/chrome/common/ui/colors", "//ios/chrome/common/ui/util", ]
diff --git a/ios/chrome/browser/ui/toolbar/accessory/toolbar_accessory_coordinator_delegate.h b/ios/chrome/browser/ui/toolbar/accessory/toolbar_accessory_coordinator_delegate.h index 57c3c73..51e9365f 100644 --- a/ios/chrome/browser/ui/toolbar/accessory/toolbar_accessory_coordinator_delegate.h +++ b/ios/chrome/browser/ui/toolbar/accessory/toolbar_accessory_coordinator_delegate.h
@@ -9,9 +9,6 @@ @protocol ToolbarAccessoryCoordinatorDelegate -- (void)setHeadersForToolbarAccessoryCoordinator: - (ChromeCoordinator*)toolbarAccessoryCoordinator; - - (void)toolbarAccessoryCoordinatorDidDismissUI: (ChromeCoordinator*)toolbarAccessoryCoordinator;
diff --git a/ios/chrome/browser/ui/toolbar/accessory/toolbar_accessory_presenter.mm b/ios/chrome/browser/ui/toolbar/accessory/toolbar_accessory_presenter.mm index d1fc608..25cf8f8 100644 --- a/ios/chrome/browser/ui/toolbar/accessory/toolbar_accessory_presenter.mm +++ b/ios/chrome/browser/ui/toolbar/accessory/toolbar_accessory_presenter.mm
@@ -13,8 +13,8 @@ #import "ios/chrome/browser/ui/util/layout_guide_names.h" #import "ios/chrome/browser/ui/util/named_guide.h" #import "ios/chrome/browser/ui/util/uikit_ui_util.h" -#import "ios/chrome/common/colors/dynamic_color_util.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/dynamic_color_util.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #import "ios/chrome/common/ui/util/constraints_ui_util.h" #if !defined(__has_feature) || !__has_feature(objc_arc) @@ -44,6 +44,10 @@ // everything around the safe area. @property(nonatomic, strong, readwrite) UIView* backgroundView; +// Layout guide to center the presented view below the safe area layout guide on +// iPhone. +@property(nonatomic, strong) UILayoutGuide* centeringGuide; + // A constraint that constrains any views to their pre-animation positions. // It should be deactiviated during the presentation animation and replaced with // a constraint that sets the views to their final position. @@ -122,13 +126,12 @@ [weakSelf.presentedViewController.view removeFromSuperview]; [weakSelf.presentedViewController removeFromParentViewController]; [weakSelf.backgroundView removeFromSuperview]; + weakSelf.backgroundView = nil; + weakSelf.presenting = NO; if ([weakSelf.delegate respondsToSelector:@selector(containedPresenterDidDismiss:)]) { [weakSelf.delegate containedPresenterDidDismiss:weakSelf]; } - weakSelf.backgroundView = nil; - weakSelf.presenting = NO; - [weakSelf.delegate containedPresenterDidDismiss:weakSelf]; }; if (animated) { void (^animation)(); @@ -164,15 +167,23 @@ self.animationConstraint = [self.backgroundView.bottomAnchor constraintEqualToAnchor:self.baseViewController.view.topAnchor]; + // Use this constraint to force the greater than or equal constraint below to + // be as small as possible. + NSLayoutConstraint* centeringGuideTopConstraint = + [self.centeringGuide.topAnchor + constraintEqualToAnchor:self.backgroundView.topAnchor]; + centeringGuideTopConstraint.priority = UILayoutPriorityDefaultLow; + [NSLayoutConstraint activateConstraints:@[ [self.backgroundView.leadingAnchor constraintEqualToAnchor:self.baseViewController.view.leadingAnchor], [self.backgroundView.trailingAnchor constraintEqualToAnchor:self.baseViewController.view.trailingAnchor], - [self.presentedViewController.view.topAnchor + [self.centeringGuide.topAnchor constraintGreaterThanOrEqualToAnchor:self.backgroundView .safeAreaLayoutGuide .topAnchor], + centeringGuideTopConstraint, self.animationConstraint, ]]; } @@ -233,6 +244,15 @@ [self.backgroundView.topAnchor constraintEqualToAnchor:self.baseViewController.view.topAnchor] .active = YES; + + // Make sure the background doesn't shrink when the toolbar goes to fullscreen + // mode. + UILayoutGuide* toolbarLayoutGuide = + [NamedGuide guideWithName:kPrimaryToolbarGuide + view:self.baseViewController.view]; + [self.backgroundView.bottomAnchor + constraintGreaterThanOrEqualToAnchor:toolbarLayoutGuide.bottomAnchor] + .active = YES; } // Sets up the constraints on iPhone such that the view is ready to be animated @@ -265,15 +285,27 @@ [backgroundView addSubview:self.presentedViewController.view]; + self.centeringGuide = [[UILayoutGuide alloc] init]; + [backgroundView addLayoutGuide:self.centeringGuide]; + [NSLayoutConstraint activateConstraints:@[ - [self.presentedViewController.view.trailingAnchor + [self.centeringGuide.trailingAnchor constraintEqualToAnchor:backgroundView.trailingAnchor], - [self.presentedViewController.view.leadingAnchor + [self.centeringGuide.leadingAnchor constraintEqualToAnchor:backgroundView.leadingAnchor], + [self.centeringGuide.bottomAnchor + constraintEqualToAnchor:backgroundView.bottomAnchor], + [self.centeringGuide.heightAnchor + constraintGreaterThanOrEqualToAnchor:self.presentedViewController.view + .heightAnchor], [self.presentedViewController.view.heightAnchor constraintEqualToConstant:kPrimaryToolbarHeight], - [self.presentedViewController.view.bottomAnchor - constraintEqualToAnchor:backgroundView.bottomAnchor], + [self.presentedViewController.view.leadingAnchor + constraintEqualToAnchor:self.centeringGuide.leadingAnchor], + [self.presentedViewController.view.trailingAnchor + constraintEqualToAnchor:self.centeringGuide.trailingAnchor], + [self.presentedViewController.view.centerYAnchor + constraintEqualToAnchor:self.centeringGuide.centerYAnchor], ]]; return backgroundView;
diff --git a/ios/chrome/browser/ui/toolbar/buttons/BUILD.gn b/ios/chrome/browser/ui/toolbar/buttons/BUILD.gn index 4b5387d..d0abcf64 100644 --- a/ios/chrome/browser/ui/toolbar/buttons/BUILD.gn +++ b/ios/chrome/browser/ui/toolbar/buttons/BUILD.gn
@@ -52,7 +52,7 @@ "//ios/chrome/browser/ui/toolbar/public:feature_flags", "//ios/chrome/browser/ui/util", "//ios/chrome/browser/web_state_list", - "//ios/chrome/common/colors", + "//ios/chrome/common/ui/colors", "//ios/chrome/common/ui/util", "//ios/public/provider/chrome/browser", "//ios/public/provider/chrome/browser/images",
diff --git a/ios/chrome/browser/ui/toolbar/buttons/toolbar_button_factory.mm b/ios/chrome/browser/ui/toolbar/buttons/toolbar_button_factory.mm index 88bbc92..7c89a59 100644 --- a/ios/chrome/browser/ui/toolbar/buttons/toolbar_button_factory.mm +++ b/ios/chrome/browser/ui/toolbar/buttons/toolbar_button_factory.mm
@@ -16,8 +16,8 @@ #import "ios/chrome/browser/ui/toolbar/public/toolbar_constants.h" #import "ios/chrome/browser/ui/util/rtl_geometry.h" #import "ios/chrome/browser/ui/util/uikit_ui_util.h" -#import "ios/chrome/common/colors/dynamic_color_util.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/dynamic_color_util.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #import "ios/chrome/common/ui/util/constraints_ui_util.h" #include "ios/chrome/grit/ios_strings.h" #include "ios/chrome/grit/ios_theme_resources.h"
diff --git a/ios/chrome/browser/ui/toolbar/buttons/toolbar_configuration.mm b/ios/chrome/browser/ui/toolbar/buttons/toolbar_configuration.mm index 84e2fa9..46e28318 100644 --- a/ios/chrome/browser/ui/toolbar/buttons/toolbar_configuration.mm +++ b/ios/chrome/browser/ui/toolbar/buttons/toolbar_configuration.mm
@@ -9,8 +9,8 @@ #import "ios/chrome/browser/ui/toolbar/public/toolbar_constants.h" #include "ios/chrome/browser/ui/util/ui_util.h" #import "ios/chrome/browser/ui/util/uikit_ui_util.h" -#import "ios/chrome/common/colors/dynamic_color_util.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/dynamic_color_util.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #if !defined(__has_feature) || !__has_feature(objc_arc) #error "This file requires ARC support."
diff --git a/ios/chrome/browser/ui/toolbar/keyboard_assist/BUILD.gn b/ios/chrome/browser/ui/toolbar/keyboard_assist/BUILD.gn index fcb729a..501df904 100644 --- a/ios/chrome/browser/ui/toolbar/keyboard_assist/BUILD.gn +++ b/ios/chrome/browser/ui/toolbar/keyboard_assist/BUILD.gn
@@ -31,7 +31,7 @@ "//ios/chrome/browser/ui/toolbar/public", "//ios/chrome/browser/ui/util/", "//ios/chrome/browser/voice", - "//ios/chrome/common/colors", + "//ios/chrome/common/ui/colors", "//ios/chrome/common/ui/util", "//ios/public/provider/chrome/browser", "//ios/public/provider/chrome/browser/voice",
diff --git a/ios/chrome/browser/ui/toolbar/keyboard_assist/toolbar_keyboard_accessory_view.mm b/ios/chrome/browser/ui/toolbar/keyboard_assist/toolbar_keyboard_accessory_view.mm index de0c3a5..296b74f 100644 --- a/ios/chrome/browser/ui/toolbar/keyboard_assist/toolbar_keyboard_accessory_view.mm +++ b/ios/chrome/browser/ui/toolbar/keyboard_assist/toolbar_keyboard_accessory_view.mm
@@ -10,7 +10,7 @@ #import "ios/chrome/browser/ui/toolbar/keyboard_assist/toolbar_assistive_keyboard_views_utils.h" #include "ios/chrome/browser/ui/util/rtl_geometry.h" #include "ios/chrome/browser/ui/util/ui_util.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #import "ios/chrome/common/ui/util/constraints_ui_util.h" #if !defined(__has_feature) || !__has_feature(objc_arc)
diff --git a/ios/chrome/browser/ui/toolbar/primary_toolbar_view.mm b/ios/chrome/browser/ui/toolbar/primary_toolbar_view.mm index ccd420b..3f9c6426 100644 --- a/ios/chrome/browser/ui/toolbar/primary_toolbar_view.mm +++ b/ios/chrome/browser/ui/toolbar/primary_toolbar_view.mm
@@ -17,7 +17,7 @@ #import "ios/chrome/browser/ui/toolbar/toolbar_progress_bar.h" #import "ios/chrome/browser/ui/util/dynamic_type_util.h" #import "ios/chrome/browser/ui/util/uikit_ui_util.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #import "ios/chrome/common/ui/util/constraints_ui_util.h" #include "ui/gfx/ios/uikit_util.h"
diff --git a/ios/chrome/browser/ui/toolbar/secondary_toolbar_view.mm b/ios/chrome/browser/ui/toolbar/secondary_toolbar_view.mm index 92597573..6e25db01 100644 --- a/ios/chrome/browser/ui/toolbar/secondary_toolbar_view.mm +++ b/ios/chrome/browser/ui/toolbar/secondary_toolbar_view.mm
@@ -14,7 +14,7 @@ #import "ios/chrome/browser/ui/toolbar_container/toolbar_collapsing.h" #import "ios/chrome/browser/ui/util/named_guide.h" #include "ios/chrome/browser/ui/util/rtl_geometry.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #import "ios/chrome/common/ui/util/constraints_ui_util.h" #include "ui/gfx/ios/uikit_util.h"
diff --git a/ios/chrome/browser/ui/translate/BUILD.gn b/ios/chrome/browser/ui/translate/BUILD.gn index 3034135..681b842 100644 --- a/ios/chrome/browser/ui/translate/BUILD.gn +++ b/ios/chrome/browser/ui/translate/BUILD.gn
@@ -76,7 +76,7 @@ "//ios/chrome/browser/ui/translate/resources:translate_options", "//ios/chrome/browser/ui/util", "//ios/chrome/common:common_extension", - "//ios/chrome/common/colors:colors", + "//ios/chrome/common/ui/colors:colors", "//ios/chrome/common/ui/util", "//ios/third_party/material_components_ios", "//ui/base",
diff --git a/ios/chrome/browser/ui/translate/cells/translate_popup_menu_item.mm b/ios/chrome/browser/ui/translate/cells/translate_popup_menu_item.mm index 9e5cc68..a0753bc 100644 --- a/ios/chrome/browser/ui/translate/cells/translate_popup_menu_item.mm +++ b/ios/chrome/browser/ui/translate/cells/translate_popup_menu_item.mm
@@ -6,7 +6,7 @@ #import "ios/chrome/browser/ui/table_view/chrome_table_view_styler.h" #import "ios/chrome/browser/ui/util/uikit_ui_util.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #import "ios/chrome/common/ui/util/constraints_ui_util.h" #if !defined(__has_feature) || !__has_feature(objc_arc)
diff --git a/ios/chrome/browser/ui/translate/translate_infobar_language_tab_view.mm b/ios/chrome/browser/ui/translate/translate_infobar_language_tab_view.mm index 6d2933b..38ed5cc 100644 --- a/ios/chrome/browser/ui/translate/translate_infobar_language_tab_view.mm +++ b/ios/chrome/browser/ui/translate/translate_infobar_language_tab_view.mm
@@ -9,8 +9,8 @@ #import "ios/chrome/browser/ui/translate/translate_infobar_language_tab_strip_view.h" #import "ios/chrome/browser/ui/translate/translate_infobar_language_tab_view_delegate.h" #import "ios/chrome/browser/ui/util/uikit_ui_util.h" -#import "ios/chrome/common/colors/semantic_color_names.h" #import "ios/chrome/common/highlight_button.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #import "ios/chrome/common/ui/util/constraints_ui_util.h" #import "ios/third_party/material_components_ios/src/components/ActivityIndicator/src/MaterialActivityIndicator.h"
diff --git a/ios/chrome/browser/ui/translate/translate_infobar_view.mm b/ios/chrome/browser/ui/translate/translate_infobar_view.mm index c91e9fcc..b21d95a 100644 --- a/ios/chrome/browser/ui/translate/translate_infobar_view.mm +++ b/ios/chrome/browser/ui/translate/translate_infobar_view.mm
@@ -21,7 +21,7 @@ #import "ios/chrome/browser/ui/util/layout_guide_names.h" #import "ios/chrome/browser/ui/util/named_guide.h" #import "ios/chrome/browser/ui/util/uikit_ui_util.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #import "ios/chrome/common/ui/util/constraints_ui_util.h" #include "ios/chrome/grit/ios_strings.h" #include "ui/base/l10n/l10n_util.h"
diff --git a/ios/chrome/common/colors/BUILD.gn b/ios/chrome/common/colors/BUILD.gn index eb5dfee8..0aaafaf 100644 --- a/ios/chrome/common/colors/BUILD.gn +++ b/ios/chrome/common/colors/BUILD.gn
@@ -2,19 +2,8 @@ # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. -import("//build/config/chrome_build.gni") - source_set("colors") { - sources = [ - "UIColor+cr_dynamic_colors.h", - "UIColor+cr_dynamic_colors.mm", - "UIColor+cr_semantic_colors.h", - "UIColor+cr_semantic_colors.mm", - "dynamic_color_util.h", - "dynamic_color_util.mm", - "semantic_color_names.h", - "semantic_color_names.mm", - ] - deps = [ "resources" ] configs += [ "//build/config/compiler:enable_arc" ] + sources = [ "semantic_color_names.h" ] + deps = [ "//ios/chrome/common/ui/colors" ] }
diff --git a/ios/chrome/common/colors/semantic_color_names.h b/ios/chrome/common/colors/semantic_color_names.h index c09eab1..f02faac 100644 --- a/ios/chrome/common/colors/semantic_color_names.h +++ b/ios/chrome/common/colors/semantic_color_names.h
@@ -1,82 +1,6 @@ -// Copyright 2019 The Chromium Authors. All rights reserved. +// Copyright 2020 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef IOS_CHROME_COMMON_COLORS_SEMANTIC_COLOR_NAMES_H_ -#define IOS_CHROME_COMMON_COLORS_SEMANTIC_COLOR_NAMES_H_ - -#import <UIKit/UIKit.h> - -// Element Colors - -extern NSString* const kBackgroundColor; -extern NSString* const kCloseButtonColor; -extern NSString* const kDisabledTintColor; -// Background color used in the rounded squares behind favicons. -extern NSString* const kFaviconBackgroundColor; -// Ink color for an MDC button. -extern NSString* const kMDCInkColor; -// Ink color for a secondary style MDC button (button with transparent -// background). -extern NSString* const kMDCSecondaryInkColor; -// Color used to tint placeholder images and icons. -extern NSString* const kPlaceholderImageTintColor; -extern NSString* const kScrimBackgroundColor; -extern NSString* const kSeparatorColor; -extern NSString* const kSolidButtonTextColor; -extern NSString* const kTableViewRowHighlightColor; -extern NSString* const kTextPrimaryColor; -extern NSString* const kTextSecondaryColor; -extern NSString* const kTextfieldBackgroundColor; -extern NSString* const kTextfieldPlaceholderColor; -// Color used for buttons on a toolbar. -extern NSString* const kToolbarButtonColor; -// Color used for a shadow/separator next to a toolbar. -extern NSString* const kToolbarShadowColor; - -// Standard Colors - -// Standard blue color. This is most commonly used for the tint color on -// standard buttons and controls. -extern NSString* const kBlueColor; -// Lighter blue color sometimes used as background for buttons or views where -// the main content is |kBlueColor| (e.g the background of the collections -// shortcuts on the NTP). -extern NSString* const kBlueHaloColor; -// Standard green color. -extern NSString* const kGreenColor; -// Standard red color. This is most commonly used for the tint color on -// destructive controls. -extern NSString* const kRedColor; - -// Grey Color Palette. -extern NSString* const kGrey50Color; -extern NSString* const kGrey100Color; -extern NSString* const kGrey200Color; -extern NSString* const kGrey300Color; -extern NSString* const kGrey400Color; -extern NSString* const kGrey500Color; -extern NSString* const kGrey600Color; -extern NSString* const kGrey700Color; -extern NSString* const kGrey800Color; -extern NSString* const kGrey900Color; - -// Temporary colors for iOS 12. Because overridePreferredInterfaceStyle isn't -// available in iOS 12, any views that should always be dark (e.g. incognito) -// need to use colorsets that always use the dark variant. -// TODO(crbug.com/981889): Clean up after iOS 12 support is dropped. - -extern NSString* const kBackgroundDarkColor; -extern NSString* const kCloseButtonDarkColor; -extern NSString* const kTableViewRowHighlightDarkColor; -extern NSString* const kTextPrimaryDarkColor; -extern NSString* const kTextSecondaryDarkColor; -extern NSString* const kTextfieldBackgroundDarkColor; -extern NSString* const kTextfieldPlaceholderDarkColor; -extern NSString* const kToolbarButtonDarkColor; - -extern NSString* const kBlueDarkColor; -extern NSString* const kGreenDarkColor; -extern NSString* const kRedDarkColor; - -#endif // IOS_CHROME_COMMON_COLORS_SEMANTIC_COLOR_NAMES_H_ +// This file is temporal to not break internal. +#import "ios/chrome/common/ui/colors/semantic_color_names.h"
diff --git a/ios/chrome/common/ui/colors/BUILD.gn b/ios/chrome/common/ui/colors/BUILD.gn new file mode 100644 index 0000000..eb5dfee8 --- /dev/null +++ b/ios/chrome/common/ui/colors/BUILD.gn
@@ -0,0 +1,20 @@ +# Copyright 2019 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import("//build/config/chrome_build.gni") + +source_set("colors") { + sources = [ + "UIColor+cr_dynamic_colors.h", + "UIColor+cr_dynamic_colors.mm", + "UIColor+cr_semantic_colors.h", + "UIColor+cr_semantic_colors.mm", + "dynamic_color_util.h", + "dynamic_color_util.mm", + "semantic_color_names.h", + "semantic_color_names.mm", + ] + deps = [ "resources" ] + configs += [ "//build/config/compiler:enable_arc" ] +}
diff --git a/ios/chrome/common/colors/OWNERS b/ios/chrome/common/ui/colors/OWNERS similarity index 100% rename from ios/chrome/common/colors/OWNERS rename to ios/chrome/common/ui/colors/OWNERS
diff --git a/ios/chrome/common/colors/UIColor+cr_dynamic_colors.h b/ios/chrome/common/ui/colors/UIColor+cr_dynamic_colors.h similarity index 75% rename from ios/chrome/common/colors/UIColor+cr_dynamic_colors.h rename to ios/chrome/common/ui/colors/UIColor+cr_dynamic_colors.h index 7cac2ce..443f879 100644 --- a/ios/chrome/common/colors/UIColor+cr_dynamic_colors.h +++ b/ios/chrome/common/ui/colors/UIColor+cr_dynamic_colors.h
@@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef IOS_CHROME_COMMON_COLORS_UICOLOR_CR_DYNAMIC_COLORS_H_ -#define IOS_CHROME_COMMON_COLORS_UICOLOR_CR_DYNAMIC_COLORS_H_ +#ifndef IOS_CHROME_COMMON_UI_COLORS_UICOLOR_CR_DYNAMIC_COLORS_H_ +#define IOS_CHROME_COMMON_UI_COLORS_UICOLOR_CR_DYNAMIC_COLORS_H_ #import <UIKit/UIKit.h> @@ -18,4 +18,4 @@ @end -#endif // IOS_CHROME_COMMON_COLORS_UICOLOR_CR_DYNAMIC_COLORS_H_ +#endif // IOS_CHROME_COMMON_UI_COLORS_UICOLOR_CR_DYNAMIC_COLORS_H_
diff --git a/ios/chrome/common/colors/UIColor+cr_dynamic_colors.mm b/ios/chrome/common/ui/colors/UIColor+cr_dynamic_colors.mm similarity index 88% rename from ios/chrome/common/colors/UIColor+cr_dynamic_colors.mm rename to ios/chrome/common/ui/colors/UIColor+cr_dynamic_colors.mm index f88f61aa..ffa4c9b 100644 --- a/ios/chrome/common/colors/UIColor+cr_dynamic_colors.mm +++ b/ios/chrome/common/ui/colors/UIColor+cr_dynamic_colors.mm
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#import "ios/chrome/common/colors/UIColor+cr_dynamic_colors.h" +#import "ios/chrome/common/ui/colors/UIColor+cr_dynamic_colors.h" #if !defined(__has_feature) || !__has_feature(objc_arc) #error "This file requires ARC support."
diff --git a/ios/chrome/common/colors/UIColor+cr_semantic_colors.h b/ios/chrome/common/ui/colors/UIColor+cr_semantic_colors.h similarity index 88% rename from ios/chrome/common/colors/UIColor+cr_semantic_colors.h rename to ios/chrome/common/ui/colors/UIColor+cr_semantic_colors.h index da9dd0c..c4026725 100644 --- a/ios/chrome/common/colors/UIColor+cr_semantic_colors.h +++ b/ios/chrome/common/ui/colors/UIColor+cr_semantic_colors.h
@@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef IOS_CHROME_COMMON_COLORS_UICOLOR_CR_SEMANTIC_COLORS_H_ -#define IOS_CHROME_COMMON_COLORS_UICOLOR_CR_SEMANTIC_COLORS_H_ +#ifndef IOS_CHROME_COMMON_UI_COLORS_UICOLOR_CR_SEMANTIC_COLORS_H_ +#define IOS_CHROME_COMMON_UI_COLORS_UICOLOR_CR_SEMANTIC_COLORS_H_ #import <UIKit/UIKit.h> @@ -40,4 +40,4 @@ @end -#endif // IOS_CHROME_COMMON_COLORS_UICOLOR_CR_SEMANTIC_COLORS_H_ +#endif // IOS_CHROME_COMMON_UI_COLORS_UICOLOR_CR_SEMANTIC_COLORS_H_
diff --git a/ios/chrome/common/colors/UIColor+cr_semantic_colors.mm b/ios/chrome/common/ui/colors/UIColor+cr_semantic_colors.mm similarity index 98% rename from ios/chrome/common/colors/UIColor+cr_semantic_colors.mm rename to ios/chrome/common/ui/colors/UIColor+cr_semantic_colors.mm index dc670d3..39ced8a 100644 --- a/ios/chrome/common/colors/UIColor+cr_semantic_colors.mm +++ b/ios/chrome/common/ui/colors/UIColor+cr_semantic_colors.mm
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#import "ios/chrome/common/colors/UIColor+cr_semantic_colors.h" +#import "ios/chrome/common/ui/colors/UIColor+cr_semantic_colors.h" #if !defined(__has_feature) || !__has_feature(objc_arc) #error "This file requires ARC support."
diff --git a/ios/chrome/common/colors/dynamic_color_util.h b/ios/chrome/common/ui/colors/dynamic_color_util.h similarity index 83% rename from ios/chrome/common/colors/dynamic_color_util.h rename to ios/chrome/common/ui/colors/dynamic_color_util.h index c635de8..925b385 100644 --- a/ios/chrome/common/colors/dynamic_color_util.h +++ b/ios/chrome/common/ui/colors/dynamic_color_util.h
@@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef IOS_CHROME_COMMON_COLORS_DYNAMIC_COLOR_UTIL_H_ -#define IOS_CHROME_COMMON_COLORS_DYNAMIC_COLOR_UTIL_H_ +#ifndef IOS_CHROME_COMMON_UI_COLORS_DYNAMIC_COLOR_UTIL_H_ +#define IOS_CHROME_COMMON_UI_COLORS_DYNAMIC_COLOR_UTIL_H_ #import <UIKit/UIKit.h> @@ -23,4 +23,4 @@ } // namespace color -#endif // IOS_CHROME_COMMON_COLORS_DYNAMIC_COLOR_UTIL_H_ +#endif // IOS_CHROME_COMMON_UI_COLORS_DYNAMIC_COLOR_UTIL_H_
diff --git a/ios/chrome/common/colors/dynamic_color_util.mm b/ios/chrome/common/ui/colors/dynamic_color_util.mm similarity index 90% rename from ios/chrome/common/colors/dynamic_color_util.mm rename to ios/chrome/common/ui/colors/dynamic_color_util.mm index 3fb4e8c3..a96df43 100644 --- a/ios/chrome/common/colors/dynamic_color_util.mm +++ b/ios/chrome/common/ui/colors/dynamic_color_util.mm
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#import "ios/chrome/common/colors/dynamic_color_util.h" +#import "ios/chrome/common/ui/colors/dynamic_color_util.h" #if !defined(__has_feature) || !__has_feature(objc_arc) #error "This file requires ARC support."
diff --git a/ios/chrome/common/colors/resources/BUILD.gn b/ios/chrome/common/ui/colors/resources/BUILD.gn similarity index 100% rename from ios/chrome/common/colors/resources/BUILD.gn rename to ios/chrome/common/ui/colors/resources/BUILD.gn
diff --git a/ios/chrome/common/colors/resources/background_color.colorset/Contents.json b/ios/chrome/common/ui/colors/resources/background_color.colorset/Contents.json similarity index 100% rename from ios/chrome/common/colors/resources/background_color.colorset/Contents.json rename to ios/chrome/common/ui/colors/resources/background_color.colorset/Contents.json
diff --git a/ios/chrome/common/colors/resources/background_dark_color.colorset/Contents.json b/ios/chrome/common/ui/colors/resources/background_dark_color.colorset/Contents.json similarity index 100% rename from ios/chrome/common/colors/resources/background_dark_color.colorset/Contents.json rename to ios/chrome/common/ui/colors/resources/background_dark_color.colorset/Contents.json
diff --git a/ios/chrome/common/colors/resources/blue_color.colorset/Contents.json b/ios/chrome/common/ui/colors/resources/blue_color.colorset/Contents.json similarity index 100% rename from ios/chrome/common/colors/resources/blue_color.colorset/Contents.json rename to ios/chrome/common/ui/colors/resources/blue_color.colorset/Contents.json
diff --git a/ios/chrome/common/colors/resources/blue_dark_color.colorset/Contents.json b/ios/chrome/common/ui/colors/resources/blue_dark_color.colorset/Contents.json similarity index 100% rename from ios/chrome/common/colors/resources/blue_dark_color.colorset/Contents.json rename to ios/chrome/common/ui/colors/resources/blue_dark_color.colorset/Contents.json
diff --git a/ios/chrome/common/colors/resources/blue_halo_color.colorset/Contents.json b/ios/chrome/common/ui/colors/resources/blue_halo_color.colorset/Contents.json similarity index 100% rename from ios/chrome/common/colors/resources/blue_halo_color.colorset/Contents.json rename to ios/chrome/common/ui/colors/resources/blue_halo_color.colorset/Contents.json
diff --git a/ios/chrome/common/colors/resources/close_button_color.colorset/Contents.json b/ios/chrome/common/ui/colors/resources/close_button_color.colorset/Contents.json similarity index 100% rename from ios/chrome/common/colors/resources/close_button_color.colorset/Contents.json rename to ios/chrome/common/ui/colors/resources/close_button_color.colorset/Contents.json
diff --git a/ios/chrome/common/colors/resources/close_button_dark_color.colorset/Contents.json b/ios/chrome/common/ui/colors/resources/close_button_dark_color.colorset/Contents.json similarity index 100% rename from ios/chrome/common/colors/resources/close_button_dark_color.colorset/Contents.json rename to ios/chrome/common/ui/colors/resources/close_button_dark_color.colorset/Contents.json
diff --git a/ios/chrome/common/colors/resources/disabled_tint_color.colorset/Contents.json b/ios/chrome/common/ui/colors/resources/disabled_tint_color.colorset/Contents.json similarity index 100% rename from ios/chrome/common/colors/resources/disabled_tint_color.colorset/Contents.json rename to ios/chrome/common/ui/colors/resources/disabled_tint_color.colorset/Contents.json
diff --git a/ios/chrome/common/colors/resources/favicon_background_color.colorset/Contents.json b/ios/chrome/common/ui/colors/resources/favicon_background_color.colorset/Contents.json similarity index 100% rename from ios/chrome/common/colors/resources/favicon_background_color.colorset/Contents.json rename to ios/chrome/common/ui/colors/resources/favicon_background_color.colorset/Contents.json
diff --git a/ios/chrome/common/colors/resources/green_color.colorset/Contents.json b/ios/chrome/common/ui/colors/resources/green_color.colorset/Contents.json similarity index 100% rename from ios/chrome/common/colors/resources/green_color.colorset/Contents.json rename to ios/chrome/common/ui/colors/resources/green_color.colorset/Contents.json
diff --git a/ios/chrome/common/colors/resources/green_dark_color.colorset/Contents.json b/ios/chrome/common/ui/colors/resources/green_dark_color.colorset/Contents.json similarity index 100% rename from ios/chrome/common/colors/resources/green_dark_color.colorset/Contents.json rename to ios/chrome/common/ui/colors/resources/green_dark_color.colorset/Contents.json
diff --git a/ios/chrome/common/colors/resources/grey_100_color.colorset/Contents.json b/ios/chrome/common/ui/colors/resources/grey_100_color.colorset/Contents.json similarity index 100% rename from ios/chrome/common/colors/resources/grey_100_color.colorset/Contents.json rename to ios/chrome/common/ui/colors/resources/grey_100_color.colorset/Contents.json
diff --git a/ios/chrome/common/colors/resources/grey_200_color.colorset/Contents.json b/ios/chrome/common/ui/colors/resources/grey_200_color.colorset/Contents.json similarity index 100% rename from ios/chrome/common/colors/resources/grey_200_color.colorset/Contents.json rename to ios/chrome/common/ui/colors/resources/grey_200_color.colorset/Contents.json
diff --git a/ios/chrome/common/colors/resources/grey_300_color.colorset/Contents.json b/ios/chrome/common/ui/colors/resources/grey_300_color.colorset/Contents.json similarity index 100% rename from ios/chrome/common/colors/resources/grey_300_color.colorset/Contents.json rename to ios/chrome/common/ui/colors/resources/grey_300_color.colorset/Contents.json
diff --git a/ios/chrome/common/colors/resources/grey_400_color.colorset/Contents.json b/ios/chrome/common/ui/colors/resources/grey_400_color.colorset/Contents.json similarity index 100% rename from ios/chrome/common/colors/resources/grey_400_color.colorset/Contents.json rename to ios/chrome/common/ui/colors/resources/grey_400_color.colorset/Contents.json
diff --git a/ios/chrome/common/colors/resources/grey_500_color.colorset/Contents.json b/ios/chrome/common/ui/colors/resources/grey_500_color.colorset/Contents.json similarity index 100% rename from ios/chrome/common/colors/resources/grey_500_color.colorset/Contents.json rename to ios/chrome/common/ui/colors/resources/grey_500_color.colorset/Contents.json
diff --git a/ios/chrome/common/colors/resources/grey_50_color.colorset/Contents.json b/ios/chrome/common/ui/colors/resources/grey_50_color.colorset/Contents.json similarity index 100% rename from ios/chrome/common/colors/resources/grey_50_color.colorset/Contents.json rename to ios/chrome/common/ui/colors/resources/grey_50_color.colorset/Contents.json
diff --git a/ios/chrome/common/colors/resources/grey_600_color.colorset/Contents.json b/ios/chrome/common/ui/colors/resources/grey_600_color.colorset/Contents.json similarity index 100% rename from ios/chrome/common/colors/resources/grey_600_color.colorset/Contents.json rename to ios/chrome/common/ui/colors/resources/grey_600_color.colorset/Contents.json
diff --git a/ios/chrome/common/colors/resources/grey_700_color.colorset/Contents.json b/ios/chrome/common/ui/colors/resources/grey_700_color.colorset/Contents.json similarity index 100% rename from ios/chrome/common/colors/resources/grey_700_color.colorset/Contents.json rename to ios/chrome/common/ui/colors/resources/grey_700_color.colorset/Contents.json
diff --git a/ios/chrome/common/colors/resources/grey_800_color.colorset/Contents.json b/ios/chrome/common/ui/colors/resources/grey_800_color.colorset/Contents.json similarity index 100% rename from ios/chrome/common/colors/resources/grey_800_color.colorset/Contents.json rename to ios/chrome/common/ui/colors/resources/grey_800_color.colorset/Contents.json
diff --git a/ios/chrome/common/colors/resources/grey_900_color.colorset/Contents.json b/ios/chrome/common/ui/colors/resources/grey_900_color.colorset/Contents.json similarity index 100% rename from ios/chrome/common/colors/resources/grey_900_color.colorset/Contents.json rename to ios/chrome/common/ui/colors/resources/grey_900_color.colorset/Contents.json
diff --git a/ios/chrome/common/colors/resources/mdc_ink_color.colorset/Contents.json b/ios/chrome/common/ui/colors/resources/mdc_ink_color.colorset/Contents.json similarity index 100% rename from ios/chrome/common/colors/resources/mdc_ink_color.colorset/Contents.json rename to ios/chrome/common/ui/colors/resources/mdc_ink_color.colorset/Contents.json
diff --git a/ios/chrome/common/colors/resources/mdc_secondary_ink_color.colorset/Contents.json b/ios/chrome/common/ui/colors/resources/mdc_secondary_ink_color.colorset/Contents.json similarity index 100% rename from ios/chrome/common/colors/resources/mdc_secondary_ink_color.colorset/Contents.json rename to ios/chrome/common/ui/colors/resources/mdc_secondary_ink_color.colorset/Contents.json
diff --git a/ios/chrome/common/colors/resources/placeholder_image_tint_color.colorset/Contents.json b/ios/chrome/common/ui/colors/resources/placeholder_image_tint_color.colorset/Contents.json similarity index 100% rename from ios/chrome/common/colors/resources/placeholder_image_tint_color.colorset/Contents.json rename to ios/chrome/common/ui/colors/resources/placeholder_image_tint_color.colorset/Contents.json
diff --git a/ios/chrome/common/colors/resources/red_color.colorset/Contents.json b/ios/chrome/common/ui/colors/resources/red_color.colorset/Contents.json similarity index 100% rename from ios/chrome/common/colors/resources/red_color.colorset/Contents.json rename to ios/chrome/common/ui/colors/resources/red_color.colorset/Contents.json
diff --git a/ios/chrome/common/colors/resources/red_dark_color.colorset/Contents.json b/ios/chrome/common/ui/colors/resources/red_dark_color.colorset/Contents.json similarity index 100% rename from ios/chrome/common/colors/resources/red_dark_color.colorset/Contents.json rename to ios/chrome/common/ui/colors/resources/red_dark_color.colorset/Contents.json
diff --git a/ios/chrome/common/colors/resources/scrim_background_color.colorset/Contents.json b/ios/chrome/common/ui/colors/resources/scrim_background_color.colorset/Contents.json similarity index 100% rename from ios/chrome/common/colors/resources/scrim_background_color.colorset/Contents.json rename to ios/chrome/common/ui/colors/resources/scrim_background_color.colorset/Contents.json
diff --git a/ios/chrome/common/colors/resources/separator_color.colorset/Contents.json b/ios/chrome/common/ui/colors/resources/separator_color.colorset/Contents.json similarity index 100% rename from ios/chrome/common/colors/resources/separator_color.colorset/Contents.json rename to ios/chrome/common/ui/colors/resources/separator_color.colorset/Contents.json
diff --git a/ios/chrome/common/colors/resources/solid_button_text_color.colorset/Contents.json b/ios/chrome/common/ui/colors/resources/solid_button_text_color.colorset/Contents.json similarity index 100% rename from ios/chrome/common/colors/resources/solid_button_text_color.colorset/Contents.json rename to ios/chrome/common/ui/colors/resources/solid_button_text_color.colorset/Contents.json
diff --git a/ios/chrome/common/colors/resources/table_view_row_highlight_color.colorset/Contents.json b/ios/chrome/common/ui/colors/resources/table_view_row_highlight_color.colorset/Contents.json similarity index 100% rename from ios/chrome/common/colors/resources/table_view_row_highlight_color.colorset/Contents.json rename to ios/chrome/common/ui/colors/resources/table_view_row_highlight_color.colorset/Contents.json
diff --git a/ios/chrome/common/colors/resources/table_view_row_highlight_dark_color.colorset/Contents.json b/ios/chrome/common/ui/colors/resources/table_view_row_highlight_dark_color.colorset/Contents.json similarity index 100% rename from ios/chrome/common/colors/resources/table_view_row_highlight_dark_color.colorset/Contents.json rename to ios/chrome/common/ui/colors/resources/table_view_row_highlight_dark_color.colorset/Contents.json
diff --git a/ios/chrome/common/colors/resources/text_primary_color.colorset/Contents.json b/ios/chrome/common/ui/colors/resources/text_primary_color.colorset/Contents.json similarity index 100% rename from ios/chrome/common/colors/resources/text_primary_color.colorset/Contents.json rename to ios/chrome/common/ui/colors/resources/text_primary_color.colorset/Contents.json
diff --git a/ios/chrome/common/colors/resources/text_primary_dark_color.colorset/Contents.json b/ios/chrome/common/ui/colors/resources/text_primary_dark_color.colorset/Contents.json similarity index 100% rename from ios/chrome/common/colors/resources/text_primary_dark_color.colorset/Contents.json rename to ios/chrome/common/ui/colors/resources/text_primary_dark_color.colorset/Contents.json
diff --git a/ios/chrome/common/colors/resources/text_secondary_color.colorset/Contents.json b/ios/chrome/common/ui/colors/resources/text_secondary_color.colorset/Contents.json similarity index 100% rename from ios/chrome/common/colors/resources/text_secondary_color.colorset/Contents.json rename to ios/chrome/common/ui/colors/resources/text_secondary_color.colorset/Contents.json
diff --git a/ios/chrome/common/colors/resources/text_secondary_dark_color.colorset/Contents.json b/ios/chrome/common/ui/colors/resources/text_secondary_dark_color.colorset/Contents.json similarity index 100% rename from ios/chrome/common/colors/resources/text_secondary_dark_color.colorset/Contents.json rename to ios/chrome/common/ui/colors/resources/text_secondary_dark_color.colorset/Contents.json
diff --git a/ios/chrome/common/colors/resources/textfield_background_color.colorset/Contents.json b/ios/chrome/common/ui/colors/resources/textfield_background_color.colorset/Contents.json similarity index 100% rename from ios/chrome/common/colors/resources/textfield_background_color.colorset/Contents.json rename to ios/chrome/common/ui/colors/resources/textfield_background_color.colorset/Contents.json
diff --git a/ios/chrome/common/colors/resources/textfield_background_dark_color.colorset/Contents.json b/ios/chrome/common/ui/colors/resources/textfield_background_dark_color.colorset/Contents.json similarity index 100% rename from ios/chrome/common/colors/resources/textfield_background_dark_color.colorset/Contents.json rename to ios/chrome/common/ui/colors/resources/textfield_background_dark_color.colorset/Contents.json
diff --git a/ios/chrome/common/colors/resources/textfield_placeholder_color.colorset/Contents.json b/ios/chrome/common/ui/colors/resources/textfield_placeholder_color.colorset/Contents.json similarity index 100% rename from ios/chrome/common/colors/resources/textfield_placeholder_color.colorset/Contents.json rename to ios/chrome/common/ui/colors/resources/textfield_placeholder_color.colorset/Contents.json
diff --git a/ios/chrome/common/colors/resources/textfield_placeholder_dark_color.colorset/Contents.json b/ios/chrome/common/ui/colors/resources/textfield_placeholder_dark_color.colorset/Contents.json similarity index 100% rename from ios/chrome/common/colors/resources/textfield_placeholder_dark_color.colorset/Contents.json rename to ios/chrome/common/ui/colors/resources/textfield_placeholder_dark_color.colorset/Contents.json
diff --git a/ios/chrome/common/colors/resources/tint_dark_color.colorset/Contents.json b/ios/chrome/common/ui/colors/resources/tint_dark_color.colorset/Contents.json similarity index 100% rename from ios/chrome/common/colors/resources/tint_dark_color.colorset/Contents.json rename to ios/chrome/common/ui/colors/resources/tint_dark_color.colorset/Contents.json
diff --git a/ios/chrome/common/colors/resources/toolbar_button_color.colorset/Contents.json b/ios/chrome/common/ui/colors/resources/toolbar_button_color.colorset/Contents.json similarity index 100% rename from ios/chrome/common/colors/resources/toolbar_button_color.colorset/Contents.json rename to ios/chrome/common/ui/colors/resources/toolbar_button_color.colorset/Contents.json
diff --git a/ios/chrome/common/colors/resources/toolbar_button_dark_color.colorset/Contents.json b/ios/chrome/common/ui/colors/resources/toolbar_button_dark_color.colorset/Contents.json similarity index 100% rename from ios/chrome/common/colors/resources/toolbar_button_dark_color.colorset/Contents.json rename to ios/chrome/common/ui/colors/resources/toolbar_button_dark_color.colorset/Contents.json
diff --git a/ios/chrome/common/colors/resources/toolbar_shadow_color.colorset/Contents.json b/ios/chrome/common/ui/colors/resources/toolbar_shadow_color.colorset/Contents.json similarity index 100% rename from ios/chrome/common/colors/resources/toolbar_shadow_color.colorset/Contents.json rename to ios/chrome/common/ui/colors/resources/toolbar_shadow_color.colorset/Contents.json
diff --git a/ios/chrome/common/ui/colors/semantic_color_names.h b/ios/chrome/common/ui/colors/semantic_color_names.h new file mode 100644 index 0000000..f3975c6 --- /dev/null +++ b/ios/chrome/common/ui/colors/semantic_color_names.h
@@ -0,0 +1,82 @@ +// Copyright 2019 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef IOS_CHROME_COMMON_UI_COLORS_SEMANTIC_COLOR_NAMES_H_ +#define IOS_CHROME_COMMON_UI_COLORS_SEMANTIC_COLOR_NAMES_H_ + +#import <UIKit/UIKit.h> + +// Element Colors + +extern NSString* const kBackgroundColor; +extern NSString* const kCloseButtonColor; +extern NSString* const kDisabledTintColor; +// Background color used in the rounded squares behind favicons. +extern NSString* const kFaviconBackgroundColor; +// Ink color for an MDC button. +extern NSString* const kMDCInkColor; +// Ink color for a secondary style MDC button (button with transparent +// background). +extern NSString* const kMDCSecondaryInkColor; +// Color used to tint placeholder images and icons. +extern NSString* const kPlaceholderImageTintColor; +extern NSString* const kScrimBackgroundColor; +extern NSString* const kSeparatorColor; +extern NSString* const kSolidButtonTextColor; +extern NSString* const kTableViewRowHighlightColor; +extern NSString* const kTextPrimaryColor; +extern NSString* const kTextSecondaryColor; +extern NSString* const kTextfieldBackgroundColor; +extern NSString* const kTextfieldPlaceholderColor; +// Color used for buttons on a toolbar. +extern NSString* const kToolbarButtonColor; +// Color used for a shadow/separator next to a toolbar. +extern NSString* const kToolbarShadowColor; + +// Standard Colors + +// Standard blue color. This is most commonly used for the tint color on +// standard buttons and controls. +extern NSString* const kBlueColor; +// Lighter blue color sometimes used as background for buttons or views where +// the main content is |kBlueColor| (e.g the background of the collections +// shortcuts on the NTP). +extern NSString* const kBlueHaloColor; +// Standard green color. +extern NSString* const kGreenColor; +// Standard red color. This is most commonly used for the tint color on +// destructive controls. +extern NSString* const kRedColor; + +// Grey Color Palette. +extern NSString* const kGrey50Color; +extern NSString* const kGrey100Color; +extern NSString* const kGrey200Color; +extern NSString* const kGrey300Color; +extern NSString* const kGrey400Color; +extern NSString* const kGrey500Color; +extern NSString* const kGrey600Color; +extern NSString* const kGrey700Color; +extern NSString* const kGrey800Color; +extern NSString* const kGrey900Color; + +// Temporary colors for iOS 12. Because overridePreferredInterfaceStyle isn't +// available in iOS 12, any views that should always be dark (e.g. incognito) +// need to use colorsets that always use the dark variant. +// TODO(crbug.com/981889): Clean up after iOS 12 support is dropped. + +extern NSString* const kBackgroundDarkColor; +extern NSString* const kCloseButtonDarkColor; +extern NSString* const kTableViewRowHighlightDarkColor; +extern NSString* const kTextPrimaryDarkColor; +extern NSString* const kTextSecondaryDarkColor; +extern NSString* const kTextfieldBackgroundDarkColor; +extern NSString* const kTextfieldPlaceholderDarkColor; +extern NSString* const kToolbarButtonDarkColor; + +extern NSString* const kBlueDarkColor; +extern NSString* const kGreenDarkColor; +extern NSString* const kRedDarkColor; + +#endif // IOS_CHROME_COMMON_UI_COLORS_SEMANTIC_COLOR_NAMES_H_
diff --git a/ios/chrome/common/colors/semantic_color_names.mm b/ios/chrome/common/ui/colors/semantic_color_names.mm similarity index 97% rename from ios/chrome/common/colors/semantic_color_names.mm rename to ios/chrome/common/ui/colors/semantic_color_names.mm index e1a632b..e9185366 100644 --- a/ios/chrome/common/colors/semantic_color_names.mm +++ b/ios/chrome/common/ui/colors/semantic_color_names.mm
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #if !defined(__has_feature) || !__has_feature(objc_arc) #error "This file requires ARC support."
diff --git a/ios/chrome/common/ui/confirmation_alert/BUILD.gn b/ios/chrome/common/ui/confirmation_alert/BUILD.gn index 16522a9a..1e70be05 100644 --- a/ios/chrome/common/ui/confirmation_alert/BUILD.gn +++ b/ios/chrome/common/ui/confirmation_alert/BUILD.gn
@@ -15,7 +15,7 @@ ] deps = [ ":confirmation_alert_ic_help", - "//ios/chrome/common/colors", + "//ios/chrome/common/ui/colors", "//ios/chrome/common/ui/util", "//ios/chrome/common/ui/util:dynamic_type_util", ]
diff --git a/ios/chrome/common/ui/confirmation_alert/confirmation_alert_view_controller.mm b/ios/chrome/common/ui/confirmation_alert/confirmation_alert_view_controller.mm index 16d9ad8..c85c4de 100644 --- a/ios/chrome/common/ui/confirmation_alert/confirmation_alert_view_controller.mm +++ b/ios/chrome/common/ui/confirmation_alert/confirmation_alert_view_controller.mm
@@ -4,7 +4,7 @@ #import "ios/chrome/common/ui/confirmation_alert/confirmation_alert_view_controller.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #import "ios/chrome/common/ui/confirmation_alert/confirmation_alert_action_handler.h" #import "ios/chrome/common/ui/util/constraints_ui_util.h" #include "ios/chrome/common/ui/util/dynamic_type_util.h"
diff --git a/ios/chrome/credential_provider_extension/BUILD.gn b/ios/chrome/credential_provider_extension/BUILD.gn index c73d932..635e62df 100644 --- a/ios/chrome/credential_provider_extension/BUILD.gn +++ b/ios/chrome/credential_provider_extension/BUILD.gn
@@ -45,7 +45,7 @@ deps = [ ":system_strings", - "//ios/chrome/common/colors", + "//ios/chrome/common/ui/colors", "//ios/chrome/credential_provider_extension/resources", "//ios/chrome/credential_provider_extension/ui", ]
diff --git a/ios/chrome/share_extension/BUILD.gn b/ios/chrome/share_extension/BUILD.gn index 6785a79..8e95c2eb 100644 --- a/ios/chrome/share_extension/BUILD.gn +++ b/ios/chrome/share_extension/BUILD.gn
@@ -51,7 +51,7 @@ "//ios/chrome/common/app_group", "//ios/chrome/common/app_group:client", "//ios/chrome/common/app_group:command", - "//ios/chrome/common/colors", + "//ios/chrome/common/ui/colors", ] bundle_deps_filter = [ "//third_party/icu:icudata" ]
diff --git a/ios/chrome/share_extension/share_extension_view.mm b/ios/chrome/share_extension/share_extension_view.mm index a2a6b2f..9c2f0fb 100644 --- a/ios/chrome/share_extension/share_extension_view.mm +++ b/ios/chrome/share_extension/share_extension_view.mm
@@ -5,7 +5,7 @@ #import "ios/chrome/share_extension/share_extension_view.h" #include "base/logging.h" -#import "ios/chrome/common/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" #import "ios/chrome/share_extension/ui_util.h" #if !defined(__has_feature) || !__has_feature(objc_arc)
diff --git a/ios/chrome/test/testing_application_context.h b/ios/chrome/test/testing_application_context.h index 2b9e143..b027458e 100644 --- a/ios/chrome/test/testing_application_context.h +++ b/ios/chrome/test/testing_application_context.h
@@ -61,6 +61,7 @@ component_updater::ComponentUpdateService* GetComponentUpdateService() override; network::NetworkConnectionTracker* GetNetworkConnectionTracker() override; + BrowserPolicyConnectorIOS* GetBrowserPolicyConnector() override; private: base::ThreadChecker thread_checker_;
diff --git a/ios/chrome/test/testing_application_context.mm b/ios/chrome/test/testing_application_context.mm index e54e9cec..ad7cf52 100644 --- a/ios/chrome/test/testing_application_context.mm +++ b/ios/chrome/test/testing_application_context.mm
@@ -189,3 +189,12 @@ DCHECK(thread_checker_.CalledOnValidThread()); return test_network_connection_tracker_.get(); } + +BrowserPolicyConnectorIOS* +TestingApplicationContext::GetBrowserPolicyConnector() { + DCHECK(thread_checker_.CalledOnValidThread()); + + // TODO(crbug.com/1055318): Determine what level of support is needed for + // unittesting and return a mock or fake here. + return nullptr; +}
diff --git a/media/audio/wav_audio_handler.cc b/media/audio/wav_audio_handler.cc index 925e82f..a3426bd8 100644 --- a/media/audio/wav_audio_handler.cc +++ b/media/audio/wav_audio_handler.cc
@@ -58,10 +58,13 @@ }; bool ParamsAreValid(const WavAudioParameters& params) { + const uint16_t bytes_per_sample = params.bits_per_sample / 8; return (params.audio_format == kAudioFormatPCM && params.num_channels != 0u && params.num_channels <= static_cast<uint16_t>(limits::kMaxChannels) && params.sample_rate != 0u && params.bits_per_sample != 0u && params.bits_per_sample % 8u == 0u && + (bytes_per_sample == 1 || bytes_per_sample == 2 || + bytes_per_sample == 4) && (!params.is_extensible || params.valid_bits_per_sample == params.bits_per_sample)); }
diff --git a/media/base/decryptor.h b/media/base/decryptor.h index 0aef705..e084056 100644 --- a/media/base/decryptor.h +++ b/media/base/decryptor.h
@@ -94,14 +94,14 @@ // // First Parameter: Indicates initialization success. // - Set to true if initialization was successful. False if an error occurred. - typedef base::Callback<void(bool)> DecoderInitCB; + using DecoderInitCB = base::OnceCallback<void(bool)>; // Initializes a decoder with the given |config|, executing the |init_cb| // upon completion. virtual void InitializeAudioDecoder(const AudioDecoderConfig& config, - const DecoderInitCB& init_cb) = 0; + DecoderInitCB init_cb) = 0; virtual void InitializeVideoDecoder(const VideoDecoderConfig& config, - const DecoderInitCB& init_cb) = 0; + DecoderInitCB init_cb) = 0; // Helper structure for managing multiple decoded audio buffers per input. typedef std::list<scoped_refptr<AudioBuffer> > AudioFrames;
diff --git a/media/base/mock_filters.h b/media/base/mock_filters.h index 0c91d40e..1faccc7 100644 --- a/media/base/mock_filters.h +++ b/media/base/mock_filters.h
@@ -496,11 +496,9 @@ DecryptCB decrypt_cb)); MOCK_METHOD1(CancelDecrypt, void(StreamType stream_type)); MOCK_METHOD2(InitializeAudioDecoder, - void(const AudioDecoderConfig& config, - const DecoderInitCB& init_cb)); + void(const AudioDecoderConfig& config, DecoderInitCB init_cb)); MOCK_METHOD2(InitializeVideoDecoder, - void(const VideoDecoderConfig& config, - const DecoderInitCB& init_cb)); + void(const VideoDecoderConfig& config, DecoderInitCB init_cb)); MOCK_METHOD2(DecryptAndDecodeAudio, void(scoped_refptr<DecoderBuffer> encrypted, const AudioDecodeCB& audio_decode_cb));
diff --git a/media/cdm/aes_decryptor.cc b/media/cdm/aes_decryptor.cc index 36f46f9..9b49a33 100644 --- a/media/cdm/aes_decryptor.cc +++ b/media/cdm/aes_decryptor.cc
@@ -524,15 +524,15 @@ } void AesDecryptor::InitializeAudioDecoder(const AudioDecoderConfig& config, - const DecoderInitCB& init_cb) { + DecoderInitCB init_cb) { // AesDecryptor does not support audio decoding. - init_cb.Run(false); + std::move(init_cb).Run(false); } void AesDecryptor::InitializeVideoDecoder(const VideoDecoderConfig& config, - const DecoderInitCB& init_cb) { + DecoderInitCB init_cb) { // AesDecryptor does not support video decoding. - init_cb.Run(false); + std::move(init_cb).Run(false); } void AesDecryptor::DecryptAndDecodeAudio(scoped_refptr<DecoderBuffer> encrypted,
diff --git a/media/cdm/aes_decryptor.h b/media/cdm/aes_decryptor.h index 7903036d..f96e07a 100644 --- a/media/cdm/aes_decryptor.h +++ b/media/cdm/aes_decryptor.h
@@ -74,9 +74,9 @@ DecryptCB decrypt_cb) override; void CancelDecrypt(StreamType stream_type) override; void InitializeAudioDecoder(const AudioDecoderConfig& config, - const DecoderInitCB& init_cb) override; + DecoderInitCB init_cb) override; void InitializeVideoDecoder(const VideoDecoderConfig& config, - const DecoderInitCB& init_cb) override; + DecoderInitCB init_cb) override; void DecryptAndDecodeAudio(scoped_refptr<DecoderBuffer> encrypted, const AudioDecodeCB& audio_decode_cb) override; void DecryptAndDecodeVideo(scoped_refptr<DecoderBuffer> encrypted,
diff --git a/media/cdm/cdm_adapter.cc b/media/cdm/cdm_adapter.cc index a492ca5..5ccb0eb 100644 --- a/media/cdm/cdm_adapter.cc +++ b/media/cdm/cdm_adapter.cc
@@ -238,9 +238,9 @@ cdm_promise_adapter_.Clear(); if (audio_init_cb_) - audio_init_cb_.Run(false); + std::move(audio_init_cb_).Run(false); if (video_init_cb_) - video_init_cb_.Run(false); + std::move(video_init_cb_).Run(false); } CdmWrapper* CdmAdapter::CreateCdmInstance(const std::string& key_system) { @@ -494,7 +494,7 @@ } void CdmAdapter::InitializeAudioDecoder(const AudioDecoderConfig& config, - const DecoderInitCB& init_cb) { + DecoderInitCB init_cb) { DVLOG(2) << __func__ << ": " << config.AsHumanReadableString(); DCHECK(task_runner_->BelongsToCurrentThread()); DCHECK(!audio_init_cb_); @@ -504,7 +504,7 @@ if (cdm_config.codec == cdm::kUnknownAudioCodec) { DVLOG(1) << __func__ << ": Unsupported config: " << config.AsHumanReadableString(); - init_cb.Run(false); + std::move(init_cb).Run(false); return; } @@ -512,7 +512,7 @@ if (status != cdm::kSuccess && status != cdm::kDeferredInitialization) { DCHECK(status == cdm::kInitializationError); DVLOG(1) << __func__ << ": status = " << status; - init_cb.Run(false); + std::move(init_cb).Run(false); return; } @@ -521,15 +521,15 @@ if (status == cdm::kDeferredInitialization) { DVLOG(1) << "Deferred initialization in " << __func__; - audio_init_cb_ = init_cb; + audio_init_cb_ = std::move(init_cb); return; } - init_cb.Run(true); + std::move(init_cb).Run(true); } void CdmAdapter::InitializeVideoDecoder(const VideoDecoderConfig& config, - const DecoderInitCB& init_cb) { + DecoderInitCB init_cb) { DVLOG(2) << __func__ << ": " << config.AsHumanReadableString(); DCHECK(task_runner_->BelongsToCurrentThread()); DCHECK(!video_init_cb_); @@ -539,7 +539,7 @@ if (config.alpha_mode() != VideoDecoderConfig::AlphaMode::kIsOpaque) { DVLOG(1) << __func__ << ": Unsupported config: " << config.AsHumanReadableString(); - init_cb.Run(false); + std::move(init_cb).Run(false); return; } @@ -550,7 +550,7 @@ if (cdm_config.codec == cdm::kUnknownVideoCodec) { DVLOG(1) << __func__ << ": Unsupported config: " << config.AsHumanReadableString(); - init_cb.Run(false); + std::move(init_cb).Run(false); return; } @@ -558,7 +558,7 @@ if (status != cdm::kSuccess && status != cdm::kDeferredInitialization) { DCHECK(status == cdm::kInitializationError); DVLOG(1) << __func__ << ": status = " << status; - init_cb.Run(false); + std::move(init_cb).Run(false); return; } @@ -567,11 +567,11 @@ if (status == cdm::kDeferredInitialization) { DVLOG(1) << "Deferred initialization in " << __func__; - video_init_cb_ = init_cb; + video_init_cb_ = std::move(init_cb); return; } - init_cb.Run(true); + std::move(init_cb).Run(true); } void CdmAdapter::DecryptAndDecodeAudio(scoped_refptr<DecoderBuffer> encrypted,
diff --git a/media/cdm/cdm_adapter.h b/media/cdm/cdm_adapter.h index dceea7a2..b2ecdaa 100644 --- a/media/cdm/cdm_adapter.h +++ b/media/cdm/cdm_adapter.h
@@ -103,9 +103,9 @@ DecryptCB decrypt_cb) final; void CancelDecrypt(StreamType stream_type) final; void InitializeAudioDecoder(const AudioDecoderConfig& config, - const DecoderInitCB& init_cb) final; + DecoderInitCB init_cb) final; void InitializeVideoDecoder(const VideoDecoderConfig& config, - const DecoderInitCB& init_cb) final; + DecoderInitCB init_cb) final; void DecryptAndDecodeAudio(scoped_refptr<DecoderBuffer> encrypted, const AudioDecodeCB& audio_decode_cb) final; void DecryptAndDecodeVideo(scoped_refptr<DecoderBuffer> encrypted,
diff --git a/media/filters/decoder_selector_unittest.cc b/media/filters/decoder_selector_unittest.cc index eefa460e..092b57bc 100644 --- a/media/filters/decoder_selector_unittest.cc +++ b/media/filters/decoder_selector_unittest.cc
@@ -27,6 +27,7 @@ #endif // !defined(OS_ANDROID) using ::base::test::RunCallback; +using ::base::test::RunOnceCallback; using ::testing::_; using ::testing::IsNull; using ::testing::NiceMock; @@ -232,11 +233,13 @@ switch (TypeParam::kStreamType) { case DemuxerStream::AUDIO: EXPECT_CALL(*decryptor_, InitializeAudioDecoder(_, _)) - .WillRepeatedly(RunCallback<1>(capability == kDecryptAndDecode)); + .WillRepeatedly( + RunOnceCallback<1>(capability == kDecryptAndDecode)); break; case DemuxerStream::VIDEO: EXPECT_CALL(*decryptor_, InitializeVideoDecoder(_, _)) - .WillRepeatedly(RunCallback<1>(capability == kDecryptAndDecode)); + .WillRepeatedly( + RunOnceCallback<1>(capability == kDecryptAndDecode)); break; default: NOTREACHED();
diff --git a/media/filters/decrypting_audio_decoder_unittest.cc b/media/filters/decrypting_audio_decoder_unittest.cc index acb150e..8a485929 100644 --- a/media/filters/decrypting_audio_decoder_unittest.cc +++ b/media/filters/decrypting_audio_decoder_unittest.cc
@@ -24,6 +24,7 @@ #include "testing/gmock/include/gmock/gmock.h" using ::base::test::RunCallback; +using ::base::test::RunOnceCallback; using ::testing::_; using ::testing::AtMost; using ::testing::Return; @@ -102,7 +103,7 @@ SetCdmType(CDM_WITH_DECRYPTOR); EXPECT_CALL(*decryptor_, InitializeAudioDecoder(_, _)) .Times(AtMost(1)) - .WillOnce(RunCallback<1>(true)); + .WillOnce(RunOnceCallback<1>(true)); EXPECT_CALL(*decryptor_, RegisterNewKeyCB(Decryptor::kAudio, _)) .WillOnce(SaveArg<1>(&key_added_cb_)); @@ -117,7 +118,7 @@ void ReinitializeConfigChange(const AudioDecoderConfig& new_config) { EXPECT_CALL(*decryptor_, DeinitializeDecoder(Decryptor::kAudio)); EXPECT_CALL(*decryptor_, InitializeAudioDecoder(_, _)) - .WillOnce(RunCallback<1>(true)); + .WillOnce(RunOnceCallback<1>(true)); EXPECT_CALL(*decryptor_, RegisterNewKeyCB(Decryptor::kAudio, _)) .WillOnce(SaveArg<1>(&key_added_cb_)); decoder_->Initialize(new_config, cdm_context_.get(), @@ -285,7 +286,7 @@ TEST_F(DecryptingAudioDecoderTest, Initialize_UnsupportedAudioConfig) { SetCdmType(CDM_WITH_DECRYPTOR); EXPECT_CALL(*decryptor_, InitializeAudioDecoder(_, _)) - .WillOnce(RunCallback<1>(false)); + .WillOnce(RunOnceCallback<1>(false)); AudioDecoderConfig config(kCodecVorbis, kSampleFormatPlanarF32, CHANNEL_LAYOUT_STEREO, kSampleRate, @@ -356,7 +357,7 @@ EXPECT_CALL(*decryptor_, InitializeAudioDecoder(_, _)) .Times(AtMost(1)) - .WillOnce(RunCallback<1>(true)); + .WillOnce(RunOnceCallback<1>(true)); // The new config is different from the initial config in bits-per-channel, // channel layout and samples_per_second. @@ -378,7 +379,7 @@ EXPECT_CALL(*decryptor_, InitializeAudioDecoder(_, _)) .Times(AtMost(1)) - .WillOnce(RunCallback<1>(true)); + .WillOnce(RunOnceCallback<1>(true)); // The new config is different from the initial config in bits-per-channel, // channel layout and samples_per_second.
diff --git a/media/filters/decrypting_video_decoder_unittest.cc b/media/filters/decrypting_video_decoder_unittest.cc index 3fd7b65..6146cf5b 100644 --- a/media/filters/decrypting_video_decoder_unittest.cc +++ b/media/filters/decrypting_video_decoder_unittest.cc
@@ -23,11 +23,13 @@ #include "testing/gmock/include/gmock/gmock.h" using ::base::test::RunCallback; +using ::base::test::RunOnceCallback; using ::testing::_; using ::testing::Invoke; using ::testing::Return; using ::testing::SaveArg; using ::testing::StrictMock; +using ::testing::WithArg; namespace media { @@ -89,7 +91,7 @@ void Initialize() { SetCdmType(CDM_WITH_DECRYPTOR); EXPECT_CALL(*decryptor_, InitializeVideoDecoder(_, _)) - .WillOnce(RunCallback<1>(true)); + .WillOnce(RunOnceCallback<1>(true)); EXPECT_CALL(*decryptor_, RegisterNewKeyCB(Decryptor::kVideo, _)) .WillOnce(SaveArg<1>(&key_added_cb_)); @@ -100,7 +102,7 @@ void Reinitialize(const VideoDecoderConfig& new_config) { EXPECT_CALL(*decryptor_, DeinitializeDecoder(Decryptor::kVideo)); EXPECT_CALL(*decryptor_, InitializeVideoDecoder(_, _)) - .WillOnce(RunCallback<1>(true)); + .WillOnce(RunOnceCallback<1>(true)); EXPECT_CALL(*decryptor_, RegisterNewKeyCB(Decryptor::kVideo, _)) .WillOnce(SaveArg<1>(&key_added_cb_)); @@ -256,7 +258,7 @@ TEST_F(DecryptingVideoDecoderTest, Initialize_Failure) { SetCdmType(CDM_WITH_DECRYPTOR); EXPECT_CALL(*decryptor_, InitializeVideoDecoder(_, _)) - .WillRepeatedly(RunCallback<1>(false)); + .WillRepeatedly(RunOnceCallback<1>(false)); EXPECT_CALL(*decryptor_, RegisterNewKeyCB(Decryptor::kVideo, _)) .WillRepeatedly(SaveArg<1>(&key_added_cb_)); @@ -282,7 +284,7 @@ EXPECT_CALL(*decryptor_, DeinitializeDecoder(Decryptor::kVideo)); EXPECT_CALL(*decryptor_, InitializeVideoDecoder(_, _)) - .WillOnce(RunCallback<1>(false)); + .WillOnce(RunOnceCallback<1>(false)); // Reinitialize() expects the reinitialization to succeed. Call // InitializeAndExpectResult() directly to test the reinitialization failure. @@ -406,7 +408,9 @@ TEST_F(DecryptingVideoDecoderTest, Destroy_DuringPendingDecoderInit) { SetCdmType(CDM_WITH_DECRYPTOR); EXPECT_CALL(*decryptor_, InitializeVideoDecoder(_, _)) - .WillOnce(SaveArg<1>(&pending_init_cb_)); + .WillOnce(WithArg<1>(Invoke([&](Decryptor::DecoderInitCB init_cb) { + pending_init_cb_ = std::move(init_cb); + }))); InitializeAndExpectResult(TestVideoConfig::NormalEncrypted(), false); EXPECT_FALSE(!pending_init_cb_);
diff --git a/media/filters/video_decoder_stream_unittest.cc b/media/filters/video_decoder_stream_unittest.cc index b21122e1..abd89199 100644 --- a/media/filters/video_decoder_stream_unittest.cc +++ b/media/filters/video_decoder_stream_unittest.cc
@@ -27,6 +27,7 @@ #endif using ::base::test::RunCallback; +using ::base::test::RunOnceCallback; using ::testing::_; using ::testing::AnyNumber; using ::testing::Assign; @@ -104,7 +105,7 @@ // Decryptor can only decrypt (not decrypt-and-decode) so that // DecryptingDemuxerStream will be used. EXPECT_CALL(*decryptor_, InitializeVideoDecoder(_, _)) - .WillRepeatedly(RunCallback<1>(false)); + .WillRepeatedly(RunOnceCallback<1>(false)); EXPECT_CALL(*decryptor_, Decrypt(_, _, _)) .WillRepeatedly(Invoke(this, &VideoDecoderStreamTest::Decrypt)); }
diff --git a/media/fuchsia/cdm/fuchsia_decryptor.cc b/media/fuchsia/cdm/fuchsia_decryptor.cc index 2d3fe35..b36fcfb 100644 --- a/media/fuchsia/cdm/fuchsia_decryptor.cc +++ b/media/fuchsia/cdm/fuchsia_decryptor.cc
@@ -59,15 +59,15 @@ } void FuchsiaDecryptor::InitializeAudioDecoder(const AudioDecoderConfig& config, - const DecoderInitCB& init_cb) { + DecoderInitCB init_cb) { // Only decryption is supported. - init_cb.Run(false); + std::move(init_cb).Run(false); } void FuchsiaDecryptor::InitializeVideoDecoder(const VideoDecoderConfig& config, - const DecoderInitCB& init_cb) { + DecoderInitCB init_cb) { // Only decryption is supported. - init_cb.Run(false); + std::move(init_cb).Run(false); } void FuchsiaDecryptor::DecryptAndDecodeAudio(
diff --git a/media/fuchsia/cdm/fuchsia_decryptor.h b/media/fuchsia/cdm/fuchsia_decryptor.h index 3a88aa9..9b8b71a2 100644 --- a/media/fuchsia/cdm/fuchsia_decryptor.h +++ b/media/fuchsia/cdm/fuchsia_decryptor.h
@@ -39,9 +39,9 @@ DecryptCB decrypt_cb) override; void CancelDecrypt(StreamType stream_type) override; void InitializeAudioDecoder(const AudioDecoderConfig& config, - const DecoderInitCB& init_cb) override; + DecoderInitCB init_cb) override; void InitializeVideoDecoder(const VideoDecoderConfig& config, - const DecoderInitCB& init_cb) override; + DecoderInitCB init_cb) override; void DecryptAndDecodeAudio(scoped_refptr<DecoderBuffer> encrypted, const AudioDecodeCB& audio_decode_cb) override; void DecryptAndDecodeVideo(scoped_refptr<DecoderBuffer> encrypted,
diff --git a/media/gpu/windows/d3d11_decryptor.cc b/media/gpu/windows/d3d11_decryptor.cc index ec089e2..9f64e0c 100644 --- a/media/gpu/windows/d3d11_decryptor.cc +++ b/media/gpu/windows/d3d11_decryptor.cc
@@ -212,15 +212,15 @@ } void D3D11Decryptor::InitializeAudioDecoder(const AudioDecoderConfig& config, - const DecoderInitCB& init_cb) { + DecoderInitCB init_cb) { // D3D11Decryptor does not support audio decoding. - init_cb.Run(false); + std::move(init_cb).Run(false); } void D3D11Decryptor::InitializeVideoDecoder(const VideoDecoderConfig& config, - const DecoderInitCB& init_cb) { + DecoderInitCB init_cb) { // D3D11Decryptor does not support video decoding. - init_cb.Run(false); + std::move(init_cb).Run(false); } void D3D11Decryptor::DecryptAndDecodeAudio(
diff --git a/media/gpu/windows/d3d11_decryptor.h b/media/gpu/windows/d3d11_decryptor.h index 619d50cc..2f49a28 100644 --- a/media/gpu/windows/d3d11_decryptor.h +++ b/media/gpu/windows/d3d11_decryptor.h
@@ -29,9 +29,9 @@ DecryptCB decrypt_cb) final; void CancelDecrypt(StreamType stream_type) final; void InitializeAudioDecoder(const AudioDecoderConfig& config, - const DecoderInitCB& init_cb) final; + DecoderInitCB init_cb) final; void InitializeVideoDecoder(const VideoDecoderConfig& config, - const DecoderInitCB& init_cb) final; + DecoderInitCB init_cb) final; void DecryptAndDecodeAudio(scoped_refptr<DecoderBuffer> encrypted, const AudioDecodeCB& audio_decode_cb) final; void DecryptAndDecodeVideo(scoped_refptr<DecoderBuffer> encrypted,
diff --git a/media/mojo/clients/mojo_decryptor.cc b/media/mojo/clients/mojo_decryptor.cc index 593389f..de20dd32 100644 --- a/media/mojo/clients/mojo_decryptor.cc +++ b/media/mojo/clients/mojo_decryptor.cc
@@ -134,23 +134,23 @@ } void MojoDecryptor::InitializeAudioDecoder(const AudioDecoderConfig& config, - const DecoderInitCB& init_cb) { + DecoderInitCB init_cb) { DVLOG(1) << __func__; DCHECK(thread_checker_.CalledOnValidThread()); remote_decryptor_->InitializeAudioDecoder( - config, mojo::WrapCallbackWithDefaultInvokeIfNotRun( - ToOnceCallback(init_cb), false)); + config, + mojo::WrapCallbackWithDefaultInvokeIfNotRun(std::move(init_cb), false)); } void MojoDecryptor::InitializeVideoDecoder(const VideoDecoderConfig& config, - const DecoderInitCB& init_cb) { + DecoderInitCB init_cb) { DVLOG(1) << __func__; DCHECK(thread_checker_.CalledOnValidThread()); remote_decryptor_->InitializeVideoDecoder( - config, mojo::WrapCallbackWithDefaultInvokeIfNotRun( - ToOnceCallback(init_cb), false)); + config, + mojo::WrapCallbackWithDefaultInvokeIfNotRun(std::move(init_cb), false)); } void MojoDecryptor::DecryptAndDecodeAudio(
diff --git a/media/mojo/clients/mojo_decryptor.h b/media/mojo/clients/mojo_decryptor.h index 47dd90f..d5d57882 100644 --- a/media/mojo/clients/mojo_decryptor.h +++ b/media/mojo/clients/mojo_decryptor.h
@@ -40,9 +40,9 @@ DecryptCB decrypt_cb) final; void CancelDecrypt(StreamType stream_type) final; void InitializeAudioDecoder(const AudioDecoderConfig& config, - const DecoderInitCB& init_cb) final; + DecoderInitCB init_cb) final; void InitializeVideoDecoder(const VideoDecoderConfig& config, - const DecoderInitCB& init_cb) final; + DecoderInitCB init_cb) final; void DecryptAndDecodeAudio(scoped_refptr<DecoderBuffer> encrypted, const AudioDecodeCB& audio_decode_cb) final; void DecryptAndDecodeVideo(scoped_refptr<DecoderBuffer> encrypted, @@ -61,7 +61,6 @@ // TODO(xhwang): Update Decryptor to use OnceCallback. The change is easy, // but updating tests is hard given gmock doesn't support move-only types. // See http://crbug.com/751838 - using DecoderInitOnceCB = base::OnceCallback<DecoderInitCB::RunType>; using AudioDecodeOnceCB = base::OnceCallback<AudioDecodeCB::RunType>; using VideoDecodeOnceCB = base::OnceCallback<VideoDecodeCB::RunType>;
diff --git a/net/base/fuzzer_test_support.cc b/net/base/fuzzer_test_support.cc index 5bbba07..a977ebc 100644 --- a/net/base/fuzzer_test_support.cc +++ b/net/base/fuzzer_test_support.cc
@@ -6,6 +6,7 @@ #include "base/command_line.h" #include "base/i18n/icu_util.h" #include "base/logging.h" +#include "base/test/scoped_run_loop_timeout.h" #include "base/test/task_environment.h" #include "base/test/test_timeouts.h" @@ -25,6 +26,9 @@ task_environment = std::make_unique<base::test::TaskEnvironment>( base::test::TaskEnvironment::MainThreadType::IO); + increased_timeout_ = std::make_unique<base::test::ScopedRunLoopTimeout>( + FROM_HERE, TestTimeouts::action_max_timeout()); + // Set up ICU. ICU is used internally by GURL, which is used throughout the // //net code. Initializing ICU is important to prevent fuzztests from // asserting when handling non-ASCII urls. @@ -40,6 +44,9 @@ // TaskEnvironment between runs. std::unique_ptr<base::test::TaskEnvironment> task_environment; + // Fuzzing tests often need to Run() for longer than action_timeout(). + std::unique_ptr<base::test::ScopedRunLoopTimeout> increased_timeout_; + base::AtExitManager at_exit_manager; };
diff --git a/net/dns/public/doh_provider_list.cc b/net/dns/public/doh_provider_list.cc index 2999040..901697a 100644 --- a/net/dns/public/doh_provider_list.cc +++ b/net/dns/public/doh_provider_list.cc
@@ -14,12 +14,20 @@ std::set<std::string> dns_over_tls_hostnames, std::string dns_over_https_template, std::string ui_name, - std::string privacy_policy) + std::string privacy_policy, + bool display_globally, + std::set<std::string> display_countries) : provider(std::move(provider)), dns_over_tls_hostnames(std::move(dns_over_tls_hostnames)), dns_over_https_template(std::move(dns_over_https_template)), ui_name(std::move(ui_name)), - privacy_policy(std::move(privacy_policy)) { + privacy_policy(std::move(privacy_policy)), + display_globally(display_globally), + display_countries(std::move(display_countries)) { + DCHECK(!display_globally || display_countries.empty()); + for (const auto& display_country : display_countries) { + DCHECK_EQ(2u, display_country.size()); + } for (const std::string& ip_str : ip_strs) { IPAddress ip_address; bool success = ip_address.AssignFromIPLiteral(ip_str); @@ -42,7 +50,8 @@ "2a0d:2a00:2::1"}, {"adult-filter-dns.cleanbrowsing.org"} /* dot_hostnames */, "https://doh.cleanbrowsing.org/doh/adult-filter{?dns}", - "" /* ui_name */, "" /* privacy_policy */), + "" /* ui_name */, "" /* privacy_policy */, + false /* display_globally */, {} /* display_countries */), DohProviderEntry( "CleanBrowsingFamily", {"185.228.168.168", "185.228.169.168", @@ -50,14 +59,16 @@ {"family-filter-dns.cleanbrowsing.org"} /* dot_hostnames */, "https://doh.cleanbrowsing.org/doh/family-filter{?dns}", "CleanBrowsing family filter" /* ui_name */, - "https://cleanbrowsing.org/privacy" /* privacy_policy */), + "https://cleanbrowsing.org/privacy" /* privacy_policy */, + true /* display_globally */, {} /* display_countries */), DohProviderEntry( "CleanBrowsingSecure", {"185.228.168.9", "185.228.169.9", "2a0d:2a00:1::2", "2a0d:2a00:2::2"}, {"security-filter-dns.cleanbrowsing.org"} /* dot_hostnames */, "https://doh.cleanbrowsing.org/doh/security-filter{?dns}", - "" /* ui_name */, "" /* privacy_policy */), + "" /* ui_name */, "" /* privacy_policy */, + false /* display_globally */, {} /* display_countries */), DohProviderEntry( "Cloudflare", {"1.1.1.1", "1.0.0.1", "2606:4700:4700::1111", @@ -67,20 +78,23 @@ "https://chrome.cloudflare-dns.com/dns-query", "Cloudflare" /* ui_name */, "https://developers.cloudflare.com/1.1.1.1/commitment-to-privacy/" - "privacy-policy/privacy-policy/" /* privacy_policy */), + "privacy-policy/privacy-policy/" /* privacy_policy */, + true /* display_globally */, {} /* display_countries */), DohProviderEntry("Comcast", {"75.75.75.75", "75.75.76.76", "2001:558:feed::1", "2001:558:feed::2"}, {"dot.xfinity.com"} /* dns_over_tls_hostnames */, "https://doh.xfinity.com/dns-query{?dns}", - "" /* ui_name */, "" /* privacy_policy */), + "" /* ui_name */, "" /* privacy_policy */, + false /* display_globally */, + {} /* display_countries */), DohProviderEntry( "Dnssb", {"185.222.222.222", "185.184.222.222", "2a09::", "2a09::1"}, {"dns.sb"} /* dns_over_tls_hostnames */, {"https://doh.dns.sb/dns-query?no_ecs=true{&dns}", false /* use_post */}, - "DNS.SB" /* ui_name */, - "https://dns.sb/privacy" /* privacy_policy */), + "DNS.SB" /* ui_name */, "https://dns.sb/privacy" /* privacy_policy */, + false /* display_globally */, {"DE", "EE"} /* display_countries */), DohProviderEntry("Google", {"8.8.8.8", "8.8.4.4", "2001:4860:4860::8888", "2001:4860:4860::8844"}, @@ -89,7 +103,8 @@ "https://dns.google/dns-query{?dns}", "Google" /* ui_name */, "https://developers.google.com/speed/public-dns/" - "privacy" /* privacy_policy */), + "privacy" /* privacy_policy */, + true /* display_globally */, {} /* display_countries */), DohProviderEntry("OpenDNS", {"208.67.222.222", "208.67.220.220", "2620:119:35::35", "2620:119:53::53"}, @@ -97,32 +112,38 @@ "https://doh.opendns.com/dns-query{?dns}", "OpenDNS" /* ui_name */, "https://www.cisco.com/c/en/us/about/legal/" - "privacy-full.html" /* privacy_policy */), + "privacy-full.html" /* privacy_policy */, + true /* display_globally */, {} /* display_countries */), DohProviderEntry("OpenDNSFamily", {"208.67.222.123", "208.67.220.123", "2620:119:35::123", "2620:119:53::123"}, {""} /* dns_over_tls_hostnames */, "https://doh.familyshield.opendns.com/" "dns-query{?dns}", - "" /* ui_name */, "" /* privacy_policy */), + "" /* ui_name */, "" /* privacy_policy */, + false /* display_globally */, + {} /* display_countries */), DohProviderEntry( "Quad9Cdn", {"9.9.9.11", "149.112.112.11", "2620:fe::11", "2620:fe::fe:11"}, {"dns11.quad9.net"} /* dns_over_tls_hostnames */, "https://dns11.quad9.net/dns-query", "" /* ui_name */, - "" /* privacy_policy */), + "" /* privacy_policy */, false /* display_globally */, + {} /* display_countries */), DohProviderEntry( "Quad9Insecure", {"9.9.9.10", "149.112.112.10", "2620:fe::10", "2620:fe::fe:10"}, {"dns10.quad9.net"} /* dns_over_tls_hostnames */, "https://dns10.quad9.net/dns-query", "" /* ui_name */, - "" /* privacy_policy */), + "" /* privacy_policy */, false /* display_globally */, + {} /* display_countries */), DohProviderEntry( "Quad9Secure", {"9.9.9.9", "149.112.112.112", "2620:fe::fe", "2620:fe::9"}, {"dns.quad9.net", "dns9.quad9.net"} /* dns_over_tls_hostnames */, "https://dns.quad9.net/dns-query", "Quad9" /* ui_name */, - "https://www.quad9.net/home/privacy/" /* privacy_policy */), + "https://www.quad9.net/home/privacy/" /* privacy_policy */, + true /* display_globally */, {} /* display_countries */), }}; return *providers; }
diff --git a/net/dns/public/doh_provider_list.h b/net/dns/public/doh_provider_list.h index 2b50f41..299a3b4 100644 --- a/net/dns/public/doh_provider_list.h +++ b/net/dns/public/doh_provider_list.h
@@ -20,14 +20,20 @@ // menu for secure mode. To be eligible for auto-upgrade, entries must have a // non-empty |ip_strs| or non-empty |dns_over_tls_hostnames|. To be eligible for // the dropdown menu, entries must have non-empty |ui_name| and -// |privacy_policy|. +// |privacy_policy|. If |display_globally| is true, the entry is eligible for +// being displayed globally in the dropdown menu. If |display_globally| is +// false, |display_countries| should contain the two-letter ISO 3166-1 country +// codes, if any, where the entry is eligible for being displayed in the +// dropdown menu. struct NET_EXPORT DohProviderEntry { DohProviderEntry(std::string provider, std::set<std::string> ip_strs, std::set<std::string> dns_over_tls_hostnames, std::string dns_over_https_template, std::string ui_name, - std::string privacy_policy); + std::string privacy_policy, + bool display_globally, + std::set<std::string> display_countries); DohProviderEntry(const DohProviderEntry& other); ~DohProviderEntry(); @@ -37,6 +43,8 @@ const std::string dns_over_https_template; const std::string ui_name; const std::string privacy_policy; + bool display_globally; + std::set<std::string> display_countries; }; // Returns the full list of DoH providers. A subset of this list may be used
diff --git a/net/http/http_server_properties.h b/net/http/http_server_properties.h index dda8301..6c71351 100644 --- a/net/http/http_server_properties.h +++ b/net/http/http_server_properties.h
@@ -30,7 +30,6 @@ #include "net/base/network_isolation_key.h" #include "net/http/alternative_service.h" #include "net/http/broken_alternative_services.h" -#include "net/http/http_server_properties.h" #include "net/third_party/quiche/src/quic/core/quic_bandwidth.h" #include "net/third_party/quiche/src/quic/core/quic_server_id.h" #include "net/third_party/quiche/src/quic/core/quic_versions.h"
diff --git a/services/network/public/cpp/content_security_policy/csp_source_list.h b/services/network/public/cpp/content_security_policy/csp_source_list.h index 0cd3971..6df1891 100644 --- a/services/network/public/cpp/content_security_policy/csp_source_list.h +++ b/services/network/public/cpp/content_security_policy/csp_source_list.h
@@ -5,6 +5,7 @@ #ifndef SERVICES_NETWORK_PUBLIC_CPP_CONTENT_SECURITY_POLICY_CSP_SOURCE_LIST_H_ #define SERVICES_NETWORK_PUBLIC_CPP_CONTENT_SECURITY_POLICY_CSP_SOURCE_LIST_H_ +#include <string> #include <vector> #include "base/component_export.h"
diff --git a/services/tracing/perfetto/consumer_host_unittest.cc b/services/tracing/perfetto/consumer_host_unittest.cc index c5f3147..775e7ca4 100644 --- a/services/tracing/perfetto/consumer_host_unittest.cc +++ b/services/tracing/perfetto/consumer_host_unittest.cc
@@ -131,7 +131,7 @@ producer_ = std::make_unique<MockProducer>( base::StrCat({mojom::kPerfettoProducerNamePrefix, base::NumberToString(kProducerPid)}), - data_source_name, perfetto_service_->GetService(), + data_source_name, perfetto_service_.get(), std::move(on_datasource_registered), std::move(on_tracing_started), num_packets); }
diff --git a/services/tracing/perfetto/perfetto_integration_unittest.cc b/services/tracing/perfetto/perfetto_integration_unittest.cc index 9d5272a..65a4a79 100644 --- a/services/tracing/perfetto/perfetto_integration_unittest.cc +++ b/services/tracing/perfetto/perfetto_integration_unittest.cc
@@ -61,9 +61,8 @@ base::RunLoop producer_initialized_runloop; auto new_producer = std::make_unique<MockProducerHost>( - kPerfettoProducerName, kPerfettoTestDataSourceName, - perfetto_service()->GetService(), dummy_client.get(), - producer_initialized_runloop.QuitClosure()); + kPerfettoProducerName, kPerfettoTestDataSourceName, perfetto_service(), + dummy_client.get(), producer_initialized_runloop.QuitClosure()); producer_initialized_runloop.Run(); @@ -86,8 +85,8 @@ client_disabled_callback.QuitClosure()); auto producer = std::make_unique<MockProducerHost>( - kPerfettoProducerName, kPerfettoTestDataSourceName, - perfetto_service()->GetService(), client.get()); + kPerfettoProducerName, kPerfettoTestDataSourceName, perfetto_service(), + client.get()); client_enabled_callback.Run(); @@ -114,8 +113,8 @@ client_disabled_callback.QuitClosure()); auto producer = std::make_unique<MockProducerHost>( - kPerfettoProducerName, kPerfettoTestDataSourceName, - perfetto_service()->GetService(), client.get()); + kPerfettoProducerName, kPerfettoTestDataSourceName, perfetto_service(), + client.get()); base::RunLoop no_more_packets_runloop; MockConsumer consumer({kPerfettoTestDataSourceName}, @@ -158,8 +157,8 @@ /* num_data_sources = */ 1, client_enabled_callback.QuitClosure()); auto new_producer = std::make_unique<MockProducerHost>( - kPerfettoProducerName, kPerfettoTestDataSourceName, - perfetto_service()->GetService(), client.get()); + kPerfettoProducerName, kPerfettoTestDataSourceName, perfetto_service(), + client.get()); client_enabled_callback.Run(); @@ -190,8 +189,8 @@ auto client = std::make_unique<MockProducerClient>( /* num_data_sources = */ 1, client_enabled_callback.QuitClosure()); auto new_producer = std::make_unique<MockProducerHost>( - kPerfettoProducerName, kPerfettoTestDataSourceName, - perfetto_service()->GetService(), client.get()); + kPerfettoProducerName, kPerfettoTestDataSourceName, perfetto_service(), + client.get()); client_enabled_callback.Run(); @@ -253,8 +252,8 @@ client_disabled_callback.QuitClosure()); auto new_producer = std::make_unique<MockProducerHost>( - kPerfettoProducerName, kPerfettoTestDataSourceName, - perfetto_service()->GetService(), client.get()); + kPerfettoProducerName, kPerfettoTestDataSourceName, perfetto_service(), + client.get()); client_enabled_callback.Run(); @@ -304,8 +303,8 @@ base::RunLoop producer_initialized_runloop; auto new_producer = std::make_unique<MockProducerHost>( - kPerfettoProducerName, "fake_data_source", - perfetto_service()->GetService(), client.get()); + kPerfettoProducerName, "fake_data_source", perfetto_service(), + client.get()); base::RunLoop no_more_packets_runloop; MockConsumer consumer({"fake_data_source"}, perfetto_service()->GetService(), @@ -332,8 +331,8 @@ auto client1 = std::make_unique<MockProducerClient>( /* num_data_sources = */ 1, client1_enabled_callback.QuitClosure()); auto producer1 = std::make_unique<MockProducerHost>( - kPerfettoProducerName, kPerfettoTestDataSourceName, - perfetto_service()->GetService(), client1.get()); + kPerfettoProducerName, kPerfettoTestDataSourceName, perfetto_service(), + client1.get()); // Start the trace here, this is because we need to send the EnableTracing // call to client1, but constructing client2 will override the @@ -353,8 +352,8 @@ /* num_data_sources = */ 1, client2_enabled_callback.QuitClosure()); auto producer2 = std::make_unique<MockProducerHost>( - kPerfettoProducerName, kPerfettoTestDataSourceName, - perfetto_service()->GetService(), client2.get()); + kPerfettoProducerName, kPerfettoTestDataSourceName, perfetto_service(), + client2.get()); client2_enabled_callback.Run();
diff --git a/services/tracing/perfetto/system_perfetto_unittest.cc b/services/tracing/perfetto/system_perfetto_unittest.cc index d2e740e0..da7e886 100644 --- a/services/tracing/perfetto/system_perfetto_unittest.cc +++ b/services/tracing/perfetto/system_perfetto_unittest.cc
@@ -315,8 +315,8 @@ } }); auto local_producer_host = std::make_unique<MockProducerHost>( - kPerfettoProducerName, kPerfettoTestDataSourceName, - local_service()->GetService(), local_producer_client.get()); + kPerfettoProducerName, kPerfettoTestDataSourceName, local_service(), + local_producer_client.get()); system_consumer.WaitForAllDataSourcesStopped(); system_data_source_disabled_runloop.Run(); @@ -390,8 +390,8 @@ local_data_source_enabled_runloop.QuitClosure(), local_data_source_disabled_runloop.QuitClosure()); auto local_producer_host = std::make_unique<MockProducerHost>( - kPerfettoProducerName, kPerfettoTestDataSourceName, - local_service()->GetService(), local_producer_client.get()); + kPerfettoProducerName, kPerfettoTestDataSourceName, local_service(), + local_producer_client.get()); local_data_source_enabled_runloop.Run(); local_consumer->WaitForAllDataSourcesStarted(); @@ -519,8 +519,8 @@ local_data_source_enabled_runloop.QuitClosure(), local_data_source_disabled_runloop.QuitClosure()); auto local_producer_host = std::make_unique<MockProducerHost>( - kPerfettoProducerName, kPerfettoTestDataSourceName, - local_service()->GetService(), local_producer_client.get()); + kPerfettoProducerName, kPerfettoTestDataSourceName, local_service(), + local_producer_client.get()); MockConsumer local_consumer( {kPerfettoTestDataSourceName, base::StrCat({kPerfettoTestDataSourceName, "1"}), @@ -614,8 +614,8 @@ local_data_source_enabled_runloop.QuitClosure(), local_data_source_disabled_runloop.QuitClosure()); auto local_producer_host = std::make_unique<MockProducerHost>( - kPerfettoProducerName, kPerfettoTestDataSourceName, - local_service()->GetService(), local_producer_client.get()); + kPerfettoProducerName, kPerfettoTestDataSourceName, local_service(), + local_producer_client.get()); MockConsumer local_consumer( {kPerfettoTestDataSourceName, base::StrCat({kPerfettoTestDataSourceName, "1"}), @@ -781,11 +781,11 @@ PerfettoTracedProcess::ReconstructForTesting(producer_socket_.c_str()); if (base::android::BuildInfo::GetInstance()->is_debug_android()) { EXPECT_FALSE(PerfettoTracedProcess::Get() - ->SystemProducerForTesting() + ->system_producer() ->IsDummySystemProducerForTesting()); } else { EXPECT_TRUE(PerfettoTracedProcess::Get() - ->SystemProducerForTesting() + ->system_producer() ->IsDummySystemProducerForTesting()); } } @@ -797,7 +797,7 @@ // The feature list is ignored on debug android builds so we should have a // real system producer so just bail out of this test. EXPECT_FALSE(PerfettoTracedProcess::Get() - ->SystemProducerForTesting() + ->system_producer() ->IsDummySystemProducerForTesting()); return; } @@ -807,7 +807,7 @@ feature_list.InitAndEnableFeature(features::kEnablePerfettoSystemTracing); PerfettoTracedProcess::ReconstructForTesting(producer_socket_.c_str()); EXPECT_FALSE(PerfettoTracedProcess::Get() - ->SystemProducerForTesting() + ->system_producer() ->IsDummySystemProducerForTesting()); } { @@ -815,7 +815,7 @@ feature_list.InitAndDisableFeature(features::kEnablePerfettoSystemTracing); PerfettoTracedProcess::ReconstructForTesting(producer_socket_.c_str()); EXPECT_TRUE(PerfettoTracedProcess::Get() - ->SystemProducerForTesting() + ->system_producer() ->IsDummySystemProducerForTesting()); } }
diff --git a/services/tracing/perfetto/test_utils.cc b/services/tracing/perfetto/test_utils.cc index 6c1cf9e..ed0f85c 100644 --- a/services/tracing/perfetto/test_utils.cc +++ b/services/tracing/perfetto/test_utils.cc
@@ -302,7 +302,7 @@ MockProducerHost::MockProducerHost( const std::string& producer_name, const std::string& data_source_name, - perfetto::TracingService* service, + PerfettoService* service, MockProducerClient* producer_client, base::OnceClosure datasource_registered_callback) : producer_name_(producer_name), @@ -311,7 +311,7 @@ mojo::PendingRemote<mojom::ProducerClient> client; mojo::PendingRemote<mojom::ProducerHost> host_remote; auto client_receiver = client.InitWithNewPipeAndPassReceiver(); - Initialize(std::move(client), service, producer_name_); + Initialize(std::move(client), service->GetService(), producer_name_); receiver_.Bind(host_remote.InitWithNewPipeAndPassReceiver()); producer_client->BindClientAndHostPipesForTesting(std::move(client_receiver), std::move(host_remote)); @@ -347,7 +347,7 @@ MockProducer::MockProducer(const std::string& producer_name, const std::string& data_source_name, - perfetto::TracingService* service, + PerfettoService* service, base::OnceClosure on_datasource_registered, base::OnceClosure on_tracing_started, size_t num_packets) {
diff --git a/services/tracing/perfetto/test_utils.h b/services/tracing/perfetto/test_utils.h index 6d2b553c..3762f95 100644 --- a/services/tracing/perfetto/test_utils.h +++ b/services/tracing/perfetto/test_utils.h
@@ -10,6 +10,7 @@ #include <vector> #include "mojo/public/cpp/bindings/receiver.h" +#include "services/tracing/perfetto/perfetto_service.h" #include "services/tracing/perfetto/producer_host.h" #include "services/tracing/public/cpp/perfetto/perfetto_traced_process.h" #include "services/tracing/public/cpp/perfetto/producer_client.h" @@ -161,7 +162,7 @@ MockProducerHost( const std::string& producer_name, const std::string& data_source_name, - perfetto::TracingService* service, + PerfettoService* service, MockProducerClient* producer_client, base::OnceClosure datasource_registered_callback = base::OnceClosure()); ~MockProducerHost() override; @@ -188,7 +189,7 @@ public: MockProducer(const std::string& producer_name, const std::string& data_source_name, - perfetto::TracingService* service, + PerfettoService* service, base::OnceClosure on_datasource_registered, base::OnceClosure on_tracing_started, size_t num_packets = 10);
diff --git a/services/tracing/public/cpp/perfetto/dummy_producer.cc b/services/tracing/public/cpp/perfetto/dummy_producer.cc index 323d7e3..4669dda 100644 --- a/services/tracing/public/cpp/perfetto/dummy_producer.cc +++ b/services/tracing/public/cpp/perfetto/dummy_producer.cc
@@ -37,6 +37,7 @@ const PerfettoTracedProcess::DataSourceBase* const data_source) {} // SystemProducer implementation. +void DummyProducer::ConnectToSystemService() {} void DummyProducer::ActivateTriggers(const std::vector<std::string>&) {} void DummyProducer::DisconnectWithReply( base::OnceClosure on_disconnect_complete) {
diff --git a/services/tracing/public/cpp/perfetto/dummy_producer.h b/services/tracing/public/cpp/perfetto/dummy_producer.h index e20d074..b03cae5 100644 --- a/services/tracing/public/cpp/perfetto/dummy_producer.h +++ b/services/tracing/public/cpp/perfetto/dummy_producer.h
@@ -38,6 +38,7 @@ const PerfettoTracedProcess::DataSourceBase* const data_source) override; // SystemProducer implementation. + void ConnectToSystemService() override; void ActivateTriggers(const std::vector<std::string>& triggers) override; void DisconnectWithReply(base::OnceClosure on_disconnect_complete) override; bool IsDummySystemProducerForTesting() override;
diff --git a/services/tracing/public/cpp/perfetto/perfetto_traced_process.cc b/services/tracing/public/cpp/perfetto/perfetto_traced_process.cc index 8e8a298..ae29b913 100644 --- a/services/tracing/public/cpp/perfetto/perfetto_traced_process.cc +++ b/services/tracing/public/cpp/perfetto/perfetto_traced_process.cc
@@ -77,19 +77,9 @@ : PerfettoTracedProcess(MaybeSocket()) {} PerfettoTracedProcess::PerfettoTracedProcess(const char* system_socket) - : producer_client_(std::make_unique<ProducerClient>(GetTaskRunner())) { - CHECK(IsTracingInitialized()); + : producer_client_(std::make_unique<ProducerClient>(GetTaskRunner())), + system_producer_(NewSystemProducer(GetTaskRunner(), system_socket)) { DETACH_FROM_SEQUENCE(sequence_checker_); - // All communication with the system Perfetto service should occur on a single - // sequence. To ensure we set up the socket correctly we construct the - // |system_producer_endpoint_| on the task runner it will use. - GetTaskRunner()->GetOrCreateTaskRunner()->PostTask( - FROM_HERE, base::BindOnce( - [](PerfettoTracedProcess* ptr, const char* socket) { - ptr->system_producer_endpoint_ = - NewSystemProducer(GetTaskRunner(), socket); - }, - base::Unretained(this), system_socket)); } PerfettoTracedProcess::~PerfettoTracedProcess() {} @@ -118,8 +108,8 @@ std::unique_ptr<SystemProducer> PerfettoTracedProcess::SetSystemProducerForTesting( std::unique_ptr<SystemProducer> producer) { - auto old_for_testing = std::move(system_producer_endpoint_); - system_producer_endpoint_ = std::move(producer); + auto old_for_testing = std::move(system_producer_); + system_producer_ = std::move(producer); return old_for_testing; } @@ -156,10 +146,9 @@ PerfettoTracedProcess::Get(); PerfettoTracedProcess::GetTaskRunner()->GetOrCreateTaskRunner()->PostTask( FROM_HERE, base::BindOnce([]() { - auto* producer = - PerfettoTracedProcess::Get()->SystemProducerForTesting(); - CHECK(producer); - producer->ResetSequenceForTesting(); + PerfettoTracedProcess::Get() + ->system_producer() + ->ResetSequenceForTesting(); })); } @@ -206,13 +195,13 @@ // the |producer_client_| go. The system Producer will periodically attempt to // reconnect if we call DisconnectWithReply(). if (producer == producer_client_.get()) { - if (system_producer_endpoint_->IsTracingActive()) { - system_producer_endpoint_->DisconnectWithReply(std::move(start_tracing)); + if (system_producer_->IsTracingActive()) { + system_producer_->DisconnectWithReply(std::move(start_tracing)); return true; } - } else if (producer == system_producer_endpoint_.get()) { + } else if (producer == system_producer_.get()) { if (producer_client_->IsTracingActive()) { - system_producer_endpoint_->DisconnectWithReply(base::DoNothing().Once()); + system_producer_->DisconnectWithReply(base::DoNothing().Once()); return false; } } else { @@ -231,7 +220,6 @@ void PerfettoTracedProcess::ActivateSystemTriggers( const std::vector<std::string>& triggers) { - DCHECK(system_producer_endpoint_.get()); if (!GetTaskRunner()->GetOrCreateTaskRunner()->RunsTasksInCurrentSequence()) { GetTaskRunner()->GetOrCreateTaskRunner()->PostTask( FROM_HERE, @@ -239,15 +227,15 @@ base::Unretained(this), triggers)); return; } - system_producer_endpoint_->ActivateTriggers(triggers); + system_producer_->ActivateTriggers(triggers); } -ProducerClient* PerfettoTracedProcess::producer_client() { +ProducerClient* PerfettoTracedProcess::producer_client() const { return producer_client_.get(); } -SystemProducer* PerfettoTracedProcess::SystemProducerForTesting() { - return system_producer_endpoint_.get(); +SystemProducer* PerfettoTracedProcess::system_producer() const { + return system_producer_.get(); } void PerfettoTracedProcess::AddDataSourceOnSequence( @@ -255,10 +243,8 @@ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); if (data_sources_.insert(data_source).second) { - DCHECK(producer_client_); - DCHECK(system_producer_endpoint_); producer_client_->NewDataSourceAdded(data_source); - system_producer_endpoint_->NewDataSourceAdded(data_source); + system_producer_->NewDataSourceAdded(data_source); } } } // namespace tracing
diff --git a/services/tracing/public/cpp/perfetto/perfetto_traced_process.h b/services/tracing/public/cpp/perfetto/perfetto_traced_process.h index b71d2300..97ea9b3b 100644 --- a/services/tracing/public/cpp/perfetto/perfetto_traced_process.h +++ b/services/tracing/public/cpp/perfetto/perfetto_traced_process.h
@@ -69,8 +69,8 @@ // Returns the process-wide instance of the PerfettoTracedProcess. static PerfettoTracedProcess* Get(); - ProducerClient* producer_client(); - SystemProducer* SystemProducerForTesting(); + ProducerClient* producer_client() const; + SystemProducer* system_producer() const; ~PerfettoTracedProcess(); @@ -132,7 +132,7 @@ // A PerfettoProducer that connects to the system Perfetto service. If there // is no system Perfetto service this pointer will be valid, but all function // calls will be noops. - std::unique_ptr<SystemProducer> system_producer_endpoint_; + std::unique_ptr<SystemProducer> system_producer_; SEQUENCE_CHECKER(sequence_checker_); DISALLOW_COPY_AND_ASSIGN(PerfettoTracedProcess);
diff --git a/services/tracing/public/cpp/perfetto/posix_system_producer.cc b/services/tracing/public/cpp/perfetto/posix_system_producer.cc index 47580d68..b97c6d4a 100644 --- a/services/tracing/public/cpp/perfetto/posix_system_producer.cc +++ b/services/tracing/public/cpp/perfetto/posix_system_producer.cc
@@ -12,6 +12,7 @@ #include "base/trace_event/trace_log.h" #include "build/build_config.h" #include "services/tracing/public/cpp/perfetto/shared_memory.h" +#include "services/tracing/public/cpp/trace_startup.h" #include "services/tracing/public/cpp/traced_process_impl.h" #include "third_party/perfetto/include/perfetto/ext/tracing/core/commit_data_request.h" #include "third_party/perfetto/include/perfetto/ext/tracing/core/shared_memory_arbiter.h" @@ -54,7 +55,7 @@ : SystemProducer(task_runner), socket_name_(socket), connection_backoff_ms_(kInitialConnectionBackoffMs) { - Connect(); + DETACH_FROM_SEQUENCE(sequence_checker_); } PosixSystemProducer::~PosixSystemProducer() { @@ -62,8 +63,9 @@ } void PosixSystemProducer::SetDisallowPreAndroidPieForTesting(bool disallow) { - disallow_pre_android_pie = disallow; - if (!disallow && state_ == State::kDisconnected) { + bool was_disallowed = SkipIfOnAndroidAndPreAndroidPie(); + disallow_pre_android_pie_ = disallow; + if (!disallow && was_disallowed && state_ == State::kDisconnected) { // If previously we would not have connected, we now attempt to connect // since we are now skipping a check. Connect(); @@ -72,17 +74,23 @@ void PosixSystemProducer::SetNewSocketForTesting(const char* socket) { socket_name_ = socket; + + if (state_ == State::kDisconnected) { + // Not connected yet, wait for ConnectToSystemService(). + return; + } + if (state_ == State::kConnected) { // If we are fully connected we need to reset the service before we // reconnect. DisconnectWithReply(base::BindOnce(&PosixSystemProducer::OnDisconnect, base::Unretained(this))); - } else { - // In any other case we just need to do a normal disconnect and - // DisconnectWithReply will ensure we set up the retries on the new - // |socket|. - DisconnectWithReply(base::OnceClosure()); + return; } + + // In any other case, we just need to do a normal disconnect and + // DisconnectWithReply will ensure we set up the retries on the new |socket|. + DisconnectWithReply(base::OnceClosure()); } perfetto::SharedMemoryArbiter* PosixSystemProducer::MaybeSharedMemoryArbiter() { @@ -124,6 +132,13 @@ return data_sources_tracing_ > 0; } +void PosixSystemProducer::ConnectToSystemService() { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + CHECK(IsTracingInitialized()); + DCHECK(state_ == State::kDisconnected); + Connect(); +} + void PosixSystemProducer::ActivateTriggers( const std::vector<std::string>& triggers) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); @@ -360,7 +375,7 @@ bool PosixSystemProducer::SkipIfOnAndroidAndPreAndroidPie() const { #if defined(OS_ANDROID) - return disallow_pre_android_pie && + return disallow_pre_android_pie_ && base::android::BuildInfo::GetInstance()->sdk_int() < base::android::SDK_VERSION_P; #endif // defined(OS_ANDROID)
diff --git a/services/tracing/public/cpp/perfetto/posix_system_producer.h b/services/tracing/public/cpp/perfetto/posix_system_producer.h index 33c7b92f9..7aa6771 100644 --- a/services/tracing/public/cpp/perfetto/posix_system_producer.h +++ b/services/tracing/public/cpp/perfetto/posix_system_producer.h
@@ -60,6 +60,7 @@ bool IsTracingActive() override; // SystemProducer implementation. + void ConnectToSystemService() override; void ActivateTriggers(const std::vector<std::string>& triggers) override; // When Chrome's tracing service wants to trace it always takes priority over // the system Perfetto service. To cleanly shut down and let the system @@ -123,7 +124,7 @@ std::string socket_name_; uint32_t connection_backoff_ms_; uint64_t data_sources_tracing_ = 0; - bool disallow_pre_android_pie = true; + bool disallow_pre_android_pie_ = true; State state_ = State::kDisconnected; std::vector<base::OnceClosure> on_disconnect_callbacks_;
diff --git a/services/tracing/public/cpp/perfetto/system_producer.h b/services/tracing/public/cpp/perfetto/system_producer.h index b3329cdc..9f4a488f 100644 --- a/services/tracing/public/cpp/perfetto/system_producer.h +++ b/services/tracing/public/cpp/perfetto/system_producer.h
@@ -16,6 +16,13 @@ SystemProducer(PerfettoTaskRunner* task_runner); ~SystemProducer() override; + // Initiate connection to the system service. Should only be called once on + // the producer's task runner (while disconnected) and after the thread pool + // was initialized. + virtual void ConnectToSystemService() = 0; + + // Send the given trigger names to the system service. Should only be called + // on the producer's task runner. virtual void ActivateTriggers(const std::vector<std::string>& triggers) = 0; // Since Chrome does not support concurrent tracing sessions, and system
diff --git a/services/tracing/public/cpp/trace_startup.cc b/services/tracing/public/cpp/trace_startup.cc index 23b2baa..a373fb66 100644 --- a/services/tracing/public/cpp/trace_startup.cc +++ b/services/tracing/public/cpp/trace_startup.cc
@@ -11,6 +11,7 @@ #include "components/tracing/common/trace_startup_config.h" #include "components/tracing/common/trace_to_console.h" #include "components/tracing/common/tracing_switches.h" +#include "services/tracing/public/cpp/perfetto/system_producer.h" #include "services/tracing/public/cpp/perfetto/trace_event_data_source.h" #include "services/tracing/public/cpp/stack_sampling/tracing_sampler_profiler.h" #include "services/tracing/public/cpp/trace_event_agent.h" @@ -110,9 +111,17 @@ if (ShouldSetupSystemTracing()) { // We have to ensure that we register all the data sources we care about. TraceEventAgent::GetInstance(); - // To ensure System tracing connects we have to initialize the process wide - // state. This Get() call ensures that the constructor has run. - PerfettoTracedProcess::Get(); + // Connect to system service if available (currently a no-op except on + // Posix). Has to happen on the producer's sequence, as all communication + // with the system Perfetto service should occur on a single sequence. + PerfettoTracedProcess::Get() + ->GetTaskRunner() + ->GetOrCreateTaskRunner() + ->PostTask(FROM_HERE, base::BindOnce([]() { + PerfettoTracedProcess::Get() + ->system_producer() + ->ConnectToSystemService(); + })); } }
diff --git a/testing/buildbot/chromium.android.json b/testing/buildbot/chromium.android.json index f391f8e..4b56849 100644 --- a/testing/buildbot/chromium.android.json +++ b/testing/buildbot/chromium.android.json
@@ -57,55 +57,6 @@ }, { "args": [ - "--disable-field-trial-config", - "--gs-results-bucket=chromium-result-details", - "--recover-devices" - ], - "merge": { - "args": [ - "--bucket", - "chromium-result-details", - "--test-name", - "system_webview_shell_layout_test_apk_no_field_trial" - ], - "script": "//build/android/pylib/results/presentation/test_results_presentation.py" - }, - "name": "system_webview_shell_layout_test_apk_no_field_trial", - "swarming": { - "can_use_on_swarming_builders": true, - "cipd_packages": [ - { - "cipd_package": "infra/tools/luci/logdog/butler/${platform}", - "location": "bin", - "revision": "git_revision:ff387eadf445b24c935f1cf7d6ddd279f8a6b04c" - } - ], - "dimension_sets": [ - { - "device_os": "LMY48I", - "device_os_flavor": "google", - "device_os_type": "userdebug", - "device_type": "hammerhead", - "os": "Android" - } - ], - "expiration": 10800, - "output_links": [ - { - "link": [ - "https://luci-logdog.appspot.com/v/?s", - "=android%2Fswarming%2Flogcats%2F", - "${TASK_ID}%2F%2B%2Funified_logcats" - ], - "name": "shard #${SHARD_INDEX} logcats" - } - ] - }, - "test": "system_webview_shell_layout_test_apk", - "test_target": "//android_webview/tools/system_webview_shell:system_webview_shell_layout_test_apk" - }, - { - "args": [ "--gs-results-bucket=chromium-result-details", "--recover-devices" ], @@ -360,54 +311,6 @@ }, { "args": [ - "--disable-field-trial-config", - "--gs-results-bucket=chromium-result-details", - "--recover-devices" - ], - "merge": { - "args": [ - "--bucket", - "chromium-result-details", - "--test-name", - "system_webview_shell_layout_test_apk_no_field_trial" - ], - "script": "//build/android/pylib/results/presentation/test_results_presentation.py" - }, - "name": "system_webview_shell_layout_test_apk_no_field_trial", - "swarming": { - "can_use_on_swarming_builders": true, - "cipd_packages": [ - { - "cipd_package": "infra/tools/luci/logdog/butler/${platform}", - "location": "bin", - "revision": "git_revision:ff387eadf445b24c935f1cf7d6ddd279f8a6b04c" - } - ], - "dimension_sets": [ - { - "device_os": "MMB29Q", - "device_os_flavor": "google", - "device_os_type": "userdebug", - "device_type": "bullhead", - "os": "Android" - } - ], - "output_links": [ - { - "link": [ - "https://luci-logdog.appspot.com/v/?s", - "=android%2Fswarming%2Flogcats%2F", - "${TASK_ID}%2F%2B%2Funified_logcats" - ], - "name": "shard #${SHARD_INDEX} logcats" - } - ] - }, - "test": "system_webview_shell_layout_test_apk", - "test_target": "//android_webview/tools/system_webview_shell:system_webview_shell_layout_test_apk" - }, - { - "args": [ "--gs-results-bucket=chromium-result-details", "--recover-devices" ], @@ -704,54 +607,6 @@ }, { "args": [ - "--disable-field-trial-config", - "--gs-results-bucket=chromium-result-details", - "--recover-devices" - ], - "merge": { - "args": [ - "--bucket", - "chromium-result-details", - "--test-name", - "system_webview_shell_layout_test_apk_no_field_trial" - ], - "script": "//build/android/pylib/results/presentation/test_results_presentation.py" - }, - "name": "system_webview_shell_layout_test_apk_no_field_trial", - "swarming": { - "can_use_on_swarming_builders": true, - "cipd_packages": [ - { - "cipd_package": "infra/tools/luci/logdog/butler/${platform}", - "location": "bin", - "revision": "git_revision:ff387eadf445b24c935f1cf7d6ddd279f8a6b04c" - } - ], - "dimension_sets": [ - { - "device_os": "NRD90M", - "device_os_flavor": "google", - "device_os_type": "userdebug", - "device_type": "bullhead", - "os": "Android" - } - ], - "output_links": [ - { - "link": [ - "https://luci-logdog.appspot.com/v/?s", - "=android%2Fswarming%2Flogcats%2F", - "${TASK_ID}%2F%2B%2Funified_logcats" - ], - "name": "shard #${SHARD_INDEX} logcats" - } - ] - }, - "test": "system_webview_shell_layout_test_apk", - "test_target": "//android_webview/tools/system_webview_shell:system_webview_shell_layout_test_apk" - }, - { - "args": [ "--gs-results-bucket=chromium-result-details", "--recover-devices" ], @@ -1144,54 +999,6 @@ }, { "args": [ - "--disable-field-trial-config", - "--gs-results-bucket=chromium-result-details", - "--recover-devices" - ], - "merge": { - "args": [ - "--bucket", - "chromium-result-details", - "--test-name", - "system_webview_shell_layout_test_apk_no_field_trial" - ], - "script": "//build/android/pylib/results/presentation/test_results_presentation.py" - }, - "name": "system_webview_shell_layout_test_apk_no_field_trial", - "swarming": { - "can_use_on_swarming_builders": true, - "cipd_packages": [ - { - "cipd_package": "infra/tools/luci/logdog/butler/${platform}", - "location": "bin", - "revision": "git_revision:ff387eadf445b24c935f1cf7d6ddd279f8a6b04c" - } - ], - "dimension_sets": [ - { - "device_os": "OPM4.171019.021.P2", - "device_os_flavor": "google", - "device_os_type": "userdebug", - "device_type": "walleye", - "os": "Android" - } - ], - "output_links": [ - { - "link": [ - "https://luci-logdog.appspot.com/v/?s", - "=android%2Fswarming%2Flogcats%2F", - "${TASK_ID}%2F%2B%2Funified_logcats" - ], - "name": "shard #${SHARD_INDEX} logcats" - } - ] - }, - "test": "system_webview_shell_layout_test_apk", - "test_target": "//android_webview/tools/system_webview_shell:system_webview_shell_layout_test_apk" - }, - { - "args": [ "--gs-results-bucket=chromium-result-details", "--recover-devices" ], @@ -1584,54 +1391,6 @@ }, { "args": [ - "--disable-field-trial-config", - "--gs-results-bucket=chromium-result-details", - "--recover-devices" - ], - "merge": { - "args": [ - "--bucket", - "chromium-result-details", - "--test-name", - "system_webview_shell_layout_test_apk_no_field_trial" - ], - "script": "//build/android/pylib/results/presentation/test_results_presentation.py" - }, - "name": "system_webview_shell_layout_test_apk_no_field_trial", - "swarming": { - "can_use_on_swarming_builders": true, - "cipd_packages": [ - { - "cipd_package": "infra/tools/luci/logdog/butler/${platform}", - "location": "bin", - "revision": "git_revision:ff387eadf445b24c935f1cf7d6ddd279f8a6b04c" - } - ], - "dimension_sets": [ - { - "device_os": "PQ3A.190801.002", - "device_os_flavor": "google", - "device_os_type": "userdebug", - "device_type": "walleye", - "os": "Android" - } - ], - "output_links": [ - { - "link": [ - "https://luci-logdog.appspot.com/v/?s", - "=android%2Fswarming%2Flogcats%2F", - "${TASK_ID}%2F%2B%2Funified_logcats" - ], - "name": "shard #${SHARD_INDEX} logcats" - } - ] - }, - "test": "system_webview_shell_layout_test_apk", - "test_target": "//android_webview/tools/system_webview_shell:system_webview_shell_layout_test_apk" - }, - { - "args": [ "--gs-results-bucket=chromium-result-details", "--recover-devices" ],
diff --git a/testing/buildbot/chromium.chromiumos.json b/testing/buildbot/chromium.chromiumos.json index a30713c9..7a7a289 100644 --- a/testing/buildbot/chromium.chromiumos.json +++ b/testing/buildbot/chromium.chromiumos.json
@@ -382,6 +382,35 @@ }, { "args": [ + "--vpython-dir=../../vpython_dir_linux_amd64" + ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/luci/vpython/linux-amd64", + "location": "vpython_dir_linux_amd64", + "revision": "git_revision:9a931a5307c46b16b1c12e01e8239d4a73830b89" + } + ], + "dimension_sets": [ + { + "kvm": "1", + "os": "Ubuntu-16.04", + "pool": "chromium.tests.cros.vm" + } + ], + "shards": 3 + }, + "test": "net_unittests", + "test_target": "//net:net_unittests" + }, + { + "args": [ "--stop-ui" ], "merge": {
diff --git a/testing/buildbot/test_suite_exceptions.pyl b/testing/buildbot/test_suite_exceptions.pyl index bdfc88c..3a8245e 100644 --- a/testing/buildbot/test_suite_exceptions.pyl +++ b/testing/buildbot/test_suite_exceptions.pyl
@@ -1048,7 +1048,6 @@ }, 'net_unittests': { 'remove_from': [ - 'chromeos-amd64-generic-rel', # https://crbug.com/1053547 'fuchsia-fyi-arm64-rel', # https://crbug.com/877248 'fuchsia-fyi-x64-dbg', # https://crbug.com/844416 ],
diff --git a/testing/buildbot/test_suites.pyl b/testing/buildbot/test_suites.pyl index de662d2..50387bb 100644 --- a/testing/buildbot/test_suites.pyl +++ b/testing/buildbot/test_suites.pyl
@@ -3302,15 +3302,6 @@ 'system_webview_shell_layout_test_apk': {}, }, - 'system_webview_shell_instrumentation_tests_no_field_trial': { - 'system_webview_shell_layout_test_apk_no_field_trial': { - 'args': [ - '--disable-field-trial-config', - ], - 'test': 'system_webview_shell_layout_test_apk', - }, - }, - 'system_webview_wpt': { 'system_webview_wpt': { 'swarming': { @@ -4400,7 +4391,6 @@ 'webview_bot_all_gtests': [ 'system_webview_shell_instrumentation_tests', - 'system_webview_shell_instrumentation_tests_no_field_trial', 'webview_bot_instrumentation_test_apk_gtest', 'webview_bot_instrumentation_test_apk_no_field_trial_gtest', 'webview_bot_unittests_gtest', @@ -4421,7 +4411,6 @@ 'webview_bot_system_gtests': [ 'system_webview_shell_instrumentation_tests', - 'system_webview_shell_instrumentation_tests_no_field_trial', 'webview_cts_tests_gtest', 'webview_cts_tests_gtest_no_field_trial', 'webview_ui_instrumentation_tests',
diff --git a/testing/buildbot/waterfalls.pyl b/testing/buildbot/waterfalls.pyl index 4aef817..be56a13 100644 --- a/testing/buildbot/waterfalls.pyl +++ b/testing/buildbot/waterfalls.pyl
@@ -3692,9 +3692,6 @@ 'additional_compile_targets': [ 'cast_test_lists', ], - 'args': [ - '--qemu-require-kvm', - ], }, 'fuchsia-x64-dbg': { 'additional_compile_targets': [
diff --git a/testing/test_env.py b/testing/test_env.py index c8c27524..8734f41 100755 --- a/testing/test_env.py +++ b/testing/test_env.py
@@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file.
diff --git a/third_party/blink/perf_tests/display_locking/abs_pos_outer_sizes_change.html b/third_party/blink/perf_tests/display_locking/abs_pos_outer_sizes_change.html index f78165e0..69a7d31 100644 --- a/third_party/blink/perf_tests/display_locking/abs_pos_outer_sizes_change.html +++ b/third_party/blink/perf_tests/display_locking/abs_pos_outer_sizes_change.html
@@ -65,7 +65,7 @@ for (let i = 0; i < n; ++i) { const clone = specimen.cloneNode(true); if (i > 0) - clone.renderSubtree = "invisible skip-viewport-activation"; + clone.style = "render-subtree: invisible skip-viewport-activation"; document.body.appendChild(clone); } }
diff --git a/third_party/blink/perf_tests/display_locking/forced_layout_on_locked_el.html b/third_party/blink/perf_tests/display_locking/forced_layout_on_locked_el.html index c4d8a503f..6325d1d4 100644 --- a/third_party/blink/perf_tests/display_locking/forced_layout_on_locked_el.html +++ b/third_party/blink/perf_tests/display_locking/forced_layout_on_locked_el.html
@@ -24,7 +24,7 @@ </head> <body> <template id="template"> -<div class="box" rendersubtree="invisible skip-viewport-activation"> +<div class="box" style="render-subtree: invisible skip-viewport-activation"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque ante dui, posuere at pretium suscipit, condimentum at augue. </div>
diff --git a/third_party/blink/perf_tests/display_locking/inner_sizes_change.html b/third_party/blink/perf_tests/display_locking/inner_sizes_change.html index 87d8f77..c063a30 100644 --- a/third_party/blink/perf_tests/display_locking/inner_sizes_change.html +++ b/third_party/blink/perf_tests/display_locking/inner_sizes_change.html
@@ -51,7 +51,7 @@ for (let i = 0; i < n; ++i) { const clone = specimen.cloneNode(true); if (i > 0) - clone.renderSubtree = "invisible skip-viewport-activation"; + clone.style = "render-subtree: invisible skip-viewport-activation"; document.body.appendChild(clone); } }
diff --git a/third_party/blink/perf_tests/display_locking/outer_sizes_change.html b/third_party/blink/perf_tests/display_locking/outer_sizes_change.html index 5ed1d268..45eb341 100644 --- a/third_party/blink/perf_tests/display_locking/outer_sizes_change.html +++ b/third_party/blink/perf_tests/display_locking/outer_sizes_change.html
@@ -50,7 +50,7 @@ for (let i = 0; i < n; ++i) { const clone = specimen.cloneNode(true); if (i > 0) - clone.renderSubtree = "invisible skip-viewport-activation"; + clone.style = "render-subtree: invisible skip-viewport-activation"; document.body.appendChild(clone); } }
diff --git a/third_party/blink/perf_tests/display_locking/outer_sizes_change_activatable.html b/third_party/blink/perf_tests/display_locking/outer_sizes_change_activatable.html index cb06605..bbb0dce 100644 --- a/third_party/blink/perf_tests/display_locking/outer_sizes_change_activatable.html +++ b/third_party/blink/perf_tests/display_locking/outer_sizes_change_activatable.html
@@ -30,7 +30,7 @@ <body> <!-- node template from which to construct items --> <template id="node_template"> -<div class="container" rendersubtree="invisible skip-viewport-activation"> +<div class="container" style="render-subtree: invisible skip-viewport-activation"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque ante dui, posuere at pretium suscipit, condimentum at augue. <div class="box">
diff --git a/third_party/blink/perf_tests/display_locking/outer_sizes_change_iframe.html b/third_party/blink/perf_tests/display_locking/outer_sizes_change_iframe.html index 8cf1fde..b2ec0aa 100644 --- a/third_party/blink/perf_tests/display_locking/outer_sizes_change_iframe.html +++ b/third_party/blink/perf_tests/display_locking/outer_sizes_change_iframe.html
@@ -72,7 +72,7 @@ for (let i = 0; i < n; ++i) { const clone = specimen.cloneNode(true); if (i > 0) - clone.renderSubtree = "invisible skip-viewport-activation"; + clone.style = "render-subtree: invisible skip-viewport-activation"; document.body.appendChild(clone); } }
diff --git a/third_party/blink/perf_tests/display_locking/unlock_top_items.html b/third_party/blink/perf_tests/display_locking/unlock_top_items.html index cd32401e..aa5a825 100644 --- a/third_party/blink/perf_tests/display_locking/unlock_top_items.html +++ b/third_party/blink/perf_tests/display_locking/unlock_top_items.html
@@ -47,7 +47,7 @@ for (let i = 0; i < n; ++i) { const clone = specimen.cloneNode(true); clone.id = "id" + i; - clone.renderSubtree = "invisible skip-viewport-activation"; + clone.style = "render-subtree: invisible skip-viewport-activation"; document.body.appendChild(clone); } } @@ -56,7 +56,7 @@ function commitNextLock() { const element = document.getElementById("id" + nextId); ++nextId; - element.renderSubtree = ""; + element.style = ""; } let testDone = false;
diff --git a/third_party/blink/perf_tests/display_locking/unlock_top_items_nested.html b/third_party/blink/perf_tests/display_locking/unlock_top_items_nested.html index e504189..4ed9722 100644 --- a/third_party/blink/perf_tests/display_locking/unlock_top_items_nested.html +++ b/third_party/blink/perf_tests/display_locking/unlock_top_items_nested.html
@@ -78,13 +78,13 @@ currentContainer = document.createElement("div"); currentContainer.classList = "container large"; if (i > 0) - currentContainer.renderSubtree = "invisible skip-viewport-activation"; + currentContainer.style = "render-subtree: invisible skip-viewport-activation"; document.body.appendChild(currentContainer); } const clone = specimen.cloneNode(true); clone.id = "id" + i; clone.classList = "container small"; - clone.renderSubtree = "invisible skip-viewport-activation"; + clone.style = "render-subtree: invisible skip-viewport-activation"; currentContainer.appendChild(clone); } } @@ -93,7 +93,7 @@ function commitNextLock() { const element = document.getElementById("id" + nextId); ++nextId; - element.renderSubtree = ""; + element.style = ""; } let testDone = false;
diff --git a/third_party/blink/public/BUILD.gn b/third_party/blink/public/BUILD.gn index a807df9..6fb2ef1f 100644 --- a/third_party/blink/public/BUILD.gn +++ b/third_party/blink/public/BUILD.gn
@@ -212,6 +212,7 @@ "platform/web_inband_text_track.h", "platform/web_inband_text_track_client.h", "platform/web_input_event_result.h", + "platform/web_insecure_request_policy.h", "platform/web_intrinsic_sizing_info.h", "platform/web_isolate.h", "platform/web_isolated_world_ids.h",
diff --git a/third_party/blink/public/common/BUILD.gn b/third_party/blink/public/common/BUILD.gn index c9936f6..e593c44 100644 --- a/third_party/blink/public/common/BUILD.gn +++ b/third_party/blink/public/common/BUILD.gn
@@ -143,7 +143,6 @@ "screen_orientation/web_screen_orientation_lock_type.h", "screen_orientation/web_screen_orientation_type.h", "security/security_style.h", - "security_context/insecure_request_policy.h", "service_worker/service_worker_status_code.h", "service_worker/service_worker_type_converters.h", "service_worker/service_worker_types.h",
diff --git a/third_party/blink/public/common/security_context/insecure_request_policy.h b/third_party/blink/public/common/security_context/insecure_request_policy.h deleted file mode 100644 index a31c89c..0000000 --- a/third_party/blink/public/common/security_context/insecure_request_policy.h +++ /dev/null
@@ -1,44 +0,0 @@ -// Copyright 2020 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be found -// in the LICENSE file. - -#ifndef THIRD_PARTY_BLINK_PUBLIC_COMMON_SECURITY_CONTEXT_INSECURE_REQUEST_POLICY_H_ -#define THIRD_PARTY_BLINK_PUBLIC_COMMON_SECURITY_CONTEXT_INSECURE_REQUEST_POLICY_H_ - -#include <bitset> - -#include "third_party/blink/public/mojom/security_context/insecure_request_policy.mojom-shared.h" - -namespace blink { -namespace mojom { - -inline constexpr InsecureRequestPolicy operator&(InsecureRequestPolicy a, - InsecureRequestPolicy b) { - return static_cast<InsecureRequestPolicy>(static_cast<int>(a) & - static_cast<int>(b)); -} - -inline constexpr InsecureRequestPolicy operator|(InsecureRequestPolicy a, - InsecureRequestPolicy b) { - return static_cast<InsecureRequestPolicy>(static_cast<int>(a) | - static_cast<int>(b)); -} - -inline InsecureRequestPolicy& operator|=(InsecureRequestPolicy& a, - InsecureRequestPolicy b) { - return a = a | b; -} - -inline constexpr InsecureRequestPolicy operator~(InsecureRequestPolicy flags) { - return static_cast<InsecureRequestPolicy>(~static_cast<int>(flags)); -} - -inline std::ostream& operator<<(std::ostream& out, - InsecureRequestPolicy flags) { - return out << std::bitset<sizeof(int) * 8>(static_cast<int>(flags)); -} - -} // namespace mojom -} // namespace blink - -#endif // THIRD_PARTY_BLINK_PUBLIC_COMMON_SECURITY_CONTEXT_INSECURE_REQUEST_POLICY_H_
diff --git a/third_party/blink/public/mojom/BUILD.gn b/third_party/blink/public/mojom/BUILD.gn index 2e1b3cf4..c6b77bb2 100644 --- a/third_party/blink/public/mojom/BUILD.gn +++ b/third_party/blink/public/mojom/BUILD.gn
@@ -125,7 +125,6 @@ "scroll/scroll_enums.mojom", "scroll/scroll_into_view_params.mojom", "scroll/scrollbar_mode.mojom", - "security_context/insecure_request_policy.mojom", "selection_menu/selection_menu_behavior.mojom", "service_worker/controller_service_worker_mode.mojom", "service_worker/dispatch_fetch_event_params.mojom",
diff --git a/third_party/blink/public/mojom/frame/frame.mojom b/third_party/blink/public/mojom/frame/frame.mojom index a7ac4ab..f39d976 100644 --- a/third_party/blink/public/mojom/frame/frame.mojom +++ b/third_party/blink/public/mojom/frame/frame.mojom
@@ -31,7 +31,6 @@ import "third_party/blink/public/mojom/scroll/scroll_into_view_params.mojom"; import "third_party/blink/public/mojom/referrer.mojom"; import "third_party/blink/public/mojom/timing/resource_timing.mojom"; -import "third_party/blink/public/mojom/security_context/insecure_request_policy.mojom"; import "third_party/blink/public/mojom/web_feature/web_feature.mojom"; import "ui/events/mojom/scroll_granularity.mojom"; import "ui/gfx/geometry/mojom/geometry.mojom"; @@ -177,8 +176,10 @@ // this information in DidCommitProvisionalLoad isn't sufficient; this // message is needed because, for example, a document can dynamically insert // a <meta> tag that causes strict mixed content checking to be enforced. - // |policy_bitmap| is a bitfield for InsecureRequestPolicy. - EnforceInsecureRequestPolicy(blink.mojom.InsecureRequestPolicy policy_bitmap); + // + // Argument |policy_bitmap| represents blink::WebInsecureRequestPolicy uint8 + // bitfield. + EnforceInsecureRequestPolicy(uint8 policy_bitmap); // Elements of |set| are hashes of hosts to upgrade. EnforceInsecureNavigationsSet(array<uint32> set);
diff --git a/third_party/blink/public/mojom/security_context/OWNERS b/third_party/blink/public/mojom/security_context/OWNERS deleted file mode 100644 index 08850f4..0000000 --- a/third_party/blink/public/mojom/security_context/OWNERS +++ /dev/null
@@ -1,2 +0,0 @@ -per-file *.mojom=set noparent -per-file *.mojom=file://ipc/SECURITY_OWNERS
diff --git a/third_party/blink/public/mojom/security_context/insecure_request_policy.mojom b/third_party/blink/public/mojom/security_context/insecure_request_policy.mojom deleted file mode 100644 index 4fa42c80..0000000 --- a/third_party/blink/public/mojom/security_context/insecure_request_policy.mojom +++ /dev/null
@@ -1,18 +0,0 @@ -// Copyright 2020 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -module blink.mojom; - -// The values of -// https://w3c.github.io/webappsec-upgrade-insecure-requests/#insecure-requests-policy -// -// TODO(mkwst): In an ideal world, the combined state would be the same as -// "Upgrade". Once we're consistently upgrading all requests, we can replace -// this bitfield-style representation with an enum. Until then, we need to -// ensure that all relevant flags are set. https://crbug.com/617584 -enum InsecureRequestPolicy { - kLeaveInsecureRequestsAlone = 0, - kUpgradeInsecureRequests = 1, // 1 << 0, - kBlockAllMixedContent = 2, // 1 << 1, -};
diff --git a/third_party/blink/public/platform/web_dedicated_worker_host_factory_client.h b/third_party/blink/public/platform/web_dedicated_worker_host_factory_client.h index f9e6265..f3a7c6c 100644 --- a/third_party/blink/public/platform/web_dedicated_worker_host_factory_client.h +++ b/third_party/blink/public/platform/web_dedicated_worker_host_factory_client.h
@@ -11,6 +11,7 @@ #include "services/network/public/mojom/referrer_policy.mojom-shared.h" #include "third_party/blink/public/mojom/frame/lifecycle.mojom-shared.h" #include "third_party/blink/public/platform/web_fetch_client_settings_object.h" +#include "third_party/blink/public/platform/web_insecure_request_policy.h" namespace base { class SingleThreadTaskRunner;
diff --git a/third_party/blink/public/platform/web_fetch_client_settings_object.h b/third_party/blink/public/platform/web_fetch_client_settings_object.h index 1c95fb2..0fb2c51e 100644 --- a/third_party/blink/public/platform/web_fetch_client_settings_object.h +++ b/third_party/blink/public/platform/web_fetch_client_settings_object.h
@@ -10,8 +10,6 @@ #include "third_party/blink/public/platform/web_url.h" #if INSIDE_BLINK -#include "third_party/blink/public/common/security_context/insecure_request_policy.h" -#include "third_party/blink/public/mojom/security_context/insecure_request_policy.mojom-shared.h" #include "third_party/blink/renderer/platform/loader/fetch/fetch_client_settings_object_snapshot.h" // nogncheck #include "third_party/blink/renderer/platform/weborigin/kurl.h" // nogncheck #endif @@ -58,10 +56,8 @@ ? KURL() : KURL(settings_object.GetOutgoingReferrer())), insecure_requests_policy( - (settings_object.GetInsecureRequestsPolicy() & - blink::mojom::InsecureRequestPolicy::kUpgradeInsecureRequests) != - mojom::blink::InsecureRequestPolicy:: - kLeaveInsecureRequestsAlone + settings_object.GetInsecureRequestsPolicy() & + blink::kUpgradeInsecureRequests ? blink::mojom::InsecureRequestsPolicy::kUpgrade : blink::mojom::InsecureRequestsPolicy::kDoNotUpgrade) {} #endif // INSIDE_BLINK
diff --git a/third_party/blink/public/platform/web_insecure_request_policy.h b/third_party/blink/public/platform/web_insecure_request_policy.h new file mode 100644 index 0000000..f83715d --- /dev/null +++ b/third_party/blink/public/platform/web_insecure_request_policy.h
@@ -0,0 +1,26 @@ +// Copyright (c) 2016 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef THIRD_PARTY_BLINK_PUBLIC_PLATFORM_WEB_INSECURE_REQUEST_POLICY_H_ +#define THIRD_PARTY_BLINK_PUBLIC_PLATFORM_WEB_INSECURE_REQUEST_POLICY_H_ + +#include <cstdint> + +namespace blink { + +// The values of +// https://w3c.github.io/webappsec-upgrade-insecure-requests/#insecure-requests-policy +// +// TODO(mkwst): In an ideal world, the combined state would be the same as +// "Upgrade". Once we're consistently upgrading all requests, we can replace +// this bitfield-style representation with an enum. Until then, we need to +// ensure that all relevant flags are set. https://crbug.com/617584 +using WebInsecureRequestPolicy = uint8_t; +const WebInsecureRequestPolicy kLeaveInsecureRequestsAlone = 0; +const WebInsecureRequestPolicy kUpgradeInsecureRequests = 1 << 0; +const WebInsecureRequestPolicy kBlockAllMixedContent = 1 << 1; + +} // namespace blink + +#endif // THIRD_PARTY_BLINK_PUBLIC_PLATFORM_WEB_INSECURE_REQUEST_POLICY_H_
diff --git a/third_party/blink/public/platform/web_runtime_features.h b/third_party/blink/public/platform/web_runtime_features.h index 816eb84..513b133 100644 --- a/third_party/blink/public/platform/web_runtime_features.h +++ b/third_party/blink/public/platform/web_runtime_features.h
@@ -234,7 +234,6 @@ BLINK_PLATFORM_EXPORT static void EnableIdleDetection(bool); BLINK_PLATFORM_EXPORT static void EnableSkipTouchEventFilter(bool); BLINK_PLATFORM_EXPORT static void EnableSmsReceiver(bool); - BLINK_PLATFORM_EXPORT static void EnableDisplayLocking(bool); BLINK_PLATFORM_EXPORT static void EnableConsolidatedMovementXY(bool); BLINK_PLATFORM_EXPORT static void EnableMouseSubframeNoImplicitCapture(bool); BLINK_PLATFORM_EXPORT static void EnableBackForwardCache(bool);
diff --git a/third_party/blink/public/web/web_frame.h b/third_party/blink/public/web/web_frame.h index edcadd1e..a9bfe56 100644 --- a/third_party/blink/public/web/web_frame.h +++ b/third_party/blink/public/web/web_frame.h
@@ -33,8 +33,8 @@ #include <memory> #include "cc/paint/paint_canvas.h" -#include "third_party/blink/public/mojom/security_context/insecure_request_policy.mojom-shared.h" #include "third_party/blink/public/platform/web_common.h" +#include "third_party/blink/public/platform/web_insecure_request_policy.h" #include "third_party/blink/public/web/web_frame_load_type.h" #include "third_party/blink/public/web/web_node.h" #include "third_party/blink/public/web/web_tree_scope_type.h" @@ -98,7 +98,7 @@ WebSecurityOrigin GetSecurityOrigin() const; // The frame's insecure request policy. - mojom::InsecureRequestPolicy GetInsecureRequestPolicy() const; + WebInsecureRequestPolicy GetInsecureRequestPolicy() const; // The frame's upgrade insecure navigations set. WebVector<unsigned> GetInsecureRequestToUpgrade() const;
diff --git a/third_party/blink/public/web/web_local_frame_client.h b/third_party/blink/public/web/web_local_frame_client.h index 52d4a1e..643b63d2 100644 --- a/third_party/blink/public/web/web_local_frame_client.h +++ b/third_party/blink/public/web/web_local_frame_client.h
@@ -53,6 +53,7 @@ #include "third_party/blink/public/platform/web_content_settings_client.h" #include "third_party/blink/public/platform/web_effective_connection_type.h" #include "third_party/blink/public/platform/web_file_system_type.h" +#include "third_party/blink/public/platform/web_insecure_request_policy.h" #include "third_party/blink/public/platform/web_prescient_networking.h" #include "third_party/blink/public/platform/web_set_sink_id_callbacks.h" #include "third_party/blink/public/platform/web_source_location.h"
diff --git a/third_party/blink/public/web/web_remote_frame.h b/third_party/blink/public/web/web_remote_frame.h index c684e48..06bbc2d 100644 --- a/third_party/blink/public/web/web_remote_frame.h +++ b/third_party/blink/public/web/web_remote_frame.h
@@ -11,7 +11,7 @@ #include "third_party/blink/public/common/frame/sandbox_flags.h" #include "third_party/blink/public/mojom/ad_tagging/ad_frame.mojom-shared.h" #include "third_party/blink/public/mojom/frame/user_activation_update_types.mojom-shared.h" -#include "third_party/blink/public/mojom/security_context/insecure_request_policy.mojom-shared.h" +#include "third_party/blink/public/platform/web_insecure_request_policy.h" #include "third_party/blink/public/web/web_frame.h" #include "ui/events/types/scroll_types.h" #include "v8/include/v8.h" @@ -120,8 +120,7 @@ // Set frame enforcement of insecure request policy replicated from another // process. - virtual void SetReplicatedInsecureRequestPolicy( - mojom::InsecureRequestPolicy) = 0; + virtual void SetReplicatedInsecureRequestPolicy(WebInsecureRequestPolicy) = 0; virtual void SetReplicatedInsecureNavigationsSet( const WebVector<unsigned>&) = 0;
diff --git a/third_party/blink/public/web/web_widget.h b/third_party/blink/public/web/web_widget.h index b6e91f4..96b4626 100644 --- a/third_party/blink/public/web/web_widget.h +++ b/third_party/blink/public/web/web_widget.h
@@ -208,9 +208,6 @@ return false; } - // Returns true if the WebWidget is currently animating a GestureFling. - virtual bool IsFlinging() const { return false; } - // Returns true if the WebWidget created is of type PepperWidget. virtual bool IsPepperWidget() const { return false; }
diff --git a/third_party/blink/renderer/bindings/core/v8/isolated_world_csp.cc b/third_party/blink/renderer/bindings/core/v8/isolated_world_csp.cc index 2f18855c..9d61c98 100644 --- a/third_party/blink/renderer/bindings/core/v8/isolated_world_csp.cc +++ b/third_party/blink/renderer/bindings/core/v8/isolated_world_csp.cc
@@ -7,7 +7,6 @@ #include <utility> #include "base/logging.h" -#include "third_party/blink/public/mojom/security_context/insecure_request_policy.mojom-blink.h" #include "third_party/blink/renderer/bindings/core/v8/script_controller.h" #include "third_party/blink/renderer/core/dom/document.h" #include "third_party/blink/renderer/core/frame/csp/content_security_policy.h" @@ -68,7 +67,7 @@ // supported. void SetSandboxFlags(SandboxFlags) override {} void SetRequireTrustedTypes() override {} - void AddInsecureRequestPolicy(mojom::blink::InsecureRequestPolicy) override {} + void AddInsecureRequestPolicy(WebInsecureRequestPolicy) override {} // TODO(crbug.com/916885): Figure out if we want to support violation // reporting for isolated world CSPs.
diff --git a/third_party/blink/renderer/core/css/parser/css_parser_context.cc b/third_party/blink/renderer/core/css/parser/css_parser_context.cc index e6ff2e4..2ef82af 100644 --- a/third_party/blink/renderer/core/css/parser/css_parser_context.cc +++ b/third_party/blink/renderer/core/css/parser/css_parser_context.cc
@@ -252,6 +252,12 @@ return document_.Get(); } +// Fuzzers may execution CSS parsing code without a Document being available, +// thus this method can return null. +const ExecutionContext* CSSParserContext::GetExecutionContext() const { + return (document_.Get()) ? document_.Get()->ToExecutionContext() : nullptr; +} + void CSSParserContext::ReportLayoutAnimationsViolationIfNeeded( const StyleRuleKeyframe& rule) const { if (!document_)
diff --git a/third_party/blink/renderer/core/css/parser/css_parser_context.h b/third_party/blink/renderer/core/css/parser/css_parser_context.h index e2b6687..b9d230e 100644 --- a/third_party/blink/renderer/core/css/parser/css_parser_context.h +++ b/third_party/blink/renderer/core/css/parser/css_parser_context.h
@@ -120,6 +120,7 @@ bool IsUseCounterRecordingEnabled() const { return document_; } bool IsDocumentHandleEqual(const Document* other) const; const Document* GetDocument() const; + const ExecutionContext* GetExecutionContext() const; network::mojom::CSPDisposition ShouldCheckContentSecurityPolicy() const { return should_check_content_security_policy_;
diff --git a/third_party/blink/renderer/core/css/parser/css_parser_impl.cc b/third_party/blink/renderer/core/css/parser/css_parser_impl.cc index f83e7dc..bf766c0 100644 --- a/third_party/blink/renderer/core/css/parser/css_parser_impl.cc +++ b/third_party/blink/renderer/core/css/parser/css_parser_impl.cc
@@ -639,8 +639,8 @@ return MakeGarbageCollected<StyleRuleImport>( uri, - MediaQueryParser::ParseMediaQuerySet( - prelude, context_->GetDocument()->ToExecutionContext()), + MediaQueryParser::ParseMediaQuerySet(prelude, + context_->GetExecutionContext()), context_->IsOriginClean() ? OriginClean::kTrue : OriginClean::kFalse); } @@ -674,7 +674,7 @@ style_sheet_->SetHasMediaQueries(); const auto media = MediaQueryParser::ParseMediaQuerySet( - prelude, context_->GetDocument()->ToExecutionContext()); + prelude, context_->GetExecutionContext()); ConsumeRuleList(block, kRegularRuleList, [&rules](StyleRuleBase* rule) { rules.push_back(rule); }); @@ -1010,7 +1010,7 @@ parsed_properties_); } else { unresolved_property = lhs.ParseAsUnresolvedCSSPropertyID( - context_->GetDocument()->ToExecutionContext(), context_->Mode()); + context_->GetExecutionContext(), context_->Mode()); } // @rules other than FontFace still handled with legacy code.
diff --git a/third_party/blink/renderer/core/css/resolver/style_adjuster.cc b/third_party/blink/renderer/core/css/resolver/style_adjuster.cc index 74905c18..3dffa44 100644 --- a/third_party/blink/renderer/core/css/resolver/style_adjuster.cc +++ b/third_party/blink/renderer/core/css/resolver/style_adjuster.cc
@@ -54,6 +54,7 @@ #include "third_party/blink/renderer/core/layout/layout_object.h" #include "third_party/blink/renderer/core/layout/layout_replaced.h" #include "third_party/blink/renderer/core/layout/layout_theme.h" +#include "third_party/blink/renderer/core/mathml/mathml_space_element.h" #include "third_party/blink/renderer/core/style/computed_style.h" #include "third_party/blink/renderer/core/style/computed_style_constants.h" #include "third_party/blink/renderer/core/svg/svg_svg_element.h" @@ -583,14 +584,9 @@ if (!should_be_invisible && !context) return; - // If we're using an attribute version of display locking, then also abort. - if (context && DisplayLockContext::IsAttributeVersion(context)) - return; - // Create a context if we need to be invisible. if (should_be_invisible && !context) { - context = &element->EnsureDisplayLockContext( - DisplayLockContextCreateMethod::kCSS); + context = &element->EnsureDisplayLockContext(); } DCHECK(context); @@ -680,24 +676,6 @@ AdjustStyleForFirstLetter(style); } - if (element && - RuntimeEnabledFeatures::DisplayLockingEnabled( - element->GetExecutionContext()) && - element->FastHasAttribute(html_names::kRendersubtreeAttr)) { - // The element has the rendersubtree attr, so we should add style and - // layout containment. If the attribute contains "invisible" we should - // also add size containment. - Containment contain = kContainsStyle | kContainsLayout; - SpaceSplitString tokens( - element->FastGetAttribute(html_names::kRendersubtreeAttr).LowerASCII()); - if (style.ContainsSize() || tokens.Contains("invisible")) { - contain |= kContainsSize; - } - if (style.ContainsPaint()) - contain |= kContainsPaint; - style.SetContain(contain); - } - if (RuntimeEnabledFeatures::CSSRenderSubtreeEnabled()) AdjustStateForRenderSubtree(style, element); @@ -772,6 +750,8 @@ // https://drafts.csswg.org/css-display/#unbox-mathml style.SetDisplay(EDisplay::kNone); } + if (auto* space = DynamicTo<MathMLSpaceElement>(*element)) + space->AddMathBaselineIfNeeded(style, state.CssToLengthConversionData()); } // If this node is sticky it marks the creation of a sticky subtree, which we
diff --git a/third_party/blink/renderer/core/display_lock/display_lock_budget_test.cc b/third_party/blink/renderer/core/display_lock/display_lock_budget_test.cc index 513da9c..21aa6ef 100644 --- a/third_party/blink/renderer/core/display_lock/display_lock_budget_test.cc +++ b/third_party/blink/renderer/core/display_lock/display_lock_budget_test.cc
@@ -19,9 +19,9 @@ namespace blink { class DisplayLockBudgetTest : public RenderingTest, - private ScopedDisplayLockingForTest { + private ScopedCSSRenderSubtreeForTest { public: - DisplayLockBudgetTest() : ScopedDisplayLockingForTest(true) {} + DisplayLockBudgetTest() : ScopedCSSRenderSubtreeForTest(true) {} void SetUp() override { RenderingTest::SetUp(); test_task_runner_ = base::MakeRefCounted<base::TestMockTimeTaskRunner>(); @@ -44,16 +44,15 @@ context->update_budget_ = std::move(budget); } - void LockElement(Element& element, bool update_lifecycle = true) { - element.setAttribute(html_names::kRendersubtreeAttr, "invisible"); - if (update_lifecycle) - UpdateAllLifecyclePhasesForTest(); + void LockElement(Element& element) { + element.setAttribute(html_names::kStyleAttr, + "render-subtree: invisible skip-activation"); + UpdateAllLifecyclePhasesForTest(); } - void CommitElement(Element& element, bool update_lifecycle = true) { - element.setAttribute(html_names::kRendersubtreeAttr, ""); - if (update_lifecycle) - UpdateAllLifecyclePhasesForTest(); + void CommitElement(Element& element) { + element.setAttribute(html_names::kStyleAttr, ""); + UpdateAllLifecyclePhasesForTest(); } protected: @@ -77,7 +76,7 @@ )HTML"); auto* element = GetDocument().getElementById("container"); - LockElement(*element, false); + LockElement(*element); ASSERT_TRUE(element->GetDisplayLockContext()); UnyieldingDisplayLockBudget budget(element->GetDisplayLockContext()); @@ -120,7 +119,7 @@ )HTML"); auto* element = GetDocument().getElementById("container"); - LockElement(*element, false); + LockElement(*element); ASSERT_TRUE(element->GetDisplayLockContext()); StrictYieldingDisplayLockBudget budget(element->GetDisplayLockContext()); @@ -291,7 +290,7 @@ )HTML"); auto* element = GetDocument().getElementById("container"); - LockElement(*element, false); + LockElement(*element); ASSERT_TRUE(element->GetDisplayLockContext()); StrictYieldingDisplayLockBudget budget(element->GetDisplayLockContext()); @@ -334,7 +333,7 @@ )HTML"); auto* element = GetDocument().getElementById("container"); - LockElement(*element, false); + LockElement(*element); ASSERT_TRUE(element->GetDisplayLockContext()); YieldingDisplayLockBudget budget(element->GetDisplayLockContext());
diff --git a/third_party/blink/renderer/core/display_lock/display_lock_context.cc b/third_party/blink/renderer/core/display_lock/display_lock_context.cc index c0d53ea9..1e3b142 100644 --- a/third_party/blink/renderer/core/display_lock/display_lock_context.cc +++ b/third_party/blink/renderer/core/display_lock/display_lock_context.cc
@@ -156,7 +156,7 @@ // 2. We're activated (in the CSS version), which means that we need to know // when we stop intersecting the viewport so that we can re-lock. bool should_observe = - (IsLocked() || (!IsAttributeVersion(this) && IsActivated())) && + (IsLocked() || IsActivated()) && IsActivatable(DisplayLockActivationReason::kViewportIntersection) && ConnectedToView(); if (should_observe && !is_observed_) { @@ -454,24 +454,16 @@ if (reason_for_metrics == DisplayLockActivationReason::kFindInPage) document_->MarkHasFindInPageRenderSubtreeActiveMatch(); - if (!IsAttributeVersion(this)) { - css_is_activated_ = true; - // Since size containment depends on the activatability state, we should - // invalidate the style for this element, so that the style adjuster can - // properly remove the containment. - element_->SetNeedsStyleRecalc( - kLocalStyleChange, - StyleChangeReasonForTracing::Create(style_change_reason::kDisplayLock)); - } - - // Since setting the attribute might trigger a commit if we are still locked, - // we set it after we start the commit. - if (element_->FastHasAttribute(html_names::kRendersubtreeAttr)) - element_->setAttribute(html_names::kRendersubtreeAttr, ""); + css_is_activated_ = true; + // Since size containment depends on the activatability state, we should + // invalidate the style for this element, so that the style adjuster can + // properly remove the containment. + element_->SetNeedsStyleRecalc( + kLocalStyleChange, + StyleChangeReasonForTracing::Create(style_change_reason::kDisplayLock)); } bool DisplayLockContext::IsActivated() const { - DCHECK(!IsAttributeVersion(this)); return css_is_activated_; } @@ -561,9 +553,6 @@ layout_object->SetNeedsLayoutAndPrefWidthsRecalc( layout_invalidation_reason::kDisplayLock); - - if (auto* view = layout_object->GetFrameView()) - view->SetNeedsForcedResizeObservations(); } void DisplayLockContext::StartUpdateIfNeeded() { @@ -618,7 +607,6 @@ // Note that since we're already in self style recalc, this code is shorter // since it doesn't have to deal with dirtying self-style. DCHECK(document_->InStyleRecalc()); - DCHECK(!IsAttributeVersion(this)); if (reattach_layout_tree_was_blocked_) { change = change.ForceReattachLayoutTree();
diff --git a/third_party/blink/renderer/core/display_lock/display_lock_context.h b/third_party/blink/renderer/core/display_lock/display_lock_context.h index 78f7f18..673a337 100644 --- a/third_party/blink/renderer/core/display_lock/display_lock_context.h +++ b/third_party/blink/renderer/core/display_lock/display_lock_context.h
@@ -64,11 +64,6 @@ std::numeric_limits<uint16_t>::max(), "DisplayLockActivationReason is too large"); -// Since we currently, and temporarily, support both CSS and attribute version, -// we need to distinguish the two so that lack of CSS, for example, doesn't -// unlock the attribute version and vice versa. -enum class DisplayLockContextCreateMethod { kUnknown, kCSS, kAttribute }; - class CORE_EXPORT DisplayLockContext final : public GarbageCollected<DisplayLockContext>, public ExecutionContextLifecycleObserver, @@ -273,20 +268,6 @@ needs_prepaint_subtree_walk_ = true; } - void SetMethod(DisplayLockContextCreateMethod method) { method_ = method; } - DisplayLockContextCreateMethod GetMethod() const { - DCHECK(method_ != DisplayLockContextCreateMethod::kUnknown); - return method_; - } - - // Note that this returns true if there is no context at all, so in order to - // check whether this is strictly an attribute version, as opposed to a null - // context, one needs to compare context with nullptr first. - static bool IsAttributeVersion(const DisplayLockContext* context) { - return !context || - context->GetMethod() == DisplayLockContextCreateMethod::kAttribute; - } - // This is called by the style recalc code in lieu of // MarkForStyleRecalcIfNeeded() in order to adjust the child change if we need // to recalc children nodes here. @@ -441,9 +422,6 @@ // valid for CSS version of render-subtree. bool css_is_activated_ = false; - DisplayLockContextCreateMethod method_ = - DisplayLockContextCreateMethod::kUnknown; - base::WeakPtrFactory<DisplayLockContext> weak_factory_{this}; };
diff --git a/third_party/blink/renderer/core/display_lock/display_lock_context_test.cc b/third_party/blink/renderer/core/display_lock/display_lock_context_test.cc index f354d67..f131004 100644 --- a/third_party/blink/renderer/core/display_lock/display_lock_context_test.cc +++ b/third_party/blink/renderer/core/display_lock/display_lock_context_test.cc
@@ -88,9 +88,9 @@ } // namespace class DisplayLockContextTest : public testing::Test, - private ScopedDisplayLockingForTest { + private ScopedCSSRenderSubtreeForTest { public: - DisplayLockContextTest() : ScopedDisplayLockingForTest(true) {} + DisplayLockContextTest() : ScopedCSSRenderSubtreeForTest(true) {} void SetUp() override { web_view_helper_.Initialize(); @@ -127,21 +127,17 @@ test::RunPendingTasks(); } - void LockElement(Element& element, - bool activatable, - bool update_lifecycle = true) { + void LockElement(Element& element, bool activatable) { StringBuilder value; - value.Append("invisible"); + value.Append("render-subtree: invisible"); if (!activatable) value.Append(" skip-activation"); - element.setAttribute(html_names::kRendersubtreeAttr, - value.ToAtomicString()); - if (update_lifecycle) - UpdateAllLifecyclePhasesForTest(); + element.setAttribute(html_names::kStyleAttr, value.ToAtomicString()); + UpdateAllLifecyclePhasesForTest(); } void CommitElement(Element& element, bool update_lifecycle = true) { - element.setAttribute(html_names::kRendersubtreeAttr, ""); + element.setAttribute(html_names::kStyleAttr, ""); if (update_lifecycle) UpdateAllLifecyclePhasesForTest(); } @@ -195,7 +191,7 @@ )HTML"); auto* element = GetDocument().getElementById("container"); - LockElement(*element, false, false); + LockElement(*element, false); // Finished acquiring the lock. // Note that because the element is locked after append, the "self" phase for @@ -211,7 +207,9 @@ EXPECT_EQ(GetDocument().LockedDisplayLockCount(), 1); // If the element is dirty, style recalc would handle it in the next recalc. - element->setAttribute("style", "color: red;"); + element->setAttribute( + html_names::kStyleAttr, + "render-subtree: invisible skip-activation; color: red;"); EXPECT_TRUE(GetDocument().body()->ChildNeedsStyleRecalc()); EXPECT_TRUE(element->NeedsStyleRecalc()); EXPECT_FALSE(element->ChildNeedsStyleRecalc()); @@ -223,7 +221,11 @@ EXPECT_EQ( element->GetComputedStyle()->VisitedDependentColor(GetCSSPropertyColor()), MakeRGB(255, 0, 0)); - CommitElement(*element, false); + // Manually commit the lock so that we can verify which dirty bits get + // propagated. + element->GetDisplayLockContext()->StartCommit(); + element->setAttribute(html_names::kStyleAttr, "color: red;"); + auto* child = GetDocument().getElementById("child"); EXPECT_TRUE(GetDocument().body()->ChildNeedsStyleRecalc()); EXPECT_TRUE(element->NeedsStyleRecalc()); @@ -236,32 +238,25 @@ EXPECT_FALSE(element->ChildNeedsStyleRecalc()); EXPECT_FALSE(child->NeedsStyleRecalc()); - // Re-acquire. - LockElement(*element, false); - - // If a child is dirty, it will still be dirty. - child->setAttribute("style", "color: blue;"); - EXPECT_FALSE(GetDocument().body()->ChildNeedsStyleRecalc()); - EXPECT_FALSE(element->NeedsStyleRecalc()); - EXPECT_TRUE(element->ChildNeedsStyleRecalc()); - EXPECT_TRUE(child->NeedsStyleRecalc()); - EXPECT_FALSE(child->ChildNeedsStyleRecalc()); - + // Lock the child. + child->setAttribute( + html_names::kStyleAttr, + "render-subtree: invisible skip-activation; color: blue;"); UpdateAllLifecyclePhasesForTest(); + EXPECT_FALSE(GetDocument().body()->ChildNeedsStyleRecalc()); EXPECT_FALSE(element->NeedsStyleRecalc()); - EXPECT_TRUE(element->ChildNeedsStyleRecalc()); - EXPECT_TRUE(child->NeedsStyleRecalc()); + EXPECT_FALSE(element->ChildNeedsStyleRecalc()); + EXPECT_FALSE(child->NeedsStyleRecalc()); ASSERT_TRUE(child->GetComputedStyle()); - EXPECT_NE( + EXPECT_EQ( child->GetComputedStyle()->VisitedDependentColor(GetCSSPropertyColor()), MakeRGB(0, 0, 255)); - CommitElement(*element, false); + child->GetDisplayLockContext()->StartCommit(); + child->setAttribute(html_names::kStyleAttr, "color: blue;"); EXPECT_TRUE(GetDocument().body()->ChildNeedsStyleRecalc()); - // Since the rendersubtree attribute changes, it will force self style to put - // in proper containment in place. - EXPECT_TRUE(element->NeedsStyleRecalc()); + EXPECT_FALSE(element->NeedsStyleRecalc()); EXPECT_TRUE(element->ChildNeedsStyleRecalc()); EXPECT_TRUE(child->NeedsStyleRecalc()); UpdateAllLifecyclePhasesForTest(); @@ -624,8 +619,8 @@ auto* div_two = GetDocument().getElementById("two"); auto* div_three = GetDocument().getElementById("three"); // Lock three divs, make #div_two non-activatable. - LockElement(*div_one, true /* activatable */, false /* update_lifecycle */); - LockElement(*div_two, false /* activatable */, false /* update_lifecycle */); + LockElement(*div_one, true /* activatable */); + LockElement(*div_two, false /* activatable */); LockElement(*div_three, true /* activatable */); DisplayLockTestFindInPageClient client; @@ -675,6 +670,7 @@ LockElement(*element, false); // Sanity checks to ensure the element is locked. + EXPECT_TRUE(element->GetDisplayLockContext()->IsLocked()); EXPECT_FALSE(element->GetDisplayLockContext()->ShouldStyle( DisplayLockLifecycleTarget::kChildren)); EXPECT_FALSE(element->GetDisplayLockContext()->ShouldLayout( @@ -719,9 +715,9 @@ EXPECT_FALSE(element->NeedsReattachLayoutTree()); EXPECT_FALSE(element->ChildNeedsReattachLayoutTree()); - CommitElement(*element, false); - // Since containment may change, we need self style recalc. - EXPECT_TRUE(element->NeedsStyleRecalc()); + // Manually start commit, so that we can verify which dirty bits get + // propagated. + element->GetDisplayLockContext()->StartCommit(); EXPECT_TRUE(element->ChildNeedsStyleRecalc()); EXPECT_FALSE(element->NeedsReattachLayoutTree()); EXPECT_FALSE(element->ChildNeedsReattachLayoutTree()); @@ -732,8 +728,6 @@ element->GetDisplayLockContext()->DidStyle( DisplayLockLifecycleTarget::kChildren); - // Self style still needs updating. - EXPECT_TRUE(element->NeedsStyleRecalc()); EXPECT_FALSE(element->ChildNeedsStyleRecalc()); EXPECT_FALSE(element->NeedsReattachLayoutTree()); EXPECT_TRUE(element->ChildNeedsReattachLayoutTree()); @@ -846,7 +840,7 @@ EXPECT_FALSE(GetDocument().FocusedElement()); // Now commit the lock and ensure we can focus the input - CommitElement(*element, false); + CommitElement(*element); EXPECT_TRUE(element->GetDisplayLockContext()->ShouldStyle( DisplayLockLifecycleTarget::kChildren)); @@ -902,7 +896,7 @@ EXPECT_FALSE(slotted->DisplayLockPreventsActivation( DisplayLockActivationReason::kAny)); - LockElement(*container, false, false); + LockElement(*container, false); EXPECT_EQ(GetDocument().LockedDisplayLockCount(), 1); EXPECT_EQ(GetDocument().DisplayLockBlockingAllActivationCount(), 1); @@ -917,7 +911,7 @@ // step. UpdateAllLifecyclePhasesForTest(); - CommitElement(*container, false); + CommitElement(*container); EXPECT_EQ(GetDocument().LockedDisplayLockCount(), 0); EXPECT_EQ(GetDocument().DisplayLockBlockingAllActivationCount(), 0); @@ -941,7 +935,7 @@ SetHtmlInnerHTML(R"HTML( <body> - <div id="nonviewport" rendersubtree="invisible skip-viewport-activation"> + <div id="nonviewport" style="render-subtree: invisible skip-viewport-activation"> </div> </body> )HTML"); @@ -1037,23 +1031,27 @@ LockElement(*two, false); - EXPECT_EQ(GetDocument().LockedDisplayLockCount(), 2); - EXPECT_EQ(GetDocument().DisplayLockBlockingAllActivationCount(), 2); + // Because |two| is nested, the lock counts aren't updated since the lock + // doesn't actually take effect until style can determine that we should lock. + EXPECT_EQ(GetDocument().LockedDisplayLockCount(), 1); + EXPECT_EQ(GetDocument().DisplayLockBlockingAllActivationCount(), 1); LockElement(*three, false); - EXPECT_EQ(GetDocument().LockedDisplayLockCount(), 3); - EXPECT_EQ(GetDocument().DisplayLockBlockingAllActivationCount(), 3); - - // Now commit the inner lock. - CommitElement(*two); - EXPECT_EQ(GetDocument().LockedDisplayLockCount(), 2); EXPECT_EQ(GetDocument().DisplayLockBlockingAllActivationCount(), 2); - // Commit the outer lock. + // Now commit the outer lock. CommitElement(*one); + // The counts remain the same since now the inner lock is determined to be + // locked. + EXPECT_EQ(GetDocument().LockedDisplayLockCount(), 2); + EXPECT_EQ(GetDocument().DisplayLockBlockingAllActivationCount(), 2); + + // Commit the inner lock. + CommitElement(*two); + // Both inner and outer locks should have committed. EXPECT_EQ(GetDocument().LockedDisplayLockCount(), 1); EXPECT_EQ(GetDocument().DisplayLockBlockingAllActivationCount(), 1); @@ -1090,10 +1088,8 @@ // Initial display lock context should be activatable, since nothing skipped // activation for it. - EXPECT_TRUE( - activatable - ->EnsureDisplayLockContext(DisplayLockContextCreateMethod::kAttribute) - .IsActivatable(DisplayLockActivationReason::kAny)); + EXPECT_TRUE(activatable->EnsureDisplayLockContext().IsActivatable( + DisplayLockActivationReason::kAny)); LockElement(*activatable, true); @@ -1122,9 +1118,8 @@ // Set just the skip activation token, without the invisible token. This // should make the element not be locked, but also not be activatable. StringBuilder value; - value.Append("skip-activation"); - non_activatable->setAttribute(html_names::kRendersubtreeAttr, - value.ToAtomicString()); + value.Append("render-subtree: skip-activation"); + non_activatable->setAttribute(html_names::kStyleAttr, value.ToAtomicString()); UpdateAllLifecyclePhasesForTest(); EXPECT_FALSE(non_activatable->GetDisplayLockContext()->IsLocked()); @@ -1183,11 +1178,11 @@ EXPECT_EQ(GetDocument().LockedDisplayLockCount(), 0); EXPECT_EQ(GetDocument().DisplayLockBlockingAllActivationCount(), 0); - EXPECT_TRUE(child->GetDisplayLockContext()->IsLocked()); + EXPECT_FALSE(child->GetDisplayLockContext()); - // commit() will unlock the element. + // Commit also works, but does nothing. CommitElement(*child); - EXPECT_FALSE(child->GetDisplayLockContext()->IsLocked()); + EXPECT_FALSE(child->GetDisplayLockContext()); // Try to lock an element that was moved from a template to a document. auto* document_child = @@ -1197,22 +1192,32 @@ LockElement(*document_child, false); + // These should be 0, since container is display: none, so locking its child + // is not visible to style. + EXPECT_EQ(GetDocument().LockedDisplayLockCount(), 0); + EXPECT_EQ(GetDocument().DisplayLockBlockingAllActivationCount(), 0); + ASSERT_FALSE(document_child->GetDisplayLockContext()); + + container->setAttribute(html_names::kStyleAttr, "display: block;"); + EXPECT_TRUE(container->NeedsStyleRecalc()); + UpdateAllLifecyclePhasesForTest(); + EXPECT_EQ(GetDocument().LockedDisplayLockCount(), 1); EXPECT_EQ(GetDocument().DisplayLockBlockingAllActivationCount(), 1); + ASSERT_TRUE(document_child->GetDisplayLockContext()); EXPECT_TRUE(document_child->GetDisplayLockContext()->IsLocked()); - container->setAttribute("style", "display: block;"); - document_child->setAttribute("style", "color: red;"); - - EXPECT_TRUE(container->NeedsStyleRecalc()); - EXPECT_FALSE(document_child->NeedsStyleRecalc()); - + document_child->setAttribute( + html_names::kStyleAttr, + "render-subtree: invisible skip-activation; color: red;"); UpdateAllLifecyclePhasesForTest(); EXPECT_FALSE(document_child->NeedsStyleRecalc()); - // commit() will unlock the element and update the style. - CommitElement(*document_child); + // Commit will unlock the element and update the style. + document_child->setAttribute(html_names::kStyleAttr, "color: red;"); + UpdateAllLifecyclePhasesForTest(); + EXPECT_FALSE(document_child->GetDisplayLockContext()->IsLocked()); EXPECT_EQ(GetDocument().LockedDisplayLockCount(), 0); EXPECT_EQ(GetDocument().DisplayLockBlockingAllActivationCount(), 0); @@ -1326,7 +1331,10 @@ EXPECT_TRUE(locked_object->InsideBlockingTouchEventHandler()); EXPECT_FALSE(lockedchild_object->InsideBlockingTouchEventHandler()); + // Manually commit the lock so that we can verify which dirty bits get + // propagated. CommitElement(*locked_element, false); + locked_element->GetDisplayLockContext()->StartCommit(); EXPECT_FALSE(ancestor_object->EffectiveAllowedTouchActionChanged()); EXPECT_FALSE(handler_object->EffectiveAllowedTouchActionChanged()); @@ -1467,7 +1475,10 @@ EXPECT_FALSE(locked_object->InsideBlockingTouchEventHandler()); EXPECT_FALSE(handler_object->InsideBlockingTouchEventHandler()); + // Manually commit the lock so that we can verify which dirty bits get + // propagated. CommitElement(*locked_element, false); + locked_element->GetDisplayLockContext()->StartCommit(); EXPECT_FALSE(ancestor_object->EffectiveAllowedTouchActionChanged()); EXPECT_FALSE(descendant_object->EffectiveAllowedTouchActionChanged()); @@ -1618,7 +1629,10 @@ EXPECT_TRUE(locked_object->DescendantNeedsPaintPropertyUpdate()); EXPECT_FALSE(handler_object->DescendantNeedsPaintPropertyUpdate()); + // Manually commit the lock so that we can verify which dirty bits get + // propagated. CommitElement(*locked_element, false); + locked_element->GetDisplayLockContext()->StartCommit(); EXPECT_FALSE(ancestor_object->NeedsPaintPropertyUpdate()); EXPECT_FALSE(descendant_object->NeedsPaintPropertyUpdate()); @@ -1700,11 +1714,11 @@ } class DisplayLockContextRenderingTest : public RenderingTest, - private ScopedDisplayLockingForTest { + private ScopedCSSRenderSubtreeForTest { public: DisplayLockContextRenderingTest() : RenderingTest(MakeGarbageCollected<SingleChildLocalFrameClient>()), - ScopedDisplayLockingForTest(true) {} + ScopedCSSRenderSubtreeForTest(true) {} }; TEST_F(DisplayLockContextRenderingTest, FrameDocumentRemovedWhileAcquire) { @@ -1723,8 +1737,7 @@ auto* target = ChildDocument().getElementById("target"); GetDocument().getElementById("frame")->remove(); - target->EnsureDisplayLockContext(DisplayLockContextCreateMethod::kAttribute) - .StartAcquire(); + target->EnsureDisplayLockContext().StartAcquire(); } TEST_F(DisplayLockContextRenderingTest, @@ -1795,8 +1808,8 @@ EXPECT_EQ(dirty_count, 10u); EXPECT_EQ(total_count, 10u); - GetDocument().getElementById("e")->setAttribute( - html_names::kRendersubtreeAttr, "invisible"); + GetDocument().getElementById("e")->setAttribute(html_names::kStyleAttr, + "render-subtree: invisible"); UpdateAllLifecyclePhasesForTest(); // Note that the dirty_all call propagate the dirty bit from the unlocked @@ -1811,8 +1824,8 @@ // We still see the locked element, so the total is 8. EXPECT_EQ(total_count, 8u); - GetDocument().getElementById("a")->setAttribute( - html_names::kRendersubtreeAttr, "invisible"); + GetDocument().getElementById("a")->setAttribute(html_names::kStyleAttr, + "render-subtree: invisible"); UpdateAllLifecyclePhasesForTest(); // Note that this dirty_all call is now not propagating the dirty bits at all,
diff --git a/third_party/blink/renderer/core/display_lock/display_lock_utilities.cc b/third_party/blink/renderer/core/display_lock/display_lock_utilities.cc index 534c14b..176d9c24 100644 --- a/third_party/blink/renderer/core/display_lock/display_lock_utilities.cc +++ b/third_party/blink/renderer/core/display_lock/display_lock_utilities.cc
@@ -32,7 +32,7 @@ DisplayLockActivationReason reason) { if (range.IsNull() || range.IsCollapsed()) return false; - if (!RuntimeEnabledFeatures::DisplayLockingEnabled(&range.GetDocument()) || + if (!RuntimeEnabledFeatures::CSSRenderSubtreeEnabled() || range.GetDocument().LockedDisplayLockCount() == range.GetDocument().DisplayLockBlockingAllActivationCount()) return false; @@ -61,7 +61,7 @@ bool DisplayLockUtilities::ActivateFindInPageMatchRangeIfNeeded( const EphemeralRangeInFlatTree& range) { - if (!RuntimeEnabledFeatures::DisplayLockingEnabled(&range.GetDocument())) + if (!RuntimeEnabledFeatures::CSSRenderSubtreeEnabled()) return false; DCHECK(!range.IsNull()); DCHECK(!range.IsCollapsed()); @@ -86,7 +86,7 @@ const EphemeralRangeInFlatTree& range) { if (range.IsNull() || range.IsCollapsed()) return false; - if (!RuntimeEnabledFeatures::DisplayLockingEnabled(&range.GetDocument()) || + if (!RuntimeEnabledFeatures::CSSRenderSubtreeEnabled() || range.GetDocument().LockedDisplayLockCount() == range.GetDocument().DisplayLockBlockingAllActivationCount()) return false; @@ -114,8 +114,7 @@ DisplayLockActivationReason reason) { HeapVector<Member<Element>> elements_to_activate; const_cast<Node*>(&node)->UpdateDistributionForFlatTreeTraversal(); - if (!RuntimeEnabledFeatures::DisplayLockingEnabled( - node.GetExecutionContext()) || + if (!RuntimeEnabledFeatures::CSSRenderSubtreeEnabled() || node.GetDocument().LockedDisplayLockCount() == node.GetDocument().DisplayLockBlockingAllActivationCount()) return elements_to_activate; @@ -142,8 +141,7 @@ DisplayLockUtilities::ScopedChainForcedUpdate::ScopedChainForcedUpdate( const Node* node, bool include_self) { - if (!RuntimeEnabledFeatures::DisplayLockingEnabled( - node->GetExecutionContext())) + if (!RuntimeEnabledFeatures::CSSRenderSubtreeEnabled()) return; CreateParentFrameScopeIfNeeded(node); @@ -199,8 +197,7 @@ auto* element = DynamicTo<Element>(node); if (!element) return NearestLockedExclusiveAncestor(node); - if (!RuntimeEnabledFeatures::DisplayLockingEnabled( - node.GetExecutionContext()) || + if (!RuntimeEnabledFeatures::CSSRenderSubtreeEnabled() || !node.isConnected() || node.GetDocument().LockedDisplayLockCount() == 0 || !node.CanParticipateInFlatTree()) { return nullptr; @@ -219,8 +216,7 @@ Element* DisplayLockUtilities::NearestLockedExclusiveAncestor( const Node& node) { - if (!RuntimeEnabledFeatures::DisplayLockingEnabled( - node.GetExecutionContext()) || + if (!RuntimeEnabledFeatures::CSSRenderSubtreeEnabled() || !node.isConnected() || node.GetDocument().LockedDisplayLockCount() == 0 || !node.CanParticipateInFlatTree()) { return nullptr; @@ -242,8 +238,7 @@ Element* DisplayLockUtilities::HighestLockedInclusiveAncestor( const Node& node) { - if (!RuntimeEnabledFeatures::DisplayLockingEnabled( - node.GetExecutionContext()) || + if (!RuntimeEnabledFeatures::CSSRenderSubtreeEnabled() || node.GetDocument().LockedDisplayLockCount() == 0 || !node.CanParticipateInFlatTree()) { return nullptr; @@ -264,8 +259,7 @@ Element* DisplayLockUtilities::HighestLockedExclusiveAncestor( const Node& node) { - if (!RuntimeEnabledFeatures::DisplayLockingEnabled( - node.GetExecutionContext()) || + if (!RuntimeEnabledFeatures::CSSRenderSubtreeEnabled() || node.GetDocument().LockedDisplayLockCount() == 0 || !node.CanParticipateInFlatTree()) { return nullptr; @@ -299,8 +293,7 @@ } bool DisplayLockUtilities::IsInNonActivatableLockedSubtree(const Node& node) { - if (!RuntimeEnabledFeatures::DisplayLockingEnabled( - node.GetExecutionContext()) || + if (!RuntimeEnabledFeatures::CSSRenderSubtreeEnabled() || node.GetDocument().LockedDisplayLockCount() == 0 || node.GetDocument().DisplayLockBlockingAllActivationCount() == 0 || !node.CanParticipateInFlatTree()) { @@ -319,8 +312,7 @@ bool DisplayLockUtilities::IsInLockedSubtreeCrossingFrames( const Node& source_node) { - if (!RuntimeEnabledFeatures::DisplayLockingEnabled( - source_node.GetExecutionContext())) + if (!RuntimeEnabledFeatures::CSSRenderSubtreeEnabled()) return false; const Node* node = &source_node;
diff --git a/third_party/blink/renderer/core/display_lock/display_lock_utilities_test.cc b/third_party/blink/renderer/core/display_lock/display_lock_utilities_test.cc index 9b8eb83..1808fbe 100644 --- a/third_party/blink/renderer/core/display_lock/display_lock_utilities_test.cc +++ b/third_party/blink/renderer/core/display_lock/display_lock_utilities_test.cc
@@ -14,37 +14,28 @@ namespace blink { class DisplayLockUtilitiesTest : public RenderingTest, - private ScopedDisplayLockingForTest { + private ScopedCSSRenderSubtreeForTest { public: DisplayLockUtilitiesTest() : RenderingTest(MakeGarbageCollected<SingleChildLocalFrameClient>()), - ScopedDisplayLockingForTest(true) {} + ScopedCSSRenderSubtreeForTest(true) {} - void LockElement(Element& element, - bool activatable, - bool update_lifecycle = true) { + void LockElement(Element& element, bool activatable) { StringBuilder value; - value.Append("invisible"); + value.Append("render-subtree: invisible"); if (!activatable) value.Append(" skip-activation"); - element.setAttribute(html_names::kRendersubtreeAttr, - value.ToAtomicString()); - if (update_lifecycle) - UpdateAllLifecyclePhasesForTest(); + element.setAttribute(html_names::kStyleAttr, value.ToAtomicString()); + UpdateAllLifecyclePhasesForTest(); } - void CommitElement(Element& element, bool update_lifecycle = true) { - element.setAttribute(html_names::kRendersubtreeAttr, ""); - if (update_lifecycle) - UpdateAllLifecyclePhasesForTest(); + void CommitElement(Element& element) { + element.setAttribute(html_names::kStyleAttr, ""); + UpdateAllLifecyclePhasesForTest(); } }; -TEST_F(DisplayLockUtilitiesTest, ActivatableLockedInclusiveAncestors) { - // TODO(vmpstr): Implement for layout ng. - if (RuntimeEnabledFeatures::LayoutNGEnabled()) - return; - +TEST_F(DisplayLockUtilitiesTest, DISABLED_ActivatableLockedInclusiveAncestors) { SetBodyInnerHTML(R"HTML( <style> div { @@ -138,7 +129,7 @@ EXPECT_EQ(result_for_shadow_div.at(0), outer); // Unlock everything. - CommitElement(innermost, false); + CommitElement(innermost); CommitElement(outer); EXPECT_EQ(GetDocument().LockedDisplayLockCount(), 0); EXPECT_EQ(GetDocument().DisplayLockBlockingAllActivationCount(), 0); @@ -233,5 +224,4 @@ EXPECT_FALSE(DisplayLockUtilities::IsInLockedSubtreeCrossingFrames(*parent)); EXPECT_FALSE(DisplayLockUtilities::IsInLockedSubtreeCrossingFrames(*child)); } - } // namespace blink
diff --git a/third_party/blink/renderer/core/display_lock/render_subtree_activation_event.idl b/third_party/blink/renderer/core/display_lock/render_subtree_activation_event.idl index 3578ce7..31eb186 100644 --- a/third_party/blink/renderer/core/display_lock/render_subtree_activation_event.idl +++ b/third_party/blink/renderer/core/display_lock/render_subtree_activation_event.idl
@@ -3,7 +3,7 @@ // found in the LICENSE file. [ - RuntimeEnabled=DisplayLocking + RuntimeEnabled=CSSRenderSubtree ] interface RenderSubtreeActivationEvent : Event { readonly attribute Element activatedElement; };
diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink/renderer/core/dom/document.cc index dedb17b0..962626f7 100644 --- a/third_party/blink/renderer/core/dom/document.cc +++ b/third_party/blink/renderer/core/dom/document.cc
@@ -2421,9 +2421,7 @@ Node* node = &root; while (node) { auto* element = DynamicTo<Element>(node); - if (element && - RuntimeEnabledFeatures::DisplayLockingEnabled( - root.GetExecutionContext()) && + if (element && RuntimeEnabledFeatures::CSSRenderSubtreeEnabled() && element->StyleRecalcBlockedByDisplayLock( DisplayLockLifecycleTarget::kChildren)) { node = FlatTreeTraversal::NextSkippingChildren(*node); @@ -8452,11 +8450,10 @@ DisplayLockActivationReason::kViewportIntersection)); context->CommitForActivationWithSignal( entry->target(), DisplayLockActivationReason::kViewportIntersection); - } else if (!DisplayLockContext::IsAttributeVersion(context)) { - // In a CSS version, if we're not visible, but are observing viewport - // intersections, it means that we're either locked (in which case we - // should remain locked), or we've been activated (in which case we should - // relock). + } else { + // If we're not visible, but are observing viewport intersections, it + // means that we're either locked (in which case we should remain locked), + // or we've been activated (in which case we should relock). DCHECK(context->IsLocked() || context->IsActivated()); if (context->IsLocked()) continue;
diff --git a/third_party/blink/renderer/core/dom/document.h b/third_party/blink/renderer/core/dom/document.h index 4643761..9120042 100644 --- a/third_party/blink/renderer/core/dom/document.h +++ b/third_party/blink/renderer/core/dom/document.h
@@ -43,6 +43,7 @@ #include "third_party/blink/public/mojom/input/focus_type.mojom-blink-forward.h" #include "third_party/blink/public/mojom/permissions/permission.mojom-blink.h" #include "third_party/blink/public/mojom/scroll/scrollbar_mode.mojom-blink.h" +#include "third_party/blink/public/platform/web_insecure_request_policy.h" #include "third_party/blink/renderer/core/accessibility/axid.h" #include "third_party/blink/renderer/core/core_export.h" #include "third_party/blink/renderer/core/dom/container_node.h"
diff --git a/third_party/blink/renderer/core/dom/document_init.cc b/third_party/blink/renderer/core/dom/document_init.cc index 5461b72..142cfbb0 100644 --- a/third_party/blink/renderer/core/dom/document_init.cc +++ b/third_party/blink/renderer/core/dom/document_init.cc
@@ -29,7 +29,6 @@ #include "third_party/blink/renderer/core/dom/document_init.h" -#include "third_party/blink/public/mojom/security_context/insecure_request_policy.mojom-blink.h" #include "third_party/blink/renderer/core/dom/document.h" #include "third_party/blink/renderer/core/dom/dom_implementation.h" #include "third_party/blink/renderer/core/frame/csp/content_security_policy.h" @@ -118,12 +117,11 @@ return flags; } -mojom::blink::InsecureRequestPolicy DocumentInit::GetInsecureRequestPolicy() - const { +WebInsecureRequestPolicy DocumentInit::GetInsecureRequestPolicy() const { DCHECK(MasterDocumentLoader()); Frame* parent_frame = MasterDocumentLoader()->GetFrame()->Tree().Parent(); if (!parent_frame) - return mojom::blink::InsecureRequestPolicy::kLeaveInsecureRequestsAlone; + return kLeaveInsecureRequestsAlone; return parent_frame->GetSecurityContext()->GetInsecureRequestPolicy(); }
diff --git a/third_party/blink/renderer/core/dom/document_init.h b/third_party/blink/renderer/core/dom/document_init.h index 0198906..41dd2f9 100644 --- a/third_party/blink/renderer/core/dom/document_init.h +++ b/third_party/blink/renderer/core/dom/document_init.h
@@ -32,8 +32,7 @@ #include "services/network/public/mojom/ip_address_space.mojom-shared.h" #include "third_party/blink/public/common/frame/frame_policy.h" -#include "third_party/blink/public/mojom/feature_policy/feature_policy.mojom-blink.h" -#include "third_party/blink/public/mojom/security_context/insecure_request_policy.mojom-blink-forward.h" +#include "third_party/blink/public/platform/web_insecure_request_policy.h" #include "third_party/blink/renderer/core/core_export.h" #include "third_party/blink/renderer/core/execution_context/security_context.h" #include "third_party/blink/renderer/core/frame/sandbox_flags.h" @@ -41,6 +40,7 @@ #include "third_party/blink/renderer/platform/graphics/color.h" #include "third_party/blink/renderer/platform/heap/handle.h" #include "third_party/blink/renderer/platform/weborigin/kurl.h" +#include "third_party/blink/public/mojom/feature_policy/feature_policy.mojom-blink.h" namespace blink { @@ -95,7 +95,7 @@ bool IsSrcdocDocument() const; bool ShouldSetURL() const; mojom::blink::WebSandboxFlags GetSandboxFlags() const; - mojom::blink::InsecureRequestPolicy GetInsecureRequestPolicy() const; + WebInsecureRequestPolicy GetInsecureRequestPolicy() const; const SecurityContext::InsecureNavigationsSet* InsecureNavigationsToUpgrade() const; bool GrantLoadLocalResources() const { return grant_load_local_resources_; }
diff --git a/third_party/blink/renderer/core/dom/element.cc b/third_party/blink/renderer/core/dom/element.cc index ab334e1..553ad82 100644 --- a/third_party/blink/renderer/core/dom/element.cc +++ b/third_party/blink/renderer/core/dom/element.cc
@@ -2471,41 +2471,6 @@ GetElementData()->presentation_attribute_style_is_dirty_ = true; SetNeedsStyleRecalc(kLocalStyleChange, StyleChangeReasonForTracing::FromAttribute(name)); - } else if (RuntimeEnabledFeatures::DisplayLockingEnabled( - GetExecutionContext()) && - name == html_names::kRendersubtreeAttr && - params.old_value != params.new_value && - DisplayLockContext::IsAttributeVersion( - GetDisplayLockContext())) { - UseCounter::Count(GetDocument(), WebFeature::kRenderSubtreeAttribute); - - // This is needed to ensure that proper containment is put in place. - SetNeedsStyleRecalc(kLocalStyleChange, - StyleChangeReasonForTracing::FromAttribute(name)); - SpaceSplitString tokens(params.new_value.LowerASCII()); - uint16_t activation_mask = - static_cast<uint16_t>(DisplayLockActivationReason::kAny); - - // Figure out the activation mask. - if (tokens.Contains("skip-activation")) - activation_mask = 0; - if (tokens.Contains("skip-viewport-activation")) { - activation_mask &= - ~static_cast<uint16_t>(DisplayLockActivationReason::kViewport); - } - - EnsureDisplayLockContext(DisplayLockContextCreateMethod::kAttribute) - .SetActivatable(activation_mask); - const bool should_be_invisible = tokens.Contains("invisible"); - if (should_be_invisible) { - if (!GetDisplayLockContext()->IsLocked()) - GetDisplayLockContext()->StartAcquire(); - } else { - // Getting unlocked. - if (GetDisplayLockContext()->IsLocked()) - GetDisplayLockContext()->StartCommit(); - } - } else if (RuntimeEnabledFeatures::InvisibleDOMEnabled() && name == html_names::kInvisibleAttr && params.old_value != params.new_value) { @@ -3038,7 +3003,6 @@ GetDocument().UserActionElements().DidDetach(*this); } - SetNeedsResizeObserverUpdate(); GetDocument().GetStyleEngine().ClearNeedsWhitespaceReattachmentFor(this); } @@ -3336,11 +3300,9 @@ // change for children, since this could be the first time we unlocked the // context and as a result need to process more of the subtree than we would // normally. Note that if this is not the first time, then - // AdjustTyleRecalcChangeForChildren() won't do any adjustments. - if (!DisplayLockContext::IsAttributeVersion(context) && - !context->IsLocked()) { + // AdjustStyleRecalcChangeForChildren() won't do any adjustments. + if (!context->IsLocked()) child_change = context->AdjustStyleRecalcChangeForChildren(child_change); - } } if (new_style) { @@ -4422,7 +4384,7 @@ } bool Element::ActivateDisplayLockIfNeeded(DisplayLockActivationReason reason) { - if (!RuntimeEnabledFeatures::DisplayLockingEnabled(GetExecutionContext()) || + if (!RuntimeEnabledFeatures::CSSRenderSubtreeEnabled() || GetDocument().LockedDisplayLockCount() == GetDocument().DisplayLockBlockingAllActivationCount()) return false; @@ -4459,7 +4421,7 @@ bool Element::DisplayLockPreventsActivation( DisplayLockActivationReason reason) const { - if (!RuntimeEnabledFeatures::DisplayLockingEnabled(GetExecutionContext())) + if (!RuntimeEnabledFeatures::CSSRenderSubtreeEnabled()) return false; if (GetDocument().LockedDisplayLockCount() == 0) @@ -4837,48 +4799,16 @@ return EnsureElementRareData().EnsureResizeObserverData(); } -void Element::SetNeedsResizeObserverUpdate() { - if (auto* data = ResizeObserverData()) { - for (auto& observation : data->Values()) - observation->ElementSizeChanged(); - } -} - DisplayLockContext* Element::GetDisplayLockContext() const { - if (!RuntimeEnabledFeatures::DisplayLockingEnabled(GetExecutionContext())) + if (!RuntimeEnabledFeatures::CSSRenderSubtreeEnabled()) return nullptr; return HasRareData() ? GetElementRareData()->GetDisplayLockContext() : nullptr; } -DisplayLockContext& Element::EnsureDisplayLockContext( - DisplayLockContextCreateMethod method) { - auto& result = *EnsureElementRareData().EnsureDisplayLockContext( +DisplayLockContext& Element::EnsureDisplayLockContext() { + return *EnsureElementRareData().EnsureDisplayLockContext( this, GetExecutionContext()); - result.SetMethod(method); - return result; -} - -ScriptPromise Element::updateRendering(ScriptState* script_state) { - auto* context = GetDisplayLockContext(); - if (context) - return context->UpdateRendering(script_state); - auto* resolver = MakeGarbageCollected<ScriptPromiseResolver>(script_state); - auto promise = resolver->Promise(); - resolver->Resolve(); - return promise; -} - -void Element::resetSubtreeRendered() { - if (auto* context = GetDisplayLockContext()) { - context->ClearActivated(); - // Note that we need to schedule a style invalidation since we may need to - // adjust the lock state, which happens during style recalc for - // CSS-render-subtree. - SetNeedsStyleRecalc( - kLocalStyleChange, - StyleChangeReasonForTracing::Create(style_change_reason::kDisplayLock)); - } } // Step 1 of http://domparsing.spec.whatwg.org/#insertadjacenthtml()
diff --git a/third_party/blink/renderer/core/dom/element.h b/third_party/blink/renderer/core/dom/element.h index f9d0addb..44220e9f 100644 --- a/third_party/blink/renderer/core/dom/element.h +++ b/third_party/blink/renderer/core/dom/element.h
@@ -77,7 +77,6 @@ class PseudoElementStyleRequest; class ResizeObservation; class ResizeObserver; -class ScriptPromise; class ScrollIntoViewOptions; class ScrollIntoViewOptionsOrBoolean; class ScrollToOptions; @@ -96,7 +95,6 @@ enum class CSSValueID; enum class DisplayLockActivationReason; enum class DisplayLockLifecycleTarget; -enum class DisplayLockContextCreateMethod; using ScrollOffset = FloatSize; @@ -943,14 +941,9 @@ ResizeObserverData() const; HeapHashMap<Member<ResizeObserver>, Member<ResizeObservation>>& EnsureResizeObserverData(); - void SetNeedsResizeObserverUpdate(); DisplayLockContext* GetDisplayLockContext() const; - DisplayLockContext& EnsureDisplayLockContext(DisplayLockContextCreateMethod); - - // Display locking IDL implementation - ScriptPromise updateRendering(ScriptState*); - void resetSubtreeRendered(); + DisplayLockContext& EnsureDisplayLockContext(); bool StyleRecalcBlockedByDisplayLock(DisplayLockLifecycleTarget) const;
diff --git a/third_party/blink/renderer/core/dom/element.idl b/third_party/blink/renderer/core/dom/element.idl index 4f50a7a..8805330 100644 --- a/third_party/blink/renderer/core/dom/element.idl +++ b/third_party/blink/renderer/core/dom/element.idl
@@ -148,13 +148,6 @@ attribute EventHandler onbeforepaste; attribute EventHandler onsearch; - // Declarative display locking. - [RuntimeEnabled=DisplayLocking, CEReactions, CustomElementCallbacks, Reflect] attribute DOMString renderSubtree; - [RuntimeEnabled=DisplayLocking, CallWith=ScriptState] Promise<any> updateRendering(); - - // CSS version of display locking. - [RuntimeEnabled=CSSRenderSubtree] void resetSubtreeRendered(); - // Element Timing [Affects=Nothing, CEReactions, Reflect=elementtiming] attribute DOMString elementTiming; };
diff --git a/third_party/blink/renderer/core/dom/global_event_handlers.idl b/third_party/blink/renderer/core/dom/global_event_handlers.idl index 044660f..15f39dba 100644 --- a/third_party/blink/renderer/core/dom/global_event_handlers.idl +++ b/third_party/blink/renderer/core/dom/global_event_handlers.idl
@@ -82,7 +82,7 @@ attribute EventHandler onplaying; attribute EventHandler onprogress; attribute EventHandler onratechange; - [RuntimeEnabled=DisplayLocking] attribute EventHandler onrendersubtreeactivation; + [RuntimeEnabled=CSSRenderSubtree] attribute EventHandler onrendersubtreeactivation; attribute EventHandler onreset; attribute EventHandler onresize; attribute EventHandler onscroll;
diff --git a/third_party/blink/renderer/core/dom/node.cc b/third_party/blink/renderer/core/dom/node.cc index 70434ed..992113c8 100644 --- a/third_party/blink/renderer/core/dom/node.cc +++ b/third_party/blink/renderer/core/dom/node.cc
@@ -1319,7 +1319,7 @@ break; // If we reach a locked ancestor, we should abort since the ancestor marking // will be done when the lock is committed. - if (RuntimeEnabledFeatures::DisplayLockingEnabled(GetExecutionContext())) { + if (RuntimeEnabledFeatures::CSSRenderSubtreeEnabled()) { auto* ancestor_element = DynamicTo<Element>(ancestor); if (ancestor_element && ancestor_element->StyleRecalcBlockedByDisplayLock( DisplayLockLifecycleTarget::kChildren)) { @@ -1355,7 +1355,7 @@ // roots. These would be updated when we commit the lock. If we have locked // display locks somewhere in the document, we iterate up the ancestor chain // to check if we're in one such subtree. - if (RuntimeEnabledFeatures::DisplayLockingEnabled(GetExecutionContext()) && + if (RuntimeEnabledFeatures::CSSRenderSubtreeEnabled() && GetDocument().LockedDisplayLockCount() > 0) { for (auto* ancestor_copy = ancestor; ancestor_copy; ancestor_copy = ancestor_copy->GetStyleRecalcParent()) {
diff --git a/third_party/blink/renderer/core/editing/commands/delete_selection_command.cc b/third_party/blink/renderer/core/editing/commands/delete_selection_command.cc index 6acc2aea..44c3eff3 100644 --- a/third_party/blink/renderer/core/editing/commands/delete_selection_command.cc +++ b/third_party/blink/renderer/core/editing/commands/delete_selection_command.cc
@@ -25,6 +25,7 @@ #include "third_party/blink/renderer/core/editing/commands/delete_selection_command.h" +#include "build/build_config.h" #include "third_party/blink/renderer/core/dom/document.h" #include "third_party/blink/renderer/core/dom/element.h" #include "third_party/blink/renderer/core/dom/node_traversal.h" @@ -225,6 +226,15 @@ return Position(); } +// Workaround: GCC fails to resolve overloaded template functions, passed as +// parameters of EnclosingNodeType. But it works wrapping that in a utility +// function. +#if defined(COMPILER_GCC) +static bool IsHTMLTableRowElement(const blink::Node* node) { + return IsA<HTMLTableRowElement>(node); +} +#endif + void DeleteSelectionCommand::InitializePositionData( EditingState* editing_state) { DCHECK(!GetDocument().NeedsLayoutTreeUpdate()); @@ -253,10 +263,18 @@ start_root_ = RootEditableElementOf(start); end_root_ = RootEditableElementOf(end); +#if defined(COMPILER_GCC) + // Workaround. See declaration of IsHTMLTableRowElement + start_table_row_ = To<HTMLTableRowElement>( + EnclosingNodeOfType(start, &IsHTMLTableRowElement)); + end_table_row_ = + To<HTMLTableRowElement>(EnclosingNodeOfType(end, &IsHTMLTableRowElement)); +#else start_table_row_ = To<HTMLTableRowElement>( EnclosingNodeOfType(start, &IsA<HTMLTableRowElement>)); end_table_row_ = To<HTMLTableRowElement>( EnclosingNodeOfType(end, &IsA<HTMLTableRowElement>)); +#endif // Don't move content out of a table cell. // If the cell is non-editable, enclosingNodeOfType won't return it by
diff --git a/third_party/blink/renderer/core/editing/finder/find_buffer.cc b/third_party/blink/renderer/core/editing/finder/find_buffer.cc index cff00f6..4036724 100644 --- a/third_party/blink/renderer/core/editing/finder/find_buffer.cc +++ b/third_party/blink/renderer/core/editing/finder/find_buffer.cc
@@ -216,8 +216,7 @@ void FindBuffer::CollectScopedForcedUpdates(Node& start_node, const Node* search_range_end_node, const Node* node_after_block) { - if (!RuntimeEnabledFeatures::DisplayLockingEnabled( - start_node.GetExecutionContext())) + if (!RuntimeEnabledFeatures::CSSRenderSubtreeEnabled()) return; if (start_node.GetDocument().LockedDisplayLockCount() == start_node.GetDocument().DisplayLockBlockingAllActivationCount())
diff --git a/third_party/blink/renderer/core/editing/finder/text_finder.cc b/third_party/blink/renderer/core/editing/finder/text_finder.cc index 323b889a..3a13b5d1 100644 --- a/third_party/blink/renderer/core/editing/finder/text_finder.cc +++ b/third_party/blink/renderer/core/editing/finder/text_finder.cc
@@ -76,8 +76,7 @@ static void ScrollToVisible(Range* match) { const Node& first_node = *match->FirstNode(); if (RuntimeEnabledFeatures::InvisibleDOMEnabled() || - RuntimeEnabledFeatures::DisplayLockingEnabled( - first_node.GetExecutionContext())) { + RuntimeEnabledFeatures::CSSRenderSubtreeEnabled()) { const EphemeralRangeInFlatTree range(match); if (InvisibleDOM::ActivateRangeIfNeeded(range) || DisplayLockUtilities::ActivateFindInPageMatchRangeIfNeeded(range)) {
diff --git a/third_party/blink/renderer/core/editing/iterators/text_iterator_test.cc b/third_party/blink/renderer/core/editing/iterators/text_iterator_test.cc index 28f2e7c..74e6796 100644 --- a/third_party/blink/renderer/core/editing/iterators/text_iterator_test.cc +++ b/third_party/blink/renderer/core/editing/iterators/text_iterator_test.cc
@@ -1034,7 +1034,7 @@ TEST_P(TextIteratorTest, IterateWithLockedSubtree) { SetBodyContent("<div id='parent'>foo<div id='locked'>text</div>bar</div>"); auto* locked = GetDocument().getElementById("locked"); - locked->setAttribute("rendersubtree", "invisible"); + locked->setAttribute(html_names::kStyleAttr, "render-subtree: invisible"); GetDocument().UpdateStyleAndLayout(DocumentUpdateReason::kTest); auto* parent = GetDocument().getElementById("parent"); const Position start_position = Position::FirstPositionInNode(*parent);
diff --git a/third_party/blink/renderer/core/editing/suggestion/text_suggestion_controller.cc b/third_party/blink/renderer/core/editing/suggestion/text_suggestion_controller.cc index f5d2fe4..0d5863a 100644 --- a/third_party/blink/renderer/core/editing/suggestion/text_suggestion_controller.cc +++ b/third_party/blink/renderer/core/editing/suggestion/text_suggestion_controller.cc
@@ -152,7 +152,7 @@ Vector<TextSuggestionInfo>& suggestion_infos = suggestion_infos_with_node_and_highlight_color.suggestion_infos; - for (const std::pair<const Member<const Text>, DocumentMarker*>& + for (const std::pair<Member<const Text>, Member<DocumentMarker>>& node_marker_pair : node_suggestion_marker_pairs_sorted_by_length) { if (node_marker_pair.first != suggestion_infos_with_node_and_highlight_color.text_node) @@ -161,7 +161,7 @@ if (suggestion_infos.size() == max_number_of_suggestions) break; - const auto* marker = To<SuggestionMarker>(node_marker_pair.second); + const auto* marker = To<SuggestionMarker>(node_marker_pair.second.Get()); const Vector<String>& marker_suggestions = marker->Suggestions(); for (wtf_size_t suggestion_index = 0; suggestion_index < marker_suggestions.size(); ++suggestion_index) {
diff --git a/third_party/blink/renderer/core/execution_context/security_context.cc b/third_party/blink/renderer/core/execution_context/security_context.cc index f6e98f1..65bd8afb 100644 --- a/third_party/blink/renderer/core/execution_context/security_context.cc +++ b/third_party/blink/renderer/core/execution_context/security_context.cc
@@ -31,7 +31,6 @@ #include "third_party/blink/public/common/feature_policy/document_policy_features.h" #include "third_party/blink/public/common/feature_policy/feature_policy.h" #include "third_party/blink/public/mojom/feature_policy/feature_policy.mojom-blink.h" -#include "third_party/blink/public/mojom/security_context/insecure_request_policy.mojom-blink.h" #include "third_party/blink/public/platform/platform.h" #include "third_party/blink/renderer/core/execution_context/security_context_init.h" #include "third_party/blink/renderer/core/frame/csp/content_security_policy.h" @@ -62,8 +61,7 @@ document_policy_(init.CreateDocumentPolicy()), content_security_policy_(init.GetCSP()), address_space_(network::mojom::IPAddressSpace::kUnknown), - insecure_request_policy_( - mojom::blink::InsecureRequestPolicy::kLeaveInsecureRequestsAlone), + insecure_request_policy_(kLeaveInsecureRequestsAlone), require_safe_types_(false), context_type_(context_type) {}
diff --git a/third_party/blink/renderer/core/execution_context/security_context.h b/third_party/blink/renderer/core/execution_context/security_context.h index 3ba61bd..bfa2d1b0 100644 --- a/third_party/blink/renderer/core/execution_context/security_context.h +++ b/third_party/blink/renderer/core/execution_context/security_context.h
@@ -37,7 +37,7 @@ #include "third_party/blink/public/mojom/feature_policy/document_policy_feature.mojom-blink-forward.h" #include "third_party/blink/public/mojom/feature_policy/feature_policy.mojom-blink-forward.h" #include "third_party/blink/public/mojom/feature_policy/feature_policy_feature.mojom-blink-forward.h" -#include "third_party/blink/public/mojom/security_context/insecure_request_policy.mojom-blink-forward.h" +#include "third_party/blink/public/platform/web_insecure_request_policy.h" #include "third_party/blink/public/platform/web_vector.h" #include "third_party/blink/renderer/core/core_export.h" #include "third_party/blink/renderer/platform/heap/handle.h" @@ -134,10 +134,10 @@ } // https://w3c.github.io/webappsec-upgrade-insecure-requests/#insecure-requests-policy - void SetInsecureRequestPolicy(mojom::blink::InsecureRequestPolicy policy) { + void SetInsecureRequestPolicy(WebInsecureRequestPolicy policy) { insecure_request_policy_ = policy; } - mojom::blink::InsecureRequestPolicy GetInsecureRequestPolicy() const { + WebInsecureRequestPolicy GetInsecureRequestPolicy() const { return insecure_request_policy_; } @@ -180,7 +180,7 @@ Member<ContentSecurityPolicy> content_security_policy_; network::mojom::IPAddressSpace address_space_; - mojom::blink::InsecureRequestPolicy insecure_request_policy_; + WebInsecureRequestPolicy insecure_request_policy_; InsecureNavigationsSet insecure_navigations_to_upgrade_; bool require_safe_types_; const SecurityContextType context_type_;
diff --git a/third_party/blink/renderer/core/exported/local_frame_client_impl.h b/third_party/blink/renderer/core/exported/local_frame_client_impl.h index f9d97a44..835b91b 100644 --- a/third_party/blink/renderer/core/exported/local_frame_client_impl.h +++ b/third_party/blink/renderer/core/exported/local_frame_client_impl.h
@@ -40,6 +40,7 @@ #include "mojo/public/cpp/bindings/receiver.h" #include "mojo/public/cpp/bindings/receiver_set.h" #include "mojo/public/cpp/bindings/remote.h" +#include "third_party/blink/public/platform/web_insecure_request_policy.h" #include "third_party/blink/renderer/core/frame/local_frame_client.h" #include "third_party/blink/renderer/core/frame/web_local_frame_impl.h" #include "third_party/blink/renderer/platform/heap/handle.h"
diff --git a/third_party/blink/renderer/core/exported/web_frame.cc b/third_party/blink/renderer/core/exported/web_frame.cc index c4c019d7..71f5422 100644 --- a/third_party/blink/renderer/core/exported/web_frame.cc +++ b/third_party/blink/renderer/core/exported/web_frame.cc
@@ -7,7 +7,6 @@ #include <algorithm> #include "third_party/blink/public/common/frame/sandbox_flags.h" #include "third_party/blink/public/mojom/scroll/scrollbar_mode.mojom-blink.h" -#include "third_party/blink/public/mojom/security_context/insecure_request_policy.mojom-blink.h" #include "third_party/blink/public/web/web_element.h" #include "third_party/blink/renderer/bindings/core/v8/window_proxy_manager.h" #include "third_party/blink/renderer/core/dom/increment_load_event_delay_count.h" @@ -159,7 +158,7 @@ ToCoreFrame(*this)->GetSecurityContext()->GetSecurityOrigin()); } -mojom::blink::InsecureRequestPolicy WebFrame::GetInsecureRequestPolicy() const { +WebInsecureRequestPolicy WebFrame::GetInsecureRequestPolicy() const { return ToCoreFrame(*this)->GetSecurityContext()->GetInsecureRequestPolicy(); }
diff --git a/third_party/blink/renderer/core/exported/web_remote_frame_impl.cc b/third_party/blink/renderer/core/exported/web_remote_frame_impl.cc index 56ec1b3..ad9cc6e 100644 --- a/third_party/blink/renderer/core/exported/web_remote_frame_impl.cc +++ b/third_party/blink/renderer/core/exported/web_remote_frame_impl.cc
@@ -7,7 +7,6 @@ #include <utility> #include "third_party/blink/public/common/feature_policy/feature_policy.h" -#include "third_party/blink/public/mojom/security_context/insecure_request_policy.mojom-blink.h" #include "third_party/blink/public/platform/web_float_rect.h" #include "third_party/blink/public/platform/web_intrinsic_sizing_info.h" #include "third_party/blink/public/platform/web_rect.h" @@ -294,7 +293,7 @@ } void WebRemoteFrameImpl::SetReplicatedInsecureRequestPolicy( - mojom::blink::InsecureRequestPolicy policy) { + WebInsecureRequestPolicy policy) { DCHECK(GetFrame()); GetFrame()->SetInsecureRequestPolicy(policy); }
diff --git a/third_party/blink/renderer/core/exported/web_remote_frame_impl.h b/third_party/blink/renderer/core/exported/web_remote_frame_impl.h index defdadc8..d0e8119 100644 --- a/third_party/blink/renderer/core/exported/web_remote_frame_impl.h +++ b/third_party/blink/renderer/core/exported/web_remote_frame_impl.h
@@ -6,7 +6,7 @@ #define THIRD_PARTY_BLINK_RENDERER_CORE_EXPORTED_WEB_REMOTE_FRAME_IMPL_H_ #include "third_party/blink/public/mojom/frame/user_activation_update_types.mojom-blink-forward.h" -#include "third_party/blink/public/mojom/security_context/insecure_request_policy.mojom-blink-forward.h" +#include "third_party/blink/public/platform/web_insecure_request_policy.h" #include "third_party/blink/public/web/web_remote_frame.h" #include "third_party/blink/public/web/web_remote_frame_client.h" #include "third_party/blink/renderer/core/core_export.h" @@ -88,8 +88,7 @@ network::mojom::ContentSecurityPolicyType, network::mojom::ContentSecurityPolicySource) override; void ResetReplicatedContentSecurityPolicy() override; - void SetReplicatedInsecureRequestPolicy( - mojom::blink::InsecureRequestPolicy) override; + void SetReplicatedInsecureRequestPolicy(WebInsecureRequestPolicy) override; void SetReplicatedInsecureNavigationsSet(const WebVector<unsigned>&) override; void SetReplicatedAdFrameType( mojom::blink::AdFrameType ad_frame_type) override;
diff --git a/third_party/blink/renderer/core/exported/web_shared_worker_impl.cc b/third_party/blink/renderer/core/exported/web_shared_worker_impl.cc index c514cdf..5d77284 100644 --- a/third_party/blink/renderer/core/exported/web_shared_worker_impl.cc +++ b/third_party/blink/renderer/core/exported/web_shared_worker_impl.cc
@@ -37,7 +37,6 @@ #include "third_party/blink/public/mojom/devtools/devtools_agent.mojom-blink.h" #include "third_party/blink/public/mojom/loader/fetch_client_settings_object.mojom-blink.h" #include "third_party/blink/public/mojom/script/script_type.mojom-blink.h" -#include "third_party/blink/public/mojom/security_context/insecure_request_policy.mojom-blink.h" #include "third_party/blink/public/mojom/worker/worker_content_settings_proxy.mojom-blink.h" #include "third_party/blink/public/platform/modules/service_worker/web_service_worker_network_provider.h" #include "third_party/blink/public/platform/task_type.h" @@ -197,9 +196,8 @@ creation_address_space, outside_fetch_client_settings_object.insecure_requests_policy == mojom::blink::InsecureRequestsPolicy::kUpgrade - ? mojom::blink::InsecureRequestPolicy::kUpgradeInsecureRequests | - mojom::blink::InsecureRequestPolicy::kBlockAllMixedContent - : mojom::blink::InsecureRequestPolicy::kBlockAllMixedContent, + ? kUpgradeInsecureRequests | kBlockAllMixedContent + : kBlockAllMixedContent, FetchClientSettingsObject::InsecureNavigationsSet()); scoped_refptr<WebWorkerFetchContext> web_worker_fetch_context =
diff --git a/third_party/blink/renderer/core/frame/csp/content_security_policy.cc b/third_party/blink/renderer/core/frame/csp/content_security_policy.cc index 1ba9200..3873e5e 100644 --- a/third_party/blink/renderer/core/frame/csp/content_security_policy.cc +++ b/third_party/blink/renderer/core/frame/csp/content_security_policy.cc
@@ -29,7 +29,6 @@ #include <utility> #include "base/debug/dump_without_crashing.h" -#include "third_party/blink/public/mojom/security_context/insecure_request_policy.mojom-blink.h" #include "third_party/blink/public/platform/platform.h" #include "third_party/blink/public/platform/task_type.h" #include "third_party/blink/public/platform/web_url_request.h" @@ -158,8 +157,7 @@ style_hash_algorithms_used_(kContentSecurityPolicyHashAlgorithmNone), sandbox_mask_(mojom::blink::WebSandboxFlags::kNone), require_trusted_types_(false), - insecure_request_policy_( - mojom::blink::InsecureRequestPolicy::kLeaveInsecureRequestsAlone) {} + insecure_request_policy_(kLeaveInsecureRequestsAlone) {} bool ContentSecurityPolicy::IsBound() { return delegate_; @@ -941,13 +939,11 @@ } void ContentSecurityPolicy::EnforceStrictMixedContentChecking() { - insecure_request_policy_ |= - mojom::blink::InsecureRequestPolicy::kBlockAllMixedContent; + insecure_request_policy_ |= kBlockAllMixedContent; } void ContentSecurityPolicy::UpgradeInsecureRequests() { - insecure_request_policy_ |= - mojom::blink::InsecureRequestPolicy::kUpgradeInsecureRequests; + insecure_request_policy_ |= kUpgradeInsecureRequests; } static String StripURLForUseInReport(
diff --git a/third_party/blink/renderer/core/frame/csp/content_security_policy.h b/third_party/blink/renderer/core/frame/csp/content_security_policy.h index 50b1e3765..2c990755 100644 --- a/third_party/blink/renderer/core/frame/csp/content_security_policy.h +++ b/third_party/blink/renderer/core/frame/csp/content_security_policy.h
@@ -31,8 +31,8 @@ #include "services/network/public/mojom/content_security_policy.mojom-blink.h" #include "third_party/blink/public/mojom/devtools/console_message.mojom-blink.h" -#include "third_party/blink/public/mojom/security_context/insecure_request_policy.mojom-blink-forward.h" #include "third_party/blink/public/platform/web_content_security_policy_struct.h" +#include "third_party/blink/public/platform/web_insecure_request_policy.h" #include "third_party/blink/renderer/bindings/core/v8/source_location.h" #include "third_party/blink/renderer/core/core_export.h" #include "third_party/blink/renderer/core/execution_context/security_context.h" @@ -99,8 +99,7 @@ // Directives support. virtual void SetSandboxFlags(SandboxFlags) = 0; virtual void SetRequireTrustedTypes() = 0; - virtual void AddInsecureRequestPolicy( - mojom::blink::InsecureRequestPolicy) = 0; + virtual void AddInsecureRequestPolicy(WebInsecureRequestPolicy) = 0; // Violation reporting. @@ -429,7 +428,7 @@ // |m_insecureRequestPolicy| void EnforceStrictMixedContentChecking(); void UpgradeInsecureRequests(); - mojom::blink::InsecureRequestPolicy GetInsecureRequestPolicy() const { + WebInsecureRequestPolicy GetInsecureRequestPolicy() const { return insecure_request_policy_; } @@ -575,7 +574,7 @@ SandboxFlags sandbox_mask_; bool require_trusted_types_; String disable_eval_error_message_; - mojom::blink::InsecureRequestPolicy insecure_request_policy_; + WebInsecureRequestPolicy insecure_request_policy_; Member<CSPSource> self_source_; String self_protocol_;
diff --git a/third_party/blink/renderer/core/frame/csp/content_security_policy_test.cc b/third_party/blink/renderer/core/frame/csp/content_security_policy_test.cc index aac8b09c..852a9d9 100644 --- a/third_party/blink/renderer/core/frame/csp/content_security_policy_test.cc +++ b/third_party/blink/renderer/core/frame/csp/content_security_policy_test.cc
@@ -5,7 +5,7 @@ #include "third_party/blink/renderer/core/frame/csp/content_security_policy.h" #include "testing/gtest/include/gtest/gtest.h" -#include "third_party/blink/public/mojom/security_context/insecure_request_policy.mojom-blink.h" +#include "third_party/blink/public/platform/web_insecure_request_policy.h" #include "third_party/blink/renderer/core/dom/document.h" #include "third_party/blink/renderer/core/dom/document_init.h" #include "third_party/blink/renderer/core/frame/csp/csp_directive_list.h" @@ -55,20 +55,14 @@ TEST_F(ContentSecurityPolicyTest, ParseInsecureRequestPolicy) { struct TestCase { const char* header; - mojom::blink::InsecureRequestPolicy expected_policy; - } cases[] = { - {"default-src 'none'", - mojom::blink::InsecureRequestPolicy::kLeaveInsecureRequestsAlone}, - {"upgrade-insecure-requests", - mojom::blink::InsecureRequestPolicy::kUpgradeInsecureRequests}, - {"block-all-mixed-content", - mojom::blink::InsecureRequestPolicy::kBlockAllMixedContent}, - {"upgrade-insecure-requests; block-all-mixed-content", - mojom::blink::InsecureRequestPolicy::kUpgradeInsecureRequests | - mojom::blink::InsecureRequestPolicy::kBlockAllMixedContent}, - {"upgrade-insecure-requests, block-all-mixed-content", - mojom::blink::InsecureRequestPolicy::kUpgradeInsecureRequests | - mojom::blink::InsecureRequestPolicy::kBlockAllMixedContent}}; + WebInsecureRequestPolicy expected_policy; + } cases[] = {{"default-src 'none'", kLeaveInsecureRequestsAlone}, + {"upgrade-insecure-requests", kUpgradeInsecureRequests}, + {"block-all-mixed-content", kBlockAllMixedContent}, + {"upgrade-insecure-requests; block-all-mixed-content", + kUpgradeInsecureRequests | kBlockAllMixedContent}, + {"upgrade-insecure-requests, block-all-mixed-content", + kUpgradeInsecureRequests | kBlockAllMixedContent}}; // Enforced for (const auto& test : cases) { @@ -86,10 +80,7 @@ csp->BindToDelegate(document->GetContentSecurityPolicyDelegate()); EXPECT_EQ(test.expected_policy, document->GetSecurityContext().GetInsecureRequestPolicy()); - bool expect_upgrade = - (test.expected_policy & - mojom::blink::InsecureRequestPolicy::kUpgradeInsecureRequests) != - mojom::blink::InsecureRequestPolicy::kLeaveInsecureRequestsAlone; + bool expect_upgrade = test.expected_policy & kUpgradeInsecureRequests; EXPECT_EQ( expect_upgrade, document->GetSecurityContext().InsecureNavigationsToUpgrade().Contains( @@ -103,14 +94,13 @@ csp = MakeGarbageCollected<ContentSecurityPolicy>(); csp->DidReceiveHeader(test.header, ContentSecurityPolicyType::kReport, ContentSecurityPolicySource::kHTTP); - EXPECT_EQ(mojom::blink::InsecureRequestPolicy::kLeaveInsecureRequestsAlone, - csp->GetInsecureRequestPolicy()); + EXPECT_EQ(kLeaveInsecureRequestsAlone, csp->GetInsecureRequestPolicy()); execution_context = CreateExecutionContext(); execution_context->GetSecurityContext().SetSecurityOrigin(secure_origin); csp->BindToDelegate(execution_context->GetContentSecurityPolicyDelegate()); EXPECT_EQ( - mojom::blink::InsecureRequestPolicy::kLeaveInsecureRequestsAlone, + kLeaveInsecureRequestsAlone, execution_context->GetSecurityContext().GetInsecureRequestPolicy()); EXPECT_FALSE(execution_context->GetSecurityContext() .InsecureNavigationsToUpgrade() @@ -1629,8 +1619,7 @@ EXPECT_FALSE(csp->IsActive()); EXPECT_FALSE(csp->IsActiveForConnections()); EXPECT_TRUE(csp->FallbackUrlForPlugin().IsEmpty()); - EXPECT_EQ(mojom::blink::InsecureRequestPolicy::kLeaveInsecureRequestsAlone, - csp->GetInsecureRequestPolicy()); + EXPECT_EQ(kLeaveInsecureRequestsAlone, csp->GetInsecureRequestPolicy()); EXPECT_FALSE(csp->HasHeaderDeliveredPolicy()); EXPECT_FALSE(csp->SupportsWasmEval()); EXPECT_EQ(mojom::blink::WebSandboxFlags::kNone, csp->GetSandboxMask());
diff --git a/third_party/blink/renderer/core/frame/csp/execution_context_csp_delegate.cc b/third_party/blink/renderer/core/frame/csp/execution_context_csp_delegate.cc index 91cd284..d7a0a31 100644 --- a/third_party/blink/renderer/core/frame/csp/execution_context_csp_delegate.cc +++ b/third_party/blink/renderer/core/frame/csp/execution_context_csp_delegate.cc
@@ -4,8 +4,6 @@ #include "third_party/blink/renderer/core/frame/csp/execution_context_csp_delegate.h" -#include "third_party/blink/public/common/security_context/insecure_request_policy.h" -#include "third_party/blink/public/mojom/security_context/insecure_request_policy.mojom-blink.h" #include "third_party/blink/renderer/bindings/core/v8/source_location.h" #include "third_party/blink/renderer/core/dom/document.h" #include "third_party/blink/renderer/core/events/security_policy_violation_event.h" @@ -71,7 +69,7 @@ } void ExecutionContextCSPDelegate::AddInsecureRequestPolicy( - mojom::blink::InsecureRequestPolicy policy) { + WebInsecureRequestPolicy policy) { SecurityContext& security_context = GetSecurityContext(); Document* document = GetDocument(); @@ -84,9 +82,7 @@ document->DidEnforceInsecureRequestPolicy(); // Upgrade Insecure Requests: Update the set of insecure URLs to upgrade. - if ((policy & - mojom::blink::InsecureRequestPolicy::kUpgradeInsecureRequests) != - mojom::blink::InsecureRequestPolicy::kLeaveInsecureRequestsAlone) { + if (policy & kUpgradeInsecureRequests) { // Spec: Enforcing part of: // https://w3c.github.io/webappsec-upgrade-insecure-requests/#delivery // Step 3. Let tuple be a tuple of the protected resource’s URL's host and
diff --git a/third_party/blink/renderer/core/frame/csp/execution_context_csp_delegate.h b/third_party/blink/renderer/core/frame/csp/execution_context_csp_delegate.h index 1226af4..23c5231 100644 --- a/third_party/blink/renderer/core/frame/csp/execution_context_csp_delegate.h +++ b/third_party/blink/renderer/core/frame/csp/execution_context_csp_delegate.h
@@ -5,7 +5,6 @@ #ifndef THIRD_PARTY_BLINK_RENDERER_CORE_FRAME_CSP_EXECUTION_CONTEXT_CSP_DELEGATE_H_ #define THIRD_PARTY_BLINK_RENDERER_CORE_FRAME_CSP_EXECUTION_CONTEXT_CSP_DELEGATE_H_ -#include "third_party/blink/public/mojom/security_context/insecure_request_policy.mojom-blink-forward.h" #include "third_party/blink/renderer/core/frame/csp/content_security_policy.h" namespace blink { @@ -29,7 +28,7 @@ const KURL& Url() const override; void SetSandboxFlags(SandboxFlags) override; void SetRequireTrustedTypes() override; - void AddInsecureRequestPolicy(mojom::blink::InsecureRequestPolicy) override; + void AddInsecureRequestPolicy(WebInsecureRequestPolicy) override; std::unique_ptr<SourceLocation> GetSourceLocation() override; base::Optional<uint16_t> GetStatusCode() override; String GetDocumentReferrer() override;
diff --git a/third_party/blink/renderer/core/frame/local_frame_client.h b/third_party/blink/renderer/core/frame/local_frame_client.h index bcc769d..c30c58b1 100644 --- a/third_party/blink/renderer/core/frame/local_frame_client.h +++ b/third_party/blink/renderer/core/frame/local_frame_client.h
@@ -48,6 +48,7 @@ #include "third_party/blink/public/platform/scheduler/web_scoped_virtual_time_pauser.h" #include "third_party/blink/public/platform/web_content_settings_client.h" #include "third_party/blink/public/platform/web_effective_connection_type.h" +#include "third_party/blink/public/platform/web_insecure_request_policy.h" #include "third_party/blink/public/platform/web_worker_fetch_context.h" #include "third_party/blink/public/web/web_frame_load_type.h" #include "third_party/blink/public/web/web_history_commit_type.h"
diff --git a/third_party/blink/renderer/core/frame/local_frame_view.cc b/third_party/blink/renderer/core/frame/local_frame_view.cc index fb10b3c..3777c94 100644 --- a/third_party/blink/renderer/core/frame/local_frame_view.cc +++ b/third_party/blink/renderer/core/frame/local_frame_view.cc
@@ -2160,12 +2160,6 @@ // phase of this cycle. } -void LocalFrameView::SetNeedsForcedResizeObservations() { - if (auto* controller = - GetFrame().GetDocument()->GetResizeObserverController()) - controller->SetNeedsForcedResizeObservations(); -} - void LocalFrameView::NotifyResizeObservers() { TRACE_EVENT0("blink,benchmark", "LocalFrameView::NotifyResizeObservers"); // Controller exists only if ResizeObserver was created.
diff --git a/third_party/blink/renderer/core/frame/local_frame_view.h b/third_party/blink/renderer/core/frame/local_frame_view.h index dc823f5..d07e3c35 100644 --- a/third_party/blink/renderer/core/frame/local_frame_view.h +++ b/third_party/blink/renderer/core/frame/local_frame_view.h
@@ -683,10 +683,6 @@ void RegisterForLifecycleNotifications(LifecycleNotificationObserver*); void UnregisterFromLifecycleNotifications(LifecycleNotificationObserver*); - // Sets whether all ResizeObservers should check all their ResizeObservations - // for a resize. This is needed when exiting a display lock. - void SetNeedsForcedResizeObservations(); - protected: void FrameRectsChanged(const IntRect&) override; void SelfVisibleChanged() override;
diff --git a/third_party/blink/renderer/core/frame/remote_frame.cc b/third_party/blink/renderer/core/frame/remote_frame.cc index b9fdeeb..34ae5dd 100644 --- a/third_party/blink/renderer/core/frame/remote_frame.cc +++ b/third_party/blink/renderer/core/frame/remote_frame.cc
@@ -9,7 +9,6 @@ #include "third_party/blink/public/common/features.h" #include "third_party/blink/public/mojom/frame/frame_owner_properties.mojom-blink.h" #include "third_party/blink/public/mojom/frame/intrinsic_sizing_info.mojom-blink.h" -#include "third_party/blink/public/mojom/security_context/insecure_request_policy.mojom-blink.h" #include "third_party/blink/public/platform/interface_registry.h" #include "third_party/blink/public/web/web_frame.h" #include "third_party/blink/public/web/web_view.h" @@ -328,8 +327,7 @@ security_context_.ResetAndEnforceSandboxFlags(flags); } -void RemoteFrame::SetInsecureRequestPolicy( - mojom::blink::InsecureRequestPolicy policy) { +void RemoteFrame::SetInsecureRequestPolicy(WebInsecureRequestPolicy policy) { security_context_.SetInsecureRequestPolicy(policy); }
diff --git a/third_party/blink/renderer/core/frame/remote_frame.h b/third_party/blink/renderer/core/frame/remote_frame.h index 814a6fb..2f7c33e 100644 --- a/third_party/blink/renderer/core/frame/remote_frame.h +++ b/third_party/blink/renderer/core/frame/remote_frame.h
@@ -11,7 +11,6 @@ #include "third_party/blink/public/mojom/frame/frame_owner_properties.mojom-blink-forward.h" #include "third_party/blink/public/mojom/input/focus_type.mojom-blink-forward.h" #include "third_party/blink/public/mojom/scroll/scroll_into_view_params.mojom-blink.h" -#include "third_party/blink/public/mojom/security_context/insecure_request_policy.mojom-blink-forward.h" #include "third_party/blink/renderer/core/core_export.h" #include "third_party/blink/renderer/core/execution_context/remote_security_context.h" #include "third_party/blink/renderer/core/frame/frame.h" @@ -91,7 +90,7 @@ const FeaturePolicy::FeatureState&); void SetReplicatedSandboxFlags(mojom::blink::WebSandboxFlags); - void SetInsecureRequestPolicy(mojom::blink::InsecureRequestPolicy); + void SetInsecureRequestPolicy(WebInsecureRequestPolicy); void SetInsecureNavigationsSet(const WebVector<unsigned>&); // blink::mojom::RemoteFrame overrides:
diff --git a/third_party/blink/renderer/core/html/forms/html_form_element.cc b/third_party/blink/renderer/core/html/forms/html_form_element.cc index 0a4292b..c344dd3 100644 --- a/third_party/blink/renderer/core/html/forms/html_form_element.cc +++ b/third_party/blink/renderer/core/html/forms/html_form_element.cc
@@ -28,8 +28,7 @@ #include <limits> #include "base/auto_reset.h" -#include "third_party/blink/public/common/security_context/insecure_request_policy.h" -#include "third_party/blink/public/mojom/security_context/insecure_request_policy.mojom-blink.h" +#include "third_party/blink/public/platform/web_insecure_request_policy.h" #include "third_party/blink/renderer/bindings/core/v8/radio_node_list_or_element.h" #include "third_party/blink/renderer/bindings/core/v8/script_controller.h" #include "third_party/blink/renderer/bindings/core/v8/script_event_listener.h" @@ -590,9 +589,8 @@ // If we're not upgrading insecure requests, and the new action attribute is // pointing to an insecure "action" location from a secure page it is marked // as "passive" mixed content. - if ((GetDocument().GetSecurityContext().GetInsecureRequestPolicy() & - mojom::blink::InsecureRequestPolicy::kUpgradeInsecureRequests) != - mojom::blink::InsecureRequestPolicy::kLeaveInsecureRequestsAlone) + if (GetDocument().GetSecurityContext().GetInsecureRequestPolicy() & + kUpgradeInsecureRequests) return; KURL action_url = GetDocument().CompleteURL( attributes_.Action().IsEmpty() ? GetDocument().Url().GetString()
diff --git a/third_party/blink/renderer/core/html/html_attribute_names.json5 b/third_party/blink/renderer/core/html/html_attribute_names.json5 index fe9a72f8..649c530 100644 --- a/third_party/blink/renderer/core/html/html_attribute_names.json5 +++ b/third_party/blink/renderer/core/html/html_attribute_names.json5
@@ -277,7 +277,6 @@ "preload", "pseudo", "readonly", - "rendersubtree", "referrerpolicy", "rel", "required",
diff --git a/third_party/blink/renderer/core/layout/layout_box.cc b/third_party/blink/renderer/core/layout/layout_box.cc index 8262a6a..a72f7d31 100644 --- a/third_party/blink/renderer/core/layout/layout_box.cc +++ b/third_party/blink/renderer/core/layout/layout_box.cc
@@ -2107,10 +2107,6 @@ // object for paint invalidation. if (!NeedsLayout()) SetShouldCheckForPaintInvalidation(); - - if (auto* element = DynamicTo<Element>(GetNode())) { - element->SetNeedsResizeObserverUpdate(); - } } bool LayoutBox::IntersectsVisibleViewport() const {
diff --git a/third_party/blink/renderer/core/layout/layout_object.h b/third_party/blink/renderer/core/layout/layout_object.h index 4ff8a377..20ee1b2 100644 --- a/third_party/blink/renderer/core/layout/layout_object.h +++ b/third_party/blink/renderer/core/layout/layout_object.h
@@ -2514,7 +2514,7 @@ bool BeingDestroyed() const { return bitfields_.BeingDestroyed(); } DisplayLockContext* GetDisplayLockContext() const { - if (!RuntimeEnabledFeatures::DisplayLockingEnabled(&GetDocument())) + if (!RuntimeEnabledFeatures::CSSRenderSubtreeEnabled()) return nullptr; auto* element = DynamicTo<Element>(GetNode()); if (!element)
diff --git a/third_party/blink/renderer/core/layout/ng/inline/ng_inline_node_test.cc b/third_party/blink/renderer/core/layout/ng/inline/ng_inline_node_test.cc index c8b6e61..a9c246be 100644 --- a/third_party/blink/renderer/core/layout/ng/inline/ng_inline_node_test.cc +++ b/third_party/blink/renderer/core/layout/ng/inline/ng_inline_node_test.cc
@@ -177,8 +177,8 @@ Vector<unsigned> ToEndOffsetList( NGInlineItemSegments::const_iterator segments) { Vector<unsigned> end_offsets; - for (const NGInlineItemSegment& segment : segments) - end_offsets.push_back(segment.EndOffset()); + for (const RunSegmenter::RunSegmenterRange& segment : segments) + end_offsets.push_back(segment.end); return end_offsets; }
diff --git a/third_party/blink/renderer/core/layout/ng/mathml/ng_math_space_layout_algorithm.cc b/third_party/blink/renderer/core/layout/ng/mathml/ng_math_space_layout_algorithm.cc index fe39464..66406f5a 100644 --- a/third_party/blink/renderer/core/layout/ng/mathml/ng_math_space_layout_algorithm.cc +++ b/third_party/blink/renderer/core/layout/ng/mathml/ng_math_space_layout_algorithm.cc
@@ -30,7 +30,7 @@ container_builder_.SetBaseline( border_padding_.block_start + - ValueForLength(Style().GetVerticalAlignLength(), LayoutUnit())); + ValueForLength(Style().GetMathBaseline(), LayoutUnit())); return container_builder_.ToBoxFragment(); }
diff --git a/third_party/blink/renderer/core/layout/ng/ng_flex_layout_algorithm.cc b/third_party/blink/renderer/core/layout/ng/ng_flex_layout_algorithm.cc index 3b10399..c237a2c 100644 --- a/third_party/blink/renderer/core/layout/ng/ng_flex_layout_algorithm.cc +++ b/third_party/blink/renderer/core/layout/ng/ng_flex_layout_algorithm.cc
@@ -433,8 +433,7 @@ return *min_max_size; }; - - MinMaxSize min_max_sizes_in_main_axis_direction{LayoutUnit(), + MinMaxSize min_max_sizes_in_main_axis_direction{main_axis_border_padding, LayoutUnit::Max()}; MinMaxSize min_max_sizes_in_cross_axis_direction{LayoutUnit(), LayoutUnit::Max()}; @@ -682,6 +681,8 @@ min, IntrinsicBlockSizeFunc, LengthResolvePhase::kLayout); } min_max_sizes_in_main_axis_direction -= main_axis_border_padding; + DCHECK_GE(min_max_sizes_in_main_axis_direction.min_size, 0); + DCHECK_GE(min_max_sizes_in_main_axis_direction.max_size, 0); // TODO(dgrogan): Should min_max_sizes_in_cross_axis_direction include // cross_axis_border_padding?
diff --git a/third_party/blink/renderer/core/layout/svg/layout_svg_container.cc b/third_party/blink/renderer/core/layout/svg/layout_svg_container.cc index c9085ba3..20a540c 100644 --- a/third_party/blink/renderer/core/layout/svg/layout_svg_container.cc +++ b/third_party/blink/renderer/core/layout/svg/layout_svg_container.cc
@@ -172,7 +172,6 @@ SVGLayoutSupport::ComputeContainerBoundingBoxes( this, object_bounding_box_, object_bounding_box_valid_, stroke_bounding_box_, local_visual_rect_); - GetElement()->SetNeedsResizeObserverUpdate(); } bool LayoutSVGContainer::NodeAtPoint(HitTestResult& result,
diff --git a/third_party/blink/renderer/core/layout/svg/layout_svg_image.cc b/third_party/blink/renderer/core/layout/svg/layout_svg_image.cc index 34580bb..99535729 100644 --- a/third_party/blink/renderer/core/layout/svg/layout_svg_image.cc +++ b/third_party/blink/renderer/core/layout/svg/layout_svg_image.cc
@@ -129,7 +129,6 @@ object_bounding_box_.SetSize(CalculateObjectSize()); if (old_object_bounding_box != object_bounding_box_) { - GetElement()->SetNeedsResizeObserverUpdate(); SetShouldDoFullPaintInvalidation(PaintInvalidationReason::kImage); needs_boundaries_update_ = true; }
diff --git a/third_party/blink/renderer/core/layout/svg/layout_svg_resource_gradient.cc b/third_party/blink/renderer/core/layout/svg/layout_svg_resource_gradient.cc index 434df694..ab3d552 100644 --- a/third_party/blink/renderer/core/layout/svg/layout_svg_resource_gradient.cc +++ b/third_party/blink/renderer/core/layout/svg/layout_svg_resource_gradient.cc
@@ -70,8 +70,7 @@ // currently working on. Preferably the state validation should have // no side-effects though. if (should_collect_gradient_attributes_) { - if (!CollectGradientAttributes()) - return gradient_data; + CollectGradientAttributes(); should_collect_gradient_attributes_ = false; }
diff --git a/third_party/blink/renderer/core/layout/svg/layout_svg_resource_gradient.h b/third_party/blink/renderer/core/layout/svg/layout_svg_resource_gradient.h index 1e80cb6..7998f7f 100644 --- a/third_party/blink/renderer/core/layout/svg/layout_svg_resource_gradient.h +++ b/third_party/blink/renderer/core/layout/svg/layout_svg_resource_gradient.h
@@ -47,7 +47,7 @@ protected: virtual SVGUnitTypes::SVGUnitType GradientUnits() const = 0; virtual AffineTransform CalculateGradientTransform() const = 0; - virtual bool CollectGradientAttributes() = 0; + virtual void CollectGradientAttributes() = 0; virtual scoped_refptr<Gradient> BuildGradient() const = 0; static GradientSpreadMethod PlatformSpreadMethodFromSVGType(
diff --git a/third_party/blink/renderer/core/layout/svg/layout_svg_resource_linear_gradient.cc b/third_party/blink/renderer/core/layout/svg/layout_svg_resource_linear_gradient.cc index 460a76c1..8d88444 100644 --- a/third_party/blink/renderer/core/layout/svg/layout_svg_resource_linear_gradient.cc +++ b/third_party/blink/renderer/core/layout/svg/layout_svg_resource_linear_gradient.cc
@@ -33,10 +33,10 @@ LayoutSVGResourceLinearGradient::~LayoutSVGResourceLinearGradient() = default; -bool LayoutSVGResourceLinearGradient::CollectGradientAttributes() { +void LayoutSVGResourceLinearGradient::CollectGradientAttributes() { DCHECK(GetElement()); attributes_wrapper_->Set(LinearGradientAttributes()); - return To<SVGLinearGradientElement>(GetElement()) + To<SVGLinearGradientElement>(GetElement()) ->CollectGradientAttributes(MutableAttributes()); }
diff --git a/third_party/blink/renderer/core/layout/svg/layout_svg_resource_linear_gradient.h b/third_party/blink/renderer/core/layout/svg/layout_svg_resource_linear_gradient.h index bbad601c2..48c43d5 100644 --- a/third_party/blink/renderer/core/layout/svg/layout_svg_resource_linear_gradient.h +++ b/third_party/blink/renderer/core/layout/svg/layout_svg_resource_linear_gradient.h
@@ -47,7 +47,7 @@ AffineTransform CalculateGradientTransform() const override { return Attributes().GradientTransform(); } - bool CollectGradientAttributes() override; + void CollectGradientAttributes() override; scoped_refptr<Gradient> BuildGradient() const override; FloatPoint StartPoint(const LinearGradientAttributes&) const;
diff --git a/third_party/blink/renderer/core/layout/svg/layout_svg_resource_radial_gradient.cc b/third_party/blink/renderer/core/layout/svg/layout_svg_resource_radial_gradient.cc index 9b335862..bf85cc0 100644 --- a/third_party/blink/renderer/core/layout/svg/layout_svg_resource_radial_gradient.cc +++ b/third_party/blink/renderer/core/layout/svg/layout_svg_resource_radial_gradient.cc
@@ -34,10 +34,10 @@ LayoutSVGResourceRadialGradient::~LayoutSVGResourceRadialGradient() = default; -bool LayoutSVGResourceRadialGradient::CollectGradientAttributes() { +void LayoutSVGResourceRadialGradient::CollectGradientAttributes() { DCHECK(GetElement()); attributes_wrapper_->Set(RadialGradientAttributes()); - return To<SVGRadialGradientElement>(GetElement()) + To<SVGRadialGradientElement>(GetElement()) ->CollectGradientAttributes(MutableAttributes()); }
diff --git a/third_party/blink/renderer/core/layout/svg/layout_svg_resource_radial_gradient.h b/third_party/blink/renderer/core/layout/svg/layout_svg_resource_radial_gradient.h index d6f1b76..4177123 100644 --- a/third_party/blink/renderer/core/layout/svg/layout_svg_resource_radial_gradient.h +++ b/third_party/blink/renderer/core/layout/svg/layout_svg_resource_radial_gradient.h
@@ -47,7 +47,7 @@ AffineTransform CalculateGradientTransform() const override { return Attributes().GradientTransform(); } - bool CollectGradientAttributes() override; + void CollectGradientAttributes() override; scoped_refptr<Gradient> BuildGradient() const override; FloatPoint CenterPoint(const RadialGradientAttributes&) const;
diff --git a/third_party/blink/renderer/core/layout/svg/layout_svg_shape.cc b/third_party/blink/renderer/core/layout/svg/layout_svg_shape.cc index 528e3f6..66bff8d5 100644 --- a/third_party/blink/renderer/core/layout/svg/layout_svg_shape.cc +++ b/third_party/blink/renderer/core/layout/svg/layout_svg_shape.cc
@@ -229,7 +229,6 @@ FloatRect old_object_bounding_box = ObjectBoundingBox(); UpdateShapeFromElement(); if (old_object_bounding_box != ObjectBoundingBox()) { - GetElement()->SetNeedsResizeObserverUpdate(); SetShouldDoFullPaintInvalidation(); bbox_changed = true; }
diff --git a/third_party/blink/renderer/core/loader/form_submission.cc b/third_party/blink/renderer/core/loader/form_submission.cc index c519c54..5a362a8 100644 --- a/third_party/blink/renderer/core/loader/form_submission.cc +++ b/third_party/blink/renderer/core/loader/form_submission.cc
@@ -30,8 +30,7 @@ #include "third_party/blink/renderer/core/loader/form_submission.h" -#include "third_party/blink/public/common/security_context/insecure_request_policy.h" -#include "third_party/blink/public/mojom/security_context/insecure_request_policy.mojom-blink.h" +#include "third_party/blink/public/platform/web_insecure_request_policy.h" #include "third_party/blink/renderer/core/dom/document.h" #include "third_party/blink/renderer/core/dom/events/event.h" #include "third_party/blink/renderer/core/frame/local_frame.h" @@ -213,9 +212,8 @@ ? document.Url().GetString() : copied_attributes.Action()); - if ((document.GetSecurityContext().GetInsecureRequestPolicy() & - mojom::blink::InsecureRequestPolicy::kUpgradeInsecureRequests) != - mojom::blink::InsecureRequestPolicy::kLeaveInsecureRequestsAlone && + if (document.GetSecurityContext().GetInsecureRequestPolicy() & + kUpgradeInsecureRequests && action_url.ProtocolIs("http") && !SecurityOrigin::Create(action_url)->IsPotentiallyTrustworthy()) { UseCounter::Count(document,
diff --git a/third_party/blink/renderer/core/loader/frame_fetch_context.cc b/third_party/blink/renderer/core/loader/frame_fetch_context.cc index 47e263f..cc85619 100644 --- a/third_party/blink/renderer/core/loader/frame_fetch_context.cc +++ b/third_party/blink/renderer/core/loader/frame_fetch_context.cc
@@ -48,6 +48,7 @@ #include "third_party/blink/public/platform/scheduler/web_scoped_virtual_time_pauser.h" #include "third_party/blink/public/platform/web_content_settings_client.h" #include "third_party/blink/public/platform/web_effective_connection_type.h" +#include "third_party/blink/public/platform/web_insecure_request_policy.h" #include "third_party/blink/public/platform/websocket_handshake_throttle.h" #include "third_party/blink/public/web/web_frame.h" #include "third_party/blink/public/web/web_local_frame.h"
diff --git a/third_party/blink/renderer/core/loader/frame_fetch_context_test.cc b/third_party/blink/renderer/core/loader/frame_fetch_context_test.cc index fd17dd9d..16f9f285 100644 --- a/third_party/blink/renderer/core/loader/frame_fetch_context_test.cc +++ b/third_party/blink/renderer/core/loader/frame_fetch_context_test.cc
@@ -40,10 +40,10 @@ #include "third_party/blink/public/common/features.h" #include "third_party/blink/public/mojom/fetch/fetch_api_request.mojom-blink.h" #include "third_party/blink/public/mojom/loader/request_context_frame_type.mojom-blink.h" -#include "third_party/blink/public/mojom/security_context/insecure_request_policy.mojom-blink.h" #include "third_party/blink/public/platform/scheduler/web_scoped_virtual_time_pauser.h" #include "third_party/blink/public/platform/web_client_hints_type.h" #include "third_party/blink/public/platform/web_document_subresource_filter.h" +#include "third_party/blink/public/platform/web_insecure_request_policy.h" #include "third_party/blink/public/platform/web_runtime_features.h" #include "third_party/blink/renderer/core/dom/document.h" #include "third_party/blink/renderer/core/frame/ad_tracker.h" @@ -337,7 +337,7 @@ void ExpectIsAutomaticUpgradeSet(const char* input, const char* main_frame, - mojom::blink::InsecureRequestPolicy policy, + WebInsecureRequestPolicy policy, bool expected_value) { const KURL input_url(input); const KURL main_frame_url(main_frame); @@ -410,7 +410,7 @@ }; document->GetSecurityContext().SetInsecureRequestPolicy( - mojom::blink::InsecureRequestPolicy::kUpgradeInsecureRequests); + kUpgradeInsecureRequests); for (const auto& test : tests) { document->GetSecurityContext().ClearInsecureNavigationsToUpgradeForTest(); @@ -454,7 +454,7 @@ RecreateFetchContext(KURL("https://secureorigin.test/image.png")); document->GetSecurityContext().SetInsecureRequestPolicy( - mojom::blink::InsecureRequestPolicy::kLeaveInsecureRequestsAlone); + kLeaveInsecureRequestsAlone); ExpectUpgrade("http://example.test/image.png", "http://example.test/image.png"); @@ -480,27 +480,27 @@ TEST_F(FrameFetchContextModifyRequestTest, IsAutomaticUpgradeSet) { base::test::ScopedFeatureList scoped_feature_list; scoped_feature_list.InitAndEnableFeature(features::kMixedContentAutoupgrade); - ExpectIsAutomaticUpgradeSet( - "http://example.test/image.png", "https://example.test", - mojom::blink::InsecureRequestPolicy::kLeaveInsecureRequestsAlone, true); + ExpectIsAutomaticUpgradeSet("http://example.test/image.png", + "https://example.test", + kLeaveInsecureRequestsAlone, true); } TEST_F(FrameFetchContextModifyRequestTest, IsAutomaticUpgradeNotSet) { base::test::ScopedFeatureList scoped_feature_list; scoped_feature_list.InitAndEnableFeature(features::kMixedContentAutoupgrade); // Upgrade shouldn't happen if the resource is already https. - ExpectIsAutomaticUpgradeSet( - "https://example.test/image.png", "https://example.test", - mojom::blink::InsecureRequestPolicy::kLeaveInsecureRequestsAlone, false); + ExpectIsAutomaticUpgradeSet("https://example.test/image.png", + "https://example.test", + kLeaveInsecureRequestsAlone, false); // Upgrade shouldn't happen if the site is http. - ExpectIsAutomaticUpgradeSet( - "http://example.test/image.png", "http://example.test", - mojom::blink::InsecureRequestPolicy::kLeaveInsecureRequestsAlone, false); + ExpectIsAutomaticUpgradeSet("http://example.test/image.png", + "http://example.test", + kLeaveInsecureRequestsAlone, false); // Flag shouldn't be set if upgrade was due to upgrade-insecure-requests. - ExpectIsAutomaticUpgradeSet( - "http://example.test/image.png", "https://example.test", - mojom::blink::InsecureRequestPolicy::kUpgradeInsecureRequests, false); + ExpectIsAutomaticUpgradeSet("http://example.test/image.png", + "https://example.test", kUpgradeInsecureRequests, + false); } TEST_F(FrameFetchContextModifyRequestTest, SendUpgradeInsecureRequestHeader) { @@ -530,24 +530,24 @@ // the tests both before and after providing a document to the context. for (const auto& test : tests) { document->GetSecurityContext().SetInsecureRequestPolicy( - mojom::blink::InsecureRequestPolicy::kLeaveInsecureRequestsAlone); + kLeaveInsecureRequestsAlone); ExpectUpgradeInsecureRequestHeader(test.to_request, test.frame_type, test.should_prefer); document->GetSecurityContext().SetInsecureRequestPolicy( - mojom::blink::InsecureRequestPolicy::kUpgradeInsecureRequests); + kUpgradeInsecureRequests); ExpectUpgradeInsecureRequestHeader(test.to_request, test.frame_type, test.should_prefer); } for (const auto& test : tests) { document->GetSecurityContext().SetInsecureRequestPolicy( - mojom::blink::InsecureRequestPolicy::kLeaveInsecureRequestsAlone); + kLeaveInsecureRequestsAlone); ExpectUpgradeInsecureRequestHeader(test.to_request, test.frame_type, test.should_prefer); document->GetSecurityContext().SetInsecureRequestPolicy( - mojom::blink::InsecureRequestPolicy::kUpgradeInsecureRequests); + kUpgradeInsecureRequests); ExpectUpgradeInsecureRequestHeader(test.to_request, test.frame_type, test.should_prefer); }
diff --git a/third_party/blink/renderer/core/loader/mixed_content_checker.cc b/third_party/blink/renderer/core/loader/mixed_content_checker.cc index 17fa2fd..7f65711 100644 --- a/third_party/blink/renderer/core/loader/mixed_content_checker.cc +++ b/third_party/blink/renderer/core/loader/mixed_content_checker.cc
@@ -32,10 +32,9 @@ #include "base/metrics/field_trial_params.h" #include "services/network/public/mojom/ip_address_space.mojom-blink.h" #include "third_party/blink/public/common/features.h" -#include "third_party/blink/public/common/security_context/insecure_request_policy.h" #include "third_party/blink/public/mojom/loader/request_context_frame_type.mojom-blink.h" -#include "third_party/blink/public/mojom/security_context/insecure_request_policy.mojom-blink.h" #include "third_party/blink/public/platform/web_content_settings_client.h" +#include "third_party/blink/public/platform/web_insecure_request_policy.h" #include "third_party/blink/public/platform/web_mixed_content.h" #include "third_party/blink/public/platform/web_security_origin.h" #include "third_party/blink/public/platform/web_worker_fetch_context.h" @@ -174,9 +173,7 @@ // intentionally skip the client checks in order to prevent degrading the // site's security UI. bool strict_mode = - (security_context->GetInsecureRequestPolicy() & - mojom::blink::InsecureRequestPolicy::kBlockAllMixedContent) != - mojom::blink::InsecureRequestPolicy::kLeaveInsecureRequestsAlone || + security_context->GetInsecureRequestPolicy() & kBlockAllMixedContent || settings->GetStrictMixedContentChecking(); if (strict_mode) return false; @@ -197,13 +194,11 @@ // If we're in strict mode, we'll automagically fail everything, and // intentionally skip the client checks in order to prevent degrading the // site's security UI. - bool strict_mode = - (fetch_context.GetResourceFetcherProperties() - .GetFetchClientSettingsObject() - .GetInsecureRequestsPolicy() & - mojom::blink::InsecureRequestPolicy::kBlockAllMixedContent) != - mojom::blink::InsecureRequestPolicy::kLeaveInsecureRequestsAlone || - settings->GetStrictMixedContentChecking(); + bool strict_mode = fetch_context.GetResourceFetcherProperties() + .GetFetchClientSettingsObject() + .GetInsecureRequestsPolicy() & + kBlockAllMixedContent || + settings->GetStrictMixedContentChecking(); if (strict_mode) return false; return settings && settings->GetAllowRunningOfInsecureContent(); @@ -425,9 +420,8 @@ // intentionally skip the client checks in order to prevent degrading the // site's security UI. bool strict_mode = - (mixed_frame->GetSecurityContext()->GetInsecureRequestPolicy() & - mojom::blink::InsecureRequestPolicy::kBlockAllMixedContent) != - mojom::blink::InsecureRequestPolicy::kLeaveInsecureRequestsAlone || + mixed_frame->GetSecurityContext()->GetInsecureRequestPolicy() & + kBlockAllMixedContent || settings->GetStrictMixedContentChecking(); WebMixedContentContextType context_type = @@ -536,9 +530,8 @@ allowed = false; } else { bool strict_mode = - (fetch_client_settings_object.GetInsecureRequestsPolicy() & - mojom::blink::InsecureRequestPolicy::kBlockAllMixedContent) != - mojom::blink::InsecureRequestPolicy::kLeaveInsecureRequestsAlone || + fetch_client_settings_object.GetInsecureRequestsPolicy() & + kBlockAllMixedContent || settings->GetStrictMixedContentChecking(); bool should_ask_embedder = !strict_mode && (!settings->GetStrictlyBlockBlockableMixedContent() || @@ -840,9 +833,8 @@ DCHECK(fetch_client_settings_object); - if ((fetch_client_settings_object->GetInsecureRequestsPolicy() & - mojom::blink::InsecureRequestPolicy::kUpgradeInsecureRequests) == - mojom::blink::InsecureRequestPolicy::kLeaveInsecureRequestsAlone) { + if (!(fetch_client_settings_object->GetInsecureRequestsPolicy() & + kUpgradeInsecureRequests)) { mojom::RequestContextType context = resource_request.GetRequestContext(); if (context != mojom::RequestContextType::UNSPECIFIED && resource_request.Url().ProtocolIs("http") &&
diff --git a/third_party/blink/renderer/core/mathml/mathml_space_element.cc b/third_party/blink/renderer/core/mathml/mathml_space_element.cc index c9a2eb88..ca857634 100644 --- a/third_party/blink/renderer/core/mathml/mathml_space_element.cc +++ b/third_party/blink/renderer/core/mathml/mathml_space_element.cc
@@ -4,6 +4,7 @@ #include "third_party/blink/renderer/core/mathml/mathml_space_element.h" +#include "third_party/blink/renderer/core/css/parser/css_parser.h" #include "third_party/blink/renderer/core/layout/ng/mathml/layout_ng_mathml_block.h" #include "third_party/blink/renderer/platform/runtime_enabled_features.h" @@ -12,6 +13,23 @@ MathMLSpaceElement::MathMLSpaceElement(Document& doc) : MathMLElement(mathml_names::kMspaceTag, doc) {} +void MathMLSpaceElement::AddMathBaselineIfNeeded( + ComputedStyle& style, + const CSSToLengthConversionData& conversion_data) { + if (!FastHasAttribute(mathml_names::kHeightAttr)) + return; + auto string = FastGetAttribute(mathml_names::kHeightAttr); + const CSSValue* parsed = CSSParser::ParseSingleValue( + CSSPropertyID::kHeight, string, + StrictCSSParserContext(GetDocument().GetSecureContextMode())); + const auto* new_value = DynamicTo<CSSPrimitiveValue>(parsed); + if (!new_value || !new_value->IsLength()) + return; + Length length_or_percentage_value = + new_value->ConvertToLength(conversion_data); + style.SetMathBaseline(std::move(length_or_percentage_value)); +} + bool MathMLSpaceElement::IsPresentationAttribute( const QualifiedName& name) const { if (name == mathml_names::kWidthAttr || name == mathml_names::kHeightAttr || @@ -41,9 +59,6 @@ AddPropertyToPresentationAttributeStyle(style, CSSPropertyID::kHeight, value); } - if (name == mathml_names::kHeightAttr) { - SetInlineStyleProperty(CSSPropertyID::kVerticalAlign, value, false); - } } else { MathMLElement::CollectStyleForPresentationAttribute(name, value, style); }
diff --git a/third_party/blink/renderer/core/mathml/mathml_space_element.h b/third_party/blink/renderer/core/mathml/mathml_space_element.h index a4ae212..719e4973 100644 --- a/third_party/blink/renderer/core/mathml/mathml_space_element.h +++ b/third_party/blink/renderer/core/mathml/mathml_space_element.h
@@ -11,11 +11,15 @@ class LayoutObject; class ComputedStyle; +class CSSToLengthConversionData; class MathMLSpaceElement final : public MathMLElement { public: explicit MathMLSpaceElement(Document&); + void AddMathBaselineIfNeeded(ComputedStyle&, + const CSSToLengthConversionData&); + private: LayoutObject* CreateLayoutObject(const ComputedStyle&, LegacyLayout legacy) override;
diff --git a/third_party/blink/renderer/core/resize_observer/resize_observation.cc b/third_party/blink/renderer/core/resize_observer/resize_observation.cc index 789e4d0..abb5fa9 100644 --- a/third_party/blink/renderer/core/resize_observer/resize_observation.cc +++ b/third_party/blink/renderer/core/resize_observer/resize_observation.cc
@@ -18,14 +18,12 @@ : target_(target), observer_(observer), observation_size_(0, 0), - element_size_changed_(true), observed_box_(observed_box) { DCHECK(target_); - observer_->ElementSizeChanged(); } bool ResizeObservation::ObservationSizeOutOfSync() { - if (!element_size_changed_ || observation_size_ == ComputeTargetSize()) + if (observation_size_ == ComputeTargetSize()) return false; // Skip resize observations on locked elements. @@ -39,13 +37,6 @@ void ResizeObservation::SetObservationSize(const LayoutSize& observation_size) { observation_size_ = observation_size; - - // Don't clear the dirty bit while locked. This allows us to make sure to - // compare sizes when becoming unlocked. - if (UNLIKELY(DisplayLockUtilities::IsInLockedSubtreeCrossingFrames(*target_))) - return; - - element_size_changed_ = false; } size_t ResizeObservation::TargetDepth() { @@ -68,24 +59,23 @@ if (!layout_object->IsBox()) return LayoutSize(); - switch (observed_box_) { - case ResizeObserverBoxOptions::BorderBox: - return ToLayoutBox(layout_object)->BorderBoxRect().Size(); - case ResizeObserverBoxOptions::ContentBox: - return ToLayoutBox(layout_object)->ContentSize(); - default: - NOTREACHED(); + if (LayoutBox* layout_box = ToLayoutBox(layout_object)) { + switch (observed_box_) { + case ResizeObserverBoxOptions::BorderBox: + return LayoutSize(layout_box->LogicalWidth(), + layout_box->LogicalHeight()); + case ResizeObserverBoxOptions::ContentBox: + return LayoutSize(layout_box->ContentLogicalWidth(), + layout_box->ContentLogicalHeight()); + default: + NOTREACHED(); + } } } } return LayoutSize(); } -void ResizeObservation::ElementSizeChanged() { - element_size_changed_ = true; - observer_->ElementSizeChanged(); -} - void ResizeObservation::Trace(Visitor* visitor) { visitor->Trace(target_); visitor->Trace(observer_);
diff --git a/third_party/blink/renderer/core/resize_observer/resize_observation.h b/third_party/blink/renderer/core/resize_observer/resize_observation.h index 3e678c84..66c0ac6 100644 --- a/third_party/blink/renderer/core/resize_observer/resize_observation.h +++ b/third_party/blink/renderer/core/resize_observer/resize_observation.h
@@ -29,7 +29,6 @@ // True if observationSize differs from target's current size. bool ObservationSizeOutOfSync(); void SetObservationSize(const LayoutSize&); - void ElementSizeChanged(); ResizeObserverBoxOptions observedBox() const { return observed_box_; } LayoutSize ComputeTargetSize() const; @@ -41,7 +40,6 @@ Member<ResizeObserver> observer_; // Target size sent in last observation notification. LayoutSize observation_size_; - bool element_size_changed_; ResizeObserverBoxOptions observed_box_; };
diff --git a/third_party/blink/renderer/core/resize_observer/resize_observer.cc b/third_party/blink/renderer/core/resize_observer/resize_observer.cc index 4394b34..c2c5c4bb 100644 --- a/third_party/blink/renderer/core/resize_observer/resize_observer.cc +++ b/third_party/blink/renderer/core/resize_observer/resize_observer.cc
@@ -32,8 +32,7 @@ Document& document) : ExecutionContextClient(document.ToExecutionContext()), callback_(callback), - skipped_observations_(false), - element_size_changed_(false) { + skipped_observations_(false) { DCHECK(callback_); controller_ = &document.EnsureResizeObserverController(); controller_->AddObserver(*this); @@ -42,8 +41,7 @@ ResizeObserver::ResizeObserver(Delegate* delegate, Document& document) : ExecutionContextClient(document.ToExecutionContext()), delegate_(delegate), - skipped_observations_(false), - element_size_changed_(false) { + skipped_observations_(false) { DCHECK(delegate_); controller_ = &document.EnsureResizeObserverController(); controller_->AddObserver(*this); @@ -129,8 +127,6 @@ DCHECK(active_observations_.IsEmpty()); size_t min_observed_depth = ResizeObserverController::kDepthBottom; - if (!element_size_changed_) - return min_observed_depth; for (auto& observation : observations_) { if (!observation->ObservationSizeOutOfSync()) continue; @@ -146,9 +142,6 @@ } void ResizeObserver::DeliverObservations() { - // We can only clear this flag after all observations have been - // broadcast. - element_size_changed_ = skipped_observations_; if (active_observations_.IsEmpty()) return; @@ -191,12 +184,6 @@ skipped_observations_ = false; } -void ResizeObserver::ElementSizeChanged() { - element_size_changed_ = true; - if (controller_) - controller_->ObserverChanged(); -} - bool ResizeObserver::HasPendingActivity() const { return !observations_.IsEmpty(); }
diff --git a/third_party/blink/renderer/core/resize_observer/resize_observer.h b/third_party/blink/renderer/core/resize_observer/resize_observer.h index 04aa96b..8e8dd97 100644 --- a/third_party/blink/renderer/core/resize_observer/resize_observer.h +++ b/third_party/blink/renderer/core/resize_observer/resize_observer.h
@@ -59,8 +59,6 @@ bool SkippedObservations() { return skipped_observations_; } void DeliverObservations(); void ClearObservations(); - void ElementSizeChanged(); - bool HasElementSizeChanged() { return element_size_changed_; } ResizeObserverBoxOptions ParseBoxOptions(const String& box_options); @@ -86,8 +84,7 @@ HeapVector<Member<ResizeObservation>> active_observations_; // True if observations were skipped gatherObservations bool skipped_observations_; - // True if any ResizeObservation reported size change - bool element_size_changed_; + WeakMember<ResizeObserverController> controller_; };
diff --git a/third_party/blink/renderer/core/resize_observer/resize_observer_controller.cc b/third_party/blink/renderer/core/resize_observer/resize_observer_controller.cc index 6b7958d4..d2bfdb5 100644 --- a/third_party/blink/renderer/core/resize_observer/resize_observer_controller.cc +++ b/third_party/blink/renderer/core/resize_observer/resize_observer_controller.cc
@@ -8,8 +8,7 @@ namespace blink { -ResizeObserverController::ResizeObserverController() - : observers_changed_(false) {} +ResizeObserverController::ResizeObserverController() = default; void ResizeObserverController::AddObserver(ResizeObserver& observer) { observers_.insert(&observer); @@ -17,8 +16,7 @@ size_t ResizeObserverController::GatherObservations(size_t deeper_than) { size_t shallowest = ResizeObserverController::kDepthBottom; - if (!observers_changed_) - return shallowest; + for (auto& observer : observers_) { size_t depth = observer->GatherObservations(deeper_than); if (depth < shallowest) @@ -27,14 +25,6 @@ return shallowest; } -void ResizeObserverController::SetNeedsForcedResizeObservations() { - for (auto& observer : observers_) { - // Set ElementSizeChanged as a way of forcing the observer to check all - // observations. - observer->ElementSizeChanged(); - } -} - bool ResizeObserverController::SkippedObservations() { for (auto& observer : observers_) { if (observer->SkippedObservations()) @@ -44,7 +34,6 @@ } void ResizeObserverController::DeliverObservations() { - observers_changed_ = false; // Copy is needed because m_observers might get modified during // deliverObservations. HeapVector<Member<ResizeObserver>> observers; @@ -53,8 +42,6 @@ for (auto& observer : observers) { if (observer) { observer->DeliverObservations(); - observers_changed_ = - observers_changed_ || observer->HasElementSizeChanged(); } } }
diff --git a/third_party/blink/renderer/core/resize_observer/resize_observer_controller.h b/third_party/blink/renderer/core/resize_observer/resize_observer_controller.h index e832c66..9ee120d 100644 --- a/third_party/blink/renderer/core/resize_observer/resize_observer_controller.h +++ b/third_party/blink/renderer/core/resize_observer/resize_observer_controller.h
@@ -35,9 +35,6 @@ bool SkippedObservations(); void DeliverObservations(); void ClearObservations(); - void ObserverChanged() { observers_changed_ = true; } - - void SetNeedsForcedResizeObservations(); void Trace(Visitor*); @@ -49,8 +46,6 @@ private: // Active observers HeapLinkedHashSet<WeakMember<ResizeObserver>> observers_; - // True if any observers were changed since last notification. - bool observers_changed_; }; } // namespace blink
diff --git a/third_party/blink/renderer/core/script/fetch_client_settings_object_impl.cc b/third_party/blink/renderer/core/script/fetch_client_settings_object_impl.cc index 648a0b0..d4a2c616 100644 --- a/third_party/blink/renderer/core/script/fetch_client_settings_object_impl.cc +++ b/third_party/blink/renderer/core/script/fetch_client_settings_object_impl.cc
@@ -4,7 +4,6 @@ #include "third_party/blink/renderer/core/script/fetch_client_settings_object_impl.h" -#include "third_party/blink/public/mojom/security_context/insecure_request_policy.mojom-blink.h" #include "third_party/blink/renderer/core/execution_context/execution_context.h" #include "third_party/blink/renderer/core/execution_context/security_context.h" #include "third_party/blink/renderer/platform/runtime_enabled_features.h" @@ -77,7 +76,7 @@ return execution_context_->GetSecurityContext().AddressSpace(); } -mojom::blink::InsecureRequestPolicy +WebInsecureRequestPolicy FetchClientSettingsObjectImpl::GetInsecureRequestsPolicy() const { return execution_context_->GetSecurityContext().GetInsecureRequestPolicy(); }
diff --git a/third_party/blink/renderer/core/script/fetch_client_settings_object_impl.h b/third_party/blink/renderer/core/script/fetch_client_settings_object_impl.h index 783ca71..932ba5b 100644 --- a/third_party/blink/renderer/core/script/fetch_client_settings_object_impl.h +++ b/third_party/blink/renderer/core/script/fetch_client_settings_object_impl.h
@@ -6,7 +6,6 @@ #define THIRD_PARTY_BLINK_RENDERER_CORE_SCRIPT_FETCH_CLIENT_SETTINGS_OBJECT_IMPL_H_ #include "services/network/public/mojom/referrer_policy.mojom-blink-forward.h" -#include "third_party/blink/public/mojom/security_context/insecure_request_policy.mojom-blink-forward.h" #include "third_party/blink/renderer/core/core_export.h" #include "third_party/blink/renderer/platform/heap/member.h" #include "third_party/blink/renderer/platform/loader/fetch/fetch_client_settings_object.h" @@ -45,8 +44,7 @@ network::mojom::IPAddressSpace GetAddressSpace() const override; - mojom::blink::InsecureRequestPolicy GetInsecureRequestsPolicy() - const override; + WebInsecureRequestPolicy GetInsecureRequestsPolicy() const override; const InsecureNavigationsSet& GetUpgradeInsecureNavigationsSet() const override;
diff --git a/third_party/blink/renderer/core/style/computed_style_extra_fields.json5 b/third_party/blink/renderer/core/style/computed_style_extra_fields.json5 index 482f3e61..b8ba270 100644 --- a/third_party/blink/renderer/core/style/computed_style_extra_fields.json5 +++ b/third_party/blink/renderer/core/style/computed_style_extra_fields.json5
@@ -1046,5 +1046,14 @@ default_value: "false", inherited: false, }, + { + name: "MathBaseline", + field_template: "external", + default_value: "Length()", + include_paths: ["third_party/blink/renderer/platform/geometry/length.h"], + type_name: "Length", + field_group: "*", + getter: "GetMathBaseline", + }, ], }
diff --git a/third_party/blink/renderer/core/svg/svg_linear_gradient_element.cc b/third_party/blink/renderer/core/svg/svg_linear_gradient_element.cc index e9b49b9..9c0c707 100644 --- a/third_party/blink/renderer/core/svg/svg_linear_gradient_element.cc +++ b/third_party/blink/renderer/core/svg/svg_linear_gradient_element.cc
@@ -110,8 +110,8 @@ attributes.SetY2(linear.y2()->CurrentValue()); } -bool SVGLinearGradientElement::CollectGradientAttributes( - LinearGradientAttributes& attributes) { +void SVGLinearGradientElement::CollectGradientAttributes( + LinearGradientAttributes& attributes) const { DCHECK(GetLayoutObject()); VisitedSet visited; @@ -123,12 +123,14 @@ visited.insert(current); current = current->ReferencedElement(); - if (!current || visited.Contains(current)) + + // Ignore the referenced gradient element if it is not attached. + if (!current || !current->GetLayoutObject()) break; - if (!current->GetLayoutObject()) - return false; + // Cycle detection. + if (visited.Contains(current)) + break; } - return true; } bool SVGLinearGradientElement::SelfHasRelativeLengths() const {
diff --git a/third_party/blink/renderer/core/svg/svg_linear_gradient_element.h b/third_party/blink/renderer/core/svg/svg_linear_gradient_element.h index 77a27d2..1b1b218 100644 --- a/third_party/blink/renderer/core/svg/svg_linear_gradient_element.h +++ b/third_party/blink/renderer/core/svg/svg_linear_gradient_element.h
@@ -35,7 +35,7 @@ public: explicit SVGLinearGradientElement(Document&); - bool CollectGradientAttributes(LinearGradientAttributes&); + void CollectGradientAttributes(LinearGradientAttributes&) const; SVGAnimatedLength* x1() const { return x1_.Get(); } SVGAnimatedLength* y1() const { return y1_.Get(); }
diff --git a/third_party/blink/renderer/core/svg/svg_pattern_element.cc b/third_party/blink/renderer/core/svg/svg_pattern_element.cc index 8c4aeb45..f87ed75 100644 --- a/third_party/blink/renderer/core/svg/svg_pattern_element.cc +++ b/third_party/blink/renderer/core/svg/svg_pattern_element.cc
@@ -266,10 +266,10 @@ // from that element to override values this pattern didn't set. current = current->ReferencedElement(); - // Only consider attached SVG pattern elements. + // Ignore the referenced pattern element if it is not attached. if (!current || !current->GetLayoutObject()) break; - // Cycle detection + // Cycle detection. if (processed_patterns.Contains(current)) break; }
diff --git a/third_party/blink/renderer/core/svg/svg_radial_gradient_element.cc b/third_party/blink/renderer/core/svg/svg_radial_gradient_element.cc index ee55760d..3c96ac2b 100644 --- a/third_party/blink/renderer/core/svg/svg_radial_gradient_element.cc +++ b/third_party/blink/renderer/core/svg/svg_radial_gradient_element.cc
@@ -130,8 +130,8 @@ attributes.SetFr(radial.fr()->CurrentValue()); } -bool SVGRadialGradientElement::CollectGradientAttributes( - RadialGradientAttributes& attributes) { +void SVGRadialGradientElement::CollectGradientAttributes( + RadialGradientAttributes& attributes) const { DCHECK(GetLayoutObject()); VisitedSet visited; @@ -143,10 +143,12 @@ visited.insert(current); current = current->ReferencedElement(); - if (!current || visited.Contains(current)) + // Ignore the referenced gradient element if it is not attached. + if (!current || !current->GetLayoutObject()) break; - if (!current->GetLayoutObject()) - return false; + // Cycle detection. + if (visited.Contains(current)) + break; } // Handle default values for fx/fy @@ -155,8 +157,6 @@ if (!attributes.HasFy()) attributes.SetFy(attributes.Cy()); - - return true; } bool SVGRadialGradientElement::SelfHasRelativeLengths() const {
diff --git a/third_party/blink/renderer/core/svg/svg_radial_gradient_element.h b/third_party/blink/renderer/core/svg/svg_radial_gradient_element.h index 2c53d9c..5aa965d 100644 --- a/third_party/blink/renderer/core/svg/svg_radial_gradient_element.h +++ b/third_party/blink/renderer/core/svg/svg_radial_gradient_element.h
@@ -35,7 +35,7 @@ public: explicit SVGRadialGradientElement(Document&); - bool CollectGradientAttributes(RadialGradientAttributes&); + void CollectGradientAttributes(RadialGradientAttributes&) const; SVGAnimatedLength* cx() const { return cx_.Get(); } SVGAnimatedLength* cy() const { return cy_.Get(); }
diff --git a/third_party/blink/renderer/core/testing/fake_local_frame_host.cc b/third_party/blink/renderer/core/testing/fake_local_frame_host.cc index e8e7a52c0..13872b3 100644 --- a/third_party/blink/renderer/core/testing/fake_local_frame_host.cc +++ b/third_party/blink/renderer/core/testing/fake_local_frame_host.cc
@@ -60,8 +60,7 @@ void FakeLocalFrameHost::DidFocusFrame() {} -void FakeLocalFrameHost::EnforceInsecureRequestPolicy( - mojom::InsecureRequestPolicy policy_bitmap) {} +void FakeLocalFrameHost::EnforceInsecureRequestPolicy(uint8_t policy_bitmap) {} void FakeLocalFrameHost::EnforceInsecureNavigationsSet( const WTF::Vector<uint32_t>& set) {}
diff --git a/third_party/blink/renderer/core/testing/fake_local_frame_host.h b/third_party/blink/renderer/core/testing/fake_local_frame_host.h index ab79e10a..95921e1 100644 --- a/third_party/blink/renderer/core/testing/fake_local_frame_host.h +++ b/third_party/blink/renderer/core/testing/fake_local_frame_host.h
@@ -47,8 +47,7 @@ void DidFailLoadWithError(const ::blink::KURL& url, int32_t error_code) override; void DidFocusFrame() override; - void EnforceInsecureRequestPolicy( - mojom::InsecureRequestPolicy policy_bitmap) override; + void EnforceInsecureRequestPolicy(uint8_t policy_bitmap) override; void EnforceInsecureNavigationsSet(const WTF::Vector<uint32_t>& set) override; void DidChangeActiveSchedulerTrackedFeatures(uint64_t features_mask) override; void SuddenTerminationDisablerChanged(
diff --git a/third_party/blink/renderer/core/timing/performance_observer.cc b/third_party/blink/renderer/core/timing/performance_observer.cc index fe14516..2031f3c 100644 --- a/third_party/blink/renderer/core/timing/performance_observer.cc +++ b/third_party/blink/renderer/core/timing/performance_observer.cc
@@ -170,17 +170,6 @@ mojom::ConsoleMessageLevel::kWarning, message)); return; } - if (filter_options_ & entry_type) { - String message = - "The PerformanceObserver has already been called with the entry type " - "'" + - observer_init->type() + "'."; - GetExecutionContext()->AddConsoleMessage( - MakeGarbageCollected<ConsoleMessage>( - mojom::ConsoleMessageSource::kJavaScript, - mojom::ConsoleMessageLevel::kWarning, message)); - return; - } if (observer_init->buffered()) { // Append all entries of this type to the current performance_entries_ // to be returned on the next callback. @@ -221,6 +210,7 @@ if (performance_) performance_->UnregisterPerformanceObserver(*this); is_registered_ = false; + filter_options_ = PerformanceEntry::kInvalid; } PerformanceEntryVector PerformanceObserver::takeRecords() {
diff --git a/third_party/blink/renderer/core/workers/shared_worker_client_holder.cc b/third_party/blink/renderer/core/workers/shared_worker_client_holder.cc index 5df9a89..0c15f6012 100644 --- a/third_party/blink/renderer/core/workers/shared_worker_client_holder.cc +++ b/third_party/blink/renderer/core/workers/shared_worker_client_holder.cc
@@ -36,10 +36,8 @@ #include "mojo/public/cpp/bindings/pending_remote.h" #include "third_party/blink/public/common/browser_interface_broker_proxy.h" #include "third_party/blink/public/common/messaging/message_port_channel.h" -#include "third_party/blink/public/common/security_context/insecure_request_policy.h" #include "third_party/blink/public/mojom/blob/blob_url_store.mojom-blink.h" #include "third_party/blink/public/mojom/loader/fetch_client_settings_object.mojom-blink.h" -#include "third_party/blink/public/mojom/security_context/insecure_request_policy.mojom-blink.h" #include "third_party/blink/public/mojom/worker/shared_worker_info.mojom-blink.h" #include "third_party/blink/public/platform/web_string.h" #include "third_party/blink/public/platform/web_url.h" @@ -114,9 +112,8 @@ .GetFetchClientSettingsObject()); mojom::InsecureRequestsPolicy insecure_requests_policy = - (outside_fetch_client_settings_object->GetInsecureRequestsPolicy() & - mojom::blink::InsecureRequestPolicy::kUpgradeInsecureRequests) != - mojom::blink::InsecureRequestPolicy::kLeaveInsecureRequestsAlone + outside_fetch_client_settings_object->GetInsecureRequestsPolicy() & + kUpgradeInsecureRequests ? mojom::InsecureRequestsPolicy::kUpgrade : mojom::InsecureRequestsPolicy::kDoNotUpgrade;
diff --git a/third_party/blink/renderer/core/workers/worker_or_worklet_global_scope.cc b/third_party/blink/renderer/core/workers/worker_or_worklet_global_scope.cc index 0555a89..70c799d 100644 --- a/third_party/blink/renderer/core/workers/worker_or_worklet_global_scope.cc +++ b/third_party/blink/renderer/core/workers/worker_or_worklet_global_scope.cc
@@ -4,7 +4,6 @@ #include "third_party/blink/renderer/core/workers/worker_or_worklet_global_scope.h" -#include "third_party/blink/public/mojom/security_context/insecure_request_policy.mojom-blink.h" #include "third_party/blink/public/platform/task_type.h" #include "third_party/blink/public/platform/web_worker_fetch_context.h" #include "third_party/blink/renderer/bindings/core/v8/worker_or_worklet_script_controller.h" @@ -85,7 +84,7 @@ // https://crbug.com/924041 https://crbug.com/924043 void SetSandboxFlags(SandboxFlags) override {} void SetRequireTrustedTypes() override {} - void AddInsecureRequestPolicy(mojom::blink::InsecureRequestPolicy) override {} + void AddInsecureRequestPolicy(WebInsecureRequestPolicy) override {} void DisableEval(const String& error_message) override {} std::unique_ptr<SourceLocation> GetSourceLocation() override {
diff --git a/third_party/blink/renderer/modules/cache_storage/cache.cc b/third_party/blink/renderer/modules/cache_storage/cache.cc index 433884d..a4c704f 100644 --- a/third_party/blink/renderer/modules/cache_storage/cache.cc +++ b/third_party/blink/renderer/modules/cache_storage/cache.cc
@@ -298,8 +298,8 @@ message.Append(": "); message.Append(error->message); } - resolver->Reject(CacheStorageError::CreateException( - error->value, message.ToString())); + RejectCacheStorageWithError(resolver, error->value, + message.ToString()); } }, method_name_, WrapPersistent(resolver_.Get()), @@ -743,8 +743,7 @@ resolver->Resolve(); break; default: - resolver->Reject( - CacheStorageError::CreateException(result->get_status())); + RejectCacheStorageWithError(resolver, result->get_status()); break; } } else { @@ -824,8 +823,7 @@ "CacheStorage", "Cache::MatchAllImpl::Callback", TRACE_ID_GLOBAL(trace_id), TRACE_EVENT_FLAG_FLOW_IN, "status", CacheStorageTracedValue(result->get_status())); - resolver->Reject( - CacheStorageError::CreateException(result->get_status())); + RejectCacheStorageWithError(resolver, result->get_status()); } else { TRACE_EVENT_WITH_FLOW1( "CacheStorage", "Cache::MatchAllImpl::Callback", @@ -940,8 +938,8 @@ message.Append("Cache.delete(): "); message.Append(error->message); } - resolver->Reject(CacheStorageError::CreateException( - error->value, message.ToString())); + RejectCacheStorageWithError(resolver, error->value, + message.ToString()); break; } } else { @@ -1092,8 +1090,7 @@ "CacheStorage", "Cache::KeysImpl::Callback", TRACE_ID_GLOBAL(trace_id), TRACE_EVENT_FLAG_FLOW_IN, "status", CacheStorageTracedValue(result->get_status())); - resolver->Reject( - CacheStorageError::CreateException(result->get_status())); + RejectCacheStorageWithError(resolver, result->get_status()); } else { TRACE_EVENT_WITH_FLOW1( "CacheStorage", "Cache::KeysImpl::Callback",
diff --git a/third_party/blink/renderer/modules/cache_storage/cache_storage.cc b/third_party/blink/renderer/modules/cache_storage/cache_storage.cc index 03fc5bc..76483de 100644 --- a/third_party/blink/renderer/modules/cache_storage/cache_storage.cc +++ b/third_party/blink/renderer/modules/cache_storage/cache_storage.cc
@@ -138,8 +138,7 @@ resolver->Resolve(); break; default: - resolver->Reject( - CacheStorageError::CreateException(result->get_status())); + RejectCacheStorageWithError(resolver, result->get_status()); break; } } else { @@ -211,7 +210,7 @@ resolver->Resolve(false); break; default: - resolver->Reject(CacheStorageError::CreateException(result)); + RejectCacheStorageWithError(resolver, result); break; } }, @@ -273,7 +272,7 @@ resolver->Resolve(false); break; default: - resolver->Reject(CacheStorageError::CreateException(result)); + RejectCacheStorageWithError(resolver, result); break; } }, @@ -423,8 +422,7 @@ resolver->Resolve(); break; default: - resolver->Reject( - CacheStorageError::CreateException(result->get_status())); + RejectCacheStorageWithError(resolver, result->get_status()); break; } } else {
diff --git a/third_party/blink/renderer/modules/cache_storage/cache_storage_error.cc b/third_party/blink/renderer/modules/cache_storage/cache_storage_error.cc index 9cd01b3..e0298ad 100644 --- a/third_party/blink/renderer/modules/cache_storage/cache_storage_error.cc +++ b/third_party/blink/renderer/modules/cache_storage/cache_storage_error.cc
@@ -5,8 +5,10 @@ #include "third_party/blink/renderer/modules/cache_storage/cache_storage_error.h" #include "third_party/blink/public/mojom/cache_storage/cache_storage.mojom-blink.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/modules/cache_storage/cache.h" +#include "third_party/blink/renderer/platform/bindings/v8_throw_exception.h" #include "third_party/blink/renderer/platform/heap/heap.h" namespace blink { @@ -43,47 +45,55 @@ } // namespace -DOMException* CacheStorageError::CreateException( - mojom::CacheStorageError web_error, - const String& message) { +void RejectCacheStorageWithError(ScriptPromiseResolver* resolver, + mojom::blink::CacheStorageError web_error, + const String& message) { String final_message = + !message.IsEmpty() ? message : GetDefaultMessage(web_error); switch (web_error) { case mojom::CacheStorageError::kSuccess: // This function should only be called with an error. - break; + NOTREACHED(); + return; case mojom::CacheStorageError::kErrorExists: - return MakeGarbageCollected<DOMException>( - DOMExceptionCode::kInvalidAccessError, final_message); + resolver->Reject(MakeGarbageCollected<DOMException>( + DOMExceptionCode::kInvalidAccessError, final_message)); + return; case mojom::CacheStorageError::kErrorStorage: - return MakeGarbageCollected<DOMException>(DOMExceptionCode::kUnknownError, - final_message); + resolver->Reject(MakeGarbageCollected<DOMException>( + DOMExceptionCode::kUnknownError, final_message)); + return; case mojom::CacheStorageError::kErrorNotFound: - return MakeGarbageCollected<DOMException>( - DOMExceptionCode::kNotFoundError, final_message); + resolver->Reject(MakeGarbageCollected<DOMException>( + DOMExceptionCode::kNotFoundError, final_message)); + return; case mojom::CacheStorageError::kErrorQuotaExceeded: - return MakeGarbageCollected<DOMException>( - DOMExceptionCode::kQuotaExceededError, final_message); + resolver->Reject(MakeGarbageCollected<DOMException>( + DOMExceptionCode::kQuotaExceededError, final_message)); + return; case mojom::CacheStorageError::kErrorCacheNameNotFound: - return MakeGarbageCollected<DOMException>( - DOMExceptionCode::kNotFoundError, final_message); + resolver->Reject(MakeGarbageCollected<DOMException>( + DOMExceptionCode::kNotFoundError, final_message)); + return; case mojom::CacheStorageError::kErrorQueryTooLarge: - return MakeGarbageCollected<DOMException>(DOMExceptionCode::kAbortError, - final_message); + resolver->Reject(MakeGarbageCollected<DOMException>( + DOMExceptionCode::kAbortError, final_message)); + return; case mojom::CacheStorageError::kErrorNotImplemented: - return MakeGarbageCollected<DOMException>( - DOMExceptionCode::kNotSupportedError, final_message); + resolver->Reject(MakeGarbageCollected<DOMException>( + DOMExceptionCode::kNotSupportedError, final_message)); + return; case mojom::CacheStorageError::kErrorDuplicateOperation: - return MakeGarbageCollected<DOMException>( - DOMExceptionCode::kInvalidStateError, final_message); - // TODO(arthursonzogni): Decide what DOM exception must be used here. - // See https://github.com/w3c/ServiceWorker/issues/1490 + resolver->Reject(MakeGarbageCollected<DOMException>( + DOMExceptionCode::kInvalidStateError, final_message)); + return; case mojom::CacheStorageError::kErrorCrossOriginResourcePolicy: - return MakeGarbageCollected<DOMException>( - DOMExceptionCode::kInvalidAccessError, final_message); + ScriptState::Scope scope(resolver->GetScriptState()); + resolver->Reject(V8ThrowException::CreateTypeError( + resolver->GetScriptState()->GetIsolate(), message)); + return; } - NOTREACHED(); - return nullptr; } } // namespace blink
diff --git a/third_party/blink/renderer/modules/cache_storage/cache_storage_error.h b/third_party/blink/renderer/modules/cache_storage/cache_storage_error.h index 6d2bb59a..0e36389 100644 --- a/third_party/blink/renderer/modules/cache_storage/cache_storage_error.h +++ b/third_party/blink/renderer/modules/cache_storage/cache_storage_error.h
@@ -10,25 +10,13 @@ namespace blink { -class DOMException; class ScriptPromiseResolver; -class CacheStorageError { - STATIC_ONLY(CacheStorageError); - - public: - // For CallbackPromiseAdapter. Ownership of a given error is not - // transferred. - using WebType = mojom::CacheStorageError; - static DOMException* Take(ScriptPromiseResolver*, - mojom::CacheStorageError web_error) { - return CreateException(web_error); - } - - static DOMException* CreateException(mojom::CacheStorageError web_error, - const String& message = String()); -}; - +// Reject the |resolver| with the appropriate error given |web_error|. +// When no |message| is provided, the standard one is chosen. +void RejectCacheStorageWithError(ScriptPromiseResolver* resolver, + mojom::blink::CacheStorageError web_error, + const String& message = String()); } // namespace blink #endif // THIRD_PARTY_BLINK_RENDERER_MODULES_CACHE_STORAGE_CACHE_STORAGE_ERROR_H_
diff --git a/third_party/blink/renderer/modules/exported/web_embedded_worker_impl.cc b/third_party/blink/renderer/modules/exported/web_embedded_worker_impl.cc index 5d10ac2..b9ca4c7 100644 --- a/third_party/blink/renderer/modules/exported/web_embedded_worker_impl.cc +++ b/third_party/blink/renderer/modules/exported/web_embedded_worker_impl.cc
@@ -37,7 +37,6 @@ #include "services/network/public/mojom/referrer_policy.mojom-blink.h" #include "third_party/blink/public/mojom/browser_interface_broker.mojom-blink.h" #include "third_party/blink/public/mojom/cache_storage/cache_storage.mojom-blink.h" -#include "third_party/blink/public/mojom/security_context/insecure_request_policy.mojom-blink.h" #include "third_party/blink/public/mojom/service_worker/service_worker_installed_scripts_manager.mojom-blink.h" #include "third_party/blink/public/platform/modules/service_worker/web_service_worker_network_provider.h" #include "third_party/blink/public/platform/modules/service_worker/web_service_worker_provider.h" @@ -304,11 +303,11 @@ // case, it should be the Document that called update(). For soft update case, // it seems to be 'null' document. - mojom::blink::InsecureRequestPolicy insecure_requests_policy = + WebInsecureRequestPolicy insecure_requests_policy = passed_settings_object.insecure_requests_policy == mojom::InsecureRequestsPolicy::kUpgrade - ? mojom::blink::InsecureRequestPolicy::kUpgradeInsecureRequests - : mojom::blink::InsecureRequestPolicy::kBlockAllMixedContent; + ? kUpgradeInsecureRequests + : kBlockAllMixedContent; return std::make_unique<CrossThreadFetchClientSettingsObjectData>( script_url.Copy() /* global_object_url */,
diff --git a/third_party/blink/renderer/modules/service_worker/service_worker_registration.cc b/third_party/blink/renderer/modules/service_worker/service_worker_registration.cc index f03c560..44ea095 100644 --- a/third_party/blink/renderer/modules/service_worker/service_worker_registration.cc +++ b/third_party/blink/renderer/modules/service_worker/service_worker_registration.cc
@@ -9,9 +9,7 @@ #include "base/memory/ptr_util.h" #include "mojo/public/cpp/bindings/pending_associated_receiver.h" #include "mojo/public/cpp/bindings/pending_associated_remote.h" -#include "third_party/blink/public/common/security_context/insecure_request_policy.h" #include "third_party/blink/public/mojom/loader/fetch_client_settings_object.mojom-blink.h" -#include "third_party/blink/public/mojom/security_context/insecure_request_policy.mojom-blink.h" #include "third_party/blink/renderer/bindings/core/v8/script_promise.h" #include "third_party/blink/renderer/bindings/modules/v8/v8_navigation_preload_state.h" #include "third_party/blink/renderer/core/dom/dom_exception.h" @@ -279,9 +277,8 @@ auto mojom_settings_object = mojom::blink::FetchClientSettingsObject::New( settings_object.GetReferrerPolicy(), KURL(settings_object.GetOutgoingReferrer()), - (settings_object.GetInsecureRequestsPolicy() & - mojom::blink::InsecureRequestPolicy::kUpgradeInsecureRequests) != - mojom::blink::InsecureRequestPolicy::kLeaveInsecureRequestsAlone + settings_object.GetInsecureRequestsPolicy() & + blink::kUpgradeInsecureRequests ? blink::mojom::InsecureRequestsPolicy::kUpgrade : blink::mojom::InsecureRequestsPolicy::kDoNotUpgrade);
diff --git a/third_party/blink/renderer/modules/websockets/dom_websocket.cc b/third_party/blink/renderer/modules/websockets/dom_websocket.cc index f07fb65..8bc68e1 100644 --- a/third_party/blink/renderer/modules/websockets/dom_websocket.cc +++ b/third_party/blink/renderer/modules/websockets/dom_websocket.cc
@@ -40,6 +40,7 @@ #include "third_party/blink/public/common/features.h" #include "third_party/blink/public/platform/platform.h" #include "third_party/blink/public/platform/task_type.h" +#include "third_party/blink/public/platform/web_insecure_request_policy.h" #include "third_party/blink/renderer/bindings/core/v8/script_controller.h" #include "third_party/blink/renderer/bindings/core/v8/source_location.h" #include "third_party/blink/renderer/bindings/core/v8/string_or_string_sequence.h"
diff --git a/third_party/blink/renderer/modules/websockets/dom_websocket_test.cc b/third_party/blink/renderer/modules/websockets/dom_websocket_test.cc index a49fff11..4f4a993a 100644 --- a/third_party/blink/renderer/modules/websockets/dom_websocket_test.cc +++ b/third_party/blink/renderer/modules/websockets/dom_websocket_test.cc
@@ -12,7 +12,7 @@ #include "testing/gtest/include/gtest/gtest.h" #include "third_party/blink/public/common/features.h" #include "third_party/blink/public/mojom/devtools/console_message.mojom-blink.h" -#include "third_party/blink/public/mojom/security_context/insecure_request_policy.mojom-blink.h" +#include "third_party/blink/public/platform/web_insecure_request_policy.h" #include "third_party/blink/renderer/bindings/core/v8/v8_binding_for_core.h" #include "third_party/blink/renderer/bindings/core/v8/v8_binding_for_testing.h" #include "third_party/blink/renderer/core/dom/document.h" @@ -191,7 +191,7 @@ } scope.GetDocument().GetSecurityContext().SetInsecureRequestPolicy( - mojom::blink::InsecureRequestPolicy::kUpgradeInsecureRequests); + kUpgradeInsecureRequests); websocket_scope.Socket().Connect("ws://example.com/endpoint", Vector<String>(), scope.GetExceptionState()); @@ -211,7 +211,7 @@ } scope.GetDocument().GetSecurityContext().SetInsecureRequestPolicy( - mojom::blink::InsecureRequestPolicy::kUpgradeInsecureRequests); + kUpgradeInsecureRequests); websocket_scope.Socket().Connect("ws://127.0.0.1/endpoint", Vector<String>(), scope.GetExceptionState()); @@ -231,7 +231,7 @@ } scope.GetDocument().GetSecurityContext().SetInsecureRequestPolicy( - mojom::blink::InsecureRequestPolicy::kLeaveInsecureRequestsAlone); + kLeaveInsecureRequestsAlone); websocket_scope.Socket().Connect("ws://example.com/endpoint", Vector<String>(), scope.GetExceptionState());
diff --git a/third_party/blink/renderer/modules/websockets/websocket_common.cc b/third_party/blink/renderer/modules/websockets/websocket_common.cc index a416644..bf57d17 100644 --- a/third_party/blink/renderer/modules/websockets/websocket_common.cc +++ b/third_party/blink/renderer/modules/websockets/websocket_common.cc
@@ -7,15 +7,15 @@ #include <stddef.h> #include "base/metrics/histogram_macros.h" -#include "third_party/blink/public/common/security_context/insecure_request_policy.h" -#include "third_party/blink/public/mojom/security_context/insecure_request_policy.mojom-blink.h" +#include "third_party/blink/public/platform/web_insecure_request_policy.h" #include "third_party/blink/renderer/core/execution_context/execution_context.h" #include "third_party/blink/renderer/core/execution_context/security_context.h" #include "third_party/blink/renderer/core/frame/csp/content_security_policy.h" #include "third_party/blink/renderer/core/loader/mixed_content_checker.h" -#include "third_party/blink/renderer/modules/websockets/websocket_channel.h" #include "third_party/blink/renderer/platform/bindings/exception_state.h" #include "third_party/blink/renderer/platform/instrumentation/use_counter.h" + +#include "third_party/blink/renderer/modules/websockets/websocket_channel.h" #include "third_party/blink/renderer/platform/weborigin/known_ports.h" #include "third_party/blink/renderer/platform/weborigin/security_origin.h" #include "third_party/blink/renderer/platform/wtf/assertions.h" @@ -41,9 +41,8 @@ url_ = KURL(NullURL(), url); bool upgrade_insecure_requests_set = - (execution_context->GetSecurityContext().GetInsecureRequestPolicy() & - mojom::blink::InsecureRequestPolicy::kUpgradeInsecureRequests) != - mojom::blink::InsecureRequestPolicy::kLeaveInsecureRequestsAlone; + execution_context->GetSecurityContext().GetInsecureRequestPolicy() & + kUpgradeInsecureRequests; if (upgrade_insecure_requests_set && url_.Protocol() == "ws" && !SecurityOrigin::Create(url_)->IsPotentiallyTrustworthy()) {
diff --git a/third_party/blink/renderer/platform/exported/web_runtime_features.cc b/third_party/blink/renderer/platform/exported/web_runtime_features.cc index 29429e31..1eaf4ca 100644 --- a/third_party/blink/renderer/platform/exported/web_runtime_features.cc +++ b/third_party/blink/renderer/platform/exported/web_runtime_features.cc
@@ -654,10 +654,6 @@ RuntimeEnabledFeatures::SetSmsReceiverEnabled(enable); } -void WebRuntimeFeatures::EnableDisplayLocking(bool enable) { - RuntimeEnabledFeatures::SetDisplayLockingEnabled(enable); -} - void WebRuntimeFeatures::EnableConsolidatedMovementXY(bool enable) { RuntimeEnabledFeatures::SetConsolidatedMovementXYEnabled(enable); }
diff --git a/third_party/blink/renderer/platform/heap/heap_thread_test.cc b/third_party/blink/renderer/platform/heap/heap_thread_test.cc index 6431076a..7f58a01 100644 --- a/third_party/blink/renderer/platform/heap/heap_thread_test.cc +++ b/third_party/blink/renderer/platform/heap/heap_thread_test.cc
@@ -17,7 +17,13 @@ namespace blink { class HeapThreadTest : public TestSupportingGC {}; -class HeapThreadDeathTest : public TestSupportingGC {}; + +class HeapThreadDeathTest : public TestSupportingGC { + public: + HeapThreadDeathTest() { + testing::FLAGS_gtest_death_test_style = "threadsafe"; + } +}; namespace heap_thread_test { @@ -136,15 +142,10 @@ }; #if DCHECK_IS_ON() -// TODO(keishi) This test is flaky on mac-rel bot. -// crbug.com/709069 -// It it also flaky on Linux. crbug.com/1046332. -#if !defined(OS_MACOSX) && !defined(OS_LINUX) TEST_F(HeapThreadDeathTest, MemberSameThreadCheck) { EXPECT_DEATH(MemberSameThreadCheckTester().Test(), ""); } #endif -#endif class PersistentSameThreadCheckTester : public AlternatingThreadTester { private: @@ -160,15 +161,10 @@ }; #if DCHECK_IS_ON() -// TODO(keishi) This test is flaky on mac-rel bot. -// crbug.com/709069 -// This test is also flaky on Linux. crbug.com/1043580. -#if !defined(OS_MACOSX) && !defined(OS_LINUX) TEST_F(HeapThreadDeathTest, PersistentSameThreadCheck) { EXPECT_DEATH(PersistentSameThreadCheckTester().Test(), ""); } #endif -#endif class MarkingSameThreadCheckTester : public AlternatingThreadTester { private: @@ -201,8 +197,6 @@ }; #if DCHECK_IS_ON() -// TODO(keishi) This test is flaky on mac-rel bot. https://crbug.com/709069, and -// times out on other bots. https://crbug.com/993148. TEST_F(HeapThreadDeathTest, DISABLED_MarkingSameThreadCheck) { // This will crash during marking, at the DCHECK in Visitor::markHeader() or // earlier.
diff --git a/third_party/blink/renderer/platform/loader/fetch/fetch_client_settings_object.h b/third_party/blink/renderer/platform/loader/fetch/fetch_client_settings_object.h index 9f5f505..3ffd87b8 100644 --- a/third_party/blink/renderer/platform/loader/fetch/fetch_client_settings_object.h +++ b/third_party/blink/renderer/platform/loader/fetch/fetch_client_settings_object.h
@@ -8,7 +8,7 @@ #include "base/optional.h" #include "services/network/public/mojom/ip_address_space.mojom-blink-forward.h" #include "services/network/public/mojom/referrer_policy.mojom-blink.h" -#include "third_party/blink/public/mojom/security_context/insecure_request_policy.mojom-blink-forward.h" +#include "third_party/blink/public/platform/web_insecure_request_policy.h" #include "third_party/blink/renderer/platform/heap/garbage_collected.h" #include "third_party/blink/renderer/platform/heap/heap.h" #include "third_party/blink/renderer/platform/loader/allowed_by_nosniff.h" @@ -81,8 +81,7 @@ virtual network::mojom::IPAddressSpace GetAddressSpace() const = 0; // https://w3c.github.io/webappsec-upgrade-insecure-requests/#insecure-requests-policy - virtual mojom::blink::InsecureRequestPolicy GetInsecureRequestsPolicy() - const = 0; + virtual WebInsecureRequestPolicy GetInsecureRequestsPolicy() const = 0; // https://w3c.github.io/webappsec-upgrade-insecure-requests/#upgrade-insecure-navigations-set using InsecureNavigationsSet = HashSet<unsigned, WTF::AlreadyHashed>;
diff --git a/third_party/blink/renderer/platform/loader/fetch/fetch_client_settings_object_snapshot.cc b/third_party/blink/renderer/platform/loader/fetch/fetch_client_settings_object_snapshot.cc index e11f91f..ad064d1 100644 --- a/third_party/blink/renderer/platform/loader/fetch/fetch_client_settings_object_snapshot.cc +++ b/third_party/blink/renderer/platform/loader/fetch/fetch_client_settings_object_snapshot.cc
@@ -4,7 +4,6 @@ #include "third_party/blink/renderer/platform/loader/fetch/fetch_client_settings_object_snapshot.h" -#include "third_party/blink/public/mojom/security_context/insecure_request_policy.mojom-blink.h" #include "third_party/blink/renderer/platform/heap/trace_traits.h" namespace blink { @@ -46,7 +45,7 @@ HttpsState https_state, AllowedByNosniff::MimeTypeCheck mime_type_check_for_classic_worker_script, network::mojom::IPAddressSpace address_space, - mojom::blink::InsecureRequestPolicy insecure_requests_policy, + WebInsecureRequestPolicy insecure_requests_policy, InsecureNavigationsSet insecure_navigations_set) : global_object_url_(global_object_url), base_url_(base_url),
diff --git a/third_party/blink/renderer/platform/loader/fetch/fetch_client_settings_object_snapshot.h b/third_party/blink/renderer/platform/loader/fetch/fetch_client_settings_object_snapshot.h index b4ae59e5..84a9a1b 100644 --- a/third_party/blink/renderer/platform/loader/fetch/fetch_client_settings_object_snapshot.h +++ b/third_party/blink/renderer/platform/loader/fetch/fetch_client_settings_object_snapshot.h
@@ -6,7 +6,6 @@ #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_LOADER_FETCH_FETCH_CLIENT_SETTINGS_OBJECT_SNAPSHOT_H_ #include "services/network/public/mojom/referrer_policy.mojom-blink.h" -#include "third_party/blink/public/mojom/security_context/insecure_request_policy.mojom-blink-forward.h" #include "third_party/blink/renderer/platform/loader/fetch/fetch_client_settings_object.h" #include "third_party/blink/renderer/platform/platform_export.h" #include "third_party/blink/renderer/platform/weborigin/kurl.h" @@ -38,7 +37,7 @@ HttpsState https_state, AllowedByNosniff::MimeTypeCheck mime_type_check_for_classic_worker_script, network::mojom::IPAddressSpace address_space, - mojom::blink::InsecureRequestPolicy insecure_requests_policy, + WebInsecureRequestPolicy insecure_requests_policy, FetchClientSettingsObject::InsecureNavigationsSet insecure_navigations_set) : global_object_url(std::move(global_object_url)), @@ -62,7 +61,7 @@ const AllowedByNosniff::MimeTypeCheck mime_type_check_for_classic_worker_script; const network::mojom::IPAddressSpace address_space; - const mojom::blink::InsecureRequestPolicy insecure_requests_policy; + const WebInsecureRequestPolicy insecure_requests_policy; const FetchClientSettingsObject::InsecureNavigationsSet insecure_navigations_set; @@ -95,7 +94,7 @@ HttpsState https_state, AllowedByNosniff::MimeTypeCheck, network::mojom::IPAddressSpace, - mojom::blink::InsecureRequestPolicy, + WebInsecureRequestPolicy, InsecureNavigationsSet); ~FetchClientSettingsObjectSnapshot() override = default; @@ -117,8 +116,7 @@ return address_space_; } - mojom::blink::InsecureRequestPolicy GetInsecureRequestsPolicy() - const override { + WebInsecureRequestPolicy GetInsecureRequestsPolicy() const override { return insecure_requests_policy_; } @@ -153,7 +151,7 @@ mime_type_check_for_classic_worker_script_; const network::mojom::IPAddressSpace address_space_; - const mojom::blink::InsecureRequestPolicy insecure_requests_policy_; + const WebInsecureRequestPolicy insecure_requests_policy_; const InsecureNavigationsSet insecure_navigations_set_; };
diff --git a/third_party/blink/renderer/platform/loader/fetch/null_resource_fetcher_properties.cc b/third_party/blink/renderer/platform/loader/fetch/null_resource_fetcher_properties.cc index 3a93692..8a00bb48 100644 --- a/third_party/blink/renderer/platform/loader/fetch/null_resource_fetcher_properties.cc +++ b/third_party/blink/renderer/platform/loader/fetch/null_resource_fetcher_properties.cc
@@ -6,7 +6,6 @@ #include "services/network/public/mojom/ip_address_space.mojom-blink.h" #include "services/network/public/mojom/referrer_policy.mojom-blink.h" -#include "third_party/blink/public/mojom/security_context/insecure_request_policy.mojom-blink.h" #include "third_party/blink/renderer/platform/loader/allowed_by_nosniff.h" #include "third_party/blink/renderer/platform/loader/fetch/fetch_client_settings_object_snapshot.h" #include "third_party/blink/renderer/platform/loader/fetch/https_state.h" @@ -26,7 +25,7 @@ HttpsState::kNone, AllowedByNosniff::MimeTypeCheck::kStrict, network::mojom::IPAddressSpace::kPublic, - mojom::blink::InsecureRequestPolicy::kLeaveInsecureRequestsAlone, + kLeaveInsecureRequestsAlone, FetchClientSettingsObject::InsecureNavigationsSet())) {} void NullResourceFetcherProperties::Trace(Visitor* visitor) {
diff --git a/third_party/blink/renderer/platform/loader/fetch/resource_fetcher_properties_test.cc b/third_party/blink/renderer/platform/loader/fetch/resource_fetcher_properties_test.cc index 8890de7..3b14d08 100644 --- a/third_party/blink/renderer/platform/loader/fetch/resource_fetcher_properties_test.cc +++ b/third_party/blink/renderer/platform/loader/fetch/resource_fetcher_properties_test.cc
@@ -6,7 +6,6 @@ #include "services/network/public/mojom/ip_address_space.mojom-blink.h" #include "testing/gtest/include/gtest/gtest.h" -#include "third_party/blink/public/mojom/security_context/insecure_request_policy.mojom-blink.h" #include "third_party/blink/public/mojom/service_worker/controller_service_worker_mode.mojom-blink.h" #include "third_party/blink/renderer/platform/loader/fetch/fetch_client_settings_object.h" #include "third_party/blink/renderer/platform/loader/fetch/fetch_client_settings_object_snapshot.h" @@ -27,7 +26,7 @@ network::mojom::ReferrerPolicy::kDefault, "https://example.com/foo.html", HttpsState::kModern, AllowedByNosniff::MimeTypeCheck::kStrict, address_space, - mojom::blink::InsecureRequestPolicy::kLeaveInsecureRequestsAlone, + kLeaveInsecureRequestsAlone, FetchClientSettingsObject::InsecureNavigationsSet()); } };
diff --git a/third_party/blink/renderer/platform/loader/fetch/resource_fetcher_test.cc b/third_party/blink/renderer/platform/loader/fetch/resource_fetcher_test.cc index 9d618c3..d58d463 100644 --- a/third_party/blink/renderer/platform/loader/fetch/resource_fetcher_test.cc +++ b/third_party/blink/renderer/platform/loader/fetch/resource_fetcher_test.cc
@@ -37,7 +37,6 @@ #include "testing/gtest/include/gtest/gtest.h" #include "third_party/blink/public/mojom/fetch/fetch_api_request.mojom-blink.h" #include "third_party/blink/public/mojom/loader/request_context_frame_type.mojom-blink.h" -#include "third_party/blink/public/mojom/security_context/insecure_request_policy.mojom-blink.h" #include "third_party/blink/public/platform/platform.h" #include "third_party/blink/public/platform/web_url_loader.h" #include "third_party/blink/public/platform/web_url_loader_mock_factory.h" @@ -104,8 +103,7 @@ SecurityOrigin::Create(KURL("https://example.com/")), network::mojom::ReferrerPolicy::kDefault, "https://example.com/foo.html", HttpsState::kModern, AllowedByNosniff::MimeTypeCheck::kStrict, - address_space, - mojom::blink::InsecureRequestPolicy::kLeaveInsecureRequestsAlone, + address_space, kLeaveInsecureRequestsAlone, FetchClientSettingsObject::InsecureNavigationsSet()); }
diff --git a/third_party/blink/renderer/platform/loader/testing/test_resource_fetcher_properties.cc b/third_party/blink/renderer/platform/loader/testing/test_resource_fetcher_properties.cc index 9b222e3..723d4c7 100644 --- a/third_party/blink/renderer/platform/loader/testing/test_resource_fetcher_properties.cc +++ b/third_party/blink/renderer/platform/loader/testing/test_resource_fetcher_properties.cc
@@ -6,7 +6,6 @@ #include "services/network/public/mojom/ip_address_space.mojom-blink.h" #include "services/network/public/mojom/referrer_policy.mojom-blink.h" -#include "third_party/blink/public/mojom/security_context/insecure_request_policy.mojom-blink.h" #include "third_party/blink/renderer/platform/loader/allowed_by_nosniff.h" #include "third_party/blink/renderer/platform/loader/fetch/fetch_client_settings_object_snapshot.h" #include "third_party/blink/renderer/platform/loader/fetch/https_state.h" @@ -30,7 +29,7 @@ HttpsState::kNone, AllowedByNosniff::MimeTypeCheck::kStrict, network::mojom::IPAddressSpace::kPublic, - mojom::blink::InsecureRequestPolicy::kLeaveInsecureRequestsAlone, + kLeaveInsecureRequestsAlone, FetchClientSettingsObject::InsecureNavigationsSet())) {} TestResourceFetcherProperties::TestResourceFetcherProperties(
diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/third_party/blink/renderer/platform/runtime_enabled_features.json5 index ac620c7..a53fd1c 100644 --- a/third_party/blink/renderer/platform/runtime_enabled_features.json5 +++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5
@@ -450,7 +450,7 @@ // Support for CSS intrinsic-* sizing properties. // https://drafts.csswg.org/css-sizing-4/#intrinsic-size-override name: "CSSIntrinsicSize", - implied_by: ["DisplayLocking"], + implied_by: ["CSSRenderSubtree"], status: "experimental", }, { @@ -606,12 +606,6 @@ settable_from_internals: true, }, { - name: "DisplayLocking", - origin_trial_feature_name: "DisplayLocking", - status: "experimental", - implied_by: ["CSSRenderSubtree"], - }, - { name: "DocumentCookie", }, {
diff --git a/third_party/blink/tools/blinkpy/w3c/chromium_commit_mock.py b/third_party/blink/tools/blinkpy/w3c/chromium_commit_mock.py index 3d7c7c47..e21d149 100644 --- a/third_party/blink/tools/blinkpy/w3c/chromium_commit_mock.py +++ b/third_party/blink/tools/blinkpy/w3c/chromium_commit_mock.py
@@ -44,6 +44,8 @@ def body(self): # The final newline is intentionally added to match the real behavior. + if not self.change_id(): + return self._body + '\n' return self._body + '\n\nChange-Id: ' + self.change_id() + '\n' def message(self):
diff --git a/third_party/blink/tools/blinkpy/w3c/common.py b/third_party/blink/tools/blinkpy/w3c/common.py index 47d8681..ccbdaeb6 100644 --- a/third_party/blink/tools/blinkpy/w3c/common.py +++ b/third_party/blink/tools/blinkpy/w3c/common.py
@@ -15,7 +15,8 @@ WPT_GH_URL = 'https://github.com/%s/%s/' % (WPT_GH_ORG, WPT_GH_REPO_NAME) WPT_MIRROR_URL = 'https://chromium.googlesource.com/external/github.com/web-platform-tests/wpt.git' WPT_GH_SSH_URL_TEMPLATE = 'https://{}@github.com/%s/%s.git' % (WPT_GH_ORG, WPT_GH_REPO_NAME) -WPT_REVISION_FOOTER = 'WPT-Export-Revision:' +WPT_REVISION_FOOTER = 'WPT-Export-Revision: ' +CHANGE_ID_FOOTER = 'Change-Id: ' EXPORT_PR_LABEL = 'chromium-export' PROVISIONAL_PR_LABEL = 'do not merge yet'
diff --git a/third_party/blink/tools/blinkpy/w3c/export_notifier.py b/third_party/blink/tools/blinkpy/w3c/export_notifier.py index 706fc9b0..846e5a2 100644 --- a/third_party/blink/tools/blinkpy/w3c/export_notifier.py +++ b/third_party/blink/tools/blinkpy/w3c/export_notifier.py
@@ -65,8 +65,7 @@ 'Can not retrieve Change-Id for %s.', pr.number) continue - gerrit_sha = self.wpt_github.extract_metadata( - WPT_REVISION_FOOTER + ' ', pr.body) + gerrit_sha = self.wpt_github.extract_metadata(WPT_REVISION_FOOTER, pr.body) gerrit_dict[gerrit_id] = PRStatusInfo( taskcluster_status['node_id'], taskcluster_status['target_url'],
diff --git a/third_party/blink/tools/blinkpy/w3c/test_exporter.py b/third_party/blink/tools/blinkpy/w3c/test_exporter.py index 10ac74a7..d7c4dc3b 100644 --- a/third_party/blink/tools/blinkpy/w3c/test_exporter.py +++ b/third_party/blink/tools/blinkpy/w3c/test_exporter.py
@@ -11,11 +11,12 @@ from blinkpy.w3c.local_wpt import LocalWPT from blinkpy.w3c.chromium_exportable_commits import exportable_commits_over_last_n_commits from blinkpy.w3c.common import ( + CHANGE_ID_FOOTER, WPT_GH_URL, WPT_REVISION_FOOTER, EXPORT_PR_LABEL, PROVISIONAL_PR_LABEL, - read_credentials + read_credentials, ) from blinkpy.w3c.gerrit import GerritAPI, GerritCL, GerritError from blinkpy.w3c.wpt_github import WPTGitHub, MergeError @@ -135,7 +136,7 @@ pr_url = '{}pull/{}'.format(WPT_GH_URL, pull_request.number) _log.info('In-flight PR found: %s', pr_url) - pr_cl_revision = self.wpt_github.extract_metadata(WPT_REVISION_FOOTER + ' ', pull_request.body) + pr_cl_revision = self.wpt_github.extract_metadata(WPT_REVISION_FOOTER, pull_request.body) if cl.current_revision_sha == pr_cl_revision: _log.info('PR revision matches CL revision. Nothing to do here.') return @@ -214,7 +215,7 @@ try: self.wpt_github.merge_pr(pull_request.number) - change_id = self.wpt_github.extract_metadata('Change-Id: ', pull_request.body) + change_id = self.wpt_github.extract_metadata(CHANGE_ID_FOOTER, pull_request.body) if change_id: cl = GerritCL(data={'change_id': change_id}, api=self.gerrit) pr_url = '{}pull/{}'.format(WPT_GH_URL, pull_request.number) @@ -261,11 +262,18 @@ _log.debug('END_OF_PATCH_EXCERPT') return + footer = '' + # Change-Id can be deleted from the body of an in-flight CL in Chromium + # (https://crbug.com/gerrit/12244). We need to add it back. And we've + # asserted that cl.change_id is present in GerritCL. + if not self.wpt_github.extract_metadata(CHANGE_ID_FOOTER, commit.message()): + _log.warn('Adding missing Change-Id back to %s', cl.url) + footer += '{}{}\n'.format(CHANGE_ID_FOOTER, cl.change_id) # Reviewed-on footer is not in the git commit message of in-flight CLs, # but a link to code review is useful so we add it manually. - footer = 'Reviewed-on: {}\n'.format(cl.url) + footer += 'Reviewed-on: {}\n'.format(cl.url) # WPT_REVISION_FOOTER is used by the exporter to check the CL revision. - footer += '{} {}'.format(WPT_REVISION_FOOTER, cl.current_revision_sha) + footer += '{}{}'.format(WPT_REVISION_FOOTER, cl.current_revision_sha) if pull_request: pr_number = self.create_or_update_pr_from_commit(
diff --git a/third_party/blink/tools/blinkpy/w3c/test_exporter_unittest.py b/third_party/blink/tools/blinkpy/w3c/test_exporter_unittest.py index 06f0e9f5..21981e5 100644 --- a/third_party/blink/tools/blinkpy/w3c/test_exporter_unittest.py +++ b/third_party/blink/tools/blinkpy/w3c/test_exporter_unittest.py
@@ -197,22 +197,44 @@ test_exporter.wpt_github = MockWPTGitHub(pull_requests=[]) test_exporter.get_exportable_commits = lambda: ([], []) test_exporter.gerrit = MockGerritAPI() - test_exporter.gerrit.exportable_open_cls = [MockGerritCL( - data={ - 'change_id': 'I001', - 'subject': 'subject', - '_number': 1234, - 'current_revision': '1', - 'has_review_started': True, - 'revisions': { - '1': {'commit_with_footers': 'a commit with footers'} + test_exporter.gerrit.exportable_open_cls = [ + MockGerritCL( + data={ + 'change_id': 'I001', + 'subject': 'subject', + '_number': 1234, + 'current_revision': '1', + 'has_review_started': True, + 'revisions': { + '1': { + 'commit_with_footers': 'a commit with footers' + } + }, + 'owner': { + 'email': 'test@chromium.org' + }, }, - 'owner': {'email': 'test@chromium.org'}, - }, - api=test_exporter.gerrit, - chromium_commit=MockChromiumCommit(self.host, subject='subject', - body='fake body <faketag1>, <faketag2>', change_id='I001') - )] + api=test_exporter.gerrit, + chromium_commit=MockChromiumCommit(self.host, subject='subject', body='fake body <html>', change_id='I001')), + MockGerritCL( + data={ + 'change_id': 'I002', + 'subject': 'subject', + '_number': 1235, + 'current_revision': '1', + 'has_review_started': True, + 'revisions': { + '1': { + 'commit_with_footers': 'a commit with footers' + } + }, + 'owner': { + 'email': 'test@chromium.org' + }, + }, + api=test_exporter.gerrit, + chromium_commit=MockChromiumCommit(self.host, subject='subject', body='body', change_id=None)), + ] test_exporter.main(['--credentials-json', '/tmp/credentials.json']) self.assertEqual(test_exporter.wpt_github.calls, [ @@ -220,12 +242,18 @@ 'create_pr', 'add_label "chromium-export"', 'add_label "do not merge yet"', + 'pr_with_change_id', + 'create_pr', + 'add_label "chromium-export"', + 'add_label "do not merge yet"', ]) self.assertEqual(test_exporter.wpt_github.pull_requests_created, [ - ('chromium-export-cl-1234', - 'subject', - 'fake body \\<faketag1>, \\<faketag2>\n\nChange-Id: I001\nReviewed-on: ' - 'https://chromium-review.googlesource.com/1234\nWPT-Export-Revision: 1'), + ('chromium-export-cl-1234', 'subject', 'fake body \\<html>\n\nChange-Id: I001\nReviewed-on: ' + 'https://chromium-review.googlesource.com/1234\n' + 'WPT-Export-Revision: 1'), + ('chromium-export-cl-1235', 'subject', 'body\nChange-Id: I002\nReviewed-on: ' + 'https://chromium-review.googlesource.com/1235\n' + 'WPT-Export-Revision: 1'), ]) self.assertEqual(test_exporter.wpt_github.pull_requests_merged, [])
diff --git a/third_party/blink/web_tests/FlagExpectations/enable-features=UseSkiaRenderer b/third_party/blink/web_tests/FlagExpectations/enable-features=UseSkiaRenderer index a840c30..4ebe511 100644 --- a/third_party/blink/web_tests/FlagExpectations/enable-features=UseSkiaRenderer +++ b/third_party/blink/web_tests/FlagExpectations/enable-features=UseSkiaRenderer
@@ -15,3 +15,9 @@ crbug.com/1052768 [ Linux ] css3/filters/effect-reference-colorspace.html [ Failure Pass ] crbug.com/1052768 [ Win ] css3/filters/effect-reference-subregion.html [ Failure Pass ] crbug.com/1052768 [ Linux ] css3/filters/effect-reference-subregion.html [ Failure Pass ] + +# Flaky on Windows. +crbug.com/1026375 [ Win ] media/controls/video-enter-exit-fullscreen-while-hovering-shows-controls.html [ Failure Pass ] +crbug.com/1026375 [ Win ] media/encrypted-media/encrypted-media-playback-setmediakeys-before-src.html [ Failure Pass ] +crbug.com/1026375 [ Win ] media/video-currentTime-delay.html [ Failure Pass ] +crbug.com/1026375 [ Win ] media/video-pause-immediately.html [ Failure Pass ]
diff --git a/third_party/blink/web_tests/TestExpectations b/third_party/blink/web_tests/TestExpectations index bf44a460..c9e3e1fc 100644 --- a/third_party/blink/web_tests/TestExpectations +++ b/third_party/blink/web_tests/TestExpectations
@@ -7,6 +7,9 @@ # Further documentation: # https://chromium.googlesource.com/chromium/src/+/master/docs/testing/web_test_expectations.md +# Temporarily disabled for 1043030 +crbug.com/1043030 http/tests/devtools/sources/source-frame-toolbar-items.js [ Pass Failure ] + # Intentional failures to test the layout test system. harness-tests/crash.html [ Crash ] harness-tests/timeout.html [ Timeout ] @@ -7121,6 +7124,7 @@ crbug.com/1029489 http/tests/devtools/elements/elements-linkify-attributes.js [ Pass Failure Timeout ] crbug.com/1029521 virtual/threaded/external/wpt/web-animations/timing-model/animations/updating-the-finished-state.html [ Pass Failure Timeout ] crbug.com/1030258 http/tests/devtools/network/network-cookies-pane.js [ Pass Failure ] +crbug.com/1035309 http/tests/devtools/throttling/mobile-throttling.js [ Pass Failure ] # Enable scroll-snap tests on impl thread # These are currently failing on Mac which needs more investigation, snap-scrolls-visual-viewport seems flaky @@ -7585,3 +7589,9 @@ crbug.com/1054916 [ Linux ] external/wpt/webxr/dom-overlay/ar_dom_overlay.https.html [ Pass Failure Timeout ] crbug.com/1055006 [ Linux ] external/wpt/std-toast/methods.html [ Pass Failure Timeout ] crbug.com/1055006 [ Linux ] external/wpt/std-toast/options.html [ Pass Failure Timeout ] + +# These tests test invalid behavior, a fix in V8 is in flight. +crbug.com/v8/10126 external/wpt/wasm/webapi/invalid-code.any.html [ Skip ] +crbug.com/v8/10126 external/wpt/wasm/webapi/invalid-code.any.serviceworker.html [ Skip ] +crbug.com/v8/10126 external/wpt/wasm/webapi/invalid-code.any.sharedworker.html [ Skip ] +crbug.com/v8/10126 external/wpt/wasm/webapi/invalid-code.any.worker.html [ Skip ]
diff --git a/third_party/blink/web_tests/external/wpt/css/css-flexbox/padding-overflow-crash.html b/third_party/blink/web_tests/external/wpt/css/css-flexbox/padding-overflow-crash.html new file mode 100644 index 0000000..fd0c333 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-flexbox/padding-overflow-crash.html
@@ -0,0 +1,10 @@ +<!DOCTYPE html> +<link rel="author" title="David Grogan" href="mailto:dgrogan@chromium.org"> +<link rel="help" href="https://www.w3.org/TR/css-flexbox-1/#layout-algorithm"> +<link rel="match" href="../reference/ref-filled-green-100px-square-only.html"> +<meta name="assert" content="Item's size includes padding even when there is overflow:hidden. Chrome crashed on this."> +<p>Test passes if there is a filled green square only.</p> + +<div style="display: flex"> + <div style="padding: 50px; background: green; overflow: hidden;"></div> +</div>
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-embedder-policy/require-corp-load-from-cache-storage.https-expected.txt b/third_party/blink/web_tests/external/wpt/html/cross-origin-embedder-policy/require-corp-load-from-cache-storage.https-expected.txt deleted file mode 100644 index 1e0c440..0000000 --- a/third_party/blink/web_tests/external/wpt/html/cross-origin-embedder-policy/require-corp-load-from-cache-storage.https-expected.txt +++ /dev/null
@@ -1,32 +0,0 @@ -This is a testharness.js-based test. -PASS setting up -PASS Fetch cross-origin cors from service-worker and CacheStorage. -PASS Fetch cross-origin no-cors from service-worker and CacheStorage. -PASS Fetch same-origin cors from service-worker and CacheStorage. -PASS Fetch same-origin no-cors from service-worker and CacheStorage. -PASS Fetch same-origin cors cors-disabled corp-cross-origin from network and CacheStorage. -PASS Fetch same-origin cors cors-disabled corp-same-origin from network and CacheStorage. -PASS Fetch same-origin cors cors-disabled corp-undefined from network and CacheStorage. -PASS Fetch same-origin cors cors-enabled corp-cross-origin from network and CacheStorage. -PASS Fetch same-origin cors cors-enabled corp-same-origin from network and CacheStorage. -PASS Fetch same-origin cors cors-enabled corp-undefined from network and CacheStorage. -PASS Fetch same-origin no-cors cors-disabled corp-cross-origin from network and CacheStorage. -PASS Fetch same-origin no-cors cors-disabled corp-same-origin from network and CacheStorage. -PASS Fetch same-origin no-cors cors-disabled corp-undefined from network and CacheStorage. -PASS Fetch same-origin no-cors cors-enabled corp-cross-origin from network and CacheStorage. -PASS Fetch same-origin no-cors cors-enabled corp-same-origin from network and CacheStorage. -PASS Fetch same-origin no-cors cors-enabled corp-undefined from network and CacheStorage. -PASS Fetch cross-origin cors cors-disabled corp-cross-origin from network and CacheStorage. -PASS Fetch cross-origin cors cors-disabled corp-same-origin from network and CacheStorage. -PASS Fetch cross-origin cors cors-disabled corp-undefined from network and CacheStorage. -PASS Fetch cross-origin cors cors-enabled corp-cross-origin from network and CacheStorage. -PASS Fetch cross-origin cors cors-enabled corp-same-origin from network and CacheStorage. -PASS Fetch cross-origin cors cors-enabled corp-undefined from network and CacheStorage. -PASS Fetch cross-origin no-cors cors-disabled corp-cross-origin from network and CacheStorage. -PASS Fetch cross-origin no-cors cors-disabled corp-same-origin from network and CacheStorage. -FAIL Fetch cross-origin no-cors cors-disabled corp-undefined from network and CacheStorage. promise_rejects_js: function "function() { throw e }" threw object "InvalidAccessError: Failed Cross-Origin-Resource-Policy check." ("InvalidAccessError") expected instance of function "function TypeError() { [native code] }" ("TypeError") -PASS Fetch cross-origin no-cors cors-enabled corp-cross-origin from network and CacheStorage. -PASS Fetch cross-origin no-cors cors-enabled corp-same-origin from network and CacheStorage. -FAIL Fetch cross-origin no-cors cors-enabled corp-undefined from network and CacheStorage. promise_rejects_js: function "function() { throw e }" threw object "InvalidAccessError: Failed Cross-Origin-Resource-Policy check." ("InvalidAccessError") expected instance of function "function TypeError() { [native code] }" ("TypeError") -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/external/wpt/performance-timeline/po-disconnect-removes-observed-types.any.js b/third_party/blink/web_tests/external/wpt/performance-timeline/po-disconnect-removes-observed-types.any.js new file mode 100644 index 0000000..cac97be --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/performance-timeline/po-disconnect-removes-observed-types.any.js
@@ -0,0 +1,19 @@ +// META: script=performanceobservers.js + +async_test(function (t) { + const observer = new PerformanceObserver( + t.step_func(function (entryList) { + // There should be no mark entry. + checkEntries(entryList.getEntries(), + [{ entryType: "measure", name: "b"}]); + t.done(); + }) + ); + observer.observe({type: "mark"}); + // Disconnect the observer. + observer.disconnect(); + // Now, only observe measure. + observer.observe({type: "measure"}); + performance.mark("a"); + performance.measure("b"); +}, "Types observed are forgotten when disconnect() is called.");
diff --git a/third_party/blink/web_tests/external/wpt/performance-timeline/po-observe-repeated-type.any.js b/third_party/blink/web_tests/external/wpt/performance-timeline/po-observe-repeated-type.any.js new file mode 100644 index 0000000..2bba396a --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/performance-timeline/po-observe-repeated-type.any.js
@@ -0,0 +1,17 @@ +// META: script=performanceobservers.js + +async_test(function (t) { + const observer = new PerformanceObserver( + t.step_func(function (entryList) { + checkEntries(entryList.getEntries(), + [{ entryType: "mark", name: "early"}]); + observer.disconnect(); + t.done(); + }) + ); + performance.mark("early"); + // This call will not trigger anything. + observer.observe({type: "mark"}); + // This call should override the previous call and detect the early mark. + observer.observe({type: "mark", buffered: true}); +}, "Two calls of observe() with the same 'type' cause override.");
diff --git a/third_party/blink/web_tests/external/wpt/resize-observer/observe-expected.txt b/third_party/blink/web_tests/external/wpt/resize-observer/observe-expected.txt deleted file mode 100644 index 8ca858b4..0000000 --- a/third_party/blink/web_tests/external/wpt/resize-observer/observe-expected.txt +++ /dev/null
@@ -1,22 +0,0 @@ -This is a testharness.js-based test. -PASS ResizeObserver implemented -PASS guard -PASS test0: simple observation -PASS test1: multiple observation on same element trigger only one -PASS test2: throw exception when observing non-element -PASS test3: disconnect stops all notifications -PASS test4: unobserve target stops notifications, unobserve non-observed does nothing -PASS test5: observe img -PASS test6: iframe notifications -PASS test7: callback.this -PASS test8: simple content-box observation -FAIL test9: simple content-box observation but keep border-box size unchanged assert_unreached: Timed out waiting for notification. (100ms) Reached unreachable code -PASS test10: simple border-box observation -PASS test11: simple observation with vertical writing mode -FAIL test12: no observation is fired after the change of writing mode when box's specified size comes from logical size properties. assert_unreached: the logical size of content-box doesn't change Reached unreachable code -FAIL test13: an observation is fired after the change of writing mode when box's specified size comes from physical size properties. assert_unreached: Timed out waiting for notification. (100ms) Reached unreachable code -PASS test14: observe the same target but using a different box should override the previous one -PASS test15: an observation is fired with box dimensions 0 when element's display property is set to inline -PASS test16: observations do not fire for non-replaced inline elements -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/external/wpt/resize-observer/observe.html b/third_party/blink/web_tests/external/wpt/resize-observer/observe.html index 3b33683..1ab5f78 100644 --- a/third_party/blink/web_tests/external/wpt/resize-observer/observe.html +++ b/third_party/blink/web_tests/external/wpt/resize-observer/observe.html
@@ -713,6 +713,138 @@ ]); return helper.start(() => t.remove()); + +} + + +function test17() { + // <div id="outer"> + // <div id="nested"> + // </div> + // </div> + + let outer = document.createElement('div'); + outer.style.width = "100px"; + outer.style.height = "100px"; + outer.style.padding = "10px"; + outer.style.border = "1px solid blue" + let nested = document.createElement('div'); + nested.style.width = "60px"; + nested.style.height = "50px"; + nested.style.padding = "5%"; + nested.style.boxSizing = "border-box"; + nested.style.border = "5px solid black"; + outer.appendChild(nested); + document.body.appendChild(outer); + + let helper = new ResizeTestHelper( + "test17: Box sizing snd Resize Observer notifications", + [ + { + setup: observer => { + observer.observe(nested, { box: "content-box" }); + }, + notify: entries => { + assert_equals(entries.length, 1, "1 pending notification"); + assert_equals(entries[0].target, nested, "target is nested"); + assert_equals(entries[0].contentRect.width, 40, "target width"); + assert_equals(entries[0].contentRect.height, 30, "target height"); + assert_equals(entries[0].contentRect.top, 5, "target top padding"); + assert_equals(entries[0].contentRect.left, 5, "target left padding"); + assert_equals(entries[0].contentBoxSize.inlineSize, 40, + "target content-box inline size"); + assert_equals(entries[0].contentBoxSize.blockSize, 30, + "target content-box block size"); + assert_equals(entries[0].borderBoxSize.inlineSize, 60, + "target border-box inline size"); + assert_equals(entries[0].borderBoxSize.blockSize, 50, + "target border-box block size"); + } + }, + { + // Changes to a parent's dimensions with a child's padding set as a percentage + // should fire observation if content-box is being observed + setup: observer => { + outer.style.height = "200px"; + outer.style.width = "200px"; + }, + notify: entries => { + assert_equals(entries.length, 1, "1 pending notification"); + assert_equals(entries[0].target, nested, "target is nested"); + assert_equals(entries[0].contentRect.width, 30, "target width"); + assert_equals(entries[0].contentRect.height, 20, "target height"); + assert_equals(entries[0].contentRect.top, 10, "target top padding"); + assert_equals(entries[0].contentRect.left, 10, "target left padding"); + assert_equals(entries[0].contentBoxSize.inlineSize, 30, + "target content-box inline size"); + assert_equals(entries[0].contentBoxSize.blockSize, 20, + "target content-box block size"); + assert_equals(entries[0].borderBoxSize.inlineSize, 60, + "target border-box inline size"); + assert_equals(entries[0].borderBoxSize.blockSize, 50, + "target border-box block size"); + } + }, + { + // Changes to a parent's dimensions with a child's padding set as a percentage + // should fire observation if content-box is being observed + setup: observer => { + nested.style.border = "1px solid black"; + }, + notify: entries => { + assert_equals(entries.length, 1, "1 pending notification"); + assert_equals(entries[0].target, nested, "target is nested"); + assert_equals(entries[0].contentRect.width, 38, "target width"); + assert_equals(entries[0].contentRect.height, 28, "target height"); + assert_equals(entries[0].contentRect.top, 10, "target top padding"); + assert_equals(entries[0].contentRect.left, 10, "target left padding"); + assert_equals(entries[0].contentBoxSize.inlineSize, 38, + "target content-box inline size"); + assert_equals(entries[0].contentBoxSize.blockSize, 28, + "target content-box block size"); + assert_equals(entries[0].borderBoxSize.inlineSize, 60, + "target border-box inline size"); + assert_equals(entries[0].borderBoxSize.blockSize, 50, + "target border-box block size"); + } + }, + { + setup: observer => { + observer.observe(nested, { box: "border-box" }); + }, + notify: entries => { + assert_equals(entries.length, 1, "1 pending notification"); + assert_equals(entries[0].target, nested, "target is nested"); + assert_equals(entries[0].contentRect.width, 38, "target width"); + assert_equals(entries[0].contentRect.height, 28, "target height"); + assert_equals(entries[0].contentRect.top, 10, "target top padding"); + assert_equals(entries[0].contentRect.left, 10, "target left padding"); + assert_equals(entries[0].contentBoxSize.inlineSize, 38, + "target content-box inline size"); + assert_equals(entries[0].contentBoxSize.blockSize, 28, + "target content-box block size"); + assert_equals(entries[0].borderBoxSize.inlineSize, 60, + "target border-box inline size"); + assert_equals(entries[0].borderBoxSize.blockSize, 50, + "target border-box block size"); + } + }, + { + // Changes to a parent's dimensions with a child's padding set as a percentage + // should not fire observation if border-box is being observed + setup: observer => { + outer.style.height = "100px"; + }, + notify: entries => { + assert_unreached("No observation should be fired when nested border box remains constant"); + }, + timeout: () => { + // expected + } + }, + + ]); + return helper.start(() => nested.remove()); } let guard; @@ -738,6 +870,7 @@ .then(() => test14()) .then(() => test15()) .then(() => test16()) + .then(() => test17()) .then(() => guard.done()); </script>
diff --git a/third_party/blink/web_tests/external/wpt/svg/pservers/reftests/gradient-inheritance-not-in-rendertree-01.tentative.svg b/third_party/blink/web_tests/external/wpt/svg/pservers/reftests/gradient-inheritance-not-in-rendertree-01.tentative.svg new file mode 100644 index 0000000..8f80b2d9 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/svg/pservers/reftests/gradient-inheritance-not-in-rendertree-01.tentative.svg
@@ -0,0 +1,15 @@ +<svg xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:h="http:/www.w3.org/1999/xhtml"> + <title><linearGradient> (without content) inheriting from a <linearGradient> in an invalid context</title> + <h:link rel="help" href="https://svgwg.org/svg2-draft/pservers.html#StopNotes"/> + <h:link rel="match" href="reference/green-100x100.svg"/> + <linearGradient id="linearGradient1" xlink:href="#linearGradient0"/> + <rect width="100" height="100" fill="green"/> + <rect width="100" height="100" fill="url(#linearGradient1) yellow"/> + <text> + <linearGradient id="linearGradient0"> + <stop stop-color="orange"/> + </linearGradient> + </text> +</svg>
diff --git a/third_party/blink/web_tests/external/wpt/svg/pservers/reftests/gradient-inheritance-not-in-rendertree-02.tentative.svg b/third_party/blink/web_tests/external/wpt/svg/pservers/reftests/gradient-inheritance-not-in-rendertree-02.tentative.svg new file mode 100644 index 0000000..5b230f1 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/svg/pservers/reftests/gradient-inheritance-not-in-rendertree-02.tentative.svg
@@ -0,0 +1,16 @@ +<svg xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:h="http:/www.w3.org/1999/xhtml"> + <title><linearGradient> (with content) inheriting from a <linearGradient> in an invalid context</title> + <h:link rel="help" href="https://svgwg.org/svg2-draft/pservers.html#StopNotes"/> + <h:link rel="match" href="reference/green-100x100.svg"/> + <linearGradient id="linearGradient1" xlink:href="#linearGradient0"> + <stop stop-color="green"/> + </linearGradient> + <rect width="100" height="100" fill="url(#linearGradient1) yellow"/> + <text> + <linearGradient id="linearGradient0"> + <stop stop-color="orange"/> + </linearGradient> + </text> +</svg>
diff --git a/third_party/blink/web_tests/external/wpt/svg/pservers/reftests/pattern-inheritance-not-in-rendertree-01.tentative.svg b/third_party/blink/web_tests/external/wpt/svg/pservers/reftests/pattern-inheritance-not-in-rendertree-01.tentative.svg new file mode 100644 index 0000000..1a6d0a0 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/svg/pservers/reftests/pattern-inheritance-not-in-rendertree-01.tentative.svg
@@ -0,0 +1,13 @@ +<svg xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:h="http:/www.w3.org/1999/xhtml"> + <title><pattern> (without content) inheriting from a <pattern> in an invalid context</title> + <h:link rel="match" href="reference/green-100x100.svg"/> + <pattern id="pattern1" xlink:href="#pattern0" width="1" height="1"/> + <rect width="100" height="100" fill="url(#pattern1) green"/> + <text> + <pattern id="pattern0"> + <rect width="100" height="100" fill="orange"/> + </pattern> + </text> +</svg>
diff --git a/third_party/blink/web_tests/external/wpt/svg/pservers/reftests/pattern-inheritance-not-in-rendertree-02.tentative.svg b/third_party/blink/web_tests/external/wpt/svg/pservers/reftests/pattern-inheritance-not-in-rendertree-02.tentative.svg new file mode 100644 index 0000000..961d069e --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/svg/pservers/reftests/pattern-inheritance-not-in-rendertree-02.tentative.svg
@@ -0,0 +1,15 @@ +<svg xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:h="http:/www.w3.org/1999/xhtml"> + <title><pattern> (with content) inheriting from a <pattern> in an invalid context</title> + <h:link rel="match" href="reference/green-100x100.svg"/> + <pattern id="pattern1" xlink:href="#pattern0" width="1" height="1"> + <rect width="100" height="100" fill="green"/> + </pattern> + <rect width="100" height="100" fill="url(#pattern1) yellow"/> + <text> + <pattern id="pattern0"> + <rect width="100" height="100" fill="orange"/> + </pattern> + </text> +</svg>
diff --git a/third_party/blink/web_tests/external/wpt/wasm/webapi/invalid-code.any-expected.txt b/third_party/blink/web_tests/external/wpt/wasm/webapi/invalid-code.any-expected.txt deleted file mode 100644 index 90be592..0000000 --- a/third_party/blink/web_tests/external/wpt/wasm/webapi/invalid-code.any-expected.txt +++ /dev/null
@@ -1,5 +0,0 @@ -This is a testharness.js-based test. -FAIL Invalid code: compileStreaming assert_unreached: Should have rejected: undefined Reached unreachable code -FAIL Invalid code: instantiateStreaming assert_unreached: Should have rejected: undefined Reached unreachable code -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/external/wpt/wasm/webapi/invalid-code.any.js b/third_party/blink/web_tests/external/wpt/wasm/webapi/invalid-code.any.js index 2b901ae..7525193 100644 --- a/third_party/blink/web_tests/external/wpt/wasm/webapi/invalid-code.any.js +++ b/third_party/blink/web_tests/external/wpt/wasm/webapi/invalid-code.any.js
@@ -8,7 +8,7 @@ for (const method of ["compileStreaming", "instantiateStreaming"]) { promise_test(t => { - const buffer = new Uint8Array(Array.from(emptyModuleBinary).concat([0, 0])); + const buffer = new Uint8Array(Array.from(emptyModuleBinary).concat([0xCA, 0xFE])); const response = new Response(buffer, { headers: { "Content-Type": "application/wasm" } }); return promise_rejects_js(t, WebAssembly.CompileError, WebAssembly[method](response)); }, `Invalid code: ${method}`);
diff --git a/third_party/blink/web_tests/external/wpt/wasm/webapi/invalid-code.any.serviceworker-expected.txt b/third_party/blink/web_tests/external/wpt/wasm/webapi/invalid-code.any.serviceworker-expected.txt deleted file mode 100644 index 90be592..0000000 --- a/third_party/blink/web_tests/external/wpt/wasm/webapi/invalid-code.any.serviceworker-expected.txt +++ /dev/null
@@ -1,5 +0,0 @@ -This is a testharness.js-based test. -FAIL Invalid code: compileStreaming assert_unreached: Should have rejected: undefined Reached unreachable code -FAIL Invalid code: instantiateStreaming assert_unreached: Should have rejected: undefined Reached unreachable code -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/external/wpt/wasm/webapi/invalid-code.any.sharedworker-expected.txt b/third_party/blink/web_tests/external/wpt/wasm/webapi/invalid-code.any.sharedworker-expected.txt deleted file mode 100644 index 90be592..0000000 --- a/third_party/blink/web_tests/external/wpt/wasm/webapi/invalid-code.any.sharedworker-expected.txt +++ /dev/null
@@ -1,5 +0,0 @@ -This is a testharness.js-based test. -FAIL Invalid code: compileStreaming assert_unreached: Should have rejected: undefined Reached unreachable code -FAIL Invalid code: instantiateStreaming assert_unreached: Should have rejected: undefined Reached unreachable code -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/external/wpt/wasm/webapi/invalid-code.any.worker-expected.txt b/third_party/blink/web_tests/external/wpt/wasm/webapi/invalid-code.any.worker-expected.txt deleted file mode 100644 index 90be592..0000000 --- a/third_party/blink/web_tests/external/wpt/wasm/webapi/invalid-code.any.worker-expected.txt +++ /dev/null
@@ -1,5 +0,0 @@ -This is a testharness.js-based test. -FAIL Invalid code: compileStreaming assert_unreached: Should have rejected: undefined Reached unreachable code -FAIL Invalid code: instantiateStreaming assert_unreached: Should have rejected: undefined Reached unreachable code -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/external/wpt/resize-observer/observe-expected.txt b/third_party/blink/web_tests/flag-specific/disable-layout-ng/external/wpt/resize-observer/observe-expected.txt deleted file mode 100644 index bff8f07f..0000000 --- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/external/wpt/resize-observer/observe-expected.txt +++ /dev/null
@@ -1,22 +0,0 @@ -This is a testharness.js-based test. -PASS ResizeObserver implemented -PASS guard -PASS test0: simple observation -PASS test1: multiple observation on same element trigger only one -PASS test2: throw exception when observing non-element -PASS test3: disconnect stops all notifications -PASS test4: unobserve target stops notifications, unobserve non-observed does nothing -PASS test5: observe img -PASS test6: iframe notifications -PASS test7: callback.this -PASS test8: simple content-box observation -PASS test9: simple content-box observation but keep border-box size unchanged -PASS test10: simple border-box observation -PASS test11: simple observation with vertical writing mode -FAIL test12: no observation is fired after the change of writing mode when box's specified size comes from logical size properties. assert_unreached: the logical size of content-box doesn't change Reached unreachable code -FAIL test13: an observation is fired after the change of writing mode when box's specified size comes from physical size properties. assert_unreached: Timed out waiting for notification. (100ms) Reached unreachable code -PASS test14: observe the same target but using a different box should override the previous one -PASS test15: an observation is fired with box dimensions 0 when element's display property is set to inline -PASS test16: observations do not fire for non-replaced inline elements -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/http/tests/devtools/console/console-copy-treeoutline.js b/third_party/blink/web_tests/http/tests/devtools/console/console-copy-treeoutline.js index 5e6fd10..9d0d656a 100644 --- a/third_party/blink/web_tests/http/tests/devtools/console/console-copy-treeoutline.js +++ b/third_party/blink/web_tests/http/tests/devtools/console/console-copy-treeoutline.js
@@ -20,11 +20,13 @@ var consoleView = Console.ConsoleView.instance(); var viewport = consoleView._viewport; - TestRunner.runTestSuite([function testSelectAll(next) { + TestRunner.runTestSuite([async function testSelectAll(next) { viewport.forceScrollItemToBeFirst(0); // Set some initial selection in console. var base = consoleView.itemElement(0).element(); + // Console messages contain live locations. + await TestRunner.waitForPendingLiveLocationUpdates(); window.getSelection().setBaseAndExtent(base, 0, base, 1); // Try to select all messages.
diff --git a/third_party/blink/web_tests/http/tests/devtools/console/console-copy-truncated-text.js b/third_party/blink/web_tests/http/tests/devtools/console/console-copy-truncated-text.js index db82597..7c70e21 100644 --- a/third_party/blink/web_tests/http/tests/devtools/console/console-copy-truncated-text.js +++ b/third_party/blink/web_tests/http/tests/devtools/console/console-copy-truncated-text.js
@@ -34,67 +34,67 @@ var secondLongUrlIndexInMixedUrl; var tests = [ - function testSelectWithinTruncatedUrl(next) { - makeSelectionAndDump(1, 0, 1, halfMaxLength); - makeSelectionAndDump(1, 0, 1, halfMaxLength + 1); - makeSelectionAndDump(1, 0, 1, maxLength); - makeSelectionAndDump(1, halfMaxLength, 1, halfMaxLength + 1); - makeSelectionAndDump(1, halfMaxLength, 1, maxLength); - makeSelectionAndDump(1, halfMaxLength + 1, 1, maxLength); + async function testSelectWithinTruncatedUrl(next) { + await makeSelectionAndDump(1, 0, 1, halfMaxLength); + await makeSelectionAndDump(1, 0, 1, halfMaxLength + 1); + await makeSelectionAndDump(1, 0, 1, maxLength); + await makeSelectionAndDump(1, halfMaxLength, 1, halfMaxLength + 1); + await makeSelectionAndDump(1, halfMaxLength, 1, maxLength); + await makeSelectionAndDump(1, halfMaxLength + 1, 1, maxLength); next(); }, - function testSelectAcrossMultipleMessages(next) { - makeSelectionAndDump(1, 0, 2, shortUrl.length); - makeSelectionAndDump(1, halfMaxLength, 2, shortUrl.length); - makeSelectionAndDump(1, halfMaxLength + 1, 2, shortUrl.length); + async function testSelectAcrossMultipleMessages(next) { + await makeSelectionAndDump(1, 0, 2, shortUrl.length); + await makeSelectionAndDump(1, halfMaxLength, 2, shortUrl.length); + await makeSelectionAndDump(1, halfMaxLength + 1, 2, shortUrl.length); next(); }, - function testSelectAcrossMultipleMessagesWithTruncatedUrls(next) { - makeSelectionAndDump(1, 0, 3, halfMaxLength); - makeSelectionAndDump(1, 0, 3, halfMaxLength + 1); - makeSelectionAndDump(1, 0, 3, maxLength); + async function testSelectAcrossMultipleMessagesWithTruncatedUrls(next) { + await makeSelectionAndDump(1, 0, 3, halfMaxLength); + await makeSelectionAndDump(1, 0, 3, halfMaxLength + 1); + await makeSelectionAndDump(1, 0, 3, maxLength); next(); }, - function testSelectWithinMessageWithMultipleTruncatedUrls(next) { - makeSelectionAndDump(4, 0, 4, halfMaxLength); - makeSelectionAndDump(4, 0, 4, halfMaxLength + 1); - makeSelectionAndDump(4, 0, 4, secondLongUrlIndexInMixedUrl); - makeSelectionAndDump(4, 0, 4, secondLongUrlIndexInMixedUrl + halfMaxLength); - makeSelectionAndDump(4, 0, 4, secondLongUrlIndexInMixedUrl + halfMaxLength + 1); - makeSelectionAndDump(4, 0, 4, secondLongUrlIndexInMixedUrl + maxLength); + async function testSelectWithinMessageWithMultipleTruncatedUrls(next) { + await makeSelectionAndDump(4, 0, 4, halfMaxLength); + await makeSelectionAndDump(4, 0, 4, halfMaxLength + 1); + await makeSelectionAndDump(4, 0, 4, secondLongUrlIndexInMixedUrl); + await makeSelectionAndDump(4, 0, 4, secondLongUrlIndexInMixedUrl + halfMaxLength); + await makeSelectionAndDump(4, 0, 4, secondLongUrlIndexInMixedUrl + halfMaxLength + 1); + await makeSelectionAndDump(4, 0, 4, secondLongUrlIndexInMixedUrl + maxLength); - makeSelectionAndDump(4, halfMaxLength, 4, halfMaxLength + 1); - makeSelectionAndDump(4, halfMaxLength, 4, secondLongUrlIndexInMixedUrl); - makeSelectionAndDump(4, halfMaxLength, 4, secondLongUrlIndexInMixedUrl + halfMaxLength); - makeSelectionAndDump(4, halfMaxLength, 4, secondLongUrlIndexInMixedUrl + halfMaxLength + 1); - makeSelectionAndDump(4, halfMaxLength, 4, secondLongUrlIndexInMixedUrl + maxLength); + await makeSelectionAndDump(4, halfMaxLength, 4, halfMaxLength + 1); + await makeSelectionAndDump(4, halfMaxLength, 4, secondLongUrlIndexInMixedUrl); + await makeSelectionAndDump(4, halfMaxLength, 4, secondLongUrlIndexInMixedUrl + halfMaxLength); + await makeSelectionAndDump(4, halfMaxLength, 4, secondLongUrlIndexInMixedUrl + halfMaxLength + 1); + await makeSelectionAndDump(4, halfMaxLength, 4, secondLongUrlIndexInMixedUrl + maxLength); - makeSelectionAndDump(4, halfMaxLength + 1, 4, secondLongUrlIndexInMixedUrl); - makeSelectionAndDump(4, halfMaxLength + 1, 4, secondLongUrlIndexInMixedUrl + halfMaxLength); - makeSelectionAndDump(4, halfMaxLength + 1, 4, secondLongUrlIndexInMixedUrl + halfMaxLength + 1); - makeSelectionAndDump(4, halfMaxLength + 1, 4, secondLongUrlIndexInMixedUrl + maxLength); + await makeSelectionAndDump(4, halfMaxLength + 1, 4, secondLongUrlIndexInMixedUrl); + await makeSelectionAndDump(4, halfMaxLength + 1, 4, secondLongUrlIndexInMixedUrl + halfMaxLength); + await makeSelectionAndDump(4, halfMaxLength + 1, 4, secondLongUrlIndexInMixedUrl + halfMaxLength + 1); + await makeSelectionAndDump(4, halfMaxLength + 1, 4, secondLongUrlIndexInMixedUrl + maxLength); - makeSelectionAndDump(4, secondLongUrlIndexInMixedUrl, 4, secondLongUrlIndexInMixedUrl + halfMaxLength); - makeSelectionAndDump(4, secondLongUrlIndexInMixedUrl, 4, secondLongUrlIndexInMixedUrl + halfMaxLength + 1); - makeSelectionAndDump(4, secondLongUrlIndexInMixedUrl, 4, secondLongUrlIndexInMixedUrl + maxLength); + await makeSelectionAndDump(4, secondLongUrlIndexInMixedUrl, 4, secondLongUrlIndexInMixedUrl + halfMaxLength); + await makeSelectionAndDump(4, secondLongUrlIndexInMixedUrl, 4, secondLongUrlIndexInMixedUrl + halfMaxLength + 1); + await makeSelectionAndDump(4, secondLongUrlIndexInMixedUrl, 4, secondLongUrlIndexInMixedUrl + maxLength); - makeSelectionAndDump( + await makeSelectionAndDump( 4, secondLongUrlIndexInMixedUrl + halfMaxLength, 4, secondLongUrlIndexInMixedUrl + halfMaxLength + 1 ); - makeSelectionAndDump( + await makeSelectionAndDump( 4, secondLongUrlIndexInMixedUrl + halfMaxLength, 4, secondLongUrlIndexInMixedUrl + maxLength ); - makeSelectionAndDump( + await makeSelectionAndDump( 4, secondLongUrlIndexInMixedUrl + halfMaxLength + 1, 4, @@ -103,24 +103,24 @@ next(); }, - function testSelectWithinShortUrlWithHashes(next) { + async function testSelectWithinShortUrlWithHashes(next) { var hashedUrlMaxLength = consoleMessageText(5).length; var hashedUrlHalfMaxLength = Math.ceil(hashedUrlMaxLength / 2); - makeSelectionAndDump(5, 0, 5, hashedUrlHalfMaxLength); - makeSelectionAndDump(5, 0, 5, hashedUrlMaxLength); - makeSelectionAndDump(5, hashedUrlHalfMaxLength, 5, hashedUrlMaxLength); + await makeSelectionAndDump(5, 0, 5, hashedUrlHalfMaxLength); + await makeSelectionAndDump(5, 0, 5, hashedUrlMaxLength); + await makeSelectionAndDump(5, hashedUrlHalfMaxLength, 5, hashedUrlMaxLength); next(); }, - function testSelectWithinUrlWithHashes(next) { + async function testSelectWithinUrlWithHashes(next) { var hashedUrlMaxLength = consoleMessageText(6).length; var hashedUrlHalfMaxLength = Math.ceil(hashedUrlMaxLength / 2); - makeSelectionAndDump(6, 0, 6, hashedUrlHalfMaxLength); - makeSelectionAndDump(6, 0, 6, hashedUrlHalfMaxLength + 1); - makeSelectionAndDump(6, 0, 6, hashedUrlMaxLength); - makeSelectionAndDump(6, hashedUrlHalfMaxLength, 6, hashedUrlHalfMaxLength + 1); - makeSelectionAndDump(6, hashedUrlHalfMaxLength, 6, hashedUrlMaxLength); - makeSelectionAndDump(6, hashedUrlHalfMaxLength + 1, 6, hashedUrlMaxLength); + await makeSelectionAndDump(6, 0, 6, hashedUrlHalfMaxLength); + await makeSelectionAndDump(6, 0, 6, hashedUrlHalfMaxLength + 1); + await makeSelectionAndDump(6, 0, 6, hashedUrlMaxLength); + await makeSelectionAndDump(6, hashedUrlHalfMaxLength, 6, hashedUrlHalfMaxLength + 1); + await makeSelectionAndDump(6, hashedUrlHalfMaxLength, 6, hashedUrlMaxLength); + await makeSelectionAndDump(6, hashedUrlHalfMaxLength + 1, 6, hashedUrlMaxLength); next(); }, @@ -137,12 +137,12 @@ } ]; - ConsoleTestRunner.waitForConsoleMessages(expectedMessageCount, () => { + ConsoleTestRunner.waitForConsoleMessages(expectedMessageCount, async () => { viewport.invalidate(); // Get the max truncated length from the first longUrl logged. try { - var longUrlMessageText = consoleMessageText(1); + var longUrlMessageText = await consoleMessageText(1); maxLength = longUrlMessageText.length; halfMaxLength = Math.ceil(maxLength / 2); secondLongUrlIndexInMixedUrl = maxLength + 1 + shortUrl.length + 1; @@ -161,17 +161,21 @@ return messageElement.querySelector('.console-message-text').deepTextContent(); } - function makeSelectionAndDump(fromMessage, fromTextOffset, toMessage, toTextOffset) { + async function makeSelectionAndDump(fromMessage, fromTextOffset, toMessage, toTextOffset) { TestRunner.addResult( '\nMaking selection: ' + fromMessage + ', ' + fromTextOffset + ', ' + toMessage + ', ' + toTextOffset ); // Ignore the anchor text on the start/end message, just use their contents. - var fromAnchor = consoleView.itemElement(fromMessage).element().querySelector('.console-message-anchor'); - var toAnchor = consoleView.itemElement(toMessage).element().querySelector('.console-message-anchor'); + const fromElement = consoleView.itemElement(fromMessage).element(); + const toElement = consoleView.itemElement(toMessage).element(); + // Console message elements contain live locations. + await TestRunner.waitForPendingLiveLocationUpdates(); + var fromAnchor = fromElement.querySelector('.console-message-anchor'); + var toAnchor = toElement.querySelector('.console-message-anchor'); fromTextOffset += fromAnchor ? fromAnchor.deepTextContent().length : 0; toTextOffset += toAnchor ? toAnchor.deepTextContent().length : 0; - ConsoleTestRunner.selectConsoleMessages(fromMessage, fromTextOffset, toMessage, toTextOffset); + await ConsoleTestRunner.selectConsoleMessages(fromMessage, fromTextOffset, toMessage, toTextOffset); var selectedText = viewport._selectedText(); if (selectedText) { selectedText = selectedText.replace(/\bVM\d+/g, 'VM'); @@ -189,7 +193,7 @@ consoleView._searchableView.showSearchField(); TestRunner.addResult('Searching for text: ' + query); - function onSearch() { + async function onSearch() { var matches = consoleView.element .childTextNodes() .filter(node => node.parentElement.classList.contains('highlighted-search-result')) @@ -197,12 +201,12 @@ TestRunner.addResult('Highlighted ' + matches.length + ' matches'); // Use TextNodes for containers to get inside the highlighted match element. - makeSelectionAndDump(7, 0, 7, halfMaxLength); - makeSelectionAndDump(7, 0, 7, halfMaxLength + 1); - makeSelectionAndDump(7, 0, 7, maxLength); - makeSelectionAndDump(7, halfMaxLength, 7, halfMaxLength + 1); - makeSelectionAndDump(7, halfMaxLength, 7, maxLength); - makeSelectionAndDump(7, halfMaxLength + 1, 7, maxLength); + await makeSelectionAndDump(7, 0, 7, halfMaxLength); + await makeSelectionAndDump(7, 0, 7, halfMaxLength + 1); + await makeSelectionAndDump(7, 0, 7, maxLength); + await makeSelectionAndDump(7, halfMaxLength, 7, halfMaxLength + 1); + await makeSelectionAndDump(7, halfMaxLength, 7, maxLength); + await makeSelectionAndDump(7, halfMaxLength + 1, 7, maxLength); next(); } }
diff --git a/third_party/blink/web_tests/http/tests/devtools/console/console-filter-level-test.js b/third_party/blink/web_tests/http/tests/devtools/console/console-filter-level-test.js index f68c9989..47e8f72f 100644 --- a/third_party/blink/web_tests/http/tests/devtools/console/console-filter-level-test.js +++ b/third_party/blink/web_tests/http/tests/devtools/console/console-filter-level-test.js
@@ -26,13 +26,18 @@ if (consoleView._isSidebarOpen) consoleView._splitWidget._showHideSidebarButton.element.click(); - function dumpVisibleMessages() { + async function dumpVisibleMessages() { var menuText = Console.ConsoleView.instance()._filter._levelMenuButton._text; TestRunner.addResult('Level menu: ' + menuText); var messages = Console.ConsoleView.instance()._visibleViewMessages; - for (var i = 0; i < messages.length; i++) - TestRunner.addResult('>' + messages[i].toMessageElement().deepTextContent()); + for (var i = 0; i < messages.length; i++) { + // Ordering is important here, as accessing the element the first time around + // triggers live location creation and updates which we need to await properly. + const element = messages[i].toMessageElement(); + await TestRunner.waitForPendingLiveLocationUpdates(); + TestRunner.addResult('>' + element.deepTextContent()); + } } var testSuite = [ @@ -46,59 +51,50 @@ function beforeFilter(next) { TestRunner.addResult('beforeFilter'); - dumpVisibleMessages(); - next(); + dumpVisibleMessages().then(next); }, function allLevels(next) { Console.ConsoleViewFilter.levelFilterSetting().set(Console.ConsoleFilter.allLevelsFilterValue()); - dumpVisibleMessages(); - next(); + dumpVisibleMessages().then(next); }, function defaultLevels(next) { Console.ConsoleViewFilter.levelFilterSetting().set(Console.ConsoleFilter.defaultLevelsFilterValue()); - dumpVisibleMessages(); - next(); + dumpVisibleMessages().then(next); }, function verbose(next) { Console.ConsoleViewFilter.levelFilterSetting().set({ verbose: true }); - dumpVisibleMessages(); - next(); + dumpVisibleMessages().then(next); }, function info(next) { Console.ConsoleViewFilter.levelFilterSetting().set({ info: true }); - dumpVisibleMessages(); - next(); + dumpVisibleMessages().then(next); }, function warningsAndErrors(next) { Console.ConsoleViewFilter.levelFilterSetting().set({ warning: true, error: true }); - dumpVisibleMessages(); - next(); + dumpVisibleMessages().then(next); }, function abcMessagePlain(next) { Console.ConsoleViewFilter.levelFilterSetting().set({ verbose: true }); Console.ConsoleView.instance()._filter._textFilterUI.setValue('abc'); Console.ConsoleView.instance()._filter._onFilterChanged(); - dumpVisibleMessages(); - next(); + dumpVisibleMessages().then(next); }, function abcMessageRegex(next) { Console.ConsoleView.instance()._filter._textFilterUI.setValue('/ab[a-z]/'); Console.ConsoleView.instance()._filter._onFilterChanged(); - dumpVisibleMessages(); - next(); + dumpVisibleMessages().then(next); }, function abcMessageRegexWarning(next) { Console.ConsoleViewFilter.levelFilterSetting().set({ warning: true }); - dumpVisibleMessages(); - next(); + dumpVisibleMessages().then(next); } ];
diff --git a/third_party/blink/web_tests/http/tests/devtools/console/console-filter-test.js b/third_party/blink/web_tests/http/tests/devtools/console/console-filter-test.js index fcf903a..960072d 100644 --- a/third_party/blink/web_tests/http/tests/devtools/console/console-filter-test.js +++ b/third_party/blink/web_tests/http/tests/devtools/console/console-filter-test.js
@@ -60,14 +60,19 @@ var messages = Console.ConsoleView.instance()._visibleViewMessages; - function dumpVisibleMessages() { + async function dumpVisibleMessages() { var messages = Console.ConsoleView.instance()._visibleViewMessages; for (var i = 0; i < messages.length; ++i) { var viewMessage = messages[i]; var delimeter = viewMessage.consoleMessage().isGroupStartMessage() ? '>' : ''; var indent = ''; for (var j = 0; j < viewMessage.nestingLevel(); ++j) indent += ' '; - TestRunner.addResult(indent + delimeter + viewMessage.toMessageElement().deepTextContent()); + + // Ordering is important here, as accessing the element the first time around + // triggers live location creation and updates which we need to await properly. + const element = viewMessage.toMessageElement(); + await TestRunner.waitForPendingLiveLocationUpdates(); + TestRunner.addResult(indent + delimeter + element.deepTextContent()); } } @@ -77,84 +82,70 @@ TestRunner.runTestSuite([ function beforeFilter(next) { TestRunner.addResult('beforeFilter'); - dumpVisibleMessages(); - next(); + dumpVisibleMessages().then(next); }, function allLevelsFilter(next) { Console.ConsoleViewFilter.levelFilterSetting().set(Console.ConsoleFilter.allLevelsFilterValue()); - dumpVisibleMessages(); - next(); + dumpVisibleMessages().then(next); }, function addURL1Filter(next) { TestRunner.addResult('Blocking messages from ' + url1); Console.ConsoleView.instance()._filter.addMessageURLFilter(url1); - dumpVisibleMessages(); - next(); + dumpVisibleMessages().then(next); }, function addURL2Filter(next) { TestRunner.addResult('Blocking messages from ' + url2); Console.ConsoleView.instance()._filter.addMessageURLFilter(url2); - dumpVisibleMessages(); - next(); + dumpVisibleMessages().then(next); }, function removeAllFilters(next) { Console.ConsoleView.instance()._filter._textFilterUI.setValue(''); Console.ConsoleView.instance()._filter._onFilterChanged(); - dumpVisibleMessages(); - next(); + dumpVisibleMessages().then(next); }, function checkTextFilter(next) { Console.ConsoleView.instance()._filter._textFilterUI.setValue('outer'); Console.ConsoleView.instance()._filter._onFilterChanged(); - dumpVisibleMessages(); - next(); + dumpVisibleMessages().then(next); }, function checkMultiTextFilter(next) { Console.ConsoleView.instance()._filter._textFilterUI.setValue("Group /[2-3]top/"); Console.ConsoleView.instance()._filter._onFilterChanged(); - dumpVisibleMessages(); - next(); + dumpVisibleMessages().then(next); }, function checkTextUrlFilter(next) { Console.ConsoleView.instance()._filter._textFilterUI.setValue("url:log-source"); Console.ConsoleView.instance()._filter._onFilterChanged(); - dumpVisibleMessages(); - next(); + dumpVisibleMessages().then(next); }, function checkNegativeTextUrlFilter(next) { Console.ConsoleView.instance()._filter._textFilterUI.setValue("-url:log-source"); Console.ConsoleView.instance()._filter._onFilterChanged(); - dumpVisibleMessages(); - next(); + dumpVisibleMessages().then(next); }, function checkSourceFilter(next) { Console.ConsoleView.instance()._filter._textFilterUI.setValue("source:violation"); Console.ConsoleView.instance()._filter._onFilterChanged(); - dumpVisibleMessages(); - next(); + dumpVisibleMessages().then(next); }, function checkContextTextFilter(next) { Console.ConsoleView.instance()._filter._textFilterUI.setValue("context:context"); Console.ConsoleView.instance()._filter._onFilterChanged(); - dumpVisibleMessages(); - next(); + dumpVisibleMessages().then(next); }, function checkStartEndLineRegex(next) { Console.ConsoleView.instance()._filter._textFilterUI.setValue("/^Hello\\s\\d$/"); Console.ConsoleView.instance()._filter._onFilterChanged(); - dumpVisibleMessages(); - next(); + dumpVisibleMessages().then(next); }, function checkStartEndLineRegexForAnchor(next) { Console.ConsoleView.instance()._filter._textFilterUI.setValue("/^log-source\\.js:\\d+$/"); Console.ConsoleView.instance()._filter._onFilterChanged(); - dumpVisibleMessages(); - next(); + dumpVisibleMessages().then(next); }, function checkResetFilter(next) { Console.ConsoleView.instance()._filter.reset(); - dumpVisibleMessages(); - next(); + dumpVisibleMessages().then(next); } ]); })();
diff --git a/third_party/blink/web_tests/http/tests/devtools/console/console-linkify-message-location.js b/third_party/blink/web_tests/http/tests/devtools/console/console-linkify-message-location.js index 86d794f..963f1678 100644 --- a/third_party/blink/web_tests/http/tests/devtools/console/console-linkify-message-location.js +++ b/third_party/blink/web_tests/http/tests/devtools/console/console-linkify-message-location.js
@@ -24,37 +24,40 @@ TestRunner.evaluateInPage('boo()', step1); - function step1() { - dumpConsoleMessageURLs(); + async function step1() { + await dumpConsoleMessageURLs(); TestRunner.addSniffer(Bindings.BlackboxManager.prototype, '_patternChangeFinishedForTests', step2); var frameworkRegexString = 'foo\\.js'; Common.settingForTest('skipStackFramesPattern').set(frameworkRegexString); } - function step2() { - dumpConsoleMessageURLs(); + async function step2() { + await dumpConsoleMessageURLs(); TestRunner.addSniffer(Bindings.BlackboxManager.prototype, '_patternChangeFinishedForTests', step3); var frameworkRegexString = 'foo\\.js|boo\\.js'; Common.settingForTest('skipStackFramesPattern').set(frameworkRegexString); } - function step3() { - dumpConsoleMessageURLs(); + async function step3() { + await dumpConsoleMessageURLs(); TestRunner.addSniffer(Bindings.BlackboxManager.prototype, '_patternChangeFinishedForTests', step4); var frameworkRegexString = ''; Common.settingForTest('skipStackFramesPattern').set(frameworkRegexString); } - function step4() { - dumpConsoleMessageURLs(); + async function step4() { + await dumpConsoleMessageURLs(); TestRunner.completeTest(); } - function dumpConsoleMessageURLs() { + async function dumpConsoleMessageURLs() { var messages = Console.ConsoleView.instance()._visibleViewMessages; for (var i = 0; i < messages.length; ++i) { + // Ordering is important here. Retrieveing the message element the first time triggers + // live location creation and updates, which we need to await for correct locations. var element = messages[i].toMessageElement(); + await TestRunner.waitForPendingLiveLocationUpdates(); var anchor = element.querySelector('.console-message-anchor'); TestRunner.addResult(anchor.textContent.replace(/VM\d+/g, 'VM')); }
diff --git a/third_party/blink/web_tests/http/tests/devtools/console/console-links-in-errors-with-trace.js b/third_party/blink/web_tests/http/tests/devtools/console/console-links-in-errors-with-trace.js index 4819ed55..6093e76 100644 --- a/third_party/blink/web_tests/http/tests/devtools/console/console-links-in-errors-with-trace.js +++ b/third_party/blink/web_tests/http/tests/devtools/console/console-links-in-errors-with-trace.js
@@ -12,8 +12,12 @@ var messages = Console.ConsoleView.instance()._visibleViewMessages; TestRunner.runTestSuite([ - function testClickRelativeLink(next) { - var clickTarget = messages[0].element().querySelectorAll('.console-message-text .devtools-link')[1]; + async function testClickRelativeLink(next) { + // Ordering is important here, as accessing the element the first time around + // triggers live location creation and updates which we need to await properly. + const element = messages[0].element(); + await TestRunner.waitForPendingLiveLocationUpdates(); + const clickTarget = element.querySelectorAll('.console-message-text .devtools-link')[1]; TestRunner.addResult('Clicking link ' + clickTarget.textContent); UI.inspectorView._tabbedPane.once(UI.TabbedPane.Events.TabSelected).then(() => { TestRunner.addResult('Panel ' + UI.inspectorView._tabbedPane._currentTab.id + ' was opened.');
diff --git a/third_party/blink/web_tests/http/tests/devtools/console/console-preserve-scroll.js b/third_party/blink/web_tests/http/tests/devtools/console/console-preserve-scroll.js index 851b0fd..7166805b 100644 --- a/third_party/blink/web_tests/http/tests/devtools/console/console-preserve-scroll.js +++ b/third_party/blink/web_tests/http/tests/devtools/console/console-preserve-scroll.js
@@ -37,7 +37,11 @@ }, async function testClickLinkToRevealAnotherPanel(next) { - consoleView._visibleViewMessages[0]._element.querySelector('.devtools-link').click(); + // Ordering is important here, as accessing the element the first time around + // triggers live location creation and updates which we need to await properly. + const element = consoleView._visibleViewMessages[0]._element; + await TestRunner.waitForPendingLiveLocationUpdates(); + element.querySelector('.devtools-link').click(); await UI.inspectorView._tabbedPane.once(UI.TabbedPane.Events.TabSelected); await TestRunner.showPanel('console'); dumpScrollTop();
diff --git a/third_party/blink/web_tests/http/tests/devtools/console/console-uncaught-promise-expected.txt b/third_party/blink/web_tests/http/tests/devtools/console/console-uncaught-promise-expected.txt index b08cf08d..e3a9beda 100644 --- a/third_party/blink/web_tests/http/tests/devtools/console/console-uncaught-promise-expected.txt +++ b/third_party/blink/web_tests/http/tests/devtools/console/console-uncaught-promise-expected.txt
@@ -8,7 +8,7 @@ timeout @ console-uncaught-promise.js:19 setTimeout (async) runNextPromiseTest @ console-uncaught-promise.js:18 -(anonymous) @ console-uncaught-promise.js:103 +(anonymous) @ console-uncaught-promise.js:100 console-uncaught-promise.js:47 Uncaught (in promise) Error: err2 promiseTest2 @ console-uncaught-promise.js:47 timeout @ console-uncaught-promise.js:19 @@ -23,7 +23,7 @@ timeout @ console-uncaught-promise.js:19 setTimeout (async) runNextPromiseTest @ console-uncaught-promise.js:18 -(anonymous) @ console-uncaught-promise.js:106 +(anonymous) @ console-uncaught-promise.js:100 console-uncaught-promise.js:65 Uncaught (in promise) DOMException: Failed to execute 'removeChild' on 'Node': The node to be removed is not a child of this node. throwDOMException @ console-uncaught-promise.js:65 catcher @ console-uncaught-promise.js:57 @@ -32,25 +32,25 @@ timeout @ console-uncaught-promise.js:19 setTimeout (async) runNextPromiseTest @ console-uncaught-promise.js:18 -(anonymous) @ console-uncaught-promise.js:106 +(anonymous) @ console-uncaught-promise.js:100 console-uncaught-promise.js:71 Uncaught (in promise) 42 promiseTest4 @ console-uncaught-promise.js:71 timeout @ console-uncaught-promise.js:19 setTimeout (async) runNextPromiseTest @ console-uncaught-promise.js:18 -(anonymous) @ console-uncaught-promise.js:106 +(anonymous) @ console-uncaught-promise.js:100 console-uncaught-promise.js:76 Uncaught (in promise) 1e+100 promiseTest5 @ console-uncaught-promise.js:76 timeout @ console-uncaught-promise.js:19 setTimeout (async) runNextPromiseTest @ console-uncaught-promise.js:18 -(anonymous) @ console-uncaught-promise.js:106 +(anonymous) @ console-uncaught-promise.js:100 console-uncaught-promise.js:81 Uncaught (in promise) foo promiseTest6 @ console-uncaught-promise.js:81 timeout @ console-uncaught-promise.js:19 setTimeout (async) runNextPromiseTest @ console-uncaught-promise.js:18 -(anonymous) @ console-uncaught-promise.js:106 +(anonymous) @ console-uncaught-promise.js:100 console-uncaught-promise.js:86 Uncaught (in promise) {foo: 42} foo: 42 __proto__: Object @@ -58,13 +58,13 @@ timeout @ console-uncaught-promise.js:19 setTimeout (async) runNextPromiseTest @ console-uncaught-promise.js:18 -(anonymous) @ console-uncaught-promise.js:106 +(anonymous) @ console-uncaught-promise.js:100 console-uncaught-promise.js:91 Uncaught (in promise) undefined promiseTest8 @ console-uncaught-promise.js:91 timeout @ console-uncaught-promise.js:19 setTimeout (async) runNextPromiseTest @ console-uncaught-promise.js:18 -(anonymous) @ console-uncaught-promise.js:106 +(anonymous) @ console-uncaught-promise.js:100 A bad HTTP response code (404) was received when fetching the script. inspected-page.html:1 Uncaught (in promise) TypeError: Failed to register a ServiceWorker for scope ('http://127.0.0.1:8000/devtools/console/') with script ('http://127.0.0.1:8000/devtools/console/404'): A bad HTTP response code (404) was received when fetching the script.
diff --git a/third_party/blink/web_tests/http/tests/devtools/console/console-uncaught-promise.js b/third_party/blink/web_tests/http/tests/devtools/console/console-uncaught-promise.js index fd50ea7..bc94733 100644 --- a/third_party/blink/web_tests/http/tests/devtools/console/console-uncaught-promise.js +++ b/third_party/blink/web_tests/http/tests/devtools/console/console-uncaught-promise.js
@@ -97,22 +97,12 @@ } `); - ConsoleTestRunner.addConsoleViewSniffer(checkConsoleMessages, true); - Common.console.showPromise(); - - checkConsoleMessages(); - - function checkConsoleMessages() { - TestRunner.evaluateInPage('runNextPromiseTest()', callback); - - function callback(result) { - if (!result) - ConsoleTestRunner.expandConsoleMessages(dump); - } + while (await TestRunner.evaluateInPagePromise('runNextPromiseTest()')) { + // Run all the test cases until there are no more. } - function dump() { - ConsoleTestRunner.dumpConsoleMessagesIgnoreErrorStackFrames(); - TestRunner.completeTest(); - } + ConsoleTestRunner.expandConsoleMessages(async () => { + await ConsoleTestRunner.dumpConsoleMessagesIgnoreErrorStackFrames(); + TestRunner.completeTest(); + }); })();
diff --git a/third_party/blink/web_tests/http/tests/devtools/console/console-viewport-selection.js b/third_party/blink/web_tests/http/tests/devtools/console/console-viewport-selection.js index 1d2a7be9..ca49d3a 100644 --- a/third_party/blink/web_tests/http/tests/devtools/console/console-viewport-selection.js +++ b/third_party/blink/web_tests/http/tests/devtools/console/console-viewport-selection.js
@@ -25,29 +25,29 @@ var viewportMessagesCount; var testSuite = [ - function testSelectionSingleLineText(next) { + async function testSelectionSingleLineText(next) { viewport.invalidate(); viewport.forceScrollItemToBeFirst(0); viewportMessagesCount = viewport.lastVisibleIndex() - viewport.firstVisibleIndex() + 1; - selectMessages(middleMessage, 2, middleMessage, 7); + await selectMessages(middleMessage, 2, middleMessage, 7); dumpSelectionText(); next(); }, - function testReversedSelectionSingleLineText(next) { - selectMessages(middleMessage, 7, middleMessage, 2); + async function testReversedSelectionSingleLineText(next) { + await selectMessages(middleMessage, 7, middleMessage, 2); dumpSelectionText(); next(); }, - function testSelectionMultiLineText(next) { - selectMessages(middleMessage - 1, 4, middleMessage + 1, 7); + async function testSelectionMultiLineText(next) { + await selectMessages(middleMessage - 1, 4, middleMessage + 1, 7); dumpSelectionText(); next(); }, - function testSimpleVisibleSelection(next) { - selectMessages(middleMessage - 3, 6, middleMessage + 2, 6); + async function testSimpleVisibleSelection(next) { + await selectMessages(middleMessage - 3, 6, middleMessage + 2, 6); dumpSelectionModel(); next(); }, @@ -77,14 +77,14 @@ next(); }, - function testShiftClickSelectionOver(next) { - emulateShiftClickOnMessage(minimumViewportMessagesCount); + async function testShiftClickSelectionOver(next) { + await emulateShiftClickOnMessage(minimumViewportMessagesCount); dumpSelectionModel(); next(); }, - function testShiftClickSelectionBelow(next) { - emulateShiftClickOnMessage(messagesCount - minimumViewportMessagesCount); + async function testShiftClickSelectionBelow(next) { + await emulateShiftClickOnMessage(messagesCount - minimumViewportMessagesCount); dumpSelectionModel(); next(); }, @@ -96,20 +96,20 @@ next(); }, - function testReversedVisibleSelection(next) { - selectMessages(middleMessage + 1, 6, middleMessage - 4, 6); + async function testReversedVisibleSelection(next) { + await selectMessages(middleMessage + 1, 6, middleMessage - 4, 6); dumpSelectionModel(); next(); }, - function testShiftClickReversedSelectionOver(next) { - emulateShiftClickOnMessage(minimumViewportMessagesCount); + async function testShiftClickReversedSelectionOver(next) { + await emulateShiftClickOnMessage(minimumViewportMessagesCount); dumpSelectionModel(); next(); }, - function testShiftClickReversedSelectionBelow(next) { - emulateShiftClickOnMessage(messagesCount - minimumViewportMessagesCount); + async function testShiftClickReversedSelectionBelow(next) { + await emulateShiftClickOnMessage(messagesCount - minimumViewportMessagesCount); dumpSelectionModel(); next(); }, @@ -196,7 +196,7 @@ TestRunner.addResult('Selected text:<<<EOL\n' + text + '\nEOL'); } - function emulateShiftClickOnMessage(messageIndex) { + async function emulateShiftClickOnMessage(messageIndex) { viewport.refresh(); var selection = window.getSelection(); if (!selection || !selection.rangeCount) { @@ -205,11 +205,13 @@ } viewport.forceScrollItemToBeFirst(Math.max(messageIndex - minimumViewportMessagesCount / 2, 0)); var element = consoleView.itemElement(messageIndex).element(); + // Console messages contain live locations. + await TestRunner.waitForPendingLiveLocationUpdates(); selection.setBaseAndExtent(selection.anchorNode, selection.anchorOffset, element, 0); viewport.refresh(); } - function selectMessages(fromMessage, fromTextOffset, toMessage, toTextOffset) { + async function selectMessages(fromMessage, fromTextOffset, toMessage, toTextOffset) { if (Math.abs(toMessage - fromMessage) > minimumViewportMessagesCount) { TestRunner.addResult(String.sprintf( 'FAILURE: Cannot select more than %d messages (requested to select from %d to %d', @@ -219,7 +221,7 @@ } viewport.forceScrollItemToBeFirst(Math.min(fromMessage, toMessage)); - ConsoleTestRunner.selectConsoleMessages(fromMessage, fromTextOffset, toMessage, toTextOffset); + await ConsoleTestRunner.selectConsoleMessages(fromMessage, fromTextOffset, toMessage, toTextOffset); viewport.refresh(); } })();
diff --git a/third_party/blink/web_tests/http/tests/devtools/console/viewport-testing/console-key-navigation.js b/third_party/blink/web_tests/http/tests/devtools/console/viewport-testing/console-key-navigation.js index 22c44bb..dea56b3c 100644 --- a/third_party/blink/web_tests/http/tests/devtools/console/viewport-testing/console-key-navigation.js +++ b/third_party/blink/web_tests/http/tests/devtools/console/viewport-testing/console-key-navigation.js
@@ -24,125 +24,125 @@ await ConsoleTestRunner.waitForPendingViewportUpdates(); TestRunner.runTestSuite([ - function testBetweenViewportAndExternal(next) { + async function testBetweenViewportAndExternal(next) { TestRunner.addResult(`Setting focus in prompt:`); prompt.focus(); - dumpFocus(); + await dumpFocus(); shiftPress('Tab'); - dumpFocus(); + await dumpFocus(); press('ArrowUp'); - dumpFocus(); + await dumpFocus(); shiftPress('Tab'); - dumpFocus(); + await dumpFocus(); press('Tab'); - dumpFocus(); + await dumpFocus(); press('ArrowUp'); - dumpFocus(); + await dumpFocus(); press('Tab'); - dumpFocus(); + await dumpFocus(); next(); }, - function testBetweenViewportAndExternalWithSelectedItemNotInDOM(next) { + async function testBetweenViewportAndExternalWithSelectedItemNotInDOM(next) { TestRunner.addResult(`Setting focus in prompt:`); prompt.focus(); - dumpFocus(); + await dumpFocus(); shiftPress('Tab'); - dumpFocus(); + await dumpFocus(); press('ArrowUp'); - dumpFocus(); + await dumpFocus(); scrollViewportToTop(); - dumpFocus(); + await dumpFocus(); shiftPress('Tab'); - dumpFocus(); + await dumpFocus(); press('Tab'); - dumpFocus(); + await dumpFocus(); press('ArrowUp'); - dumpFocus(); + await dumpFocus(); TestRunner.addResult(`\nSetting focus in prompt:`); prompt.focus(); - dumpFocus(); + await dumpFocus(); shiftPress('Tab'); - dumpFocus(); + await dumpFocus(); press('ArrowUp'); - dumpFocus(); + await dumpFocus(); scrollViewportToTop(); - dumpFocus(); + await dumpFocus(); press('Tab'); - dumpFocus(); + await dumpFocus(); next(); }, - function testMoveAcrossLogsWithinViewport(next) { + async function testMoveAcrossLogsWithinViewport(next) { forceSelect(logCount - 1); - dumpFocus(); + await dumpFocus(); press('Home'); - dumpFocus(); + await dumpFocus(); press('ArrowDown'); - dumpFocus(); + await dumpFocus(); press('ArrowDown'); - dumpFocus(); + await dumpFocus(); press('End'); - dumpFocus(); + await dumpFocus(); press('ArrowUp'); - dumpFocus(); + await dumpFocus(); press('ArrowUp'); - dumpFocus(); + await dumpFocus(); next(); }, - function testViewportDoesNotChangeFocusOnScroll(next) { + async function testViewportDoesNotChangeFocusOnScroll(next) { forceSelect(logCount - 2); - dumpFocus(); + await dumpFocus(); scrollViewportToTop(); - dumpFocus(); + await dumpFocus(); scrollViewportToBottom(); - dumpFocus(); + await dumpFocus(); next(); }, - function testViewportDoesNotStealFocusOnScroll(next) { + async function testViewportDoesNotStealFocusOnScroll(next) { forceSelect(logCount - 1); - dumpFocus(); + await dumpFocus(); TestRunner.addResult(`Setting focus in prompt:`); prompt.focus(); - dumpFocus(); + await dumpFocus(); scrollViewportToTop(); - dumpFocus(); + await dumpFocus(); scrollViewportToBottom(); - dumpFocus(); + await dumpFocus(); next(); }, @@ -150,20 +150,20 @@ async function testNewLogsShouldNotMoveFocus(next) { TestRunner.addResult(`Setting focus in prompt:`); prompt.focus(); - dumpFocus(); + await dumpFocus(); await TestRunner.evaluateInPagePromise(`console.log("New Message")`); await ConsoleTestRunner.waitForConsoleMessagesPromise(logCount + 1); await ConsoleTestRunner.waitForPendingViewportUpdates(); - dumpFocus(); + await dumpFocus(); next(); }, - function testClearingConsoleFocusesPrompt(next) { + async function testClearingConsoleFocusesPrompt(next) { TestRunner.addResult(`\nConsole cleared:`); consoleView._consoleCleared(); - dumpFocus(); + await dumpFocus(); next(); } ]); @@ -200,8 +200,10 @@ eventSender.keyDown(key, ['shiftKey']); } - function dumpFocus() { + async function dumpFocus() { var element = document.deepActiveElement(); + // Console elements contain live locations that might not be fully resolved yet. + await TestRunner.waitForPendingLiveLocationUpdates(); if (!element) { TestRunner.addResult('null'); return;
diff --git a/third_party/blink/web_tests/http/tests/devtools/elements/highlight/highlight-display-locked.js b/third_party/blink/web_tests/http/tests/devtools/elements/highlight/highlight-display-locked.js index 0fd8b3b..b87a2a0e 100644 --- a/third_party/blink/web_tests/http/tests/devtools/elements/highlight/highlight-display-locked.js +++ b/third_party/blink/web_tests/http/tests/devtools/elements/highlight/highlight-display-locked.js
@@ -8,7 +8,7 @@ await TestRunner.loadModule('console_test_runner'); await TestRunner.showPanel('elements'); await TestRunner.loadHTML(` - <div id="container" renderSubtree="invisible skip-activation" style="contain-intrinsic-size: 10px;"> + <div id="container" style="render-subtree: invisible skip-activation; contain-intrinsic-size: 10px;"> <div id="child" style="width: 50px; height: 50px;"></div> </div> `);
diff --git a/third_party/blink/web_tests/http/tests/inspector-protocol/webauthn/webauthn-enables-virtual-environment-expected.txt b/third_party/blink/web_tests/http/tests/inspector-protocol/webauthn/webauthn-enables-virtual-environment-expected.txt deleted file mode 100644 index f04e58b7b..0000000 --- a/third_party/blink/web_tests/http/tests/inspector-protocol/webauthn/webauthn-enables-virtual-environment-expected.txt +++ /dev/null
@@ -1,3 +0,0 @@ -Check that calling WebAuthn.enable starts the WebAuthn virtual authenticator environment. -OK -
diff --git a/third_party/blink/web_tests/http/tests/inspector-protocol/webauthn/webauthn-enables-virtual-environment.js b/third_party/blink/web_tests/http/tests/inspector-protocol/webauthn/webauthn-enables-virtual-environment.js deleted file mode 100644 index 483985d..0000000 --- a/third_party/blink/web_tests/http/tests/inspector-protocol/webauthn/webauthn-enables-virtual-environment.js +++ /dev/null
@@ -1,13 +0,0 @@ -(async function(testRunner) { - const {page, session, dp} = - await testRunner.startURL( - "https://devtools.test:8443/inspector-protocol/webauthn/resources/webauthn-test.https.html", - "Check that calling WebAuthn.enable starts the WebAuthn virtual " + - "authenticator environment."); - - await dp.WebAuthn.enable(); - - const result = await session.evaluateAsync("registerCredential()"); - testRunner.log(result.status); - testRunner.completeTest(); -})
diff --git a/third_party/blink/web_tests/inspector-protocol/accessibility/accessibility-getFullAXTree-display-locked.js b/third_party/blink/web_tests/inspector-protocol/accessibility/accessibility-getFullAXTree-display-locked.js index 4177283..50e3286 100644 --- a/third_party/blink/web_tests/inspector-protocol/accessibility/accessibility-getFullAXTree-display-locked.js +++ b/third_party/blink/web_tests/inspector-protocol/accessibility/accessibility-getFullAXTree-display-locked.js
@@ -1,16 +1,16 @@ (async function(testRunner) { var {page, session, dp} = await testRunner.startHTML(` - <div id='activatable' rendersubtree='invisible skip-viewport-activation'> + <div id='activatable' style='render-subtree: invisible skip-viewport-activation'> locked <div id='child'> child <div id='grandChild'>grandChild</div> </div> <div id='invisible' style='display:none'>invisible</div> - <div id='nested' rendersubtree='invisible skip-viewport-activation'>nested</div> + <div id='nested' style='render-subtree: invisible skip-viewport-activation'>nested</div> text </div> - <div id='nonActivatable' rendersubtree='invisible skip-activation'>nonActivatable text</div> + <div id='nonActivatable' style='render-subtree: invisible skip-activation'>nonActivatable text</div> <div id='normal'>normal text</div> `, 'Tests accessibility values of display locked nodes'); const dumpAccessibilityNodesFromList =
diff --git a/third_party/blink/web_tests/inspector-protocol/css/css-get-platform-fonts-display-locked.js b/third_party/blink/web_tests/inspector-protocol/css/css-get-platform-fonts-display-locked.js index 03d1a520..429ad01 100644 --- a/third_party/blink/web_tests/inspector-protocol/css/css-get-platform-fonts-display-locked.js +++ b/third_party/blink/web_tests/inspector-protocol/css/css-get-platform-fonts-display-locked.js
@@ -29,7 +29,7 @@ `, 'Test css.getPlatformFontsForNode method with display locking.'); await session.evaluateAsync(async () => { - await requestAnimationFrame(() => { document.getElementById("parent").renderSubtree = "invisible skip-activation"; }); + await requestAnimationFrame(() => { document.getElementById("parent").style = "render-subtree: invisible skip-activation"; }); }); var CSSHelper = await testRunner.loadScript('../resources/css-helper.js');
diff --git a/third_party/blink/web_tests/svg/custom/xlink-to-invalid-gradient-expected.png b/third_party/blink/web_tests/svg/custom/xlink-to-invalid-gradient-expected.png deleted file mode 100644 index 03cdc1c..0000000 --- a/third_party/blink/web_tests/svg/custom/xlink-to-invalid-gradient-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/svg/custom/xlink-to-invalid-gradient.svg b/third_party/blink/web_tests/svg/custom/xlink-to-invalid-gradient.svg deleted file mode 100644 index 1609157..0000000 --- a/third_party/blink/web_tests/svg/custom/xlink-to-invalid-gradient.svg +++ /dev/null
@@ -1,19 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg - xmlns="http://www.w3.org/2000/svg" - xmlns:xlink="http://www.w3.org/1999/xlink" - version="1.0" - width="200" - height="200"> -<defs> - <linearGradient id="linearGradient1" xlink:href="#linearGradient0" /> -</defs> -<rect width="200" height="200" style="fill:url(#linearGradient1) green;" id="rect0" /> -<text id="text0" x="10" y="20" style="fill:green"> - PASS - <linearGradient id="linearGradient0"> - <stop offset="0" stop-color="white"/> - <stop offset="1" stop-color="black"/> - </linearGradient> -</text> -</svg>
diff --git a/third_party/blink/web_tests/webexposed/element-instance-property-listing-expected.txt b/third_party/blink/web_tests/webexposed/element-instance-property-listing-expected.txt index 4239e0d..7141285 100644 --- a/third_party/blink/web_tests/webexposed/element-instance-property-listing-expected.txt +++ b/third_party/blink/web_tests/webexposed/element-instance-property-listing-expected.txt
@@ -289,12 +289,10 @@ property removeAttributeNode property removeChild property removeEventListener - property renderSubtree property replaceChild property replaceWith property requestFullscreen property requestPointerLock - property resetSubtreeRendered property role property scroll property scrollBy @@ -321,7 +319,6 @@ property toString property toggleAttribute property translate - property updateRendering property webkitMatchesSelector property webkitRequestFullScreen property webkitRequestFullscreen @@ -1482,12 +1479,10 @@ property removeAttributeNode property removeChild property removeEventListener - property renderSubtree property replaceChild property replaceWith property requestFullscreen property requestPointerLock - property resetSubtreeRendered property role property scroll property scrollBy @@ -1510,7 +1505,6 @@ property tagName property textContent property toggleAttribute - property updateRendering property viewportElement property webkitMatchesSelector property webkitRequestFullScreen
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 e60ef96..c490a1c5 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
@@ -2062,7 +2062,6 @@ getter part getter prefix getter previousElementSibling - getter renderSubtree getter role getter scrollHeight getter scrollLeft @@ -2112,7 +2111,6 @@ method replaceWith method requestFullscreen method requestPointerLock - method resetSubtreeRendered method scroll method scrollBy method scrollIntoView @@ -2124,7 +2122,6 @@ method setAttributeNodeNS method setPointerCapture method toggleAttribute - method updateRendering method webkitMatchesSelector method webkitRequestFullScreen method webkitRequestFullscreen @@ -2190,7 +2187,6 @@ setter onwebkitfullscreenerror setter outerHTML setter part - setter renderSubtree setter role setter scrollLeft setter scrollTop
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/accessibility-activatable.html b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/accessibility-activatable.html similarity index 93% rename from third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/accessibility-activatable.html rename to third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/accessibility-activatable.html index e8f51ba..b997b55 100644 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/accessibility-activatable.html +++ b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/accessibility-activatable.html
@@ -7,6 +7,11 @@ </head> <body> +<style> +.rendersubtreelocked { + render-subtree: invisible; +} +</style> <div id=spacer style="height: 3000px"></div> <div id="container"> <div id="locked"> @@ -32,7 +37,7 @@ async_test(async (t) => { // Lock #locked. const locked = document.getElementById("locked"); - await setInvisibleActivatable(locked); + await addClassAndProcessLifecycle(locked, "rendersubtreelocked"); let axLocked = axElementById("locked"); t.step(() => { assert_false(axLocked.isIgnored); }); @@ -58,9 +63,6 @@ } } - // update() should trigger style & layout update in the locked tree. The ax objects might get replaced, - // but the structure should stay the same. - await locked.updateRendering(); axLocked = axElementById("locked"); t.step(() => { assert_equals(axLocked.childrenCount, 7, "Child count after update"); }); @@ -76,7 +78,7 @@ } // Unlock the element, and force a layout recalc. - await setVisible(locked); + await removeClassAndProcessLifecycle(locked, "rendersubtreelocked"); locked.getBoundingClientRect(); axLocked = axElementById("locked"); // Expect 4 children: the text node "locked" and 3 div children (#child, #displayNone, and #hidden).
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/accessibility-non-activatable.html b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/accessibility-non-activatable.html similarity index 75% rename from third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/accessibility-non-activatable.html rename to third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/accessibility-non-activatable.html index 3dc49994d..2cd47f7 100644 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/accessibility-non-activatable.html +++ b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/accessibility-non-activatable.html
@@ -7,8 +7,13 @@ </head> <body> +<style> +.rendersubtreelocked { + render-subtree: invisible skip-activation; +} +</style> <div id="container"> - <div id="locked" rendersubtree="invisible skip-activation"> + <div id="locked" class=rendersubtreelocked> locked <div id="child"> child @@ -27,11 +32,7 @@ t.step(() => { assert_false(axLocked.isIgnored); }); t.step(() => { assert_equals(axLocked.childrenCount, 0); }); - // Trigger style & layout recalc in the locked subtree with update(). - await locked.updateRendering(); - t.step(() => { assert_equals(axLocked.childrenCount, 0, "After update, nodes in locked subtree are still ignored"); }); - - await setVisible(locked); + await removeClassAndProcessLifecycle(locked, "rendersubtreelocked"); // The ax object for #locked got replaced since the layout object changed, so use the new ax object. axLocked = axElementById("locked"); t.step(() => { assert_equals(axLocked.childrenCount, 2, "After commit, nodes in locked subtree are not ignored"); });
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/acquire-commit.html b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/acquire-commit.html similarity index 85% rename from third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/acquire-commit.html rename to third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/acquire-commit.html index d268f2d5..ddfd3db 100644 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/acquire-commit.html +++ b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/acquire-commit.html
@@ -19,6 +19,9 @@ height: 50px; background: lightgreen; } +.locked { + render-subtree: invisible skip-activation; +} </style> <div id="log"></div> @@ -33,12 +36,12 @@ function runTest() { const container = document.getElementById("container"); - setInvisible(container).then(() => { + addClassAndProcessLifecycle(container, "locked").then(() => { const child = document.createElement("div"); child.id = "child"; container.appendChild(child); - setVisible(container).then( + removeClassAndProcessLifecycle(container, "locked").then( () => { finishTest("PASS"); }, (e) => { finishTest("FAIL " + e.message); }); });
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/acquire-in-breakable-div-ref.html b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/acquire-in-breakable-div-ref.html similarity index 100% rename from third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/acquire-in-breakable-div-ref.html rename to third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/acquire-in-breakable-div-ref.html
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/acquire-in-breakable-div.html b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/acquire-in-breakable-div.html similarity index 71% rename from third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/acquire-in-breakable-div.html rename to third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/acquire-in-breakable-div.html index e355b12f..fa57c29e 100644 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/acquire-in-breakable-div.html +++ b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/acquire-in-breakable-div.html
@@ -1,5 +1,5 @@ <!doctype HTML> -<html class="reftest-wait"> +<html> <meta charset="utf8"> <title>Display Locking: acquire in div with columns</title> <link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org"> @@ -12,6 +12,7 @@ #container { border-top: solid green 50px; border-bottom: solid green 50px; + render-subtree: invisible skip-activation; } #parent { columns: 2; @@ -22,16 +23,7 @@ </style> <div id="parent"> - <div id="container"></div> + <div id="container">Text</div> </div> -<script> -async function runTest() { - const container = document.getElementById("container"); - await setInvisible(container); - takeScreenshot(); -} - -window.onload = runTest; -</script> </html>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/acquire-in-iframe-ref.html b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/acquire-in-iframe-ref.html similarity index 91% rename from third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/acquire-in-iframe-ref.html rename to third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/acquire-in-iframe-ref.html index 5cdb63b1..9c96e11 100644 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/acquire-in-iframe-ref.html +++ b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/acquire-in-iframe-ref.html
@@ -5,6 +5,5 @@ <link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org"> <link rel="help" href="https://github.com/WICG/display-locking"> -<div id="log">PASS</div> <iframe></iframe> </html>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/acquire-in-iframe.html b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/acquire-in-iframe.html new file mode 100644 index 0000000..8c66351 --- /dev/null +++ b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/acquire-in-iframe.html
@@ -0,0 +1,22 @@ +<!doctype HTML> +<html> +<meta charset="utf8"> +<title>Display Locking: acquire in iframe</title> +<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org"> +<link rel="help" href="https://github.com/WICG/display-locking"> +<link rel="match" href="acquire-in-iframe-ref.html"> +<script src="/common/reftest-wait.js"></script> +<script src="resources/utils.js"></script> + +<iframe id="frame" srcdoc=' + <style> + #container { + width: 100px; + height: 100px; + render-subtree: invisible skip-activation; + } + </style> + <div id="container">Lorem</div> +'></iframe> + +</html>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/acquire-on-composited-layer.html b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/acquire-on-composited-layer.html similarity index 89% rename from third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/acquire-on-composited-layer.html rename to third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/acquire-on-composited-layer.html index 0dbb75d..15a2f95f 100644 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/acquire-on-composited-layer.html +++ b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/acquire-on-composited-layer.html
@@ -14,6 +14,9 @@ width: 150px; height: 150px; } +.locked { + render-subtree: invisible skip-activation; +} </style> <div id="log"></div> @@ -28,7 +31,7 @@ function runTest() { const container = document.getElementById("container"); - setInvisible(container).then( + addClassAndProcessLifecycle(container, "locked").then( () => { finishTest("PASS"); }, (e) => { finishTest("FAIL " + e.message); } );
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/acquire-on-positioned-element.html b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/acquire-on-positioned-element.html similarity index 88% rename from third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/acquire-on-positioned-element.html rename to third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/acquire-on-positioned-element.html index 89ea607..0ef7d95 100644 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/acquire-on-positioned-element.html +++ b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/acquire-on-positioned-element.html
@@ -17,6 +17,9 @@ top: 0px; left: 0px; } +.locked { + render-subtree: invisible skip-activation; +} </style> <div id="log"></div> @@ -31,7 +34,7 @@ function runTest() { const container = document.getElementById("container"); - setInvisible(container).then(() => { + addClassAndProcessLifecycle(container, "locked").then(() => { const child = document.createElement("div"); document.body.appendChild(child);
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/acquire-then-mark-for-reattach.html b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/acquire-then-mark-for-reattach.html similarity index 84% rename from third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/acquire-then-mark-for-reattach.html rename to third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/acquire-then-mark-for-reattach.html index 79e4cd9a..1019c4f 100644 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/acquire-then-mark-for-reattach.html +++ b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/acquire-then-mark-for-reattach.html
@@ -1,4 +1,5 @@ <!DOCTYPE html> +<html class="reftest-wait"> <meta charset="utf-8"> <title>Display Locking: marking descendant for reattachment after acquire</title> <link rel="author" title="Rakina Zata Amni" href="mailto:rakina@chromium.org"> @@ -7,6 +8,11 @@ <script src="/common/reftest-wait.js"></script> <script src="resources/utils.js"></script> +<style> +.locked { + render-subtree: invisible skip-activation; +} +</style> <div id="log"></div> <div id="host"><div id="slotted"></div></div> @@ -17,14 +23,14 @@ takeScreenshot(); } -function runTest() { +async function runTest() { // Set up locked element within shadow root. let shadowRoot = host.attachShadow({ mode: "open" }); let locked = document.createElement("div"); shadowRoot.appendChild(locked); locked.innerHTML = "<slot></slot>"; locked.getBoundingClientRect(); - setInvisible(locked); + await addClassAndProcessLifecycle(locked, "locked"); // Slotted will be recalced, because style dirtiness propagated // to the DOM ancestor (host) instead of flat-tree (<slot>), and @@ -34,7 +40,7 @@ host.getBoundingClientRect(); // Check that everything is OK after we commit. - setVisible(locked).then(() => { + removeClassAndProcessLifecycle(locked, "locked").then(() => { locked.remove(); finishTest("PASS"); });
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/activation/accessibility-activatable-focus.html b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/activation/accessibility-activatable-focus.html similarity index 80% rename from third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/activation/accessibility-activatable-focus.html rename to third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/activation/accessibility-activatable-focus.html index 1f10a76..7d1955e 100644 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/activation/accessibility-activatable-focus.html +++ b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/activation/accessibility-activatable-focus.html
@@ -3,11 +3,10 @@ <head> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="../resources/utils.js"></script> </head> <body> -<div id="locked" rendersubtree="invisible"> +<div id="locked" style="render-subtree: invisible"> foo <div id="child" tabindex="0"> bar @@ -21,12 +20,10 @@ async_test(async(t) => { const lockedEl = document.getElementById("locked"); - t.step(() => { assert_equals(lockedEl.renderSubtree, INVISIBLE_ACTIVATABLE) }); let axLocked = axElementById("locked"); t.step(() => { assert_equals(axLocked.childrenCount, 3, "Child count after acquire"); }); axElementById("child").takeFocus(); - t.step(() => { assert_equals(lockedEl.renderSubtree, "") }); // Wait for the next frame for the ax object to be recreated. requestAnimationFrame(() => { requestAnimationFrame(() => {
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/activation/accessibility-activatable-press.html b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/activation/accessibility-activatable-press.html similarity index 80% rename from third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/activation/accessibility-activatable-press.html rename to third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/activation/accessibility-activatable-press.html index 2fb80a7..1fdd73b 100644 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/activation/accessibility-activatable-press.html +++ b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/activation/accessibility-activatable-press.html
@@ -3,11 +3,10 @@ <head> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="../resources/utils.js"></script> </head> <body> -<div id="locked" rendersubtree="invisible"> +<div id="locked" style="render-subtree: invisible"> foo <div id="child" tabindex="0"> bar @@ -21,13 +20,11 @@ async_test(async(t) => { const lockedEl = document.getElementById("locked"); - t.step(() => { assert_equals(lockedEl.renderSubtree, INVISIBLE_ACTIVATABLE) }); let axLocked = axElementById("locked"); t.step(() => { assert_equals(axLocked.childrenCount, 3, "Child count after acquire"); }); axElementById("child").press(); - t.step(() => { assert_equals(lockedEl.renderSubtree, ""); }); // Wait for the next frame for the ax object to be recreated. requestAnimationFrame(() => { requestAnimationFrame(() => {
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/activation/accessibility-activatable-scroll.html b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/activation/accessibility-activatable-scroll.html similarity index 80% rename from third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/activation/accessibility-activatable-scroll.html rename to third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/activation/accessibility-activatable-scroll.html index 0cedebf..9896873 100644 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/activation/accessibility-activatable-scroll.html +++ b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/activation/accessibility-activatable-scroll.html
@@ -3,11 +3,10 @@ <head> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="../resources/utils.js"></script> </head> <body> -<div id="locked" rendersubtree="invisible"> +<div id="locked" style="render-subtree: invisible"> foo <div id="child" tabindex="0"> bar @@ -21,13 +20,11 @@ async_test(async(t) => { const lockedEl = document.getElementById("locked"); - t.step(() => { assert_equals(lockedEl.renderSubtree, INVISIBLE_ACTIVATABLE) }); let axLocked = axElementById("locked"); t.step(() => { assert_equals(axLocked.childrenCount, 3, "Child count after acquire"); }); axElementById("child").scrollToMakeVisible(); - t.step(() => { assert_equals(lockedEl.renderSubtree, "") }); // Wait for the next frame for the ax object to be recreated. requestAnimationFrame(() => { requestAnimationFrame(() => {
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/activation/activatable-locked-element-allows-anchor-links-ref.html b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/activation/activatable-locked-element-allows-anchor-links-ref.html similarity index 100% rename from third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/activation/activatable-locked-element-allows-anchor-links-ref.html rename to third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/activation/activatable-locked-element-allows-anchor-links-ref.html
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/activation/activatable-locked-element-allows-anchor-links.html b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/activation/activatable-locked-element-allows-anchor-links.html similarity index 81% rename from third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/activation/activatable-locked-element-allows-anchor-links.html rename to third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/activation/activatable-locked-element-allows-anchor-links.html index 056dcd17..82bb81f 100644 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/activation/activatable-locked-element-allows-anchor-links.html +++ b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/activation/activatable-locked-element-allows-anchor-links.html
@@ -18,6 +18,7 @@ width: 150px; height: 150px; background: lightgreen; + render-subtree: invisible skip-viewport-activation; } #target { width: 100px; @@ -31,11 +32,8 @@ <script> function runTest() { - const container = document.getElementById("container"); - setInvisibleActivatable(container).then(() => { - location.href += "#target"; - requestAnimationFrame(takeScreenshot); - }); + location.href += "#target"; + requestAnimationFrame(takeScreenshot); } window.onload = () => { requestAnimationFrame(runTest); };
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/activation/commit-in-beforeactivate.html b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/activation/commit-in-beforeactivate.html similarity index 83% rename from third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/activation/commit-in-beforeactivate.html rename to third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/activation/commit-in-beforeactivate.html index 59a486f..c44ec48 100644 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/activation/commit-in-beforeactivate.html +++ b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/activation/commit-in-beforeactivate.html
@@ -10,22 +10,19 @@ <script src="../resources/utils.js"></script> <div id=spacer style="height: 3000px"></div> -<div id="target"></div> +<div id="target" style="render-subtree: invisible"></div> <script> 'use strict'; async_test((t) => { async function commit(target) { - setVisible(target); + target.style = ""; t.done(); } async function runTest() { const target = document.getElementById("target"); - await setInvisibleActivatable(target); - t.step(() => assert_equals(target.renderSubtree, INVISIBLE_ACTIVATABLE)); - target.addEventListener("rendersubtreeactivation", () => commit(target)); target.scrollIntoView(); }
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/activation/focus-empty-layout.html b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/activation/focus-empty-layout.html similarity index 90% rename from third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/activation/focus-empty-layout.html rename to third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/activation/focus-empty-layout.html index f9456db..09a3558 100644 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/activation/focus-empty-layout.html +++ b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/activation/focus-empty-layout.html
@@ -10,6 +10,11 @@ Focus on a div that doesn't have style/layout value yet. --> +<style> +.locked { + render-subtree: invisible; +} +</style> <div id=spacer style="height: 3000px"></div> <div id="container"></div> @@ -18,7 +23,7 @@ <script> promise_test((t) => { - const acquirePromise = setInvisibleActivatable(container); + const acquirePromise = addClassAndProcessLifecycle(container, "locked"); return new Promise((resolve, reject) => { const focusable = document.createElement("div"); focusable.tabIndex = 0;
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/activation/focus-next-updated-style.html b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/activation/focus-next-updated-style.html new file mode 100644 index 0000000..62503686 --- /dev/null +++ b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/activation/focus-next-updated-style.html
@@ -0,0 +1,36 @@ +<!doctype HTML> +<html> +<meta charset="utf8"> +<title>Display Locking: focus on skipped element</title> +<link rel="author" title="Rakina Zata Amni" href="mailto:rakina@chromium.org"> +<link rel="help" href="https://github.com/WICG/display-locking"> +<script src="../resources/utils.js"></script> + +<!-- +Focus on a div that has updated style/layout. +--> + +<div id="container" style="render-subtree: invisible"> + <div id="focusableA" tabindex="0">a</div> + <div id="focusableB" tabindex="0">b</div> +</div> + +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> + +<script> +promise_test((t) => { + return new Promise((resolve, reject) => { + focusableA.style = "display: none;"; + eventSender.keyDown("Tab", []); + t.step(() => assert_equals(document.activeElement, focusableB)); + eventSender.keyDown("Tab", []); + t.step(() => assert_equals(document.activeElement, focusableB)); + focusableA.style = "display: block;"; + eventSender.keyDown("Tab", []); + t.step(() => assert_equals(document.activeElement, focusableA)); + resolve(); + }); +}, "Trying to focus on an element in a locked subtree that's not visible anymore will skip that element"); +</script> +</html>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/activation/focus-shadow.html b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/activation/focus-shadow.html similarity index 84% rename from third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/activation/focus-shadow.html rename to third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/activation/focus-shadow.html index 7748ec7..126c6f59 100644 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/activation/focus-shadow.html +++ b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/activation/focus-shadow.html
@@ -18,10 +18,10 @@ promise_test((t) => { const container = document.createElement("div"); container.innerHTML = "<slot></slot>"; + container.style = "render-subtree: invisible"; const shadowRoot = host.attachShadow({ mode: "open" }); shadowRoot.appendChild(container); - const acquirePromise = setInvisibleActivatable(container); return new Promise((resolve, reject) => { const eventPromise = new Promise((resolve, reject) => { @@ -35,13 +35,11 @@ slotted.onrendersubtreeactivation = reject; t.step(() => assert_not_equals(document.activeElement, slotted)); - acquirePromise.then(() => { - slotted.focus(); + slotted.focus(); - eventPromise.then(() => { - t.step(() => assert_equals(document.activeElement, slotted)); - resolve(); - }); + eventPromise.then(() => { + t.step(() => assert_equals(document.activeElement, slotted)); + resolve(); }); }); }, "Activating locked element through focus() fires rendersubtreeactivation, doesn't go through shadow boundary");
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/activation/focus-updated-style-parent.html b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/activation/focus-updated-style-parent.html similarity index 70% rename from third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/activation/focus-updated-style-parent.html rename to third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/activation/focus-updated-style-parent.html index 41e6c39..a628658b 100644 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/activation/focus-updated-style-parent.html +++ b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/activation/focus-updated-style-parent.html
@@ -9,7 +9,7 @@ Focus on a div whose parent (also in a locked subtree) has updated style/layout. --> -<div id="container"> +<div id="container" style="render-subtree: invisible"> <div id="displayNoneParent"> <div id="focusable" tabIndex="0"> focusable thing @@ -23,15 +23,12 @@ <script> promise_test((t) => { - const acquirePromise = setInvisibleActivatable(container); return new Promise((resolve, reject) => { - acquirePromise.then(() => { - container.onrendersubtreeactivation = reject; - displayNoneParent.style.display = "none"; - focusable.focus(); - t.step(() => assert_not_equals(document.activeElement, focusable)); - resolve(); - }); + container.onrendersubtreeactivation = reject; + displayNoneParent.style.display = "none"; + focusable.focus(); + t.step(() => assert_not_equals(document.activeElement, focusable)); + resolve(); }); }, "Trying to focus on an element in a locked subtree that's not visible anymore won't work"); </script>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/activation/focus-updated-style.html b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/activation/focus-updated-style.html similarity index 68% rename from third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/activation/focus-updated-style.html rename to third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/activation/focus-updated-style.html index dc3ad42..d2106b5 100644 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/activation/focus-updated-style.html +++ b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/activation/focus-updated-style.html
@@ -9,7 +9,7 @@ Focus on a div that has updated style/layout. --> -<div id="container"> +<div id="container" style="render-subtree: invisible"> <div id="focusable" tabIndex="0"> focusable thing </div> @@ -21,15 +21,12 @@ <script> promise_test((t) => { - const acquirePromise = setInvisibleActivatable(container); return new Promise((resolve, reject) => { - acquirePromise.then(() => { - container.onrendersubtreeactivation = reject; - focusable.style = "display: none"; - focusable.focus(); - t.step(() => assert_not_equals(document.activeElement, focusable)); - resolve(); - }); + container.onrendersubtreeactivation = reject; + focusable.style = "display: none"; + focusable.focus(); + t.step(() => assert_not_equals(document.activeElement, focusable)); + resolve(); }); }, "Trying to focus on an element in a locked subtree that's not visible anymore won't work"); </script>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/activation/focus.html b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/activation/focus.html similarity index 75% rename from third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/activation/focus.html rename to third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/activation/focus.html index d495cd6..15ceb38 100644 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/activation/focus.html +++ b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/activation/focus.html
@@ -7,7 +7,7 @@ <script src="../resources/utils.js"></script> <div id=spacer style="height: 3000px"></div> -<div id="container" style ="contain:style layout"> +<div id="container" style ="render-subtree: invisible"> <div id="focusable" tabIndex="0"> Focusable div </div> @@ -18,7 +18,6 @@ <script> promise_test(() => { - const acquirePromise = setInvisibleActivatable(container); return new Promise((resolve, reject) => { const eventPromise = new Promise((resolve, reject) => { container.onrendersubtreeactivation = (e) => { @@ -28,12 +27,10 @@ }; }); - acquirePromise.then(() => { - eventSender.keyDown("Tab", ["shiftKey"]); - eventPromise.then(() => { - assert_equals(document.activeElement, focusable); - resolve(); - }); + eventSender.keyDown("Tab", ["shiftKey"]); + eventPromise.then(() => { + assert_equals(document.activeElement, focusable); + resolve(); }); }); }, "Activating locked element through tabindex navigation fires rendersubtreeactivation, focuses element");
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/activation/locked-element-focus.html b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/activation/locked-element-focus.html similarity index 74% rename from third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/activation/locked-element-focus.html rename to third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/activation/locked-element-focus.html index 96a83ec..9902c6c 100644 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/activation/locked-element-focus.html +++ b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/activation/locked-element-focus.html
@@ -5,6 +5,14 @@ <link rel="author" title="Rakina Zata Amni" href="mailto:rakina@chromium.org"> <link rel="help" href="https://github.com/WICG/display-locking"> +<style> +.activatable { + render-subtree: invisible; +} +.nonactivatable { + render-subtree: invisible skip-activation; +} +</style> <div id="container"> <div id="focusable" tabIndex="0"> Focusable div @@ -19,20 +27,20 @@ async_test((t) => { async function focusNonActivatableTest() { - const acquire_promise = setInvisible(container); - await acquire_promise; + await addClassAndProcessLifecycle(container, "nonactivatable"); t.step(() => assert_not_equals(document.activeElement, focusable)); focusable.focus(); t.step(() => assert_not_equals(document.activeElement, focusable)); + await removeClassAndProcessLifecycle(container, "nonactivatable"); focusActivatableTest(); } async function focusActivatableTest() { t.step(() => assert_not_equals(document.activeElement, focusable)); - const acquire_promise = setInvisibleActivatable(container); - await acquire_promise; + await addClassAndProcessLifecycle(container, "activatable"); focusable.focus(); t.step(() => assert_equals(document.activeElement, focusable)); + await removeClassAndProcessLifecycle(container, "activatable"); t.done(); }
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/activation/locked-element-prevents-anchor-links.html b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/activation/locked-element-prevents-anchor-links.html similarity index 82% rename from third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/activation/locked-element-prevents-anchor-links.html rename to third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/activation/locked-element-prevents-anchor-links.html index 92a459a8..2f1df8d 100644 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/activation/locked-element-prevents-anchor-links.html +++ b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/activation/locked-element-prevents-anchor-links.html
@@ -18,6 +18,7 @@ width: 150px; height: 150px; background: lightgreen; + render-subtree: invisible skip-activation; } #target { width: 100px; @@ -31,11 +32,8 @@ <script> function runTest() { - const container = document.getElementById("container"); - setInvisible(container).then(() => { - location.href += "#target"; - requestAnimationFrame(takeScreenshot); - }); + location.href += "#target"; + requestAnimationFrame(takeScreenshot); } window.onload = () => { requestAnimationFrame(runTest); };
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/activation/locked-element-prevents-scroll-into-view.html b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/activation/locked-element-prevents-scroll-into-view.html similarity index 80% rename from third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/activation/locked-element-prevents-scroll-into-view.html rename to third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/activation/locked-element-prevents-scroll-into-view.html index 0467c3c..99a246d 100644 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/activation/locked-element-prevents-scroll-into-view.html +++ b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/activation/locked-element-prevents-scroll-into-view.html
@@ -18,6 +18,7 @@ width: 150px; height: 150px; background: lightgreen; + render-subtree: invisible skip-activation; } #target { width: 100px; @@ -31,11 +32,8 @@ <script> function runTest() { - const container = document.getElementById("container"); - setInvisible(container).then(() => { - document.getElementById("target").scrollIntoView(); - requestAnimationFrame(takeScreenshot); - }); + document.getElementById("target").scrollIntoView(); + requestAnimationFrame(takeScreenshot); } window.onload = () => { requestAnimationFrame(runTest); };
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/activation/spacer-and-container-ref.html b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/activation/spacer-and-container-ref.html similarity index 100% rename from third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/activation/spacer-and-container-ref.html rename to third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/activation/spacer-and-container-ref.html
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/delayed-acquire-removes-painted-output-ref.html b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/delayed-acquire-removes-painted-output-ref.html similarity index 100% rename from third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/delayed-acquire-removes-painted-output-ref.html rename to third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/delayed-acquire-removes-painted-output-ref.html
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/delayed-acquire-removes-painted-output.html b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/delayed-acquire-removes-painted-output.html similarity index 89% rename from third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/delayed-acquire-removes-painted-output.html rename to third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/delayed-acquire-removes-painted-output.html index 0a89b9a..d0de9fd 100644 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/delayed-acquire-removes-painted-output.html +++ b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/delayed-acquire-removes-painted-output.html
@@ -29,6 +29,8 @@ height: 30px; background: red; } +.locked { + render-subtree: invisible skip-activation; </style> <div id="container"> @@ -41,7 +43,7 @@ <script> function runTest() { const container = document.getElementById("container"); - setInvisible(container).then(takeScreenshot); + addClassAndProcessLifecycle(container, "locked").then(takeScreenshot); } window.onload = () => {
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/inner-text.html b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/inner-text.html similarity index 86% rename from third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/inner-text.html rename to third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/inner-text.html index 5b97b35..d806e6f 100644 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/inner-text.html +++ b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/inner-text.html
@@ -10,7 +10,7 @@ <script src="resources/utils.js"></script> This text should be visible. -<div id="container"> +<div id="container" style="render-subtree: invisible skip-activation"> This text should not be visible. <div id="inner"> This text is also not visible. @@ -19,9 +19,6 @@ <script> promise_test(async () => { - const container = document.getElementById("container"); - await setInvisible(container); - assert_equals(document.body.innerText, "This text should be visible."); assert_equals(document.getElementById("inner").innerText, ""); }, "innerText on locked element.");
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/intersection-observer.html b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/intersection-observer.html similarity index 96% rename from third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/intersection-observer.html rename to third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/intersection-observer.html index c9e34cf..c56bd63 100644 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/intersection-observer.html +++ b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/intersection-observer.html
@@ -17,6 +17,9 @@ #spacer { height: 3000px; } +.locked { + render-subtree: invisible skip-activation; +} </style> <div id="target1"> @@ -79,7 +82,7 @@ // Lock target3. async function enqueueStep2() { - await setInvisible(target3); + await addClassAndProcessLifecycle(target3, "locked"); requestAnimationFrame(() => { requestAnimationFrame(() => { runStep2(); @@ -154,7 +157,7 @@ // Unlock target3. async function enqueueStep5() { - await setVisible(target3); + await removeClassAndProcessLifecycle(target3, "locked"); requestAnimationFrame(() => { requestAnimationFrame(() => { runStep5();
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/lock-crossorigin-iframe-and-change-size.sub.https.html b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/lock-crossorigin-iframe-and-change-size.sub.https.html similarity index 72% rename from third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/lock-crossorigin-iframe-and-change-size.sub.https.html rename to third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/lock-crossorigin-iframe-and-change-size.sub.https.html index 3903e8c..b8f217b 100644 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/lock-crossorigin-iframe-and-change-size.sub.https.html +++ b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/lock-crossorigin-iframe-and-change-size.sub.https.html
@@ -8,11 +8,16 @@ <script src="/common/reftest-wait.js"></script> <script src="resources/utils.js"></script> -<iframe id="frame" width=200 height=200 src='https://{{domains[www]}}:{{ports[https][0]}}/wpt_internal/display-lock/paint/resources/frame.html'></iframe> +<style> +.locked { + render-subtree: invisible skip-activation; +} +</style> +<iframe id="frame" width=200 height=200 src='https://{{domains[www]}}:{{ports[https][0]}}/wpt_internal/display-lock/css-render-subtree/paint/resources/frame.html'></iframe> <script> async function runTest() { - await setInvisible(document.getElementById("frame")); + await addClassAndProcessLifecycle(document.getElementById("frame"), "locked"); document.getElementById("frame").height = 300; requestAnimationFrame(takeScreenshot); }
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/lock-grid-with-positioned-child.html b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/lock-grid-with-positioned-child.html similarity index 88% rename from third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/lock-grid-with-positioned-child.html rename to third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/lock-grid-with-positioned-child.html index 17456cc6..75c39df 100644 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/lock-grid-with-positioned-child.html +++ b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/lock-grid-with-positioned-child.html
@@ -15,6 +15,9 @@ #positioned { position: absolute; } +.locked { + render-subtree: invisible skip-activation; +} </style> <div id=log></div> @@ -31,7 +34,7 @@ function runTest() { const container = document.getElementById("grid"); - setInvisible(container).then(() => { + addClassAndProcessLifecycle(container, "locked").then(() => { finishTest("PASS"); }); }
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/lock-iframe-and-change-size-ref.html b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/lock-iframe-and-change-size-ref.html similarity index 100% rename from third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/lock-iframe-and-change-size-ref.html rename to third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/lock-iframe-and-change-size-ref.html
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/lock-iframe-and-change-size.html b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/lock-iframe-and-change-size.html similarity index 81% rename from third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/lock-iframe-and-change-size.html rename to third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/lock-iframe-and-change-size.html index c0541484..8a6df67 100644 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/lock-iframe-and-change-size.html +++ b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/lock-iframe-and-change-size.html
@@ -8,11 +8,16 @@ <script src="/common/reftest-wait.js"></script> <script src="resources/utils.js"></script> +<style> +.locked { + render-subtree: invisible skip-activation; +} +</style> <iframe id=frame width=200 height=200 srcdoc='Lorem ipsum'></iframe> <script> async function runTest() { - await setInvisible(document.getElementById("frame")); + await addClassAndProcessLifecycle(document.getElementById("frame"), "locked"); document.getElementById("frame").height = 300; requestAnimationFrame(takeScreenshot); }
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/locked-element-shifted-down-ref.html b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/locked-element-shifted-down-ref.html similarity index 100% rename from third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/locked-element-shifted-down-ref.html rename to third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/locked-element-shifted-down-ref.html
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/locked-element-shifted-down.html b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/locked-element-shifted-down.html similarity index 88% rename from third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/locked-element-shifted-down.html rename to third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/locked-element-shifted-down.html index 98c717a6..938ea55 100644 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/locked-element-shifted-down.html +++ b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/locked-element-shifted-down.html
@@ -12,6 +12,7 @@ #container { width: 150px; height: 150px; + render-subtree: invisible skip-activation; } #spacer { width: 100px; @@ -39,10 +40,8 @@ function runTest() { const container = document.getElementById("container"); - setInvisible(container).then(() => { - document.getElementById("spacer").style.height = "100px"; - finishTest("PASS"); - }); + document.getElementById("spacer").style.height = "100px"; + finishTest("PASS"); } window.onload = runTest;
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/locked-shadow-descendant.html b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/locked-shadow-descendant.html similarity index 91% rename from third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/locked-shadow-descendant.html rename to third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/locked-shadow-descendant.html index 8ac91c1..fab520dd 100644 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/locked-shadow-descendant.html +++ b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/locked-shadow-descendant.html
@@ -18,6 +18,7 @@ container.innerHTML = "<slot></slot>"; let shadowRoot = host.attachShadow({ mode: "open" }); +shadowRoot.innerHTML = "<style>.locked { render-subtree: invisible skip-activation; }</style>"; shadowRoot.appendChild(container); async_test((t) => { @@ -25,8 +26,7 @@ t.step(() => assert_not_equals(document.activeElement, slotted)); t.step(() => assert_not_equals(shadowRoot.activeElement, slotted)); - const acquire_promise = setInvisible(container); - await acquire_promise; + await addClassAndProcessLifecycle(container, "locked"); t.step(() => assert_not_equals(document.activeElement, slotted)); t.step(() => assert_not_equals(shadowRoot.activeElement, slotted));
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/locked-style.html b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/locked-style.html similarity index 89% rename from third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/locked-style.html rename to third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/locked-style.html index 6636e03a..fcac7c0 100644 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/locked-style.html +++ b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/locked-style.html
@@ -6,6 +6,11 @@ <link rel="help" href="https://github.com/WICG/display-locking"> <script src="resources/utils.js"></script> +<style> +.locked { + render-subtree: invisible skip-activation; +} +</style> <div id="container"> <div id="child"> <div id="grandchild"></div> @@ -19,7 +24,7 @@ async_test((t) => { async function runTest() { let container = document.getElementById("container"); - await setInvisible(container); + await addClassAndProcessLifecycle(container, "locked"); container.style = "color: blue;"; t.step(() => assert_equals(getComputedStyle(container).color, "rgb(0, 0, 255)", "container color changed to blue")); @@ -34,8 +39,8 @@ child.style = ""; // Commit container, lock child. - await setVisible(container); - await setInvisible(child); + await removeClassAndProcessLifecycle(container, "locked"); + await addClassAndProcessLifecycle(child, "locked"); // Update style outside of the locked subtree. container.style = "color: red;";
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/measure-forced-layout.html b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/measure-forced-layout.html similarity index 92% rename from third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/measure-forced-layout.html rename to third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/measure-forced-layout.html index a28c411..6c501f4 100644 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/measure-forced-layout.html +++ b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/measure-forced-layout.html
@@ -9,6 +9,10 @@ <style> #container { background: lightgreen; + contain: layout; +} +.locked { + render-subtree: invisible skip-activation; } #sizer { width: 100px; @@ -78,13 +82,14 @@ async function runTest() { const container = document.createElement("div"); container.id = "container"; - await setInvisible(container); document.getElementById("parent").appendChild(container); + await addClassAndProcessLifecycle(container, "locked"); + construct(container); measureForced(); - setVisible(container).then(() => { + removeClassAndProcessLifecycle(container, "locked").then(() => { measureInCommit(); t.done(); });
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/measure-forced-svg-text.html b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/measure-forced-svg-text.html similarity index 89% rename from third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/measure-forced-svg-text.html rename to third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/measure-forced-svg-text.html index b1d9cdf..660568c 100644 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/measure-forced-svg-text.html +++ b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/measure-forced-svg-text.html
@@ -12,6 +12,9 @@ height: 100px; background: lightgreen; } +.locked { + render-subtree: invisible skip-activation; +} </style> <div id="parent"></div> @@ -47,13 +50,14 @@ async function runTest() { const container = document.createElement("div"); container.id = "container"; - await setInvisible(container); document.getElementById("parent").appendChild(container); + await addClassAndProcessLifecycle(container, "locked"); + construct(container); measureForced(); - setVisible(container).then(() => { + removeClassAndProcessLifecycle(container, "locked").then(() => { measureInCommit(); t.done(); });
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/paint/hit-testing-001.html b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/paint/hit-testing-001.html similarity index 91% rename from third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/paint/hit-testing-001.html rename to third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/paint/hit-testing-001.html index b56b4d8..c2910c4 100644 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/paint/hit-testing-001.html +++ b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/paint/hit-testing-001.html
@@ -26,6 +26,9 @@ height: 50px; background lightgreen; } +.locked { + render-subtree: invisible skip-activation; +} </style> <body id="body"> @@ -36,7 +39,7 @@ async_test((t) => { async function runTest() { const container = document.getElementById("outer"); - await setInvisible(container); + await addClassAndProcessLifecycle(container, "locked"); let target = document.elementFromPoint(50, 50); t.step(() => assert_equals(target.id, "outer", "center hits outer")); target = document.elementFromPoint(10, 50);
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/paint/hit-testing-002.html b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/paint/hit-testing-002.html similarity index 91% rename from third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/paint/hit-testing-002.html rename to third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/paint/hit-testing-002.html index c3f2cbf0..16122e3 100644 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/paint/hit-testing-002.html +++ b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/paint/hit-testing-002.html
@@ -27,6 +27,9 @@ height: 50px; background lightgreen; } +.locked { + render-subtree: invisible skip-activation; +} </style> <body id="body"> @@ -37,7 +40,7 @@ async_test((t) => { async function runTest() { const container = document.getElementById("outer"); - await setInvisible(container); + await addClassAndProcessLifecycle(container, "locked"); let target = document.elementFromPoint(50, 50); t.step(() => assert_equals(target.id, "outer", "center hits outer")); target = document.elementFromPoint(10, 50);
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/paint/hit-testing-003.html b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/paint/hit-testing-003.html similarity index 91% rename from third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/paint/hit-testing-003.html rename to third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/paint/hit-testing-003.html index 8e09f229..9dcf83f 100644 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/paint/hit-testing-003.html +++ b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/paint/hit-testing-003.html
@@ -27,6 +27,9 @@ height: 50px; background lightgreen; } +.locked { + render-subtree: invisible skip-activation; +} </style> <body id="body"> @@ -37,7 +40,7 @@ async_test((t) => { async function runTest() { const container = document.getElementById("outer"); - await setInvisible(container); + await addClassAndProcessLifecycle(container, "locked"); let target = document.elementFromPoint(50, 50); t.step(() => assert_equals(target.id, "outer", "center hits outer")); target = document.elementFromPoint(10, 50);
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/paint/locked-crossorigin-iframe-doesnt-paint-contents-ref.html b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/paint/locked-crossorigin-iframe-doesnt-paint-contents-ref.html similarity index 100% rename from third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/paint/locked-crossorigin-iframe-doesnt-paint-contents-ref.html rename to third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/paint/locked-crossorigin-iframe-doesnt-paint-contents-ref.html
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/paint/locked-crossorigin-iframe-doesnt-paint-contents.sub.https.html b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/paint/locked-crossorigin-iframe-doesnt-paint-contents.sub.https.html similarity index 88% rename from third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/paint/locked-crossorigin-iframe-doesnt-paint-contents.sub.https.html rename to third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/paint/locked-crossorigin-iframe-doesnt-paint-contents.sub.https.html index 5137fc7..55d92a9 100644 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/paint/locked-crossorigin-iframe-doesnt-paint-contents.sub.https.html +++ b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/paint/locked-crossorigin-iframe-doesnt-paint-contents.sub.https.html
@@ -12,6 +12,9 @@ div { background: blue; } +.locked { + render-subtree: invisible skip-activation; +} </style> <div>lorem ipsum</div> @@ -21,7 +24,7 @@ <script> async function runTest() { const container = document.getElementById("frame"); - await setInvisible(container); + await addClassAndProcessLifecycle(container, "locked"); takeScreenshot(); }
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/paint/locked-div-with-inline-children-doesnt-paint.html b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/paint/locked-div-with-inline-children-doesnt-paint.html similarity index 85% rename from third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/paint/locked-div-with-inline-children-doesnt-paint.html rename to third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/paint/locked-div-with-inline-children-doesnt-paint.html index f122d9b..3aafb413 100644 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/paint/locked-div-with-inline-children-doesnt-paint.html +++ b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/paint/locked-div-with-inline-children-doesnt-paint.html
@@ -20,6 +20,9 @@ width: 10px; height: 10px; } +.locked { + render-subtree: invisible skip-activation; +} </style> The test passes if there's nothing below. @@ -33,8 +36,8 @@ const target1 = document.getElementById("target1"); const target2 = document.getElementById("target2"); let promises = []; - promises.push(setInvisible(target1)); - promises.push(setInvisible(target2)); + promises.push(addClassAndProcessLifecycle(target1, "locked")); + promises.push(addClassAndProcessLifecycle(target2, "locked")); await Promise.all(promises); takeScreenshot(); }
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/paint/locked-iframe-doesnt-paint-contents-ref.html b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/paint/locked-iframe-doesnt-paint-contents-ref.html similarity index 100% rename from third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/paint/locked-iframe-doesnt-paint-contents-ref.html rename to third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/paint/locked-iframe-doesnt-paint-contents-ref.html
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/paint/locked-iframe-doesnt-paint-contents.html b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/paint/locked-iframe-doesnt-paint-contents.html similarity index 88% rename from third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/paint/locked-iframe-doesnt-paint-contents.html rename to third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/paint/locked-iframe-doesnt-paint-contents.html index 96648f1..64f15034 100644 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/paint/locked-iframe-doesnt-paint-contents.html +++ b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/paint/locked-iframe-doesnt-paint-contents.html
@@ -12,6 +12,9 @@ div { background: blue; } +.locked { + render-subtree: invisible skip-activation; +} </style> <div>lorem ipsum</div> @@ -28,7 +31,7 @@ <script> async function runTest() { const container = document.getElementById("frame"); - await setInvisible(container); + await addClassAndProcessLifecycle(container, "locked"); takeScreenshot(); }
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/paint/locked-image-doesnt-paint-contents-ref.html b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/paint/locked-image-doesnt-paint-contents-ref.html similarity index 100% rename from third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/paint/locked-image-doesnt-paint-contents-ref.html rename to third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/paint/locked-image-doesnt-paint-contents-ref.html
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/paint/locked-image-doesnt-paint-contents.html b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/paint/locked-image-doesnt-paint-contents.html similarity index 80% rename from third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/paint/locked-image-doesnt-paint-contents.html rename to third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/paint/locked-image-doesnt-paint-contents.html index 522fa9b..99e0e67 100644 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/paint/locked-image-doesnt-paint-contents.html +++ b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/paint/locked-image-doesnt-paint-contents.html
@@ -18,6 +18,9 @@ background: lightblue; border: 1px solid black; } +.locked { + render-subtree: invisible skip-activation; +} </style> <div>lorem ipsum</div> @@ -28,8 +31,8 @@ <script> async function runTest() { const promises = []; - promises.push(setInvisible(document.getElementById("img1"))); - promises.push(setInvisible(document.getElementById("img2"))); + promises.push(addClassAndProcessLifecycle(document.getElementById("img1"), "locked")); + promises.push(addClassAndProcessLifecycle(document.getElementById("img2"), "locked")); await Promise.all(promises); takeScreenshot(); }
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/paint/locked-svg-doesnt-paint-contents-ref.html b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/paint/locked-svg-doesnt-paint-contents-ref.html similarity index 100% rename from third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/paint/locked-svg-doesnt-paint-contents-ref.html rename to third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/paint/locked-svg-doesnt-paint-contents-ref.html
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/paint/locked-svg-doesnt-paint-contents.html b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/paint/locked-svg-doesnt-paint-contents.html similarity index 92% rename from third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/paint/locked-svg-doesnt-paint-contents.html rename to third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/paint/locked-svg-doesnt-paint-contents.html index 9935681..35fabae 100644 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/paint/locked-svg-doesnt-paint-contents.html +++ b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/paint/locked-svg-doesnt-paint-contents.html
@@ -16,6 +16,9 @@ border: 1px solid black; background: lightblue; } +.locked { + render-subtree: invisible skip-activation; +} </style> <div>lorem ipsum</div> @@ -36,7 +39,7 @@ <script> async function runTest() { const container = document.getElementById("svg"); - await setInvisible(container); + await addClassAndProcessLifecycle(container, "locked"); takeScreenshot(); }
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/paint/non-composited-lock-composited-descendant-001.html b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/paint/non-composited-lock-composited-descendant-001.html similarity index 89% rename from third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/paint/non-composited-lock-composited-descendant-001.html rename to third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/paint/non-composited-lock-composited-descendant-001.html index af08eb93..4fd42be 100644 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/paint/non-composited-lock-composited-descendant-001.html +++ b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/paint/non-composited-lock-composited-descendant-001.html
@@ -21,6 +21,9 @@ background: lightgreen; color: green; } +.locked { + render-subtree: invisible skip-activation; +} </style> The test passes if there's nothing below. @@ -34,7 +37,7 @@ <script> async function runTest() { const container = document.getElementById("outer"); - await setInvisible(container); + await addClassAndProcessLifecycle(container, "locked"); takeScreenshot(); }
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/paint/non-composited-lock-composited-descendant-002.html b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/paint/non-composited-lock-composited-descendant-002.html similarity index 86% rename from third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/paint/non-composited-lock-composited-descendant-002.html rename to third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/paint/non-composited-lock-composited-descendant-002.html index 406b125..db778eb 100644 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/paint/non-composited-lock-composited-descendant-002.html +++ b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/paint/non-composited-lock-composited-descendant-002.html
@@ -22,6 +22,9 @@ background: lightgreen; color: green; } +.locked { + render-subtree: invisible skip-activation; +} </style> <div id="outer"> @@ -34,13 +37,13 @@ <script> async function commitAndFinish() { const container = document.getElementById("outer"); - await setVisible(container); + await removeClassAndProcessLifecycle(container, "locked"); takeScreenshot(); } async function runTest() { const container = document.getElementById("outer"); - await setInvisible(container); + await addClassAndProcessLifecycle(container, "locked"); requestAnimationFrame(commitAndFinish); }
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/paint/non-composited-lock-composited-descendant-ref.html b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/paint/non-composited-lock-composited-descendant-ref.html similarity index 100% rename from third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/paint/non-composited-lock-composited-descendant-ref.html rename to third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/paint/non-composited-lock-composited-descendant-ref.html
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/paint/pass-if-nothing-below-ref.html b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/paint/pass-if-nothing-below-ref.html similarity index 100% rename from third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/paint/pass-if-nothing-below-ref.html rename to third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/paint/pass-if-nothing-below-ref.html
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/paint/resources/circles.svg b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/paint/resources/circles.svg similarity index 100% rename from third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/paint/resources/circles.svg rename to third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/paint/resources/circles.svg
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/paint/resources/dice.png b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/paint/resources/dice.png similarity index 100% rename from third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/paint/resources/dice.png rename to third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/paint/resources/dice.png Binary files differ
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/paint/resources/frame.html b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/paint/resources/frame.html similarity index 100% rename from third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/paint/resources/frame.html rename to third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/paint/resources/frame.html
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/pass-container-with-child-ref.html b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/pass-container-with-child-ref.html similarity index 100% rename from third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/pass-container-with-child-ref.html rename to third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/pass-container-with-child-ref.html
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/pass-ref.html b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/pass-ref.html similarity index 100% rename from third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/pass-ref.html rename to third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/pass-ref.html
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/positioned-in-flex-in-locked.html b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/positioned-in-flex-in-locked.html similarity index 85% rename from third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/positioned-in-flex-in-locked.html rename to third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/positioned-in-flex-in-locked.html index cb7dcb64..85c2d7a 100644 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/positioned-in-flex-in-locked.html +++ b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/positioned-in-flex-in-locked.html
@@ -14,6 +14,9 @@ height: 100px; background: red; } +.locked { + render-subtree: invisible skip-activation; +} .contained { position: relative; } .flex { display: flex; } .abspos { position: absolute; } @@ -33,8 +36,8 @@ takeScreenshot(); } -function runTest() { - setInvisible(document.getElementById("target")); +async function runTest() { + await addClassAndProcessLifecycle(document.getElementById("target"), "locked"); finishTest("PASS"); }
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/pseudo-elements-visible-ref.html b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/pseudo-elements-visible-ref.html similarity index 100% rename from third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/pseudo-elements-visible-ref.html rename to third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/pseudo-elements-visible-ref.html
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/pseudo-elements-visible.html b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/pseudo-elements-visible.html similarity index 81% rename from third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/pseudo-elements-visible.html rename to third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/pseudo-elements-visible.html index 441c4b4..0d98218 100644 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/pseudo-elements-visible.html +++ b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/pseudo-elements-visible.html
@@ -17,6 +17,9 @@ content: "b"; color: green; } + .locked { + render-subtree: invisible skip-activation; + } </style> <div id="log"></div> <div id="container" style="display:none;"></div> @@ -33,7 +36,9 @@ // Trigger reattachment in #container and the ::after pseudo element. container.classList.add("hasAfter"); container.style = ""; - setInvisible(container).then(() => { setVisible(container).then(() => {finishTest("PASS");}); }); + addClassAndProcessLifecycle(container, "locked").then(() => { + removeClassAndProcessLifecycle(container, "locked").then(() => {finishTest("PASS");}); + }); } window.onload = runTest;
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/pseudo-elements.html b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/pseudo-elements.html similarity index 86% rename from third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/pseudo-elements.html rename to third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/pseudo-elements.html index 5f0962d41..8675d236 100644 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/pseudo-elements.html +++ b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/pseudo-elements.html
@@ -17,6 +17,9 @@ content: "b"; color: green; } + .locked { + render-subtree: invisible skip-activation; + } </style> <div id="log"></div> <div id="container" style="display:none;"></div> @@ -33,7 +36,7 @@ // Trigger reattachment in #container and the ::after pseudo element. container.classList.add("hasAfter"); container.style = ""; - setInvisible(container).then(() => { finishTest("PASS");} ); + addClassAndProcessLifecycle(container, "locked").then(() => { finishTest("PASS");} ); } window.onload = runTest;
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/render-subtree-activated-cleared-by-script-no-style-change.html b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/render-subtree-activated-cleared-by-script-no-style-change.html deleted file mode 100644 index 0911c00..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/render-subtree-activated-cleared-by-script-no-style-change.html +++ /dev/null
@@ -1,51 +0,0 @@ -<!doctype HTML> -<html class="reftest-wait"> -<meta charset="utf8"> -<title>render-subtree activates, script clears the activated state</title> -<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> -<link rel="match" href="pass-green-square-ref.html"> -<meta name="assert" content="resetSubtreeRendered causes the element to relock, even without any other style invalidations"> -<script src="/common/reftest-wait.js"></script> - -<style> -.locked { - render-subtree: invisible skip-viewport-activation; -} -#target { - width: 100px; - height: 100px; - background: green; -} -</style> - -Test passes if there is a green square below. -<div id=target class=locked> - This text should not be visible, and neither should the div below. - <div style="width: 100px; height: 100px; background: red"></div> -</div> - -<div></div> - -<script> - -function runTest() { - document.getElementById("target").scrollIntoView(); - requestAnimationFrame(() => { - document.getElementById("target").resetSubtreeRendered(); - requestAnimationFrame(takeScreenshot); - }); -} - -window.onload = requestAnimationFrame(() => { - requestAnimationFrame(() => { - requestAnimationFrame(() => { - runTest(); - }); - }); -}); - -</script> -</html> - -
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/render-subtree-activated-cleared-by-script.html b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/render-subtree-activated-cleared-by-script.html deleted file mode 100644 index 09050482..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/render-subtree-activated-cleared-by-script.html +++ /dev/null
@@ -1,58 +0,0 @@ -<!doctype HTML> -<html class="reftest-wait"> -<meta charset="utf8"> -<title>render-subtree activates, then activation is cleared by script.</title> -<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> -<link rel="match" href="pass-green-square-ref.html"> -<meta name="assert" content="resetSubtreeRendered clears the activated state"> -<script src="/common/reftest-wait.js"></script> - -<style> -.locked { - render-subtree: invisible; -} -.locked-no-activation { - render-subtree: invisible skip-activation; -} -#target { - width: 100px; - height: 100px; - background: green; -} -</style> - -Test passes if there is a green square below. -<div id=target> - This text should not be visible, and neither should the div below. - <div style="width: 100px; height: 100px; background: red"></div> -</div> - -<div></div> - -<script> - -function runTest() { - document.getElementById("target").classList.add("locked"); - requestAnimationFrame(() => { - // Replace locked with locked-no-activation, which shouldn't activate. - // Note we clear the activated flag, so this should actually lock the element. - document.getElementById("target").classList.remove("locked"); - document.getElementById("target").resetSubtreeRendered(); - document.getElementById("target").classList.add("locked-no-activation"); - requestAnimationFrame(takeScreenshot); - }); -} - -window.onload = requestAnimationFrame(() => { - requestAnimationFrame(() => { - requestAnimationFrame(() => { - runTest(); - }); - }); -}); - -</script> -</html> - -
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/render-subtree-adds-containment.html b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/render-subtree-adds-containment.html new file mode 100644 index 0000000..3bd9735 --- /dev/null +++ b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/render-subtree-adds-containment.html
@@ -0,0 +1,63 @@ +<!doctype HTML> +<html> +<meta charset="utf8"> +<title>Display Locking: rendersubtree adds containment</title> +<link rel="author" title="Rakina Zata Amni" href="mailto:rakina@chromium.org"> +<link rel="help" href="https://github.com/WICG/display-locking"> + +<style> +.activatable { + render-subtree: invisible; +} +.nonactivatable { + render-subtree: invisible skip-activation; +} +</style> +<div id="container"></div> + +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="../resources/utils.js"></script> + +<script> +function setUp() { + container.removeAttribute("rendersubtree"); + container.style = ""; + container.classList = ""; + assert_equals(getComputedStyle(container).contain, "none"); +} + +test(() => { + setUp(); + container.classList.add("nonactivatable"); + assert_equals(getComputedStyle(container).contain, "size layout style"); +}, "render-subtree:'invisible skip-activation' adds contain: size layout style;"); + +test(() => { + setUp(); + container.classList.add("activatable"); + assert_equals(getComputedStyle(container).contain, "size layout style"); +}, "render-subtree:'invisible' adds contain: size layout style;"); + +test(() => { + setUp(); + container.classList.add("activatable"); + container.style = "contain: style;"; + assert_equals(getComputedStyle(container).contain, "size layout style"); + container.style = "contain: style layout;"; + assert_equals(getComputedStyle(container).contain, "size layout style"); + container.style = ""; + assert_equals(getComputedStyle(container).contain, "size layout style"); +}, "render-subtree:invisible adds contain: size layout style, can't be overridden"); + +test(() => { + setUp(); + container.classList.add("activatable"); + container.style = "contain: paint;"; + assert_equals(getComputedStyle(container).contain, "size layout style paint"); + container.style = "contain: strict;"; + assert_equals(getComputedStyle(container).contain, "size layout style paint"); + container.style = "contain: content;"; + assert_equals(getComputedStyle(container).contain, "size layout style paint"); +}, "rendersubtree adds contain: size layout style and keeps paint if it exists"); +</script>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/resize-observer-skipped.html b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/resize-observer-skipped.html similarity index 84% rename from third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/resize-observer-skipped.html rename to third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/resize-observer-skipped.html index e44d7f3..d305b03b 100644 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/resize-observer-skipped.html +++ b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/resize-observer-skipped.html
@@ -5,6 +5,11 @@ <link rel="author" title="Chris Harrelson" href="mailto:chrishtr@chromium.org"> <link rel="help" href="https://github.com/WICG/display-locking"> +<style> +.locked { + render-subtree: invisible skip-activation; +} +</style> <div id="container"> <div id="resize" style="width: 50px; height: 50px"> </div> @@ -34,7 +39,7 @@ didCallback = false; const container = document.getElementById("container"); - await setInvisible(container); + await addClassAndProcessLifecycle(container, "locked"); // Change the size of #resize. This should cause a resize observation, but // only when the element becomes unlocked. @@ -45,16 +50,15 @@ async function step3() { assert_equals(false, didCallback, - 'ResizeObsever should not run during updateRendering while also invisible'); - - await container.updateRendering(); + 'ResizeObsever should not run during while invisible'); requestAnimationFrame(step4); } async function step4() { assert_equals(false, didCallback, 'ResizeObsever should not run while invisible'); - await setVisible(container); + const container = document.getElementById("container"); + await removeClassAndProcessLifecycle(container, "locked"); requestAnimationFrame(step5); }
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/resources/utils.js b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/resources/utils.js new file mode 100644 index 0000000..85f49e9 --- /dev/null +++ b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/resources/utils.js
@@ -0,0 +1,21 @@ +function addClassAndProcessLifecycle(element, value) { + element.classList.add(value); + return new Promise((resolve, reject) => { + // Returns a promise that resolves when the rendering changes take effect. + // TODO(rakina): Change to requestPostAnimationFrame when available? + requestAnimationFrame(() => { + requestAnimationFrame(resolve); + }); + }); +} + +function removeClassAndProcessLifecycle(element, value) { + element.classList.remove(value); + return new Promise((resolve, reject) => { + // Returns a promise that resolves when the rendering changes take effect. + // TODO(rakina): Change to requestPostAnimationFrame when available? + requestAnimationFrame(() => { + requestAnimationFrame(resolve); + }); + }); +}
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/scroll-to-child-and-adopt.html b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/scroll-to-child-and-adopt.html similarity index 87% rename from third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/scroll-to-child-and-adopt.html rename to third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/scroll-to-child-and-adopt.html index 3ffff67..4f4d8a8 100644 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/scroll-to-child-and-adopt.html +++ b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/scroll-to-child-and-adopt.html
@@ -8,6 +8,11 @@ <script src="/common/reftest-wait.js"></script> <script src="resources/utils.js"></script> +<style> +.locked { + render-subtree: invisible skip-activation; +} +</style> <div id=log></div> <div id=container> <div id=child></div> @@ -27,7 +32,7 @@ } async function runTest() { - await setInvisible(container); + await addClassAndProcessLifecycle(container, "locked"); requestAnimationFrame(moveChild); }
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/selection-ref.html b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/selection-ref.html similarity index 100% rename from third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/selection-ref.html rename to third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/selection-ref.html
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/selection-shadow-ref.html b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/selection-shadow-ref.html similarity index 100% rename from third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/selection-shadow-ref.html rename to third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/selection-shadow-ref.html
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/slotted-moved-after-lock.html b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/slotted-moved-after-lock.html similarity index 81% rename from third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/slotted-moved-after-lock.html rename to third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/slotted-moved-after-lock.html index 42e0809..16071b7 100644 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/slotted-moved-after-lock.html +++ b/third_party/blink/web_tests/wpt_internal/display-lock/css-render-subtree/slotted-moved-after-lock.html
@@ -15,10 +15,11 @@ let container = document.createElement("div"); container.innerHTML = "<slot></slot>"; let shadowRoot = host.attachShadow({ mode: "open" }); + shadowRoot.innerHTML = "<style>.locked { render-subtree: invisible skip-activation }</style>"; shadowRoot.appendChild(container); - t.step(() => { - setInvisible(container); + t.step(async () => { + await addClassAndProcessLifecycle(container, "locked"); assert_equals(slotted.offsetTop, 0); container.innerHTML = "<div style='height: 20px;'></div><slot></slot>";
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/acquire-clone.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/acquire-clone.html deleted file mode 100644 index ccb8060..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/acquire-clone.html +++ /dev/null
@@ -1,49 +0,0 @@ -<!doctype HTML> -<html> -<meta charset="utf8"> -<title>Display Locking: acquire on a clone</title> -<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> -<script src="resources/utils.js"></script> -<style> -#container { - width: 150px; - height: 150px; - background: lightblue; -} -#child { - width: 50px; - height: 50px; - background: lightgreen; -} -</style> - -<script src="/resources/testharness.js"></script> -<script src="/resources/testharnessreport.js"></script> - -<script> -async_test((t) => { - async function runTest() { - const container = document.createElement("div"); - // Lock the container, put a child into it and put it into the document. - await setInvisible(container).then(() => { - const child = document.createElement("div"); - child.id = "child"; - container.appendChild(child); - - container.id = "container"; - document.body.appendChild(container); - }); - // Make a copy of the container and put it in the document as well. - const cloned = container.cloneNode(true); - document.body.appendChild(cloned); - - t.step(() => { - assert_equals(container.renderSubtree, cloned.renderSubtree); - t.done(); - }); - } - window.onload = runTest; -}); -</script> -</html>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/acquire-immediate-commit-resolves.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/acquire-immediate-commit-resolves.html deleted file mode 100644 index a2747980..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/acquire-immediate-commit-resolves.html +++ /dev/null
@@ -1,49 +0,0 @@ -<!doctype HTML> -<html class="reftest-wait"> -<meta charset="utf8"> -<title>Display Locking: acquire, immediate commit</title> -<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> -<link rel="match" href="pass-container-with-child-ref.html"> -<script src="/common/reftest-wait.js"></script> -<script src="resources/utils.js"></script> - -<style> -#container { - width: 150px; - height: 150px; - background: lightblue; -} -#child { - width: 50px; - height: 50px; - background: lightgreen; -} -</style> - -<div id="log"></div> -<div id="container"></div> - -<script> -function finishTest(status_string) { - if (document.getElementById("log").innerHTML === "") - document.getElementById("log").innerHTML = status_string; - takeScreenshot(); -} - -function runTest() { - const container = document.getElementById("container"); - setInvisible(container); - - const child = document.createElement("div"); - child.id = "child"; - container.appendChild(child); - - setVisible(container).then( - () => { finishTest("PASS"); }, - (e) => { finishTest("FAIL " + e.message); }); -} - -window.onload = runTest; -</script> -</html>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/acquire-in-iframe.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/acquire-in-iframe.html deleted file mode 100644 index a6507310..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/acquire-in-iframe.html +++ /dev/null
@@ -1,38 +0,0 @@ -<!doctype HTML> -<html class="reftest-wait"> -<meta charset="utf8"> -<title>Display Locking: acquire in iframe</title> -<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> -<link rel="match" href="acquire-in-iframe-ref.html"> -<script src="/common/reftest-wait.js"></script> -<script src="resources/utils.js"></script> - -<div id="log"></div> -<iframe id="frame" srcdoc=' - <style> - #container { - width: 100px; - height: 100px; - } - </style> - <div id="container">Lorem</div> -'></iframe> - -<script> -function finishTest(status_string) { - if (document.getElementById("log").innerHTML === "") - document.getElementById("log").innerHTML = status_string; - takeScreenshot(); -} - -function runTest() { - const container = document.getElementById("frame").contentDocument.getElementById("container"); - setInvisible(container).then( - () => { finishTest("PASS"); }, - (e) => { finishTest("FAIL " + e.message); }); -} - -window.onload = runTest; -</script> -</html>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/acquire-infinite-timeout-no-commit.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/acquire-infinite-timeout-no-commit.html deleted file mode 100644 index ed7659bf..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/acquire-infinite-timeout-no-commit.html +++ /dev/null
@@ -1,40 +0,0 @@ -<!doctype HTML> -<html class="reftest-wait"> -<meta charset="utf8"> -<title>Display Locking: acquire infinite timeout</title> -<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> -<link rel="match" href="pass-ref.html"> -<script src="/common/reftest-wait.js"></script> -<script src="resources/utils.js"></script> - -<style> -#container { - width: 100px; - height: 100px; -} -</style> - -<div id="log"></div> - -<script> -function finishTest(status_string) { - if (document.getElementById("log").innerHTML === "") - document.getElementById("log").innerHTML = status_string; - takeScreenshot(); -} - -function runTest() { - const container = document.createElement("div"); - container.id = "container"; - setInvisible(container).then(() => { - document.body.appendChild(container); - setTimeout(() => { finishTest("PASS"); }, 100); - }); -} - -window.onload = runTest; -</script> - - -</html>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/acquire-on-display-contents.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/acquire-on-display-contents.html deleted file mode 100644 index c1c9ee1..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/acquire-on-display-contents.html +++ /dev/null
@@ -1,26 +0,0 @@ -<!doctype HTML> -<html> -<meta charset="utf8"> -<title>Display Locking: acquire, display:contents</title> -<link rel="author" title="Rakina Zata Amni" href="mailto:rakina@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> - -<script src="/resources/testharness.js"></script> -<script src="/resources/testharnessreport.js"></script> -<script src="resources/utils.js"></script> - -<body></body> -<script> -// TODO(vmpstr): Add tests for display:contents, slot, which cannot be locked. - -async_test(async (t) => { - let slot = document.createElement("slot"); - slot.style = "display: block;"; - document.body.appendChild(slot); - await setInvisible(slot).then(() => { - t.step(() => assert_equals(slot.renderSubtree, INVISIBLE_NOT_ACTIVATABLE)); - t.done(); - }); -}, "<slot> with changed display type can be locked"); -</script> -</html>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/acquire-update-commit.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/acquire-update-commit.html deleted file mode 100644 index bb1c597..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/acquire-update-commit.html +++ /dev/null
@@ -1,53 +0,0 @@ -<!doctype HTML> -<html class="reftest-wait"> -<meta charset="utf8"> -<title>Display Locking: acquire, update, commit</title> -<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> -<link rel="match" href="pass-container-with-child-ref.html"> -<script src="/common/reftest-wait.js"></script> -<script src="resources/utils.js"></script> - -<style> -#container { - width: 150px; - height: 150px; - background: lightblue; -} -#child { - width: 50px; - height: 50px; - background: lightgreen; -} -</style> - -<div id="log"></div> - -<script> -function finishTest(status_string) { - if (document.getElementById("log").innerHTML === "") - document.getElementById("log").innerHTML = status_string; - takeScreenshot(); -} - -function runTest() { - const container = document.createElement("div"); - setInvisible(container).then(() => { - const child = document.createElement("div"); - child.id = "child"; - container.appendChild(child); - - container.id = "container"; - document.body.appendChild(container); - - container.updateRendering().then(() => { - setVisible(container).then( - () => { finishTest("PASS"); }, - (e) => { finishTest("FAIL " + e.message); }); - }); - }); -} - -window.onload = runTest; -</script> -</html>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/acquire-update-disconnect-commit.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/acquire-update-disconnect-commit.html deleted file mode 100644 index 2deff68..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/acquire-update-disconnect-commit.html +++ /dev/null
@@ -1,54 +0,0 @@ -<!doctype HTML> -<html class="reftest-wait"> -<meta charset="utf8"> -<title>Display Locking: acquire, update, disconnect, commit</title> -<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> -<link rel="match" href="pass-ref.html"> -<script src="/common/reftest-wait.js"></script> -<script src="resources/utils.js"></script> - -<style> -#container { - width: 150px; - height: 150px; - background: lightblue; -} -#child { - width: 50px; - height: 50px; - background: lightgreen; -} -</style> - -<div id="log"></div> -<div id="container"></div> - -<script> -function finishTest(status_string) { - if (document.getElementById("log").innerHTML === "") - document.getElementById("log").innerHTML = status_string; - takeScreenshot(); -} - -function runTest() { - const container = document.getElementById("container"); - setInvisible(container).then(() => { - // Update, then disconnect the element, and commit. - const update_promise = container.updateRendering(); - container.remove(); - const commit_promise = setVisible(container); - - // The update promise should reject and commit one should succeed. - Promise.all([ - new Promise((resolve, reject) => update_promise.then(reject, resolve)), - commit_promise - ]).then( - () => finishTest("PASS"), - () => finishTest("FAIL")); - }); -} - -window.onload = runTest; -</script> -</html>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/acquire-update-measure-remove-ref.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/acquire-update-measure-remove-ref.html deleted file mode 100644 index 9ba0a916..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/acquire-update-measure-remove-ref.html +++ /dev/null
@@ -1,18 +0,0 @@ -<!doctype html> -<html> -<meta charset="utf8"> -<title>Display Locking: acquire, update, measure, remove (reference)</title> -<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> - -<style> -#spacer { - width: 150px; - height: 150px; - background: green; -} -</style> - -<div id="spacer"></div> -<div id="log">0 20 40 8 8</div> -</html>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/acquire-update-measure-remove.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/acquire-update-measure-remove.html deleted file mode 100644 index 12619839..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/acquire-update-measure-remove.html +++ /dev/null
@@ -1,79 +0,0 @@ -<!doctype HTML> -<html class="reftest-wait"> -<meta charset="utf8"> -<title>Display Locking: acquire, update, measure, remove</title> -<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> -<link rel="match" href="acquire-update-measure-remove-ref.html"> -<script src="/common/reftest-wait.js"></script> -<script src="resources/utils.js"></script> - -<style> -#container { - background: lightgreen; -} -#sizer { - width: 100px; - height: 100px; -} -.child { - width: 20px; - height: 20%; - background: cyan; -} -#empty { - background: red; - width: max-style layout; -} -#spacer { - width: 150px; - height: 150px; - background: green; -} -</style> - -<div id="empty"></div> -<div id="spacer"></div> -<div id="log"></div> - -<script> -function measureAndRemove() { - const log = document.getElementById("log"); - log.innerHTML += "" + document.getElementById("0").offsetTop; - log.innerHTML += " " + document.getElementById("1").offsetTop; - log.innerHTML += " " + document.getElementById("2").offsetTop; - log.innerHTML += " " + document.getElementById("empty").offsetTop; - log.innerHTML += " " + document.getElementById("spacer").offsetTop; - document.getElementById("container").remove(); -} - -function createChild(id) { - const child = document.createElement("div"); - child.classList = "child"; - child.id = id; - return child; -} - -function construct(container) { - const sizer = document.createElement("div"); - sizer.id = "sizer"; - container.appendChild(sizer); - sizer.appendChild(createChild("0")); - sizer.appendChild(createChild("1")); - sizer.appendChild(createChild("2")); -} - -function runTest() { - const container = document.createElement("div"); - container.id = "container"; - setInvisible(container).then(() => { - construct(container); - document.getElementById("empty").appendChild(container); - container.updateRendering().then(measureAndRemove).then(takeScreenshot); - }); -} - -window.onload = runTest; -</script> - -</html>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/acquire-update-remove-commit-ref.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/acquire-update-remove-commit-ref.html deleted file mode 100644 index 0650cf1..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/acquire-update-remove-commit-ref.html +++ /dev/null
@@ -1,20 +0,0 @@ -<!doctype HTML> -<html> -<meta charset="utf8"> -<title>Display Locking: acquire, update, remove, commit (reference)</title> -<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> - -<style> -#container { - contain: style layout; - width: 100px; - height: 100px; - background: lightblue; -} -</style> - -<div id="log">PASS Element is disconnected.</div> -<div id="container"></div> - -</html>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/acquire-update-remove-commit.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/acquire-update-remove-commit.html deleted file mode 100644 index 02357efb..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/acquire-update-remove-commit.html +++ /dev/null
@@ -1,47 +0,0 @@ -<!doctype HTML> -<html class="reftest-wait"> -<meta charset="utf8"> -<title>Display Locking: acquire, update, remove, commit</title> -<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> -<link rel="match" href="acquire-update-remove-commit-ref.html"> -<script src="/common/reftest-wait.js"></script> -<script src="resources/utils.js"></script> - -<style> -#container { - width: 100px; - height: 100px; - background: lightblue; -} -</style> - -<div id="log"></div> - -<script> -function finishTest(status_string) { - if (document.getElementById("log").innerHTML === "") - document.getElementById("log").innerHTML = status_string; - takeScreenshot(); -} - -function runTest() { - const container = document.createElement("div"); - container.id = "container"; - - setInvisible(container).then(() => { - document.body.appendChild(container); - container.updateRendering().then( - () => { finishTest("FAIL"); }, - (e) => { - document.body.appendChild(container); - finishTest("PASS " + e.message); - }); - container.remove(); - setVisible(container); - }); -} - -window.onload = runTest; -</script> -</html>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/acquire-update-remove-ref.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/acquire-update-remove-ref.html deleted file mode 100644 index 646c605..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/acquire-update-remove-ref.html +++ /dev/null
@@ -1,9 +0,0 @@ -<!doctype HTML> -<html> -<meta charset="utf8"> -<title>Display Locking: acquire, update, remove (reference)</title> -<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> - -<div id="log">PASS Element is disconnected.</div> -</html>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/acquire-update-remove.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/acquire-update-remove.html deleted file mode 100644 index 099e016..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/acquire-update-remove.html +++ /dev/null
@@ -1,43 +0,0 @@ -<!doctype HTML> -<html class="reftest-wait"> -<meta charset="utf8"> -<title>Display Locking: acquire, update, remove</title> -<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> -<link rel="match" href="acquire-update-remove-ref.html"> -<script src="/common/reftest-wait.js"></script> -<script src="resources/utils.js"></script> - -<style> -#container { - width: 100px; - height: 100px; - background: lightblue; -} -</style> - -<div id="log"></div> - -<script> -function finishTest(status_string) { - if (document.getElementById("log").innerHTML === "") - document.getElementById("log").innerHTML = status_string; - takeScreenshot(); -} - -function runTest() { - const container = document.createElement("div"); - container.id = "container"; - - setInvisible(container).then(() => { - document.body.appendChild(container); - container.updateRendering().then( - () => { finishTest("FAIL"); }, - (e) => { finishTest("PASS " + e.message); }); - container.remove(); - }); -} - -window.onload = runTest; -</script> -</html>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/activation/activate-commit-same-frame.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/activation/activate-commit-same-frame.html deleted file mode 100644 index b43e9257..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/activation/activate-commit-same-frame.html +++ /dev/null
@@ -1,55 +0,0 @@ -<!doctype HTML> -<html> -<meta charset="utf8"> -<title>Display Locking: activate commit same frame</title> -<link rel="author" title="Rakina Zata Amni" href="mailto:rakina@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> - -<script src="/resources/testharness.js"></script> -<script src="/resources/testharnessreport.js"></script> -<script src="../resources/utils.js"></script> - -<style> -.spacer { - width: 150px; - height: 3000px; - background: lightblue; -} -#container { - width: 150px; - height: 150px; - background: lightgreen; -} -#target { - width: 100px; - height: 100px; - background: green; -} -</style> - -<div class="spacer"></div> -<div id="container"><div id="target"></div></div> - -<script> -async_test((t) => { - async function runTest() { - let container = document.getElementById("container"); - - let acquire_promise = setInvisibleActivatable(container); - await acquire_promise; - - target.scrollIntoView(); - let commit_promise = setVisible(container); - await commit_promise; - - t.step(() => assert_equals(container.renderSubtree, "", "context after commit & activation is unlocked")); - t.done(); - } - - window.onload = function() { - requestAnimationFrame(() => requestAnimationFrame(runTest)); - }; -}, "scrollIntoView and committing on the same frame should work"); - -</script> -</html>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/activation/activate-update-same-frame.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/activation/activate-update-same-frame.html deleted file mode 100644 index b43e5ad..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/activation/activate-update-same-frame.html +++ /dev/null
@@ -1,54 +0,0 @@ -<!doctype HTML> -<html> -<meta charset="utf8"> -<title>Display Locking: activate update same frame</title> -<link rel="author" title="Rakina Zata Amni" href="mailto:rakina@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> - -<script src="/resources/testharness.js"></script> -<script src="/resources/testharnessreport.js"></script> -<script src="../resources/utils.js"></script> - -<style> -.spacer { - width: 150px; - height: 3000px; - background: lightblue; -} -#container { - width: 150px; - height: 150px; - background: lightgreen; -} -#target { - width: 100px; - height: 100px; - background: green; -} -</style> - -<div class="spacer"></div> -<div id="container"><div id="target"></div></div> - -<script> -async_test((t) => { - async function runTest() { - let container = document.getElementById("container"); - - let acquire_promise = setInvisibleActivatable(container); - await acquire_promise; - - target.scrollIntoView(); - let update_promise = container.updateRendering(); - await update_promise; - t.step(() => assert_equals(container.renderSubtree, "", "context after update & activation is unlocked")); - t.done(); - } - - window.onload = function() { - requestAnimationFrame(() => requestAnimationFrame(runTest)); - }; -}, "scrollIntoView and updating on the same frame should work"); - -</script> -</html>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/activation/anchor-links-ancestor.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/activation/anchor-links-ancestor.html deleted file mode 100644 index 5a8b0787..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/activation/anchor-links-ancestor.html +++ /dev/null
@@ -1,79 +0,0 @@ -<!doctype HTML> -<html> -<meta charset="utf8"> -<title>Display Locking: anchor links via click</title> -<link rel="author" title="Rakina Zata Amni" href="mailto:rakina@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> - -<script src="/resources/testharness.js"></script> -<script src="/resources/testharnessreport.js"></script> -<script src="../resources/utils.js"></script> -<div id=spacer style="height: 3000px"></div> -<div id="outermost"> - Outermost - <div id="outer"> - Outer - <div id="inner"> - Inner - <div id="innermost"> - Innermost - </div> - </div> - </div> -</div> -<a id="innermostLink" href ="#innermost">Click</a> -<script> -'use strict'; -function prepareTest() { - return Promise.all([ - setInvisibleActivatable(outer), - setInvisibleActivatable(inner) - ]); -} - -promise_test(() => { - return new Promise((resolve, reject) => { - prepareTest().then(() => { - assert_equals(outermost.renderSubtree, ""); - assert_equals(outer.renderSubtree, INVISIBLE_ACTIVATABLE); - assert_equals(inner.renderSubtree, INVISIBLE_ACTIVATABLE); - assert_equals(innermost.renderSubtree, ""); - - let innerPromise = new Promise((resolve, reject) => { - inner.onrendersubtreeactivation = (e) => { - assert_equals(e.activatedElement, innermost); - resolve(); - } - }); - - let outerPromise = new Promise((resolve, reject) => { - outer.onrendersubtreeactivation = (e) => { - assert_equals(e.activatedElement, innermost); - // Resolve if this is directly targeted to #outer, - // instead of bubbling here. - if (e.target == outer) - resolve(); - } - }); - - let outermostPromise = new Promise((resolve, reject) => { - outermost.onrendersubtreeactivation = (e) => { - assert_equals(e.activatedElement, innermost); - assert_not_equals(e.target, outermost); - // Resolve if this is targeted to #outer, which is - // dispatched after the event targeted to #inner. - if (e.target == outer) - resolve(); - } - }); - - innermost.onrendersubtreeactivation = reject; - // Navigating to element in locked subtree should fire rendersubtreeactivation - // on locked ancestors, but not itself. - innermostLink.click(); - Promise.all([innerPromise, outerPromise, outermostPromise]).then(resolve); - }); - }); -}, "Activation through anchor link fires rendersubtreeactivation on locked ancestor"); -</script> -</html>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/activation/anchor-links.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/activation/anchor-links.html deleted file mode 100644 index ed2218d..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/activation/anchor-links.html +++ /dev/null
@@ -1,44 +0,0 @@ -<!doctype HTML> -<html> -<meta charset="utf8"> -<title>Display Locking: anchor links</title> -<link rel="author" title="Rakina Zata Amni" href="mailto:rakina@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> - -<script src="/resources/testharness.js"></script> -<script src="/resources/testharnessreport.js"></script> -<script src="../resources/utils.js"></script> -<div id="outer"> - Outer - <div id="inner"> - Inner - <div id="innermost"> - Innermost - </div> - </div> -</div> -<a id="innerLink" href="#inner">Click</a> -<a id="innermostLink" href ="#innermost">Click</a> -<script> -'use strict'; -function prepareTest() { - innermost.onrendersubtreeactivation = inner.onrendersubtreeactivation = outer.onrendersubtreeactivation = null; - return Promise.all([ - setInvisibleActivatable(outer), - setInvisibleActivatable(inner)]); -} - -promise_test(() => { - return new Promise((resolve, reject) => { - prepareTest().then(() => { - assert_equals(inner.renderSubtree, INVISIBLE_ACTIVATABLE); - inner.onrendersubtreeactivation = (e) => { - assert_equals(e.activatedElement, inner); - resolve(); - } - innerLink.click(); - }); - }); -}, "Activation through anchor link fires rendersubtreeactivation on locked element"); -</script> -</html>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/activation/focus-next-updated-style.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/activation/focus-next-updated-style.html deleted file mode 100644 index ba3cfad9..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/activation/focus-next-updated-style.html +++ /dev/null
@@ -1,39 +0,0 @@ -<!doctype HTML> -<html> -<meta charset="utf8"> -<title>Display Locking: focus on skipped element</title> -<link rel="author" title="Rakina Zata Amni" href="mailto:rakina@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> -<script src="../resources/utils.js"></script> - -<!-- -Focus on a div that has updated style/layout. ---> - -<div id="container"> - <div id="focusableA" tabindex="0">a</div> - <div id="focusableB" tabindex="0">b</div> -</div> - -<script src="/resources/testharness.js"></script> -<script src="/resources/testharnessreport.js"></script> - -<script> -promise_test((t) => { - const acquirePromise = setInvisibleActivatable(container); - return new Promise((resolve, reject) => { - acquirePromise.then(() => { - focusableA.style = "display: none;"; - eventSender.keyDown("Tab", []); - t.step(() => assert_equals(document.activeElement, focusableB)); - eventSender.keyDown("Tab", []); - t.step(() => assert_equals(document.activeElement, focusableB)); - focusableA.style = "display: block;"; - eventSender.keyDown("Tab", []); - t.step(() => assert_equals(document.activeElement, focusableA)); - resolve(); - }); - }); -}, "Trying to focus on an element in a locked subtree that's not visible anymore will skip that element"); -</script> -</html>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/activation/scroll-into-view-beforeactivate.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/activation/scroll-into-view-beforeactivate.html deleted file mode 100644 index 77b380f6..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/activation/scroll-into-view-beforeactivate.html +++ /dev/null
@@ -1,78 +0,0 @@ -<!doctype HTML> -<html> -<meta charset="utf8"> -<title>Display Locking: scrollIntoView event</title> -<link rel="author" title="Rakina Zata Amni" href="mailto:rakina@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> - -<script src="/resources/testharness.js"></script> -<script src="/resources/testharnessreport.js"></script> -<script src="../resources/utils.js"></script> -<div id=spacer style="height: 3000px"></div> -<div id="outermost"> - Outermost - <div id="outer"> - Outer - <div id="inner"> - Inner - <div id="innermost"> - Innermost - </div> - </div> - </div> -</div> -<script> -'use strict'; -function prepareTest() { - return Promise.all([ - setInvisibleActivatable(outer), - setInvisibleActivatable(inner) - ]); -} - -promise_test(() => { - return new Promise((resolve, reject) => { - prepareTest().then(() => { - assert_equals(outermost.renderSubtree, ""); - assert_equals(outer.renderSubtree, INVISIBLE_ACTIVATABLE); - assert_equals(inner.renderSubtree, INVISIBLE_ACTIVATABLE); - assert_equals(innermost.renderSubtree, ""); - - let innerPromise = new Promise((resolve, reject) => { - inner.onrendersubtreeactivation = (e) => { - assert_equals(e.activatedElement, innermost); - resolve(); - } - }); - - let outerPromise = new Promise((resolve, reject) => { - outer.onrendersubtreeactivation = (e) => { - assert_equals(e.activatedElement, innermost); - // Resolve if this is directly targeted to #outer, - // instead of bubbling here. - if (e.target == outer) - resolve(); - } - }); - - let outermostPromise = new Promise((resolve, reject) => { - outermost.onrendersubtreeactivation = (e) => { - assert_equals(e.activatedElement, innermost); - assert_not_equals(e.target, outermost); - // Resolve if this is targeted to #outer, which is - // dispatched after the event targeted to #inner. - if (e.target == outer) - resolve(); - } - }); - - innermost.onrendersubtreeactivation = reject; - // Navigating to element in locked subtree should fire rendersubtreeactivation - // on locked ancestors, but not itself. - innermost.scrollIntoView(); - Promise.all([innerPromise, outerPromise, outermostPromise]).then(resolve); - }); - }); -}, "Activation through scrollIntoView fires rendersubtreeactivation on locked ancestor"); -</script> -</html>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/activation/scroll-into-view-ref.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/activation/scroll-into-view-ref.html deleted file mode 100644 index ce0e0b6..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/activation/scroll-into-view-ref.html +++ /dev/null
@@ -1,39 +0,0 @@ -<!doctype HTML> -<html class="reftest-wait"> -<meta charset="utf8"> -<title>Display Locking: scrollIntoView (reference)</title> -<link rel="author" title="Rakina Zata Amni" href="mailto:rakina@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> -<script src="/common/reftest-wait.js"></script> - -<style> -.spacer { - width: 150px; - height: 3000px; - background: lightblue; -} -#container { - contain: style layout; - width: 150px; - height: 150px; - background: lightgreen; -} -#target { - width: 100px; - height: 100px; - background: green; -} -</style> - -<div class="spacer"></div> -<div id="container"><div id="target"></div></div> - -<script> -function runTest() { - document.getElementById("target").scrollIntoView(); - requestAnimationFrame(takeScreenshot); -} - -window.onload = () => { requestAnimationFrame(runTest); }; -</script> -</html>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/activation/scroll-into-view.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/activation/scroll-into-view.html deleted file mode 100644 index 4442db5..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/activation/scroll-into-view.html +++ /dev/null
@@ -1,43 +0,0 @@ -<!doctype HTML> -<html class="reftest-wait"> -<meta charset="utf8"> -<title>Display Locking: scrollIntoView</title> -<link rel="author" title="Rakina Zata Amni" href="mailto:rakina@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> -<link rel="match" href="scroll-into-view-ref.html"> -<script src="/common/reftest-wait.js"></script> -<script src="../resources/utils.js"></script> - -<style> -.spacer { - width: 150px; - height: 3000px; - background: lightblue; -} -#container { - width: 150px; - height: 150px; - background: lightgreen; -} -#target { - width: 100px; - height: 100px; - background: green; -} -</style> - -<div class="spacer"></div> -<div id="container"><div id="target"></div></div> - -<script> -function runTest() { - const container = document.getElementById("container"); - setInvisibleActivatable(container).then(() => { - document.getElementById("target").scrollIntoView(); - requestAnimationFrame(takeScreenshot); - }); -} - -window.onload = () => { requestAnimationFrame(runTest); }; -</script> -</html>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/activation/scroll.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/activation/scroll.html deleted file mode 100644 index 0170d33..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/activation/scroll.html +++ /dev/null
@@ -1,30 +0,0 @@ -<!doctype HTML> -<html> -<meta charset="utf8"> -<title>Display Locking: scroll / viewport intersections activate locked element</title> -<link rel="author" title="Rakina Zata Amni" href="mailto:rakina@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> -<script src="/resources/testharness.js"></script> -<script src="/resources/testharnessreport.js"></script> -<script src="../resources/utils.js"></script> - -<div id=visible rendersubtree="invisible">text</div> -<div id=spacer style="height: 3000px">text</div> -<div id=target rendersubtree="invisible">text</div> - -<script> -promise_test(() => { - return new Promise((resolve, reject) => { - requestAnimationFrame(() => { - requestAnimationFrame(() => { - assert_equals(visible.renderSubtree, "", "visible activated"); - window.scrollBy(0, 3000); - requestAnimationFrame(() => { - assert_equals(target.renderSubtree, "", "target activated"); - resolve(); - }); - }); - }); - }); -}, "Scroll activates elements"); -</script>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/activation/selection.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/activation/selection.html deleted file mode 100644 index 5336162..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/activation/selection.html +++ /dev/null
@@ -1,39 +0,0 @@ -<!doctype HTML> -<html> -<meta charset="utf8"> -<title>Display Locking: selection activates locked element</title> -<link rel="author" title="Rakina Zata Amni" href="mailto:rakina@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> -<script src="/resources/testharness.js"></script> -<script src="/resources/testharnessreport.js"></script> -<script src="../resources/utils.js"></script> - -<div id="container"> -foo - <div id="nonActivatable"> - bleh - </div> - <div id="nested"> - bar - </div> -</div> - -<script> -promise_test(() => { - const acquirePromise = Promise.all( - [setInvisibleActivatable(container), - setInvisible(nonActivatable), - setInvisibleActivatable(nested) - ]); - return new Promise((resolve, reject) => { - acquirePromise.then(() => { - window.getSelection().selectAllChildren(container); - assert_equals(window.getSelection().toString(), "foo\nbar"); - assert_equals(container.renderSubtree, ""); - assert_equals(nonActivatable.renderSubtree, INVISIBLE_NOT_ACTIVATABLE); - assert_equals(nested.renderSubtree, ""); - resolve(); - }); - }); -}, "Activating locked element through selection activates activatable elements"); -</script>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/activation/viewport-activation-margin.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/activation/viewport-activation-margin.html deleted file mode 100644 index 46ccdcf3..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/activation/viewport-activation-margin.html +++ /dev/null
@@ -1,30 +0,0 @@ -<!doctype HTML> -<html> -<meta charset="utf8"> -<title>Display Locking: scroll / viewport intersections activate locked element</title> -<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> -<script src="/resources/testharness.js"></script> -<script src="/resources/testharnessreport.js"></script> -<script src="../resources/utils.js"></script> - -<div id=target rendersubtree="invisible skip-activation">text</div> -<div id=spacer style="height: 3000px">text</div> - -<script> -promise_test(() => { - return new Promise((resolve, reject) => { - requestAnimationFrame(() => { - requestAnimationFrame(() => { - window.scrollBy(0, window.innerHeight / 2 - 10); - setInvisibleActivatable(target).then(() => { - if (target.renderSubtree === "") - resolve(); - else - reject("target did not activate"); - }); - }); - }); - }); -}, "Viewport activated elements have margin"); -</script>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/attribute/values.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/attribute/values.html deleted file mode 100644 index 559c926..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/attribute/values.html +++ /dev/null
@@ -1,36 +0,0 @@ -<!DOCTYPE html> -<meta charset="utf-8"> -<title>Tests rendersubtree attribute values</title> -<script src="/resources/testharness.js"></script> -<script src="/resources/testharnessreport.js"></script> -<script src="../resources/utils.js"></script> - -<script> -test(() => { - const element = document.createElement("div"); - - element.setAttribute("rendersubtree", INVISIBLE_ACTIVATABLE); - assert_equals(element.getAttribute("rendersubtree"), INVISIBLE_ACTIVATABLE); - assert_equals(element.renderSubtree, INVISIBLE_ACTIVATABLE); - - element.setAttribute("rendersubtree", INVISIBLE_NOT_ACTIVATABLE); - assert_equals(element.getAttribute("rendersubtree"), INVISIBLE_NOT_ACTIVATABLE); - assert_equals(element.renderSubtree, INVISIBLE_NOT_ACTIVATABLE); - - element.setAttribute("rendersubtree", "not-visible"); - assert_equals(element.getAttribute("rendersubtree"), "not-visible"); - assert_equals(element.renderSubtree, "not-visible"); - - element.setAttribute("rendersubtree", ""); - assert_equals(element.getAttribute("rendersubtree"), ""); - assert_equals(element.renderSubtree, ""); - - element.setAttribute("rendersubtree", "foo bar"); - assert_equals(element.getAttribute("rendersubtree"), "foo bar"); - assert_equals(element.renderSubtree, "foo bar"); - - element.setAttribute("rendersubtree", "visible"); - assert_equals(element.getAttribute("rendersubtree"), "visible"); - assert_equals(element.renderSubtree, "visible"); -}, "Values on the attribute are saved and reflected as is"); -</script>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/audio-element-crash.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/audio-element-crash.html deleted file mode 100644 index b1fbc6c..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/audio-element-crash.html +++ /dev/null
@@ -1,28 +0,0 @@ -<!doctype HTML> -<script src="/resources/testharness.js"></script> -<script src="/resources/testharnessreport.js"></script> -<div id="parent"> - <div id="invisible"></div> -</div> -<audio id="audioEl" controls="controls"> -</audio> -<script> -let t = async_test('Does not crash'); -let audioEl = document.querySelector('#audioEl'); -function boom1() { - audioEl.setAttribute("rendersubtree", "invisible"); - audioEl.src = "x"; -} - -function boom2() { - invisible.setAttribute("rendersubtree", "invisible"); - document.caretRangeFromPoint(1, 2); - document.body.appendChild(audioEl); - t.done(); -} - -onload = () => { - parent.addEventListener("DOMSubtreeModified", boom1); - setTimeout(boom2, 200); -}; -</script>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/commit-immediate-acquire-resolves-ref.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/commit-immediate-acquire-resolves-ref.html deleted file mode 100644 index d55ac961..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/commit-immediate-acquire-resolves-ref.html +++ /dev/null
@@ -1,19 +0,0 @@ -<!doctype HTML> -<html> -<meta charset="utf8"> -<title>Display Locking: commit, quick acquire (reference)</title> -<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> - -<style> -#container { - contain: style layout; - width: 150px; - height: 150px; - background: lightblue; -} -</style> - -<div id="log">PASS</div> -<div id="container"></div> -</html>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/commit-immediate-acquire.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/commit-immediate-acquire.html deleted file mode 100644 index b6e0646c..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/commit-immediate-acquire.html +++ /dev/null
@@ -1,48 +0,0 @@ -<!doctype HTML> -<html class="reftest-wait"> -<meta charset="utf8"> -<title>Display Locking: commit, quick acquire</title> -<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> -<link rel="match" href="commit-immediate-acquire-resolves-ref.html"> -<script src="/common/reftest-wait.js"></script> -<script src="resources/utils.js"></script> - -<style> -#container { - width: 150px; - height: 150px; - background: lightblue; -} -#child { - width: 50px; - height: 50px; - background: lightgreen; -} -</style> - -<div id="log"></div> -<div id="container"></div> - -<script> -function finishTest(status_string) { - if (document.getElementById("log").innerHTML === "") - document.getElementById("log").innerHTML = status_string; - takeScreenshot(); -} - -function runTest() { - const container = document.getElementById("container"); - setInvisible(container).then(() => { - setVisible(container); - setInvisible(container).then(() => { - setVisible(container).then(() => { - finishTest("PASS"); - }); - }); - }); -} - -window.onload = runTest; -</script> -</html>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/commit-while-disconnected-ref.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/commit-while-disconnected-ref.html deleted file mode 100644 index 70d99e1..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/commit-while-disconnected-ref.html +++ /dev/null
@@ -1,19 +0,0 @@ -<!doctype HTML> -<html> -<meta charset="utf8"> -<title>Display Locking: commit while disconnected (reference)</title> -<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> - -<style> -#container { - contain: style layout; - width: 100px; - height: 100px; - background: lightblue; -} -</style> - -<div id="log">PASS</div> -<div id="container"></div> -</html>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/commit-while-disconnected.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/commit-while-disconnected.html deleted file mode 100644 index 60f9fbae..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/commit-while-disconnected.html +++ /dev/null
@@ -1,43 +0,0 @@ -<!doctype HTML> -<html class="reftest-wait"> -<meta charset="utf8"> -<title>Display Locking: commit while disconnected</title> -<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> -<link rel="match" href="commit-while-disconnected-ref.html"> -<script src="/common/reftest-wait.js"></script> -<script src="resources/utils.js"></script> - -<style> -#container { - width: 100px; - height: 100px; - background: lightblue; -} -</style> - -<div id="log"></div> - -<script> -function finishTest(status_string) { - if (document.getElementById("log").innerHTML === "") - document.getElementById("log").innerHTML = status_string; - takeScreenshot(); -} - -function runTest() { - const container = document.createElement("div"); - container.id = "container"; - - setInvisible(container).then(() => { - setVisible(container).then(() => { - document.body.appendChild(container); - finishTest("PASS"); - }, - (e) => { finishTest("FAIL " + e.message); }); - }); -} - -window.onload = runTest; -</script> -</html>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/commit-without-acquire-ref.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/commit-without-acquire-ref.html deleted file mode 100644 index 2a9e5677..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/commit-without-acquire-ref.html +++ /dev/null
@@ -1,19 +0,0 @@ -<!doctype HTML> -<html> -<meta charset="utf8"> -<title>Display Locking: commit without acquire (reference)</title> -<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> - -<style> -#container { - contain: style layout; - width: 150px; - height: 150px; - background: lightblue; -} -</style> - -<div id="log">PASS</div> -<div id="container"></div> -</html>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/commit-without-acquire.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/commit-without-acquire.html deleted file mode 100644 index 5a661db..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/commit-without-acquire.html +++ /dev/null
@@ -1,44 +0,0 @@ -<!doctype HTML> -<html class="reftest-wait"> -<meta charset="utf8"> -<title>Display Locking: commit without acquire</title> -<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> -<link rel="match" href="commit-without-acquire-ref.html"> -<script src="/common/reftest-wait.js"></script> -<script src="resources/utils.js"></script> - -<style> -#container { - width: 150px; - height: 150px; - background: lightblue; -} -#child { - width: 50px; - height: 50px; - background: lightgreen; -} -</style> - -<div id="log"></div> - -<script> -function finishTest(status_string) { - if (document.getElementById("log").innerHTML === "") - document.getElementById("log").innerHTML = status_string; - takeScreenshot(); -} - -function runTest() { - const container = document.createElement("div"); - container.id = "container"; - setVisible(container).then( - () => { finishTest("PASS"); }, - (e) => { finishTest("FAIL " + e.message); }); - document.body.appendChild(container); -} - -window.onload = runTest; -</script> -</html>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/containment/acquire-changed-containment.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/containment/acquire-changed-containment.html deleted file mode 100644 index 13bec941..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/containment/acquire-changed-containment.html +++ /dev/null
@@ -1,45 +0,0 @@ -<!doctype html> -<html class="reftest-wait"> -<meta charset="utf8"> -<title>Display Locking: acquire, containment changes</title> -<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> -<link rel="match" href="pass-containment-added-ref.html"> -<script src="/common/reftest-wait.js"></script> -<script src="../resources/utils.js"></script> - -<style> -#container { - width: 150px; - height: 150px; - background: lightblue; -} -#child { - width: 50px; - height: 50px; - background: lightgreen; -} -</style> - -<div id="log"></div> -<div id="container" style="contain: style layout;"><div id="child" style="display: none;"></div></div> - -<script> -function finishTest(status_string) { - if (document.getElementById("log").innerHTML === "") - document.getElementById("log").innerHTML = status_string; - takeScreenshot(); -} - -function runTest() { - const container = document.getElementById("container"); - // Recalc child and container when acquiring. - container.style = ""; - child.style = ""; - setInvisible(container).then( - () => { finishTest("PASS, contain: " + getComputedStyle(container).contain ); }); -} - -window.onload = runTest; -</script> -</html>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/containment/acquire-on-no-containment.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/containment/acquire-on-no-containment.html deleted file mode 100644 index 90b9cd4..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/containment/acquire-on-no-containment.html +++ /dev/null
@@ -1,38 +0,0 @@ -<!doctype HTML> -<html class="reftest-wait"> -<meta charset="utf8"> -<title>Display Locking: acquire, no containment</title> -<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> -<link rel="match" href="pass-containment-added-ref.html"> -<script src="/common/reftest-wait.js"></script> -<script src="../resources/utils.js"></script> - -<style> -#container { - width: 150px; - height: 150px; - background: lightblue; -} -</style> - -<div id="log"></div> -<div id="container"></div> - -<script> -function finishTest(status_string) { - if (document.getElementById("log").innerHTML === "") - document.getElementById("log").innerHTML = status_string; - takeScreenshot(); -} - -function runTest() { - const container = document.getElementById("container"); - setInvisible(container).then(() => { - finishTest("PASS, contain: " + getComputedStyle(container).contain); - }); -} - -window.onload = runTest; -</script> -</html>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/containment/acquire-only-style-containment.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/containment/acquire-only-style-containment.html deleted file mode 100644 index 2001cdd0..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/containment/acquire-only-style-containment.html +++ /dev/null
@@ -1,44 +0,0 @@ -<!doctype html> -<html class="reftest-wait"> -<meta charset="utf8"> -<title>Display Locking: acquire, containment got overridden</title> -<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> -<link rel="match" href="pass-containment-added-ref.html"> -<script src="/common/reftest-wait.js"></script> -<script src="../resources/utils.js"></script> - -<style> -#container { - width: 150px; - height: 150px; - background: lightblue; - contain: style; -} -#child { - width: 50px; - height: 50px; - background: lightgreen; -} -</style> - -<div id="log"></div> -<div id="container"><div id="child"></div></div> - -<script> -function finishTest(status_string) { - if (document.getElementById("log").innerHTML === "") - document.getElementById("log").innerHTML = status_string; - takeScreenshot(); -} - -function runTest() { - const container = document.getElementById("container"); - setInvisible(container).then(() => { - finishTest("PASS, contain: " + getComputedStyle(container).contain ); - }); -} - -window.onload = runTest; -</script> -</html>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/containment/acquire-overridden-containment.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/containment/acquire-overridden-containment.html deleted file mode 100644 index 07b97be..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/containment/acquire-overridden-containment.html +++ /dev/null
@@ -1,42 +0,0 @@ -<!doctype html> -<html class="reftest-wait"> -<meta charset="utf8"> -<title>Display Locking: acquire, containment got overridden</title> -<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> -<link rel="match" href="pass-containment-added-ref.html"> -<script src="/common/reftest-wait.js"></script> -<script src="../resources/utils.js"></script> - -<style> -#container { - width: 150px; - height: 150px; - background: lightblue; -} -#child { - width: 50px; - height: 50px; - background: lightgreen; -} -</style> - -<div id="log"></div> -<div id="container" style="contain: style layout;"><div id="child"></div></div> - -<script> -function finishTest(status_string) { - if (document.getElementById("log").innerHTML === "") - document.getElementById("log").innerHTML = status_string; - takeScreenshot(); -} - -function runTest() { - const container = document.getElementById("container"); - setInvisible(container).then( - () => { finishTest("PASS, contain: " + getComputedStyle(container).contain ); }); -} - -window.onload = runTest; -</script> -</html>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/containment/pass-containment-added-ref.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/containment/pass-containment-added-ref.html deleted file mode 100644 index 6ed199df..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/containment/pass-containment-added-ref.html +++ /dev/null
@@ -1,18 +0,0 @@ -<!doctype HTML> -<html> -<meta charset="utf8"> -<title>Display Locking: pass, added containment (reference)</title> -<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> - -<style> -#container { - width: 150px; - height: 150px; - background: lightblue; -} -</style> - -<div id="log">PASS, contain: size layout style</div> -<div id="container"></div> -</html>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/containment/rendersubtree-adds-containment.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/containment/rendersubtree-adds-containment.html deleted file mode 100644 index e2f09e4..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/containment/rendersubtree-adds-containment.html +++ /dev/null
@@ -1,70 +0,0 @@ -<!doctype HTML> -<html> -<meta charset="utf8"> -<title>Display Locking: rendersubtree adds containment</title> -<link rel="author" title="Rakina Zata Amni" href="mailto:rakina@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> - -<div id="container"></div> - -<script src="/resources/testharness.js"></script> -<script src="/resources/testharnessreport.js"></script> -<script src="../resources/utils.js"></script> - -<script> -function setUp() { - container.removeAttribute("rendersubtree"); - container.style = ""; - assert_equals(getComputedStyle(container).contain, "none"); -} - -test(() => { - setUp(); - container.setAttribute("rendersubtree", INVISIBLE_NOT_ACTIVATABLE); - assert_equals(getComputedStyle(container).contain, "size layout style"); -}, "rendersubtree='invisible skip-activation' adds contain: size layout style;"); - -test(() => { - setUp(); - container.setAttribute("rendersubtree", INVISIBLE_ACTIVATABLE); - assert_equals(getComputedStyle(container).contain, "size layout style"); -}, "rendersubtree='invisible' adds contain: size layout style;"); - -test(() => { - setUp(); - container.setAttribute("rendersubtree", "InVisible"); - assert_equals(getComputedStyle(container).contain, "size layout style"); -}, "rendersubtree=InVisible adds contain: size layout style;"); - -test(() => { - setUp(); - container.setAttribute("rendersubtree", "invalid"); - assert_equals(getComputedStyle(container).contain, "layout style"); - container.style = "contain: size;"; - assert_equals(getComputedStyle(container).contain, "size layout style"); - container.style = "contain: paint;"; - assert_equals(getComputedStyle(container).contain, "layout style paint"); -}, "rendersubtree=invalid adds contain: layout style, keeps size and paint if exists"); - -test(() => { - setUp(); - container.setAttribute("rendersubtree", INVISIBLE_ACTIVATABLE); - container.style = "contain: style;"; - assert_equals(getComputedStyle(container).contain, "size layout style"); - container.style = "contain: style layout;"; - assert_equals(getComputedStyle(container).contain, "size layout style"); - container.style = ""; - assert_equals(getComputedStyle(container).contain, "size layout style"); -}, "rendersubtree=invisible adds contain: size layout style, can't be overridden"); - -test(() => { - setUp(); - container.setAttribute("rendersubtree", INVISIBLE_ACTIVATABLE); - container.style = "contain: paint;"; - assert_equals(getComputedStyle(container).contain, "size layout style paint"); - container.style = "contain: strict;"; - assert_equals(getComputedStyle(container).contain, "size layout style paint"); - container.style = "contain: content;"; - assert_equals(getComputedStyle(container).contain, "size layout style paint"); -}, "rendersubtree adds contain: size layout style and keeps paint if it exists"); -</script>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/display-none-ancestor-ref.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/display-none-ancestor-ref.html deleted file mode 100644 index 51904c6..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/display-none-ancestor-ref.html +++ /dev/null
@@ -1,25 +0,0 @@ -<!doctype HTML> -<html> -<meta charset="utf8"> -<title>Display Locking: display none ancestor (reference)</title> -<link rel="author" title="Rakina Zata Amni" href="mailto:rakina@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> - -<style> -#container { - width: 200px; - height: 200px; - background: green; -} - -#locked { - contain: style layout; - width: 150px; - height: 150px; - background: lightblue; -} -</style> - -<div id="log">PASS</div> -<div id="container"><div id="locked"></div></div> -</html>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/display-none-ancestor.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/display-none-ancestor.html deleted file mode 100644 index da43535..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/display-none-ancestor.html +++ /dev/null
@@ -1,54 +0,0 @@ -<!doctype HTML> -<html class="reftest-wait"> -<meta charset="utf8"> -<title>Display Locking: display none ancestor</title> -<link rel="author" title="Rakina Zata Amni" href="mailto:rakina@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> -<link rel="match" href="display-none-ancestor-ref.html"> -<script src="/common/reftest-wait.js"></script> -<script src="resources/utils.js"></script> - -<style> -#container { - width: 200px; - height: 200px; - background: green; -} - -#locked { - width: 150px; - height: 150px; - background: lightblue; -} -</style> - -<div id="log"></div> -<div id="container" style="display:none;"></div> - -<script> -function finishTest(status_string) { - if (document.getElementById("log").innerHTML === "") - document.getElementById("log").innerHTML = status_string; - takeScreenshot(); -} - -function runTest() { - const locked = document.createElement("div"); - locked.id = "locked"; - setInvisible(locked).then(() => { - container.appendChild(locked); - locked.updateRendering().then(() => { - // Make container visible & force style + layout. - container.style = "display:block"; - container.offsetTop; - - setVisible(locked).then( - () => { finishTest("PASS"); }, - (e) => { finishTest("FAIL " + e.message); }); - }); - }); -} - -window.onload = runTest; -</script> -</html>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/element-in-template.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/element-in-template.html deleted file mode 100644 index e6cad57..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/element-in-template.html +++ /dev/null
@@ -1,51 +0,0 @@ -<!doctype HTML> -<html> -<meta charset="utf8"> -<title>Display Locking: element in template</title> -<link rel="author" title="Rakina Zata Amni" href="mailto:rakina@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> - -<script src="/resources/testharness.js"></script> -<script src="/resources/testharnessreport.js"></script> -<script src="resources/utils.js"></script> - -<template id=template><div id="child">foo</div></template> -<div id="container"></div> - -<script> - -async_test((t) => { - - async function templateTest() { - const templateChild = template.content.firstChild; - - const acquirePromise = setInvisible(templateChild); - await acquirePromise; - t.step(() => assert_equals(templateChild.renderSubtree, INVISIBLE_NOT_ACTIVATABLE, "Can lock element in template")); - - const adoptedNode = document.adoptNode(templateChild); - t.step(() => assert_equals(adoptedNode.renderSubtree, INVISIBLE_NOT_ACTIVATABLE, "Adopted element is still locked")); - - container.appendChild(adoptedNode); - t.step(() => assert_equals(adoptedNode.renderSubtree, INVISIBLE_NOT_ACTIVATABLE, "Still locked after appended")); - - await setVisible(adoptedNode); - t.step(() => assert_equals(adoptedNode.renderSubtree, "", "Can commit")); - - await setInvisible(adoptedNode); - - t.step(() => assert_equals(adoptedNode.renderSubtree, INVISIBLE_NOT_ACTIVATABLE, "Can re-lock element")); - - await setVisible(adoptedNode); - t.step(() => assert_equals(adoptedNode.renderSubtree, "", "Can re-commit element")); - - t.done(); - } - - window.onload = function() { - requestAnimationFrame(() => requestAnimationFrame(templateTest)); - }; -}, "Testing locking element in templates"); - -</script> -</html>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/lock-parent-then-child.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/lock-parent-then-child.html deleted file mode 100644 index c01420de..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/lock-parent-then-child.html +++ /dev/null
@@ -1,33 +0,0 @@ -<!doctype HTML> -<html class="reftest-wait"> -<meta charset="utf8"> -<title>Display Locking: acquire after resizing</title> -<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> -<link rel="match" href="pass-ref.html"> -<script src="/common/reftest-wait.js"></script> -<script src="resources/utils.js"></script> - -<div id="log"></div> -<div id="container"> - locked parent - <div id="nested"> - nested locked - </div> -</div> - -<script> -function finishTest(status_string) { - if (document.getElementById("log").innerHTML === "") - document.getElementById("log").innerHTML = status_string; - takeScreenshot(); -} - -async function runTest() { - await setInvisible(document.getElementById("container")); - await setInvisible(document.getElementById("nested")); - requestAnimationFrame(() => finishTest("PASS")); -} - -window.onload = () => { requestAnimationFrame(runTest); }; -</script>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/locked-attribute.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/locked-attribute.html deleted file mode 100644 index 4cc9acc..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/locked-attribute.html +++ /dev/null
@@ -1,44 +0,0 @@ -<!doctype HTML> -<html> -<meta charset="utf8"> -<title>Display Locking: locked attribute</title> -<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> - -<div id="container"></div> - -<script src="/resources/testharness.js"></script> -<script src="/resources/testharnessreport.js"></script> -<script src="resources/utils.js"></script> - -<script> -async_test((t) => { - async function runTest() { - const container = document.getElementById("container"); - const acquire_promise = setInvisible(container); - t.step(() => assert_equals(container.renderSubtree, INVISIBLE_NOT_ACTIVATABLE, "context before acquire finishes is locked")); - - await acquire_promise; - t.step(() => assert_equals(container.renderSubtree, INVISIBLE_NOT_ACTIVATABLE, "context after acquire finishes is locked")); - - const update_promise = container.updateRendering(); - t.step(() => assert_equals(container.renderSubtree, INVISIBLE_NOT_ACTIVATABLE, "context during update is locked")); - - await update_promise; - t.step(() => assert_equals(container.renderSubtree, INVISIBLE_NOT_ACTIVATABLE, "context after update is locked")); - - const commit_promise = setVisible(container); - t.step(() => assert_equals(container.renderSubtree, "", "context during commit is unlocked")); - - await commit_promise; - t.step(() => assert_equals(container.renderSubtree, "", "context after commit is unlocked")); - - t.done(); - } - - window.onload = function() { - requestAnimationFrame(() => requestAnimationFrame(runTest)); - }; -}, "locked attribute"); -</script> -</html>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/measure-updated-layout.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/measure-updated-layout.html deleted file mode 100644 index 075011d..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/measure-updated-layout.html +++ /dev/null
@@ -1,100 +0,0 @@ -<!doctype HTML> -<html> -<meta charset="utf8"> -<title>Display Locking: measure updated layout</title> -<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> -<script src="resources/utils.js"></script> - -<style> -#container { - background: lightgreen; -} -#sizer { - width: 100px; - height: 100px; -} -.child { - width: 20px; - height: 20%; - background: cyan; -} -#spacer { - width: 150px; - height: 150px; - background: green; -} -</style> - -<div id="parent"></div> -<div id="spacer"></div> - -<script src="/resources/testharness.js"></script> -<script src="/resources/testharnessreport.js"></script> - -<script> -async_test((t) => { - function createChild(id) { - const child = document.createElement("div"); - child.classList = "child"; - child.id = id; - return child; - } - - function construct(container) { - const sizer = document.createElement("div"); - sizer.id = "sizer"; - container.appendChild(sizer); - sizer.appendChild(createChild("0")); - sizer.appendChild(createChild("1")); - sizer.appendChild(createChild("2")); - } - - function measureInUpdate() { - t.step(() => { - // Ensure children are laid out; this forces a layout. - assert_equals(document.getElementById("0").offsetTop, 0, "0 in update"); - assert_equals(document.getElementById("1").offsetTop, 20, "1 in update"); - assert_equals(document.getElementById("2").offsetTop, 40, "2 in update"); - // Both parent should be 0 height, since it's locked. Both parent and spacers - // should have 8 offsetTop. - assert_equals(document.getElementById("parent").offsetTop, 8, "parent in update"); - assert_equals(document.getElementById("spacer").offsetTop, 8, "spacer in update"); - }); - } - - function measureInCommit() { - t.step(() => { - // Ensure children are still laid out. - assert_equals(document.getElementById("0").offsetTop, 0, "0 in commit"); - assert_equals(document.getElementById("1").offsetTop, 20, "1 in commit"); - assert_equals(document.getElementById("2").offsetTop, 40, "2 in commit"); - // Now the parent should encompass a container, so spacer is pushed down. - assert_equals(document.getElementById("parent").offsetTop, 8, "parent in commit"); - assert_equals(document.getElementById("spacer").offsetTop, 108, "spacer in commit"); - }); - } - - async function runTest() { - const container = document.createElement("div"); - container.id = "container"; - await setInvisible(container); - - document.getElementById("parent").appendChild(container); - construct(container); - - container.updateRendering().then(() => { - measureInUpdate(); - setVisible(container).then(() => { - measureInCommit(); - t.done(); - }); - }); - } - - window.onload = function() { - requestAnimationFrame(() => requestAnimationFrame(runTest)); - }; -}, "Measure Updated Layout"); -</script> -</html>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/multiple-acquires-all-succeed.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/multiple-acquires-all-succeed.html deleted file mode 100644 index eee6dbb8..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/multiple-acquires-all-succeed.html +++ /dev/null
@@ -1,63 +0,0 @@ -<!doctype HTML> -<html class="reftest-wait"> -<meta charset="utf8"> -<title>Display Locking: multiple acquires and updates</title> -<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> -<link rel="match" href="pass-container-with-child-ref.html"> -<script src="/common/reftest-wait.js"></script> -<script src="resources/utils.js"></script> - -<style> -#container { - width: 150px; - height: 150px; - background: lightblue; -} -#child { - width: 50px; - height: 50px; - background: lightgreen; -} -</style> - -<div id="log"></div> - -<script> -function finishTest(status_string) { - if (document.getElementById("log").innerHTML === "") - document.getElementById("log").innerHTML = status_string; - takeScreenshot(); -} - -function runTest() { - const container = document.createElement("div"); - Promise.all([ - setInvisible(container), - setInvisible(container), - setInvisible(container), - setInvisible(container) - ]).then(() => { - const child = document.createElement("div"); - child.id = "child"; - container.appendChild(child); - - container.id = "container"; - document.body.appendChild(container); - - Promise.all([ - container.updateRendering(), - container.updateRendering(), - container.updateRendering(), - container.updateRendering() - ]).then(() => { - setVisible(container).then( - () => { finishTest("PASS"); }, - (e) => { finishTest("FAIL " + e.message); }); - }); - }); -} - -window.onload = runTest; -</script> -</html>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/nested-acquire.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/nested-acquire.html deleted file mode 100644 index bafe07a..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/nested-acquire.html +++ /dev/null
@@ -1,54 +0,0 @@ -<!doctype HTML> -<html class="reftest-wait"> -<meta charset="utf8"> -<title>Display Locking: nested acquire</title> -<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> -<link rel="match" href="pass-ref.html"> -<script src="/common/reftest-wait.js"></script> -<script src="resources/utils.js"></script> - -<style> -#outer { - width: 100px; - height: 100px; -} -#inner { - width: 50px; - height: 50px; - background: lightgreen; -} -div > div > div { - width: 10px; - height: 10px; - background: red; -} -</style> - -<div id="log"></div> -<div id="outer" class="container"> - <div id="inner" class="container"></div> -</div> - -<script> -function finishTest(status_string) { - if (document.getElementById("log").innerHTML === "") - document.getElementById("log").innerHTML = status_string; - takeScreenshot(); -} - -async function runTest() { - const outer = document.getElementById("outer"); - const inner = document.getElementById("inner"); - - await setInvisible(outer); - // Dirty the inner layout - inner.appendChild(document.createElement("div")); - setInvisible(inner).then( - () => { finishTest("PASS"); }, - (e) => { finishTest("FAIL " + e.message); }); -} - -window.onload = runTest; -</script> -</html>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/nested-commit.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/nested-commit.html deleted file mode 100644 index 9f5ad38..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/nested-commit.html +++ /dev/null
@@ -1,56 +0,0 @@ -<!doctype HTML> -<html class="reftest-wait"> -<meta charset="utf8"> -<title>Display Locking: nested commit</title> -<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> -<link rel="match" href="pass-ref.html"> -<script src="/common/reftest-wait.js"></script> -<script src="resources/utils.js"></script> - -<style> -#outer { - width: 100px; - height: 100px; -} -#inner { - width: 50px; - height: 50px; - background: lightgreen; -} -div > div > div { - width: 10px; - height: 10px; - background: red; -} -</style> - -<div id="log"></div> -<div id="outer" class="container"> - <div id="inner" class="container"></div> -</div> - -<script> -function finishTest(status_string) { - if (document.getElementById("log").innerHTML === "") - document.getElementById("log").innerHTML = status_string; - takeScreenshot(); -} - -async function runTest() { - const outer = document.getElementById("outer"); - const inner = document.getElementById("inner"); - - await Promise.all([ - setInvisible(outer), - setInvisible(inner)]); - // Dirty the inner layout - inner.appendChild(document.createElement("div")); - setVisible(inner).then( - () => { finishTest("PASS"); }, - (e) => { finishTest("FAIL " + e.message); }); -} - -window.onload = runTest; -</script> -</html>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/nested-update-ref.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/nested-update-ref.html deleted file mode 100644 index 01c35a0..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/nested-update-ref.html +++ /dev/null
@@ -1,9 +0,0 @@ -<!doctype HTML> -<html> -<meta charset="utf8"> -<title>Display Locking: nested update (reference)</title> -<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> - -<div id="log">PASS Element is nested under a locked element.</div> -</html>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/nested-update.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/nested-update.html deleted file mode 100644 index 8ce9a60..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/nested-update.html +++ /dev/null
@@ -1,56 +0,0 @@ -<!doctype HTML> -<html class="reftest-wait"> -<meta charset="utf8"> -<title>Display Locking: nested update</title> -<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> -<link rel="match" href="nested-update-ref.html"> -<script src="/common/reftest-wait.js"></script> -<script src="resources/utils.js"></script> - -<style> -#outer { - width: 100px; - height: 100px; -} -#inner { - width: 50px; - height: 50px; - background: lightgreen; -} -div > div > div { - width: 10px; - height: 10px; - background: red; -} -</style> - -<div id="log"></div> -<div id="outer" class="container"> - <div id="inner" class="container"></div> -</div> - -<script> -function finishTest(status_string) { - if (document.getElementById("log").innerHTML === "") - document.getElementById("log").innerHTML = status_string; - takeScreenshot(); -} - -async function runTest() { - const outer = document.getElementById("outer"); - const inner = document.getElementById("inner"); - - await Promise.all([ - setInvisible(outer), - setInvisible(inner)]); - // Dirty the inner layout - inner.appendChild(document.createElement("div")); - inner.updateRendering().then( - () => { finishTest("FAIL"); }, - (e) => { finishTest("PASS " + e.message); }); -} - -window.onload = runTest; -</script> -</html>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/resources/utils.js b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/resources/utils.js deleted file mode 100644 index aa3ac0f..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/resources/utils.js +++ /dev/null
@@ -1,25 +0,0 @@ -const INVISIBLE_ACTIVATABLE = "invisible"; -const INVISIBLE_NOT_ACTIVATABLE = "invisible skip-activation"; - -function setInvisible(element) { - return setRenderSubtree(element, INVISIBLE_NOT_ACTIVATABLE); -} - -function setInvisibleActivatable(element) { - return setRenderSubtree(element, INVISIBLE_ACTIVATABLE); -} - -function setVisible(element) { - return setRenderSubtree(element, ""); -} - -function setRenderSubtree(element, value) { - element.setAttribute("rendersubtree", value); - return new Promise((resolve, reject) => { - // Returns a promise that resolves when the rendering changes take effect. - // TODO(rakina): Change to requestPostAnimationFrame when available? - requestAnimationFrame(() => { - requestAnimationFrame(resolve); - }); - }); -}
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/selection-shadow.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/selection-shadow.html deleted file mode 100644 index e5a33e5..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/selection-shadow.html +++ /dev/null
@@ -1,70 +0,0 @@ -<!doctype HTML> -<html class="reftest-wait"> -<meta charset="utf8"> -<title>Display Locking: activatable allows selections</title> -<link rel="author" title="Rakina Zata Amni" href="mailto:rakina@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> -<link rel="match" href="selection-shadow-ref.html"> -<script src="/common/reftest-wait.js"></script> -<script src="resources/utils.js"></script> - -<style> -div:not([rendersubtree~="invisible"]) { - contain-intrinsic-size: legacy !important; -} -</style> -</div> -<div id="host"> - <div id="slottedToFirst" slot="first"> - slotted to first slot - </div> - <div id="slottedToSecond" slot="second"> - slotted to second slot - </div> -</div> - -<script> -/* -Structure: -<div id=host> // locked, activatable - #shadowRoot - <slot first> - <div id=slottedToFirst> // locked, activatable - slotted to first slot - shadow text - <div id=nonActivatable> // locked, non-activatable - non activatable - <slot second> - <div id=slottedToSecond> - slotted to second slot -*/ - -async function runTest() { - const shadowRoot = host.attachShadow({ mode: "open" }); - const firstSlot = document.createElement("slot"); - firstSlot.name = "first"; - shadowRoot.appendChild(firstSlot); - shadowRoot.appendChild(document.createTextNode("shadow text")); - const nonActivatable = document.createElement("div"); - nonActivatable.innerText = "non activatable"; - shadowRoot.appendChild(nonActivatable); - const secondSlot = document.createElement("slot"); - secondSlot.name = "second"; - shadowRoot.appendChild(secondSlot); - - host.style = "contain-intrinsic-size: 100px 100px;" - nonActivatable.style = "contain-intrinsic-size: 20px 20px;" - slottedToFirst.style = "contain-intrinsic-size: 40px 40px;" - await setInvisibleActivatable(host); - await setInvisible(nonActivatable); - await setInvisibleActivatable(slottedToFirst); - - window.getSelection().removeAllRanges(); - const selectionRange = document.createRange(); - selectionRange.setStart(slottedToFirst.firstChild, 8); - selectionRange.setEnd(slottedToSecond.firstChild, 10); - window.getSelection().addRange(selectionRange); - requestAnimationFrame(takeScreenshot); -} -window.onload = () => { requestAnimationFrame(runTest); }; -</script>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/selection.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/selection.html deleted file mode 100644 index 8eda85f3..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/selection.html +++ /dev/null
@@ -1,53 +0,0 @@ -<!doctype HTML> -<html class="reftest-wait"> -<meta charset="utf8"> -<title>Display Locking: activatable allows selections</title> -<link rel="author" title="Rakina Zata Amni" href="mailto:rakina@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> -<link rel="match" href="selection-ref.html"> -<script src="/common/reftest-wait.js"></script> -<script src="resources/utils.js"></script> - -<style> - #userSelectNone { - user-select: none; - } - div:not([rendersubtree~="invisible"]) { - contain-intrinsic-size: legacy !important; - } -</style> -<div id="container"> - <div id="notLocked"> - not locked! - </div> - <div id="nonActivatable"> - non-activatable locked - </div> - <div id="userSelectNone"> - activatable user-select is none - </div> - <div id="nested"> - nested activatable locked - </div> -</div> - -<script> -async function runTest() { - container.style = "contain-intrinsic-size: 100px 100px;" - nonActivatable.style = "contain-intrinsic-size: 20px 20px;" - userSelectNone.style = "contain-intrinsic-size: 30px 30px;" - nested.style = "contain-intrinsic-size: 40px 40px;" - await setInvisibleActivatable(container); - await setInvisible(nonActivatable); - await setInvisibleActivatable(userSelectNone); - await setInvisibleActivatable(nested); - - window.getSelection().removeAllRanges(); - const selectionRange = document.createRange(); - selectionRange.setStart(notLocked.firstChild, 4); - selectionRange.setEnd(nested.firstChild, 7); - window.getSelection().addRange(selectionRange); - requestAnimationFrame(takeScreenshot); -} -window.onload = () => { requestAnimationFrame(runTest); }; -</script>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/acquire-after-resize-ref.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/acquire-after-resize-ref.html deleted file mode 100644 index 977d9fd..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/acquire-after-resize-ref.html +++ /dev/null
@@ -1,24 +0,0 @@ -<!doctype HTML> -<html> -<meta charset="utf8"> -<title>Display Locking: acquire after resizing (reference)</title> -<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> - -<style> -#container { - contain: style layout; - width: 150px; - height: 150px; -} -#spacer { - width: 50px; - height: 50px; - background: lightgreen; -} -</style> - -<div id="log">PASS</div> -<div id="container"></div> -<div id="spacer"></div> -</html>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/acquire-after-resize.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/acquire-after-resize.html deleted file mode 100644 index e358f80..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/acquire-after-resize.html +++ /dev/null
@@ -1,45 +0,0 @@ -<!doctype HTML> -<html class="reftest-wait"> -<meta charset="utf8"> -<title>Display Locking: acquire after resizing</title> -<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> -<link rel="match" href="acquire-after-resize-ref.html"> -<script src="/common/reftest-wait.js"></script> -<script src="../resources/utils.js"></script> - -<style> -#spacer { - width: 50px; - height: 50px; - background: lightgreen; -} -#small { - contain-intrinsic-size: 150px 150px; -} -div:not([rendersubtree~="invisible"]) { - contain-intrinsic-size: legacy !important; -} -</style> - -<div id="log"></div> -<div id="small" class="contained">Lorem ipsum</div> -<div id="spacer"> - -<script> -function finishTest(status_string) { - if (document.getElementById("log").innerHTML === "") - document.getElementById("log").innerHTML = status_string; - takeScreenshot(); -} - -function runTest() { - const container = document.getElementById("small"); - setInvisible(container).then( - () => { finishTest("PASS"); }, - (e) => { finishTest("FAIL " + e.message); }); -} - -window.onload = runTest; -</script> -</html>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/acquire-size-used-when-auto-size-border-and-scrollbars-ref.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/acquire-size-used-when-auto-size-border-and-scrollbars-ref.html deleted file mode 100644 index bee9142..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/acquire-size-used-when-auto-size-border-and-scrollbars-ref.html +++ /dev/null
@@ -1,30 +0,0 @@ -<!doctype HTML> -<html> -<meta charset="utf8"> -<title>Display Locking: acquire() size + border + scrollbars (reference)</title> -<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> - -<style> -#border { - width: max-content; - border: 1px solid green; -} -#container { - contain: style layout; - overflow: scroll; - border: 10px solid black; - background: lightblue; -} -#sizer { - width: 123px; - height: 456px; -} -</style> - -<div id="border"> - <div id="container"> - <div id="sizer"></div> - </div> -</div> -</html>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/acquire-size-used-when-auto-size-border-and-scrollbars.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/acquire-size-used-when-auto-size-border-and-scrollbars.html deleted file mode 100644 index df44a57..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/acquire-size-used-when-auto-size-border-and-scrollbars.html +++ /dev/null
@@ -1,48 +0,0 @@ -<!doctype HTML> -<html class="reftest-wait"> -<meta charset="utf8"> -<title>Display Locking: acquire() size + border + scrollbars</title> -<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> -<link rel="match" href="acquire-size-used-when-auto-size-border-and-scrollbars-ref.html"> -<script src="/common/reftest-wait.js"></script> -<script src="../resources/utils.js"></script> - -<style> -#border { - width: max-content; - border: 1px solid green; -} -#container { - background: lightblue; - overflow: scroll; - border: 10px solid black; - contain-intrinsic-size: 123px 456px; -} -#child { - width: 500px; - height: 500px; - background: red; -} -div:not([rendersubtree~="invisible"]) { - contain-intrinsic-size: legacy !important; -} -</style> - -<div id="border"> - <div id="container"> - Lorem ipsum - <div id="child">Dolor</div> - </div> -</div> - -<script> -async function runTest() { - const container = document.getElementById("container"); - await setInvisible(container); - takeScreenshot(); -} - -window.onload = runTest; -</script> -</html>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/acquire-size-used-when-auto-size-border-min-content.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/acquire-size-used-when-auto-size-border-min-content.html deleted file mode 100644 index 04d256b..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/acquire-size-used-when-auto-size-border-min-content.html +++ /dev/null
@@ -1,52 +0,0 @@ -<!doctype HTML> -<html class="reftest-wait"> -<meta charset="utf8"> -<title>Display Locking: acquire() size + border, with min-content</title> -<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> -<link rel="match" href="acquire-size-used-when-auto-size-border-ref.html"> -<script src="/common/reftest-wait.js"></script> -<script src="../resources/utils.js"></script> - -<style> -#border { - width: min-content; - border: 1px solid green; -} -#container { - border: 10px solid black; - contain-intrinsic-size: 123px 456px; -} -#child { - width: 500px; - height: 500px; - background: red; -} -div:not([rendersubtree~="invisible"]) { - contain-intrinsic-size: legacy !important; -} -</style> - -<div id="border"> - <div id="container"> - <div id="child"></div> - </div> -</div> - -<script> -if (window.testRunner) - window.testRunner.waitUntilDone(); - -function finishTest() { - if (window.testRunner) - window.testRunner.notifyDone(); -} - -function runTest() { - let container = document.getElementById("container"); - setInvisible(container).then(finishTest); -} - -window.onload = runTest; -</script> -</html>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/acquire-size-used-when-auto-size-border-ref.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/acquire-size-used-when-auto-size-border-ref.html deleted file mode 100644 index 9a3b46f..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/acquire-size-used-when-auto-size-border-ref.html +++ /dev/null
@@ -1,28 +0,0 @@ -<!doctype HTML> -<html> -<meta charset="utf8"> -<title>Display Locking: acquire() size + border (reference)</title> -<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> - -<style> -#border { - width: max-content; - border: 1px solid green; -} -#container { - contain: style layout; - border: 10px solid black; -} -#sizer { - width: 123px; - height: 456px; -} -</style> - -<div id="border"> - <div id="container"> - <div id="sizer"></div> - </div> -</div> -</html>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/acquire-size-used-when-auto-size-border.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/acquire-size-used-when-auto-size-border.html deleted file mode 100644 index e84b60d..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/acquire-size-used-when-auto-size-border.html +++ /dev/null
@@ -1,45 +0,0 @@ -<!doctype HTML> -<html class="reftest-wait"> -<meta charset="utf8"> -<title>Display Locking: acquire() size + border</title> -<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> -<link rel="match" href="acquire-size-used-when-auto-size-border-ref.html"> -<script src="/common/reftest-wait.js"></script> -<script src="../resources/utils.js"></script> - -<style> -#border { - width: max-content; - border: 1px solid green; -} -#container { - border: 10px solid black; - contain-intrinsic-size: 123px 456px; -} -#child { - width: 500px; - height: 500px; - background: red; -} -div:not([rendersubtree~="invisible"]) { - contain-intrinsic-size: legacy !important; -} -</style> - -<div id="border"> - <div id="container"> - <div id="child"></div> - </div> -</div> - -<script> -async function runTest() { - const container = document.getElementById("container"); - await setInvisible(container); - takeScreenshot(); -} - -window.onload = runTest; -</script> -</html>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/acquire-size-used-when-auto-size-ref.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/acquire-size-used-when-auto-size-ref.html deleted file mode 100644 index 5612a1b..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/acquire-size-used-when-auto-size-ref.html +++ /dev/null
@@ -1,27 +0,0 @@ -<!doctype HTML> -<html> -<meta charset="utf8"> -<title>Display Locking: acquire() size (reference)</title> -<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> - -<style> -#border { - width: max-content; - border: 1px solid green; -} -#container { - contain: style layout; -} -#sizer { - width: 123px; - height: 456px; -} -</style> - -<div id="border"> - <div id="container"> - <div id="sizer"></div> - </div> -</div> -</html>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/acquire-size-used-when-auto-size-scrollbars-ref.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/acquire-size-used-when-auto-size-scrollbars-ref.html deleted file mode 100644 index 920afc3..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/acquire-size-used-when-auto-size-scrollbars-ref.html +++ /dev/null
@@ -1,28 +0,0 @@ -<!doctype HTML> -<html> -<meta charset="utf8"> -<title>Display Locking: acquire() size + scrollbars (reference)</title> -<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> - -<style> -#border { - width: max-content; - border: 1px solid green; -} -#container { - contain: style layout; - overflow: scroll; -} -#sizer { - width: 123px; - height: 456px; -} -</style> - -<div id="border"> - <div id="container"> - <div id="sizer"></div> - </div> -</div> -</html>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/acquire-size-used-when-auto-size-scrollbars.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/acquire-size-used-when-auto-size-scrollbars.html deleted file mode 100644 index a63bb058..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/acquire-size-used-when-auto-size-scrollbars.html +++ /dev/null
@@ -1,45 +0,0 @@ -<!doctype HTML> -<html class="reftest-wait"> -<meta charset="utf8"> -<title>Display Locking: acquire() size + scrollbars</title> -<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> -<link rel="match" href="acquire-size-used-when-auto-size-scrollbars-ref.html"> -<script src="/common/reftest-wait.js"></script> -<script src="../resources/utils.js"></script> - -<style> -#border { - width: max-content; - border: 1px solid green; -} -#container { - overflow: scroll; - contain-intrinsic-size: 123px 456px; -} -#child { - width: 500px; - height: 500px; - background: red; -} -div:not([rendersubtree~="invisible"]) { - contain-intrinsic-size: legacy !important; -} -</style> - -<div id="border"> - <div id="container"> - <div id="child"></div> - </div> -</div> - -<script> -async function runTest() { - const container = document.getElementById("container"); - await setInvisible(container); - takeScreenshot(); -} - -window.onload = runTest; -</script> -</html>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/acquire-size-used-when-auto-size.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/acquire-size-used-when-auto-size.html deleted file mode 100644 index cda06b8..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/acquire-size-used-when-auto-size.html +++ /dev/null
@@ -1,44 +0,0 @@ -<!doctype HTML> -<html class="reftest-wait"> -<meta charset="utf8"> -<title>Display Locking: acquire() size</title> -<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> -<link rel="match" href="acquire-size-used-when-auto-size-ref.html"> -<script src="/common/reftest-wait.js"></script> -<script src="../resources/utils.js"></script> - -<style> -#border { - width: max-content; - border: 1px solid green; -} -#container { - contain-intrinsic-size: 123px 456px; -} -#child { - width: 500px; - height: 500px; - background: red; -} -div:not([rendersubtree~="invisible"]) { - contain-intrinsic-size: legacy !important; -} -</style> - -<div id="border"> - <div id="container"> - <div id="child"></div> - </div> -</div> - -<script> -async function runTest() { - const container = document.getElementById("container"); - await setInvisible(container); - takeScreenshot(); -} - -window.onload = runTest; -</script> -</html>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/change-content-size.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/change-content-size.html deleted file mode 100644 index d51a1c9..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/change-content-size.html +++ /dev/null
@@ -1,47 +0,0 @@ -<!doctype HTML> -<html class="reftest-wait"> -<meta charset="utf8"> -<title>Display Locking: re-acquire with a different size</title> -<link rel="author" title="Rakina Zata Amni" href="mailto:rakina@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> -<link rel="match" href="acquire-after-resize-ref.html"> -<script src="/common/reftest-wait.js"></script> -<script src="../resources/utils.js"></script> - -<style> -.contained { - contain-intrinsic-size: 123px 456px; -} -#spacer { - width: 50px; - height: 50px; - background: lightgreen; -} -div:not([rendersubtree~="invisible"]) { - contain-intrinsic-size: legacy !important; -} -</style> - -<div id="log"></div> -<div id="small" class="contained"></div> -<div id="spacer"> - -<script> -function finishTest(status_string) { - if (document.getElementById("log").innerHTML === "") - document.getElementById("log").innerHTML = status_string; - takeScreenshot(); -} - -function runTest() { - const container = document.getElementById("small"); - setInvisible(container).then(() => { - container.style = "contain-intrinsic-size: 150px 150px"; - requestAnimationFrame(() => finishTest("PASS")); - }); -} - -window.onload = runTest; -</script> -</html> -
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/contain-size-block-ref.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/contain-size-block-ref.html deleted file mode 100644 index 0f74b4b..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/contain-size-block-ref.html +++ /dev/null
@@ -1,16 +0,0 @@ -<!doctype HTML> -<html> -<meta charset="utf8"> -<title>Display Locking: contain: size block layout (reference)</title> -<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> - -<style> -#border { - border: 1px solid black; - width: min-content; -} -</style> -<div id="border"> -</div> -</html>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/contain-size-block.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/contain-size-block.html deleted file mode 100644 index bbce411..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/contain-size-block.html +++ /dev/null
@@ -1,39 +0,0 @@ -<!doctype HTML> -<html class="reftest-wait"> -<meta charset="utf8"> -<title>Display Locking: contain: size block layout</title> -<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> -<link rel="match" href="contain-size-block-ref.html"> -<script src="/common/reftest-wait.js"></script> -<script src="../resources/utils.js"></script> - -<style> -#border { - border: 1px solid black; - width: min-content; -} -#container { - contain: style layout size; - contain-intrinsic-size: 0; -} -div:not([rendersubtree~="invisible"]) { - contain-intrinsic-size: legacy !important; -} -</style> - -<div id="border"> - <div id="container"></div> -</div> - -<script> -function runTest() { - const container = document.getElementById("container"); - setInvisible(container).then(() => { - takeScreenshot(); - }); -} - -window.onload = runTest; -</script> -</html>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/contain-size-fieldset-ref.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/contain-size-fieldset-ref.html deleted file mode 100644 index 8867824..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/contain-size-fieldset-ref.html +++ /dev/null
@@ -1,24 +0,0 @@ -<!doctype HTML> -<html> -<meta charset="utf8"> -<title>Display Locking: fieldset with legend and size containment, sized by display lock</title> -<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> - -<style> -#border { - border: 1px solid black; - width: min-content; -} -#container { - width: 123px; - height: 234px; -} -</style> - -<div id="border"> - <fieldset id="container"> - </fieldset> -</div> - -</html>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/contain-size-fieldset.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/contain-size-fieldset.html deleted file mode 100644 index 48f3162..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/contain-size-fieldset.html +++ /dev/null
@@ -1,41 +0,0 @@ -<!doctype HTML> -<html class="reftest-wait"> -<meta charset="utf8"> -<title>Display Locking: fieldset with legend and size containment, sized by display lock</title> -<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> -<link rel="match" href="contain-size-fieldset-ref.html"> -<script src="/common/reftest-wait.js"></script> -<script src="../resources/utils.js"></script> - -<style> -#border { - border: 1px solid black; - width: min-content; -} -#container { - contain-intrinsic-size: 123px 234px; -} -*:not([rendersubtree~="invisible"]) { - contain-intrinsic-size: legacy !important; -} -</style> - -<div id="border"> - <fieldset id="container"> - <legend>This is a legend</legend> - This is some content. - </fieldset> -</div> - -<script> -async function runTest() { - const container = document.getElementById("container"); - await setInvisible(container); - takeScreenshot(); -} - -window.onload = requestAnimationFrame(() => requestAnimationFrame(runTest)); -</script> - -</html>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/contain-size-flex-ref.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/contain-size-flex-ref.html deleted file mode 100644 index 0a421444..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/contain-size-flex-ref.html +++ /dev/null
@@ -1,34 +0,0 @@ -<!doctype HTML> -<html> -<meta charset="utf8"> -<title>Display Locking: contain: size flex layout (reference)</title> -<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> - -<style> -#flexer { - display: flex; - flex-direction: row; - justify-content: space-around; - width: 200px; - height: 200px; - background: lightgreen; -} -#container { - contain: style layout size; - width: 12px; - height: 34px; -} -.item { - width: 50px; - height: 60px; - background: blue; -} -</style> - -<div id="flexer"> - <div class="item"></div> - <div id="container"></div> - <div class="item"></div> -</div> -</html>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/contain-size-flex.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/contain-size-flex.html deleted file mode 100644 index 76ea1143..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/contain-size-flex.html +++ /dev/null
@@ -1,49 +0,0 @@ -<!doctype HTML> -<html class="reftest-wait"> -<meta charset="utf8"> -<title>Display Locking: contain: size flex layout</title> -<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> -<link rel="match" href="contain-size-flex-ref.html"> -<script src="/common/reftest-wait.js"></script> -<script src="../resources/utils.js"></script> - - -<style> -#flexer { - display: flex; - flex-direction: row; - justify-content: space-around; - width: 200px; - height: 200px; - background: lightgreen; -} -#container { - contain-intrinsic-size: 12px 34px; -} -.item { - width: 50px; - height: 60px; - background: blue; -} -div:not([rendersubtree~="invisible"]) { - contain-intrinsic-size: legacy !important; -} -</style> - -<div id="flexer"> - <div class="item"></div> - <div id="container"></div> - <div class="item"></div> -</div> - -<script> -async function runTest() { - const container = document.getElementById("container"); - await setInvisible(container); - takeScreenshot(); -} - -window.onload = runTest; -</script> -</html>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/contain-size-replaced-ref.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/contain-size-replaced-ref.html deleted file mode 100644 index c1500c7..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/contain-size-replaced-ref.html +++ /dev/null
@@ -1,22 +0,0 @@ -<!doctype HTML> -<html> -<meta charset="utf8"> -<title>Display Locking: contain: size replaced layout (reference)</title> -<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> - -<style> -#border { - border: 1px solid blue; - width: max-content; -} -img { - contain: style layout size; - visibility: hidden; -} -</style> - -<div id="border"> - <img src="resources/blue-100.png"> -</div> -</html>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/contain-size-replaced.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/contain-size-replaced.html deleted file mode 100644 index cb93a8f..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/contain-size-replaced.html +++ /dev/null
@@ -1,37 +0,0 @@ -<!doctype HTML> -<html class="reftest-wait"> -<meta charset="utf8"> -<title>Display Locking: contain: size replaced layout</title> -<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> -<link rel="match" href="contain-size-replaced-ref.html"> -<script src="/common/reftest-wait.js"></script> -<script src="../resources/utils.js"></script> - -<style> -#border { - border: 1px solid blue; - width: max-content; -} -img { - contain-intrinsic-size: none; -} -img:not([rendersubtree~="invisible"]) { - contain-intrinsic-size: legacy !important; -} -</style> - -<div id="border"> - <img id="element" src="resources/blue-100.png"> -</div> - -<script> -async function runTest() { - const element = document.getElementById("element"); - await setInvisible(element); - takeScreenshot(); -} - -window.onload = () => requestAnimationFrame(runTest); -</script> -</html>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/fieldset-empty-ref.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/fieldset-empty-ref.html deleted file mode 100644 index 6f7d2551..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/fieldset-empty-ref.html +++ /dev/null
@@ -1,18 +0,0 @@ -<!doctype HTML> -<html> -<meta charset="utf8"> -<title>Display Locking: empty fieldset (reference)</title> -<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> - -<style> -#border { - border: 1px solid black; - width: min-content; -} -</style> - -<div id="border"> - <fieldset></fieldset> -</div> -</html>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/fieldset-empty.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/fieldset-empty.html deleted file mode 100644 index ea34764..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/fieldset-empty.html +++ /dev/null
@@ -1,38 +0,0 @@ -<!doctype HTML> -<html class="reftest-wait"> -<meta charset="utf8"> -<title>Display Locking: empty fieldset</title> -<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> -<link rel="match" href="fieldset-empty-ref.html"> -<script src="/common/reftest-wait.js"></script> -<script src="../resources/utils.js"></script> - -<style> -#border { - border: 1px solid black; - width: min-content; -} -#container { - contain-intrinsic-size: 0px 0px; -} -fieldset:not([rendersubtree~="invisible"]) { - contain-intrinsic-size: legacy !important; -} -</style> - -<div id="border"> - <fieldset id="container"></fieldset> -</div> - -<script> -async function runTest() { - const container = document.getElementById("container"); - await setInvisible(container); - takeScreenshot(); -} - -window.onload = requestAnimationFrame(() => requestAnimationFrame(runTest)); -</script> - -</html>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/fieldset-with-legend-sized-ref.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/fieldset-with-legend-sized-ref.html deleted file mode 100644 index 7fb1b833..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/fieldset-with-legend-sized-ref.html +++ /dev/null
@@ -1,24 +0,0 @@ -<!doctype HTML> -<html> -<meta charset="utf8"> -<title>Display Locking: fieldset with legend, sized by display lock (reference)</title> -<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> - -<style> -#border { - border: 1px solid black; - width: min-content; -} -#child { - width: 123px; - height: 234px; -} -</style> - -<div id="border"> - <fieldset> - <div id="child"></div> - </fieldset> -</div> -</html>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/fieldset-with-legend-sized.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/fieldset-with-legend-sized.html deleted file mode 100644 index 5f64fc29..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/fieldset-with-legend-sized.html +++ /dev/null
@@ -1,41 +0,0 @@ -<!doctype HTML> -<html class="reftest-wait"> -<meta charset="utf8"> -<title>Display Locking: fieldset with legend, sized by display lock</title> -<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> -<link rel="match" href="fieldset-with-legend-sized-ref.html"> -<script src="/common/reftest-wait.js"></script> -<script src="../resources/utils.js"></script> - -<style> -#border { - border: 1px solid black; - width: min-content; -} -#container { - contain-intrinsic-size: 123px 234px; -} -fieldset:not([rendersubtree~="invisible"]) { - contain-intrinsic-size: legacy !important; -} -</style> - -<div id="border"> - <fieldset id="container"> - <legend>This is a legend</legend> - This is some content. - </fieldset> -</div> - -<script> -async function runTest() { - const container = document.getElementById("container"); - await setInvisible(container); - takeScreenshot(); -} - -window.onload = requestAnimationFrame(() => requestAnimationFrame(runTest)); -</script> - -</html>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/fieldset-with-legend.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/fieldset-with-legend.html deleted file mode 100644 index 198b307a..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/fieldset-with-legend.html +++ /dev/null
@@ -1,40 +0,0 @@ -<!doctype HTML> -<html class="reftest-wait"> -<meta charset="utf8"> -<title>Display Locking: fieldset with legend</title> -<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> -<link rel="match" href="fieldset-empty-ref.html"> -<script src="/common/reftest-wait.js"></script> -<script src="../resources/utils.js"></script> - -<style> -#border { - border: 1px solid black; - width: min-content; -} -#container { - contain-intrinsic-size: 0px 0px; -} -fieldset:not([rendersubtree~="invisible"]) { - contain-intrinsic-size: legacy !important; -} -</style> - -<div id="border"> - <fieldset id="container"> - <legend>This is a legend</legend> - </fieldset> -</div> - -<script> -async function runTest() { - const container = document.getElementById("container"); - await setInvisible(container); - takeScreenshot(); -} - -window.onload = requestAnimationFrame(() => requestAnimationFrame(runTest)); -</script> - -</html>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/flex-column-horizontal-ref.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/flex-column-horizontal-ref.html deleted file mode 100644 index ee42c4e..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/flex-column-horizontal-ref.html +++ /dev/null
@@ -1,37 +0,0 @@ -<!doctype HTML> -<html> -<meta charset="utf8"> -<title>Display Locking: flex column, horizontal-tb (reference)</title> -<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> - -<style> -#flexer { - display: flex; - flex-direction: column; - justify-content: space-around; - width: 200px; - height: 200px; - background: lightgreen; - writing-mode: horizontal-tb; -} -#container { - contain: style layout; -} -#child { - width: 12px; - height: 34px; -} -.item { - width: 50px; - height: 60px; - background: blue; -} -</style> - -<div id="flexer"> - <div class="item"></div> - <div id="container"><div id="child"></div></div> - <div class="item"></div> -</div> -</html>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/flex-column-horizontal-with-grow-ref.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/flex-column-horizontal-with-grow-ref.html deleted file mode 100644 index 5497c1f..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/flex-column-horizontal-with-grow-ref.html +++ /dev/null
@@ -1,39 +0,0 @@ -<!doctype HTML> -<html> -<meta charset="utf8"> -<title>Display Locking: flex column with grow, horizontal-tb (reference)</title> -<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> - -<style> -#flexer { - display: flex; - flex-direction: column; - justify-content: space-around; - width: 200px; - height: 200px; - background: lightgreen; - writing-mode: horizontal-tb; -} -#container { - contain: style layout; - flex-grow: 3; -} -#child { - width: 12px; - height: 34px; -} -.item { - width: 50px; - height: 60px; - background: blue; - flex-grow: 1; -} -</style> - -<div id="flexer"> - <div class="item"></div> - <div id="container"><div id="child"></div></div> - <div class="item"></div> -</div> -</html>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/flex-column-horizontal-with-grow.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/flex-column-horizontal-with-grow.html deleted file mode 100644 index eae0c82..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/flex-column-horizontal-with-grow.html +++ /dev/null
@@ -1,51 +0,0 @@ -<!doctype HTML> -<html class="reftest-wait"> -<meta charset="utf8"> -<title>Display Locking: flex column with grow, horizontal-tb</title> -<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> -<link rel="match" href="flex-column-horizontal-with-grow-ref.html"> -<script src="/common/reftest-wait.js"></script> -<script src="../resources/utils.js"></script> - -<style> -#flexer { - display: flex; - flex-direction: column; - justify-content: space-around; - width: 200px; - height: 200px; - background: lightgreen; - writing-mode: horizontal-tb; -} -#container { - contain-intrinsic-size: 12px 34px; - flex-grow: 3; -} -.item { - width: 50px; - height: 60px; - background: blue; - flex-grow: 1; -} -div:not([rendersubtree~="invisible"]) { - contain-intrinsic-size: legacy !important; -} -</style> - -<div id="flexer"> - <div class="item"></div> - <div id="container"></div> - <div class="item"></div> -</div> - -<script> -async function runTest() { - const container = document.getElementById("container"); - await setInvisible(container); - takeScreenshot(); -} - -window.onload = runTest; -</script> -</html>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/flex-column-horizontal.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/flex-column-horizontal.html deleted file mode 100644 index 5c15feb..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/flex-column-horizontal.html +++ /dev/null
@@ -1,50 +0,0 @@ -<!doctype HTML> -<html class="reftest-wait"> -<meta charset="utf8"> -<title>Display Locking: flex column, horizontal-tb</title> -<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> -<link rel="match" href="flex-column-horizontal-ref.html"> -<script src="/common/reftest-wait.js"></script> -<script src="../resources/utils.js"></script> - -<style> -#flexer { - display: flex; - flex-direction: column; - justify-content: space-around; - width: 200px; - height: 200px; - background: lightgreen; - writing-mode: horizontal-tb; -} -#container { - contain-intrinsic-size: 12px 34px; -} -.item { - width: 50px; - height: 60px; - background: blue; -} -div:not([rendersubtree~="invisible"]) { - contain-intrinsic-size: legacy !important; -} -</style> - -<div id="flexer"> - <div class="item"></div> - <div id="container"></div> - <div class="item"></div> -</div> - -<script> -async function runTest() { - const container = document.getElementById("container"); - await setInvisible(container); - takeScreenshot(); -} - -window.onload = runTest; -</script> - -</html>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/flex-column-vertical-ref.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/flex-column-vertical-ref.html deleted file mode 100644 index 5cda0b94..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/flex-column-vertical-ref.html +++ /dev/null
@@ -1,37 +0,0 @@ -<!doctype HTML> -<html> -<meta charset="utf8"> -<title>Display Locking: flex column, vertical-rl (reference)</title> -<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> - -<style> -#flexer { - display: flex; - flex-direction: column; - justify-content: space-around; - width: 200px; - height: 200px; - background: lightgreen; - writing-mode: vertical-rl; -} -#container { - contain: style layout; -} -#child { - width: 12px; - height: 34px; -} -.item { - width: 50px; - height: 60px; - background: blue; -} -</style> - -<div id="flexer"> - <div class="item"></div> - <div id="container"><div id="child"></div></div> - <div class="item"></div> -</div> -</html>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/flex-column-vertical-with-grow-ref.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/flex-column-vertical-with-grow-ref.html deleted file mode 100644 index 01c3741..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/flex-column-vertical-with-grow-ref.html +++ /dev/null
@@ -1,39 +0,0 @@ -<!doctype HTML> -<html> -<meta charset="utf8"> -<title>Display Locking: flex column with grow, vertical-rl (reference)</title> -<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> - -<style> -#flexer { - display: flex; - flex-direction: column; - justify-content: space-around; - width: 200px; - height: 200px; - background: lightgreen; - writing-mode: vertical-rl; -} -#container { - contain: style layout; - flex-grow: 3; -} -#child { - width: 12px; - height: 34px; -} -.item { - width: 50px; - height: 60px; - background: blue; - flex-grow: 1; -} -</style> - -<div id="flexer"> - <div class="item"></div> - <div id="container"><div id="child"></div></div> - <div class="item"></div> -</div> -</html>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/flex-column-vertical-with-grow.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/flex-column-vertical-with-grow.html deleted file mode 100644 index 083b401..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/flex-column-vertical-with-grow.html +++ /dev/null
@@ -1,51 +0,0 @@ -<!doctype HTML> -<html class="reftest-wait"> -<meta charset="utf8"> -<title>Display Locking: flex column with grow, vertical-rl</title> -<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> -<link rel="match" href="flex-column-vertical-with-grow-ref.html"> -<script src="/common/reftest-wait.js"></script> -<script src="../resources/utils.js"></script> - -<style> -#flexer { - display: flex; - flex-direction: column; - justify-content: space-around; - width: 200px; - height: 200px; - background: lightgreen; - writing-mode: vertical-rl; -} -#container { - contain-intrinsic-size: 12px 34px; - flex-grow: 3; -} -.item { - width: 50px; - height: 60px; - background: blue; - flex-grow: 1; -} -div:not([rendersubtree~="invisible"]) { - contain-intrinsic-size: legacy !important; -} -</style> - -<div id="flexer"> - <div class="item"></div> - <div id="container"></div> - <div class="item"></div> -</div> - -<script> -async function runTest() { - const container = document.getElementById("container"); - await setInvisible(container); - takeScreenshot(); -} - -window.onload = runTest; -</script> -</html>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/flex-column-vertical.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/flex-column-vertical.html deleted file mode 100644 index 725428f34..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/flex-column-vertical.html +++ /dev/null
@@ -1,50 +0,0 @@ -<!doctype HTML> -<html class="reftest-wait"> -<meta charset="utf8"> -<title>Display Locking: flex column, vertical-rl</title> -<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> -<link rel="match" href="flex-column-vertical-ref.html"> -<script src="/common/reftest-wait.js"></script> -<script src="../resources/utils.js"></script> - -<style> -#flexer { - display: flex; - flex-direction: column; - justify-content: space-around; - width: 200px; - height: 200px; - background: lightgreen; - writing-mode: vertical-rl; -} -#container { - contain-intrinsic-size: 12px 34px; - contain: style layout; -} -.item { - width: 50px; - height: 60px; - background: blue; -} -div:not([rendersubtree~="invisible"]) { - contain-intrinsic-size: legacy !important; -} -</style> - -<div id="flexer"> - <div class="item"></div> - <div id="container"></div> - <div class="item"></div> -</div> - -<script> -async function runTest() { - const container = document.getElementById("container"); - await setInvisible(container); - takeScreenshot(); -} - -window.onload = runTest; -</script> -</html>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/flex-row-horizontal-ref.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/flex-row-horizontal-ref.html deleted file mode 100644 index 89307899..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/flex-row-horizontal-ref.html +++ /dev/null
@@ -1,37 +0,0 @@ -<!doctype HTML> -<html> -<meta charset="utf8"> -<title>Display Locking: flex row, horizontal-tb (reference)</title> -<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> - -<style> -#flexer { - display: flex; - flex-direction: row; - justify-content: space-around; - width: 200px; - height: 200px; - background: lightgreen; - writing-mode: horizontal-tb; -} -#container { - contain: style layout; -} -#child { - width: 12px; - height: 34px; -} -.item { - width: 50px; - height: 60px; - background: blue; -} -</style> - -<div id="flexer"> - <div class="item"></div> - <div id="container"><div id="child"></div></div> - <div class="item"></div> -</div> -</html>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/flex-row-horizontal-with-grow-ref.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/flex-row-horizontal-with-grow-ref.html deleted file mode 100644 index 6339313..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/flex-row-horizontal-with-grow-ref.html +++ /dev/null
@@ -1,39 +0,0 @@ -<!doctype HTML> -<html> -<meta charset="utf8"> -<title>Display Locking: flex row with grow, horizontal-tb (reference)</title> -<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> - -<style> -#flexer { - display: flex; - flex-direction: row; - justify-content: space-around; - width: 200px; - height: 200px; - background: lightgreen; - writing-mode: horizontal-tb; -} -#container { - contain: style layout; - flex-grow: 3; -} -#child { - width: 12px; - height: 34px; -} -.item { - width: 50px; - height: 60px; - background: blue; - flex-grow: 1; -} -</style> - -<div id="flexer"> - <div class="item"></div> - <div id="container"><div id="child"></div></div> - <div class="item"></div> -</div> -</html>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/flex-row-horizontal-with-grow.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/flex-row-horizontal-with-grow.html deleted file mode 100644 index 3f10afb..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/flex-row-horizontal-with-grow.html +++ /dev/null
@@ -1,51 +0,0 @@ -<!doctype HTML> -<html class="reftest-wait"> -<meta charset="utf8"> -<title>Display Locking: flex row with grow, horizontal-tb</title> -<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> -<link rel="match" href="flex-row-horizontal-with-grow-ref.html"> -<script src="/common/reftest-wait.js"></script> -<script src="../resources/utils.js"></script> - -<style> -#flexer { - display: flex; - flex-direction: row; - justify-content: space-around; - width: 200px; - height: 200px; - background: lightgreen; - writing-mode: horizontal-tb; -} -#container { - contain-intrinsic-size: 12px 34px; - flex-grow: 3; -} -.item { - width: 50px; - height: 60px; - background: blue; - flex-grow: 1; -} -div:not([rendersubtree~="invisible"]) { - contain-intrinsic-size: legacy !important; -} -</style> - -<div id="flexer"> - <div class="item"></div> - <div id="container"></div> - <div class="item"></div> -</div> - -<script> -async function runTest() { - const container = document.getElementById("container"); - await setInvisible(container); - takeScreenshot(); -} - -window.onload = runTest; -</script> -</html>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/flex-row-horizontal.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/flex-row-horizontal.html deleted file mode 100644 index 0cee209..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/flex-row-horizontal.html +++ /dev/null
@@ -1,49 +0,0 @@ -<!doctype HTML> -<html class="reftest-wait"> -<meta charset="utf8"> -<title>Display Locking: flex row, horizontal-tb</title> -<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> -<link rel="match" href="flex-row-horizontal-ref.html"> -<script src="/common/reftest-wait.js"></script> -<script src="../resources/utils.js"></script> - -<style> -#flexer { - display: flex; - flex-direction: row; - justify-content: space-around; - width: 200px; - height: 200px; - background: lightgreen; - writing-mode: horizontal-tb; -} -#container { - contain-intrinsic-size: 12px 34px; -} -.item { - width: 50px; - height: 60px; - background: blue; -} -div:not([rendersubtree~="invisible"]) { - contain-intrinsic-size: legacy !important; -} -</style> - -<div id="flexer"> - <div class="item"></div> - <div id="container"></div> - <div class="item"></div> -</div> - -<script> -async function runTest() { - const container = document.getElementById("container"); - await setInvisible(container); - takeScreenshot(); -} - -window.onload = runTest; -</script> -</html>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/flex-row-vertical-ref.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/flex-row-vertical-ref.html deleted file mode 100644 index e532cc52..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/flex-row-vertical-ref.html +++ /dev/null
@@ -1,37 +0,0 @@ -<!doctype HTML> -<html> -<meta charset="utf8"> -<title>Display Locking: flex row, vertical-rl (reference)</title> -<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> - -<style> -#flexer { - display: flex; - flex-direction: row; - justify-content: space-around; - width: 200px; - height: 200px; - background: lightgreen; - writing-mode: vertical-rl; -} -#container { - contain: style layout; -} -#child { - width: 12px; - height: 34px; -} -.item { - width: 50px; - height: 60px; - background: blue; -} -</style> - -<div id="flexer"> - <div class="item"></div> - <div id="container"><div id="child"></div></div> - <div class="item"></div> -</div> -</html>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/flex-row-vertical-with-grow-ref.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/flex-row-vertical-with-grow-ref.html deleted file mode 100644 index 994e774..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/flex-row-vertical-with-grow-ref.html +++ /dev/null
@@ -1,39 +0,0 @@ -<!doctype HTML> -<html> -<meta charset="utf8"> -<title>Display Locking: flex row with grow, vertical-rl (reference)</title> -<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> - -<style> -#flexer { - display: flex; - flex-direction: row; - justify-content: space-around; - width: 200px; - height: 200px; - background: lightgreen; - writing-mode: vertical-rl; -} -#container { - contain: style layout; - flex-grow: 3; -} -#child { - width: 12px; - height: 34px; -} -.item { - width: 50px; - height: 60px; - background: blue; - flex-grow: 1; -} -</style> - -<div id="flexer"> - <div class="item"></div> - <div id="container"><div id="child"></div></div> - <div class="item"></div> -</div> -</html>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/flex-row-vertical-with-grow.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/flex-row-vertical-with-grow.html deleted file mode 100644 index ae7f87a..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/flex-row-vertical-with-grow.html +++ /dev/null
@@ -1,51 +0,0 @@ -<!doctype HTML> -<html class="reftest-wait"> -<meta charset="utf8"> -<title>Display Locking: flex row with grow, vertical-rl</title> -<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> -<link rel="match" href="flex-row-vertical-with-grow-ref.html"> -<script src="/common/reftest-wait.js"></script> -<script src="../resources/utils.js"></script> - -<style> -#flexer { - display: flex; - flex-direction: row; - justify-content: space-around; - width: 200px; - height: 200px; - background: lightgreen; - writing-mode: vertical-rl; -} -#container { - contain-intrinsic-size: 12px 34px; - flex-grow: 3; -} -.item { - width: 50px; - height: 60px; - background: blue; - flex-grow: 1; -} -div:not([rendersubtree~="invisible"]) { - contain-intrinsic-size: legacy !important; -} -</style> - -<div id="flexer"> - <div class="item"></div> - <div id="container"></div> - <div class="item"></div> -</div> - -<script> -async function runTest() { - const container = document.getElementById("container"); - await setInvisible(container); - takeScreenshot(); -} - -window.onload = runTest; -</script> -</html>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/flex-row-vertical.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/flex-row-vertical.html deleted file mode 100644 index 3865d8f6..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/flex-row-vertical.html +++ /dev/null
@@ -1,49 +0,0 @@ -<!doctype HTML> -<html class="reftest-wait"> -<meta charset="utf8"> -<title>Display Locking: flex row, vertical-rl</title> -<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> -<link rel="match" href="flex-row-vertical-ref.html"> -<script src="/common/reftest-wait.js"></script> -<script src="../resources/utils.js"></script> - -<style> -#flexer { - display: flex; - flex-direction: row; - justify-content: space-around; - width: 200px; - height: 200px; - background: lightgreen; - writing-mode: vertical-rl; -} -#container { - contain-intrinsic-size: 12px 34px; -} -.item { - width: 50px; - height: 60px; - background: blue; -} -div:not([rendersubtree~="invisible"]) { - contain-intrinsic-size: legacy !important; -} -</style> - -<div id="flexer"> - <div class="item"></div> - <div id="container"></div> - <div class="item"></div> -</div> - -<script> -async function runTest() { - const container = document.getElementById("container"); - await setInvisible(container); - takeScreenshot(); -} - -window.onload = runTest; -</script> -</html>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/flex-with-child-lock-ref.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/flex-with-child-lock-ref.html deleted file mode 100644 index d7d6511..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/flex-with-child-lock-ref.html +++ /dev/null
@@ -1,29 +0,0 @@ -<!doctype HTML> -<html> -<meta charset="utf8"> -<title>Display Locking: flex layout with child lock (reference)</title> -<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> - -<style> -#flexer { - display: flex; - width: 200px; - height: 300px; - background: lightgreen; -} -#container { - background: lightblue; -} -#sizer { - width: 123px; - height: 234px; -} -</style> - -<div id="flexer"> - <div id="container"> - <div id="sizer"></div> - </div> -</div> -
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/flex-with-child-lock.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/flex-with-child-lock.html deleted file mode 100644 index 3c9a81d..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/flex-with-child-lock.html +++ /dev/null
@@ -1,42 +0,0 @@ -<!doctype HTML> -<html class="reftest-wait"> -<meta charset="utf8"> -<title>Display Locking: flex layout with child lock</title> -<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> -<link rel="match" href="flex-with-child-lock-ref.html"> -<script src="/common/reftest-wait.js"></script> -<script src="../resources/utils.js"></script> - -<style> -#flexer { - display: flex; - width: 200px; - height: 300px; - background: lightgreen; -} -#container { - contain-intrinsic-size: 123px 234px; - background: lightblue; -} -div:not([rendersubtree~="invisible"]) { - contain-intrinsic-size: legacy !important; -} -</style> - -<div id="flexer"> - <div id="container"> - <div></div> - </div> -</div> - -<script> -async function runTest() { - const container = document.getElementById("container"); - await setInvisible(container); - takeScreenshot(); -} - -window.onload = runTest; -</script> -</html>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/flex-with-descendant-lock-ref.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/flex-with-descendant-lock-ref.html deleted file mode 100644 index 48a09b8..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/flex-with-descendant-lock-ref.html +++ /dev/null
@@ -1,31 +0,0 @@ -<!doctype HTML> -<html> -<meta charset="utf8"> -<title>Display Locking: flex layout with descendant lock (reference)</title> -<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> - -<style> -#flexer { - display: flex; - width: 200px; - height: 300px; - background: lightgreen; -} -#container { - background: lightblue; -} -#sizer { - width: 123px; - height: 234px; -} -</style> - -<div id="flexer"> - <div> - <div id="container"> - <div id="sizer"></div> - </div> - </div> -</div> -
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/flex-with-descendant-lock.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/flex-with-descendant-lock.html deleted file mode 100644 index 6d8e0aa..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/flex-with-descendant-lock.html +++ /dev/null
@@ -1,44 +0,0 @@ -<!doctype HTML> -<html class="reftest-wait"> -<meta charset="utf8"> -<title>Display Locking: flex layout with descendant lock</title> -<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> -<link rel="match" href="flex-with-descendant-lock-ref.html"> -<script src="/common/reftest-wait.js"></script> -<script src="../resources/utils.js"></script> - -<style> -#flexer { - display: flex; - width: 200px; - height: 300px; - background: lightgreen; -} -#container { - contain-intrinsic-size: 123px 234px; - background: lightblue; -} -div:not([rendersubtree~="invisible"]) { - contain-intrinsic-size: legacy !important; -} -</style> - -<div id="flexer"> - <div> - <div id="container"> - <div></div> - </div> - </div> -</div> - -<script> -async function runTest() { - const container = document.getElementById("container"); - await setInvisible(container); - takeScreenshot(); -} - -window.onload = runTest; -</script> -</html>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/float-left-ref.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/float-left-ref.html deleted file mode 100644 index 3ace1ee8..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/float-left-ref.html +++ /dev/null
@@ -1,29 +0,0 @@ -<!doctype HTML> -<html> -<meta charset="utf8"> -<title>Display Locking: float left (reference)</title> -<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> - -<style> -#border { - width: max-content; - border: 1px solid green; -} -#container { - contain: style layout; - float: left; -} -#sizer { - width: 123px; - height: 456px; -} -</style> - -<div id="border"> - <div id="container"> - <div id="sizer"></div> - </div> - This is some text. -</div> -</html>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/float-left.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/float-left.html deleted file mode 100644 index 76ea5861..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/float-left.html +++ /dev/null
@@ -1,46 +0,0 @@ -<!doctype HTML> -<html class="reftest-wait"> -<meta charset="utf8"> -<title>Display Locking: float left</title> -<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> -<link rel="match" href="float-left-ref.html"> -<script src="/common/reftest-wait.js"></script> -<script src="../resources/utils.js"></script> - -<style> -#border { - width: max-content; - border: 1px solid green; -} -#container { - float: left; - contain-intrinsic-size: 123px 456px; -} -#child { - width: 500px; - height: 500px; - background: red; -} -div:not([rendersubtree~="invisible"]) { - contain-intrinsic-size: legacy !important; -} -</style> - -<div id="border"> - <div id="container"> - <div id="child"></div> - </div> - This is some text. -</div> - -<script> -async function runTest() { - const container = document.getElementById("container"); - await setInvisible(container); - takeScreenshot(); -} - -window.onload = runTest; -</script> -</html>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/get-bounding-client-rect-block-layout-in-iframe.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/get-bounding-client-rect-block-layout-in-iframe.html deleted file mode 100644 index 7eb9988..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/get-bounding-client-rect-block-layout-in-iframe.html +++ /dev/null
@@ -1,70 +0,0 @@ -<!doctype HTML> -<html> -<meta charset="utf8"> -<title>Display Locking: getBoundingClientRect on block layout</title> -<link rel="author" title="Rakina Zata Amni" href="mailto:rakina@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> - -<script src="/resources/testharness.js"></script> -<script src="/resources/testharnessreport.js"></script> -<script src="../resources/utils.js"></script> - -<style> -#container { - contain-intrinsic-size: 123px 234px; -} -#frame { - padding: 0; - margin: 0; - width: 500px; - height: 500px; -} -div:not([rendersubtree~="invisible"]) { - contain-intrinsic-size: legacy !important; -} -</style> -<body> -<div id="container"> - <iframe id="frame" frameborder=0 srcdoc=' - <style> - body { - padding: 0; - margin: 0; - } - #target { - background: lightgreen; - width: 50%; - height: 50px; - } - </style> - <div id="target"></div> - '></iframe> -</div> - -<script> -let load_promise = new Promise((resolve) => { - window.onload = resolve; -}); - -async_test(async(t) => { - await load_promise; - - const container = document.getElementById("container"); - await setInvisible(container); - - const frame = document.getElementById("frame"); - frame.style.width = "224px"; - frame.style.height = "248px"; - - const target = frame.contentDocument.getElementById("target"); - t.step(() => assert_true(!!target, "sanity check that target exists")); - let rect = target.getBoundingClientRect(); - t.step(() => assert_equals(rect.width, 112, "target uses update frame size for width")); - t.step(() => assert_equals(rect.height, 50, "target uses set size for height")); - - t.done(); -}, "getBoundingClientRect in iframe"); - -</script> -</body> -</html>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/get-bounding-client-rect-block-layout.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/get-bounding-client-rect-block-layout.html deleted file mode 100644 index 9098ef4..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/get-bounding-client-rect-block-layout.html +++ /dev/null
@@ -1,135 +0,0 @@ -<!doctype HTML> -<html> -<meta charset="utf8"> -<title>Display Locking: getBoundingClientRect on block layout</title> -<link rel="author" title="Rakina Zata Amni" href="mailto:rakina@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> - -<script src="/resources/testharness.js"></script> -<script src="/resources/testharnessreport.js"></script> -<script src="../resources/utils.js"></script> - -<body> -<style> -div:not([rendersubtree~="invisible"]) { - contain-intrinsic-size: legacy !important; -} -</style> -<script> -const BODY_WIDTH = document.body.getBoundingClientRect().width; -const CONTENT_WIDTH = 33; -const CONTENT_HEIGHT = 44; - -async_test(async(t) => { - let container = document.createElement("div"); - let child = document.createElement("div"); - container.appendChild(child); - document.body.appendChild(container); - container.style = `contain-intrinsic-size: ${CONTENT_WIDTH}px ${CONTENT_HEIGHT}px;`; - await setInvisible(container); - - let rect = container.getBoundingClientRect(); - // Even though the intrinsic-size is specified, regular block - // layout causes the container to be BODY_WIDTH. - t.step(() => assert_equals(rect.width, BODY_WIDTH, - "Locked element uses BODY_WIDTH for width")); - t.step(() => assert_equals(rect.height, CONTENT_HEIGHT, - "Locked element uses height from intrinsic-size")); - - rect = child.getBoundingClientRect(); - t.step(() => assert_equals(rect.width, BODY_WIDTH, - "Child of locked element with no content uses container's width (BODY_WIDTH)")); - t.step(() => assert_equals(rect.height, 0, - "Child of locked element with no content has zero height")); - - child.style = "width: 100px; height: 200px;"; - rect = container.getBoundingClientRect(); - t.step(() => assert_equals(rect.width, BODY_WIDTH, - "Locked element with sized child uses BODY_WIDTH")); - t.step(() => assert_equals(rect.height, CONTENT_HEIGHT, - "Locked element with sized child uses height from intrinsic-size")); - rect = child.getBoundingClientRect(); - t.step(() => assert_equals(rect.width, 100, - "Child of locked element uses width from style")); - t.step(() => assert_equals(rect.height, 200, - "Child of locked element uses height from style")); - - t.done(); -}, "getBoundingClientRect"); - -async_test(async(t) => { - let container = document.createElement("div"); - let child = document.createElement("div"); - container.appendChild(child); - document.body.appendChild(container); - container.style = `width: min-content; contain-intrinsic-size: ${CONTENT_WIDTH}px ${CONTENT_HEIGHT}px;`; - await setInvisible(container); - - let rect = container.getBoundingClientRect(); - t.step(() => assert_equals(rect.width, CONTENT_WIDTH, - "Locked element with min-content uses width from intrinsic-size")); - t.step(() => assert_equals(rect.height, CONTENT_HEIGHT, - "Locked element with min-content uses height from intrinsic-size")); - - rect = child.getBoundingClientRect(); - t.step(() => assert_equals(rect.width, CONTENT_WIDTH, - "Child of locked element with min-content & no content uses width from intrinsic-size")); - t.step(() => assert_equals(rect.height, 0, - "Child of locked element with min-content & no content has zero height")); - - child.style = "width: 100px; height: 200px;"; - rect = container.getBoundingClientRect(); - t.step(() => assert_equals(rect.width, CONTENT_WIDTH, - "Locked element with min-content and sized child uses width from intrinsic-size")); - t.step(() => assert_equals(rect.height, CONTENT_HEIGHT, - "Locked element with min-content and sized child uses height from intrinsic-size")); - rect = child.getBoundingClientRect(); - t.step(() => assert_equals(rect.width, 100, - "Child of locked element with min-content uses width from style")); - t.step(() => assert_equals(rect.height, 200, - "Child of locked element with min-content uses height from style")); - - t.done(); -}, "getBoundingClientRect with min-content"); - -async_test(async(t) => { - let container = document.createElement("div"); - let child = document.createElement("div"); - container.appendChild(child); - document.body.appendChild(container); - container.style = `contain-intrinsic-size: ${CONTENT_WIDTH}px ${CONTENT_HEIGHT}px;`; - await setInvisible(container); - let rect = container.getBoundingClientRect(); - - // Even though the intrinsic-size is specified, regular block - // layout causes the container to be BODY_WIDTH. - t.step(() => assert_equals(rect.width, BODY_WIDTH, - "Locked element uses BODY_WIDTH for width")); - t.step(() => assert_equals(rect.height, CONTENT_HEIGHT, - "Locked element uses height from intrinsic-size")); - - rect = child.getBoundingClientRect(); - t.step(() => assert_equals(rect.width, BODY_WIDTH, - "Child of locked element with no content uses container's width (BODY_WIDTH)")); - t.step(() => assert_equals(rect.height, 0, - "Child of locked element with no content has zero height")); - - container.style = "contain-intrinsic-size: 55px 66px;"; - rect = container.getBoundingClientRect(); - t.step(() => assert_equals(rect.width, BODY_WIDTH, - "After intrinsic-size change, locked element width remains BODY_WIDTH")); - t.step(() => assert_equals(rect.height, 66, - "After intrinsic-size change, locked element uses height from newest intrinsic-size")); - - rect = child.getBoundingClientRect(); - t.step(() => assert_equals(rect.width, BODY_WIDTH, - "Child of locked element with no content width remains BODY_WIDTH")); - t.step(() => assert_equals(rect.height, 0, - "Child of locked element with no content has zero height")); - - - t.done(); -}, "getBoundingClientRect with changed intrinsic-size"); -</script> -</body> -</html>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/large-content-size-in-overflow-auto-ref.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/large-content-size-in-overflow-auto-ref.html deleted file mode 100644 index 5893c9b3..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/large-content-size-in-overflow-auto-ref.html +++ /dev/null
@@ -1,17 +0,0 @@ -<!doctype HTML> -<meta charset="utf8"> -<title>Display Locking: intrinsic-size is larger than height (ref)</title> -<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> - -<style> -#container { - contain: style layout size; - width: 200px; - height: 100px; - overflow: auto; - background: lightblue; -} -</style> - -<div id=container></div>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/large-content-size-in-overflow-auto.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/large-content-size-in-overflow-auto.html deleted file mode 100644 index 30c42bc..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/large-content-size-in-overflow-auto.html +++ /dev/null
@@ -1,33 +0,0 @@ -<!doctype HTML> -<html class="reftest-wait"> -<meta charset="utf8"> -<title>Display Locking: intrinsic-size is larger than height</title> -<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> -<link rel="match" href="large-content-size-in-overflow-auto-ref.html"> -<script src="/common/reftest-wait.js"></script> -<script src="../resources/utils.js"></script> - -<style> -#container { - contain-intrinsic-size: 1px 200px; - width: 200px; - height: 100px; - overflow: auto; - background: lightblue; -} -div:not([rendersubtree~="invisible"]) { - contain-intrinsic-size: legacy !important; -} -</style> - -<div id=container>Text</div> - -<script> -function runTest() { - setInvisible(document.getElementById("container")).then(() => { - takeScreenshot(); - }); -} -window.onload = runTest; -</script>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/layout-replaced-ref.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/layout-replaced-ref.html deleted file mode 100644 index 581031b..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/layout-replaced-ref.html +++ /dev/null
@@ -1,24 +0,0 @@ -<!doctype HTML> -<html> -<meta charset="utf8"> -<title>Display Locking: layout replaced (reference)</title> -<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> - -<style> -#border { - border: 1px solid blue; - width: max-content; -} -img { - contain: style layout; - width: 12px; - height: 34px; - visibility: hidden; -} -</style> - -<div id="border"> - <img src="resources/blue-100.png"> -</div> -</html>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/layout-replaced.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/layout-replaced.html deleted file mode 100644 index 624c14d..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/layout-replaced.html +++ /dev/null
@@ -1,37 +0,0 @@ -<!doctype HTML> -<html class="reftest-wait"> -<meta charset="utf8"> -<title>Display Locking: layout replaced</title> -<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> -<link rel="match" href="layout-replaced-ref.html"> -<script src="/common/reftest-wait.js"></script> -<script src="../resources/utils.js"></script> - -<style> -#border { - border: 1px solid blue; - width: max-content; -} -#element { - contain-intrinsic-size: 12px 34px; -} -img:not([rendersubtree~="invisible"]) { - contain-intrinsic-size: legacy !important; -} -</style> - -<div id="border"> - <img id="element" src="resources/blue-100.png"> -</div> - -<script> -async function runTest() { - const element = document.getElementById("element"); - await setInvisible(element); - takeScreenshot(); -} - -window.onload = () => requestAnimationFrame(runTest); -</script> -</html>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/max-content-size-ignored-ref.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/max-content-size-ignored-ref.html deleted file mode 100644 index 025741f5..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/max-content-size-ignored-ref.html +++ /dev/null
@@ -1,27 +0,0 @@ -<!doctype HTML> -<html> -<meta charset="utf8"> -<title>Display Locking: max-content on locked root ignored (reference)</title> -<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> - -<style> -#border { - width: max-content; - border: 1px solid green; -} -#container { - contain: style layout; -} -#sizer { - width: 123px; - height: 456px; -} -</style> - -<div id="border"> - <div id="container"> - <div id="sizer"></div> - </div> -</div> -</html>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/max-content-size-ignored.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/max-content-size-ignored.html deleted file mode 100644 index 8d2f3b1..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/max-content-size-ignored.html +++ /dev/null
@@ -1,46 +0,0 @@ -<!doctype HTML> -<html class="reftest-wait"> -<meta charset="utf8"> -<title>Display Locking: max-content on locked root ignored</title> -<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> -<link rel="match" href="max-content-size-ignored-ref.html"> -<script src="/common/reftest-wait.js"></script> -<script src="../resources/utils.js"></script> - - -<style> -#border { - width: max-content; - border: 1px solid green; -} -#container { - width: max-content; - contain-intrinsic-size: 123px 456px; -} -#child { - width: 500px; - height: 500px; - background: red; -} -div:not([rendersubtree~="invisible"]) { - contain-intrinsic-size: legacy !important; -} -</style> - -<div id="border"> - <div id="container"> - <div id="child"></div> - </div> -</div> - -<script> -async function runTest() { - const container = document.getElementById("container"); - await setInvisible(container); - takeScreenshot(); -} - -window.onload = runTest; -</script> -</html>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/measure-forced-layout-after-commit.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/measure-forced-layout-after-commit.html deleted file mode 100644 index cf1a5e6..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/measure-forced-layout-after-commit.html +++ /dev/null
@@ -1,96 +0,0 @@ -<!doctype HTML> -<html> -<meta charset="utf8"> -<title>Display Locking: measure forced layout after commit</title> -<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> -<script src="../resources/utils.js"></script> - -<style> -.contained { - contain-intrinsic-size: 100px 100px; - background: lightgreen; -} -#large { - width: 200px; - height: 200px; -} -.child { - width: 20px; - height: 20%; - background: cyan; -} -#spacer { - width: 150px; - height: 150px; - background: green; -} -div:not([rendersubtree~="invisible"]) { - contain-intrinsic-size: legacy !important; -} -</style> - -<div id="parent"><div class="contained" id="small"><div id="large"></div></div></div> -<div id="spacer"></div> - -<script src="/resources/testharness.js"></script> -<script src="/resources/testharnessreport.js"></script> - -<script> -async_test((t) => { - function createChild(id) { - const child = document.createElement("div"); - child.classList = "child"; - child.id = id; - return child; - } - - function measureForced() { - t.step(() => { - // Ensure children are laid out; this forces a layout. - assert_equals(document.getElementById("0").offsetTop, 0, "0 forced"); - assert_equals(document.getElementById("1").offsetTop, 40, "1 forced"); - assert_equals(document.getElementById("2").offsetTop, 80, "2 forced"); - // Parent should be 100 height, since its child is locked. - assert_equals(document.getElementById("parent").offsetTop, 8, "parent forced"); - assert_equals(document.getElementById("spacer").offsetTop, 108, "spacer forced"); - }); - } - - function forcedMeasureAfterCommit() { - t.step(() => { - // Ensure children are still laid out. - assert_equals(document.getElementById("0").offsetTop, 0, "0 in commit"); - assert_equals(document.getElementById("1").offsetTop, 40, "1 in commit"); - assert_equals(document.getElementById("2").offsetTop, 80, "2 in commit"); - // Now the parent should encompass an unlocked container, so spacer is pushed down more. - assert_equals(document.getElementById("parent").offsetTop, 8, "parent in commit"); - assert_equals(document.getElementById("spacer").offsetTop, 208, "spacer in commit"); - }); - } - - function construct(container) { - container.appendChild(createChild("0")); - container.appendChild(createChild("1")); - container.appendChild(createChild("2")); - } - - async function runTest() { - const container = document.getElementById("small"); - await setInvisible(container); - - construct(document.getElementById("large")); - measureForced(); - - await setVisible(container); - forcedMeasureAfterCommit(); - t.done(); - } - - window.onload = function() { - requestAnimationFrame(() => requestAnimationFrame(runTest)); - }; -}, "Measure Forced Layout"); -</script> - -</html>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/measure-forced-layout.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/measure-forced-layout.html deleted file mode 100644 index 3a531e1..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/measure-forced-layout.html +++ /dev/null
@@ -1,97 +0,0 @@ -<!doctype HTML> -<html> -<meta charset="utf8"> -<title>Display Locking: measure forced layout</title> -<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> -<script src="../resources/utils.js"></script> - -<style> -.contained { - contain-intrinsic-size: 100px 100px; - background: lightgreen; -} -#large { - width: 200px; - height: 200px; -} -.child { - width: 20px; - height: 20%; - background: cyan; -} -#spacer { - width: 150px; - height: 150px; - background: green; -} -div:not([rendersubtree~="invisible"]) { - contain-intrinsic-size: legacy !important; -} -</style> - -<div id="parent"><div class="contained" id="small"><div id="large"></div></div></div> -<div id="spacer"></div> - -<script src="/resources/testharness.js"></script> -<script src="/resources/testharnessreport.js"></script> - -<script> -async_test((t) => { - function createChild(id) { - const child = document.createElement("div"); - child.classList = "child"; - child.id = id; - return child; - } - - function measureForced() { - t.step(() => { - // Ensure children are laid out; this forces a layout. - assert_equals(document.getElementById("0").offsetTop, 0, "0 forced"); - assert_equals(document.getElementById("1").offsetTop, 40, "1 forced"); - assert_equals(document.getElementById("2").offsetTop, 80, "2 forced"); - // Parent should be 100 height, since its child is locked. - assert_equals(document.getElementById("parent").offsetTop, 8, "parent forced"); - assert_equals(document.getElementById("spacer").offsetTop, 108, "spacer forced"); - }); - } - - function measureInCommit() { - t.step(() => { - // Ensure children are still laid out. - assert_equals(document.getElementById("0").offsetTop, 0, "0 in commit"); - assert_equals(document.getElementById("1").offsetTop, 40, "1 in commit"); - assert_equals(document.getElementById("2").offsetTop, 80, "2 in commit"); - // Now the parent should encompass an unlocked container, so spacer is pushed down more. - assert_equals(document.getElementById("parent").offsetTop, 8, "parent in commit"); - assert_equals(document.getElementById("spacer").offsetTop, 208, "spacer in commit"); - }); - } - - function construct(container) { - container.appendChild(createChild("0")); - container.appendChild(createChild("1")); - container.appendChild(createChild("2")); - } - - async function runTest() { - const container = document.getElementById("small"); - await setInvisible(container); - - construct(document.getElementById("large")); - measureForced(); - - setVisible(container).then(() => { - measureInCommit(); - t.done(); - }); - } - - window.onload = function() { - requestAnimationFrame(() => requestAnimationFrame(runTest)); - }; -}, "Measure Forced Layout"); -</script> - -</html>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/measure-updated-layout.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/measure-updated-layout.html deleted file mode 100644 index a807f42d..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/measure-updated-layout.html +++ /dev/null
@@ -1,99 +0,0 @@ -<!doctype HTML> -<html> -<meta charset="utf8"> -<title>Display Locking: measure updated layout</title> -<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> -<script src="../resources/utils.js"></script> - -<style> -.contained { - contain-intrinsic-size: 100px 100px; - background: lightgreen; -} -#large { - width: 200px; - height: 200px; -} -.child { - width: 20px; - height: 20%; - background: cyan; -} -#spacer { - width: 150px; - height: 150px; - background: green; -} -div:not([rendersubtree~="invisible"]) { - contain-intrinsic-size: legacy !important; -} -</style> - -<div id="parent"><div class="contained" id="small"><div id="large"></div></div></div> -<div id="spacer"></div> - -<script src="/resources/testharness.js"></script> -<script src="/resources/testharnessreport.js"></script> - -<script> -async_test((t) => { - function createChild(id) { - const child = document.createElement("div"); - child.classList = "child"; - child.id = id; - return child; - } - - function construct(container) { - container.appendChild(createChild("0")); - container.appendChild(createChild("1")); - container.appendChild(createChild("2")); - } - - function measureInUpdate() { - t.step(() => { - // Ensure children are laid out; this forces a layout. - assert_equals(document.getElementById("0").offsetTop, 0, "0 in update"); - assert_equals(document.getElementById("1").offsetTop, 40, "1 in update"); - assert_equals(document.getElementById("2").offsetTop, 80, "2 in update"); - // Parent should be 100 height, since its child is locked. - assert_equals(document.getElementById("parent").offsetTop, 8, "parent in update"); - assert_equals(document.getElementById("spacer").offsetTop, 108, "spacer in update"); - }); - } - - function measureInCommit() { - t.step(() => { - // Ensure children are still laid out. - assert_equals(document.getElementById("0").offsetTop, 0, "0 in commit"); - assert_equals(document.getElementById("1").offsetTop, 40, "1 in commit"); - assert_equals(document.getElementById("2").offsetTop, 80, "2 in commit"); - // Now the parent should encompass the unlocked container, so spacer is pushed down further. - assert_equals(document.getElementById("parent").offsetTop, 8, "parent in commit"); - assert_equals(document.getElementById("spacer").offsetTop, 208, "spacer in commit"); - }); - } - - async function runTest() { - const container = document.getElementById("small"); - await setInvisible(container); - - construct(document.getElementById("large")); - - container.updateRendering().then(() => { - measureInUpdate(); - setVisible(container).then(() => { - measureInCommit(); - t.done(); - }); - }); - } - - window.onload = function() { - requestAnimationFrame(() => requestAnimationFrame(runTest)); - }; -}, "Measure Updated Layout"); -</script> - -</html>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/min-width-respected-ref.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/min-width-respected-ref.html deleted file mode 100644 index 4f4d824..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/min-width-respected-ref.html +++ /dev/null
@@ -1,28 +0,0 @@ -<!doctype HTML> -<html> -<meta charset="utf8"> -<title>Display Locking: min-width on locked root respected (reference)</title> -<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> - -<style> -#border { - width: max-content; - border: 1px solid green; -} -#container { - contain: style layout; - width: 157px; -} -#sizer { - width: 123px; - height: 456px; -} -</style> - -<div id="border"> - <div id="container"> - <div id="sizer"></div> - </div> -</div> -</html>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/min-width-respected.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/min-width-respected.html deleted file mode 100644 index 3fd69762..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/min-width-respected.html +++ /dev/null
@@ -1,45 +0,0 @@ -<!doctype HTML> -<html class="reftest-wait"> -<meta charset="utf8"> -<title>Display Locking: min-width on locked root respected</title> -<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> -<link rel="match" href="min-width-respected-ref.html"> -<script src="/common/reftest-wait.js"></script> -<script src="../resources/utils.js"></script> - -<style> -#border { - width: max-content; - border: 1px solid green; -} -#container { - contain-intrinsic-size: 123px 456px; - min-width: 157px; -} -#child { - width: 500px; - height: 500px; - background: red; -} -div:not([rendersubtree~="invisible"]) { - contain-intrinsic-size: legacy !important; -} -</style> - -<div id="border"> - <div id="container"> - <div id="child"></div> - </div> -</div> - -<script> -async function runTest() { - const container = document.getElementById("container"); - await setInvisible(container); - takeScreenshot(); -} - -window.onload = runTest; -</script> -</html>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/overflow-auto-with-overflow-ref.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/overflow-auto-with-overflow-ref.html deleted file mode 100644 index 7c36f82..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/overflow-auto-with-overflow-ref.html +++ /dev/null
@@ -1,23 +0,0 @@ -<!DOCTYPE html> -<html> -<meta charset="utf8"> -<title>Display Locking: overflow auto (reference)</title> -<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> - -<style> -#border { - border: 1px solid black; - width: max-content; -} -#container { - contain: style layout; - width: 12px; - height: 100px; -} -</style> - -<div id="border"> - <div id="container"></div> -</div> -</html>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/overflow-auto-with-overflow.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/overflow-auto-with-overflow.html deleted file mode 100644 index 6576150..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/overflow-auto-with-overflow.html +++ /dev/null
@@ -1,50 +0,0 @@ -<!DOCTYPE html> -<html class="reftest-wait"> -<meta charset="utf8"> -<title>Display Locking: overflow auto</title> -<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> -<link rel="match" href="overflow-auto-with-overflow-ref.html"> -<script src="/common/reftest-wait.js"></script> -<script src="../resources/utils.js"></script> - -<style> -#border { - border: 1px solid black; - width: max-content; -} -#container { - contain-intrinsic-size: 12px 34px; - height: 100px; - overflow: auto; -} -.content { - width: 50px; - height: 50px; - margin: 5px; - background: pink; -} -div:not([rendersubtree~="invisible"]) { - contain-intrinsic-size: legacy !important; -} -</style> - -<div id="border"> - <div id="container"> - <div class="content"></div> - <div class="content"></div> - <div class="content"></div> - <div class="content"></div> - </div> -</div> - -<script> -async function runTest() { - const container = document.getElementById("container"); - await setInvisible(container); - takeScreenshot(); -} - -onload = () => requestAnimationFrame(runTest); -</script> -</html>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/resources/blue-100.png b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/resources/blue-100.png deleted file mode 100644 index f578ae72..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/resources/blue-100.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/writing-modes-inherited-after-append.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/writing-modes-inherited-after-append.html deleted file mode 100644 index 2a5cb48..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/writing-modes-inherited-after-append.html +++ /dev/null
@@ -1,73 +0,0 @@ -<!DOCTYPE html> -<html class="reftest-wait"> -<meta charset="utf8"> -<title>Display Locking: writing modes change when appending</title> -<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> -<link rel="match" href="writing-modes-ref.html"> -<script src="/common/reftest-wait.js"></script> -<script src="../resources/utils.js"></script> - -<style> -.verticalrl { - writing-mode: vertical-rl; -} -.verticallr { - writing-mode: vertical-lr; -} -.horizontaltb { - writing-mode: horizontal-tb; -} -.sized { - width: 100px; - height: 200px; -} -.box { - background: lightblue; - contain-intrinsic-size: 12px 34px; - border-color: blue; - border-style: solid; - border-width: 1px 2px 3px 4px; - padding: 5px 6px 7px 8px; -} -.border { - border: 1px solid black; - width: max-content; - margin: 5px; -} -div:not([rendersubtree~="invisible"]) { - contain-intrinsic-size: legacy !important; -} -</style> - -<template id="template"> - <div class="box"> - <div class="sized">hello<br>world</div> - </div> -</template> - -<div class="border verticalrl"></div> -<div class="border verticalrl"></div> -<div class="border verticallr"></div> -<div class="border horizontaltb"></div> -<div class="border horizontaltb"></div> - -<script> -async function runTest() { - let items = document.getElementsByClassName("border"); - let template_element = document.importNode( - document.getElementById("template").content, true).firstElementChild; - - let promises = [] - for (let i = 0; i < items.length; ++i) { - let clone = template_element.cloneNode(true); - promises.push(setInvisible(clone)); - items[i].appendChild(clone); - } - await Promise.all(promises); - takeScreenshot(); -} - -onload = () => requestAnimationFrame(runTest); -</script> -</html>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/writing-modes-ref.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/writing-modes-ref.html deleted file mode 100644 index 80333a7..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/writing-modes-ref.html +++ /dev/null
@@ -1,40 +0,0 @@ -<!DOCTYPE html> -<html> -<meta charset="utf8"> -<title>Display Locking: writing modes (reference)</title> -<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> - -<style> -.sized { - width: 12px; - height: 34px; - background: lightblue; - border-color: blue; - border-style: solid; - border-width: 1px 2px 3px 4px; - padding: 5px 6px 7px 8px; -} -.border { - border: 1px solid black; - width: max-content; - margin: 5px; -} -</style> - -<div class="border"> - <div class="sized"></div> -</div> -<div class="border"> - <div class="sized"></div> -</div> -<div class="border"> - <div class="sized"></div> -</div> -<div class="border"> - <div class="sized"></div> -</div> -<div class="border"> - <div class="sized"></div> -</div> -</html>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/writing-modes-switch.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/writing-modes-switch.html deleted file mode 100644 index 4596e409..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/writing-modes-switch.html +++ /dev/null
@@ -1,93 +0,0 @@ -<!DOCTYPE html> -<html class="reftest-wait"> -<meta charset="utf8"> -<title>Display Locking: writing modes switch</title> -<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> -<link rel="match" href="writing-modes-ref.html"> -<script src="/common/reftest-wait.js"></script> -<script src="../resources/utils.js"></script> - -<style> -.verticalrl { - writing-mode: vertical-rl; -} -.verticallr { - writing-mode: vertical-lr; -} -.horizontaltb { - writing-mode: horizontal-tb; -} -.sized { - width: 100px; - height: 200px; -} -.box { - background: lightblue; - contain-intrinsic-size: 12px 34px; - border-color: blue; - border-style: solid; - border-width: 1px 2px 3px 4px; - padding: 5px 6px 7px 8px; -} -.border { - border: 1px solid black; - width: max-content; - margin: 5px; -} -div:not([rendersubtree~="invisible"]) { - contain-intrinsic-size: legacy !important; -} -</style> - -<div class="border verticalrl"> - <div class="box"> - <div class="sized">hello<br>world</div> - </div> -</div> -<div class="border verticalrl"> - <div class="box horizontaltb"> - <div class="sized">hello<br>world</div> - </div> -</div> -<div class="border verticallr"> - <div class="box"> - <div class="sized">hello<br>world</div> - </div> -</div> -<div class="border horizontaltb"> - <div class="box"> - <div class="sized">hello<br>world</div> - </div> -</div> -<div class="border horizontaltb"> - <div class="box verticalrl"> - <div class="sized">hello<br>world</div> - </div> -</div> - -<script> -async function runTest() { - let items = document.getElementsByClassName("box"); - let promises = [] - for (let i = 0; i < items.length; ++i) { - promises.push(setInvisible(items[i])); - } - await Promise.all(promises); - - let borders = document.getElementsByClassName("border"); - for (let i = 0; i < borders.length; ++i) { - if (borders[i].classList.contains("horizontaltb")) { - borders[i].classList.replace("horizontaltb", "verticalrl"); - } else { - borders[i].classList.replace("verticalrl", "horizontaltb"); - borders[i].classList.replace("verticallr", "horizontaltb"); - } - } - - takeScreenshot(); -} - -onload = () => requestAnimationFrame(runTest); -</script> -</html>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/writing-modes.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/writing-modes.html deleted file mode 100644 index 37884af..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/sizing/writing-modes.html +++ /dev/null
@@ -1,82 +0,0 @@ -<!DOCTYPE html> -<html class="reftest-wait"> -<meta charset="utf8"> -<title>Display Locking: writing modes</title> -<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> -<link rel="match" href="writing-modes-ref.html"> -<script src="/common/reftest-wait.js"></script> -<script src="../resources/utils.js"></script> - -<style> -.verticalrl { - writing-mode: vertical-rl; -} -.verticallr { - writing-mode: vertical-lr; -} -.horizontaltb { - writing-mode: horizontal-tb; -} -.sized { - width: 100px; - height: 200px; -} -.box { - background: lightblue; - contain-intrinsic-size: 12px 34px; - border-color: blue; - border-style: solid; - border-width: 1px 2px 3px 4px; - padding: 5px 6px 7px 8px; -} -.border { - border: 1px solid black; - width: max-content; - margin: 5px; -} -div:not([rendersubtree~="invisible"]) { - contain-intrinsic-size: legacy !important; -} -</style> - -<div class="border verticalrl"> - <div class="box"> - <div class="sized">hello<br>world</div> - </div> -</div> -<div class="border verticalrl"> - <div class="box horizontaltb"> - <div class="sized">hello<br>world</div> - </div> -</div> -<div class="border verticallr"> - <div class="box"> - <div class="sized">hello<br>world</div> - </div> -</div> -<div class="border horizontaltb"> - <div class="box"> - <div class="sized">hello<br>world</div> - </div> -</div> -<div class="border horizontaltb"> - <div class="box verticalrl"> - <div class="sized">hello<br>world</div> - </div> -</div> - -<script> -async function runTest() { - const items = document.getElementsByClassName("box"); - const promises = [] - for (let i = 0; i < items.length; ++i) { - promises.push(setInvisible(items[i])); - } - await Promise.all(promises); - takeScreenshot(); -} - -onload = () => requestAnimationFrame(runTest); -</script> -</html>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/update-together-with-commit-both-succeed.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/update-together-with-commit-both-succeed.html deleted file mode 100644 index ab504d74..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/update-together-with-commit-both-succeed.html +++ /dev/null
@@ -1,53 +0,0 @@ -<!doctype HTML> -<html class="reftest-wait"> -<meta charset="utf8"> -<title>Display Locking: acquire, update+commit</title> -<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> -<link rel="match" href="pass-container-with-child-ref.html"> -<script src="/common/reftest-wait.js"></script> -<script src="resources/utils.js"></script> - -<style> -#container { - width: 150px; - height: 150px; - background: lightblue; -} -#child { - width: 50px; - height: 50px; - background: lightgreen; -} -</style> - -<div id="log"></div> - -<script> -function finishTest(status_string) { - if (document.getElementById("log").innerHTML === "") - document.getElementById("log").innerHTML = status_string; - takeScreenshot(); -} - -function runTest() { - const container = document.createElement("div"); - setInvisible(container).then(() => { - const child = document.createElement("div"); - child.id = "child"; - container.appendChild(child); - - container.id = "container"; - document.body.appendChild(container); - - Promise.all([ - container.updateRendering(), - setVisible(container) - ]).then(() => { finishTest("PASS"); }, - () => { finishTest("FAIL"); }); - }); -} - -window.onload = runTest; -</script> -</html>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/update-while-disconnected.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/update-while-disconnected.html deleted file mode 100644 index 17bf5dca..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/update-while-disconnected.html +++ /dev/null
@@ -1,33 +0,0 @@ -<!doctype HTML> -<html class="reftest-wait"> -<meta charset="utf8"> -<title>Display Locking: update while disconnected</title> -<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> -<link rel="match" href="pass-ref.html"> -<script src="/common/reftest-wait.js"></script> -<script src="resources/utils.js"></script> - -<div id="log"></div> - -<script> -function finishTest(status_string) { - if (document.getElementById("log").innerHTML === "") - document.getElementById("log").innerHTML = status_string; - takeScreenshot(); -} - -function runTest() { - const container = document.createElement("div"); - container.id = "container"; - - setInvisible(container).then(() => { - container.updateRendering().then( - () => { finishTest("PASS"); }, - (e) => { finishTest("FAIL " + e.message); }); - }); -} - -window.onload = runTest; -</script> -</html>
diff --git a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/update-without-acquire-works.html b/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/update-without-acquire-works.html deleted file mode 100644 index 468052f..0000000 --- a/third_party/blink/web_tests/wpt_internal/display-lock/rendersubtree/update-without-acquire-works.html +++ /dev/null
@@ -1,41 +0,0 @@ -<!doctype HTML> -<html class="reftest-wait"> -<meta charset="utf8"> -<title>Display Locking: update without acquire</title> -<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org"> -<link rel="help" href="https://github.com/WICG/display-locking"> -<link rel="match" href="pass-container-with-child-ref.html"> -<script src="/common/reftest-wait.js"></script> - -<style> -#container { - width: 150px; - height: 150px; - background: lightblue; -} -#child { - width: 50px; - height: 50px; - background: lightgreen; -} -</style> - -<div id="log"></div> -<div id="container"><div id="child"></div></div> - -<script> -function finishTest(status_string) { - if (document.getElementById("log").innerHTML === "") - document.getElementById("log").innerHTML = status_string; - takeScreenshot(); -} - -function runTest() { - container.updateRendering().then( - () => { finishTest("PASS"); }, - (e) => { finishTest("FAIL " + e.message); }); -} - -window.onload = runTest; -</script> -</html>
diff --git a/tools/OWNERS b/tools/OWNERS index 2f045af..08b50c1 100644 --- a/tools/OWNERS +++ b/tools/OWNERS
@@ -49,7 +49,7 @@ per-file roll_webgl_conformance.py=zmo@chromium.org per-file roll_webrtc.py=phoglund@chromium.org -per-file safely-roll-deps.py=borenet@chromium.org +per-file safely-roll-deps.py=borenet@google.com per-file sort-headers.py=satorux@chromium.org per-file sort-sources.py=satorux@chromium.org
diff --git a/tools/cfi/blacklist.txt b/tools/cfi/blacklist.txt index aa732c9..b0518ae 100644 --- a/tools/cfi/blacklist.txt +++ b/tools/cfi/blacklist.txt
@@ -192,6 +192,15 @@ src:*mojo/public/c/system/thunks.cc +# Call to vulkan function pointers from shared library. +src:*/gpu/vulkan/* +src:*components/viz/common/gpu/vulkan_in_process_context_provider.cc +src:*gpu/command_buffer/service/skia_utils.cc +src:*gpu/command_buffer/service/external_vk_* +src:*components/viz/service/display_embedder/skia_output_device_vulkan.cc +src:*/third_party/skia/src/gpu/vk/* +src:*/third_party/skia/third_party/vulkanmemoryallocator/* + # The follow entries are speculatively disabled. They're included in the # chromium build and include calls to dynamically resolved symbols; however, # they do not trigger cfi-icall failures in unit tests or normal chrome usage.
diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums.xml index 9d8bc71..19e3aae 100644 --- a/tools/metrics/histograms/enums.xml +++ b/tools/metrics/histograms/enums.xml
@@ -49291,6 +49291,7 @@ <int value="8" label="HTTP method or url scheme does not meet the requirement."/> <int value="9" label="Unknown range support from the response header."/> + <int value="10" label="Download is resumed without slices."/> </enum> <enum name="ParentAccessCodeAction">
diff --git a/tools/metrics/histograms/histograms.xml b/tools/metrics/histograms/histograms.xml index 6d841ab..5b142d4 100644 --- a/tools/metrics/histograms/histograms.xml +++ b/tools/metrics/histograms/histograms.xml
@@ -21898,9 +21898,9 @@ </histogram> <histogram name="Canvas.Repaint.Bounds.Percentage" units="%" - expires_after="M82"> - <owner>yiyix@google.com</owner> - <owner>fserb@google.com</owner> + expires_after="M84"> + <owner>yiyix@chromium.org</owner> + <owner>fserb@chromium.org</owner> <summary> measure the percentage of Canvas is dirty before each repaint by using cc::Rect. Note that we record this metrics for all canvas that has an area @@ -21909,9 +21909,9 @@ </histogram> <histogram name="Canvas.Repaint.Region.Percentage" units="%" - expires_after="M82"> - <owner>yiyix@google.com</owner> - <owner>fserb@google.com</owner> + expires_after="M84"> + <owner>yiyix@chromium.org</owner> + <owner>fserb@chromium.org</owner> <summary> measure the percentage of Canvas is dirty before each repaint by using cc::Region. Note that we record this metrics for all canvas that has an area
diff --git a/tools/metrics/ukm/ukm.xml b/tools/metrics/ukm/ukm.xml index 5f7812f..f119d692 100644 --- a/tools/metrics/ukm/ukm.xml +++ b/tools/metrics/ukm/ukm.xml
@@ -8304,6 +8304,21 @@ </metric> </event> +<event name="Popup.Page"> + <owner>justinmiron@google.com</owner> + <summary> + Page level pop-up statistics. + </summary> + <metric name="Allowed"> + <summary> + Whether a user has, explicitly, allowed all popups on the last committed + url of a page. The user's site level popup content setting is queried when + a page that opened a popup is destroyed. Only emitted when at least one + popup has been opened and the last committed page url is valid. + </summary> + </metric> +</event> + <event name="PrefetchProxy" singular="True"> <owner>robertogden@chromium.org</owner> <owner>ryansturm@chromium.org</owner>
diff --git a/ui/gfx/render_text_harfbuzz.cc b/ui/gfx/render_text_harfbuzz.cc index 296305b..721013a 100644 --- a/ui/gfx/render_text_harfbuzz.cc +++ b/ui/gfx/render_text_harfbuzz.cc
@@ -10,7 +10,6 @@ #include "base/command_line.h" #include "base/containers/mru_cache.h" #include "base/containers/span.h" -#include "base/debug/dump_without_crashing.h" #include "base/feature_list.h" #include "base/hash/hash.h" #include "base/i18n/base_i18n_switches.h" @@ -2113,16 +2112,6 @@ TRACE_STR_COPY(font_name.c_str()), "primary_font_name", primary_font.GetFontName()); RecordShapeRunsFallback(ShapeRunFallback::FALLBACKS); -#if defined(OS_WIN) - // Resolving fallback fonts using the registry keys on windows will be - // deprecated and removed (see: http://crbug.com/995789). The crashes - // reported here should be fixed before deprecating the code. - static bool is_first_crash = true; - if (is_first_crash) { - is_first_crash = false; - base::debug::DumpWithoutCrashing(); - } -#endif return; } }
diff --git a/ui/native_theme/native_theme_mac.h b/ui/native_theme/native_theme_mac.h index d44e40e..ac81964c 100644 --- a/ui/native_theme/native_theme_mac.h +++ b/ui/native_theme/native_theme_mac.h
@@ -81,6 +81,8 @@ void InitializeDarkModeStateAndObserver(); + void InitializeWebThemeState() const; + base::scoped_nsobject<NativeThemeEffectiveAppearanceObserver> appearance_observer_; id high_contrast_notification_token_;
diff --git a/ui/native_theme/native_theme_mac.mm b/ui/native_theme/native_theme_mac.mm index f383c46..2ca54aa 100644 --- a/ui/native_theme/native_theme_mac.mm +++ b/ui/native_theme/native_theme_mac.mm
@@ -299,6 +299,8 @@ }]; } + InitializeWebThemeState(); + // Add the web native theme as an observer to stay in sync with dark mode, // high contrast, and preferred color scheme changes. if (features::IsFormControlsRefreshEnabled()) { @@ -336,4 +338,16 @@ }]); } +void NativeThemeMac::InitializeWebThemeState() const { + if (!features::IsFormControlsRefreshEnabled()) + return; + + // For FormControlsRefresh, NativeThemeAura is used as web instance so we need + // to initialize its state. + NativeTheme* web_instance = NativeTheme::GetInstanceForWeb(); + web_instance->set_use_dark_colors(IsDarkMode()); + web_instance->set_preferred_color_scheme(CalculatePreferredColorScheme()); + web_instance->set_high_contrast(IsHighContrast()); +} + } // namespace ui
diff --git a/ui/ozone/platform/drm/gpu/vulkan_implementation_gbm.cc b/ui/ozone/platform/drm/gpu/vulkan_implementation_gbm.cc index 41f63b23..c723e3d 100644 --- a/ui/ozone/platform/drm/gpu/vulkan_implementation_gbm.cc +++ b/ui/ozone/platform/drm/gpu/vulkan_implementation_gbm.cc
@@ -92,6 +92,12 @@ VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME, VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME}; } + +std::vector<const char*> +VulkanImplementationGbm::GetOptionalDeviceExtensions() { + return {}; +} + VkFence VulkanImplementationGbm::CreateVkFenceForGpuFence(VkDevice vk_device) { VkFenceCreateInfo fence_create_info = {}; fence_create_info.sType = VK_STRUCTURE_TYPE_FENCE_CREATE_INFO;
diff --git a/ui/ozone/platform/drm/gpu/vulkan_implementation_gbm.h b/ui/ozone/platform/drm/gpu/vulkan_implementation_gbm.h index cbbbbcc5..12ab2eb 100644 --- a/ui/ozone/platform/drm/gpu/vulkan_implementation_gbm.h +++ b/ui/ozone/platform/drm/gpu/vulkan_implementation_gbm.h
@@ -27,6 +27,7 @@ const std::vector<VkQueueFamilyProperties>& queue_family_properties, uint32_t queue_family_index) override; std::vector<const char*> GetRequiredDeviceExtensions() override; + std::vector<const char*> GetOptionalDeviceExtensions() override; VkFence CreateVkFenceForGpuFence(VkDevice vk_device) override; std::unique_ptr<gfx::GpuFence> ExportVkFenceToGpuFence( VkDevice vk_device,
diff --git a/ui/ozone/platform/scenic/vulkan_implementation_scenic.cc b/ui/ozone/platform/scenic/vulkan_implementation_scenic.cc index f61ce48..e057fd9 100644 --- a/ui/ozone/platform/scenic/vulkan_implementation_scenic.cc +++ b/ui/ozone/platform/scenic/vulkan_implementation_scenic.cc
@@ -137,6 +137,11 @@ }; } +std::vector<const char*> +VulkanImplementationScenic::GetOptionalDeviceExtensions() { + return {}; +} + VkFence VulkanImplementationScenic::CreateVkFenceForGpuFence( VkDevice vk_device) { NOTIMPLEMENTED();
diff --git a/ui/ozone/platform/scenic/vulkan_implementation_scenic.h b/ui/ozone/platform/scenic/vulkan_implementation_scenic.h index 8b077b8..cd0a605 100644 --- a/ui/ozone/platform/scenic/vulkan_implementation_scenic.h +++ b/ui/ozone/platform/scenic/vulkan_implementation_scenic.h
@@ -35,6 +35,7 @@ const std::vector<VkQueueFamilyProperties>& queue_family_properties, uint32_t queue_family_index) override; std::vector<const char*> GetRequiredDeviceExtensions() override; + std::vector<const char*> GetOptionalDeviceExtensions() override; VkFence CreateVkFenceForGpuFence(VkDevice vk_device) override; std::unique_ptr<gfx::GpuFence> ExportVkFenceToGpuFence( VkDevice vk_device,
diff --git a/weblayer/BUILD.gn b/weblayer/BUILD.gn index 34dac7d9a..2e8b2d3 100644 --- a/weblayer/BUILD.gn +++ b/weblayer/BUILD.gn
@@ -137,8 +137,6 @@ "browser/profile_impl.h", "browser/ssl_error_controller_client.cc", "browser/ssl_error_controller_client.h", - "browser/ssl_host_state_delegate_impl.cc", - "browser/ssl_host_state_delegate_impl.h", "browser/system_network_context_manager.cc", "browser/system_network_context_manager.h", "browser/tab_impl.cc",
diff --git a/weblayer/browser/android/javatests/src/org/chromium/weblayer/test/TopControlsTest.java b/weblayer/browser/android/javatests/src/org/chromium/weblayer/test/TopControlsTest.java index 8702872f..97f2483 100644 --- a/weblayer/browser/android/javatests/src/org/chromium/weblayer/test/TopControlsTest.java +++ b/weblayer/browser/android/javatests/src/org/chromium/weblayer/test/TopControlsTest.java
@@ -4,6 +4,7 @@ package org.chromium.weblayer.test; +import android.os.Build; import android.support.test.filters.SmallTest; import android.support.v4.app.Fragment; import android.view.View; @@ -16,6 +17,7 @@ import org.chromium.base.test.util.CallbackHelper; import org.chromium.base.test.util.CommandLineFlags; +import org.chromium.base.test.util.MinAndroidSdkLevel; import org.chromium.base.test.util.UrlUtils; import org.chromium.content_public.browser.test.util.Criteria; import org.chromium.content_public.browser.test.util.CriteriaHelper; @@ -73,6 +75,8 @@ helper.waitForCallback(0); } + // Disabled on L bots due to unexplained flakes. See crbug.com/1035894. + @MinAndroidSdkLevel(Build.VERSION_CODES.M) @Test @SmallTest public void testBasic() throws Exception { @@ -95,15 +99,16 @@ mInitialVisiblePageHeight = getVisiblePageHeight(); Assert.assertTrue(mInitialVisiblePageHeight > 0); + // Move by the size of the top-controls. + EventUtils.simulateDragFromCenterOfView( + activity.getWindow().getDecorView(), 0, -mTopControlsHeight); + // Moving should change the size of the page. Don't attempt to correlate the size as the // page doesn't see pixels, and to attempt to compare may result in rounding errors. Poll // for this value as there is no good way to detect when done. CriteriaHelper.pollInstrumentationThread(new Criteria() { @Override public boolean isSatisfied() { - // Move by the size of the top-controls. - EventUtils.simulateDragFromCenterOfView( - activity.getWindow().getDecorView(), 0, -mTopControlsHeight); return mInitialVisiblePageHeight != getVisiblePageHeight(); } }); @@ -113,13 +118,14 @@ Assert.assertEquals(View.INVISIBLE, activity.getTopContentsContainer().getVisibility()); }); + // Move so top-controls are shown again. + EventUtils.simulateDragFromCenterOfView( + activity.getWindow().getDecorView(), 0, mTopControlsHeight); + // Wait for the page height to match initial height. CriteriaHelper.pollInstrumentationThread(new Criteria() { @Override public boolean isSatisfied() { - // Move so top-controls are shown again. - EventUtils.simulateDragFromCenterOfView( - activity.getWindow().getDecorView(), 0, mTopControlsHeight); return mInitialVisiblePageHeight == getVisiblePageHeight(); } });
diff --git a/weblayer/browser/browser_context_impl.cc b/weblayer/browser/browser_context_impl.cc index ac87cfef..470def7 100644 --- a/weblayer/browser/browser_context_impl.cc +++ b/weblayer/browser/browser_context_impl.cc
@@ -18,6 +18,7 @@ #include "content/public/browser/device_service.h" #include "content/public/browser/download_request_utils.h" #include "content/public/browser/resource_context.h" +#include "weblayer/browser/chrome_ssl_host_state_delegate_factory.h" #include "weblayer/browser/fake_permission_controller_delegate.h" #include "weblayer/public/common/switches.h" @@ -140,7 +141,7 @@ } content::SSLHostStateDelegate* BrowserContextImpl::GetSSLHostStateDelegate() { - return &ssl_host_state_delegate_; + return ChromeSSLHostStateDelegateFactory::GetForBrowserContext(this); } content::PermissionControllerDelegate*
diff --git a/weblayer/browser/browser_context_impl.h b/weblayer/browser/browser_context_impl.h index 5d947fce..7e228abe 100644 --- a/weblayer/browser/browser_context_impl.h +++ b/weblayer/browser/browser_context_impl.h
@@ -10,7 +10,6 @@ #include "content/public/browser/browser_context.h" #include "content/public/browser/browser_thread.h" #include "weblayer/browser/download_manager_delegate_impl.h" -#include "weblayer/browser/ssl_host_state_delegate_impl.h" #include "weblayer/public/profile.h" namespace user_prefs { @@ -81,7 +80,6 @@ std::unique_ptr<ResourceContextImpl, content::BrowserThread::DeleteOnIOThread> resource_context_; DownloadManagerDelegateImpl download_delegate_; - SSLHostStateDelegateImpl ssl_host_state_delegate_; std::unique_ptr<PrefService> user_pref_service_; std::unique_ptr<content::PermissionControllerDelegate> permission_controller_delegate_;
diff --git a/weblayer/browser/download_browsertest.cc b/weblayer/browser/download_browsertest.cc index 6d52c1fa..78980b86 100644 --- a/weblayer/browser/download_browsertest.cc +++ b/weblayer/browser/download_browsertest.cc
@@ -328,4 +328,16 @@ EXPECT_EQ(download_state(), DownloadError::kConnectivityError); } +IN_PROC_BROWSER_TEST_F(DownloadBrowserTest, PendingOnExist) { + // Create a request that doesn't complete right away. + GURL url(embedded_test_server()->GetURL( + content::SlowDownloadHttpResponse::kKnownSizeUrl)); + + shell()->tab()->GetNavigationController()->Navigate(url); + + WaitForStarted(); + + // If this test crashes later then there'd be a regression. +} + } // namespace weblayer
diff --git a/weblayer/browser/download_manager_delegate_impl.cc b/weblayer/browser/download_manager_delegate_impl.cc index 2b44985..92d4c5d0 100644 --- a/weblayer/browser/download_manager_delegate_impl.cc +++ b/weblayer/browser/download_manager_delegate_impl.cc
@@ -52,6 +52,11 @@ DownloadManagerDelegateImpl::~DownloadManagerDelegateImpl() { download_manager_->RemoveObserver(this); + // Match the AddObserver calls added in OnDownloadCreated to avoid UaF. + download::SimpleDownloadManager::DownloadVector downloads; + download_manager_->GetAllDownloads(&downloads); + for (auto* download : downloads) + download->RemoveObserver(this); } bool DownloadManagerDelegateImpl::DetermineDownloadTarget(
diff --git a/weblayer/browser/ssl_host_state_delegate_impl.cc b/weblayer/browser/ssl_host_state_delegate_impl.cc deleted file mode 100644 index 6275c10..0000000 --- a/weblayer/browser/ssl_host_state_delegate_impl.cc +++ /dev/null
@@ -1,104 +0,0 @@ -// Copyright 2019 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "weblayer/browser/ssl_host_state_delegate_impl.h" - -#include "base/callback.h" -#include "net/base/hash_value.h" - -using content::SSLHostStateDelegate; - -namespace weblayer { - -namespace internal { - -CertPolicy::CertPolicy() = default; -CertPolicy::~CertPolicy() = default; - -// For an allowance, we consider a given |cert| to be a match to a saved -// allowed cert if the |error| is an exact match to or subset of the errors -// in the saved CertStatus. -bool CertPolicy::Check(const net::X509Certificate& cert, int error) const { - net::SHA256HashValue fingerprint = cert.CalculateChainFingerprint256(); - auto allowed_iter = allowed_.find(fingerprint); - return ((allowed_iter != allowed_.end()) && (allowed_iter->second & error) && - ((allowed_iter->second & error) == error)); -} - -void CertPolicy::Allow(const net::X509Certificate& cert, int error) { - // If this same cert had already been saved with a different error status, - // this will replace it with the new error status. - net::SHA256HashValue fingerprint = cert.CalculateChainFingerprint256(); - allowed_[fingerprint] = error; -} - -} // namespace internal - -SSLHostStateDelegateImpl::SSLHostStateDelegateImpl() = default; -SSLHostStateDelegateImpl::~SSLHostStateDelegateImpl() = default; - -void SSLHostStateDelegateImpl::HostRanInsecureContent( - const std::string& host, - int child_id, - InsecureContentType content_type) { - // Intentional no-op. -} - -bool SSLHostStateDelegateImpl::DidHostRunInsecureContent( - const std::string& host, - int child_id, - InsecureContentType content_type) { - // Intentional no-op. - return false; -} - -void SSLHostStateDelegateImpl::AllowCert(const std::string& host, - const net::X509Certificate& cert, - int error, - content::WebContents* web_contents) { - cert_policy_for_host_[host].Allow(cert, error); -} - -void SSLHostStateDelegateImpl::Clear( - base::RepeatingCallback<bool(const std::string&)> host_filter) { - if (host_filter.is_null()) { - cert_policy_for_host_.clear(); - return; - } - - for (auto it = cert_policy_for_host_.begin(); - it != cert_policy_for_host_.end();) { - auto next_it = std::next(it); - - if (host_filter.Run(it->first)) - cert_policy_for_host_.erase(it); - - it = next_it; - } -} - -SSLHostStateDelegate::CertJudgment SSLHostStateDelegateImpl::QueryPolicy( - const std::string& host, - const net::X509Certificate& cert, - int error, - content::WebContents* web_contents) { - return cert_policy_for_host_[host].Check(cert, error) - ? SSLHostStateDelegate::ALLOWED - : SSLHostStateDelegate::DENIED; -} - -void SSLHostStateDelegateImpl::RevokeUserAllowExceptions( - const std::string& host) { - cert_policy_for_host_.erase(host); -} - -bool SSLHostStateDelegateImpl::HasAllowException( - const std::string& host, - content::WebContents* web_contents) { - auto policy_iterator = cert_policy_for_host_.find(host); - return policy_iterator != cert_policy_for_host_.end() && - policy_iterator->second.HasAllowException(); -} - -} // namespace weblayer
diff --git a/weblayer/browser/ssl_host_state_delegate_impl.h b/weblayer/browser/ssl_host_state_delegate_impl.h deleted file mode 100644 index 12e0dda..0000000 --- a/weblayer/browser/ssl_host_state_delegate_impl.h +++ /dev/null
@@ -1,87 +0,0 @@ -// Copyright 2019 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef WEBLAYER_BROWSER_SSL_HOST_STATE_DELEGATE_IMPL_H_ -#define WEBLAYER_BROWSER_SSL_HOST_STATE_DELEGATE_IMPL_H_ - -#include <map> -#include <string> - -#include "base/macros.h" -#include "content/public/browser/ssl_host_state_delegate.h" -#include "net/base/hash_value.h" -#include "net/cert/x509_certificate.h" - -namespace weblayer { - -namespace internal { - -// This class maintains the policy for storing actions on certificate errors. -class CertPolicy { - public: - CertPolicy(); - ~CertPolicy(); - // Returns true if the user has decided to proceed through the ssl error - // before. For a certificate to be allowed, it must not have any - // *additional* errors from when it was allowed. - bool Check(const net::X509Certificate& cert, int error) const; - - // Causes the policy to allow this certificate for a given |error|. And - // remember the user's choice. - void Allow(const net::X509Certificate& cert, int error); - - // Returns true if and only if there exists a user allow exception for some - // certificate. - bool HasAllowException() const { return allowed_.size() > 0; } - - private: - // The set of fingerprints of allowed certificates. - std::map<net::SHA256HashValue, int> allowed_; -}; - -} // namespace internal - -// This class is a copy of AwSSLHostStateDelegate. It saves cert decisions in -// memory, and doesn't perpetuate across application restarts. -class SSLHostStateDelegateImpl : public content::SSLHostStateDelegate { - public: - SSLHostStateDelegateImpl(); - ~SSLHostStateDelegateImpl() override; - - // Records that |cert| is permitted to be used for |host| in the future, for - // a specified |error| type. - void AllowCert(const std::string& host, - const net::X509Certificate& cert, - int error, - content::WebContents* web_contents) override; - - void Clear( - base::RepeatingCallback<bool(const std::string&)> host_filter) override; - - // content::SSLHostStateDelegate: - content::SSLHostStateDelegate::CertJudgment QueryPolicy( - const std::string& host, - const net::X509Certificate& cert, - int error, - content::WebContents* web_contents) override; - void HostRanInsecureContent(const std::string& host, - int child_id, - InsecureContentType content_type) override; - bool DidHostRunInsecureContent(const std::string& host, - int child_id, - InsecureContentType content_type) override; - void RevokeUserAllowExceptions(const std::string& host) override; - bool HasAllowException(const std::string& host, - content::WebContents* web_contents) override; - - private: - // Certificate policies for each host. - std::map<std::string, internal::CertPolicy> cert_policy_for_host_; - - DISALLOW_COPY_AND_ASSIGN(SSLHostStateDelegateImpl); -}; - -} // namespace weblayer - -#endif // WEBLAYER_BROWSER_SSL_HOST_STATE_DELEGATE_IMPL_H_