diff --git a/AUTHORS b/AUTHORS index a4de4f4..3c996511 100644 --- a/AUTHORS +++ b/AUTHORS
@@ -366,6 +366,7 @@ Ilia Demianenko <ilia.demianenko@gmail.com> Ilia K <ki.stfu@gmail.com> Ilya Konstantinov <ilya.konstantinov@gmail.com> +Imranur Rahman <i.rahman@samsung.com> Imranur Rahman <ir.shimul@gmail.com> Ion Rosca <rosca@adobe.com> Irmak Kavasoglu <irmakkavasoglu@gmail.com> @@ -984,7 +985,6 @@ Yael Aharon <yael.aharon@intel.com> Yan Wang <yan0422.wang@samsung.com> Yang Gu <yang.gu@intel.com> -Yannic Bonenberger <contact@yannic-bonenberger.com> Yannic Bonenberger <yannic.bonenberger@gmail.com> Yarin Kaul <yarin.kaul@gmail.com> Yash Vempati <vempatiy@amazon.com>
diff --git a/DEPS b/DEPS index 039f4f0f..a36f258 100644 --- a/DEPS +++ b/DEPS
@@ -162,11 +162,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': 'df432d5efb70947c5424b690992899f7b45b8d82', + 'skia_revision': '932a2c0e3bb614c77bd4293f56bb5619f902e507', # 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': '4b4c63ad2abc4471b0051edcc16ad77fb2846e2f', + 'v8_revision': '84da790b879ff03a75ea94c6de263704f04658fe', # 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. @@ -174,7 +174,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': '41079d70e4695544a9d0d0bcc41788a92f9d1c6a', + 'angle_revision': '65a5036eb0419047789d5ee66c02577ef251e07b', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling SwiftShader # and whatever else without interference from each other. @@ -213,7 +213,7 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling freetype # and whatever else without interference from each other. - 'freetype_revision': 'cc17f852d575a8a66f9be51461af550d0f413891', + 'freetype_revision': '99f23d6ff2203966d210bccd49eacc62a20328f9', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling HarfBuzz # and whatever else without interference from each other. @@ -225,7 +225,7 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling catapult # and whatever else without interference from each other. - 'catapult_revision': 'b19a360c1269c795eff8dcf1e6d44093d20aeefe', + 'catapult_revision': 'b4e53c4a99381cd07cbfda1d6e3561bd3ed80f52', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling libFuzzer # and whatever else without interference from each other. @@ -853,7 +853,7 @@ # Build tools for Chrome OS. Note: This depends on third_party/pyelftools. 'src/third_party/chromite': { - 'url': Var('chromium_git') + '/chromiumos/chromite.git' + '@' + '08a7e90d730a745faa146a02217cd3e0d0968e6e', + 'url': Var('chromium_git') + '/chromiumos/chromite.git' + '@' + '818d963727de2aa9d1b7252e9657d425ec856001', 'condition': 'checkout_linux', }, @@ -1257,7 +1257,7 @@ }, 'src/third_party/perfetto': - Var('android_git') + '/platform/external/perfetto.git' + '@' + 'b895066e074a45851279c34e730195d95837efc6', + Var('android_git') + '/platform/external/perfetto.git' + '@' + 'e7a75776335a1735f41268a150193c67fc964bcd', 'src/third_party/perl': { 'url': Var('chromium_git') + '/chromium/deps/perl.git' + '@' + '6f3e5028eb65d0b4c5fdd792106ac4c84eee1eb3', @@ -1425,7 +1425,7 @@ Var('chromium_git') + '/external/khronosgroup/webgl.git' + '@' + 'abaae129d9a0c6e1e092067e0b105475df43352e', 'src/third_party/webrtc': - Var('webrtc_git') + '/src.git' + '@' + '3d1647412c08f589b03aed641a3cca5f0b05555d', + Var('webrtc_git') + '/src.git' + '@' + '809198edfff416fce8d75b574a43afab5e67b1cd', 'src/third_party/xdg-utils': { 'url': Var('chromium_git') + '/chromium/deps/xdg-utils.git' + '@' + 'd80274d5869b17b8c9067a1022e4416ee7ed5e0d', @@ -1487,7 +1487,7 @@ Var('chromium_git') + '/v8/v8.git' + '@' + Var('v8_revision'), 'src-internal': { - 'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@6e25bd5bbc4fafca4698b293e2c1e74e172cdea3', + 'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@ea5731baa00cf8b8e3041795ccaa13f419b41699', 'condition': 'checkout_src_internal', },
diff --git a/android_webview/browser/aw_settings.cc b/android_webview/browser/aw_settings.cc index 5c668e43..09c8b05 100644 --- a/android_webview/browser/aw_settings.cc +++ b/android_webview/browser/aw_settings.cc
@@ -43,6 +43,7 @@ web_prefs->viewport_meta_enabled = true; web_prefs->picture_in_picture_enabled = false; web_prefs->disable_features_depending_on_viz = true; + web_prefs->disable_accelerated_small_canvases = true; } const void* const kAwSettingsUserDataKey = &kAwSettingsUserDataKey;
diff --git a/android_webview/common/crash_reporter/crash_keys.cc b/android_webview/common/crash_reporter/crash_keys.cc index 2b61406c..3fbc1414 100644 --- a/android_webview/common/crash_reporter/crash_keys.cc +++ b/android_webview/common/crash_reporter/crash_keys.cc
@@ -36,6 +36,7 @@ "gpu-gl-vendor__1", "gpu-gl-vendor__2", "gpu-gl-renderer", + "oop_read_failure", // content/: "bad_message_reason",
diff --git a/android_webview/glue/java/src/com/android/webview/chromium/GlueApiHelperForM.java b/android_webview/glue/java/src/com/android/webview/chromium/GlueApiHelperForM.java index d322fcf..74172aad 100644 --- a/android_webview/glue/java/src/com/android/webview/chromium/GlueApiHelperForM.java +++ b/android_webview/glue/java/src/com/android/webview/chromium/GlueApiHelperForM.java
@@ -12,7 +12,7 @@ import org.chromium.android_webview.AwContentsClient; import org.chromium.android_webview.AwWebResourceResponse; -import org.chromium.base.annotations.DoNotInline; +import org.chromium.base.annotations.VerifiesOnM; /** * Utility class to use new APIs that were added in M (API level 23). These need to exist in a @@ -21,7 +21,7 @@ * in base/, for reasons such as using system APIs or instantiating an adapter class that is * specific to glue layer. */ -@DoNotInline +@VerifiesOnM @TargetApi(Build.VERSION_CODES.M) public final class GlueApiHelperForM { private GlueApiHelperForM() {}
diff --git a/android_webview/glue/java/src/com/android/webview/chromium/GlueApiHelperForN.java b/android_webview/glue/java/src/com/android/webview/chromium/GlueApiHelperForN.java index a9efd2c9..db5464d3 100644 --- a/android_webview/glue/java/src/com/android/webview/chromium/GlueApiHelperForN.java +++ b/android_webview/glue/java/src/com/android/webview/chromium/GlueApiHelperForN.java
@@ -14,7 +14,7 @@ import android.webkit.WebView; import android.webkit.WebViewDelegate; -import org.chromium.base.annotations.DoNotInline; +import org.chromium.base.annotations.VerifiesOnN; /** * Utility class to use new APIs that were added in N (API level 24). These need to exist in a @@ -23,7 +23,7 @@ * in base/, for reasons such as using system APIs or instantiating an adapter class that is * specific to glue layer. */ -@DoNotInline +@VerifiesOnN @TargetApi(Build.VERSION_CODES.N) public final class GlueApiHelperForN { private GlueApiHelperForN() {}
diff --git a/android_webview/glue/java/src/com/android/webview/chromium/GlueApiHelperForO.java b/android_webview/glue/java/src/com/android/webview/chromium/GlueApiHelperForO.java index 37e658f..7658c1d8 100644 --- a/android_webview/glue/java/src/com/android/webview/chromium/GlueApiHelperForO.java +++ b/android_webview/glue/java/src/com/android/webview/chromium/GlueApiHelperForO.java
@@ -12,7 +12,7 @@ import android.webkit.WebViewDelegate; import org.chromium.android_webview.AwRenderProcessGoneDetail; -import org.chromium.base.annotations.DoNotInline; +import org.chromium.base.annotations.VerifiesOnO; /** * Utility class to use new APIs that were added in O (API level 26). These need to exist in a @@ -21,7 +21,7 @@ * in base/, for reasons such as using system APIs or instantiating an adapter class that is * specific to glue layer. */ -@DoNotInline +@VerifiesOnO @TargetApi(Build.VERSION_CODES.O) public final class GlueApiHelperForO { private GlueApiHelperForO() {}
diff --git a/android_webview/glue/java/src/com/android/webview/chromium/GlueApiHelperForOMR1.java b/android_webview/glue/java/src/com/android/webview/chromium/GlueApiHelperForOMR1.java index a1f61df..c06add3a 100644 --- a/android_webview/glue/java/src/com/android/webview/chromium/GlueApiHelperForOMR1.java +++ b/android_webview/glue/java/src/com/android/webview/chromium/GlueApiHelperForOMR1.java
@@ -12,7 +12,7 @@ import org.chromium.android_webview.AwContentsClient.AwWebResourceRequest; import org.chromium.android_webview.AwSafeBrowsingResponse; import org.chromium.base.Callback; -import org.chromium.base.annotations.DoNotInline; +import org.chromium.base.annotations.VerifiesOnOMR1; /** * Utility class to use new APIs that were added in OMR1 (API level 27). These need to exist in a @@ -21,7 +21,7 @@ * in base/, for reasons such as using system APIs or instantiating an adapter class that is * specific to glue layer. */ -@DoNotInline +@VerifiesOnOMR1 @TargetApi(Build.VERSION_CODES.O_MR1) public final class GlueApiHelperForOMR1 { private GlueApiHelperForOMR1() {}
diff --git a/android_webview/glue/java/src/com/android/webview/chromium/GlueApiHelperForP.java b/android_webview/glue/java/src/com/android/webview/chromium/GlueApiHelperForP.java index 04ff2ea..fffe1a0 100644 --- a/android_webview/glue/java/src/com/android/webview/chromium/GlueApiHelperForP.java +++ b/android_webview/glue/java/src/com/android/webview/chromium/GlueApiHelperForP.java
@@ -9,7 +9,7 @@ import android.webkit.TracingController; import android.webkit.WebViewDelegate; -import org.chromium.base.annotations.DoNotInline; +import org.chromium.base.annotations.VerifiesOnP; /** * Utility class to use new APIs that were added in P (API level 28). These need to exist in a @@ -18,7 +18,7 @@ * in base/, for reasons such as using system APIs or instantiating an adapter class that is * specific to glue layer. */ -@DoNotInline +@VerifiesOnP @TargetApi(Build.VERSION_CODES.P) public final class GlueApiHelperForP { private GlueApiHelperForP() {}
diff --git a/android_webview/glue/java/src/com/android/webview/chromium/WebViewChromiumFactoryProvider.java b/android_webview/glue/java/src/com/android/webview/chromium/WebViewChromiumFactoryProvider.java index cb2adb7..295ac0a 100644 --- a/android_webview/glue/java/src/com/android/webview/chromium/WebViewChromiumFactoryProvider.java +++ b/android_webview/glue/java/src/com/android/webview/chromium/WebViewChromiumFactoryProvider.java
@@ -47,7 +47,8 @@ import org.chromium.base.PathUtils; import org.chromium.base.StrictModeContext; import org.chromium.base.ThreadUtils; -import org.chromium.base.annotations.DoNotInline; +import org.chromium.base.annotations.VerifiesOnN; +import org.chromium.base.annotations.VerifiesOnP; import org.chromium.base.library_loader.NativeLibraries; import org.chromium.base.metrics.CachedMetrics.TimesHistogramSample; import org.chromium.base.metrics.ScopedSysTraceEvent; @@ -78,7 +79,7 @@ * verification does not occur until it is actually used for N and above. */ @TargetApi(Build.VERSION_CODES.N) - @DoNotInline + @VerifiesOnN private static class ObjectHolderForN { public ServiceWorkerController mServiceWorkerController; } @@ -88,12 +89,12 @@ * verification does not occur until it is actually used for P and above. */ @TargetApi(Build.VERSION_CODES.P) - @DoNotInline + @VerifiesOnP private static class ObjectHolderForP { public TracingController mTracingController; } - private final static Object sSingletonLock = new Object(); + private static final Object sSingletonLock = new Object(); private static WebViewChromiumFactoryProvider sSingleton; private final WebViewChromiumRunQueue mRunQueue = new WebViewChromiumRunQueue(
diff --git a/android_webview/tools/remove_preinstalled_webview.py b/android_webview/tools/remove_preinstalled_webview.py index 5eaff7f..b2f97b9 100755 --- a/android_webview/tools/remove_preinstalled_webview.py +++ b/android_webview/tools/remove_preinstalled_webview.py
@@ -74,11 +74,10 @@ def CheckWebViewIsUninstalled(device): """Throws if WebView is still installed.""" for webview_package in WEBVIEW_PACKAGES: - paths = device.GetApplicationPaths(webview_package) - if paths: + if device.IsApplicationInstalled(webview_package): raise device_errors.CommandFailedError( - '{} is still installed on the device at {}'.format( - webview_package, paths), device) + '{} is still installed on the device'.format(webview_package), + device) def RemovePreinstalledWebViews(device):
diff --git a/ash/app_list/views/apps_grid_view.cc b/ash/app_list/views/apps_grid_view.cc index 52a018d9..ae7cc45 100644 --- a/ash/app_list/views/apps_grid_view.cc +++ b/ash/app_list/views/apps_grid_view.cc
@@ -963,6 +963,13 @@ if (bounds_animator_->IsAnimating()) bounds_animator_->Cancel(); + if (GetContentsBounds().IsEmpty()) + return; + + // Update cached tile padding first, as grid size calculations depend on the + // cached padding value. + UpdateTilePadding(); + // Prepare |page_size| * number-of-pages for |items_container_|, and sets the // origin properly to show the correct page. const gfx::Size page_size = GetTileGridSize(); @@ -983,13 +990,9 @@ page_height * pages)); } - if (GetContentsBounds().IsEmpty()) - return; - if (fadeout_layer_delegate_) fadeout_layer_delegate_->layer()->SetBounds(layer()->bounds()); - UpdateTilePadding(); CalculateIdealBoundsForFolder(); for (int i = 0; i < view_model_.view_size(); ++i) { AppListItemView* view = GetItemViewAt(i);
diff --git a/ash/shelf/shelf_view.cc b/ash/shelf/shelf_view.cc index 522f398..f2c3351 100644 --- a/ash/shelf/shelf_view.cc +++ b/ash/shelf/shelf_view.cc
@@ -1233,8 +1233,10 @@ last_visible_index_++; } else { strategy.overflow = true; - // Make space for the overflow button by showing one fewer app icon. - last_visible_index_--; + // Make space for the overflow button by showing one fewer app icon. If + // we already don't have enough space, don't decrement the last visible + // index further than -1. + last_visible_index_ = std::max(-1, last_visible_index_ - 1); break; } }
diff --git a/ash/shelf/shelf_view.h b/ash/shelf/shelf_view.h index d4820df0..2b0196f5 100644 --- a/ash/shelf/shelf_view.h +++ b/ash/shelf/shelf_view.h
@@ -575,7 +575,8 @@ int first_visible_index_ = -1; // Last index of an app launcher button that is visible (does not go into - // overflow), or -1 if there are no apps. + // overflow), or -1 if there are no apps (or if only the overflow button is + // visible). int last_visible_index_ = -1; std::unique_ptr<views::BoundsAnimator> bounds_animator_;
diff --git a/ash/shelf/shelf_view_unittest.cc b/ash/shelf/shelf_view_unittest.cc index 781a5145..d28e37f1 100644 --- a/ash/shelf/shelf_view_unittest.cc +++ b/ash/shelf/shelf_view_unittest.cc
@@ -2049,6 +2049,27 @@ test_api_->HideOverflowBubble(); } +// Checks how the overflow button and menu get laid out when the display is +// very narrow. +TEST_F(ShelfViewTest, TestOverflowWithNarrowDisplay) { + // No overflow bubble when scrollable shelf enabled. + // TODO(https://crbug.com/1002576): revisit when scrollable shelf is launched. + if (chromeos::switches::ShouldShowScrollableShelf()) + return; + + UpdateDisplay("200x600"); + + AddAppShortcutsUntilOverflow(); + OverflowButton* overflow_button = shelf_view_->GetOverflowButton(); + EXPECT_TRUE(overflow_button->GetVisible()); + + ui::test::EventGenerator* generator = GetEventGenerator(); + generator->set_current_screen_location( + overflow_button->GetBoundsInScreen().CenterPoint()); + generator->ClickLeftButton(); + ASSERT_TRUE(shelf_view_->IsShowingOverflowBubble()); +} + // Checks creating app shortcut for an opened platform app in overflow bubble // should be invisible to the shelf. See crbug.com/605793. TEST_F(ShelfViewTest, CheckOverflowStatusPinOpenedAppToShelf) {
diff --git a/ash/shell/content/test/ash_content_perf_test_launcher.cc b/ash/shell/content/test/ash_content_perf_test_launcher.cc index 947b77ff..fb68206 100644 --- a/ash/shell/content/test/ash_content_perf_test_launcher.cc +++ b/ash/shell/content/test/ash_content_perf_test_launcher.cc
@@ -34,9 +34,10 @@ protected: // content::ContentTestSuiteBase: void Initialize() override { - // Browser tests are expected not to tear-down various globals. (Must run - // before the base class is initialized.) + // Browser tests are expected not to tear-down various globals and may + // complete with the thread priority being above NORMAL. base::TestSuite::DisableCheckForLeakedGlobals(); + base::TestSuite::DisableCheckForThreadPriorityAtTestEnd(); ContentTestSuiteBase::Initialize(); ui_controls::InstallUIControlsAura(ash::test::CreateAshUIControls()); }
diff --git a/base/BUILD.gn b/base/BUILD.gn index 839a0c4..3544b79b 100644 --- a/base/BUILD.gn +++ b/base/BUILD.gn
@@ -3262,6 +3262,15 @@ "android/java/src/org/chromium/base/annotations/NativeClassQualifiedName.java", "android/java/src/org/chromium/base/annotations/RemovableInRelease.java", "android/java/src/org/chromium/base/annotations/UsedByReflection.java", + "android/java/src/org/chromium/base/annotations/VerifiesOnLollipop.java", + "android/java/src/org/chromium/base/annotations/VerifiesOnLollipopMR1.java", + "android/java/src/org/chromium/base/annotations/VerifiesOnM.java", + "android/java/src/org/chromium/base/annotations/VerifiesOnN.java", + "android/java/src/org/chromium/base/annotations/VerifiesOnNMR1.java", + "android/java/src/org/chromium/base/annotations/VerifiesOnO.java", + "android/java/src/org/chromium/base/annotations/VerifiesOnOMR1.java", + "android/java/src/org/chromium/base/annotations/VerifiesOnP.java", + "android/java/src/org/chromium/base/annotations/VerifiesOnQ.java", "android/java/src/org/chromium/base/compat/ApiHelperForM.java", "android/java/src/org/chromium/base/compat/ApiHelperForN.java", "android/java/src/org/chromium/base/compat/ApiHelperForO.java",
diff --git a/base/android/java/src/org/chromium/base/annotations/DoNotInline.java b/base/android/java/src/org/chromium/base/annotations/DoNotInline.java index 9252f3a..8960f52 100644 --- a/base/android/java/src/org/chromium/base/annotations/DoNotInline.java +++ b/base/android/java/src/org/chromium/base/annotations/DoNotInline.java
@@ -13,7 +13,8 @@ * The annotated method or class should never be inlined. * * The annotated method (or methods on the annotated class) are guaranteed not to be inlined by - * Proguard. Other optimizations may still apply. + * Proguard. Other optimizations may still apply. Do not use this annotation to fix class + * verification errors - use the @VerifiesOnX annotations instead. */ @Target({ElementType.CONSTRUCTOR, ElementType.METHOD, ElementType.TYPE}) @Retention(RetentionPolicy.CLASS)
diff --git a/base/android/java/src/org/chromium/base/annotations/VerifiesOnLollipop.java b/base/android/java/src/org/chromium/base/annotations/VerifiesOnLollipop.java new file mode 100644 index 0000000..196820c --- /dev/null +++ b/base/android/java/src/org/chromium/base/annotations/VerifiesOnLollipop.java
@@ -0,0 +1,21 @@ +// 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. + +package org.chromium.base.annotations; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * The annotated method or class verifies on L, but not below. + * + * The annotated method (or methods on the annotated class) are guaranteed to not be inlined by R8 + * on builds targeted below L. This prevents class verification errors (which results in a very slow + * retry-verification-at-runtime) from spreading into other classes on these lower versions. + */ +@Target({ElementType.CONSTRUCTOR, ElementType.METHOD, ElementType.TYPE}) +@Retention(RetentionPolicy.CLASS) +public @interface VerifiesOnLollipop {}
diff --git a/base/android/java/src/org/chromium/base/annotations/VerifiesOnLollipopMR1.java b/base/android/java/src/org/chromium/base/annotations/VerifiesOnLollipopMR1.java new file mode 100644 index 0000000..9165552 --- /dev/null +++ b/base/android/java/src/org/chromium/base/annotations/VerifiesOnLollipopMR1.java
@@ -0,0 +1,21 @@ +// 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. + +package org.chromium.base.annotations; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * The annotated method or class verifies on L_MR1, but not below. + * + * The annotated method (or methods on the annotated class) are guaranteed to not be inlined by R8 + * on builds targeted below L_MR1. This prevents class verification errors (which results in a very + * slow retry-verification-at-runtime) from spreading into other classes on these lower versions. + */ +@Target({ElementType.CONSTRUCTOR, ElementType.METHOD, ElementType.TYPE}) +@Retention(RetentionPolicy.CLASS) +public @interface VerifiesOnLollipopMR1 {}
diff --git a/base/android/java/src/org/chromium/base/annotations/VerifiesOnM.java b/base/android/java/src/org/chromium/base/annotations/VerifiesOnM.java new file mode 100644 index 0000000..44693497 --- /dev/null +++ b/base/android/java/src/org/chromium/base/annotations/VerifiesOnM.java
@@ -0,0 +1,21 @@ +// 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. + +package org.chromium.base.annotations; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * The annotated method or class verifies on M, but not below. + * + * The annotated method (or methods on the annotated class) are guaranteed to not be inlined by R8 + * on builds targeted below M. This prevents class verification errors (which results in a very slow + * retry-verification-at-runtime) from spreading into other classes on these lower versions. + */ +@Target({ElementType.CONSTRUCTOR, ElementType.METHOD, ElementType.TYPE}) +@Retention(RetentionPolicy.CLASS) +public @interface VerifiesOnM {}
diff --git a/base/android/java/src/org/chromium/base/annotations/VerifiesOnN.java b/base/android/java/src/org/chromium/base/annotations/VerifiesOnN.java new file mode 100644 index 0000000..783854a --- /dev/null +++ b/base/android/java/src/org/chromium/base/annotations/VerifiesOnN.java
@@ -0,0 +1,21 @@ +// 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. + +package org.chromium.base.annotations; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * The annotated method or class verifies on N, but not below. + * + * The annotated method (or methods on the annotated class) are guaranteed to not be inlined by R8 + * on builds targeted below N. This prevents class verification errors (which results in a very slow + * retry-verification-at-runtime) from spreading into other classes on these lower versions. + */ +@Target({ElementType.CONSTRUCTOR, ElementType.METHOD, ElementType.TYPE}) +@Retention(RetentionPolicy.CLASS) +public @interface VerifiesOnN {}
diff --git a/base/android/java/src/org/chromium/base/annotations/VerifiesOnNMR1.java b/base/android/java/src/org/chromium/base/annotations/VerifiesOnNMR1.java new file mode 100644 index 0000000..c970429 --- /dev/null +++ b/base/android/java/src/org/chromium/base/annotations/VerifiesOnNMR1.java
@@ -0,0 +1,21 @@ +// 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. + +package org.chromium.base.annotations; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * The annotated method or class verifies on N_MR1, but not below. + * + * The annotated method (or methods on the annotated class) are guaranteed to not be inlined by R8 + * on builds targeted below N_MR1. This prevents class verification errors (which results in a very + * slow retry-verification-at-runtime) from spreading into other classes on these lower versions. + */ +@Target({ElementType.CONSTRUCTOR, ElementType.METHOD, ElementType.TYPE}) +@Retention(RetentionPolicy.CLASS) +public @interface VerifiesOnNMR1 {}
diff --git a/base/android/java/src/org/chromium/base/annotations/VerifiesOnO.java b/base/android/java/src/org/chromium/base/annotations/VerifiesOnO.java new file mode 100644 index 0000000..7eb83b90 --- /dev/null +++ b/base/android/java/src/org/chromium/base/annotations/VerifiesOnO.java
@@ -0,0 +1,21 @@ +// 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. + +package org.chromium.base.annotations; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * The annotated method or class verifies on O, but not below. + * + * The annotated method (or methods on the annotated class) are guaranteed to not be inlined by R8 + * on builds targeted below O. This prevents class verification errors (which results in a very slow + * retry-verification-at-runtime) from spreading into other classes on these lower versions. + */ +@Target({ElementType.CONSTRUCTOR, ElementType.METHOD, ElementType.TYPE}) +@Retention(RetentionPolicy.CLASS) +public @interface VerifiesOnO {}
diff --git a/base/android/java/src/org/chromium/base/annotations/VerifiesOnOMR1.java b/base/android/java/src/org/chromium/base/annotations/VerifiesOnOMR1.java new file mode 100644 index 0000000..2b6b5c69 --- /dev/null +++ b/base/android/java/src/org/chromium/base/annotations/VerifiesOnOMR1.java
@@ -0,0 +1,21 @@ +// 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. + +package org.chromium.base.annotations; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * The annotated method or class verifies on O_MR1, but not below. + * + * The annotated method (or methods on the annotated class) are guaranteed to not be inlined by R8 + * on builds targeted below O_MR1. This prevents class verification errors (which results in a very + * slow retry-verification-at-runtime) from spreading into other classes on these lower versions. + */ +@Target({ElementType.CONSTRUCTOR, ElementType.METHOD, ElementType.TYPE}) +@Retention(RetentionPolicy.CLASS) +public @interface VerifiesOnOMR1 {}
diff --git a/base/android/java/src/org/chromium/base/annotations/VerifiesOnP.java b/base/android/java/src/org/chromium/base/annotations/VerifiesOnP.java new file mode 100644 index 0000000..c5883604 --- /dev/null +++ b/base/android/java/src/org/chromium/base/annotations/VerifiesOnP.java
@@ -0,0 +1,21 @@ +// 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. + +package org.chromium.base.annotations; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * The annotated method or class verifies on P, but not below. + * + * The annotated method (or methods on the annotated class) are guaranteed to not be inlined by R8 + * on builds targeted below P. This prevents class verification errors (which results in a very slow + * retry-verification-at-runtime) from spreading into other classes on these lower versions. + */ +@Target({ElementType.CONSTRUCTOR, ElementType.METHOD, ElementType.TYPE}) +@Retention(RetentionPolicy.CLASS) +public @interface VerifiesOnP {}
diff --git a/base/android/java/src/org/chromium/base/annotations/VerifiesOnQ.java b/base/android/java/src/org/chromium/base/annotations/VerifiesOnQ.java new file mode 100644 index 0000000..bc3f740 --- /dev/null +++ b/base/android/java/src/org/chromium/base/annotations/VerifiesOnQ.java
@@ -0,0 +1,21 @@ +// 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. + +package org.chromium.base.annotations; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * The annotated method or class verifies on Q, but not below. + * + * The annotated method (or methods on the annotated class) are guaranteed to not be inlined by R8 + * on builds targeted below Q. This prevents class verification errors (which results in a very slow + * retry-verification-at-runtime) from spreading into other classes on these lower versions. + */ +@Target({ElementType.CONSTRUCTOR, ElementType.METHOD, ElementType.TYPE}) +@Retention(RetentionPolicy.CLASS) +public @interface VerifiesOnQ {}
diff --git a/base/android/java/src/org/chromium/base/compat/ApiHelperForM.java b/base/android/java/src/org/chromium/base/compat/ApiHelperForM.java index a8c1dfb..f44ad540 100644 --- a/base/android/java/src/org/chromium/base/compat/ApiHelperForM.java +++ b/base/android/java/src/org/chromium/base/compat/ApiHelperForM.java
@@ -17,14 +17,14 @@ import android.webkit.WebView; import android.webkit.WebViewClient; -import org.chromium.base.annotations.DoNotInline; +import org.chromium.base.annotations.VerifiesOnM; /** * Utility class to use new APIs that were added in M (API level 23). These need to exist in a * separate class so that Android framework can successfully verify classes without * encountering the new APIs. */ -@DoNotInline +@VerifiesOnM @TargetApi(Build.VERSION_CODES.M) public final class ApiHelperForM { private ApiHelperForM() {}
diff --git a/base/android/java/src/org/chromium/base/compat/ApiHelperForN.java b/base/android/java/src/org/chromium/base/compat/ApiHelperForN.java index 3b3b61c..17104ea 100644 --- a/base/android/java/src/org/chromium/base/compat/ApiHelperForN.java +++ b/base/android/java/src/org/chromium/base/compat/ApiHelperForN.java
@@ -15,6 +15,7 @@ import android.media.MediaCodec.CryptoInfo; import android.os.Build; import android.security.NetworkSecurityPolicy; +import android.view.MotionEvent; import android.view.PointerIcon; import android.view.View; import android.view.View.DragShadowBuilder; @@ -22,14 +23,14 @@ import android.webkit.WebView; import android.webkit.WebViewClient; -import org.chromium.base.annotations.DoNotInline; +import org.chromium.base.annotations.VerifiesOnN; /** * Utility class to use new APIs that were added in N (API level 24). These need to exist in a * separate class so that Android framework can successfully verify classes without * encountering the new APIs. */ -@DoNotInline +@VerifiesOnN @TargetApi(Build.VERSION_CODES.N) public final class ApiHelperForN { private ApiHelperForN() {} @@ -79,4 +80,9 @@ public static boolean isCleartextTrafficPermitted(String host) { return NetworkSecurityPolicy.getInstance().isCleartextTrafficPermitted(host); } + + /** See {@link View#onResolvePointerIcon(MotionEvent, int)}. */ + public static PointerIcon onResolvePointerIcon(View view, MotionEvent event, int pointerIndex) { + return view.onResolvePointerIcon(event, pointerIndex); + } }
diff --git a/base/android/java/src/org/chromium/base/compat/ApiHelperForO.java b/base/android/java/src/org/chromium/base/compat/ApiHelperForO.java index c704827..f97dded 100644 --- a/base/android/java/src/org/chromium/base/compat/ApiHelperForO.java +++ b/base/android/java/src/org/chromium/base/compat/ApiHelperForO.java
@@ -11,14 +11,14 @@ import android.view.Display; import android.view.View; -import org.chromium.base.annotations.DoNotInline; +import org.chromium.base.annotations.VerifiesOnO; /** * Utility class to use new APIs that were added in O (API level 26). These need to exist in a * separate class so that Android framework can successfully verify classes without * encountering the new APIs. */ -@DoNotInline +@VerifiesOnO @TargetApi(Build.VERSION_CODES.O) public final class ApiHelperForO { private ApiHelperForO() {}
diff --git a/base/android/java/src/org/chromium/base/compat/ApiHelperForOMR1.java b/base/android/java/src/org/chromium/base/compat/ApiHelperForOMR1.java index 8724793c..38db288 100644 --- a/base/android/java/src/org/chromium/base/compat/ApiHelperForOMR1.java +++ b/base/android/java/src/org/chromium/base/compat/ApiHelperForOMR1.java
@@ -8,14 +8,14 @@ import android.os.Build; import android.view.Window; -import org.chromium.base.annotations.DoNotInline; +import org.chromium.base.annotations.VerifiesOnOMR1; /** * Utility class to use new APIs that were added in O_MR1 (API level 27). These need to exist in a * separate class so that Android framework can successfully verify classes without * encountering the new APIs. */ -@DoNotInline +@VerifiesOnOMR1 @TargetApi(Build.VERSION_CODES.O_MR1) public final class ApiHelperForOMR1 { private ApiHelperForOMR1() {}
diff --git a/base/android/java/src/org/chromium/base/compat/ApiHelperForP.java b/base/android/java/src/org/chromium/base/compat/ApiHelperForP.java index b7973211..c4b41cf 100644 --- a/base/android/java/src/org/chromium/base/compat/ApiHelperForP.java +++ b/base/android/java/src/org/chromium/base/compat/ApiHelperForP.java
@@ -10,14 +10,14 @@ import android.net.LinkProperties; import android.os.Build; -import org.chromium.base.annotations.DoNotInline; +import org.chromium.base.annotations.VerifiesOnP; /** * Utility class to use new APIs that were added in P (API level 28). These need to exist in a * separate class so that Android framework can successfully verify classes without * encountering the new APIs. */ -@DoNotInline +@VerifiesOnP @TargetApi(Build.VERSION_CODES.P) public final class ApiHelperForP { private ApiHelperForP() {}
diff --git a/base/containers/checked_iterators.h b/base/containers/checked_iterators.h index b7eb7b4..0fd63e3 100644 --- a/base/containers/checked_iterators.h +++ b/base/containers/checked_iterators.h
@@ -62,6 +62,16 @@ return current_ <= other.current_; } + bool operator>(const CheckedRandomAccessIterator& other) const { + CheckComparable(other); + return current_ > other.current_; + } + + bool operator>=(const CheckedRandomAccessIterator& other) const { + CheckComparable(other); + return current_ >= other.current_; + } + CheckedRandomAccessIterator& operator++() { CHECK(current_ != end_); ++current_; @@ -135,6 +145,12 @@ return current_; } + reference operator[](difference_type rhs) const { + CHECK_GE(rhs, 0); + CHECK_LT(rhs, end_ - current_); + return current_[rhs]; + } + static bool IsRangeMoveSafe(const CheckedRandomAccessIterator& from_begin, const CheckedRandomAccessIterator& from_end, const CheckedRandomAccessIterator& to) @@ -217,6 +233,16 @@ return current_ <= other.current_; } + bool operator>(const CheckedRandomAccessConstIterator& other) const { + CheckComparable(other); + return current_ > other.current_; + } + + bool operator>=(const CheckedRandomAccessConstIterator& other) const { + CheckComparable(other); + return current_ >= other.current_; + } + CheckedRandomAccessConstIterator& operator++() { CHECK(current_ != end_); ++current_; @@ -291,6 +317,12 @@ return current_; } + reference operator[](difference_type rhs) const { + CHECK_GE(rhs, 0); + CHECK_LT(rhs, end_ - current_); + return current_[rhs]; + } + static bool IsRangeMoveSafe( const CheckedRandomAccessConstIterator& from_begin, const CheckedRandomAccessConstIterator& from_end,
diff --git a/base/containers/span_unittest.cc b/base/containers/span_unittest.cc index 5ec3f3f..e2d437a 100644 --- a/base/containers/span_unittest.cc +++ b/base/containers/span_unittest.cc
@@ -474,6 +474,17 @@ } } +TEST(SpanTest, SubscriptedBeginIterator) { + int array[] = {1, 2, 3}; + span<const int> const_span(array); + for (size_t i = 0; i < const_span.size(); ++i) + EXPECT_EQ(array[i], const_span.begin()[i]); + + span<int> mutable_span(array); + for (size_t i = 0; i < mutable_span.size(); ++i) + EXPECT_EQ(array[i], mutable_span.begin()[i]); +} + TEST(SpanTest, TemplatedFirstOnDynamicSpan) { int array[] = {1, 2, 3}; span<const int> span(array); @@ -1212,12 +1223,16 @@ TEST(SpanTest, OutOfBoundsDeath) { constexpr span<int, 0> kEmptySpan; ASSERT_DEATH_IF_SUPPORTED(kEmptySpan[0], ""); + ASSERT_DEATH_IF_SUPPORTED(kEmptySpan.begin()[0], ""); + ASSERT_DEATH_IF_SUPPORTED(kEmptySpan.end()[0], ""); ASSERT_DEATH_IF_SUPPORTED(kEmptySpan.first(1), ""); ASSERT_DEATH_IF_SUPPORTED(kEmptySpan.last(1), ""); ASSERT_DEATH_IF_SUPPORTED(kEmptySpan.subspan(1), ""); constexpr span<int> kEmptyDynamicSpan; ASSERT_DEATH_IF_SUPPORTED(kEmptyDynamicSpan[0], ""); + ASSERT_DEATH_IF_SUPPORTED(kEmptyDynamicSpan.begin()[0], ""); + ASSERT_DEATH_IF_SUPPORTED(kEmptyDynamicSpan.end()[0], ""); ASSERT_DEATH_IF_SUPPORTED(kEmptyDynamicSpan.front(), ""); ASSERT_DEATH_IF_SUPPORTED(kEmptyDynamicSpan.first(1), ""); ASSERT_DEATH_IF_SUPPORTED(kEmptyDynamicSpan.last(1), ""); @@ -1228,6 +1243,8 @@ constexpr span<const int> kNonEmptyDynamicSpan(kArray); EXPECT_EQ(3U, kNonEmptyDynamicSpan.size()); ASSERT_DEATH_IF_SUPPORTED(kNonEmptyDynamicSpan[4], ""); + ASSERT_DEATH_IF_SUPPORTED(kNonEmptyDynamicSpan.begin()[-1], ""); + ASSERT_DEATH_IF_SUPPORTED(kNonEmptyDynamicSpan.begin()[3], ""); ASSERT_DEATH_IF_SUPPORTED(kEmptyDynamicSpan.subspan(10), ""); ASSERT_DEATH_IF_SUPPORTED(kEmptyDynamicSpan.subspan(1, 7), ""); } @@ -1285,4 +1302,20 @@ CheckedRandomAccessConstIterator<const int>(span.data(), span.data()))); } +TEST(SpanTest, Sort) { + int array[] = {5, 4, 3, 2, 1}; + + span<int> dynamic_span = array; + std::sort(dynamic_span.begin(), dynamic_span.end()); + EXPECT_THAT(array, ElementsAre(1, 2, 3, 4, 5)); + std::sort(dynamic_span.rbegin(), dynamic_span.rend()); + EXPECT_THAT(array, ElementsAre(5, 4, 3, 2, 1)); + + span<int, 5> static_span = array; + std::sort(static_span.rbegin(), static_span.rend(), std::greater<>()); + EXPECT_THAT(array, ElementsAre(1, 2, 3, 4, 5)); + std::sort(static_span.begin(), static_span.end(), std::greater<>()); + EXPECT_THAT(array, ElementsAre(5, 4, 3, 2, 1)); +} + } // namespace base
diff --git a/base/task/sequence_manager/sequence_manager.h b/base/task/sequence_manager/sequence_manager.h index cd2163d..003fab0 100644 --- a/base/task/sequence_manager/sequence_manager.h +++ b/base/task/sequence_manager/sequence_manager.h
@@ -102,6 +102,11 @@ kNone, kEnabled, kEnabledWithBacktrace, + + // Logs high priority tasks and the lower priority tasks they skipped + // past. Useful for debugging test failures caused by scheduler policy + // changes. + kReorderedOnly, }; TaskLogging task_execution_logging = TaskLogging::kNone;
diff --git a/base/task/sequence_manager/sequence_manager_impl.cc b/base/task/sequence_manager/sequence_manager_impl.cc index 26977d6687..88aabe0 100644 --- a/base/task/sequence_manager/sequence_manager_impl.cc +++ b/base/task/sequence_manager/sequence_manager_impl.cc
@@ -503,52 +503,60 @@ "task_type", executing_task.task_type); TRACE_EVENT_BEGIN0("sequence_manager", executing_task.task_queue_name); -#if DCHECK_IS_ON() && !defined(OS_NACL) - LogTaskDebugInfo(executing_task); -#endif - return task; } #if DCHECK_IS_ON() && !defined(OS_NACL) void SequenceManagerImpl::LogTaskDebugInfo( - const ExecutingTask& executing_task) { + const WorkQueue* selected_work_queue) const { + const Task* task = selected_work_queue->GetFrontTask(); switch (settings_.task_execution_logging) { case Settings::TaskLogging::kNone: break; case Settings::TaskLogging::kEnabled: - LOG(INFO) << "#" - << static_cast<uint64_t>( - executing_task.pending_task.enqueue_order()) - << " " << executing_task.task_queue_name - << (executing_task.pending_task.cross_thread_ - ? " Run crossthread " - : " Run ") - << executing_task.pending_task.posted_from.ToString(); + LOG(INFO) << "#" << static_cast<uint64_t>(task->enqueue_order()) << " " + << selected_work_queue->task_queue()->GetName() + << (task->cross_thread_ ? " Run crossthread " : " Run ") + << task->posted_from.ToString(); break; case Settings::TaskLogging::kEnabledWithBacktrace: { std::array<const void*, PendingTask::kTaskBacktraceLength + 1> task_trace; - task_trace[0] = executing_task.pending_task.posted_from.program_counter(); - std::copy(executing_task.pending_task.task_backtrace.begin(), - executing_task.pending_task.task_backtrace.end(), + task_trace[0] = task->posted_from.program_counter(); + std::copy(task->task_backtrace.begin(), task->task_backtrace.end(), task_trace.begin() + 1); size_t length = 0; while (length < task_trace.size() && task_trace[length]) ++length; if (length == 0) break; - LOG(INFO) << "#" - << static_cast<uint64_t>( - executing_task.pending_task.enqueue_order()) - << " " << executing_task.task_queue_name - << (executing_task.pending_task.cross_thread_ - ? " Run crossthread " - : " Run ") + LOG(INFO) << "#" << static_cast<uint64_t>(task->enqueue_order()) << " " + << selected_work_queue->task_queue()->GetName() + << (task->cross_thread_ ? " Run crossthread " : " Run ") << debug::StackTrace(task_trace.data(), length); break; } + + case Settings::TaskLogging::kReorderedOnly: { + std::vector<const Task*> skipped_tasks; + main_thread_only().selector.CollectSkippedOverLowerPriorityTasks( + selected_work_queue, &skipped_tasks); + + if (skipped_tasks.empty()) + break; + + LOG(INFO) << "#" << static_cast<uint64_t>(task->enqueue_order()) << " " + << selected_work_queue->task_queue()->GetName() + << (task->cross_thread_ ? " Run crossthread " : " Run ") + << task->posted_from.ToString(); + + for (const Task* skipped_task : skipped_tasks) { + LOG(INFO) << "# (skipped over) " + << static_cast<uint64_t>(skipped_task->enqueue_order()) << " " + << skipped_task->posted_from.ToString(); + } + } } } #endif // DCHECK_IS_ON() && !defined(OS_NACL) @@ -607,6 +615,10 @@ return nullopt; } +#if DCHECK_IS_ON() && !defined(OS_NACL) + LogTaskDebugInfo(work_queue); +#endif // DCHECK_IS_ON() && !defined(OS_NACL) + main_thread_only().task_execution_stack.emplace_back( work_queue->TakeTaskFromWorkQueue(), work_queue->task_queue(), InitializeTaskTiming(work_queue->task_queue()));
diff --git a/base/task/sequence_manager/sequence_manager_impl.h b/base/task/sequence_manager/sequence_manager_impl.h index a8c1659..bb699170 100644 --- a/base/task/sequence_manager/sequence_manager_impl.h +++ b/base/task/sequence_manager/sequence_manager_impl.h
@@ -388,7 +388,7 @@ TimeDelta GetDelayTillNextDelayedTask(LazyNow* lazy_now) const; #if DCHECK_IS_ON() - void LogTaskDebugInfo(const ExecutingTask& executing_task); + void LogTaskDebugInfo(const internal::WorkQueue* work_queue) const; #endif // Determines if wall time or thread time should be recorded for the next
diff --git a/base/task/sequence_manager/task_queue_selector.cc b/base/task/sequence_manager/task_queue_selector.cc index 5e3a14a..cb58d9b4 100644 --- a/base/task/sequence_manager/task_queue_selector.cc +++ b/base/task/sequence_manager/task_queue_selector.cc
@@ -159,6 +159,15 @@ } } +void TaskQueueSelector::CollectSkippedOverLowerPriorityTasks( + const internal::WorkQueue* selected_work_queue, + std::vector<const Task*>* result) const { + delayed_work_queue_sets_.CollectSkippedOverLowerPriorityTasks( + selected_work_queue, result); + immediate_work_queue_sets_.CollectSkippedOverLowerPriorityTasks( + selected_work_queue, result); +} + #if DCHECK_IS_ON() || !defined(NDEBUG) bool TaskQueueSelector::CheckContainsQueueForTest( const internal::TaskQueueImpl* queue) const {
diff --git a/base/task/sequence_manager/task_queue_selector.h b/base/task/sequence_manager/task_queue_selector.h index 2ae9b52..8a79a5e5 100644 --- a/base/task/sequence_manager/task_queue_selector.h +++ b/base/task/sequence_manager/task_queue_selector.h
@@ -76,6 +76,12 @@ void WorkQueueSetBecameEmpty(size_t set_index) override; void WorkQueueSetBecameNonEmpty(size_t set_index) override; + // Populates |result| with tasks with lower priority than the first task from + // |selected_work_queue| which could otherwise run now. + void CollectSkippedOverLowerPriorityTasks( + const internal::WorkQueue* selected_work_queue, + std::vector<const Task*>* result) const; + protected: WorkQueueSets* delayed_work_queue_sets() { return &delayed_work_queue_sets_; }
diff --git a/base/task/sequence_manager/task_queue_selector_unittest.cc b/base/task/sequence_manager/task_queue_selector_unittest.cc index c993664..c99520b 100644 --- a/base/task/sequence_manager/task_queue_selector_unittest.cc +++ b/base/task/sequence_manager/task_queue_selector_unittest.cc
@@ -762,6 +762,21 @@ task_queue2->UnregisterTaskQueue(); } +TEST_F(TaskQueueSelectorTest, CollectSkippedOverLowerPriorityTasks) { + size_t queue_order[] = {0, 1, 2, 3, 2, 1, 0}; + PushTasks(queue_order, 7); + selector_.SetQueuePriority(task_queues_[3].get(), TaskQueue::kHighPriority); + + std::vector<const Task*> result; + selector_.CollectSkippedOverLowerPriorityTasks( + task_queues_[3]->immediate_work_queue(), &result); + + ASSERT_EQ(3u, result.size()); + EXPECT_EQ(2u, result[0]->enqueue_order()); // The order here isn't important. + EXPECT_EQ(3u, result[1]->enqueue_order()); + EXPECT_EQ(4u, result[2]->enqueue_order()); +} + class DisabledAntiStarvationLogicTaskQueueSelectorTest : public TaskQueueSelectorTestBase, public testing::WithParamInterface<TaskQueue::QueuePriority> {
diff --git a/base/task/sequence_manager/work_queue.cc b/base/task/sequence_manager/work_queue.cc index 0d9df4a..2dfd04da 100644 --- a/base/task/sequence_manager/work_queue.cc +++ b/base/task/sequence_manager/work_queue.cc
@@ -305,6 +305,16 @@ tasks_.pop_front(); } +void WorkQueue::CollectTasksOlderThan(EnqueueOrder reference, + std::vector<const Task*>* result) const { + for (const Task& task : tasks_) { + if (task.enqueue_order() >= reference) + break; + + result->push_back(&task); + } +} + } // namespace internal } // namespace sequence_manager } // namespace base
diff --git a/base/task/sequence_manager/work_queue.h b/base/task/sequence_manager/work_queue.h index 849d48cac..65fdee4c 100644 --- a/base/task/sequence_manager/work_queue.h +++ b/base/task/sequence_manager/work_queue.h
@@ -161,6 +161,11 @@ // Test support function. This should not be used in production code. void PopTaskForTesting(); + // Iterates through |tasks_| adding any that are older than |reference| to + // |result|. + void CollectTasksOlderThan(EnqueueOrder reference, + std::vector<const Task*>* result) const; + private: bool InsertFenceImpl(EnqueueOrder fence);
diff --git a/base/task/sequence_manager/work_queue_sets.cc b/base/task/sequence_manager/work_queue_sets.cc index c2f9886..68ec9613 100644 --- a/base/task/sequence_manager/work_queue_sets.cc +++ b/base/task/sequence_manager/work_queue_sets.cc
@@ -237,6 +237,19 @@ } #endif +void WorkQueueSets::CollectSkippedOverLowerPriorityTasks( + const internal::WorkQueue* selected_work_queue, + std::vector<const Task*>* result) const { + EnqueueOrder selected_enqueue_order; + CHECK(selected_work_queue->GetFrontTaskEnqueueOrder(&selected_enqueue_order)); + for (size_t priority = selected_work_queue->work_queue_set_index() + 1; + priority < TaskQueue::kQueuePriorityCount; priority++) { + for (const OldestTaskEnqueueOrder& pair : work_queue_heaps_[priority]) { + pair.value->CollectTasksOlderThan(selected_enqueue_order, result); + } + } +} + } // namespace internal } // namespace sequence_manager } // namespace base
diff --git a/base/task/sequence_manager/work_queue_sets.h b/base/task/sequence_manager/work_queue_sets.h index 90cc6d7..f128c62c 100644 --- a/base/task/sequence_manager/work_queue_sets.h +++ b/base/task/sequence_manager/work_queue_sets.h
@@ -95,6 +95,12 @@ const char* GetName() const { return name_; } + // Collects ready tasks which where skipped over when |selected_work_queue| + // was selected. Note this is somewhat expensive. + void CollectSkippedOverLowerPriorityTasks( + const internal::WorkQueue* selected_work_queue, + std::vector<const Task*>* result) const; + private: struct OldestTaskEnqueueOrder { EnqueueOrder key;
diff --git a/base/task/sequence_manager/work_queue_sets_unittest.cc b/base/task/sequence_manager/work_queue_sets_unittest.cc index 30f3bb8f..fa014c6 100644 --- a/base/task/sequence_manager/work_queue_sets_unittest.cc +++ b/base/task/sequence_manager/work_queue_sets_unittest.cc
@@ -331,6 +331,32 @@ EXPECT_EQ(queue1, work_queue_sets_->GetOldestQueueInSet(set)); } +TEST_F(WorkQueueSetsTest, CollectSkippedOverLowerPriorityTasks) { + WorkQueue* queue1 = NewTaskQueue("queue1"); + WorkQueue* queue2 = NewTaskQueue("queue2"); + WorkQueue* queue3 = NewTaskQueue("queue3"); + + work_queue_sets_->ChangeSetIndex(queue1, 3); + work_queue_sets_->ChangeSetIndex(queue2, 2); + work_queue_sets_->ChangeSetIndex(queue3, 1); + + queue1->Push(FakeTaskWithEnqueueOrder(1)); + queue1->Push(FakeTaskWithEnqueueOrder(2)); + queue2->Push(FakeTaskWithEnqueueOrder(3)); + queue3->Push(FakeTaskWithEnqueueOrder(4)); + queue3->Push(FakeTaskWithEnqueueOrder(5)); + queue2->Push(FakeTaskWithEnqueueOrder(6)); + queue1->Push(FakeTaskWithEnqueueOrder(7)); + + std::vector<const Task*> result; + work_queue_sets_->CollectSkippedOverLowerPriorityTasks(queue3, &result); + + ASSERT_EQ(3u, result.size()); + EXPECT_EQ(3u, result[0]->enqueue_order()); // The order here isn't important. + EXPECT_EQ(1u, result[1]->enqueue_order()); + EXPECT_EQ(2u, result[2]->enqueue_order()); +} + } // namespace internal } // namespace sequence_manager } // namespace base
diff --git a/base/task/sequence_manager/work_queue_unittest.cc b/base/task/sequence_manager/work_queue_unittest.cc index 721f60f..e695b99 100644 --- a/base/task/sequence_manager/work_queue_unittest.cc +++ b/base/task/sequence_manager/work_queue_unittest.cc
@@ -555,6 +555,20 @@ EXPECT_FALSE(work_queue_->GetFrontTaskEnqueueOrder(&enqueue_order)); } +TEST_F(WorkQueueTest, CollectTasksOlderThan) { + work_queue_->Push(FakeTaskWithEnqueueOrder(2)); + work_queue_->Push(FakeTaskWithEnqueueOrder(3)); + work_queue_->Push(FakeTaskWithEnqueueOrder(4)); + + std::vector<const Task*> result; + work_queue_->CollectTasksOlderThan(EnqueueOrder::FromIntForTesting(4), + &result); + + ASSERT_EQ(2u, result.size()); + EXPECT_EQ(2u, result[0]->enqueue_order()); + EXPECT_EQ(3u, result[1]->enqueue_order()); +} + } // namespace internal } // namespace sequence_manager } // namespace base
diff --git a/base/test/test_suite.cc b/base/test/test_suite.cc index 3b1de80..fb9a444 100644 --- a/base/test/test_suite.cc +++ b/base/test/test_suite.cc
@@ -37,6 +37,7 @@ #include "base/test/multiprocess_test.h" #include "base/test/test_switches.h" #include "base/test/test_timeouts.h" +#include "base/threading/platform_thread.h" #include "base/time/time.h" #include "build/build_config.h" #include "testing/gmock/include/gmock/gmock.h" @@ -188,6 +189,31 @@ }; #endif // !defined(OS_IOS) +class CheckThreadPriority : public testing::EmptyTestEventListener { + public: + CheckThreadPriority(bool check_thread_priority_at_test_end) + : check_thread_priority_at_test_end_(check_thread_priority_at_test_end) { + CHECK_EQ(base::PlatformThread::GetCurrentThreadPriority(), + base::ThreadPriority::NORMAL); + } + + void OnTestStart(const testing::TestInfo& test) override { + EXPECT_EQ(base::PlatformThread::GetCurrentThreadPriority(), + base::ThreadPriority::NORMAL); + } + void OnTestEnd(const testing::TestInfo& test) override { + if (check_thread_priority_at_test_end_) { + EXPECT_EQ(base::PlatformThread::GetCurrentThreadPriority(), + base::ThreadPriority::NORMAL); + } + } + + private: + const bool check_thread_priority_at_test_end_; + + DISALLOW_COPY_AND_ASSIGN(CheckThreadPriority); +}; + const std::string& GetProfileName() { static const NoDestructor<std::string> profile_name([]() { const CommandLine& command_line = *CommandLine::ForCurrentProcess(); @@ -381,6 +407,11 @@ check_for_process_priority_ = false; } +void TestSuite::DisableCheckForThreadPriorityAtTestEnd() { + DCHECK(!is_initialized_); + check_for_thread_priority_at_test_end_ = false; +} + void TestSuite::UnitTestAssertHandler(const char* file, int line, const StringPiece summary, @@ -571,6 +602,8 @@ if (check_for_process_priority_) listeners.Append(new CheckProcessPriority); #endif + listeners.Append( + new CheckThreadPriority(check_for_thread_priority_at_test_end_)); AddTestLauncherResultPrinter();
diff --git a/base/test/test_suite.h b/base/test/test_suite.h index 6e1e750..0565c5e 100644 --- a/base/test/test_suite.h +++ b/base/test/test_suite.h
@@ -46,6 +46,10 @@ // Disables checks for process priority. Most tests should not use this. void DisableCheckForProcessPriority(); + // Disables checks for thread priority at test end. This may be used for tests + // that each run in their own process. + void DisableCheckForThreadPriorityAtTestEnd(); + // Disables checks for certain global objects being leaked across tests. void DisableCheckForLeakedGlobals(); @@ -94,6 +98,7 @@ bool check_for_leaked_globals_ = true; bool check_for_process_priority_ = true; + bool check_for_thread_priority_at_test_end_ = true; bool is_initialized_ = false;
diff --git a/build/android/docs/class_verification_failures.md b/build/android/docs/class_verification_failures.md index bf9a8a29..36ee97e 100644 --- a/build/android/docs/class_verification_failures.md +++ b/build/android/docs/class_verification_failures.md
@@ -127,7 +127,7 @@ * These need to exist in a separate class so that Android framework can successfully verify * classes without encountering the new APIs. */ -@DoNotInline +@VerifiesOnOMR1 @TargetApi(Build.VERSION_CODES.O_MR1) public class ApiHelperForOMR1 { private ApiHelperForOMR1() {} @@ -136,8 +136,8 @@ } ``` -* `@DoNotInline`: this is a chromium-defined annotation to tell proguard (and - similar tools) not to inline this class or its methods (since that would +* `@VerifiesOnO_MR1`: this is a chromium-defined annotation to tell proguard + (and similar tools) not to inline this class or its methods (since that would defeat the point of out-of-lining!) * `@TargetApi(Build.VERSION_CODES.O_MR1)`: this tells Android Lint it's OK to use OMR1 APIs since this class is only used on OMR1 and above. Substitute
diff --git a/build/android/gyp/proguard.py b/build/android/gyp/proguard.py index 328434110..5d5d6dda 100755 --- a/build/android/gyp/proguard.py +++ b/build/android/gyp/proguard.py
@@ -14,6 +14,18 @@ from util import build_utils from util import diff_utils +_API_LEVEL_VERSION_CODE = [ + (21, 'L'), + (22, 'LolliopoMR1'), + (23, 'M'), + (24, 'N'), + (25, 'NMR1'), + (26, 'O'), + (27, 'OMR1'), + (28, 'P'), + (29, 'Q'), +] + class _ProguardOutputFilter(object): """ProGuard outputs boring stuff to stdout (ProGuard version, jar path, etc) @@ -322,6 +334,20 @@ ret.append("-applymapping '%s'" % options.apply_mapping) if options.repackage_classes: ret.append("-repackageclasses '%s'" % options.repackage_classes) + + _min_api = int(options.min_api) if options.min_api else 0 + for api_level, version_code in _API_LEVEL_VERSION_CODE: + annotation_name = 'org.chromium.base.annotations.VerifiesOn' + version_code + if api_level > _min_api: + ret.append('-keep @interface %s' % annotation_name) + ret.append("""\ +-keep,allowobfuscation,allowoptimization @%s class ** { + <methods>; +}""" % annotation_name) + ret.append("""\ +-keepclassmembers,allowobfuscation,allowoptimization class ** { + @%s <methods>; +}""" % annotation_name) return '\n'.join(ret)
diff --git a/build/android/update_verification.py b/build/android/update_verification.py index 40cb64a..c2f3243 100755 --- a/build/android/update_verification.py +++ b/build/android/update_verification.py
@@ -49,8 +49,7 @@ # Restore command is not synchronous raw_input('Select "Restore my data" on the device. Then press enter to ' 'continue.') - device_path = device.GetApplicationPaths(package_name) - if not device_path: + if not device.IsApplicationInstalled(package_name): raise Exception('Expected package %s to already be installed. ' 'Package name might have changed!' % package_name)
diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn index a46ce76..a1cca37 100644 --- a/chrome/android/BUILD.gn +++ b/chrome/android/BUILD.gn
@@ -980,8 +980,9 @@ "//chrome/android:app_hooks_java", "//chrome/android:chrome_java", "//chrome/android/features/vr:java", - "//chrome/test/android:chrome_java_test_support", + "//chrome/browser/util/android:java", "//chrome/lib/util/public/android:java", + "//chrome/test/android:chrome_java_test_support", "//components/policy/android:policy_java", "//content/public/android:content_java", "//content/public/test/android:content_java_test_support",
diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java_sources.gni index 7488ffc..f1b2f69 100644 --- a/chrome/android/chrome_java_sources.gni +++ b/chrome/android/chrome_java_sources.gni
@@ -1725,7 +1725,6 @@ "java/src/org/chromium/chrome/browser/util/ChromeIntentUtil.java", "java/src/org/chromium/chrome/browser/util/ColorUtils.java", "java/src/org/chromium/chrome/browser/util/FeatureUtilities.java", - "java/src/org/chromium/chrome/browser/util/IntentUtils.java", "java/src/org/chromium/chrome/browser/util/PlatformUtil.java", "java/src/org/chromium/chrome/browser/util/ViewUtils.java", "java/src/org/chromium/chrome/browser/vr/ArDelegate.java",
diff --git a/chrome/android/features/vr/BUILD.gn b/chrome/android/features/vr/BUILD.gn index 218d773..c38cbc2 100644 --- a/chrome/android/features/vr/BUILD.gn +++ b/chrome/android/features/vr/BUILD.gn
@@ -119,6 +119,7 @@ "//base:base_java", "//base:jni_java", "//chrome/android:chrome_java", + "//chrome/browser/util/android:java", "//components/policy/android:policy_java", "//content/public/android:content_java", "//device/vr:java",
diff --git a/chrome/android/java/monochrome_public_bundle.proguard_flags.expected b/chrome/android/java/monochrome_public_bundle.proguard_flags.expected index 182431d..30f34e1 100644 --- a/chrome/android/java/monochrome_public_bundle.proguard_flags.expected +++ b/chrome/android/java/monochrome_public_bundle.proguard_flags.expected
@@ -746,3 +746,42 @@ -keepclassmembers class * { @com.google.vr.dynamite.client.UsedByReflection *; } + +################################################################################ +# Dynamically generated from build/android/gyp/proguard.py +################################################################################ +-keep @interface org.chromium.base.annotations.VerifiesOnNMR1 +-keep,allowobfuscation,allowoptimization @org.chromium.base.annotations.VerifiesOnNMR1 class ** { + <methods>; +} +-keepclassmembers,allowobfuscation,allowoptimization class ** { + @org.chromium.base.annotations.VerifiesOnNMR1 <methods>; +} +-keep @interface org.chromium.base.annotations.VerifiesOnO +-keep,allowobfuscation,allowoptimization @org.chromium.base.annotations.VerifiesOnO class ** { + <methods>; +} +-keepclassmembers,allowobfuscation,allowoptimization class ** { + @org.chromium.base.annotations.VerifiesOnO <methods>; +} +-keep @interface org.chromium.base.annotations.VerifiesOnOMR1 +-keep,allowobfuscation,allowoptimization @org.chromium.base.annotations.VerifiesOnOMR1 class ** { + <methods>; +} +-keepclassmembers,allowobfuscation,allowoptimization class ** { + @org.chromium.base.annotations.VerifiesOnOMR1 <methods>; +} +-keep @interface org.chromium.base.annotations.VerifiesOnP +-keep,allowobfuscation,allowoptimization @org.chromium.base.annotations.VerifiesOnP class ** { + <methods>; +} +-keepclassmembers,allowobfuscation,allowoptimization class ** { + @org.chromium.base.annotations.VerifiesOnP <methods>; +} +-keep @interface org.chromium.base.annotations.VerifiesOnQ +-keep,allowobfuscation,allowoptimization @org.chromium.base.annotations.VerifiesOnQ class ** { + <methods>; +} +-keepclassmembers,allowobfuscation,allowoptimization class ** { + @org.chromium.base.annotations.VerifiesOnQ <methods>; +}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/AfterStartupTaskUtils.java b/chrome/android/java/src/org/chromium/chrome/browser/AfterStartupTaskUtils.java index be48db3a..7f672d9 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/AfterStartupTaskUtils.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/AfterStartupTaskUtils.java
@@ -3,6 +3,7 @@ // found in the LICENSE file. package org.chromium.chrome.browser; +import org.chromium.base.annotations.NativeMethods; /** * JNI call glue for AfterStartupTaskUtils in C++. @@ -16,8 +17,11 @@ * to run and newly posted tasks will no longer be deferred. */ public static void setStartupComplete() { - nativeSetStartupComplete(); + AfterStartupTaskUtilsJni.get().setStartupComplete(); } - private static native void nativeSetStartupComplete(); + @NativeMethods + interface Natives { + void setStartupComplete(); + } }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeFeatureList.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeFeatureList.java index 78ed598..e1d2052f 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeFeatureList.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeFeatureList.java
@@ -7,6 +7,7 @@ import org.chromium.base.VisibleForTesting; import org.chromium.base.annotations.JNINamespace; import org.chromium.base.annotations.MainDex; +import org.chromium.base.annotations.NativeMethods; import org.chromium.base.library_loader.LibraryLoader; import java.util.Map; @@ -52,7 +53,7 @@ // // The FeatureList is however guaranteed to be initialized by the time // AsyncInitializationActivity#finishNativeInitialization is called. - return nativeIsInitialized(); + return ChromeFeatureListJni.get().isInitialized(); } /** @@ -72,7 +73,7 @@ } assert isInitialized(); - return nativeIsEnabled(featureName); + return ChromeFeatureListJni.get().isEnabled(featureName); } /** @@ -89,7 +90,7 @@ public static String getFieldTrialParamByFeature(String featureName, String paramName) { if (sTestFeatures != null) return ""; assert isInitialized(); - return nativeGetFieldTrialParamByFeature(featureName, paramName); + return ChromeFeatureListJni.get().getFieldTrialParamByFeature(featureName, paramName); } /** @@ -108,7 +109,8 @@ String featureName, String paramName, int defaultValue) { if (sTestFeatures != null) return defaultValue; assert isInitialized(); - return nativeGetFieldTrialParamByFeatureAsInt(featureName, paramName, defaultValue); + return ChromeFeatureListJni.get().getFieldTrialParamByFeatureAsInt( + featureName, paramName, defaultValue); } /** @@ -127,7 +129,8 @@ String featureName, String paramName, double defaultValue) { if (sTestFeatures != null) return defaultValue; assert isInitialized(); - return nativeGetFieldTrialParamByFeatureAsDouble(featureName, paramName, defaultValue); + return ChromeFeatureListJni.get().getFieldTrialParamByFeatureAsDouble( + featureName, paramName, defaultValue); } /** @@ -146,7 +149,8 @@ String featureName, String paramName, boolean defaultValue) { if (sTestFeatures != null) return defaultValue; assert isInitialized(); - return nativeGetFieldTrialParamByFeatureAsBoolean(featureName, paramName, defaultValue); + return ChromeFeatureListJni.get().getFieldTrialParamByFeatureAsBoolean( + featureName, paramName, defaultValue); } // Alphabetical: @@ -360,14 +364,16 @@ public static final String SERVICE_MANAGER_FOR_BACKGROUND_PREFETCH = "ServiceManagerForBackgroundPrefetch"; - private static native boolean nativeIsInitialized(); - private static native boolean nativeIsEnabled(String featureName); - private static native String nativeGetFieldTrialParamByFeature( - String featureName, String paramName); - private static native int nativeGetFieldTrialParamByFeatureAsInt( - String featureName, String paramName, int defaultValue); - private static native double nativeGetFieldTrialParamByFeatureAsDouble( - String featureName, String paramName, double defaultValue); - private static native boolean nativeGetFieldTrialParamByFeatureAsBoolean( - String featureName, String paramName, boolean defaultValue); + @NativeMethods + interface Natives { + boolean isInitialized(); + boolean isEnabled(String featureName); + String getFieldTrialParamByFeature(String featureName, String paramName); + int getFieldTrialParamByFeatureAsInt( + String featureName, String paramName, int defaultValue); + double getFieldTrialParamByFeatureAsDouble( + String featureName, String paramName, double defaultValue); + boolean getFieldTrialParamByFeatureAsBoolean( + String featureName, String paramName, boolean defaultValue); + } }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/DevToolsServer.java b/chrome/android/java/src/org/chromium/chrome/browser/DevToolsServer.java index b0598fb2..cbe2ec512 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/DevToolsServer.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/DevToolsServer.java
@@ -11,6 +11,7 @@ import org.chromium.base.ApiCompatibilityUtils; import org.chromium.base.ContextUtils; import org.chromium.base.annotations.CalledByNative; +import org.chromium.base.annotations.NativeMethods; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; @@ -35,33 +36,30 @@ } public DevToolsServer(String socketNamePrefix) { - mNativeDevToolsServer = nativeInitRemoteDebugging(socketNamePrefix); + mNativeDevToolsServer = + DevToolsServerJni.get().initRemoteDebugging(DevToolsServer.this, socketNamePrefix); } public void destroy() { - nativeDestroyRemoteDebugging(mNativeDevToolsServer); + DevToolsServerJni.get().destroyRemoteDebugging(DevToolsServer.this, mNativeDevToolsServer); mNativeDevToolsServer = 0; } public boolean isRemoteDebuggingEnabled() { - return nativeIsRemoteDebuggingEnabled(mNativeDevToolsServer); + return DevToolsServerJni.get().isRemoteDebuggingEnabled( + DevToolsServer.this, mNativeDevToolsServer); } public void setRemoteDebuggingEnabled(boolean enabled, @Security int security) { boolean allowDebugPermission = security == Security.ALLOW_DEBUG_PERMISSION; - nativeSetRemoteDebuggingEnabled(mNativeDevToolsServer, enabled, allowDebugPermission); + DevToolsServerJni.get().setRemoteDebuggingEnabled( + DevToolsServer.this, mNativeDevToolsServer, enabled, allowDebugPermission); } public void setRemoteDebuggingEnabled(boolean enabled) { setRemoteDebuggingEnabled(enabled, Security.DEFAULT); } - private native long nativeInitRemoteDebugging(String socketNamePrefix); - private native void nativeDestroyRemoteDebugging(long devToolsServer); - private native boolean nativeIsRemoteDebuggingEnabled(long devToolsServer); - private native void nativeSetRemoteDebuggingEnabled( - long devToolsServer, boolean enabled, boolean allowDebugPermission); - @CalledByNative private static boolean checkDebugPermission(int pid, int uid) { String debugPermissionName = @@ -70,4 +68,13 @@ ContextUtils.getApplicationContext(), debugPermissionName, pid, uid) == PackageManager.PERMISSION_GRANTED; } + + @NativeMethods + interface Natives { + long initRemoteDebugging(DevToolsServer caller, String socketNamePrefix); + void destroyRemoteDebugging(DevToolsServer caller, long devToolsServer); + boolean isRemoteDebuggingEnabled(DevToolsServer caller, long devToolsServer); + void setRemoteDebuggingEnabled(DevToolsServer caller, long devToolsServer, boolean enabled, + boolean allowDebugPermission); + } }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/IntentHeadersRecorder.java b/chrome/android/java/src/org/chromium/chrome/browser/IntentHeadersRecorder.java index 9840b71..70388d5 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/IntentHeadersRecorder.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/IntentHeadersRecorder.java
@@ -8,6 +8,7 @@ import org.chromium.base.VisibleForTesting; import org.chromium.base.annotations.JNINamespace; +import org.chromium.base.annotations.NativeMethods; import org.chromium.base.metrics.RecordHistogram; import java.lang.annotation.Retention; @@ -26,12 +27,10 @@ @JNINamespace("chrome::android") /* package */ static class HeaderClassifier { /* package */ boolean isCorsSafelistedHeader(String name, String value) { - return nativeIsCorsSafelistedHeader(name, value); + return IntentHeadersRecorderJni.get().isCorsSafelistedHeader(name, value); } } - private static native boolean nativeIsCorsSafelistedHeader(String name, String value); - @Retention(RetentionPolicy.SOURCE) @IntDef({IntentHeadersResult.FIRST_PARTY_NO_HEADERS, IntentHeadersResult.FIRST_PARTY_ONLY_SAFE_HEADERS, @@ -100,4 +99,9 @@ RecordHistogram.recordEnumeratedHistogram("Android.IntentHeaders", result, IntentHeadersResult.NUM_ENTRIES); } + + @NativeMethods + interface Natives { + boolean isCorsSafelistedHeader(String name, String value); + } }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/NearOomMonitor.java b/chrome/android/java/src/org/chromium/chrome/browser/NearOomMonitor.java index fbcd02be..1759d7f 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/NearOomMonitor.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/NearOomMonitor.java
@@ -9,6 +9,7 @@ import org.chromium.base.ContextUtils; import org.chromium.base.annotations.CalledByNative; +import org.chromium.base.annotations.NativeMethods; /** * Android part of NearOomMonitor. This collects Java memory pressure signals @@ -32,11 +33,14 @@ @Override public void onLowMemory() { - nativeOnLowMemory(mNearOomMonitor); + NearOomMonitorJni.get().onLowMemory(mNearOomMonitor, NearOomMonitor.this); } @Override public void onConfigurationChanged(Configuration config) {} - private native void nativeOnLowMemory(long nativeNearOomMonitor); + @NativeMethods + interface Natives { + void onLowMemory(long nativeNearOomMonitor, NearOomMonitor caller); + } }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/SSLClientCertificateRequest.java b/chrome/android/java/src/org/chromium/chrome/browser/SSLClientCertificateRequest.java index 23135a3..fa612ba 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/SSLClientCertificateRequest.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/SSLClientCertificateRequest.java
@@ -19,6 +19,7 @@ import org.chromium.base.VisibleForTesting; import org.chromium.base.annotations.CalledByNative; import org.chromium.base.annotations.JNINamespace; +import org.chromium.base.annotations.NativeMethods; import org.chromium.base.task.AsyncTask; import org.chromium.base.task.PostTask; import org.chromium.chrome.R; @@ -104,7 +105,8 @@ @Override protected void onPostExecute(Void result) { ThreadUtils.assertOnUiThread(); - nativeOnSystemRequestCompletion(mNativePtr, mEncodedChain, mPrivateKey); + SSLClientCertificateRequestJni.get().onSystemRequestCompletion( + mNativePtr, mEncodedChain, mPrivateKey); } private String getAlias() { @@ -157,7 +159,9 @@ if (alias == null) { // No certificate was selected. PostTask.runOrPostTask(UiThreadTaskTraits.DEFAULT, - () -> nativeOnSystemRequestCompletion(mNativePtr, null, null)); + () + -> SSLClientCertificateRequestJni.get() + .onSystemRequestCompletion(mNativePtr, null, null)); } else { new CertAsyncTaskKeyChain(mContext, mNativePtr, alias) .executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); @@ -301,12 +305,13 @@ public static void notifyClientCertificatesChangedOnIOThread() { Log.d(TAG, "ClientCertificatesChanged!"); - nativeNotifyClientCertificatesChangedOnIOThread(); + SSLClientCertificateRequestJni.get().notifyClientCertificatesChangedOnIOThread(); } - private static native void nativeNotifyClientCertificatesChangedOnIOThread(); - - // Called to pass request results to native side. - private static native void nativeOnSystemRequestCompletion( - long requestPtr, byte[][] certChain, PrivateKey privateKey); + @NativeMethods + interface Natives { + void notifyClientCertificatesChangedOnIOThread(); + // Called to pass request results to native side. + void onSystemRequestCompletion(long requestPtr, byte[][] certChain, PrivateKey privateKey); + } }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/SearchGeolocationDisclosureTabHelper.java b/chrome/android/java/src/org/chromium/chrome/browser/SearchGeolocationDisclosureTabHelper.java index 316dd59a..2451211 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/SearchGeolocationDisclosureTabHelper.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/SearchGeolocationDisclosureTabHelper.java
@@ -5,6 +5,7 @@ package org.chromium.chrome.browser; import org.chromium.base.VisibleForTesting; +import org.chromium.base.annotations.NativeMethods; /** * Helper that shows the search geolocation disclosure when required. This class currently is only @@ -13,14 +14,17 @@ public class SearchGeolocationDisclosureTabHelper { @VisibleForTesting public static void setIgnoreUrlChecksForTesting() { - nativeSetIgnoreUrlChecksForTesting(); + SearchGeolocationDisclosureTabHelperJni.get().setIgnoreUrlChecksForTesting(); } @VisibleForTesting public static void setDayOffsetForTesting(int days) { - nativeSetDayOffsetForTesting(days); + SearchGeolocationDisclosureTabHelperJni.get().setDayOffsetForTesting(days); } - private static native void nativeSetIgnoreUrlChecksForTesting(); - private static native void nativeSetDayOffsetForTesting(int days); + @NativeMethods + interface Natives { + void setIgnoreUrlChecksForTesting(); + void setDayOffsetForTesting(int days); + } }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ServiceTabLauncher.java b/chrome/android/java/src/org/chromium/chrome/browser/ServiceTabLauncher.java index 7546cf4..20ede9e 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/ServiceTabLauncher.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ServiceTabLauncher.java
@@ -17,6 +17,7 @@ import org.chromium.base.ApplicationStatus; import org.chromium.base.ContextUtils; import org.chromium.base.annotations.CalledByNative; +import org.chromium.base.annotations.NativeMethods; import org.chromium.base.task.PostTask; import org.chromium.chrome.R; import org.chromium.chrome.browser.browserservices.BrowserServicesMetrics; @@ -214,9 +215,11 @@ */ public static void onWebContentsForRequestAvailable( int requestId, @Nullable WebContents webContents) { - nativeOnWebContentsForRequestAvailable(requestId, webContents); + ServiceTabLauncherJni.get().onWebContentsForRequestAvailable(requestId, webContents); } - private static native void nativeOnWebContentsForRequestAvailable( - int requestId, WebContents webContents); + @NativeMethods + interface Natives { + void onWebContentsForRequestAvailable(int requestId, WebContents webContents); + } }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ShortcutHelper.java b/chrome/android/java/src/org/chromium/chrome/browser/ShortcutHelper.java index 71b87516..133ac879 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/ShortcutHelper.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ShortcutHelper.java
@@ -36,6 +36,7 @@ import org.chromium.base.ThreadUtils; import org.chromium.base.VisibleForTesting; import org.chromium.base.annotations.CalledByNative; +import org.chromium.base.annotations.NativeMethods; import org.chromium.base.task.AsyncTask; import org.chromium.blink_public.platform.WebDisplayMode; import org.chromium.chrome.R; @@ -235,7 +236,9 @@ // download. WebappRegistry.getInstance().register(id, storage -> { storage.updateFromShortcutIntent(resultIntent); - if (callbackPointer != 0) nativeOnWebappDataStored(callbackPointer); + if (callbackPointer != 0) { + ShortcutHelperJni.get().onWebappDataStored(callbackPointer); + } }); if (shouldShowToastWhenAddingShortcut()) { showAddedToHomescreenToast(userTitle); @@ -783,5 +786,8 @@ } } - private static native void nativeOnWebappDataStored(long callbackPointer); + @NativeMethods + interface Natives { + void onWebappDataStored(long callbackPointer); + } }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/WarmupManager.java b/chrome/android/java/src/org/chromium/chrome/browser/WarmupManager.java index fb01b95..d688e49 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/WarmupManager.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/WarmupManager.java
@@ -23,6 +23,7 @@ import org.chromium.base.ThreadUtils; import org.chromium.base.TraceEvent; import org.chromium.base.VisibleForTesting; +import org.chromium.base.annotations.NativeMethods; import org.chromium.base.library_loader.LibraryLoader; import org.chromium.base.metrics.RecordHistogram; import org.chromium.base.task.AsyncTask; @@ -270,7 +271,7 @@ */ public static void startPreconnectPredictorInitialization(Profile profile) { ThreadUtils.assertOnUiThread(); - nativeStartPreconnectPredictorInitialization(profile); + WarmupManagerJni.get().startPreconnectPredictorInitialization(profile); } /** Asynchronously preconnects to a given URL if the data reduction proxy is not in use. @@ -301,7 +302,7 @@ // one will win. mPendingPreconnectWithProfile.put(url, profile); } else { - nativePreconnectUrlAndSubresources(profile, url); + WarmupManagerJni.get().preconnectUrlAndSubresources(profile, url); } } @@ -323,7 +324,7 @@ // Spare WebContents should not be used with spare RenderProcessHosts, but if one // has been created, destroy it in order not to consume too many processes. destroySpareWebContents(); - nativeWarmupSpareRenderer(profile); + WarmupManagerJni.get().warmupSpareRenderer(profile); } } @@ -401,7 +402,10 @@ WEBCONTENTS_STATUS_HISTOGRAM, status, WebContentsStatus.NUM_ENTRIES); } - private static native void nativeStartPreconnectPredictorInitialization(Profile profile); - private static native void nativePreconnectUrlAndSubresources(Profile profile, String url); - private static native void nativeWarmupSpareRenderer(Profile profile); + @NativeMethods + interface Natives { + void startPreconnectPredictorInitialization(Profile profile); + void preconnectUrlAndSubresources(Profile profile, String url); + void warmupSpareRenderer(Profile profile); + } }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/WebContentsFactory.java b/chrome/android/java/src/org/chromium/chrome/browser/WebContentsFactory.java index 7371699..ddb0391 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/WebContentsFactory.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/WebContentsFactory.java
@@ -4,6 +4,7 @@ package org.chromium.chrome.browser; +import org.chromium.base.annotations.NativeMethods; import org.chromium.chrome.browser.profiles.Profile; import org.chromium.content_public.browser.WebContents; @@ -28,7 +29,7 @@ */ // TODO(pshmakov): remove static for unit-testability. public static WebContents createWebContents(boolean incognito, boolean initiallyHidden) { - return nativeCreateWebContents( + return WebContentsFactoryJni.get().createWebContents( Profile.getLastUsedProfile(), incognito, initiallyHidden, false); } @@ -44,10 +45,13 @@ */ public WebContents createWebContentsWithWarmRenderer( boolean incognito, boolean initiallyHidden) { - return nativeCreateWebContents( + return WebContentsFactoryJni.get().createWebContents( Profile.getLastUsedProfile(), incognito, initiallyHidden, true); } - private static native WebContents nativeCreateWebContents(Profile profile, boolean incognito, - boolean initiallyHidden, boolean initializeRenderer); + @NativeMethods + interface Natives { + WebContents createWebContents(Profile profile, boolean incognito, boolean initiallyHidden, + boolean initializeRenderer); + } }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/media/MediaCaptureDevicesDispatcherAndroid.java b/chrome/android/java/src/org/chromium/chrome/browser/media/MediaCaptureDevicesDispatcherAndroid.java index 2acee4c..2c131bbf 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/media/MediaCaptureDevicesDispatcherAndroid.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/media/MediaCaptureDevicesDispatcherAndroid.java
@@ -4,6 +4,7 @@ package org.chromium.chrome.browser.media; +import org.chromium.base.annotations.NativeMethods; import org.chromium.content_public.browser.WebContents; /** @@ -13,26 +14,29 @@ public class MediaCaptureDevicesDispatcherAndroid { public static boolean isCapturingAudio(WebContents webContents) { if (webContents == null) return false; - return nativeIsCapturingAudio(webContents); + return MediaCaptureDevicesDispatcherAndroidJni.get().isCapturingAudio(webContents); } public static boolean isCapturingVideo(WebContents webContents) { if (webContents == null) return false; - return nativeIsCapturingVideo(webContents); + return MediaCaptureDevicesDispatcherAndroidJni.get().isCapturingVideo(webContents); } public static boolean isCapturingScreen(WebContents webContents) { if (webContents == null) return false; - return nativeIsCapturingScreen(webContents); + return MediaCaptureDevicesDispatcherAndroidJni.get().isCapturingScreen(webContents); } public static void notifyStopped(WebContents webContents) { if (webContents == null) return; - nativeNotifyStopped(webContents); + MediaCaptureDevicesDispatcherAndroidJni.get().notifyStopped(webContents); } - private static native boolean nativeIsCapturingAudio(WebContents webContents); - private static native boolean nativeIsCapturingVideo(WebContents webContents); - private static native boolean nativeIsCapturingScreen(WebContents webContents); - private static native void nativeNotifyStopped(WebContents webContents); + @NativeMethods + interface Natives { + boolean isCapturingAudio(WebContents webContents); + boolean isCapturingVideo(WebContents webContents); + boolean isCapturingScreen(WebContents webContents); + void notifyStopped(WebContents webContents); + } } \ No newline at end of file
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/metrics/BackgroundTaskMemoryMetricsEmitter.java b/chrome/android/java/src/org/chromium/chrome/browser/metrics/BackgroundTaskMemoryMetricsEmitter.java index c04c7b9..61710bb 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/metrics/BackgroundTaskMemoryMetricsEmitter.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/metrics/BackgroundTaskMemoryMetricsEmitter.java
@@ -3,6 +3,7 @@ // found in the LICENSE file. package org.chromium.chrome.browser.metrics; +import org.chromium.base.annotations.NativeMethods; /** * Emits background task memory usage UMA metrics. @@ -18,8 +19,11 @@ * "Memory.BackgroundTask.Browser.*" histograms will still be emitted, regardless. */ public static void reportMemoryUsage(boolean isReducedMode, String taskTypeAffix) { - nativeReportMemoryUsage(isReducedMode, taskTypeAffix); + BackgroundTaskMemoryMetricsEmitterJni.get().reportMemoryUsage(isReducedMode, taskTypeAffix); } - private static native void nativeReportMemoryUsage(boolean isReducedMode, String taskTypeAffix); + @NativeMethods + interface Natives { + void reportMemoryUsage(boolean isReducedMode, String taskTypeAffix); + } }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/HyperlinkPreference.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/HyperlinkPreference.java index 488eee2..78718fb 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/HyperlinkPreference.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/HyperlinkPreference.java
@@ -17,6 +17,7 @@ import org.chromium.chrome.R; import org.chromium.chrome.browser.customtabs.CustomTabActivity; import org.chromium.ui.base.LocalizationUtils; +import org.chromium.ui.base.WindowAndroid; /** * A preference that navigates to an URL. @@ -40,7 +41,7 @@ @Override protected void onClick() { - CustomTabActivity.showInfoPage(getContext(), + CustomTabActivity.showInfoPage(WindowAndroid.activityFromContext(getContext()), LocalizationUtils.substituteLocalePlaceholder(getContext().getString(mUrlResId))); }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/SiteSettingsPreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/SiteSettingsPreferences.java index e0a926b..8804478 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/SiteSettingsPreferences.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/SiteSettingsPreferences.java
@@ -92,7 +92,7 @@ getPreferenceScreen().removePreference(findPreference(Type.CLIPBOARD)); } CommandLine commandLine = CommandLine.getInstance(); - if (!commandLine.hasSwitch(ContentSwitches.ENABLE_WEB_BLUETOOTH_SCANNING)) { + if (!commandLine.hasSwitch(ContentSwitches.ENABLE_EXPERIMENTAL_WEB_PLATFORM_FEATURES)) { getPreferenceScreen().removePreference(findPreference(Type.BLUETOOTH_SCANNING)); } } @@ -113,7 +113,7 @@ websitePrefs.add(Type.AUTOMATIC_DOWNLOADS); websitePrefs.add(Type.BACKGROUND_SYNC); CommandLine commandLine = CommandLine.getInstance(); - if (commandLine.hasSwitch(ContentSwitches.ENABLE_WEB_BLUETOOTH_SCANNING)) { + if (commandLine.hasSwitch(ContentSwitches.ENABLE_EXPERIMENTAL_WEB_PLATFORM_FEATURES)) { websitePrefs.add(Type.BLUETOOTH_SCANNING); } websitePrefs.add(Type.CAMERA);
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/WebsitePermissionsFetcher.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/WebsitePermissionsFetcher.java index 32d5f9a..f2183e6 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/WebsitePermissionsFetcher.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/WebsitePermissionsFetcher.java
@@ -129,7 +129,7 @@ // Sensors permission is per-origin. queue.add(new PermissionInfoFetcher(PermissionInfo.Type.SENSORS)); CommandLine commandLine = CommandLine.getInstance(); - if (commandLine.hasSwitch(ContentSwitches.ENABLE_WEB_BLUETOOTH_SCANNING)) { + if (commandLine.hasSwitch(ContentSwitches.ENABLE_EXPERIMENTAL_WEB_PLATFORM_FEATURES)) { // Bluetooth scanning permission is per-origin. queue.add(new ExceptionInfoFetcher( ContentSettingsType.CONTENT_SETTINGS_TYPE_BLUETOOTH_SCANNING)); @@ -218,7 +218,7 @@ queue.add(new PermissionInfoFetcher(PermissionInfo.Type.SENSORS)); } else if (category.showSites(SiteSettingsCategory.Type.BLUETOOTH_SCANNING)) { CommandLine commandLine = CommandLine.getInstance(); - if (commandLine.hasSwitch(ContentSwitches.ENABLE_WEB_BLUETOOTH_SCANNING)) { + if (commandLine.hasSwitch(ContentSwitches.ENABLE_EXPERIMENTAL_WEB_PLATFORM_FEATURES)) { // Bluetooth scanning permission is per-origin. queue.add(new ExceptionInfoFetcher( ContentSettingsType.CONTENT_SETTINGS_TYPE_BLUETOOTH_SCANNING)); @@ -253,8 +253,9 @@ for (exceptionType = 0; exceptionType < ContentSettingException.Type.NUM_ENTRIES; exceptionType++) { if (contentSettingsType - == ContentSettingException.getContentSettingsType(exceptionType)) + == ContentSettingException.getContentSettingsType(exceptionType)) { break; + } } assert contentSettingsType == ContentSettingException.getContentSettingsType(exceptionType)
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/rappor/RapporServiceBridge.java b/chrome/android/java/src/org/chromium/chrome/browser/rappor/RapporServiceBridge.java index 1744dfc7..6751e6c 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/rappor/RapporServiceBridge.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/rappor/RapporServiceBridge.java
@@ -5,6 +5,7 @@ package org.chromium.chrome.browser.rappor; import org.chromium.base.annotations.JNINamespace; +import org.chromium.base.annotations.NativeMethods; /** * JNI bridge to the native Rappor service from Java. @@ -16,13 +17,16 @@ } public static void sampleString(String metric, String sampleValue) { - nativeSampleString(metric, sampleValue); + RapporServiceBridgeJni.get().sampleString(metric, sampleValue); } public static void sampleDomainAndRegistryFromURL(String metric, String url) { - nativeSampleDomainAndRegistryFromURL(metric, url); + RapporServiceBridgeJni.get().sampleDomainAndRegistryFromURL(metric, url); } - private static native void nativeSampleDomainAndRegistryFromURL(String metric, String url); - private static native void nativeSampleString(String metric, String sampleValue); + @NativeMethods + interface Natives { + void sampleDomainAndRegistryFromURL(String metric, String url); + void sampleString(String metric, String sampleValue); + } }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/rlz/RevenueStats.java b/chrome/android/java/src/org/chromium/chrome/browser/rlz/RevenueStats.java index 05dc153..2006dc4 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/rlz/RevenueStats.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/rlz/RevenueStats.java
@@ -9,6 +9,7 @@ import org.chromium.base.ContextUtils; import org.chromium.base.ThreadUtils; import org.chromium.base.annotations.JNINamespace; +import org.chromium.base.annotations.NativeMethods; import org.chromium.chrome.browser.AppHooks; import org.chromium.chrome.browser.tab.Tab; @@ -61,16 +62,19 @@ * Sets search client id. */ protected static void setSearchClient(String client) { - nativeSetSearchClient(client); + RevenueStatsJni.get().setSearchClient(client); } /** * Sets rlz value. */ protected static void setRlzParameterValue(String rlz) { - nativeSetRlzParameterValue(rlz); + RevenueStatsJni.get().setRlzParameterValue(rlz); } - private static native void nativeSetSearchClient(String client); - private static native void nativeSetRlzParameterValue(String rlz); + @NativeMethods + interface Natives { + void setSearchClient(String client); + void setRlzParameterValue(String rlz); + } }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/rlz/RlzPingHandler.java b/chrome/android/java/src/org/chromium/chrome/browser/rlz/RlzPingHandler.java index 04d43c5..dcf22030 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/rlz/RlzPingHandler.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/rlz/RlzPingHandler.java
@@ -9,6 +9,7 @@ import org.chromium.base.Callback; import org.chromium.base.ContextUtils; import org.chromium.base.annotations.JNINamespace; +import org.chromium.base.annotations.NativeMethods; import org.chromium.chrome.browser.identity.SettingsSecureBasedIdentificationGenerator; import org.chromium.chrome.browser.profiles.Profile; @@ -40,7 +41,7 @@ .getUniqueId(ID_SALT); id = generate50CharacterId(id.toUpperCase(Locale.getDefault())); - nativeStartPing(Profile.getLastUsedProfile().getOriginalProfile(), brand, + RlzPingHandlerJni.get().startPing(Profile.getLastUsedProfile().getOriginalProfile(), brand, Locale.getDefault().getLanguage(), TextUtils.join(",", events), id, callback); } @@ -52,6 +53,9 @@ return idBuilder.substring(0, 50); } - private static native void nativeStartPing(Profile profile, String brand, String language, - String events, String id, Callback<Boolean> callback); + @NativeMethods + interface Natives { + void startPing(Profile profile, String brand, String language, String events, String id, + Callback<Boolean> callback); + } }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/safe_browsing/FileTypePolicies.java b/chrome/android/java/src/org/chromium/chrome/browser/safe_browsing/FileTypePolicies.java index 6de2d59..956105f 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/safe_browsing/FileTypePolicies.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/safe_browsing/FileTypePolicies.java
@@ -5,6 +5,7 @@ package org.chromium.chrome.browser.safe_browsing; import org.chromium.base.annotations.JNINamespace; +import org.chromium.base.annotations.NativeMethods; /** * This class reports UMA values based on files' extensions. @@ -16,8 +17,11 @@ * @return The UMA value for the file. */ public static int umaValueForFile(String path) { - return nativeUmaValueForFile(path); + return FileTypePoliciesJni.get().umaValueForFile(path); } - private static native int nativeUmaValueForFile(String path); + @NativeMethods + interface Natives { + int umaValueForFile(String path); + } }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/search_engines/TemplateUrlServiceFactory.java b/chrome/android/java/src/org/chromium/chrome/browser/search_engines/TemplateUrlServiceFactory.java index f6b0884..c4573e43 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/search_engines/TemplateUrlServiceFactory.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/search_engines/TemplateUrlServiceFactory.java
@@ -6,6 +6,7 @@ import org.chromium.base.ThreadUtils; import org.chromium.base.VisibleForTesting; +import org.chromium.base.annotations.NativeMethods; import org.chromium.components.search_engines.TemplateUrlService; /** @@ -23,7 +24,7 @@ public static TemplateUrlService get() { ThreadUtils.assertOnUiThread(); if (sTemplateUrlService == null) { - sTemplateUrlService = nativeGetTemplateUrlService(); + sTemplateUrlService = TemplateUrlServiceFactoryJni.get().getTemplateUrlService(); } return sTemplateUrlService; } @@ -37,9 +38,12 @@ * TODO(crbug.com/968156): Move to TemplateUrlServiceHelper. */ public static boolean doesDefaultSearchEngineHaveLogo() { - return nativeDoesDefaultSearchEngineHaveLogo(); + return TemplateUrlServiceFactoryJni.get().doesDefaultSearchEngineHaveLogo(); } - private static native TemplateUrlService nativeGetTemplateUrlService(); - private static native boolean nativeDoesDefaultSearchEngineHaveLogo(); + @NativeMethods + interface Natives { + TemplateUrlService getTemplateUrlService(); + boolean doesDefaultSearchEngineHaveLogo(); + } }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/sessions/SessionTabHelper.java b/chrome/android/java/src/org/chromium/chrome/browser/sessions/SessionTabHelper.java index 658b9b23..6b52522 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/sessions/SessionTabHelper.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/sessions/SessionTabHelper.java
@@ -4,6 +4,7 @@ package org.chromium.chrome.browser.sessions; +import org.chromium.base.annotations.NativeMethods; import org.chromium.content_public.browser.WebContents; /** @@ -19,8 +20,11 @@ * @param tab The WebContents to get the tab id for. */ public static int sessionIdForTab(WebContents webContents) { - return nativeIdForTab(webContents); + return SessionTabHelperJni.get().idForTab(webContents); } - private static native int nativeIdForTab(WebContents webContents); + @NativeMethods + interface Natives { + int idForTab(WebContents webContents); + } }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/signin/ProfileDownloader.java b/chrome/android/java/src/org/chromium/chrome/browser/signin/ProfileDownloader.java index 8b948a3..515345d 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/signin/ProfileDownloader.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/signin/ProfileDownloader.java
@@ -10,6 +10,7 @@ import org.chromium.base.ObserverList; import org.chromium.base.ThreadUtils; import org.chromium.base.annotations.CalledByNative; +import org.chromium.base.annotations.NativeMethods; import org.chromium.chrome.browser.profiles.Profile; import org.chromium.components.signin.AccountTrackerService; @@ -95,7 +96,7 @@ while (numberOfPendingRequests > 0) { // Pending requests here must be pre-signin request since SigninManager will wait // system accounts been seeded into AccountTrackerService before finishing sign in. - nativeStartFetchingAccountInfoFor( + ProfileDownloaderJni.get().startFetchingAccountInfoFor( mProfiles.get(0), mAccountIds.get(0), mImageSidePixels.get(0), true); mProfiles.remove(0); mAccountIds.remove(0); @@ -127,7 +128,8 @@ profile, accountId, imageSidePixels); return; } - nativeStartFetchingAccountInfoFor(profile, accountId, imageSidePixels, isPreSignin); + ProfileDownloaderJni.get().startFetchingAccountInfoFor( + profile, accountId, imageSidePixels, isPreSignin); } @CalledByNative @@ -144,7 +146,7 @@ * @return The profile full name if cached, or null. */ public static String getCachedFullName(Profile profile) { - return nativeGetCachedFullNameForPrimaryAccount(profile); + return ProfileDownloaderJni.get().getCachedFullNameForPrimaryAccount(profile); } /** @@ -152,7 +154,7 @@ * @return The profile given name if cached, or null. */ public static String getCachedGivenName(Profile profile) { - return nativeGetCachedGivenNameForPrimaryAccount(profile); + return ProfileDownloaderJni.get().getCachedGivenNameForPrimaryAccount(profile); } /** @@ -160,13 +162,15 @@ * @return The profile avatar if cached, or null. */ public static Bitmap getCachedAvatar(Profile profile) { - return nativeGetCachedAvatarForPrimaryAccount(profile); + return ProfileDownloaderJni.get().getCachedAvatarForPrimaryAccount(profile); } - // Native methods. - private static native void nativeStartFetchingAccountInfoFor( - Profile profile, String accountId, int imageSidePixels, boolean isPreSignin); - private static native String nativeGetCachedFullNameForPrimaryAccount(Profile profile); - private static native String nativeGetCachedGivenNameForPrimaryAccount(Profile profile); - private static native Bitmap nativeGetCachedAvatarForPrimaryAccount(Profile profile); + @NativeMethods + interface Natives { + void startFetchingAccountInfoFor( + Profile profile, String accountId, int imageSidePixels, boolean isPreSignin); + String getCachedFullNameForPrimaryAccount(Profile profile); + String getCachedGivenNameForPrimaryAccount(Profile profile); + Bitmap getCachedAvatarForPrimaryAccount(Profile profile); + } }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninFragmentBase.java b/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninFragmentBase.java index 9c3718fb..8ef7839f 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninFragmentBase.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninFragmentBase.java
@@ -587,7 +587,8 @@ mAccountNames = getAccountNames(maybeAccountNames); mHasGmsError = mAccountNames == null; - if (mAccountNames == null) return; + mView.getAcceptButton().setEnabled(!mHasGmsError); + if (mHasGmsError) return; if (mAccountNames.isEmpty()) { mSelectedAccountName = null;
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninInvestigator.java b/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninInvestigator.java index 9857d9df..e9398dcc 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninInvestigator.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninInvestigator.java
@@ -4,6 +4,7 @@ package org.chromium.chrome.browser.signin; +import org.chromium.base.annotations.NativeMethods; import org.chromium.signin.InvestigatedScenario; /** @@ -19,9 +20,11 @@ * @return int value that corresponds to enum InvestigatedScenario. */ public static @InvestigatedScenario int investigate(String currentEmail) { - return nativeInvestigate(currentEmail); + return SigninInvestigatorJni.get().investigate(currentEmail); } - // Native methods - private static native int nativeInvestigate(String currentEmail); + @NativeMethods + interface Natives { + int investigate(String currentEmail); + } }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninUtils.java b/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninUtils.java index fe82993..2eae0f38 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninUtils.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninUtils.java
@@ -15,6 +15,7 @@ import org.chromium.base.ThreadUtils; import org.chromium.base.annotations.CalledByNative; +import org.chromium.base.annotations.NativeMethods; import org.chromium.chrome.browser.ChromeFeatureList; import org.chromium.chrome.browser.preferences.sync.AccountManagementFragment; import org.chromium.chrome.browser.profiles.ProfileAccountManagementMetrics; @@ -153,9 +154,11 @@ * @param gaiaServiceType A signin::GAIAServiceType. */ public static void logEvent(int metric, int gaiaServiceType) { - nativeLogEvent(metric, gaiaServiceType); + SigninUtilsJni.get().logEvent(metric, gaiaServiceType); } - // Native methods. - private static native void nativeLogEvent(int metric, int gaiaServiceType); + @NativeMethods + interface Natives { + void logEvent(int metric, int gaiaServiceType); + } }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/signin/UnifiedConsentServiceBridge.java b/chrome/android/java/src/org/chromium/chrome/browser/signin/UnifiedConsentServiceBridge.java index bda1b3e..d38c1cf6 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/signin/UnifiedConsentServiceBridge.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/signin/UnifiedConsentServiceBridge.java
@@ -4,6 +4,7 @@ package org.chromium.chrome.browser.signin; +import org.chromium.base.annotations.NativeMethods; import org.chromium.chrome.browser.profiles.Profile; /** @@ -14,17 +15,20 @@ /** Returns whether collection of URL-keyed anonymized data is enabled. */ public static boolean isUrlKeyedAnonymizedDataCollectionEnabled() { - return nativeIsUrlKeyedAnonymizedDataCollectionEnabled(Profile.getLastUsedProfile()); + return UnifiedConsentServiceBridgeJni.get().isUrlKeyedAnonymizedDataCollectionEnabled( + Profile.getLastUsedProfile()); } /** Sets whether collection of URL-keyed anonymized data is enabled. */ public static void setUrlKeyedAnonymizedDataCollectionEnabled(boolean enabled) { - nativeSetUrlKeyedAnonymizedDataCollectionEnabled(Profile.getLastUsedProfile(), enabled); + UnifiedConsentServiceBridgeJni.get().setUrlKeyedAnonymizedDataCollectionEnabled( + Profile.getLastUsedProfile(), enabled); } /** Returns whether collection of URL-keyed anonymized data is configured by policy. */ public static boolean isUrlKeyedAnonymizedDataCollectionManaged() { - return nativeIsUrlKeyedAnonymizedDataCollectionManaged(Profile.getLastUsedProfile()); + return UnifiedConsentServiceBridgeJni.get().isUrlKeyedAnonymizedDataCollectionManaged( + Profile.getLastUsedProfile()); } /** @@ -32,12 +36,15 @@ * See C++ unified_consent::metrics::RecordSyncSetupDataTypesHistrogam for details. */ public static void recordSyncSetupDataTypesHistogram() { - nativeRecordSyncSetupDataTypesHistogram(Profile.getLastUsedProfile()); + UnifiedConsentServiceBridgeJni.get().recordSyncSetupDataTypesHistogram( + Profile.getLastUsedProfile()); } - private static native boolean nativeIsUrlKeyedAnonymizedDataCollectionEnabled(Profile profile); - private static native void nativeSetUrlKeyedAnonymizedDataCollectionEnabled( - Profile profile, boolean enabled); - private static native boolean nativeIsUrlKeyedAnonymizedDataCollectionManaged(Profile profile); - private static native void nativeRecordSyncSetupDataTypesHistogram(Profile profile); + @NativeMethods + interface Natives { + boolean isUrlKeyedAnonymizedDataCollectionEnabled(Profile profile); + void setUrlKeyedAnonymizedDataCollectionEnabled(Profile profile, boolean enabled); + boolean isUrlKeyedAnonymizedDataCollectionManaged(Profile profile); + void recordSyncSetupDataTypesHistogram(Profile profile); + } }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ssl/CaptivePortalHelper.java b/chrome/android/java/src/org/chromium/chrome/browser/ssl/CaptivePortalHelper.java index 3f39ee8..6234ee4c 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/ssl/CaptivePortalHelper.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ssl/CaptivePortalHelper.java
@@ -13,6 +13,7 @@ import org.chromium.base.ContextUtils; import org.chromium.base.annotations.CalledByNative; import org.chromium.base.annotations.JNINamespace; +import org.chromium.base.annotations.NativeMethods; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; @@ -24,11 +25,11 @@ "http://connectivitycheck.gstatic.com/generate_204"; public static void setCaptivePortalCertificateForTesting(String spkiHash) { - nativeSetCaptivePortalCertificateForTesting(spkiHash); + CaptivePortalHelperJni.get().setCaptivePortalCertificateForTesting(spkiHash); } public static void setOSReportsCaptivePortalForTesting(boolean osReportsCaptivePortal) { - nativeSetOSReportsCaptivePortalForTesting(osReportsCaptivePortal); + CaptivePortalHelperJni.get().setOSReportsCaptivePortalForTesting(osReportsCaptivePortal); } @CalledByNative @@ -98,8 +99,9 @@ private CaptivePortalHelper() {} - private static native void nativeSetCaptivePortalCertificateForTesting(String spkiHash); - - private static native void nativeSetOSReportsCaptivePortalForTesting( - boolean osReportsCaptivePortal); + @NativeMethods + interface Natives { + void setCaptivePortalCertificateForTesting(String spkiHash); + void setOSReportsCaptivePortalForTesting(boolean osReportsCaptivePortal); + } }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ssl/SecurityStateModel.java b/chrome/android/java/src/org/chromium/chrome/browser/ssl/SecurityStateModel.java index 70c4272b..7915c8b 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/ssl/SecurityStateModel.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ssl/SecurityStateModel.java
@@ -4,6 +4,7 @@ package org.chromium.chrome.browser.ssl; +import org.chromium.base.annotations.NativeMethods; import org.chromium.components.security_state.ConnectionSecurityLevel; import org.chromium.content_public.browser.WebContents; @@ -21,10 +22,13 @@ */ public static int getSecurityLevelForWebContents(WebContents webContents) { if (webContents == null) return ConnectionSecurityLevel.NONE; - return nativeGetSecurityLevelForWebContents(webContents); + return SecurityStateModelJni.get().getSecurityLevelForWebContents(webContents); } private SecurityStateModel() {} - private static native int nativeGetSecurityLevelForWebContents(WebContents webContents); + @NativeMethods + interface Natives { + int getSecurityLevelForWebContents(WebContents webContents); + } }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/status_indicator/StatusIndicatorSceneLayer.java b/chrome/android/java/src/org/chromium/chrome/browser/status_indicator/StatusIndicatorSceneLayer.java index bf3b4820..cab7f6b 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/status_indicator/StatusIndicatorSceneLayer.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/status_indicator/StatusIndicatorSceneLayer.java
@@ -7,6 +7,7 @@ import android.graphics.RectF; import org.chromium.base.annotations.JNINamespace; +import org.chromium.base.annotations.NativeMethods; import org.chromium.chrome.browser.compositor.LayerTitleCache; import org.chromium.chrome.browser.compositor.layouts.components.VirtualView; import org.chromium.chrome.browser.compositor.layouts.eventfilter.EventFilter; @@ -58,20 +59,22 @@ @Override protected void initializeNative() { if (mNativePtr == 0) { - mNativePtr = nativeInit(); + mNativePtr = StatusIndicatorSceneLayerJni.get().init(StatusIndicatorSceneLayer.this); } assert mNativePtr != 0; } @Override public void setContentTree(SceneLayer contentTree) { - nativeSetContentTree(mNativePtr, contentTree); + StatusIndicatorSceneLayerJni.get().setContentTree( + mNativePtr, StatusIndicatorSceneLayer.this, contentTree); } @Override public SceneOverlayLayer getUpdatedSceneOverlayTree(RectF viewport, RectF visibleViewport, LayerTitleCache layerTitleCache, ResourceManager resourceManager, float yOffset) { - nativeUpdateStatusIndicatorLayer(mNativePtr, resourceManager, mResourceId); + StatusIndicatorSceneLayerJni.get().updateStatusIndicatorLayer( + mNativePtr, StatusIndicatorSceneLayer.this, resourceManager, mResourceId); return this; } @@ -127,9 +130,13 @@ @Override public void tabCreated(long time, boolean incognito, int id, int prevId, boolean selected) {} - private native long nativeInit(); - private native void nativeSetContentTree( - long nativeStatusIndicatorSceneLayer, SceneLayer contentTree); - private native void nativeUpdateStatusIndicatorLayer(long nativeStatusIndicatorSceneLayer, - ResourceManager resourceManager, int viewResourceId); + @NativeMethods + interface Natives { + long init(StatusIndicatorSceneLayer caller); + void setContentTree(long nativeStatusIndicatorSceneLayer, StatusIndicatorSceneLayer caller, + SceneLayer contentTree); + void updateStatusIndicatorLayer(long nativeStatusIndicatorSceneLayer, + StatusIndicatorSceneLayer caller, ResourceManager resourceManager, + int viewResourceId); + } }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/SuggestionsEventReporterBridge.java b/chrome/android/java/src/org/chromium/chrome/browser/suggestions/SuggestionsEventReporterBridge.java index c73cff50..82ded558 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/SuggestionsEventReporterBridge.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/suggestions/SuggestionsEventReporterBridge.java
@@ -4,6 +4,7 @@ package org.chromium.chrome.browser.suggestions; +import org.chromium.base.annotations.NativeMethods; import org.chromium.chrome.browser.ntp.cards.ActionItem; import org.chromium.chrome.browser.ntp.snippets.CategoryInt; import org.chromium.chrome.browser.ntp.snippets.SnippetArticle; @@ -14,75 +15,82 @@ public class SuggestionsEventReporterBridge implements SuggestionsEventReporter { @Override public void onSurfaceOpened() { - nativeOnSurfaceOpened(); + SuggestionsEventReporterBridgeJni.get().onSurfaceOpened(); } @Override public void onPageShown( int[] categories, int[] suggestionsPerCategory, boolean[] isCategoryVisible) { - nativeOnPageShown(categories, suggestionsPerCategory, isCategoryVisible); + SuggestionsEventReporterBridgeJni.get().onPageShown( + categories, suggestionsPerCategory, isCategoryVisible); } @Override public void onSuggestionShown(SnippetArticle suggestion) { - nativeOnSuggestionShown(suggestion.getGlobalRank(), suggestion.mCategory, - suggestion.getPerSectionRank(), suggestion.mPublishTimestampMilliseconds, - suggestion.mScore, suggestion.mFetchTimestampMilliseconds); + SuggestionsEventReporterBridgeJni.get().onSuggestionShown(suggestion.getGlobalRank(), + suggestion.mCategory, suggestion.getPerSectionRank(), + suggestion.mPublishTimestampMilliseconds, suggestion.mScore, + suggestion.mFetchTimestampMilliseconds); } @Override public void onSuggestionOpened(SnippetArticle suggestion, int windowOpenDisposition, SuggestionsRanker suggestionsRanker) { int categoryIndex = suggestionsRanker.getCategoryRank(suggestion.mCategory); - nativeOnSuggestionOpened(suggestion.getGlobalRank(), suggestion.mCategory, categoryIndex, - suggestion.getPerSectionRank(), suggestion.mPublishTimestampMilliseconds, - suggestion.mScore, windowOpenDisposition, suggestion.isPrefetched()); + SuggestionsEventReporterBridgeJni.get().onSuggestionOpened(suggestion.getGlobalRank(), + suggestion.mCategory, categoryIndex, suggestion.getPerSectionRank(), + suggestion.mPublishTimestampMilliseconds, suggestion.mScore, windowOpenDisposition, + suggestion.isPrefetched()); } @Override public void onSuggestionMenuOpened(SnippetArticle suggestion) { - nativeOnSuggestionMenuOpened(suggestion.getGlobalRank(), suggestion.mCategory, - suggestion.getPerSectionRank(), suggestion.mPublishTimestampMilliseconds, - suggestion.mScore); + SuggestionsEventReporterBridgeJni.get().onSuggestionMenuOpened(suggestion.getGlobalRank(), + suggestion.mCategory, suggestion.getPerSectionRank(), + suggestion.mPublishTimestampMilliseconds, suggestion.mScore); } @Override public void onMoreButtonShown(ActionItem actionItem) { - nativeOnMoreButtonShown(actionItem.getCategory(), actionItem.getPerSectionRank()); + SuggestionsEventReporterBridgeJni.get().onMoreButtonShown( + actionItem.getCategory(), actionItem.getPerSectionRank()); } @Override public void onMoreButtonClicked(ActionItem actionItem) { @CategoryInt int category = actionItem.getCategory(); - nativeOnMoreButtonClicked(category, actionItem.getPerSectionRank()); + SuggestionsEventReporterBridgeJni.get().onMoreButtonClicked( + category, actionItem.getPerSectionRank()); } public static void onSuggestionTargetVisited(int category, long visitTimeMs) { - nativeOnSuggestionTargetVisited(category, visitTimeMs); + SuggestionsEventReporterBridgeJni.get().onSuggestionTargetVisited(category, visitTimeMs); } public static void onActivityWarmResumed() { - nativeOnActivityWarmResumed(); + SuggestionsEventReporterBridgeJni.get().onActivityWarmResumed(); } public static void onColdStart() { - nativeOnColdStart(); + SuggestionsEventReporterBridgeJni.get().onColdStart(); } - private static native void nativeOnPageShown( - int[] categories, int[] suggestionsPerCategory, boolean[] isCategoryVisible); - private static native void nativeOnSuggestionShown(int globalPosition, int category, - int positionInCategory, long publishTimestampMs, float score, long fetchTimestampMs); - private static native void nativeOnSuggestionOpened(int globalPosition, int category, - int categoryIndex, int positionInCategory, long publishTimestampMs, float score, - int windowOpenDisposition, boolean isPrefetched); - private static native void nativeOnSuggestionMenuOpened(int globalPosition, int category, - int positionInCategory, long publishTimestampMs, float score); - private static native void nativeOnMoreButtonShown(int category, int position); - private static native void nativeOnMoreButtonClicked(int category, int position); - private static native void nativeOnSurfaceOpened(); - - private static native void nativeOnActivityWarmResumed(); - private static native void nativeOnColdStart(); - private static native void nativeOnSuggestionTargetVisited(int category, long visitTimeMs); + @NativeMethods + interface Natives { + void onPageShown( + int[] categories, int[] suggestionsPerCategory, boolean[] isCategoryVisible); + void onSuggestionShown(int globalPosition, int category, int positionInCategory, + long publishTimestampMs, float score, long fetchTimestampMs); + void onSuggestionOpened(int globalPosition, int category, int categoryIndex, + int positionInCategory, long publishTimestampMs, float score, + int windowOpenDisposition, boolean isPrefetched); + void onSuggestionMenuOpened(int globalPosition, int category, int positionInCategory, + long publishTimestampMs, float score); + void onMoreButtonShown(int category, int position); + void onMoreButtonClicked(int category, int position); + void onSurfaceOpened(); + void onActivityWarmResumed(); + void onColdStart(); + void onSuggestionTargetVisited(int category, long visitTimeMs); + } }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/mostvisited/MostVisitedSitesBridge.java b/chrome/android/java/src/org/chromium/chrome/browser/suggestions/mostvisited/MostVisitedSitesBridge.java index deb495f..efaf82e 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/mostvisited/MostVisitedSitesBridge.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/suggestions/mostvisited/MostVisitedSitesBridge.java
@@ -6,6 +6,7 @@ import org.chromium.base.annotations.CalledByNative; import org.chromium.base.annotations.JNIAdditionalImport; +import org.chromium.base.annotations.NativeMethods; import org.chromium.chrome.browser.profiles.Profile; import org.chromium.chrome.browser.suggestions.SiteSuggestion; import org.chromium.chrome.browser.suggestions.tile.Tile; @@ -35,7 +36,8 @@ * @param profile The profile for which to fetch most visited sites. */ public MostVisitedSitesBridge(Profile profile) { - mNativeMostVisitedSitesBridge = nativeInit(profile); + mNativeMostVisitedSitesBridge = + MostVisitedSitesBridgeJni.get().init(MostVisitedSitesBridge.this, profile); } /** @@ -45,7 +47,8 @@ public void destroy() { // Stop listening even if it was not started in the first place. (Handled without errors.) assert mNativeMostVisitedSitesBridge != 0; - nativeDestroy(mNativeMostVisitedSitesBridge); + MostVisitedSitesBridgeJni.get().destroy( + mNativeMostVisitedSitesBridge, MostVisitedSitesBridge.this); mNativeMostVisitedSitesBridge = 0; } @@ -54,41 +57,46 @@ assert numSites <= MAX_TILE_COUNT; mWrappedObserver = observer; - nativeSetObserver(mNativeMostVisitedSitesBridge, this, numSites); + MostVisitedSitesBridgeJni.get().setObserver( + mNativeMostVisitedSitesBridge, MostVisitedSitesBridge.this, this, numSites); } @Override public void addBlacklistedUrl(String url) { if (mNativeMostVisitedSitesBridge == 0) return; - nativeAddOrRemoveBlacklistedUrl(mNativeMostVisitedSitesBridge, url, true); + MostVisitedSitesBridgeJni.get().addOrRemoveBlacklistedUrl( + mNativeMostVisitedSitesBridge, MostVisitedSitesBridge.this, url, true); } @Override public void removeBlacklistedUrl(String url) { if (mNativeMostVisitedSitesBridge == 0) return; - nativeAddOrRemoveBlacklistedUrl(mNativeMostVisitedSitesBridge, url, false); + MostVisitedSitesBridgeJni.get().addOrRemoveBlacklistedUrl( + mNativeMostVisitedSitesBridge, MostVisitedSitesBridge.this, url, false); } @Override public void recordPageImpression(int tilesCount) { if (mNativeMostVisitedSitesBridge == 0) return; - nativeRecordPageImpression(mNativeMostVisitedSitesBridge, tilesCount); + MostVisitedSitesBridgeJni.get().recordPageImpression( + mNativeMostVisitedSitesBridge, MostVisitedSitesBridge.this, tilesCount); } @Override public void recordTileImpression(Tile tile) { if (mNativeMostVisitedSitesBridge == 0) return; - nativeRecordTileImpression(mNativeMostVisitedSitesBridge, tile.getIndex(), tile.getType(), - tile.getIconType(), tile.getTitleSource(), tile.getSource(), + MostVisitedSitesBridgeJni.get().recordTileImpression(mNativeMostVisitedSitesBridge, + MostVisitedSitesBridge.this, tile.getIndex(), tile.getType(), tile.getIconType(), + tile.getTitleSource(), tile.getSource(), tile.getData().dataGenerationTime.getTime(), tile.getUrl()); } @Override public void recordOpenedMostVisitedItem(Tile tile) { if (mNativeMostVisitedSitesBridge == 0) return; - nativeRecordOpenedMostVisitedItem(mNativeMostVisitedSitesBridge, tile.getIndex(), - tile.getType(), tile.getTitleSource(), tile.getSource(), - tile.getData().dataGenerationTime.getTime()); + MostVisitedSitesBridgeJni.get().recordOpenedMostVisitedItem(mNativeMostVisitedSitesBridge, + MostVisitedSitesBridge.this, tile.getIndex(), tile.getType(), tile.getTitleSource(), + tile.getSource(), tile.getData().dataGenerationTime.getTime()); } /** @@ -147,20 +155,25 @@ } } - private native long nativeInit(Profile profile); - private native void nativeDestroy(long nativeMostVisitedSitesBridge); - private native void nativeOnHomepageStateChanged(long nativeMostVisitedSitesBridge); - private native void nativeSetHomepageClient( - long nativeMostVisitedSitesBridge, MostVisitedSites.HomepageClient homePageClient); - private native void nativeSetObserver( - long nativeMostVisitedSitesBridge, MostVisitedSitesBridge observer, int numSites); - private native void nativeAddOrRemoveBlacklistedUrl( - long nativeMostVisitedSitesBridge, String url, boolean addUrl); - private native void nativeRecordPageImpression( - long nativeMostVisitedSitesBridge, int tilesCount); - private native void nativeRecordTileImpression(long nativeMostVisitedSitesBridge, int index, - int type, int iconType, int titleSource, int source, long dataGenerationTimeMs, - String url); - private native void nativeRecordOpenedMostVisitedItem(long nativeMostVisitedSitesBridge, - int index, int tileType, int titleSource, int source, long dataGenerationTimeMs); + @NativeMethods + interface Natives { + long init(MostVisitedSitesBridge caller, Profile profile); + void destroy(long nativeMostVisitedSitesBridge, MostVisitedSitesBridge caller); + void onHomepageStateChanged( + long nativeMostVisitedSitesBridge, MostVisitedSitesBridge caller); + void setHomepageClient(long nativeMostVisitedSitesBridge, MostVisitedSitesBridge caller, + MostVisitedSites.HomepageClient homePageClient); + void setObserver(long nativeMostVisitedSitesBridge, MostVisitedSitesBridge caller, + MostVisitedSitesBridge observer, int numSites); + void addOrRemoveBlacklistedUrl(long nativeMostVisitedSitesBridge, + MostVisitedSitesBridge caller, String url, boolean addUrl); + void recordPageImpression( + long nativeMostVisitedSitesBridge, MostVisitedSitesBridge caller, int tilesCount); + void recordTileImpression(long nativeMostVisitedSitesBridge, MostVisitedSitesBridge caller, + int index, int type, int iconType, int titleSource, int source, + long dataGenerationTimeMs, String url); + void recordOpenedMostVisitedItem(long nativeMostVisitedSitesBridge, + MostVisitedSitesBridge caller, int index, int tileType, int titleSource, int source, + long dataGenerationTimeMs); + } }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/sync/ProfileSyncService.java b/chrome/android/java/src/org/chromium/chrome/browser/sync/ProfileSyncService.java index bf04f7e..f9e68e8 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/sync/ProfileSyncService.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/sync/ProfileSyncService.java
@@ -12,6 +12,7 @@ import org.chromium.base.ThreadUtils; import org.chromium.base.VisibleForTesting; import org.chromium.base.annotations.CalledByNative; +import org.chromium.base.annotations.NativeMethods; import org.chromium.chrome.browser.ChromeFeatureList; import org.chromium.chrome.browser.SyncFirstSetupCompleteSource; import org.chromium.components.sync.ModelType; @@ -149,7 +150,8 @@ // This may cause us to create ProfileSyncService even if sync has not // been set up, but ProfileSyncService::Startup() won't be called until // credentials are available. - mNativeProfileSyncServiceAndroid = nativeInit(); + mNativeProfileSyncServiceAndroid = + ProfileSyncServiceJni.get().init(ProfileSyncService.this); } @CalledByNative @@ -162,7 +164,8 @@ */ public void setSessionsId(String sessionTag) { ThreadUtils.assertOnUiThread(); - nativeSetSyncSessionsId(mNativeProfileSyncServiceAndroid, sessionTag); + ProfileSyncServiceJni.get().setSyncSessionsId( + mNativeProfileSyncServiceAndroid, ProfileSyncService.this, sessionTag); } /** @@ -174,7 +177,8 @@ */ public @Passphrase.Type int getPassphraseType() { assert isEngineInitialized(); - int passphraseType = nativeGetPassphraseType(mNativeProfileSyncServiceAndroid); + int passphraseType = ProfileSyncServiceJni.get().getPassphraseType( + mNativeProfileSyncServiceAndroid, ProfileSyncService.this); if (passphraseType < 0 || passphraseType >= Passphrase.Type.NUM_ENTRIES) { throw new IllegalArgumentException(); } @@ -186,7 +190,8 @@ */ public boolean hasExplicitPassphraseTime() { assert isEngineInitialized(); - return nativeHasExplicitPassphraseTime(mNativeProfileSyncServiceAndroid); + return ProfileSyncServiceJni.get().hasExplicitPassphraseTime( + mNativeProfileSyncServiceAndroid, ProfileSyncService.this); } /** @@ -194,30 +199,36 @@ */ public long getExplicitPassphraseTime() { assert isEngineInitialized(); - return nativeGetExplicitPassphraseTime(mNativeProfileSyncServiceAndroid); + return ProfileSyncServiceJni.get().getExplicitPassphraseTime( + mNativeProfileSyncServiceAndroid, ProfileSyncService.this); } public String getSyncEnterGooglePassphraseBodyWithDateText() { assert isEngineInitialized(); - return nativeGetSyncEnterGooglePassphraseBodyWithDateText(mNativeProfileSyncServiceAndroid); + return ProfileSyncServiceJni.get().getSyncEnterGooglePassphraseBodyWithDateText( + mNativeProfileSyncServiceAndroid, ProfileSyncService.this); } public String getSyncEnterCustomPassphraseBodyWithDateText() { assert isEngineInitialized(); - return nativeGetSyncEnterCustomPassphraseBodyWithDateText(mNativeProfileSyncServiceAndroid); + return ProfileSyncServiceJni.get().getSyncEnterCustomPassphraseBodyWithDateText( + mNativeProfileSyncServiceAndroid, ProfileSyncService.this); } public String getCurrentSignedInAccountText() { assert isEngineInitialized(); - return nativeGetCurrentSignedInAccountText(mNativeProfileSyncServiceAndroid); + return ProfileSyncServiceJni.get().getCurrentSignedInAccountText( + mNativeProfileSyncServiceAndroid, ProfileSyncService.this); } public String getSyncEnterCustomPassphraseBodyText() { - return nativeGetSyncEnterCustomPassphraseBodyText(mNativeProfileSyncServiceAndroid); + return ProfileSyncServiceJni.get().getSyncEnterCustomPassphraseBodyText( + mNativeProfileSyncServiceAndroid, ProfileSyncService.this); } public int getNumberOfSyncedDevices() { - return nativeGetNumberOfSyncedDevices(mNativeProfileSyncServiceAndroid); + return ProfileSyncServiceJni.get().getNumberOfSyncedDevices( + mNativeProfileSyncServiceAndroid, ProfileSyncService.this); } /** @@ -228,7 +239,8 @@ */ public boolean isUsingSecondaryPassphrase() { assert isEngineInitialized(); - return nativeIsUsingSecondaryPassphrase(mNativeProfileSyncServiceAndroid); + return ProfileSyncServiceJni.get().isUsingSecondaryPassphrase( + mNativeProfileSyncServiceAndroid, ProfileSyncService.this); } /** @@ -239,7 +251,8 @@ */ public boolean isPassphraseRequiredForDecryption() { assert isEngineInitialized(); - return nativeIsPassphraseRequiredForDecryption(mNativeProfileSyncServiceAndroid); + return ProfileSyncServiceJni.get().isPassphraseRequiredForDecryption( + mNativeProfileSyncServiceAndroid, ProfileSyncService.this); } /** @@ -248,7 +261,8 @@ * @return true if sync is initialized/running. */ public boolean isEngineInitialized() { - return nativeIsEngineInitialized(mNativeProfileSyncServiceAndroid); + return ProfileSyncServiceJni.get().isEngineInitialized( + mNativeProfileSyncServiceAndroid, ProfileSyncService.this); } /** @@ -259,7 +273,8 @@ */ public boolean isEncryptEverythingAllowed() { assert isEngineInitialized(); - return nativeIsEncryptEverythingAllowed(mNativeProfileSyncServiceAndroid); + return ProfileSyncServiceJni.get().isEncryptEverythingAllowed( + mNativeProfileSyncServiceAndroid, ProfileSyncService.this); } /** @@ -270,7 +285,8 @@ */ public boolean isEncryptEverythingEnabled() { assert isEngineInitialized(); - return nativeIsEncryptEverythingEnabled(mNativeProfileSyncServiceAndroid); + return ProfileSyncServiceJni.get().isEncryptEverythingEnabled( + mNativeProfileSyncServiceAndroid, ProfileSyncService.this); } /** @@ -279,21 +295,25 @@ */ public void enableEncryptEverything() { assert isEngineInitialized(); - nativeEnableEncryptEverything(mNativeProfileSyncServiceAndroid); + ProfileSyncServiceJni.get().enableEncryptEverything( + mNativeProfileSyncServiceAndroid, ProfileSyncService.this); } public void setEncryptionPassphrase(String passphrase) { assert isEngineInitialized(); - nativeSetEncryptionPassphrase(mNativeProfileSyncServiceAndroid, passphrase); + ProfileSyncServiceJni.get().setEncryptionPassphrase( + mNativeProfileSyncServiceAndroid, ProfileSyncService.this, passphrase); } public boolean setDecryptionPassphrase(String passphrase) { assert isEngineInitialized(); - return nativeSetDecryptionPassphrase(mNativeProfileSyncServiceAndroid, passphrase); + return ProfileSyncServiceJni.get().setDecryptionPassphrase( + mNativeProfileSyncServiceAndroid, ProfileSyncService.this, passphrase); } public @GoogleServiceAuthError.State int getAuthError() { - int authErrorCode = nativeGetAuthError(mNativeProfileSyncServiceAndroid); + int authErrorCode = ProfileSyncServiceJni.get().getAuthError( + mNativeProfileSyncServiceAndroid, ProfileSyncService.this); if (authErrorCode < 0 || authErrorCode >= GoogleServiceAuthError.State.NUM_ENTRIES) { throw new IllegalArgumentException("No state for code: " + authErrorCode); } @@ -301,7 +321,8 @@ } public boolean requiresClientUpgrade() { - return nativeRequiresClientUpgrade(mNativeProfileSyncServiceAndroid); + return ProfileSyncServiceJni.get().requiresClientUpgrade( + mNativeProfileSyncServiceAndroid, ProfileSyncService.this); } /** @@ -312,7 +333,8 @@ * @return Set of active data types. */ public Set<Integer> getActiveDataTypes() { - int[] activeDataTypes = nativeGetActiveDataTypes(mNativeProfileSyncServiceAndroid); + int[] activeDataTypes = ProfileSyncServiceJni.get().getActiveDataTypes( + mNativeProfileSyncServiceAndroid, ProfileSyncService.this); return modelTypeArrayToSet(activeDataTypes); } @@ -325,7 +347,8 @@ * @return Set of chosen types. */ public Set<Integer> getChosenDataTypes() { - int[] modelTypeArray = nativeGetChosenDataTypes(mNativeProfileSyncServiceAndroid); + int[] modelTypeArray = ProfileSyncServiceJni.get().getChosenDataTypes( + mNativeProfileSyncServiceAndroid, ProfileSyncService.this); return modelTypeArrayToSet(modelTypeArray); } @@ -338,7 +361,8 @@ * @return Set of preferred types. */ public Set<Integer> getPreferredDataTypes() { - int[] modelTypeArray = nativeGetPreferredDataTypes(mNativeProfileSyncServiceAndroid); + int[] modelTypeArray = ProfileSyncServiceJni.get().getPreferredDataTypes( + mNativeProfileSyncServiceAndroid, ProfileSyncService.this); return modelTypeArrayToSet(modelTypeArray); } @@ -360,7 +384,8 @@ } public boolean hasKeepEverythingSynced() { - return nativeHasKeepEverythingSynced(mNativeProfileSyncServiceAndroid); + return ProfileSyncServiceJni.get().hasKeepEverythingSynced( + mNativeProfileSyncServiceAndroid, ProfileSyncService.this); } /** @@ -372,20 +397,24 @@ * syncEverything is true. */ public void setChosenDataTypes(boolean syncEverything, Set<Integer> enabledTypes) { - nativeSetChosenDataTypes(mNativeProfileSyncServiceAndroid, syncEverything, + ProfileSyncServiceJni.get().setChosenDataTypes(mNativeProfileSyncServiceAndroid, + ProfileSyncService.this, syncEverything, syncEverything ? ALL_SELECTABLE_TYPES : modelTypeSetToArray(enabledTypes)); } public void triggerRefresh() { - nativeTriggerRefresh(mNativeProfileSyncServiceAndroid); + ProfileSyncServiceJni.get().triggerRefresh( + mNativeProfileSyncServiceAndroid, ProfileSyncService.this); } public void setFirstSetupComplete(int syncFirstSetupCompleteSource) { - nativeSetFirstSetupComplete(mNativeProfileSyncServiceAndroid, syncFirstSetupCompleteSource); + ProfileSyncServiceJni.get().setFirstSetupComplete(mNativeProfileSyncServiceAndroid, + ProfileSyncService.this, syncFirstSetupCompleteSource); } public boolean isFirstSetupComplete() { - return nativeIsFirstSetupComplete(mNativeProfileSyncServiceAndroid); + return ProfileSyncServiceJni.get().isFirstSetupComplete( + mNativeProfileSyncServiceAndroid, ProfileSyncService.this); } /** @@ -396,7 +425,8 @@ * @return true if the user wants to sync, false otherwise. */ public boolean isSyncRequested() { - return nativeIsSyncRequested(mNativeProfileSyncServiceAndroid); + return ProfileSyncServiceJni.get().isSyncRequested( + mNativeProfileSyncServiceAndroid, ProfileSyncService.this); } /** @@ -407,7 +437,8 @@ * @return true if Sync can start, false otherwise. */ public boolean canSyncFeatureStart() { - return nativeCanSyncFeatureStart(mNativeProfileSyncServiceAndroid); + return ProfileSyncServiceJni.get().canSyncFeatureStart( + mNativeProfileSyncServiceAndroid, ProfileSyncService.this); } /** @@ -417,7 +448,8 @@ * @return true if Sync is active, false otherwise. */ public boolean isSyncActive() { - return nativeIsSyncActive(mNativeProfileSyncServiceAndroid); + return ProfileSyncServiceJni.get().isSyncActive( + mNativeProfileSyncServiceAndroid, ProfileSyncService.this); } /** @@ -427,7 +459,8 @@ * @return true if Sync is disabled, false otherwise. */ public boolean isSyncDisabledByEnterprisePolicy() { - return nativeIsSyncDisabledByEnterprisePolicy(mNativeProfileSyncServiceAndroid); + return ProfileSyncServiceJni.get().isSyncDisabledByEnterprisePolicy( + mNativeProfileSyncServiceAndroid, ProfileSyncService.this); } /** @@ -476,7 +509,8 @@ } private void setSetupInProgress(boolean inProgress) { - nativeSetSetupInProgress(mNativeProfileSyncServiceAndroid, inProgress); + ProfileSyncServiceJni.get().setSetupInProgress( + mNativeProfileSyncServiceAndroid, ProfileSyncService.this, inProgress); } public void addSyncStateChangedListener(SyncStateChangedListener listener) { @@ -490,7 +524,8 @@ } public boolean hasUnrecoverableError() { - return nativeHasUnrecoverableError(mNativeProfileSyncServiceAndroid); + return ProfileSyncServiceJni.get().hasUnrecoverableError( + mNativeProfileSyncServiceAndroid, ProfileSyncService.this); } /** @@ -508,25 +543,29 @@ * Starts the sync engine. */ public void requestStart() { - nativeRequestStart(mNativeProfileSyncServiceAndroid); + ProfileSyncServiceJni.get().requestStart( + mNativeProfileSyncServiceAndroid, ProfileSyncService.this); } /** * Stops the sync engine. */ public void requestStop() { - nativeRequestStop(mNativeProfileSyncServiceAndroid); + ProfileSyncServiceJni.get().requestStop( + mNativeProfileSyncServiceAndroid, ProfileSyncService.this); } public void setSyncAllowedByPlatform(boolean allowed) { - nativeSetSyncAllowedByPlatform(mNativeProfileSyncServiceAndroid, allowed); + ProfileSyncServiceJni.get().setSyncAllowedByPlatform( + mNativeProfileSyncServiceAndroid, ProfileSyncService.this, allowed); } /** * Flushes the sync directory. */ public void flushDirectory() { - nativeFlushDirectory(mNativeProfileSyncServiceAndroid); + ProfileSyncServiceJni.get().flushDirectory( + mNativeProfileSyncServiceAndroid, ProfileSyncService.this); } /** @@ -537,7 +576,8 @@ */ @VisibleForTesting public long getLastSyncedTimeForTest() { - return nativeGetLastSyncedTimeForTest(mNativeProfileSyncServiceAndroid); + return ProfileSyncServiceJni.get().getLastSyncedTimeForTest( + mNativeProfileSyncServiceAndroid, ProfileSyncService.this); } /** @@ -550,7 +590,8 @@ */ @VisibleForTesting public void overrideNetworkResourcesForTest(long networkResources) { - nativeOverrideNetworkResourcesForTest(mNativeProfileSyncServiceAndroid, networkResources); + ProfileSyncServiceJni.get().overrideNetworkResourcesForTest( + mNativeProfileSyncServiceAndroid, ProfileSyncService.this, networkResources); } /** @@ -562,7 +603,8 @@ * @return Whether client has prompted for a passphrase error previously. */ public boolean isPassphrasePrompted() { - return nativeIsPassphrasePrompted(mNativeProfileSyncServiceAndroid); + return ProfileSyncServiceJni.get().isPassphrasePrompted( + mNativeProfileSyncServiceAndroid, ProfileSyncService.this); } /** @@ -574,8 +616,8 @@ * @param prompted whether the client has prompted the user previously. */ public void setPassphrasePrompted(boolean prompted) { - nativeSetPassphrasePrompted(mNativeProfileSyncServiceAndroid, - prompted); + ProfileSyncServiceJni.get().setPassphrasePrompted( + mNativeProfileSyncServiceAndroid, ProfileSyncService.this, prompted); } /** @@ -616,66 +658,87 @@ */ @VisibleForTesting public void getAllNodes(GetAllNodesCallback callback) { - nativeGetAllNodes(mNativeProfileSyncServiceAndroid, callback); + ProfileSyncServiceJni.get().getAllNodes( + mNativeProfileSyncServiceAndroid, ProfileSyncService.this, callback); } - // Native methods - private native long nativeInit(); - private native void nativeRequestStart(long nativeProfileSyncServiceAndroid); - private native void nativeRequestStop(long nativeProfileSyncServiceAndroid); - private native void nativeSetSyncAllowedByPlatform( - long nativeProfileSyncServiceAndroid, boolean allowed); - private native void nativeFlushDirectory(long nativeProfileSyncServiceAndroid); - private native void nativeSetSyncSessionsId(long nativeProfileSyncServiceAndroid, String tag); - private native int nativeGetAuthError(long nativeProfileSyncServiceAndroid); - private native boolean nativeRequiresClientUpgrade(long nativeProfileSyncServiceAndroid); - private native boolean nativeIsEngineInitialized(long nativeProfileSyncServiceAndroid); - private native boolean nativeIsEncryptEverythingAllowed(long nativeProfileSyncServiceAndroid); - private native boolean nativeIsEncryptEverythingEnabled(long nativeProfileSyncServiceAndroid); - private native void nativeEnableEncryptEverything(long nativeProfileSyncServiceAndroid); - private native boolean nativeIsPassphraseRequiredForDecryption( - long nativeProfileSyncServiceAndroid); - private native boolean nativeIsUsingSecondaryPassphrase(long nativeProfileSyncServiceAndroid); + @NativeMethods + interface Natives { + long init(ProfileSyncService caller); - private native boolean nativeSetDecryptionPassphrase( - long nativeProfileSyncServiceAndroid, String passphrase); - private native void nativeSetEncryptionPassphrase( - long nativeProfileSyncServiceAndroid, String passphrase); - private native int nativeGetPassphraseType(long nativeProfileSyncServiceAndroid); - private native boolean nativeHasExplicitPassphraseTime(long nativeProfileSyncServiceAndroid); - private native long nativeGetExplicitPassphraseTime(long nativeProfileSyncServiceAndroid); - private native String nativeGetSyncEnterGooglePassphraseBodyWithDateText( - long nativeProfileSyncServiceAndroid); - private native String nativeGetSyncEnterCustomPassphraseBodyWithDateText( - long nativeProfileSyncServiceAndroid); - private native String nativeGetCurrentSignedInAccountText(long nativeProfileSyncServiceAndroid); - private native String nativeGetSyncEnterCustomPassphraseBodyText( - long nativeProfileSyncServiceAndroid); - private native int nativeGetNumberOfSyncedDevices(long nativeProfileSyncServiceAndroid); - private native int[] nativeGetActiveDataTypes(long nativeProfileSyncServiceAndroid); - private native int[] nativeGetChosenDataTypes(long nativeProfileSyncServiceAndroid); - private native int[] nativeGetPreferredDataTypes(long nativeProfileSyncServiceAndroid); - private native void nativeSetChosenDataTypes( - long nativeProfileSyncServiceAndroid, boolean syncEverything, int[] modelTypeArray); - private native void nativeTriggerRefresh(long nativeProfileSyncServiceAndroid); - private native void nativeSetSetupInProgress( - long nativeProfileSyncServiceAndroid, boolean inProgress); - private native void nativeSetFirstSetupComplete( - long nativeProfileSyncServiceAndroid, int syncFirstSetupCompleteSource); - private native boolean nativeIsFirstSetupComplete(long nativeProfileSyncServiceAndroid); - private native boolean nativeIsSyncRequested(long nativeProfileSyncServiceAndroid); - private native boolean nativeCanSyncFeatureStart(long nativeProfileSyncServiceAndroid); - private native boolean nativeIsSyncActive(long nativeProfileSyncServiceAndroid); - private native boolean nativeIsSyncDisabledByEnterprisePolicy( - long nativeProfileSyncServiceAndroid); - private native boolean nativeHasKeepEverythingSynced(long nativeProfileSyncServiceAndroid); - private native boolean nativeHasUnrecoverableError(long nativeProfileSyncServiceAndroid); - private native boolean nativeIsPassphrasePrompted(long nativeProfileSyncServiceAndroid); - private native void nativeSetPassphrasePrompted(long nativeProfileSyncServiceAndroid, - boolean prompted); - private native long nativeGetLastSyncedTimeForTest(long nativeProfileSyncServiceAndroid); - private native void nativeOverrideNetworkResourcesForTest( - long nativeProfileSyncServiceAndroid, long networkResources); - private native void nativeGetAllNodes( - long nativeProfileSyncServiceAndroid, GetAllNodesCallback callback); + void requestStart(long nativeProfileSyncServiceAndroid, ProfileSyncService caller); + void requestStop(long nativeProfileSyncServiceAndroid, ProfileSyncService caller); + void setSyncAllowedByPlatform( + long nativeProfileSyncServiceAndroid, ProfileSyncService caller, boolean allowed); + void flushDirectory(long nativeProfileSyncServiceAndroid, ProfileSyncService caller); + void setSyncSessionsId( + long nativeProfileSyncServiceAndroid, ProfileSyncService caller, String tag); + int getAuthError(long nativeProfileSyncServiceAndroid, ProfileSyncService caller); + boolean requiresClientUpgrade( + long nativeProfileSyncServiceAndroid, ProfileSyncService caller); + boolean isEngineInitialized( + long nativeProfileSyncServiceAndroid, ProfileSyncService caller); + boolean isEncryptEverythingAllowed( + long nativeProfileSyncServiceAndroid, ProfileSyncService caller); + boolean isEncryptEverythingEnabled( + long nativeProfileSyncServiceAndroid, ProfileSyncService caller); + void enableEncryptEverything( + long nativeProfileSyncServiceAndroid, ProfileSyncService caller); + boolean isPassphraseRequiredForDecryption( + long nativeProfileSyncServiceAndroid, ProfileSyncService caller); + boolean isUsingSecondaryPassphrase( + long nativeProfileSyncServiceAndroid, ProfileSyncService caller); + boolean setDecryptionPassphrase( + long nativeProfileSyncServiceAndroid, ProfileSyncService caller, String passphrase); + void setEncryptionPassphrase( + long nativeProfileSyncServiceAndroid, ProfileSyncService caller, String passphrase); + int getPassphraseType(long nativeProfileSyncServiceAndroid, ProfileSyncService caller); + boolean hasExplicitPassphraseTime( + long nativeProfileSyncServiceAndroid, ProfileSyncService caller); + long getExplicitPassphraseTime( + long nativeProfileSyncServiceAndroid, ProfileSyncService caller); + String getSyncEnterGooglePassphraseBodyWithDateText( + long nativeProfileSyncServiceAndroid, ProfileSyncService caller); + String getSyncEnterCustomPassphraseBodyWithDateText( + long nativeProfileSyncServiceAndroid, ProfileSyncService caller); + String getCurrentSignedInAccountText( + long nativeProfileSyncServiceAndroid, ProfileSyncService caller); + String getSyncEnterCustomPassphraseBodyText( + long nativeProfileSyncServiceAndroid, ProfileSyncService caller); + int getNumberOfSyncedDevices( + long nativeProfileSyncServiceAndroid, ProfileSyncService caller); + int[] getActiveDataTypes(long nativeProfileSyncServiceAndroid, ProfileSyncService caller); + int[] getChosenDataTypes(long nativeProfileSyncServiceAndroid, ProfileSyncService caller); + int[] getPreferredDataTypes( + long nativeProfileSyncServiceAndroid, ProfileSyncService caller); + void setChosenDataTypes(long nativeProfileSyncServiceAndroid, ProfileSyncService caller, + boolean syncEverything, int[] modelTypeArray); + void triggerRefresh(long nativeProfileSyncServiceAndroid, ProfileSyncService caller); + void setSetupInProgress(long nativeProfileSyncServiceAndroid, ProfileSyncService caller, + boolean inProgress); + void setFirstSetupComplete(long nativeProfileSyncServiceAndroid, ProfileSyncService caller, + int syncFirstSetupCompleteSource); + boolean isFirstSetupComplete( + long nativeProfileSyncServiceAndroid, ProfileSyncService caller); + boolean isSyncRequested(long nativeProfileSyncServiceAndroid, ProfileSyncService caller); + boolean canSyncFeatureStart( + long nativeProfileSyncServiceAndroid, ProfileSyncService caller); + boolean isSyncActive(long nativeProfileSyncServiceAndroid, ProfileSyncService caller); + boolean isSyncDisabledByEnterprisePolicy( + long nativeProfileSyncServiceAndroid, ProfileSyncService caller); + boolean hasKeepEverythingSynced( + long nativeProfileSyncServiceAndroid, ProfileSyncService caller); + boolean hasUnrecoverableError( + long nativeProfileSyncServiceAndroid, ProfileSyncService caller); + boolean isPassphrasePrompted( + long nativeProfileSyncServiceAndroid, ProfileSyncService caller); + void setPassphrasePrompted( + long nativeProfileSyncServiceAndroid, ProfileSyncService caller, boolean prompted); + long getLastSyncedTimeForTest( + long nativeProfileSyncServiceAndroid, ProfileSyncService caller); + void overrideNetworkResourcesForTest(long nativeProfileSyncServiceAndroid, + ProfileSyncService caller, long networkResources); + void getAllNodes(long nativeProfileSyncServiceAndroid, ProfileSyncService caller, + GetAllNodesCallback callback); + } }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/InterceptNavigationDelegateImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/tab/InterceptNavigationDelegateImpl.java index 20d715f..a4b190a2 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/tab/InterceptNavigationDelegateImpl.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tab/InterceptNavigationDelegateImpl.java
@@ -6,6 +6,7 @@ import org.chromium.base.UserData; import org.chromium.base.VisibleForTesting; +import org.chromium.base.annotations.NativeMethods; import org.chromium.base.metrics.RecordHistogram; import org.chromium.base.task.PostTask; import org.chromium.chrome.R; @@ -115,7 +116,7 @@ setExternalNavigationHandler( mTab.getDelegateFactory().createExternalNavigationHandler(mTab)); } - nativeAssociateWithWebContents(this, mWebContents); + InterceptNavigationDelegateImplJni.get().associateWithWebContents(this, mWebContents); } public boolean shouldIgnoreNewTab(String url, boolean incognito) { @@ -346,7 +347,10 @@ tab.getUserDataHost().setUserData(USER_DATA_KEY, delegate); } - private static native void nativeAssociateWithWebContents( - InterceptNavigationDelegateImpl nativeInterceptNavigationDelegateImpl, - WebContents webContents); + @NativeMethods + interface Natives { + void associateWithWebContents( + InterceptNavigationDelegateImpl nativeInterceptNavigationDelegateImpl, + WebContents webContents); + } }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/Tab.java b/chrome/android/java/src/org/chromium/chrome/browser/tab/Tab.java index d0496ec..de9fe9a7 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/tab/Tab.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tab/Tab.java
@@ -30,6 +30,7 @@ import org.chromium.base.UserDataHost; import org.chromium.base.VisibleForTesting; import org.chromium.base.annotations.CalledByNative; +import org.chromium.base.annotations.NativeMethods; import org.chromium.chrome.R; import org.chromium.chrome.browser.ChromeActivity; import org.chromium.chrome.browser.ChromeFeatureList; @@ -406,7 +407,8 @@ public int loadUrl(LoadUrlParams params) { try { TraceEvent.begin("Tab.loadUrl"); - // TODO(tedchoc): When showing the android NTP, delay the call to nativeLoadUrl until + // TODO(tedchoc): When showing the android NTP, delay the call to TabJni.get().loadUrl + // until // the android view has entirely rendered. if (!mIsNativePageCommitPending) { mIsNativePageCommitPending = maybeShowNativePage(params.getUrl(), false); @@ -425,7 +427,7 @@ // We load the URL from the tab rather than directly from the ContentView so the tab has // a chance of using a prerenderer page is any. - int loadType = nativeLoadUrl(mNativeTabAndroid, params.getUrl(), + int loadType = TabJni.get().loadUrl(mNativeTabAndroid, Tab.this, params.getUrl(), params.getInitiatorOrigin(), params.getVerbatimHeaders(), params.getPostData(), params.getTransitionType(), params.getReferrer() != null ? params.getReferrer().getUrl() : null, @@ -467,7 +469,7 @@ * Load the original image (uncompressed by spdy proxy) in this tab. */ void loadOriginalImage() { - if (mNativeTabAndroid != 0) nativeLoadOriginalImage(mNativeTabAndroid); + if (mNativeTabAndroid != 0) TabJni.get().loadOriginalImage(mNativeTabAndroid, Tab.this); } /** @@ -628,7 +630,7 @@ */ public Profile getProfile() { if (mNativeTabAndroid == 0) return null; - return nativeGetProfileAndroid(mNativeTabAndroid); + return TabJni.get().getProfileAndroid(mNativeTabAndroid, Tab.this); } /** @@ -1017,10 +1019,10 @@ // activity. maybeShowNativePage(getUrl(), true); - nativeAttachDetachedTab(mNativeTabAndroid); + TabJni.get().attachDetachedTab(mNativeTabAndroid, Tab.this); if (getWebContents() != null) { - nativeUpdateDelegates(mNativeTabAndroid, mWebContentsDelegate, + TabJni.get().updateDelegates(mNativeTabAndroid, Tab.this, mWebContentsDelegate, new TabContextMenuPopulator( mDelegateFactory.createContextMenuPopulator(this), this)); } @@ -1135,7 +1137,7 @@ * TODO(dfalcantara): Make this function harder to access. */ public void initializeNative() { - if (mNativeTabAndroid == 0) nativeInit(); + if (mNativeTabAndroid == 0) TabJni.get().init(Tab.this); assert mNativeTabAndroid != 0; mIsInitialized = true; } @@ -1182,8 +1184,8 @@ mWebContentsDelegate = mDelegateFactory.createWebContentsDelegate(this); assert mNativeTabAndroid != 0; - nativeInitWebContents(mNativeTabAndroid, mIncognito, isDetached(), webContents, - mSourceTabId, mWebContentsDelegate, + TabJni.get().initWebContents(mNativeTabAndroid, Tab.this, mIncognito, isDetached(), + webContents, mSourceTabId, mWebContentsDelegate, new TabContextMenuPopulator( mDelegateFactory.createContextMenuPopulator(this), this)); @@ -1273,7 +1275,7 @@ // destroying the native tab cleanups up any remaining infobars. The infobar container // expects all infobars to be cleaned up before its own destruction. assert mNativeTabAndroid != 0; - nativeDestroy(mNativeTabAndroid); + TabJni.get().destroy(mNativeTabAndroid, Tab.this); assert mNativeTabAndroid == 0; } @@ -1580,9 +1582,9 @@ if (deleteNativeWebContents) { // Destruction of the native WebContents will call back into Java to destroy the Java // WebContents. - nativeDestroyWebContents(mNativeTabAndroid); + TabJni.get().destroyWebContents(mNativeTabAndroid, Tab.this); } else { - nativeReleaseWebContents(mNativeTabAndroid); + TabJni.get().releaseWebContents(mNativeTabAndroid, Tab.this); // Since the native WebContents is still alive, we need to clear its reference to the // Java WebContents. While doing so, it will also call back into Java to destroy the // Java WebContents. @@ -1661,8 +1663,8 @@ webContents.setSize(originalWidth, originalHeight); if (!bounds.isEmpty()) { - nativeOnPhysicalBackingSizeChanged( - mNativeTabAndroid, webContents, bounds.right, bounds.bottom); + TabJni.get().onPhysicalBackingSizeChanged( + mNativeTabAndroid, Tab.this, webContents, bounds.right, bounds.bottom); } webContents.onShow(); initWebContents(webContents); @@ -1740,7 +1742,7 @@ */ public void createHistoricalTab() { if (!isFrozen()) { - nativeCreateHistoricalTab(mNativeTabAndroid); + TabJni.get().createHistoricalTab(mNativeTabAndroid, Tab.this); } else if (mFrozenContentsState != null) { mFrozenContentsState.createHistoricalTab(); } @@ -1818,8 +1820,8 @@ */ void pushNativePageStateToNavigationEntry() { assert mNativeTabAndroid != 0 && getNativePage() != null; - nativeSetActiveNavigationEntryTitleForUrl(mNativeTabAndroid, getNativePage().getUrl(), - getNativePage().getTitle()); + TabJni.get().setActiveNavigationEntryTitleForUrl( + mNativeTabAndroid, Tab.this, getNativePage().getUrl(), getNativePage().getTitle()); } /** @@ -1827,7 +1829,8 @@ * {@link #INVALID_BOOKMARK_ID} if no such bookmark exists. */ public long getBookmarkId() { - return isFrozen() ? INVALID_BOOKMARK_ID : nativeGetBookmarkId(mNativeTabAndroid, false); + return isFrozen() ? INVALID_BOOKMARK_ID + : TabJni.get().getBookmarkId(mNativeTabAndroid, Tab.this, false); } /** @@ -1835,7 +1838,8 @@ * that can't be edited by the user. */ public long getUserBookmarkId() { - return isFrozen() ? INVALID_BOOKMARK_ID : nativeGetBookmarkId(mNativeTabAndroid, true); + return isFrozen() ? INVALID_BOOKMARK_ID + : TabJni.get().getBookmarkId(mNativeTabAndroid, Tab.this, true); } /** @@ -1856,7 +1860,7 @@ @VisibleForTesting public boolean hasPrerenderedUrl(String url) { - return nativeHasPrerenderedUrl(mNativeTabAndroid, url); + return TabJni.get().hasPrerenderedUrl(mNativeTabAndroid, Tab.this, url); } /** @@ -1908,32 +1912,36 @@ * @return Whether input events from the renderer are ignored on the browser side. */ public boolean areRendererInputEventsIgnored() { - return nativeAreRendererInputEventsIgnored(mNativeTabAndroid); + return TabJni.get().areRendererInputEventsIgnored(mNativeTabAndroid, Tab.this); } - private native void nativeInit(); - private native void nativeDestroy(long nativeTabAndroid); - private native void nativeInitWebContents(long nativeTabAndroid, boolean incognito, - boolean isBackgroundTab, WebContents webContents, int parentTabId, - TabWebContentsDelegateAndroid delegate, ContextMenuPopulator contextMenuPopulator); - private native void nativeUpdateDelegates(long nativeTabAndroid, - TabWebContentsDelegateAndroid delegate, ContextMenuPopulator contextMenuPopulator); - private native void nativeDestroyWebContents(long nativeTabAndroid); - private native void nativeReleaseWebContents(long nativeTabAndroid); - private native void nativeOnPhysicalBackingSizeChanged( - long nativeTabAndroid, WebContents webContents, int width, int height); - private native Profile nativeGetProfileAndroid(long nativeTabAndroid); - private native int nativeLoadUrl(long nativeTabAndroid, String url, String initiatorOrigin, - String extraHeaders, ResourceRequestBody postData, int transition, String referrerUrl, - int referrerPolicy, boolean isRendererInitiated, boolean shoulReplaceCurrentEntry, - boolean hasUserGesture, boolean shouldClearHistoryList, long inputStartTimestamp, - long intentReceivedTimestamp); - private native void nativeSetActiveNavigationEntryTitleForUrl(long nativeTabAndroid, String url, - String title); - private native void nativeCreateHistoricalTab(long nativeTabAndroid); - private native void nativeLoadOriginalImage(long nativeTabAndroid); - private native long nativeGetBookmarkId(long nativeTabAndroid, boolean onlyEditable); - private native boolean nativeHasPrerenderedUrl(long nativeTabAndroid, String url); - private native void nativeAttachDetachedTab(long nativeTabAndroid); - private native boolean nativeAreRendererInputEventsIgnored(long nativeTabAndroid); + @NativeMethods + interface Natives { + void init(Tab caller); + void destroy(long nativeTabAndroid, Tab caller); + void initWebContents(long nativeTabAndroid, Tab caller, boolean incognito, + boolean isBackgroundTab, WebContents webContents, int parentTabId, + TabWebContentsDelegateAndroid delegate, ContextMenuPopulator contextMenuPopulator); + void updateDelegates(long nativeTabAndroid, Tab caller, + TabWebContentsDelegateAndroid delegate, ContextMenuPopulator contextMenuPopulator); + void destroyWebContents(long nativeTabAndroid, Tab caller); + void releaseWebContents(long nativeTabAndroid, Tab caller); + void onPhysicalBackingSizeChanged( + long nativeTabAndroid, Tab caller, WebContents webContents, int width, int height); + Profile getProfileAndroid(long nativeTabAndroid, Tab caller); + int loadUrl(long nativeTabAndroid, Tab caller, String url, String initiatorOrigin, + String extraHeaders, ResourceRequestBody postData, int transition, + String referrerUrl, int referrerPolicy, boolean isRendererInitiated, + boolean shoulReplaceCurrentEntry, boolean hasUserGesture, + boolean shouldClearHistoryList, long inputStartTimestamp, + long intentReceivedTimestamp); + void setActiveNavigationEntryTitleForUrl( + long nativeTabAndroid, Tab caller, String url, String title); + void createHistoricalTab(long nativeTabAndroid, Tab caller); + void loadOriginalImage(long nativeTabAndroid, Tab caller); + long getBookmarkId(long nativeTabAndroid, Tab caller, boolean onlyEditable); + boolean hasPrerenderedUrl(long nativeTabAndroid, Tab caller, String url); + void attachDetachedTab(long nativeTabAndroid, Tab caller); + boolean areRendererInputEventsIgnored(long nativeTabAndroid, Tab caller); + } }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabBrowserControlsState.java b/chrome/android/java/src/org/chromium/chrome/browser/tab/TabBrowserControlsState.java index 43c0232..0ab2d52 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabBrowserControlsState.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tab/TabBrowserControlsState.java
@@ -5,6 +5,7 @@ package org.chromium.chrome.browser.tab; import org.chromium.base.ObserverList.RewindableIterator; +import org.chromium.base.annotations.NativeMethods; import org.chromium.content_public.browser.ImeAdapter; import org.chromium.content_public.browser.ImeEventObserver; import org.chromium.content_public.browser.WebContents; @@ -161,7 +162,10 @@ @Override public void destroyInternal() { - if (mNativeTabBrowserControlsState != 0) nativeOnDestroyed(mNativeTabBrowserControlsState); + if (mNativeTabBrowserControlsState != 0) { + TabBrowserControlsStateJni.get().onDestroyed( + mNativeTabBrowserControlsState, TabBrowserControlsState.this); + } } @Override @@ -196,9 +200,12 @@ && current == BrowserControlsState.HIDDEN)) { return; } - if (mNativeTabBrowserControlsState == 0) mNativeTabBrowserControlsState = nativeInit(); - nativeUpdateState(mNativeTabBrowserControlsState, mTab.getWebContents(), constraints, - current, animate); + if (mNativeTabBrowserControlsState == 0) { + mNativeTabBrowserControlsState = + TabBrowserControlsStateJni.get().init(TabBrowserControlsState.this); + } + TabBrowserControlsStateJni.get().updateState(mNativeTabBrowserControlsState, + TabBrowserControlsState.this, mTab.getWebContents(), constraints, current, animate); if (constraints == mConstraints) return; mConstraints = constraints; @@ -262,8 +269,11 @@ updateEnabledState(); } - private native long nativeInit(); - private native void nativeOnDestroyed(long nativeTabBrowserControlsState); - private native void nativeUpdateState(long nativeTabBrowserControlsState, - WebContents webContents, int contraints, int current, boolean animate); + @NativeMethods + interface Natives { + long init(TabBrowserControlsState caller); + void onDestroyed(long nativeTabBrowserControlsState, TabBrowserControlsState caller); + void updateState(long nativeTabBrowserControlsState, TabBrowserControlsState caller, + WebContents webContents, int contraints, int current, boolean animate); + } }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabFavicon.java b/chrome/android/java/src/org/chromium/chrome/browser/tab/TabFavicon.java index 7da72d75..78a2f3b 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabFavicon.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tab/TabFavicon.java
@@ -9,6 +9,7 @@ import org.chromium.base.ObserverList.RewindableIterator; import org.chromium.base.annotations.CalledByNative; +import org.chromium.base.annotations.NativeMethods; import org.chromium.chrome.R; import org.chromium.content_public.browser.WebContents; @@ -59,22 +60,22 @@ Resources resources = tab.getThemedApplicationContext().getResources(); mIdealFaviconSize = resources.getDimensionPixelSize(R.dimen.default_favicon_size); mTab = tab; - mNativeTabFavicon = nativeInit(); + mNativeTabFavicon = TabFaviconJni.get().init(TabFavicon.this); } @Override public void initWebContents(WebContents webContents) { - nativeSetWebContents(mNativeTabFavicon, webContents); + TabFaviconJni.get().setWebContents(mNativeTabFavicon, TabFavicon.this, webContents); } @Override public void cleanupWebContents(WebContents webContents) { - nativeResetWebContents(mNativeTabFavicon); + TabFaviconJni.get().resetWebContents(mNativeTabFavicon, TabFavicon.this); } @Override public void destroyInternal() { - nativeOnDestroyed(mNativeTabFavicon); + TabFaviconJni.get().onDestroyed(mNativeTabFavicon, TabFavicon.this); } /** @@ -90,7 +91,7 @@ return mFavicon; } - return nativeGetFavicon(mNativeTabFavicon); + return TabFaviconJni.get().getFavicon(mNativeTabFavicon, TabFavicon.this); } /** @@ -137,9 +138,12 @@ while (observers.hasNext()) observers.next().onFaviconUpdated(mTab, icon); } - private native long nativeInit(); - private native void nativeOnDestroyed(long nativeTabFavicon); - private native void nativeSetWebContents(long nativeTabFavicon, WebContents webContents); - private native void nativeResetWebContents(long nativeTabFavicon); - private native Bitmap nativeGetFavicon(long nativeTabFavicon); + @NativeMethods + interface Natives { + long init(TabFavicon caller); + void onDestroyed(long nativeTabFavicon, TabFavicon caller); + void setWebContents(long nativeTabFavicon, TabFavicon caller, WebContents webContents); + void resetWebContents(long nativeTabFavicon, TabFavicon caller); + Bitmap getFavicon(long nativeTabFavicon, TabFavicon caller); + } }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabState.java b/chrome/android/java/src/org/chromium/chrome/browser/tab/TabState.java index 476a1b9..c592e4fb 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabState.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tab/TabState.java
@@ -14,6 +14,7 @@ import org.chromium.base.Log; import org.chromium.base.StreamUtil; import org.chromium.base.VisibleForTesting; +import org.chromium.base.annotations.NativeMethods; import org.chromium.chrome.browser.ChromeVersionInfo; import org.chromium.chrome.browser.crypto.CipherFactory; import org.chromium.chrome.browser.tabmodel.TabLaunchType; @@ -50,7 +51,7 @@ /** * Version number of the format used to save the WebContents navigation history, as returned by - * nativeGetContentsStateAsByteBuffer(). Version labels: + * TabStateJni.get().getContentsStateAsByteBuffer(). Version labels: * 0 - Chrome m18 * 1 - Chrome m25 * 2 - Chrome m26+ @@ -112,7 +113,7 @@ * @return Pointer A WebContents object. */ public WebContents restoreContentsFromByteBuffer(boolean isHidden) { - return nativeRestoreContentsFromByteBuffer(mBuffer, mVersion, isHidden); + return TabStateJni.get().restoreContentsFromByteBuffer(mBuffer, mVersion, isHidden); } /** @@ -123,7 +124,8 @@ */ @Nullable public WebContentsState deleteNavigationEntries(long predicate) { - ByteBuffer newBuffer = nativeDeleteNavigationEntries(mBuffer, mVersion, predicate); + ByteBuffer newBuffer = + TabStateJni.get().deleteNavigationEntries(mBuffer, mVersion, predicate); if (newBuffer == null) return null; WebContentsState newState = new TabState.WebContentsState(newBuffer); newState.setVersion(TabState.CONTENTS_STATE_CURRENT_VERSION); @@ -135,7 +137,7 @@ * deletes the WebContents. */ public void createHistoricalTab() { - nativeCreateHistoricalTab(mBuffer, mVersion); + TabStateJni.get().createHistoricalTab(mBuffer, mVersion); } } @@ -512,12 +514,14 @@ /** @return Title currently being displayed in the saved state's current entry. */ public String getDisplayTitleFromState() { - return nativeGetDisplayTitleFromByteBuffer(contentsState.buffer(), contentsState.version()); + return TabStateJni.get().getDisplayTitleFromByteBuffer( + contentsState.buffer(), contentsState.version()); } /** @return URL currently being displayed in the saved state's current entry. */ public String getVirtualUrlFromState() { - return nativeGetVirtualUrlFromByteBuffer(contentsState.buffer(), contentsState.version()); + return TabStateJni.get().getVirtualUrlFromByteBuffer( + contentsState.buffer(), contentsState.version()); } /** @return Whether an incognito TabState was loaded by {@link #readState}. */ @@ -546,7 +550,7 @@ */ public static ByteBuffer createSingleNavigationStateAsByteBuffer(String url, String referrerUrl, int referrerPolicy, String initiatorOrigin, boolean isIncognito) { - return nativeCreateSingleNavigationStateAsByteBuffer( + return TabStateJni.get().createSingleNavigationStateAsByteBuffer( url, referrerUrl, referrerPolicy, initiatorOrigin, isIncognito); } @@ -556,7 +560,7 @@ * @return ByteBuffer containing the state of the WebContents. */ public static ByteBuffer getContentsStateAsByteBuffer(Tab tab) { - return nativeGetContentsStateAsByteBuffer(tab); + return TabStateJni.get().getContentsStateAsByteBuffer(tab); } /** @@ -601,22 +605,16 @@ sChannelNameOverrideForTest = name; } - private static native WebContents nativeRestoreContentsFromByteBuffer( - ByteBuffer buffer, int savedStateVersion, boolean initiallyHidden); - - private static native ByteBuffer nativeGetContentsStateAsByteBuffer(Tab tab); - - private static native ByteBuffer nativeDeleteNavigationEntries( - ByteBuffer state, int saveStateVersion, long predicate); - - private static native ByteBuffer nativeCreateSingleNavigationStateAsByteBuffer(String url, - String referrerUrl, int referrerPolicy, String initiatorOrigin, boolean isIncognito); - - private static native String nativeGetDisplayTitleFromByteBuffer( - ByteBuffer state, int savedStateVersion); - - private static native String nativeGetVirtualUrlFromByteBuffer( - ByteBuffer state, int savedStateVersion); - - private static native void nativeCreateHistoricalTab(ByteBuffer state, int savedStateVersion); + @NativeMethods + interface Natives { + WebContents restoreContentsFromByteBuffer( + ByteBuffer buffer, int savedStateVersion, boolean initiallyHidden); + ByteBuffer getContentsStateAsByteBuffer(Tab tab); + ByteBuffer deleteNavigationEntries(ByteBuffer state, int saveStateVersion, long predicate); + ByteBuffer createSingleNavigationStateAsByteBuffer(String url, String referrerUrl, + int referrerPolicy, String initiatorOrigin, boolean isIncognito); + String getDisplayTitleFromByteBuffer(ByteBuffer state, int savedStateVersion); + String getVirtualUrlFromByteBuffer(ByteBuffer state, int savedStateVersion); + void createHistoricalTab(ByteBuffer state, int savedStateVersion); + } }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabWebContentsDelegateAndroid.java b/chrome/android/java/src/org/chromium/chrome/browser/tab/TabWebContentsDelegateAndroid.java index 62aadcc..2ee6c29 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabWebContentsDelegateAndroid.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tab/TabWebContentsDelegateAndroid.java
@@ -13,6 +13,7 @@ import org.chromium.base.BuildInfo; import org.chromium.base.ObserverList.RewindableIterator; import org.chromium.base.annotations.CalledByNative; +import org.chromium.base.annotations.NativeMethods; import org.chromium.blink_public.platform.WebDisplayMode; import org.chromium.chrome.browser.AppHooks; import org.chromium.chrome.browser.findinpage.FindMatchRectsDetails; @@ -177,7 +178,9 @@ @Override public void rendererUnresponsive() { super.rendererUnresponsive(); - if (mTab.getWebContents() != null) nativeOnRendererUnresponsive(mTab.getWebContents()); + if (mTab.getWebContents() != null) { + TabWebContentsDelegateAndroidJni.get().onRendererUnresponsive(mTab.getWebContents()); + } mTab.handleRendererResponsiveStateChanged(false); } @@ -185,7 +188,9 @@ @Override public void rendererResponsive() { super.rendererResponsive(); - if (mTab.getWebContents() != null) nativeOnRendererResponsive(mTab.getWebContents()); + if (mTab.getWebContents() != null) { + TabWebContentsDelegateAndroidJni.get().onRendererResponsive(mTab.getWebContents()); + } mTab.handleRendererResponsiveStateChanged(true); } @@ -240,7 +245,8 @@ } public void showFramebustBlockInfobarForTesting(String url) { - nativeShowFramebustBlockInfoBar(mTab.getWebContents(), url); + TabWebContentsDelegateAndroidJni.get().showFramebustBlockInfoBar( + mTab.getWebContents(), url); } /** @@ -278,7 +284,10 @@ return null; } - private static native void nativeOnRendererUnresponsive(WebContents webContents); - private static native void nativeOnRendererResponsive(WebContents webContents); - private static native void nativeShowFramebustBlockInfoBar(WebContents webContents, String url); + @NativeMethods + interface Natives { + void onRendererUnresponsive(WebContents webContents); + void onRendererResponsive(WebContents webContents); + void showFramebustBlockInfoBar(WebContents webContents, String url); + } }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TrustedCdn.java b/chrome/android/java/src/org/chromium/chrome/browser/tab/TrustedCdn.java index a2e87b8..8ad8d855 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/tab/TrustedCdn.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tab/TrustedCdn.java
@@ -7,6 +7,7 @@ import androidx.annotation.Nullable; import org.chromium.base.annotations.CalledByNative; +import org.chromium.base.annotations.NativeMethods; import org.chromium.chrome.browser.ChromeActivity; import org.chromium.chrome.browser.ssl.SecurityStateModel; import org.chromium.components.security_state.ConnectionSecurityLevel; @@ -50,23 +51,23 @@ private TrustedCdn(Tab tab) { super(tab); mTab = tab; - mNativeTrustedCdn = nativeInit(); + mNativeTrustedCdn = TrustedCdnJni.get().init(TrustedCdn.this); } @Override public void initWebContents(WebContents webContents) { - nativeSetWebContents(mNativeTrustedCdn, webContents); + TrustedCdnJni.get().setWebContents(mNativeTrustedCdn, TrustedCdn.this, webContents); } @Override public void cleanupWebContents(WebContents webContents) { - nativeResetWebContents(mNativeTrustedCdn); + TrustedCdnJni.get().resetWebContents(mNativeTrustedCdn, TrustedCdn.this); mPublisherUrl = null; } @Override public void destroyInternal() { - nativeOnDestroyed(mNativeTrustedCdn); + TrustedCdnJni.get().onDestroyed(mNativeTrustedCdn, TrustedCdn.this); } @Nullable @@ -87,8 +88,11 @@ mPublisherUrl = url; } - private native long nativeInit(); - private native void nativeOnDestroyed(long nativeTrustedCdn); - private native void nativeSetWebContents(long nativeTrustedCdn, WebContents webContents); - private native void nativeResetWebContents(long nativeTrustedCdn); + @NativeMethods + interface Natives { + long init(TrustedCdn caller); + void onDestroyed(long nativeTrustedCdn, TrustedCdn caller); + void setWebContents(long nativeTrustedCdn, TrustedCdn caller, WebContents webContents); + void resetWebContents(long nativeTrustedCdn, TrustedCdn caller); + } }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelJniBridge.java b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelJniBridge.java index c9493fa..a624c58 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelJniBridge.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelJniBridge.java
@@ -7,6 +7,7 @@ import android.os.SystemClock; import org.chromium.base.annotations.CalledByNative; +import org.chromium.base.annotations.NativeMethods; import org.chromium.chrome.browser.profiles.Profile; import org.chromium.chrome.browser.tab.Tab; import org.chromium.chrome.browser.tabmodel.TabCreatorManager.TabCreator; @@ -44,7 +45,8 @@ /** Initializes the native-side counterpart to this class. */ protected void initializeNative() { assert mNativeTabModelJniBridge == 0; - mNativeTabModelJniBridge = nativeInit(mIsIncognito, mIsTabbedActivityForSync); + mNativeTabModelJniBridge = TabModelJniBridgeJni.get().init( + TabModelJniBridge.this, mIsIncognito, mIsTabbedActivityForSync); } /** @return Whether the native-side pointer has been initialized. */ @@ -56,7 +58,7 @@ public void destroy() { if (isNativeInitialized()) { // This will invalidate all other native references to this object in child classes. - nativeDestroy(mNativeTabModelJniBridge); + TabModelJniBridgeJni.get().destroy(mNativeTabModelJniBridge, TabModelJniBridge.this); mNativeTabModelJniBridge = 0; } } @@ -68,13 +70,15 @@ @Override public Profile getProfile() { - return nativeGetProfileAndroid(mNativeTabModelJniBridge); + return TabModelJniBridgeJni.get().getProfileAndroid( + mNativeTabModelJniBridge, TabModelJniBridge.this); } /** Broadcast a native-side notification that all tabs are now loaded from storage. */ public void broadcastSessionRestoreComplete() { assert isNativeInitialized(); - nativeBroadcastSessionRestoreComplete(mNativeTabModelJniBridge); + TabModelJniBridgeJni.get().broadcastSessionRestoreComplete( + mNativeTabModelJniBridge, TabModelJniBridge.this); } /** @@ -82,7 +86,10 @@ * @param tab Tab being added to the model. */ protected void tabAddedToModel(Tab tab) { - if (isNativeInitialized()) nativeTabAddedToModel(mNativeTabModelJniBridge, tab); + if (isNativeInitialized()) { + TabModelJniBridgeJni.get().tabAddedToModel( + mNativeTabModelJniBridge, TabModelJniBridge.this, tab); + } } /** @@ -204,28 +211,33 @@ final long ms = SystemClock.uptimeMillis() - sTabSwitchStartTime; switch (sTabSelectionType) { case TabSelectionType.FROM_CLOSE: - nativeLogFromCloseMetric(ms, perceived); + TabModelJniBridgeJni.get().logFromCloseMetric(ms, perceived); break; case TabSelectionType.FROM_EXIT: - nativeLogFromExitMetric(ms, perceived); + TabModelJniBridgeJni.get().logFromExitMetric(ms, perceived); break; case TabSelectionType.FROM_NEW: - nativeLogFromNewMetric(ms, perceived); + TabModelJniBridgeJni.get().logFromNewMetric(ms, perceived); break; case TabSelectionType.FROM_USER: - nativeLogFromUserMetric(ms, perceived); + TabModelJniBridgeJni.get().logFromUserMetric(ms, perceived); break; } } - private native long nativeInit(boolean isIncognito, boolean isTabbedActivity); - private native Profile nativeGetProfileAndroid(long nativeTabModelJniBridge); - private native void nativeBroadcastSessionRestoreComplete(long nativeTabModelJniBridge); - private native void nativeDestroy(long nativeTabModelJniBridge); - private native void nativeTabAddedToModel(long nativeTabModelJniBridge, Tab tab); - // Native methods for tab switch latency metrics. - private static native void nativeLogFromCloseMetric(long ms, boolean perceived); - private static native void nativeLogFromExitMetric(long ms, boolean perceived); - private static native void nativeLogFromNewMetric(long ms, boolean perceived); - private static native void nativeLogFromUserMetric(long ms, boolean perceived); + @NativeMethods + interface Natives { + long init(TabModelJniBridge caller, boolean isIncognito, boolean isTabbedActivity); + Profile getProfileAndroid(long nativeTabModelJniBridge, TabModelJniBridge caller); + void broadcastSessionRestoreComplete( + long nativeTabModelJniBridge, TabModelJniBridge caller); + void destroy(long nativeTabModelJniBridge, TabModelJniBridge caller); + void tabAddedToModel(long nativeTabModelJniBridge, TabModelJniBridge caller, Tab tab); + + // Methods for tab switch latency metrics. + void logFromCloseMetric(long ms, boolean perceived); + void logFromExitMetric(long ms, boolean perceived); + void logFromNewMetric(long ms, boolean perceived); + void logFromUserMetric(long ms, boolean perceived); + } }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelObserverJniBridge.java b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelObserverJniBridge.java index 5daef68..e79fd09 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelObserverJniBridge.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelObserverJniBridge.java
@@ -5,6 +5,7 @@ package org.chromium.chrome.browser.tabmodel; import org.chromium.base.annotations.CalledByNative; +import org.chromium.base.annotations.NativeMethods; import org.chromium.chrome.browser.tab.Tab; import java.util.List; @@ -37,55 +38,64 @@ @Override public final void didSelectTab(Tab tab, @TabSelectionType int type, int lastId) { assert mNativeTabModelObserverJniBridge != 0; - nativeDidSelectTab(mNativeTabModelObserverJniBridge, tab, type, lastId); + TabModelObserverJniBridgeJni.get().didSelectTab(mNativeTabModelObserverJniBridge, + TabModelObserverJniBridge.this, tab, type, lastId); } @Override public final void willCloseTab(Tab tab, boolean animate) { assert mNativeTabModelObserverJniBridge != 0; - nativeWillCloseTab(mNativeTabModelObserverJniBridge, tab, animate); + TabModelObserverJniBridgeJni.get().willCloseTab( + mNativeTabModelObserverJniBridge, TabModelObserverJniBridge.this, tab, animate); } @Override public final void didCloseTab(int tabId, boolean incognito) { assert mNativeTabModelObserverJniBridge != 0; - nativeDidCloseTab(mNativeTabModelObserverJniBridge, tabId, incognito); + TabModelObserverJniBridgeJni.get().didCloseTab( + mNativeTabModelObserverJniBridge, TabModelObserverJniBridge.this, tabId, incognito); } @Override public final void willAddTab(Tab tab, @TabLaunchType int type) { assert mNativeTabModelObserverJniBridge != 0; - nativeWillAddTab(mNativeTabModelObserverJniBridge, tab, type); + TabModelObserverJniBridgeJni.get().willAddTab( + mNativeTabModelObserverJniBridge, TabModelObserverJniBridge.this, tab, type); } @Override public final void didAddTab(Tab tab, @TabLaunchType int type) { assert mNativeTabModelObserverJniBridge != 0; - nativeDidAddTab(mNativeTabModelObserverJniBridge, tab, type); + TabModelObserverJniBridgeJni.get().didAddTab( + mNativeTabModelObserverJniBridge, TabModelObserverJniBridge.this, tab, type); } @Override public final void didMoveTab(Tab tab, int newIndex, int curIndex) { assert mNativeTabModelObserverJniBridge != 0; - nativeDidMoveTab(mNativeTabModelObserverJniBridge, tab, newIndex, curIndex); + TabModelObserverJniBridgeJni.get().didMoveTab(mNativeTabModelObserverJniBridge, + TabModelObserverJniBridge.this, tab, newIndex, curIndex); } @Override public final void tabPendingClosure(Tab tab) { assert mNativeTabModelObserverJniBridge != 0; - nativeTabPendingClosure(mNativeTabModelObserverJniBridge, tab); + TabModelObserverJniBridgeJni.get().tabPendingClosure( + mNativeTabModelObserverJniBridge, TabModelObserverJniBridge.this, tab); } @Override public final void tabClosureUndone(Tab tab) { assert mNativeTabModelObserverJniBridge != 0; - nativeTabClosureUndone(mNativeTabModelObserverJniBridge, tab); + TabModelObserverJniBridgeJni.get().tabClosureUndone( + mNativeTabModelObserverJniBridge, TabModelObserverJniBridge.this, tab); } @Override public final void tabClosureCommitted(Tab tab) { assert mNativeTabModelObserverJniBridge != 0; - nativeTabClosureCommitted(mNativeTabModelObserverJniBridge, tab); + TabModelObserverJniBridgeJni.get().tabClosureCommitted( + mNativeTabModelObserverJniBridge, TabModelObserverJniBridge.this, tab); } @Override @@ -93,19 +103,22 @@ // Convert the List to an array of objects. This makes the corresponding C++ code much // easier. assert mNativeTabModelObserverJniBridge != 0; - nativeAllTabsPendingClosure(mNativeTabModelObserverJniBridge, tabs.toArray()); + TabModelObserverJniBridgeJni.get().allTabsPendingClosure( + mNativeTabModelObserverJniBridge, TabModelObserverJniBridge.this, tabs.toArray()); } @Override public final void allTabsClosureCommitted() { assert mNativeTabModelObserverJniBridge != 0; - nativeAllTabsClosureCommitted(mNativeTabModelObserverJniBridge); + TabModelObserverJniBridgeJni.get().allTabsClosureCommitted( + mNativeTabModelObserverJniBridge, TabModelObserverJniBridge.this); } @Override public final void tabRemoved(Tab tab) { assert mNativeTabModelObserverJniBridge != 0; - nativeTabRemoved(mNativeTabModelObserverJniBridge, tab); + TabModelObserverJniBridgeJni.get().tabRemoved( + mNativeTabModelObserverJniBridge, TabModelObserverJniBridge.this, tab); } @Override @@ -120,7 +133,7 @@ * @param tabModel The tab model to which the observer bridge will be associated. */ @CalledByNative - static private TabModelObserverJniBridge create( + private static TabModelObserverJniBridge create( long nativeTabModelObserverJniBridge, TabModel tabModel) { TabModelObserverJniBridge bridge = new TabModelObserverJniBridge(nativeTabModelObserverJniBridge, tabModel); @@ -144,21 +157,32 @@ // Native functions that are implemented by // browser/ui/android/tab_model/tab_model_observer_jni_bridge.*. - private native void nativeDidSelectTab( - long nativeTabModelObserverJniBridge, Tab tab, int type, int lastId); - private native void nativeWillCloseTab( - long nativeTabModelObserverJniBridge, Tab tab, boolean animate); - private native void nativeDidCloseTab( - long nativeTabModelObserverJniBridge, int tabId, boolean incognito); - private native void nativeWillAddTab(long nativeTabModelObserverJniBridge, Tab tab, int type); - private native void nativeDidAddTab(long nativeTabModelObserverJniBridge, Tab tab, int type); - private native void nativeDidMoveTab( - long nativeTabModelObserverJniBridge, Tab tab, int newIndex, int curIndex); - private native void nativeTabPendingClosure(long nativeTabModelObserverJniBridge, Tab tab); - private native void nativeTabClosureUndone(long nativeTabModelObserverJniBridge, Tab tab); - private native void nativeTabClosureCommitted(long nativeTabModelObserverJniBridge, Tab tab); - private native void nativeAllTabsPendingClosure( - long nativeTabModelObserverJniBridge, Object[] tabs); - private native void nativeAllTabsClosureCommitted(long nativeTabModelObserverJniBridge); - private native void nativeTabRemoved(long nativeTabModelObserverJniBridge, Tab tab); + @NativeMethods + interface Natives { + void didSelectTab(long nativeTabModelObserverJniBridge, TabModelObserverJniBridge caller, + Tab tab, int type, int lastId); + + void willCloseTab(long nativeTabModelObserverJniBridge, TabModelObserverJniBridge caller, + Tab tab, boolean animate); + void didCloseTab(long nativeTabModelObserverJniBridge, TabModelObserverJniBridge caller, + int tabId, boolean incognito); + void willAddTab(long nativeTabModelObserverJniBridge, TabModelObserverJniBridge caller, + Tab tab, int type); + void didAddTab(long nativeTabModelObserverJniBridge, TabModelObserverJniBridge caller, + Tab tab, int type); + void didMoveTab(long nativeTabModelObserverJniBridge, TabModelObserverJniBridge caller, + Tab tab, int newIndex, int curIndex); + void tabPendingClosure( + long nativeTabModelObserverJniBridge, TabModelObserverJniBridge caller, Tab tab); + void tabClosureUndone( + long nativeTabModelObserverJniBridge, TabModelObserverJniBridge caller, Tab tab); + void tabClosureCommitted( + long nativeTabModelObserverJniBridge, TabModelObserverJniBridge caller, Tab tab); + void allTabsPendingClosure(long nativeTabModelObserverJniBridge, + TabModelObserverJniBridge caller, Object[] tabs); + void allTabsClosureCommitted( + long nativeTabModelObserverJniBridge, TabModelObserverJniBridge caller); + void tabRemoved( + long nativeTabModelObserverJniBridge, TabModelObserverJniBridge caller, Tab tab); + } }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/LocationBarModel.java b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/LocationBarModel.java index 0e630773..e175584 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/LocationBarModel.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/LocationBarModel.java
@@ -14,6 +14,7 @@ import org.chromium.base.VisibleForTesting; import org.chromium.base.annotations.CalledByNative; +import org.chromium.base.annotations.NativeMethods; import org.chromium.chrome.R; import org.chromium.chrome.browser.ChromeFeatureList; import org.chromium.chrome.browser.ChromeTabbedActivity; @@ -70,7 +71,7 @@ * Handle any initialization that must occur after native has been initialized. */ public void initializeWithNative() { - mNativeLocationBarModelAndroid = nativeInit(); + mNativeLocationBarModelAndroid = LocationBarModelJni.get().init(LocationBarModel.this); } /** @@ -78,7 +79,7 @@ */ public void destroy() { if (mNativeLocationBarModelAndroid == 0) return; - nativeDestroy(mNativeLocationBarModelAndroid); + LocationBarModelJni.get().destroy(mNativeLocationBarModelAndroid, LocationBarModel.this); mNativeLocationBarModelAndroid = 0; } @@ -354,7 +355,8 @@ @Override public int getPageClassification(boolean isFocusedFromFakebox) { if (mNativeLocationBarModelAndroid == 0) return 0; - return nativeGetPageClassification(mNativeLocationBarModelAndroid, isFocusedFromFakebox); + return LocationBarModelJni.get().getPageClassification( + mNativeLocationBarModelAndroid, LocationBarModel.this, isFocusedFromFakebox); } @Override @@ -465,26 +467,32 @@ if (mNativeLocationBarModelAndroid == 0) return null; if (mTab != null && !(mTab.getActivity() instanceof ChromeTabbedActivity)) return null; if (isPreview()) return null; - return nativeGetDisplaySearchTerms(mNativeLocationBarModelAndroid); + return LocationBarModelJni.get().getDisplaySearchTerms( + mNativeLocationBarModelAndroid, LocationBarModel.this); } /** @return The formatted URL suitable for editing. */ public String getFormattedFullUrl() { if (mNativeLocationBarModelAndroid == 0) return ""; - return nativeGetFormattedFullURL(mNativeLocationBarModelAndroid); + return LocationBarModelJni.get().getFormattedFullURL( + mNativeLocationBarModelAndroid, LocationBarModel.this); } /** @return The formatted URL suitable for display only. */ public String getUrlForDisplay() { if (mNativeLocationBarModelAndroid == 0) return ""; - return nativeGetURLForDisplay(mNativeLocationBarModelAndroid); + return LocationBarModelJni.get().getURLForDisplay( + mNativeLocationBarModelAndroid, LocationBarModel.this); } - private native long nativeInit(); - private native void nativeDestroy(long nativeLocationBarModelAndroid); - private native String nativeGetFormattedFullURL(long nativeLocationBarModelAndroid); - private native String nativeGetURLForDisplay(long nativeLocationBarModelAndroid); - private native String nativeGetDisplaySearchTerms(long nativeLocationBarModelAndroid); - private native int nativeGetPageClassification( - long nativeLocationBarModelAndroid, boolean isFocusedFromFakebox); + @NativeMethods + interface Natives { + long init(LocationBarModel caller); + void destroy(long nativeLocationBarModelAndroid, LocationBarModel caller); + String getFormattedFullURL(long nativeLocationBarModelAndroid, LocationBarModel caller); + String getURLForDisplay(long nativeLocationBarModelAndroid, LocationBarModel caller); + String getDisplaySearchTerms(long nativeLocationBarModelAndroid, LocationBarModel caller); + int getPageClassification(long nativeLocationBarModelAndroid, LocationBarModel caller, + boolean isFocusedFromFakebox); + } }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/translate/TranslateBridge.java b/chrome/android/java/src/org/chromium/chrome/browser/translate/TranslateBridge.java index 1a11013..0ffe61b7 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/translate/TranslateBridge.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/translate/TranslateBridge.java
@@ -5,6 +5,7 @@ package org.chromium.chrome.browser.translate; import org.chromium.base.annotations.CalledByNative; +import org.chromium.base.annotations.NativeMethods; import org.chromium.chrome.browser.tab.Tab; import org.chromium.content_public.browser.WebContents; @@ -18,21 +19,21 @@ * Translates the given tab when the necessary state has been computed (e.g. source language). */ public static void translateTabWhenReady(Tab tab) { - nativeManualTranslateWhenReady(tab.getWebContents()); + TranslateBridgeJni.get().manualTranslateWhenReady(tab.getWebContents()); } /** * Returns true iff the current tab can be manually translated. */ public static boolean canManuallyTranslate(Tab tab) { - return nativeCanManuallyTranslate(tab.getWebContents()); + return TranslateBridgeJni.get().canManuallyTranslate(tab.getWebContents()); } /** * Returns true iff we're in a state where the manual translate IPH could be shown. */ public static boolean shouldShowManualTranslateIPH(Tab tab) { - return nativeShouldShowManualTranslateIPH(tab.getWebContents()); + return TranslateBridgeJni.get().shouldShowManualTranslateIPH(tab.getWebContents()); } /** @@ -42,19 +43,19 @@ * @param targetLanguage language code in ISO 639 format. */ public static void setPredefinedTargetLanguage(Tab tab, String targetLanguage) { - nativeSetPredefinedTargetLanguage(tab.getWebContents(), targetLanguage); + TranslateBridgeJni.get().setPredefinedTargetLanguage(tab.getWebContents(), targetLanguage); } /** * @return The best target language based on what the Translate Service knows about the user. */ public static String getTargetLanguage() { - return nativeGetTargetLanguage(); + return TranslateBridgeJni.get().getTargetLanguage(); } /** @return whether the given string is blocked for translation. */ public static boolean isBlockedLanguage(String language) { - return nativeIsBlockedLanguage(language); + return TranslateBridgeJni.get().isBlockedLanguage(language); } /** @@ -64,23 +65,28 @@ public static LinkedHashSet<String> getModelLanguages() { LinkedHashSet<String> set = new LinkedHashSet<String>(); // Calls back through addModelLanguageToSet repeatedly. - nativeGetModelLanguages(set); + TranslateBridgeJni.get().getModelLanguages(set); return set; } - /** Called by {@link #nativeGetModelLanguages} with the set to add to and the language to add.*/ + /** + * Called by {@link #TranslateBridgeJni.get().getModelLanguages} with the set to add to and the + * language to add. + */ @CalledByNative private static void addModelLanguageToSet( LinkedHashSet<String> languages, String languageCode) { languages.add(languageCode); } - private static native void nativeManualTranslateWhenReady(WebContents webContents); - private static native boolean nativeCanManuallyTranslate(WebContents webContents); - private static native boolean nativeShouldShowManualTranslateIPH(WebContents webContents); - private static native void nativeSetPredefinedTargetLanguage( - WebContents webContents, String targetLanguage); - private static native String nativeGetTargetLanguage(); - private static native boolean nativeIsBlockedLanguage(String language); - private static native void nativeGetModelLanguages(LinkedHashSet<String> set); + @NativeMethods + interface Natives { + void manualTranslateWhenReady(WebContents webContents); + boolean canManuallyTranslate(WebContents webContents); + boolean shouldShowManualTranslateIPH(WebContents webContents); + void setPredefinedTargetLanguage(WebContents webContents, String targetLanguage); + String getTargetLanguage(); + boolean isBlockedLanguage(String language); + void getModelLanguages(LinkedHashSet<String> set); + } }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/usage_stats/UsageStatsBridge.java b/chrome/android/java/src/org/chromium/chrome/browser/usage_stats/UsageStatsBridge.java index 422dea5..c04d024 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/usage_stats/UsageStatsBridge.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/usage_stats/UsageStatsBridge.java
@@ -7,6 +7,7 @@ import org.chromium.base.Callback; import org.chromium.base.annotations.CalledByNative; import org.chromium.base.annotations.JNINamespace; +import org.chromium.base.annotations.NativeMethods; import org.chromium.chrome.browser.profiles.Profile; import org.chromium.chrome.browser.usage_stats.WebsiteEventProtos.WebsiteEvent; @@ -33,20 +34,21 @@ * @param profile {@link Profile} of the user for whom we are tracking usage stats. */ public UsageStatsBridge(Profile profile, UsageStatsService usageStatsService) { - mNativeUsageStatsBridge = nativeInit(profile); + mNativeUsageStatsBridge = UsageStatsBridgeJni.get().init(UsageStatsBridge.this, profile); mUsageStatsService = usageStatsService; } /** Cleans up native side of this bridge. */ public void destroy() { assert mNativeUsageStatsBridge != 0; - nativeDestroy(mNativeUsageStatsBridge); + UsageStatsBridgeJni.get().destroy(mNativeUsageStatsBridge, UsageStatsBridge.this); mNativeUsageStatsBridge = 0; } public void getAllEvents(Callback<List<WebsiteEvent>> callback) { assert mNativeUsageStatsBridge != 0; - nativeGetAllEvents(mNativeUsageStatsBridge, callback); + UsageStatsBridgeJni.get().getAllEvents( + mNativeUsageStatsBridge, UsageStatsBridge.this, callback); } public void queryEventsInRange( @@ -54,7 +56,8 @@ assert mNativeUsageStatsBridge != 0; long startSeconds = TimeUnit.MILLISECONDS.toSeconds(startMs); long endSeconds = TimeUnit.MILLISECONDS.toSeconds(endMs); - nativeQueryEventsInRange(mNativeUsageStatsBridge, startSeconds, endSeconds, callback); + UsageStatsBridgeJni.get().queryEventsInRange( + mNativeUsageStatsBridge, UsageStatsBridge.this, startSeconds, endSeconds, callback); } public void addEvents(List<WebsiteEvent> events, Callback<Boolean> callback) { @@ -67,40 +70,46 @@ serializedEvents[i] = event.toByteArray(); } - nativeAddEvents(mNativeUsageStatsBridge, serializedEvents, callback); + UsageStatsBridgeJni.get().addEvents( + mNativeUsageStatsBridge, UsageStatsBridge.this, serializedEvents, callback); } public void deleteAllEvents(Callback<Boolean> callback) { assert mNativeUsageStatsBridge != 0; - nativeDeleteAllEvents(mNativeUsageStatsBridge, callback); + UsageStatsBridgeJni.get().deleteAllEvents( + mNativeUsageStatsBridge, UsageStatsBridge.this, callback); } public void deleteEventsInRange(long startMs, long endMs, Callback<Boolean> callback) { assert mNativeUsageStatsBridge != 0; long startSeconds = TimeUnit.MILLISECONDS.toSeconds(startMs); long endSeconds = TimeUnit.MILLISECONDS.toSeconds(endMs); - nativeDeleteEventsInRange(mNativeUsageStatsBridge, startSeconds, endSeconds, callback); + UsageStatsBridgeJni.get().deleteEventsInRange( + mNativeUsageStatsBridge, UsageStatsBridge.this, startSeconds, endSeconds, callback); } public void deleteEventsWithMatchingDomains(String[] domains, Callback<Boolean> callback) { assert mNativeUsageStatsBridge != 0; - nativeDeleteEventsWithMatchingDomains(mNativeUsageStatsBridge, domains, callback); + UsageStatsBridgeJni.get().deleteEventsWithMatchingDomains( + mNativeUsageStatsBridge, UsageStatsBridge.this, domains, callback); } public void getAllSuspensions(Callback<List<String>> callback) { assert mNativeUsageStatsBridge != 0; - nativeGetAllSuspensions(mNativeUsageStatsBridge, + UsageStatsBridgeJni.get().getAllSuspensions(mNativeUsageStatsBridge, UsageStatsBridge.this, arr -> { callback.onResult(new ArrayList<>(Arrays.asList(arr))); }); } public void setSuspensions(String[] domains, Callback<Boolean> callback) { assert mNativeUsageStatsBridge != 0; - nativeSetSuspensions(mNativeUsageStatsBridge, domains, callback); + UsageStatsBridgeJni.get().setSuspensions( + mNativeUsageStatsBridge, UsageStatsBridge.this, domains, callback); } public void getAllTokenMappings(Callback<Map<String, String>> callback) { assert mNativeUsageStatsBridge != 0; - nativeGetAllTokenMappings(mNativeUsageStatsBridge, callback); + UsageStatsBridgeJni.get().getAllTokenMappings( + mNativeUsageStatsBridge, UsageStatsBridge.this, callback); } public void setTokenMappings(Map<String, String> mappings, Callback<Boolean> callback) { @@ -118,7 +127,8 @@ i++; } - nativeSetTokenMappings(mNativeUsageStatsBridge, tokens, fqdns, callback); + UsageStatsBridgeJni.get().setTokenMappings( + mNativeUsageStatsBridge, UsageStatsBridge.this, tokens, fqdns, callback); } @CalledByNative @@ -165,26 +175,29 @@ mUsageStatsService.onHistoryDeletedForDomains(new ArrayList<>(Arrays.asList(fqdns))); } - private native long nativeInit(Profile profile); - private native void nativeDestroy(long nativeUsageStatsBridge); - private native void nativeGetAllEvents( - long nativeUsageStatsBridge, Callback<List<WebsiteEvent>> callback); - private native void nativeQueryEventsInRange(long nativeUsageStatsBridge, long start, long end, - Callback<List<WebsiteEvent>> callback); - private native void nativeAddEvents( - long nativeUsageStatsBridge, byte[][] events, Callback<Boolean> callback); - private native void nativeDeleteAllEvents( - long nativeUsageStatsBridge, Callback<Boolean> callback); - private native void nativeDeleteEventsInRange( - long nativeUsageStatsBridge, long start, long end, Callback<Boolean> callback); - private native void nativeDeleteEventsWithMatchingDomains( - long nativeUsageStatsBridge, String[] domains, Callback<Boolean> callback); - private native void nativeGetAllSuspensions( - long nativeUsageStatsBridge, Callback<String[]> callback); - private native void nativeSetSuspensions( - long nativeUsageStatsBridge, String[] domains, Callback<Boolean> callback); - private native void nativeGetAllTokenMappings( - long nativeUsageStatsBridge, Callback<Map<String, String>> callback); - private native void nativeSetTokenMappings(long nativeUsageStatsBridge, String[] tokens, - String[] fqdns, Callback<Boolean> callback); + @NativeMethods + interface Natives { + long init(UsageStatsBridge caller, Profile profile); + void destroy(long nativeUsageStatsBridge, UsageStatsBridge caller); + void getAllEvents(long nativeUsageStatsBridge, UsageStatsBridge caller, + Callback<List<WebsiteEvent>> callback); + void queryEventsInRange(long nativeUsageStatsBridge, UsageStatsBridge caller, long start, + long end, Callback<List<WebsiteEvent>> callback); + void addEvents(long nativeUsageStatsBridge, UsageStatsBridge caller, byte[][] events, + Callback<Boolean> callback); + void deleteAllEvents( + long nativeUsageStatsBridge, UsageStatsBridge caller, Callback<Boolean> callback); + void deleteEventsInRange(long nativeUsageStatsBridge, UsageStatsBridge caller, long start, + long end, Callback<Boolean> callback); + void deleteEventsWithMatchingDomains(long nativeUsageStatsBridge, UsageStatsBridge caller, + String[] domains, Callback<Boolean> callback); + void getAllSuspensions( + long nativeUsageStatsBridge, UsageStatsBridge caller, Callback<String[]> callback); + void setSuspensions(long nativeUsageStatsBridge, UsageStatsBridge caller, String[] domains, + Callback<Boolean> callback); + void getAllTokenMappings(long nativeUsageStatsBridge, UsageStatsBridge caller, + Callback<Map<String, String>> callback); + void setTokenMappings(long nativeUsageStatsBridge, UsageStatsBridge caller, String[] tokens, + String[] fqdns, Callback<Boolean> callback); + } }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/util/FeatureUtilities.java b/chrome/android/java/src/org/chromium/chrome/browser/util/FeatureUtilities.java index 88a98db..c4490d4e 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/util/FeatureUtilities.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/util/FeatureUtilities.java
@@ -26,6 +26,7 @@ import org.chromium.base.ThreadUtils; import org.chromium.base.VisibleForTesting; import org.chromium.base.annotations.CalledByNative; +import org.chromium.base.annotations.NativeMethods; import org.chromium.base.library_loader.LibraryLoader; import org.chromium.chrome.browser.ChromeFeatureList; import org.chromium.chrome.browser.ChromeSwitches; @@ -153,7 +154,7 @@ * @param visible Whether a custom tab is visible. */ public static void setCustomTabVisible(boolean visible) { - nativeSetCustomTabVisible(visible); + FeatureUtilitiesJni.get().setCustomTabVisible(visible); } /** @@ -161,7 +162,7 @@ * @param isInMultiWindowMode Whether the activity is in Android N multi-window mode. */ public static void setIsInMultiWindowMode(boolean isInMultiWindowMode) { - nativeSetIsInMultiWindowMode(isInMultiWindowMode); + FeatureUtilitiesJni.get().setIsInMultiWindowMode(isInMultiWindowMode); } /** @@ -648,7 +649,7 @@ private static void cacheNetworkServiceWarmUpEnabled() { ChromePreferenceManager.getInstance().writeBoolean( ChromePreferenceManager.NETWORK_SERVICE_WARM_UP_ENABLED_KEY, - nativeIsNetworkServiceWarmUpEnabled()); + FeatureUtilitiesJni.get().isNetworkServiceWarmUpEnabled()); } /** @@ -786,7 +787,10 @@ } } - private static native void nativeSetCustomTabVisible(boolean visible); - private static native void nativeSetIsInMultiWindowMode(boolean isInMultiWindowMode); - private static native boolean nativeIsNetworkServiceWarmUpEnabled(); + @NativeMethods + interface Natives { + void setCustomTabVisible(boolean visible); + void setIsInMultiWindowMode(boolean isInMultiWindowMode); + boolean isNetworkServiceWarmUpEnabled(); + } }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/vr/ArCoreJavaUtils.java b/chrome/android/java/src/org/chromium/chrome/browser/vr/ArCoreJavaUtils.java index 4721855..512cc6f 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/vr/ArCoreJavaUtils.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/vr/ArCoreJavaUtils.java
@@ -15,6 +15,7 @@ import org.chromium.base.ThreadUtils; import org.chromium.base.annotations.CalledByNative; import org.chromium.base.annotations.JNINamespace; +import org.chromium.base.annotations.NativeMethods; import org.chromium.chrome.browser.tab.Tab; /** @@ -76,20 +77,23 @@ public void onDrawingSurfaceReady(Surface surface, int rotation, int width, int height) { if (DEBUG_LOGS) Log.i(TAG, "onDrawingSurfaceReady"); if (mNativeArCoreJavaUtils == 0) return; - nativeOnDrawingSurfaceReady(mNativeArCoreJavaUtils, surface, rotation, width, height); + ArCoreJavaUtilsJni.get().onDrawingSurfaceReady( + mNativeArCoreJavaUtils, ArCoreJavaUtils.this, surface, rotation, width, height); } public void onDrawingSurfaceTouch(boolean isTouching, float x, float y) { if (DEBUG_LOGS) Log.i(TAG, "onDrawingSurfaceTouch"); if (mNativeArCoreJavaUtils == 0) return; - nativeOnDrawingSurfaceTouch(mNativeArCoreJavaUtils, isTouching, x, y); + ArCoreJavaUtilsJni.get().onDrawingSurfaceTouch( + mNativeArCoreJavaUtils, ArCoreJavaUtils.this, isTouching, x, y); } public void onDrawingSurfaceDestroyed() { if (DEBUG_LOGS) Log.i(TAG, "onDrawingSurfaceDestroyed"); if (mNativeArCoreJavaUtils == 0) return; mArImmersiveOverlay = null; - nativeOnDrawingSurfaceDestroyed(mNativeArCoreJavaUtils); + ArCoreJavaUtilsJni.get().onDrawingSurfaceDestroyed( + mNativeArCoreJavaUtils, ArCoreJavaUtils.this); } @CalledByNative @@ -97,9 +101,12 @@ mNativeArCoreJavaUtils = 0; } - private native void nativeOnDrawingSurfaceReady( - long nativeArCoreJavaUtils, Surface surface, int rotation, int width, int height); - private native void nativeOnDrawingSurfaceTouch( - long nativeArCoreJavaUtils, boolean touching, float x, float y); - private native void nativeOnDrawingSurfaceDestroyed(long nativeArCoreJavaUtils); + @NativeMethods + interface Natives { + void onDrawingSurfaceReady(long nativeArCoreJavaUtils, ArCoreJavaUtils caller, + Surface surface, int rotation, int width, int height); + void onDrawingSurfaceTouch(long nativeArCoreJavaUtils, ArCoreJavaUtils caller, + boolean touching, float x, float y); + void onDrawingSurfaceDestroyed(long nativeArCoreJavaUtils, ArCoreJavaUtils caller); + } }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebApkInstaller.java b/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebApkInstaller.java index 5f34856..dbd2c1b 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebApkInstaller.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebApkInstaller.java
@@ -10,6 +10,7 @@ import org.chromium.base.ContextUtils; import org.chromium.base.PackageUtils; import org.chromium.base.annotations.CalledByNative; +import org.chromium.base.annotations.NativeMethods; import org.chromium.base.task.AsyncTask; import org.chromium.chrome.browser.AppHooks; import org.chromium.chrome.browser.metrics.WebApkUma; @@ -94,7 +95,8 @@ private void notify(@WebApkInstallResult int result) { if (mNativePointer != 0) { - nativeOnInstallFinished(mNativePointer, result); + WebApkInstallerJni.get().onInstallFinished( + mNativePointer, WebApkInstaller.this, result); } } @@ -140,7 +142,8 @@ @Override protected void onPostExecute(Integer result) { - nativeOnGotSpaceStatus(mNativePointer, result); + WebApkInstallerJni.get().onGotSpaceStatus( + mNativePointer, WebApkInstaller.this, result); } } .executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); @@ -150,7 +153,10 @@ return PackageUtils.isPackageInstalled(ContextUtils.getApplicationContext(), packageName); } - private native void nativeOnInstallFinished( - long nativeWebApkInstaller, @WebApkInstallResult int result); - private native void nativeOnGotSpaceStatus(long nativeWebApkInstaller, int status); + @NativeMethods + interface Natives { + void onInstallFinished(long nativeWebApkInstaller, WebApkInstaller caller, + @WebApkInstallResult int result); + void onGotSpaceStatus(long nativeWebApkInstaller, WebApkInstaller caller, int status); + } }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebApkUkmRecorder.java b/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebApkUkmRecorder.java index 705b1c1..38d8cbd5 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebApkUkmRecorder.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebApkUkmRecorder.java
@@ -3,6 +3,7 @@ // found in the LICENSE file. package org.chromium.chrome.browser.webapps; +import org.chromium.base.annotations.NativeMethods; /** * A class to record User Keyed Metrics relevant to WebAPKs. This @@ -15,7 +16,8 @@ */ public static void recordWebApkSessionDuration(String manifestUrl, @WebApkDistributor int distributor, int versionCode, long duration) { - nativeRecordSessionDuration(manifestUrl, distributor, versionCode, duration); + WebApkUkmRecorderJni.get().recordSessionDuration( + manifestUrl, distributor, versionCode, duration); } /** @@ -23,11 +25,13 @@ */ public static void recordWebApkLaunch( String manifestUrl, @WebApkDistributor int distributor, int versionCode, int source) { - nativeRecordVisit(manifestUrl, distributor, versionCode, source); + WebApkUkmRecorderJni.get().recordVisit(manifestUrl, distributor, versionCode, source); } - private static native void nativeRecordSessionDuration( - String manifestUrl, int distributor, int versionCode, long duration); - private static native void nativeRecordVisit( - String manifestUrl, int distributor, int versionCode, int source); + @NativeMethods + interface Natives { + void recordSessionDuration( + String manifestUrl, int distributor, int versionCode, long duration); + void recordVisit(String manifestUrl, int distributor, int versionCode, int source); + } }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebApkUpdateDataFetcher.java b/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebApkUpdateDataFetcher.java index 3624408..affa42cd 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebApkUpdateDataFetcher.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebApkUpdateDataFetcher.java
@@ -10,6 +10,7 @@ import org.chromium.base.ContextUtils; import org.chromium.base.annotations.CalledByNative; +import org.chromium.base.annotations.NativeMethods; import org.chromium.blink_public.platform.WebDisplayMode; import org.chromium.chrome.browser.tab.EmptyTabObserver; import org.chromium.chrome.browser.tab.Tab; @@ -62,8 +63,10 @@ mObserver = observer; mTab.addObserver(this); - mNativePointer = nativeInitialize(mOldInfo.scopeUrl(), mOldInfo.manifestUrl()); - nativeStart(mNativePointer, mTab.getWebContents()); + mNativePointer = WebApkUpdateDataFetcherJni.get().initialize( + WebApkUpdateDataFetcher.this, mOldInfo.scopeUrl(), mOldInfo.manifestUrl()); + WebApkUpdateDataFetcherJni.get().start( + mNativePointer, WebApkUpdateDataFetcher.this, mTab.getWebContents()); return true; } @@ -72,7 +75,7 @@ */ public void destroy() { mTab.removeObserver(this); - nativeDestroy(mNativePointer); + WebApkUpdateDataFetcherJni.get().destroy(mNativePointer, WebApkUpdateDataFetcher.this); mNativePointer = 0; } @@ -91,7 +94,8 @@ * Updates which WebContents the native WebApkUpdateDataFetcher is monitoring. */ private void updatePointers() { - nativeReplaceWebContents(mNativePointer, mTab.getWebContents()); + WebApkUpdateDataFetcherJni.get().replaceWebContents( + mNativePointer, WebApkUpdateDataFetcher.this, mTab.getWebContents()); } /** @@ -138,9 +142,13 @@ mObserver.onGotManifestData(info, primaryIconUrl, badgeIconUrl); } - private native long nativeInitialize(String scope, String webManifestUrl); - private native void nativeReplaceWebContents( - long nativeWebApkUpdateDataFetcher, WebContents webContents); - private native void nativeDestroy(long nativeWebApkUpdateDataFetcher); - private native void nativeStart(long nativeWebApkUpdateDataFetcher, WebContents webContents); + @NativeMethods + interface Natives { + long initialize(WebApkUpdateDataFetcher caller, String scope, String webManifestUrl); + void replaceWebContents(long nativeWebApkUpdateDataFetcher, WebApkUpdateDataFetcher caller, + WebContents webContents); + void destroy(long nativeWebApkUpdateDataFetcher, WebApkUpdateDataFetcher caller); + void start(long nativeWebApkUpdateDataFetcher, WebApkUpdateDataFetcher caller, + WebContents webContents); + } }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/webapps/addtohomescreen/AddToHomescreenManager.java b/chrome/android/java/src/org/chromium/chrome/browser/webapps/addtohomescreen/AddToHomescreenManager.java index 5fd3ed0..d82ef0c6 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/webapps/addtohomescreen/AddToHomescreenManager.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/webapps/addtohomescreen/AddToHomescreenManager.java
@@ -10,6 +10,7 @@ import android.text.TextUtils; import org.chromium.base.annotations.CalledByNative; +import org.chromium.base.annotations.NativeMethods; import org.chromium.chrome.browser.tab.Tab; import org.chromium.content_public.browser.WebContents; @@ -38,7 +39,8 @@ // Don't start if we've already started or if there is no visible URL to add. if (mNativeAddToHomescreenManager != 0 || TextUtils.isEmpty(mTab.getUrl())) return; - mNativeAddToHomescreenManager = nativeInitializeAndStart(mTab.getWebContents()); + mNativeAddToHomescreenManager = AddToHomescreenManagerJni.get().initializeAndStart( + AddToHomescreenManager.this, mTab.getWebContents()); } /** @@ -48,7 +50,8 @@ mDialog = null; if (mNativeAddToHomescreenManager == 0) return; - nativeDestroy(mNativeAddToHomescreenManager); + AddToHomescreenManagerJni.get().destroy( + mNativeAddToHomescreenManager, AddToHomescreenManager.this); mNativeAddToHomescreenManager = 0; } @@ -60,7 +63,8 @@ public void addToHomescreen(String userRequestedTitle) { assert mNativeAddToHomescreenManager != 0; - nativeAddToHomescreen(mNativeAddToHomescreenManager, userRequestedTitle); + AddToHomescreenManagerJni.get().addToHomescreen( + mNativeAddToHomescreenManager, AddToHomescreenManager.this, userRequestedTitle); } @Override @@ -103,8 +107,11 @@ } } - private native long nativeInitializeAndStart(WebContents webContents); - private native void nativeAddToHomescreen( - long nativeAddToHomescreenManager, String userRequestedTitle); - private native void nativeDestroy(long nativeAddToHomescreenManager); + @NativeMethods + interface Natives { + long initializeAndStart(AddToHomescreenManager caller, WebContents webContents); + void addToHomescreen(long nativeAddToHomescreenManager, AddToHomescreenManager caller, + String userRequestedTitle); + void destroy(long nativeAddToHomescreenManager, AddToHomescreenManager caller); + } }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/widget/ThumbnailGenerator.java b/chrome/android/java/src/org/chromium/chrome/browser/widget/ThumbnailGenerator.java index 03fd0fa..561630a 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/widget/ThumbnailGenerator.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/widget/ThumbnailGenerator.java
@@ -13,6 +13,7 @@ import org.chromium.base.ThreadUtils; import org.chromium.base.VisibleForTesting; import org.chromium.base.annotations.CalledByNative; +import org.chromium.base.annotations.NativeMethods; /** * This class generates thumbnails for a given {@link ThumbnailRequest} by calling the native @@ -27,7 +28,7 @@ private long getNativeThumbnailGenerator() { if (mNativeThumbnailGenerator == 0) { - mNativeThumbnailGenerator = nativeInit(); + mNativeThumbnailGenerator = ThumbnailGeneratorJni.get().init(ThumbnailGenerator.this); } return mNativeThumbnailGenerator; } @@ -42,8 +43,9 @@ ThreadUtils.assertOnUiThread(); boolean hasFilePath = !TextUtils.isEmpty(request.getFilePath()); assert hasFilePath; - nativeRetrieveThumbnail(getNativeThumbnailGenerator(), request.getContentId(), - request.getFilePath(), request.getMimeType(), request.getIconSize(), callback); + ThumbnailGeneratorJni.get().retrieveThumbnail(getNativeThumbnailGenerator(), + ThumbnailGenerator.this, request.getContentId(), request.getFilePath(), + request.getMimeType(), request.getIconSize(), callback); } /** @@ -52,7 +54,7 @@ public void destroy() { ThreadUtils.assertOnUiThread(); if (mNativeThumbnailGenerator == 0) return; - nativeDestroy(mNativeThumbnailGenerator); + ThumbnailGeneratorJni.get().destroy(mNativeThumbnailGenerator, ThumbnailGenerator.this); mNativeThumbnailGenerator = 0; } @@ -78,9 +80,12 @@ callback.onThumbnailRetrieved(contentId, bitmap, requestedIconSizePx); } - private native long nativeInit(); - private native void nativeDestroy(long nativeThumbnailGenerator); - private native void nativeRetrieveThumbnail(long nativeThumbnailGenerator, String contentId, - String filePath, String mimeType, int thumbnailSize, - ThumbnailGeneratorCallback callback); + @NativeMethods + interface Natives { + long init(ThumbnailGenerator caller); + void destroy(long nativeThumbnailGenerator, ThumbnailGenerator caller); + void retrieveThumbnail(long nativeThumbnailGenerator, ThumbnailGenerator caller, + String contentId, String filePath, String mimeType, int thumbnailSize, + ThumbnailGeneratorCallback callback); + } }
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/contacts_picker/ContactsPickerDialogTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/contacts_picker/ContactsPickerDialogTest.java index 4ead758..5d1bb88e 100644 --- a/chrome/android/javatests/src/org/chromium/chrome/browser/contacts_picker/ContactsPickerDialogTest.java +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/contacts_picker/ContactsPickerDialogTest.java
@@ -22,6 +22,7 @@ import org.chromium.base.test.util.CallbackHelper; import org.chromium.base.test.util.CommandLineFlags; +import org.chromium.base.test.util.DisabledTest; import org.chromium.chrome.R; import org.chromium.chrome.browser.ChromeActivity; import org.chromium.chrome.browser.ChromeFeatureList; @@ -447,6 +448,7 @@ @Test @LargeTest + @DisabledTest(message = "https://crbug.com/1004762") public void testPropertiesRequested() throws Throwable { // Create a dialog showing names only. createDialog(/* multiselect = */ false, /* includeNames = */ true,
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/sync/SyncTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/sync/SyncTest.java index 99ffc1a..91c1d1e 100644 --- a/chrome/android/javatests/src/org/chromium/chrome/browser/sync/SyncTest.java +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/sync/SyncTest.java
@@ -71,7 +71,7 @@ Assert.assertFalse(SyncTestUtil.isSyncRequested()); // Signing back in should re-enable sync. - mSyncTestRule.signIn(account); + mSyncTestRule.signinAndEnableSync(account); SyncTestUtil.waitForSyncActive(); }
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/sync/SyncTestRule.java b/chrome/android/javatests/src/org/chromium/chrome/browser/sync/SyncTestRule.java index a9cf7a5c..f66174ab 100644 --- a/chrome/android/javatests/src/org/chromium/chrome/browser/sync/SyncTestRule.java +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/sync/SyncTestRule.java
@@ -14,12 +14,15 @@ import org.junit.runners.model.Statement; import org.chromium.chrome.browser.ChromeActivity; +import org.chromium.chrome.browser.ChromeFeatureList; +import org.chromium.chrome.browser.SyncFirstSetupCompleteSource; import org.chromium.chrome.browser.autofill.PersonalDataManager; import org.chromium.chrome.browser.autofill.PersonalDataManager.CreditCard; import org.chromium.chrome.browser.identity.UniqueIdentificationGenerator; import org.chromium.chrome.browser.identity.UniqueIdentificationGeneratorFactory; import org.chromium.chrome.browser.identity.UuidBasedUniqueIdentificationGenerator; import org.chromium.chrome.browser.signin.IdentityServicesProvider; +import org.chromium.chrome.browser.signin.SigninManager; import org.chromium.chrome.browser.signin.UnifiedConsentServiceBridge; import org.chromium.chrome.test.ChromeActivityTestRule; import org.chromium.chrome.test.util.browser.signin.SigninTestUtil; @@ -135,7 +138,7 @@ public Account setUpTestAccountAndSignIn() { Account account = setUpTestAccount(); - signIn(account); + signinAndEnableSync(account); return account; } @@ -153,9 +156,24 @@ InstrumentationRegistry.getInstrumentation().waitForIdleSync(); } - public void signIn(final Account account) { + public void signinAndEnableSync(final Account account) { TestThreadUtils.runOnUiThreadBlocking(() -> { - IdentityServicesProvider.getSigninManager().signIn(account, null, null); + IdentityServicesProvider.getSigninManager().signIn( + account, null, new SigninManager.SignInCallback() { + @Override + public void onSignInComplete() { + if (ChromeFeatureList.isEnabled( + ChromeFeatureList.SYNC_MANUAL_START_ANDROID)) { + mProfileSyncService.setFirstSetupComplete( + SyncFirstSetupCompleteSource.BASIC_FLOW); + } + } + + @Override + public void onSignInAborted() { + Assert.fail("Sign-in was aborted"); + } + }); // Outside of tests, URL-keyed anonymized data collection is enabled by sign-in UI. UnifiedConsentServiceBridge.setUrlKeyedAnonymizedDataCollectionEnabled(true); });
diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources.grd index 63af61f..b1d0b3a 100644 --- a/chrome/app/generated_resources.grd +++ b/chrome/app/generated_resources.grd
@@ -2492,7 +2492,7 @@ <message name="IDS_COOKIE_CONTROLS_TURN_ON_BUTTON" desc="Label shown on a button that turns cookie blocking on after it was disabled for a specific site."> Turn on </message> - <message name="IDS_COOKIE_CONTROLS_TURN_OFF_BUTTON" desc="Label shown on a button that turns of cookie blocking for a specific site."> + <message name="IDS_COOKIE_CONTROLS_TURN_OFF_BUTTON" desc="Label shown on a button that turns off cookie blocking for a specific site."> Turn off for this site </message> <message name="IDS_COOKIE_CONTROLS_BLOCKED_MESSAGE" desc="Text shown in the dialog that allows users to control cookie blocking. Shows the number of sites for which cookies have been blocked.">
diff --git a/chrome/app/settings_strings.grdp b/chrome/app/settings_strings.grdp index 21d993e..c53e2e04 100644 --- a/chrome/app/settings_strings.grdp +++ b/chrome/app/settings_strings.grdp
@@ -3905,13 +3905,13 @@ Add account </message> <message name="IDS_SETTINGS_ACCOUNT_MANAGER_DESCRIPTION" desc="Description of the Account Manager Settings page. Shown just below the title of the page."> - Manage your signed-in Google Accounts. Websites, apps, and extensions in Chrome and Google Play may use these accounts to customize your experience, depending on permissions. + Manage your signed-in accounts. Websites, apps, and extensions in Chrome and Google Play may use these accounts to customize your experience, depending on permissions. </message> <message name="IDS_SETTINGS_ACCOUNT_MANAGER_LIST_HEADER" desc="List header for Account List in Account Manager Settings page."> Accounts </message> <message name="IDS_SETTINGS_ACCOUNT_MANAGER_PAGE_TITLE" desc="Title of Account Manager Settings page."> - Google Accounts + My accounts </message> <message name="IDS_SETTINGS_ACCOUNT_MANAGER_SUBMENU_LABEL" desc="Label of Account Manager submenu in Settings page."> Google Accounts
diff --git a/chrome/app/settings_strings_grdp/IDS_SETTINGS_ACCOUNT_MANAGER_DESCRIPTION.png.sha1 b/chrome/app/settings_strings_grdp/IDS_SETTINGS_ACCOUNT_MANAGER_DESCRIPTION.png.sha1 index 12dbf1d..92056f5 100644 --- a/chrome/app/settings_strings_grdp/IDS_SETTINGS_ACCOUNT_MANAGER_DESCRIPTION.png.sha1 +++ b/chrome/app/settings_strings_grdp/IDS_SETTINGS_ACCOUNT_MANAGER_DESCRIPTION.png.sha1
@@ -1 +1 @@ -13150cd24a0c5a68defce4422aa8c1bce98966d6 \ No newline at end of file +822e36f9f65353e46f311c47143a3bbf9dcb6922 \ No newline at end of file
diff --git a/chrome/app/settings_strings_grdp/IDS_SETTINGS_ACCOUNT_MANAGER_PAGE_TITLE.png.sha1 b/chrome/app/settings_strings_grdp/IDS_SETTINGS_ACCOUNT_MANAGER_PAGE_TITLE.png.sha1 new file mode 100644 index 0000000..77d4536 --- /dev/null +++ b/chrome/app/settings_strings_grdp/IDS_SETTINGS_ACCOUNT_MANAGER_PAGE_TITLE.png.sha1
@@ -0,0 +1 @@ +d305b163282c69226376425c5cbe9ed103d566f2 \ No newline at end of file
diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc index 2aaedda5..da6838f8 100644 --- a/chrome/browser/about_flags.cc +++ b/chrome/browser/about_flags.cc
@@ -4535,6 +4535,10 @@ FEATURE_VALUE_TYPE( autofill::features::kAutofillAlwaysReturnCloudTokenizedCard)}, + {"back-forward-cache", flag_descriptions::kBackForwardCacheName, + flag_descriptions::kBackForwardCacheDescription, kOsAll, + FEATURE_VALUE_TYPE(features::kBackForwardCache)}, + // NOTE: Adding a new flag requires adding a corresponding entry to enum // "LoginCustomFlags" in tools/metrics/histograms/enums.xml. See "Flag // Histograms" in tools/metrics/histograms/README.md (run the
diff --git a/chrome/browser/android/vr/gvr_input_delegate.cc b/chrome/browser/android/vr/gvr_input_delegate.cc index e6266e6b..91407a9 100644 --- a/chrome/browser/android/vr/gvr_input_delegate.cc +++ b/chrome/browser/android/vr/gvr_input_delegate.cc
@@ -186,7 +186,7 @@ controller_->GetRelativePointerTransform(&pointer); state->description->pointer_offset = pointer; - state->description->profiles.push_back("daydream-controller"); + state->description->profiles.push_back("google-daydream"); // This Gamepad data is used to expose touchpad position to WebXR. state->gamepad = CreateGamepad(controller_->GetGamepadData());
diff --git a/chrome/browser/autofill/manual_filling_controller_impl_unittest.cc b/chrome/browser/autofill/manual_filling_controller_impl_unittest.cc index 0a8fc6ff..9dee48f 100644 --- a/chrome/browser/autofill/manual_filling_controller_impl_unittest.cc +++ b/chrome/browser/autofill/manual_filling_controller_impl_unittest.cc
@@ -12,6 +12,7 @@ #include "base/bind.h" #include "base/callback.h" #include "base/optional.h" +#include "base/run_loop.h" #include "base/strings/utf_string_conversions.h" #include "base/test/mock_callback.h" #include "base/test/scoped_feature_list.h" @@ -22,16 +23,15 @@ #include "chrome/browser/autofill/mock_password_accessory_controller.h" #include "chrome/browser/password_manager/password_accessory_controller.h" #include "chrome/browser/password_manager/touch_to_fill_controller.h" -#include "chrome/test/base/chrome_render_view_host_test_harness.h" +#include "chrome/test/base/testing_profile.h" #include "components/autofill/core/common/autofill_features.h" #include "components/favicon/core/test/mock_favicon_service.h" #include "components/password_manager/core/common/password_manager_features.h" +#include "content/public/test/browser_task_environment.h" +#include "content/public/test/test_web_contents_factory.h" #include "testing/gmock/include/gmock/gmock.h" #include "testing/gtest/include/gtest/gtest.h" -// TODO(crbug/1004585) Crashes on Android -#if !defined(OS_ANDROID) - namespace { using autofill::AccessoryAction; using autofill::AccessorySheetData; @@ -62,20 +62,16 @@ } // namespace -class ManualFillingControllerTest : public ChromeRenderViewHostTestHarness { +class ManualFillingControllerTest : public testing::Test { public: ManualFillingControllerTest() = default; void SetUp() override { - ChromeRenderViewHostTestHarness::SetUp(); - NavigateAndCommit(GURL(kExampleSite)); - touch_to_fill_controller_.emplace(web_contents()); ManualFillingControllerImpl::CreateForWebContentsForTesting( web_contents(), favicon_service(), mock_pwd_controller_.AsWeakPtr(), mock_address_controller_.AsWeakPtr(), mock_cc_controller_.AsWeakPtr(), - touch_to_fill_controller_->AsWeakPtr(), + touch_to_fill_controller_.AsWeakPtr(), std::make_unique<NiceMock<MockManualFillingView>>()); - NavigateAndCommit(GURL(kExampleSite)); } void FocusFieldAndClearExpectations(FocusedFieldType fieldType) { @@ -100,17 +96,24 @@ return mock_favicon_service_.get(); } + content::WebContents* web_contents() { return web_contents_; } + MockManualFillingView* view() { return static_cast<MockManualFillingView*>(controller()->view()); } protected: + content::BrowserTaskEnvironment task_environment_; + TestingProfile profile_; + content::TestWebContentsFactory web_contents_factory_; + content::WebContents* web_contents_ = + web_contents_factory_.CreateWebContents(&profile_); + NiceMock<MockPasswordAccessoryController> mock_pwd_controller_; NiceMock<MockAddressAccessoryController> mock_address_controller_; NiceMock<MockCreditCardAccessoryController> mock_cc_controller_; - // Constructing a TouchToFillController needs a valid WebContents. Use a - // base::Optional to be able to delay the construction. - base::Optional<TouchToFillController> touch_to_fill_controller_; + TouchToFillController touch_to_fill_controller_{web_contents_}; + std::unique_ptr<StrictMock<favicon::MockFaviconService>> mock_favicon_service_ = std::make_unique<StrictMock<favicon::MockFaviconService>>(); @@ -349,5 +352,3 @@ base::RunLoop().RunUntilIdle(); } - -#endif // !defined(OS_ANDROID)
diff --git a/chrome/browser/chromeos/BUILD.gn b/chrome/browser/chromeos/BUILD.gn index caddacda..563aeb3 100644 --- a/chrome/browser/chromeos/BUILD.gn +++ b/chrome/browser/chromeos/BUILD.gn
@@ -1929,6 +1929,8 @@ "printing/history/print_job_history_service.h", "printing/history/print_job_history_service_factory.cc", "printing/history/print_job_history_service_factory.h", + "printing/history/print_job_history_service_impl.cc", + "printing/history/print_job_history_service_impl.h", "printing/history/print_job_info_conversions.cc", "printing/history/print_job_info_conversions.h", "printing/ppd_provider_factory.cc", @@ -2742,8 +2744,10 @@ "printing/automatic_usb_printer_configurer_unittest.cc", "printing/bulk_printers_calculator_unittest.cc", "printing/cups_printers_manager_unittest.cc", + "printing/history/mock_print_job_history_service.cc", + "printing/history/mock_print_job_history_service.h", "printing/history/print_job_database_impl_unittest.cc", - "printing/history/print_job_history_service_unittest.cc", + "printing/history/print_job_history_service_impl_unittest.cc", "printing/history/print_job_info_conversions_unittest.cc", "printing/history/test_print_job_database.cc", "printing/history/test_print_job_database.h",
diff --git a/chrome/browser/chromeos/crostini/crostini_manager.cc b/chrome/browser/chromeos/crostini/crostini_manager.cc index 8e0f1d6..12d5ef29 100644 --- a/chrome/browser/chromeos/crostini/crostini_manager.cc +++ b/chrome/browser/chromeos/crostini/crostini_manager.cc
@@ -71,19 +71,6 @@ return chromeos::DBusThreadManager::Get()->GetConciergeClient(); } -void OnConciergeServiceAvailable(CrostiniManager::BoolCallback callback, - bool success) { - if (!success) { - LOG(ERROR) << "Concierge service did not become available"; - std::move(callback).Run(success); - return; - } - VLOG(1) << "Concierge service announced availability"; - VLOG(1) << "Waiting for Cicerone to announce availability."; - - GetCiceroneClient()->WaitForServiceToBeAvailable(std::move(callback)); -} - // Find any callbacks for the specified |vm_name|, invoke them with // |arguments|... and erase them from the map. template <typename... Parameters, typename... Arguments> @@ -849,10 +836,9 @@ return; } VLOG(1) << "Concierge service started"; - VLOG(1) << "Waiting for Concierge to announce availability."; + VLOG(1) << "Waiting for Cicerone to announce availability."; - GetConciergeClient()->WaitForServiceToBeAvailable( - base::BindOnce(&OnConciergeServiceAvailable, std::move(callback))); + GetCiceroneClient()->WaitForServiceToBeAvailable(std::move(callback)); } void CrostiniManager::StopConcierge(BoolCallback callback) {
diff --git a/chrome/browser/chromeos/login/screens/hid_detection_screen.cc b/chrome/browser/chromeos/login/screens/hid_detection_screen.cc index cd8e527..4f7704d 100644 --- a/chrome/browser/chromeos/login/screens/hid_detection_screen.cc +++ b/chrome/browser/chromeos/login/screens/hid_detection_screen.cc
@@ -486,8 +486,8 @@ DCHECK_CURRENTLY_ON(content::BrowserThread::UI); service_manager::Connector* connector = content::GetSystemConnector(); DCHECK(connector); - connector->BindInterface(device::mojom::kServiceName, - mojo::MakeRequest(&input_device_manager_)); + connector->Connect(device::mojom::kServiceName, + input_device_manager_.BindNewPipeAndPassReceiver()); } void HIDDetectionScreen::OnGetInputDevicesListForCheck(
diff --git a/chrome/browser/chromeos/login/screens/hid_detection_screen.h b/chrome/browser/chromeos/login/screens/hid_detection_screen.h index 3b9f79b..032465e18 100644 --- a/chrome/browser/chromeos/login/screens/hid_detection_screen.h +++ b/chrome/browser/chromeos/login/screens/hid_detection_screen.h
@@ -21,6 +21,7 @@ #include "device/bluetooth/bluetooth_device.h" #include "device/bluetooth/bluetooth_discovery_session.h" #include "mojo/public/cpp/bindings/associated_binding.h" +#include "mojo/public/cpp/bindings/remote.h" #include "services/device/public/mojom/input_service.mojom.h" namespace chromeos { @@ -198,7 +199,7 @@ // Default bluetooth adapter, used for all operations. scoped_refptr<device::BluetoothAdapter> adapter_; - device::mojom::InputDeviceManagerPtr input_device_manager_; + mojo::Remote<device::mojom::InputDeviceManager> input_device_manager_; mojo::AssociatedBinding<device::mojom::InputDeviceManagerClient> binding_;
diff --git a/chrome/browser/chromeos/printing/history/mock_print_job_history_service.cc b/chrome/browser/chromeos/printing/history/mock_print_job_history_service.cc new file mode 100644 index 0000000..054b578 --- /dev/null +++ b/chrome/browser/chromeos/printing/history/mock_print_job_history_service.cc
@@ -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. + +#include "chrome/browser/chromeos/printing/history/mock_print_job_history_service.h" + +namespace chromeos { + +MockPrintJobHistoryService::MockPrintJobHistoryService() = default; + +MockPrintJobHistoryService::~MockPrintJobHistoryService() = default; + +void MockPrintJobHistoryService::SavePrintJobProto( + const printing::proto::PrintJobInfo& print_job_info) { + for (auto& observer : observers_) { + observer.OnPrintJobFinished(print_job_info); + } +} + +} // namespace chromeos
diff --git a/chrome/browser/chromeos/printing/history/mock_print_job_history_service.h b/chrome/browser/chromeos/printing/history/mock_print_job_history_service.h new file mode 100644 index 0000000..8802e50 --- /dev/null +++ b/chrome/browser/chromeos/printing/history/mock_print_job_history_service.h
@@ -0,0 +1,29 @@ +// 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 CHROME_BROWSER_CHROMEOS_PRINTING_HISTORY_MOCK_PRINT_JOB_HISTORY_SERVICE_H_ +#define CHROME_BROWSER_CHROMEOS_PRINTING_HISTORY_MOCK_PRINT_JOB_HISTORY_SERVICE_H_ + +#include "base/callback.h" +#include "chrome/browser/chromeos/printing/history/print_job_history_service.h" +#include "testing/gmock/include/gmock/gmock.h" + +namespace chromeos { + +class MockPrintJobHistoryService : public PrintJobHistoryService { + public: + MockPrintJobHistoryService(); + ~MockPrintJobHistoryService() override; + + void SavePrintJobProto(const printing::proto::PrintJobInfo& print_job_info); + + MOCK_METHOD(void, + GetPrintJobs, + (PrintJobDatabase::GetPrintJobsCallback callback), + (override)); +}; + +} // namespace chromeos + +#endif // CHROME_BROWSER_CHROMEOS_PRINTING_HISTORY_MOCK_PRINT_JOB_HISTORY_SERVICE_H_
diff --git a/chrome/browser/chromeos/printing/history/print_job_database.h b/chrome/browser/chromeos/printing/history/print_job_database.h index 7d2f323b..6b7fb92 100644 --- a/chrome/browser/chromeos/printing/history/print_job_database.h +++ b/chrome/browser/chromeos/printing/history/print_job_database.h
@@ -6,6 +6,7 @@ #define CHROME_BROWSER_CHROMEOS_PRINTING_HISTORY_PRINT_JOB_DATABASE_H_ #include <memory> +#include <string> #include <vector> #include "base/callback_forward.h" @@ -24,7 +25,7 @@ using SavePrintJobCallback = base::OnceCallback<void(bool success)>; - using DeletePrintJobCallback = base::OnceCallback<void(bool success)>; + using DeletePrintJobsCallback = base::OnceCallback<void(bool success)>; using GetPrintJobsCallback = base::OnceCallback<void( bool success, @@ -42,9 +43,9 @@ virtual void SavePrintJob(const printing::proto::PrintJobInfo& print_job_info, SavePrintJobCallback callback) = 0; - // Removes the print job associated with given |id| from the storage. - virtual void DeletePrintJob(const std::string& id, - DeletePrintJobCallback callback) = 0; + // Removes the print jobs associated with given |ids| from the storage. + virtual void DeletePrintJobs(const std::vector<std::string>& ids, + DeletePrintJobsCallback callback) = 0; // Retrieves all print jobs from the storage. virtual void GetPrintJobs(GetPrintJobsCallback callback) = 0;
diff --git a/chrome/browser/chromeos/printing/history/print_job_database_impl.cc b/chrome/browser/chromeos/printing/history/print_job_database_impl.cc index 49f5728..b9330df 100644 --- a/chrome/browser/chromeos/printing/history/print_job_database_impl.cc +++ b/chrome/browser/chromeos/printing/history/print_job_database_impl.cc
@@ -30,7 +30,8 @@ PrintJobDatabaseImpl::PrintJobDatabaseImpl( leveldb_proto::ProtoDatabaseProvider* database_provider, - base::FilePath profile_path) { + base::FilePath profile_path) + : init_status_(InitStatus::UNINITIALIZED) { auto print_job_database_path = profile_path.Append(kPrintJobDatabaseName); scoped_refptr<base::SequencedTaskRunner> database_task_runner = @@ -45,23 +46,38 @@ PrintJobDatabaseImpl::~PrintJobDatabaseImpl() {} void PrintJobDatabaseImpl::Initialize(InitializeCallback callback) { + if (init_status_ == InitStatus::PENDING) + return; + DCHECK_EQ(init_status_, InitStatus::UNINITIALIZED); + init_status_ = InitStatus::PENDING; database_->Init(base::BindOnce(&PrintJobDatabaseImpl::OnInitialized, weak_ptr_factory_.GetWeakPtr(), std::move(callback))); } bool PrintJobDatabaseImpl::IsInitialized() { - return is_initialized_; + return init_status_ == InitStatus::INITIALIZED; } void PrintJobDatabaseImpl::SavePrintJob( const printing::proto::PrintJobInfo& print_job_info, SavePrintJobCallback callback) { - if (!is_initialized_) { + if (init_status_ == InitStatus::FAILED) { base::SequencedTaskRunnerHandle::Get()->PostTask( FROM_HERE, base::BindOnce(std::move(callback), false)); return; } + + // Defer execution if database is uninitialized. + if (init_status_ != InitStatus::INITIALIZED) { + deferred_callbacks_.push(base::BindOnce( + &PrintJobDatabaseImpl::SavePrintJob, weak_ptr_factory_.GetWeakPtr(), + print_job_info, std::move(callback))); + return; + } + + cache_[print_job_info.id()] = print_job_info; + auto entries_to_save = std::make_unique<EntryVector>(); entries_to_save->push_back( std::make_pair(print_job_info.id(), print_job_info)); @@ -73,23 +89,44 @@ std::move(callback))); } -void PrintJobDatabaseImpl::DeletePrintJob(const std::string& id, - DeletePrintJobCallback callback) { - if (!is_initialized_) { +void PrintJobDatabaseImpl::DeletePrintJobs(const std::vector<std::string>& ids, + DeletePrintJobsCallback callback) { + if (init_status_ == InitStatus::FAILED) { base::SequencedTaskRunnerHandle::Get()->PostTask( FROM_HERE, base::BindOnce(std::move(callback), false)); return; } - auto keys_to_remove = std::make_unique<std::vector<std::string>>(); - keys_to_remove->push_back(id); + + // Defer execution if database is uninitialized. + if (init_status_ != InitStatus::INITIALIZED) { + deferred_callbacks_.push(base::BindOnce( + &PrintJobDatabaseImpl::DeletePrintJobs, weak_ptr_factory_.GetWeakPtr(), + ids, std::move(callback))); + return; + } + database_->UpdateEntries( /*entries_to_save=*/std::make_unique<EntryVector>(), - /*keys_to_remove=*/std::move(keys_to_remove), + /*keys_to_remove=*/std::make_unique<std::vector<std::string>>(ids), base::BindOnce(&PrintJobDatabaseImpl::OnPrintJobDeleted, - weak_ptr_factory_.GetWeakPtr(), id, std::move(callback))); + weak_ptr_factory_.GetWeakPtr(), ids, std::move(callback))); } void PrintJobDatabaseImpl::GetPrintJobs(GetPrintJobsCallback callback) { + if (init_status_ == InitStatus::FAILED) { + base::SequencedTaskRunnerHandle::Get()->PostTask( + FROM_HERE, base::BindOnce(std::move(callback), false, nullptr)); + return; + } + + // Defer execution if database is uninitialized. + if (init_status_ != InitStatus::INITIALIZED) { + deferred_callbacks_.push(base::BindOnce(&PrintJobDatabaseImpl::GetPrintJobs, + weak_ptr_factory_.GetWeakPtr(), + std::move(callback))); + return; + } + auto entries = std::make_unique<std::vector<printing::proto::PrintJobInfo>>(); for (const auto& pair : cache_) entries->emplace_back(pair.second); @@ -129,7 +166,6 @@ bool success, std::unique_ptr<std::map<std::string, printing::proto::PrintJobInfo>> entries) { - is_initialized_ = success; if (success) cache_.insert(entries->begin(), entries->end()); FinishInitialization(std::move(callback), success); @@ -137,36 +173,55 @@ void PrintJobDatabaseImpl::FinishInitialization(InitializeCallback callback, bool success) { + init_status_ = success ? InitStatus::INITIALIZED : InitStatus::FAILED; base::SequencedTaskRunnerHandle::Get()->PostTask( FROM_HERE, base::BindOnce(std::move(callback), success)); + // We run deferred callbacks even if initialization failed not to cause + // possible client-side blocks of next calls to the database. + while (!deferred_callbacks_.empty()) { + base::SequencedTaskRunnerHandle::Get()->PostTask( + FROM_HERE, std::move(deferred_callbacks_.front())); + deferred_callbacks_.pop(); + } } void PrintJobDatabaseImpl::OnPrintJobSaved( const printing::proto::PrintJobInfo& print_job_info, SavePrintJobCallback callback, bool success) { - if (success) - cache_[print_job_info.id()] = print_job_info; + if (!success) + cache_.erase(print_job_info.id()); base::SequencedTaskRunnerHandle::Get()->PostTask( FROM_HERE, base::BindOnce(std::move(callback), success)); } -void PrintJobDatabaseImpl::OnPrintJobDeleted(const std::string& id, - DeletePrintJobCallback callback, - bool success) { +void PrintJobDatabaseImpl::OnPrintJobDeleted( + const std::vector<std::string>& ids, + DeletePrintJobsCallback callback, + bool success) { if (success) - cache_.erase(id); + for (const std::string& id : ids) + cache_.erase(id); base::SequencedTaskRunnerHandle::Get()->PostTask( FROM_HERE, base::BindOnce(std::move(callback), success)); } void PrintJobDatabaseImpl::GetPrintJobsFromProtoDatabase( GetPrintJobsCallback callback) { - if (!is_initialized_) { + if (init_status_ == InitStatus::FAILED) { base::SequencedTaskRunnerHandle::Get()->PostTask( FROM_HERE, base::BindOnce(std::move(callback), false, nullptr)); return; } + + // Defer execution if database is uninitialized. + if (init_status_ != InitStatus::INITIALIZED) { + deferred_callbacks_.push( + base::BindOnce(&PrintJobDatabaseImpl::GetPrintJobsFromProtoDatabase, + weak_ptr_factory_.GetWeakPtr(), std::move(callback))); + return; + } + database_->LoadEntries( base::BindOnce(&PrintJobDatabaseImpl::OnPrintJobsRetrieved, weak_ptr_factory_.GetWeakPtr(), std::move(callback)));
diff --git a/chrome/browser/chromeos/printing/history/print_job_database_impl.h b/chrome/browser/chromeos/printing/history/print_job_database_impl.h index a49eda8a..8653ef1 100644 --- a/chrome/browser/chromeos/printing/history/print_job_database_impl.h +++ b/chrome/browser/chromeos/printing/history/print_job_database_impl.h
@@ -5,6 +5,7 @@ #ifndef CHROME_BROWSER_CHROMEOS_PRINTING_HISTORY_PRINT_JOB_DATABASE_IMPL_H_ #define CHROME_BROWSER_CHROMEOS_PRINTING_HISTORY_PRINT_JOB_DATABASE_IMPL_H_ +#include <queue> #include <unordered_map> #include "base/macros.h" @@ -33,13 +34,15 @@ bool IsInitialized() override; void SavePrintJob(const printing::proto::PrintJobInfo& print_job_info, SavePrintJobCallback callback) override; - void DeletePrintJob(const std::string& id, - DeletePrintJobCallback callback) override; + void DeletePrintJobs(const std::vector<std::string>& ids, + DeletePrintJobsCallback callback) override; void GetPrintJobs(GetPrintJobsCallback callback) override; private: friend class PrintJobDatabaseImplTest; + enum class InitStatus { UNINITIALIZED, PENDING, INITIALIZED, FAILED }; + void OnInitialized(InitializeCallback callback, leveldb_proto::Enums::InitStatus status); @@ -55,8 +58,8 @@ SavePrintJobCallback callback, bool success); - void OnPrintJobDeleted(const std::string& id, - DeletePrintJobCallback callback, + void OnPrintJobDeleted(const std::vector<std::string>& ids, + DeletePrintJobsCallback callback, bool success); void GetPrintJobsFromProtoDatabase(GetPrintJobsCallback callback); @@ -73,13 +76,15 @@ // Cached PrintJobInfo entries. std::unordered_map<std::string, printing::proto::PrintJobInfo> cache_; - // Whether or not the ProtoDatabase database has been initialized and entries - // have been loaded. - bool is_initialized_ = false; + // Indicates the status of database initialization. + InitStatus init_status_; // Number of initialize attempts. int initialize_attempts_ = 0; + // Stores callbacks for delayed execution once database is initialized. + std::queue<base::OnceClosure> deferred_callbacks_; + base::WeakPtrFactory<PrintJobDatabaseImpl> weak_ptr_factory_{this}; DISALLOW_COPY_AND_ASSIGN(PrintJobDatabaseImpl);
diff --git a/chrome/browser/chromeos/printing/history/print_job_database_impl_unittest.cc b/chrome/browser/chromeos/printing/history/print_job_database_impl_unittest.cc index dbad1ead3..5901017d 100644 --- a/chrome/browser/chromeos/printing/history/print_job_database_impl_unittest.cc +++ b/chrome/browser/chromeos/printing/history/print_job_database_impl_unittest.cc
@@ -53,25 +53,34 @@ print_job_database_.reset(); } + void OnInitializedWithClosure(base::RepeatingClosure run_loop_closure, + bool success) { + EXPECT_TRUE(success); + run_loop_closure.Run(); + } + void OnPrintJobSaved(base::RepeatingClosure run_loop_closure, bool success) { EXPECT_TRUE(success); run_loop_closure.Run(); } - protected: - void Initialize() { - base::RunLoop run_loop; - print_job_database_->Initialize( - base::BindOnce(&PrintJobDatabaseImplTest::OnInitialized, - base::Unretained(this), run_loop.QuitClosure())); - run_loop.Run(); - } - - void OnInitialized(base::RepeatingClosure run_loop_closure, bool success) { + void OnPrintJobsRetrieved( + base::RepeatingClosure run_loop_closure, + bool success, + std::unique_ptr<std::vector<PrintJobInfo>> entries) { EXPECT_TRUE(success); + entries_ = *entries; run_loop_closure.Run(); } + protected: + void Initialize() { + print_job_database_->Initialize(base::BindOnce( + &PrintJobDatabaseImplTest::OnInitialized, base::Unretained(this))); + } + + void OnInitialized(bool success) { EXPECT_TRUE(success); } + void SavePrintJob(const PrintJobInfo& print_job_info) { base::RunLoop run_loop; print_job_database_->SavePrintJob( @@ -81,16 +90,16 @@ run_loop.Run(); } - void DeletePrintJob(const std::string& id) { + void DeletePrintJobs(const std::vector<std::string>& ids) { base::RunLoop run_loop; - print_job_database_->DeletePrintJob( - id, base::BindOnce(&PrintJobDatabaseImplTest::OnPrintJobDeleted, - base::Unretained(this), run_loop.QuitClosure())); + print_job_database_->DeletePrintJobs( + ids, base::BindOnce(&PrintJobDatabaseImplTest::OnPrintJobsDeleted, + base::Unretained(this), run_loop.QuitClosure())); run_loop.Run(); } - void OnPrintJobDeleted(base::RepeatingClosure run_loop_closure, - bool success) { + void OnPrintJobsDeleted(base::RepeatingClosure run_loop_closure, + bool success) { EXPECT_TRUE(success); run_loop_closure.Run(); } @@ -113,14 +122,7 @@ return entries_; } - void OnPrintJobsRetrieved( - base::RepeatingClosure run_loop_closure, - bool success, - std::unique_ptr<std::vector<PrintJobInfo>> entries) { - EXPECT_TRUE(success); - entries_ = *entries; - run_loop_closure.Run(); - } + const std::vector<PrintJobInfo>& entries() { return entries_; } base::test::TaskEnvironment task_environment_; std::unique_ptr<PrintJobDatabaseImpl> print_job_database_; @@ -132,7 +134,11 @@ }; TEST_F(PrintJobDatabaseImplTest, Initialize) { - Initialize(); + base::RunLoop run_loop; + print_job_database_->Initialize( + base::BindOnce(&PrintJobDatabaseImplTest::OnInitializedWithClosure, + base::Unretained(this), run_loop.QuitClosure())); + run_loop.Run(); EXPECT_TRUE(print_job_database_->IsInitialized()); } @@ -146,13 +152,13 @@ EXPECT_EQ(kTitle1, entries[0].title()); } -TEST_F(PrintJobDatabaseImplTest, DeletePrintJob) { +TEST_F(PrintJobDatabaseImplTest, DeletePrintJobs) { Initialize(); PrintJobInfo print_job_info1 = ConstructPrintJobInfo(kId1, kTitle1); SavePrintJob(print_job_info1); PrintJobInfo print_job_info2 = ConstructPrintJobInfo(kId2, kTitle2); SavePrintJob(print_job_info2); - DeletePrintJob(kId1); + DeletePrintJobs({kId1}); std::vector<PrintJobInfo> entries = GetPrintJobs(); EXPECT_EQ(1u, entries.size()); EXPECT_EQ(kId2, entries[0].id()); @@ -194,4 +200,25 @@ EXPECT_TRUE(std::find(ids.begin(), ids.end(), kId2) != ids.end()); } +TEST_F(PrintJobDatabaseImplTest, RequestsBeforeInitialization) { + PrintJobInfo print_job_info = ConstructPrintJobInfo(kId1, kTitle1); + base::RunLoop save_print_job_run_loop; + print_job_database_->SavePrintJob( + print_job_info, base::BindOnce(&PrintJobDatabaseImplTest::OnPrintJobSaved, + base::Unretained(this), + save_print_job_run_loop.QuitClosure())); + base::RunLoop get_print_jobs_run_loop; + print_job_database_->GetPrintJobs(base::BindOnce( + &PrintJobDatabaseImplTest::OnPrintJobsRetrieved, base::Unretained(this), + get_print_jobs_run_loop.QuitClosure())); + Initialize(); + save_print_job_run_loop.Run(); + get_print_jobs_run_loop.Run(); + + std::vector<PrintJobInfo> print_job_entries = entries(); + EXPECT_EQ(1u, print_job_entries.size()); + EXPECT_EQ(kId1, print_job_entries[0].id()); + EXPECT_EQ(kTitle1, print_job_entries[0].title()); +} + } // namespace chromeos
diff --git a/chrome/browser/chromeos/printing/history/print_job_history_service.cc b/chrome/browser/chromeos/printing/history/print_job_history_service.cc index 2e5bed80..38fc8b2 100644 --- a/chrome/browser/chromeos/printing/history/print_job_history_service.cc +++ b/chrome/browser/chromeos/printing/history/print_job_history_service.cc
@@ -4,34 +4,11 @@ #include "chrome/browser/chromeos/printing/history/print_job_history_service.h" -#include "base/bind_helpers.h" -#include "base/guid.h" -#include "base/memory/weak_ptr.h" -#include "base/metrics/histogram_functions.h" -#include "chrome/browser/chromeos/printing/cups_print_job.h" -#include "chrome/browser/chromeos/printing/history/print_job_info_conversions.h" - namespace chromeos { -PrintJobHistoryService::PrintJobHistoryService( - std::unique_ptr<PrintJobDatabase> print_job_database, - CupsPrintJobManager* print_job_manager) - : print_job_database_(std::move(print_job_database)), - print_job_manager_(print_job_manager) { - DCHECK(print_job_manager_); - print_job_manager_->AddObserver(this); - print_job_database_->Initialize(base::DoNothing()); -} +PrintJobHistoryService::PrintJobHistoryService() = default; -PrintJobHistoryService::~PrintJobHistoryService() { - DCHECK(print_job_manager_); - print_job_manager_->RemoveObserver(this); -} - -void PrintJobHistoryService::GetPrintJobs( - PrintJobDatabase::GetPrintJobsCallback callback) { - print_job_database_->GetPrintJobs(std::move(callback)); -} +PrintJobHistoryService::~PrintJobHistoryService() = default; void PrintJobHistoryService::AddObserver( PrintJobHistoryService::Observer* observer) { @@ -43,37 +20,4 @@ observers_.RemoveObserver(observer); } -void PrintJobHistoryService::OnPrintJobDone(base::WeakPtr<CupsPrintJob> job) { - SavePrintJob(job); -} - -void PrintJobHistoryService::OnPrintJobError(base::WeakPtr<CupsPrintJob> job) { - SavePrintJob(job); -} - -void PrintJobHistoryService::OnPrintJobCancelled( - base::WeakPtr<CupsPrintJob> job) { - SavePrintJob(job); -} - -void PrintJobHistoryService::SavePrintJob(base::WeakPtr<CupsPrintJob> job) { - if (!job) - return; - printing::proto::PrintJobInfo print_job_info = - CupsPrintJobToProto(*job, /*id=*/base::GenerateGUID(), base::Time::Now()); - print_job_database_->SavePrintJob( - print_job_info, base::BindOnce(&PrintJobHistoryService::OnPrintJobSaved, - base::Unretained(this), print_job_info)); -} - -void PrintJobHistoryService::OnPrintJobSaved( - const printing::proto::PrintJobInfo& print_job_info, - bool success) { - base::UmaHistogramBoolean("Printing.CUPS.PrintJobDatabasePrintJobSaved", - success); - for (auto& observer : observers_) { - observer.OnPrintJobFinished(print_job_info); - } -} - } // namespace chromeos
diff --git a/chrome/browser/chromeos/printing/history/print_job_history_service.h b/chrome/browser/chromeos/printing/history/print_job_history_service.h index 127b58f..9b13adf 100644 --- a/chrome/browser/chromeos/printing/history/print_job_history_service.h +++ b/chrome/browser/chromeos/printing/history/print_job_history_service.h
@@ -7,19 +7,13 @@ #include "base/macros.h" #include "base/observer_list.h" -#include "chrome/browser/chromeos/printing/cups_print_job_manager.h" #include "chrome/browser/chromeos/printing/history/print_job_database.h" #include "components/keyed_service/core/keyed_service.h" namespace chromeos { -class CupsPrintJobManager; - // This service is responsible for maintaining print job history. -// It observes CupsPrintJobManager events and uses PrintJobDatabase as -// persistent storage for print job history. -class PrintJobHistoryService : public KeyedService, - public chromeos::CupsPrintJobManager::Observer { +class PrintJobHistoryService : public KeyedService { public: class Observer { public: @@ -27,30 +21,17 @@ const printing::proto::PrintJobInfo& print_job_info) = 0; }; - PrintJobHistoryService(std::unique_ptr<PrintJobDatabase> print_job_database, - CupsPrintJobManager* print_job_manager); + PrintJobHistoryService(); ~PrintJobHistoryService() override; // Retrieves all print jobs from the database. - void GetPrintJobs(PrintJobDatabase::GetPrintJobsCallback callback); + virtual void GetPrintJobs( + PrintJobDatabase::GetPrintJobsCallback callback) = 0; void AddObserver(PrintJobHistoryService::Observer* observer); void RemoveObserver(PrintJobHistoryService::Observer* observer); - private: - // CupsPrintJobManager::Observer - void OnPrintJobDone(base::WeakPtr<CupsPrintJob> job) override; - void OnPrintJobError(base::WeakPtr<CupsPrintJob> job) override; - void OnPrintJobCancelled(base::WeakPtr<CupsPrintJob> job) override; - - void SavePrintJob(base::WeakPtr<CupsPrintJob> job); - - void OnPrintJobSaved(const printing::proto::PrintJobInfo& print_job_info, - bool success); - - std::unique_ptr<PrintJobDatabase> print_job_database_; - CupsPrintJobManager* print_job_manager_; - + protected: base::ObserverList<PrintJobHistoryService::Observer>::Unchecked observers_; DISALLOW_COPY_AND_ASSIGN(PrintJobHistoryService);
diff --git a/chrome/browser/chromeos/printing/history/print_job_history_service_factory.cc b/chrome/browser/chromeos/printing/history/print_job_history_service_factory.cc index b5a4205..6165f144 100644 --- a/chrome/browser/chromeos/printing/history/print_job_history_service_factory.cc +++ b/chrome/browser/chromeos/printing/history/print_job_history_service_factory.cc
@@ -6,7 +6,7 @@ #include "chrome/browser/chromeos/printing/cups_print_job_manager_factory.h" #include "chrome/browser/chromeos/printing/history/print_job_database_impl.h" -#include "chrome/browser/chromeos/printing/history/print_job_history_service.h" +#include "chrome/browser/chromeos/printing/history/print_job_history_service_impl.h" #include "chrome/browser/profiles/profile.h" #include "components/keyed_service/content/browser_context_dependency_manager.h" #include "content/public/browser/storage_partition.h" @@ -48,8 +48,8 @@ CupsPrintJobManager* print_job_manager = chromeos::CupsPrintJobManagerFactory::GetForBrowserContext(profile); - return new PrintJobHistoryService(std::move(print_job_database), - print_job_manager); + return new PrintJobHistoryServiceImpl(std::move(print_job_database), + print_job_manager); } } // namespace chromeos
diff --git a/chrome/browser/chromeos/printing/history/print_job_history_service_impl.cc b/chrome/browser/chromeos/printing/history/print_job_history_service_impl.cc new file mode 100644 index 0000000..f47dfb1 --- /dev/null +++ b/chrome/browser/chromeos/printing/history/print_job_history_service_impl.cc
@@ -0,0 +1,71 @@ +// 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 "chrome/browser/chromeos/printing/history/print_job_history_service_impl.h" + +#include "base/bind_helpers.h" +#include "base/guid.h" +#include "base/memory/weak_ptr.h" +#include "base/metrics/histogram_macros.h" +#include "chrome/browser/chromeos/printing/cups_print_job.h" +#include "chrome/browser/chromeos/printing/history/print_job_info_conversions.h" + +namespace chromeos { + +PrintJobHistoryServiceImpl::PrintJobHistoryServiceImpl( + std::unique_ptr<PrintJobDatabase> print_job_database, + CupsPrintJobManager* print_job_manager) + : print_job_database_(std::move(print_job_database)), + print_job_manager_(print_job_manager) { + DCHECK(print_job_manager_); + print_job_manager_->AddObserver(this); + print_job_database_->Initialize(base::DoNothing()); +} + +PrintJobHistoryServiceImpl::~PrintJobHistoryServiceImpl() { + DCHECK(print_job_manager_); + print_job_manager_->RemoveObserver(this); +} + +void PrintJobHistoryServiceImpl::GetPrintJobs( + PrintJobDatabase::GetPrintJobsCallback callback) { + print_job_database_->GetPrintJobs(std::move(callback)); +} + +void PrintJobHistoryServiceImpl::OnPrintJobDone( + base::WeakPtr<CupsPrintJob> job) { + SavePrintJob(job); +} + +void PrintJobHistoryServiceImpl::OnPrintJobError( + base::WeakPtr<CupsPrintJob> job) { + SavePrintJob(job); +} + +void PrintJobHistoryServiceImpl::OnPrintJobCancelled( + base::WeakPtr<CupsPrintJob> job) { + SavePrintJob(job); +} + +void PrintJobHistoryServiceImpl::SavePrintJob(base::WeakPtr<CupsPrintJob> job) { + if (!job) + return; + printing::proto::PrintJobInfo print_job_info = + CupsPrintJobToProto(*job, /*id=*/base::GenerateGUID(), base::Time::Now()); + print_job_database_->SavePrintJob( + print_job_info, + base::BindOnce(&PrintJobHistoryServiceImpl::OnPrintJobSaved, + base::Unretained(this), print_job_info)); +} + +void PrintJobHistoryServiceImpl::OnPrintJobSaved( + const printing::proto::PrintJobInfo& print_job_info, + bool success) { + UMA_HISTOGRAM_BOOLEAN("Printing.CUPS.PrintJobDatabasePrintJobSaved", success); + for (auto& observer : observers_) { + observer.OnPrintJobFinished(print_job_info); + } +} + +} // namespace chromeos
diff --git a/chrome/browser/chromeos/printing/history/print_job_history_service_impl.h b/chrome/browser/chromeos/printing/history/print_job_history_service_impl.h new file mode 100644 index 0000000..cb2502478 --- /dev/null +++ b/chrome/browser/chromeos/printing/history/print_job_history_service_impl.h
@@ -0,0 +1,50 @@ +// 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 CHROME_BROWSER_CHROMEOS_PRINTING_HISTORY_PRINT_JOB_HISTORY_SERVICE_IMPL_H_ +#define CHROME_BROWSER_CHROMEOS_PRINTING_HISTORY_PRINT_JOB_HISTORY_SERVICE_IMPL_H_ + +#include "chrome/browser/chromeos/printing/cups_print_job_manager.h" +#include "chrome/browser/chromeos/printing/history/print_job_database.h" +#include "chrome/browser/chromeos/printing/history/print_job_history_service.h" + +namespace chromeos { + +class CupsPrintJobManager; + +// This service is responsible for maintaining print job history. +// It observes CupsPrintJobManager events and uses PrintJobDatabase as +// persistent storage for print job history. +class PrintJobHistoryServiceImpl + : public PrintJobHistoryService, + public chromeos::CupsPrintJobManager::Observer { + public: + PrintJobHistoryServiceImpl( + std::unique_ptr<PrintJobDatabase> print_job_database, + CupsPrintJobManager* print_job_manager); + ~PrintJobHistoryServiceImpl() override; + + // PrintJobHistoryService: + void GetPrintJobs(PrintJobDatabase::GetPrintJobsCallback callback) override; + + private: + // CupsPrintJobManager::Observer: + void OnPrintJobDone(base::WeakPtr<CupsPrintJob> job) override; + void OnPrintJobError(base::WeakPtr<CupsPrintJob> job) override; + void OnPrintJobCancelled(base::WeakPtr<CupsPrintJob> job) override; + + void SavePrintJob(base::WeakPtr<CupsPrintJob> job); + + void OnPrintJobSaved(const printing::proto::PrintJobInfo& print_job_info, + bool success); + + std::unique_ptr<PrintJobDatabase> print_job_database_; + CupsPrintJobManager* print_job_manager_; + + DISALLOW_COPY_AND_ASSIGN(PrintJobHistoryServiceImpl); +}; + +} // namespace chromeos + +#endif // CHROME_BROWSER_CHROMEOS_PRINTING_HISTORY_PRINT_JOB_HISTORY_SERVICE_IMPL_H_
diff --git a/chrome/browser/chromeos/printing/history/print_job_history_service_unittest.cc b/chrome/browser/chromeos/printing/history/print_job_history_service_impl_unittest.cc similarity index 90% rename from chrome/browser/chromeos/printing/history/print_job_history_service_unittest.cc rename to chrome/browser/chromeos/printing/history/print_job_history_service_impl_unittest.cc index aad75d22..37e5492 100644 --- a/chrome/browser/chromeos/printing/history/print_job_history_service_unittest.cc +++ b/chrome/browser/chromeos/printing/history/print_job_history_service_impl_unittest.cc
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/chromeos/printing/history/print_job_history_service.h" +#include "chrome/browser/chromeos/printing/history/print_job_history_service_impl.h" #include "chrome/browser/chromeos/printing/cups_print_job.h" #include "chrome/browser/chromeos/printing/history/print_job_info.pb.h" @@ -25,15 +25,15 @@ } // namespace -class PrintJobHistoryServiceTest : public ::testing::Test { +class PrintJobHistoryServiceImplTest : public ::testing::Test { public: - PrintJobHistoryServiceTest() {} + PrintJobHistoryServiceImplTest() {} void SetUp() override { std::unique_ptr<PrintJobDatabase> print_job_database = std::make_unique<TestPrintJobDatabase>(); print_job_manager_ = std::make_unique<TestCupsPrintJobManager>(&profile_); - print_job_history_service_ = std::make_unique<PrintJobHistoryService>( + print_job_history_service_ = std::make_unique<PrintJobHistoryServiceImpl>( std::move(print_job_database), print_job_manager_.get()); } @@ -66,7 +66,7 @@ TestingProfile profile_; }; -TEST_F(PrintJobHistoryServiceTest, SaveObservedCupsPrintJob) { +TEST_F(PrintJobHistoryServiceImplTest, SaveObservedCupsPrintJob) { base::RunLoop save_print_job_run_loop; TestPrintJobHistoryServiceObserver observer( print_job_history_service_.get(), save_print_job_run_loop.QuitClosure()); @@ -81,8 +81,8 @@ base::RunLoop get_print_jobs_run_loop; print_job_history_service_->GetPrintJobs(base::BindOnce( - &PrintJobHistoryServiceTest::OnPrintJobsRetrieved, base::Unretained(this), - get_print_jobs_run_loop.QuitClosure())); + &PrintJobHistoryServiceImplTest::OnPrintJobsRetrieved, + base::Unretained(this), get_print_jobs_run_loop.QuitClosure())); get_print_jobs_run_loop.Run(); EXPECT_EQ(1u, entries_.size()); @@ -92,7 +92,7 @@ entries_[0].status()); } -TEST_F(PrintJobHistoryServiceTest, ObserverTest) { +TEST_F(PrintJobHistoryServiceImplTest, ObserverTest) { base::RunLoop run_loop; TestPrintJobHistoryServiceObserver observer(print_job_history_service_.get(), run_loop.QuitClosure());
diff --git a/chrome/browser/chromeos/printing/history/test_print_job_database.cc b/chrome/browser/chromeos/printing/history/test_print_job_database.cc index 98d2aa5..838b3cc 100644 --- a/chrome/browser/chromeos/printing/history/test_print_job_database.cc +++ b/chrome/browser/chromeos/printing/history/test_print_job_database.cc
@@ -28,9 +28,10 @@ std::move(callback).Run(true); } -void TestPrintJobDatabase::DeletePrintJob(const std::string& id, - DeletePrintJobCallback callback) { - database_.erase(id); +void TestPrintJobDatabase::DeletePrintJobs(const std::vector<std::string>& ids, + DeletePrintJobsCallback callback) { + for (const std::string& id : ids) + database_.erase(id); std::move(callback).Run(true); }
diff --git a/chrome/browser/chromeos/printing/history/test_print_job_database.h b/chrome/browser/chromeos/printing/history/test_print_job_database.h index c1901a4..f054c092 100644 --- a/chrome/browser/chromeos/printing/history/test_print_job_database.h +++ b/chrome/browser/chromeos/printing/history/test_print_job_database.h
@@ -23,8 +23,8 @@ bool IsInitialized() override; void SavePrintJob(const printing::proto::PrintJobInfo& print_job_info, SavePrintJobCallback callback) override; - void DeletePrintJob(const std::string& id, - DeletePrintJobCallback callback) override; + void DeletePrintJobs(const std::vector<std::string>& ids, + DeletePrintJobsCallback callback) override; void GetPrintJobs(GetPrintJobsCallback callback) override; private:
diff --git a/chrome/browser/chromeos/wilco_dtc_supportd/mojo_utils.cc b/chrome/browser/chromeos/wilco_dtc_supportd/mojo_utils.cc index 503acc4a..32a9b28 100644 --- a/chrome/browser/chromeos/wilco_dtc_supportd/mojo_utils.cc +++ b/chrome/browser/chromeos/wilco_dtc_supportd/mojo_utils.cc
@@ -4,67 +4,65 @@ #include "chrome/browser/chromeos/wilco_dtc_supportd/mojo_utils.h" -#include <cstdint> #include <cstring> -#include <utility> -#include "base/file_descriptor_posix.h" #include "base/files/file.h" -#include "base/memory/shared_memory_handle.h" +#include "base/memory/platform_shared_memory_region.h" +#include "base/memory/read_only_shared_memory_region.h" #include "base/unguessable_token.h" #include "mojo/public/c/system/types.h" +#include "mojo/public/cpp/system/handle.h" #include "mojo/public/cpp/system/platform_handle.h" namespace chromeos { base::StringPiece GetStringPieceFromMojoHandle( mojo::ScopedHandle handle, - std::unique_ptr<base::SharedMemory>* shared_memory) { + base::ReadOnlySharedMemoryMapping* shared_memory) { + DCHECK(shared_memory); + base::PlatformFile platform_file; auto result = mojo::UnwrapPlatformFile(std::move(handle), &platform_file); - shared_memory->reset(); - if (result != MOJO_RESULT_OK) { + if (result != MOJO_RESULT_OK) return base::StringPiece(); - } - base::UnguessableToken guid = base::UnguessableToken::Create(); - *shared_memory = std::make_unique<base::SharedMemory>( - base::SharedMemoryHandle( - base::FileDescriptor(platform_file, true /* iauto_close */), 0u, - guid), - true /* read_only */); - base::SharedMemoryHandle dup_shared_memory_handle = - base::SharedMemory::DuplicateHandle((*shared_memory)->handle()); - const int64_t file_size = - base::File(dup_shared_memory_handle.GetHandle()).GetLength(); - if (file_size <= 0) { - shared_memory->reset(); + base::File file(platform_file); + const size_t file_size = file.GetLength(); + if (file_size <= 0) return base::StringPiece(); - } - if (!(*shared_memory)->Map(file_size)) { - shared_memory->reset(); + + base::subtle::PlatformSharedMemoryRegion platform_region = + base::subtle::PlatformSharedMemoryRegion::Take( + base::ScopedFD(file.TakePlatformFile()), + base::subtle::PlatformSharedMemoryRegion::Mode::kReadOnly, file_size, + base::UnguessableToken::Create()); + + base::ReadOnlySharedMemoryRegion shm = + base::ReadOnlySharedMemoryRegion::Deserialize(std::move(platform_region)); + *shared_memory = shm.Map(); + if (!shared_memory->IsValid()) return base::StringPiece(); - } - return base::StringPiece(static_cast<const char*>((*shared_memory)->memory()), - (*shared_memory)->mapped_size()); + + return base::StringPiece(static_cast<const char*>(shared_memory->memory()), + shared_memory->size()); } mojo::ScopedHandle CreateReadOnlySharedMemoryMojoHandle( const std::string& content) { - if (content.empty()) { + if (content.empty()) return mojo::ScopedHandle(); - } - base::SharedMemory shared_memory; - base::SharedMemoryCreateOptions options; - options.size = content.length(); - options.share_read_only = true; - if (!shared_memory.Create(base::SharedMemoryCreateOptions(options)) || - !shared_memory.Map(content.length())) { + base::MappedReadOnlyRegion shm = + base::ReadOnlySharedMemoryRegion::Create(content.size()); + if (!shm.IsValid()) return mojo::ScopedHandle(); - } - memcpy(shared_memory.memory(), content.data(), content.length()); - return mojo::WrapPlatformFile(shared_memory.TakeHandle().GetHandle()); + memcpy(shm.mapping.memory(), content.data(), content.length()); + + base::subtle::PlatformSharedMemoryRegion platform_region = + base::ReadOnlySharedMemoryRegion::TakeHandleForSerialization( + std::move(shm.region)); + return mojo::WrapPlatformFile( + platform_region.PassPlatformHandle().fd.release()); } } // namespace chromeos
diff --git a/chrome/browser/chromeos/wilco_dtc_supportd/mojo_utils.h b/chrome/browser/chromeos/wilco_dtc_supportd/mojo_utils.h index 6f6c1b6..25d491d 100644 --- a/chrome/browser/chromeos/wilco_dtc_supportd/mojo_utils.h +++ b/chrome/browser/chromeos/wilco_dtc_supportd/mojo_utils.h
@@ -8,23 +8,27 @@ #include <memory> #include <string> -#include "base/memory/shared_memory.h" +#include "base/memory/shared_memory_mapping.h" #include "base/strings/string_piece.h" #include "mojo/public/cpp/system/handle.h" namespace chromeos { // Allows to get access to the buffer in read only shared memory. It converts -// mojo::Handle to base::SharedMemory and returns a string content. +// mojo::Handle to base::ReadOnlySharedMemoryMapping and returns a string +// content. // // |handle| must be a valid mojo handle of the non-empty buffer in the shared // memory. -// |shared_memory| must be a valid allocated unique pointer. // -// Returns an empty string and nullptr |shared_memory| if error. +// Returns an empty string and an invalid |shared_memory| if error. +// +// TODO(crbug.com/989503): Use mojo::ScopedSharedBufferHandle or +// base::ReadOnlySharedMemoryRegion instead of mojo::ScopedHandle +// once ChromeOS updates to the required version of mojo library. base::StringPiece GetStringPieceFromMojoHandle( mojo::ScopedHandle handle, - std::unique_ptr<base::SharedMemory>* shared_memory); + base::ReadOnlySharedMemoryMapping* shared_memory); // Allocates buffer in shared memory, copies |content| to the buffer and // converts shared buffer handle into |mojo::ScopedHandle|. @@ -32,6 +36,9 @@ // Allocated shared memory is read only for another process. // // Returns invalid |mojo::ScopedHandle| if |content| is empty or error happened. +// +// TODO(crbug.com/989503): Remove mojo::ScopedHandle wrapping once +// ChromeOS updates to the required version of mojo library. mojo::ScopedHandle CreateReadOnlySharedMemoryMojoHandle( const std::string& content);
diff --git a/chrome/browser/chromeos/wilco_dtc_supportd/wilco_dtc_supportd_bridge.cc b/chrome/browser/chromeos/wilco_dtc_supportd/wilco_dtc_supportd_bridge.cc index f54b969..61c0bba7 100644 --- a/chrome/browser/chromeos/wilco_dtc_supportd/wilco_dtc_supportd_bridge.cc +++ b/chrome/browser/chromeos/wilco_dtc_supportd/wilco_dtc_supportd_bridge.cc
@@ -10,7 +10,7 @@ #include "base/bind.h" #include "base/location.h" #include "base/logging.h" -#include "base/memory/shared_memory.h" +#include "base/memory/shared_memory_mapping.h" #include "base/process/process_handle.h" #include "base/strings/string_piece.h" #include "base/threading/thread_task_runner_handle.h" @@ -261,9 +261,9 @@ // Extract a GURL value from a ScopedHandle. GURL gurl; if (url.is_valid()) { - std::unique_ptr<base::SharedMemory> shared_memory; + base::ReadOnlySharedMemoryMapping shared_memory; gurl = GURL(GetStringPieceFromMojoHandle(std::move(url), &shared_memory)); - if (!shared_memory) { + if (!shared_memory.IsValid()) { LOG(ERROR) << "Failed to read data from mojo handle"; std::move(callback).Run( wilco_dtc_supportd::mojom::WilcoDtcSupportdWebRequestStatus:: @@ -275,16 +275,16 @@ // Extract headers from ScopedHandle's. std::vector<base::StringPiece> header_contents; - std::vector<std::unique_ptr<base::SharedMemory>> shared_memories; + std::vector<base::ReadOnlySharedMemoryMapping> shared_memories; for (auto& header : headers) { if (!header.is_valid()) { header_contents.push_back(""); continue; } - shared_memories.push_back(nullptr); + shared_memories.emplace_back(); header_contents.push_back(GetStringPieceFromMojoHandle( std::move(header), &shared_memories.back())); - if (!shared_memories.back()) { + if (!shared_memories.back().IsValid()) { LOG(ERROR) << "Failed to read data from mojo handle"; std::move(callback).Run( wilco_dtc_supportd::mojom::WilcoDtcSupportdWebRequestStatus:: @@ -297,10 +297,10 @@ // Extract a string value from a ScopedHandle. std::string request_body_content; if (request_body.is_valid()) { - std::unique_ptr<base::SharedMemory> shared_memory; + base::ReadOnlySharedMemoryMapping shared_memory; request_body_content = std::string( GetStringPieceFromMojoHandle(std::move(request_body), &shared_memory)); - if (!shared_memory) { + if (!shared_memory.IsValid()) { LOG(ERROR) << "Failed to read data from mojo handle"; std::move(callback).Run( wilco_dtc_supportd::mojom::WilcoDtcSupportdWebRequestStatus:: @@ -350,7 +350,7 @@ SendWilcoDtcMessageToUiCallback callback) { // Extract the string value of the received message. DCHECK(json_message); - std::unique_ptr<base::SharedMemory> json_message_shared_memory; + base::ReadOnlySharedMemoryMapping json_message_shared_memory; base::StringPiece json_message_string = GetStringPieceFromMojoHandle( std::move(json_message), &json_message_shared_memory); if (json_message_string.empty()) {
diff --git a/chrome/browser/chromeos/wilco_dtc_supportd/wilco_dtc_supportd_messaging.cc b/chrome/browser/chromeos/wilco_dtc_supportd/wilco_dtc_supportd_messaging.cc index 6b04785..f3d0977 100644 --- a/chrome/browser/chromeos/wilco_dtc_supportd/wilco_dtc_supportd_messaging.cc +++ b/chrome/browser/chromeos/wilco_dtc_supportd/wilco_dtc_supportd_messaging.cc
@@ -12,7 +12,7 @@ #include "base/callback.h" #include "base/logging.h" #include "base/macros.h" -#include "base/memory/shared_memory.h" +#include "base/memory/shared_memory_mapping.h" #include "base/memory/weak_ptr.h" #include "base/stl_util.h" #include "base/strings/string_piece.h" @@ -167,7 +167,7 @@ return; } - std::unique_ptr<base::SharedMemory> response_json_shared_memory; + base::ReadOnlySharedMemoryMapping response_json_shared_memory; base::StringPiece response_json_string = GetStringPieceFromMojoHandle( std::move(response_json_message), &response_json_shared_memory); if (response_json_string.empty()) {
diff --git a/chrome/browser/chromeos/wilco_dtc_supportd/wilco_dtc_supportd_messaging_unittest.cc b/chrome/browser/chromeos/wilco_dtc_supportd/wilco_dtc_supportd_messaging_unittest.cc index 185be0dd..bba8a1d 100644 --- a/chrome/browser/chromeos/wilco_dtc_supportd/wilco_dtc_supportd_messaging_unittest.cc +++ b/chrome/browser/chromeos/wilco_dtc_supportd/wilco_dtc_supportd_messaging_unittest.cc
@@ -10,7 +10,7 @@ #include "base/callback.h" #include "base/logging.h" #include "base/memory/scoped_refptr.h" -#include "base/memory/shared_memory.h" +#include "base/memory/shared_memory_mapping.h" #include "base/run_loop.h" #include "base/test/task_environment.h" #include "chrome/browser/chromeos/wilco_dtc_supportd/mojo_utils.h" @@ -52,7 +52,7 @@ std::string AssertGetStringFromMojoHandle(mojo::ScopedHandle handle) { if (!handle) return std::string(); - std::unique_ptr<base::SharedMemory> shared_memory; + base::ReadOnlySharedMemoryMapping shared_memory; std::string contents = GetStringPieceFromMojoHandle(std::move(handle), &shared_memory) .as_string();
diff --git a/chrome/browser/chromeos/wilco_dtc_supportd/wilco_dtc_supportd_web_request_service_unittest.cc b/chrome/browser/chromeos/wilco_dtc_supportd/wilco_dtc_supportd_web_request_service_unittest.cc index 4a39fd9..fb0f3a2 100644 --- a/chrome/browser/chromeos/wilco_dtc_supportd/wilco_dtc_supportd_web_request_service_unittest.cc +++ b/chrome/browser/chromeos/wilco_dtc_supportd/wilco_dtc_supportd_web_request_service_unittest.cc
@@ -10,7 +10,7 @@ #include "base/bind.h" #include "base/logging.h" #include "base/memory/scoped_refptr.h" -#include "base/memory/shared_memory.h" +#include "base/memory/shared_memory_mapping.h" #include "base/run_loop.h" #include "base/strings/string_piece.h" #include "base/strings/stringprintf.h" @@ -53,10 +53,10 @@ response_body = ""; return; } - std::unique_ptr<base::SharedMemory> shared_memory; + base::ReadOnlySharedMemoryMapping shared_memory; response_body = std::string(GetStringPieceFromMojoHandle( std::move(response_body_handle), &shared_memory)); - if (!shared_memory) { + if (!shared_memory.IsValid()) { response_body = ""; return; }
diff --git a/chrome/browser/component_updater/cros_component_installer_chromeos.cc b/chrome/browser/component_updater/cros_component_installer_chromeos.cc index c565a7c..27750f98 100644 --- a/chrome/browser/component_updater/cros_component_installer_chromeos.cc +++ b/chrome/browser/component_updater/cros_component_installer_chromeos.cc
@@ -36,7 +36,7 @@ const ComponentConfig kConfigs[] = { {"epson-inkjet-printer-escpr", "3.0", "1913a5e0a6cad30b6f03e176177e0d7ed62c5d6700a9c66da556d7c3f5d6a47e"}, - {"cros-termina", "780.1", + {"cros-termina", "790.1", "e9d960f84f628e1f42d05de4046bb5b3154b6f1f65c08412c6af57a29aecaffb"}, {"rtanalytics-light", "13.0", "69f09d33c439c2ab55bbbe24b47ab55cb3f6c0bd1f1ef46eefea3216ec925038"},
diff --git a/chrome/browser/component_updater/on_device_head_suggest_component_installer.cc b/chrome/browser/component_updater/on_device_head_suggest_component_installer.cc index d7113a16..8a66db5 100644 --- a/chrome/browser/component_updater/on_device_head_suggest_component_installer.cc +++ b/chrome/browser/component_updater/on_device_head_suggest_component_installer.cc
@@ -10,6 +10,7 @@ #include <vector> #include "base/files/file_util.h" +#include "base/metrics/field_trial_params.h" #include "base/path_service.h" #include "base/strings/string_util.h" #include "chrome/browser/browser_process.h" @@ -31,12 +32,18 @@ // letters and removes all hyphens and underscores in the locale string, // e.g. "en-US" -> "ENUS". std::string GetNormalizedLocale() { - std::string locale = g_browser_process->GetApplicationLocale(); + std::string locale = base::GetFieldTrialParamValueByFeature( + omnibox::kOnDeviceHeadProvider, "ForceModelLocaleConstraint"); + if (locale.empty()) + locale = g_browser_process->GetApplicationLocale(); + for (const auto c : "-_") locale.erase(std::remove(locale.begin(), locale.end(), c), locale.end()); std::transform(locale.begin(), locale.end(), locale.begin(), [](char c) -> char { return base::ToUpperASCII(c); }); + VLOG(1) << "On Device Head Component will fetch model for locale: " << locale; + return locale; }
diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.json index 1202fda..67d91d3 100644 --- a/chrome/browser/flag-metadata.json +++ b/chrome/browser/flag-metadata.json
@@ -336,6 +336,11 @@ "expiry_milestone": 79 }, { + "name": "back-forward-cache", + "owners": [ "bfcache-dev" ], + "expiry_milestone": 83 + }, + { "name": "background-task-component-update", "owners": [ "sorin", "waffles", "tiborg" ], "expiry_milestone": 76
diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc index 74a32eb..78ffac7d 100644 --- a/chrome/browser/flag_descriptions.cc +++ b/chrome/browser/flag_descriptions.cc
@@ -248,6 +248,12 @@ "Uses Auto Screen Brightness model to adjust screen brightness based on " "ambient light"; +const char kBackForwardCacheName[] = "Back-forward cache"; +const char kBackForwardCacheDescription[] = + "Enables back-forward cache. NOTE: this feature is highly experimental and " + "will lead to various breakages, up to and including user data loss. " + "Do not enable unless you work on this feature"; + const char kBrowserTaskSchedulerName[] = "Task Scheduler"; const char kBrowserTaskSchedulerDescription[] = "Enables redirection of some task posting APIs to the task scheduler.";
diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h index b69f621d..e7e3d8d 100644 --- a/chrome/browser/flag_descriptions.h +++ b/chrome/browser/flag_descriptions.h
@@ -160,6 +160,9 @@ extern const char kAutoScreenBrightnessName[]; extern const char kAutoScreenBrightnessDescription[]; +extern const char kBackForwardCacheName[]; +extern const char kBackForwardCacheDescription[]; + extern const char kBrowserTaskSchedulerName[]; extern const char kBrowserTaskSchedulerDescription[];
diff --git a/chrome/browser/net/network_context_configuration_browsertest.cc b/chrome/browser/net/network_context_configuration_browsertest.cc index 65c4da1..6f7a49c7 100644 --- a/chrome/browser/net/network_context_configuration_browsertest.cc +++ b/chrome/browser/net/network_context_configuration_browsertest.cc
@@ -873,9 +873,15 @@ // Make a request whose response should be cached. GURL request_url = embedded_test_server()->GetURL("/cachetime"); + url::Origin request_origin = + url::Origin::Create(embedded_test_server()->base_url()); std::unique_ptr<network::ResourceRequest> request = std::make_unique<network::ResourceRequest>(); request->url = request_url; + request->trusted_params = network::ResourceRequest::TrustedParams(); + request->trusted_params->network_isolation_key = + net::NetworkIsolationKey(request_origin, request_origin); + content::SimpleURLLoaderTestHelper simple_loader_helper; std::unique_ptr<network::SimpleURLLoader> simple_loader = network::SimpleURLLoader::Create(std::move(request), @@ -896,6 +902,10 @@ std::unique_ptr<network::ResourceRequest> request2 = std::make_unique<network::ResourceRequest>(); request2->url = request_url; + request2->trusted_params = network::ResourceRequest::TrustedParams(); + request2->trusted_params->network_isolation_key = + net::NetworkIsolationKey(request_origin, request_origin); + content::SimpleURLLoaderTestHelper simple_loader_helper2; std::unique_ptr<network::SimpleURLLoader> simple_loader2 = network::SimpleURLLoader::Create(std::move(request2), @@ -972,6 +982,7 @@ // cache in the next test). The profile directory is preserved between the // PRE_DiskCache and DiskCache run, so can just keep a file there. GURL test_url = embedded_test_server()->GetURL(kCacheRandomPath); + url::Origin test_origin = url::Origin::Create(test_url); base::ScopedAllowBlockingForTesting allow_blocking; base::FilePath save_url_file_path = browser()->profile()->GetPath().Append( FILE_PATH_LITERAL("url_for_test.txt")); @@ -980,6 +991,9 @@ std::unique_ptr<network::ResourceRequest> request = std::make_unique<network::ResourceRequest>(); request->url = test_url; + request->trusted_params = network::ResourceRequest::TrustedParams(); + request->trusted_params->network_isolation_key = + net::NetworkIsolationKey(test_origin, test_origin); content::SimpleURLLoaderTestHelper simple_loader_helper; std::unique_ptr<network::SimpleURLLoader> simple_loader = @@ -1027,6 +1041,7 @@ GURL test_url = GURL(file_data.substr(0, newline_pos)); ASSERT_TRUE(test_url.is_valid()) << test_url.possibly_invalid_spec(); + url::Origin test_origin = url::Origin::Create(test_url); std::string original_response = file_data.substr(newline_pos + 1); @@ -1034,6 +1049,10 @@ std::unique_ptr<network::ResourceRequest> request = std::make_unique<network::ResourceRequest>(); request->url = test_url; + request->trusted_params = network::ResourceRequest::TrustedParams(); + request->trusted_params->network_isolation_key = + net::NetworkIsolationKey(test_origin, test_origin); + content::SimpleURLLoaderTestHelper simple_loader_helper; request->load_flags = net::LOAD_ONLY_FROM_CACHE; std::unique_ptr<network::SimpleURLLoader> simple_loader =
diff --git a/chrome/browser/net/system_network_context_manager.cc b/chrome/browser/net/system_network_context_manager.cc index 4092e1f..b7c4055 100644 --- a/chrome/browser/net/system_network_context_manager.cc +++ b/chrome/browser/net/system_network_context_manager.cc
@@ -332,6 +332,7 @@ network::mojom::URLLoaderFactoryParams::New(); params->process_id = network::mojom::kBrowserProcessId; params->is_corb_enabled = false; + params->is_trusted = true; GetContext()->CreateURLLoaderFactory(mojo::MakeRequest(&url_loader_factory_), std::move(params)); return url_loader_factory_.get();
diff --git a/chrome/browser/page_load_metrics/metrics_web_contents_observer_unittest.cc b/chrome/browser/page_load_metrics/metrics_web_contents_observer_unittest.cc index 07a11b04..f9fe1cb4 100644 --- a/chrome/browser/page_load_metrics/metrics_web_contents_observer_unittest.cc +++ b/chrome/browser/page_load_metrics/metrics_web_contents_observer_unittest.cc
@@ -195,6 +195,14 @@ bool IsPrerender(content::WebContents* web_contents) override { return prerender::PrerenderContents::FromWebContents(web_contents); } + bool IsExtensionUrl(const GURL& url) override { +#if BUILDFLAG(ENABLE_EXTENSIONS) + return url.SchemeIs(extensions::kExtensionScheme); +#else + return false; +#endif + } + const std::vector<mojom::PageLoadTimingPtr>& updated_timings() const { return updated_timings_; }
diff --git a/chrome/browser/page_load_metrics/observers/page_load_metrics_observer_tester.cc b/chrome/browser/page_load_metrics/observers/page_load_metrics_observer_tester.cc index d27b351..817eda33 100644 --- a/chrome/browser/page_load_metrics/observers/page_load_metrics_observer_tester.cc +++ b/chrome/browser/page_load_metrics/observers/page_load_metrics_observer_tester.cc
@@ -20,11 +20,16 @@ #include "content/public/browser/web_contents_observer.h" #include "content/public/common/resource_load_info.mojom.h" #include "content/public/common/resource_type.h" +#include "extensions/buildflags/buildflags.h" #include "net/base/ip_endpoint.h" #include "testing/gtest/include/gtest/gtest.h" #include "third_party/blink/public/platform/web_input_event.h" #include "url/gurl.h" +#if BUILDFLAG(ENABLE_EXTENSIONS) +#include "extensions/common/constants.h" +#endif + namespace page_load_metrics { namespace { @@ -54,6 +59,14 @@ return prerender::PrerenderContents::FromWebContents(web_contents); } + bool IsExtensionUrl(const GURL& url) override { +#if BUILDFLAG(ENABLE_EXTENSIONS) + return url.SchemeIs(extensions::kExtensionScheme); +#else + return false; +#endif + } + private: PageLoadMetricsObserverTester* test_;
diff --git a/chrome/browser/page_load_metrics/page_load_metrics_embedder_interface.h b/chrome/browser/page_load_metrics/page_load_metrics_embedder_interface.h index 81238d6f..0fb3ae3 100644 --- a/chrome/browser/page_load_metrics/page_load_metrics_embedder_interface.h +++ b/chrome/browser/page_load_metrics/page_load_metrics_embedder_interface.h
@@ -30,6 +30,7 @@ virtual void RegisterObservers(PageLoadTracker* metrics) = 0; virtual std::unique_ptr<base::OneShotTimer> CreateTimer() = 0; virtual bool IsPrerender(content::WebContents* web_contents) = 0; + virtual bool IsExtensionUrl(const GURL& url) = 0; }; } // namespace page_load_metrics
diff --git a/chrome/browser/page_load_metrics/page_load_metrics_initialize.cc b/chrome/browser/page_load_metrics/page_load_metrics_initialize.cc index 626df7ab..40f366f 100644 --- a/chrome/browser/page_load_metrics/page_load_metrics_initialize.cc +++ b/chrome/browser/page_load_metrics/page_load_metrics_initialize.cc
@@ -51,6 +51,7 @@ #include "chrome/browser/search/search.h" #include "components/rappor/rappor_service_impl.h" #include "content/public/browser/web_contents.h" +#include "extensions/buildflags/buildflags.h" #include "url/gurl.h" #if defined(OS_ANDROID) @@ -59,6 +60,10 @@ #include "chrome/browser/page_load_metrics/observers/session_restore_page_load_metrics_observer.h" #endif +#if BUILDFLAG(ENABLE_EXTENSIONS) +#include "extensions/common/constants.h" +#endif + namespace chrome { namespace { @@ -74,6 +79,7 @@ void RegisterObservers(page_load_metrics::PageLoadTracker* tracker) override; std::unique_ptr<base::OneShotTimer> CreateTimer() override; bool IsPrerender(content::WebContents* web_contents) override; + bool IsExtensionUrl(const GURL& url) override; private: bool IsPrerendering() const; @@ -194,6 +200,14 @@ return prerender::PrerenderContents::FromWebContents(web_contents); } +bool PageLoadMetricsEmbedder::IsExtensionUrl(const GURL& url) { +#if BUILDFLAG(ENABLE_EXTENSIONS) + return url.SchemeIs(extensions::kExtensionScheme); +#else + return false; +#endif +} + } // namespace void InitializePageLoadMetricsForWebContents(
diff --git a/chrome/browser/page_load_metrics/page_load_metrics_update_dispatcher.cc b/chrome/browser/page_load_metrics/page_load_metrics_update_dispatcher.cc index 2c59263..f46df600 100644 --- a/chrome/browser/page_load_metrics/page_load_metrics_update_dispatcher.cc +++ b/chrome/browser/page_load_metrics/page_load_metrics_update_dispatcher.cc
@@ -17,7 +17,6 @@ #include "components/page_load_metrics/common/page_load_metrics_constants.h" #include "content/public/browser/navigation_handle.h" #include "content/public/browser/render_frame_host.h" -#include "extensions/common/constants.h" #include "url/gurl.h" namespace page_load_metrics { @@ -405,6 +404,7 @@ content::NavigationHandle* navigation_handle, PageLoadMetricsEmbedderInterface* embedder_interface) : client_(client), + embedder_interface_(embedder_interface), timer_(embedder_interface->CreateTimer()), navigation_start_(navigation_handle->NavigationStart()), current_merged_page_timing_(CreatePageLoadTiming()), @@ -438,8 +438,8 @@ mojom::FrameRenderDataUpdatePtr render_data, mojom::CpuTimingPtr new_cpu_timing, mojom::DeferredResourceCountsPtr new_deferred_resource_data) { - if (render_frame_host->GetLastCommittedURL().SchemeIs( - extensions::kExtensionScheme)) { + if (embedder_interface_->IsExtensionUrl( + render_frame_host->GetLastCommittedURL())) { // Extensions can inject child frames into a page. We don't want to track // these as they could skew metrics. See http://crbug.com/761037 return; @@ -476,8 +476,8 @@ void PageLoadMetricsUpdateDispatcher::UpdateFeatures( content::RenderFrameHost* render_frame_host, const mojom::PageLoadFeatures& new_features) { - if (render_frame_host->GetLastCommittedURL().SchemeIs( - extensions::kExtensionScheme)) { + if (embedder_interface_->IsExtensionUrl( + render_frame_host->GetLastCommittedURL())) { // Extensions can inject child frames into a page. We don't want to track // these as they could skew metrics. See http://crbug.com/761037 return;
diff --git a/chrome/browser/page_load_metrics/page_load_metrics_update_dispatcher.h b/chrome/browser/page_load_metrics/page_load_metrics_update_dispatcher.h index 3a2b952..8ee0083c 100644 --- a/chrome/browser/page_load_metrics/page_load_metrics_update_dispatcher.h +++ b/chrome/browser/page_load_metrics/page_load_metrics_update_dispatcher.h
@@ -195,6 +195,9 @@ // The client is guaranteed to outlive this object. Client* const client_; + // Interface to chrome features. Must outlive the class. + PageLoadMetricsEmbedderInterface* const embedder_interface_; + std::unique_ptr<base::OneShotTimer> timer_; // Time the navigation for this page load was initiated.
diff --git a/chrome/browser/performance_manager/performance_manager_tab_helper.cc b/chrome/browser/performance_manager/performance_manager_tab_helper.cc index eba7783..b0de4ac 100644 --- a/chrome/browser/performance_manager/performance_manager_tab_helper.cc +++ b/chrome/browser/performance_manager/performance_manager_tab_helper.cc
@@ -27,8 +27,16 @@ // static void PerformanceManagerTabHelper::DetachAndDestroyAll() { - while (first_) - first_->web_contents()->RemoveUserData(UserDataKey()); + while (first_) { + PerformanceManagerTabHelper* helper = first_; + // Tear it down and detach it from the WebContents, which will + // delete it. + content::WebContents* web_contents = helper->web_contents(); + DCHECK(web_contents); + helper->TearDown(); + DCHECK(!helper->web_contents()); + web_contents->RemoveUserData(UserDataKey()); + } } PerformanceManagerTabHelper::PerformanceManagerTabHelper( @@ -72,6 +80,19 @@ } PerformanceManagerTabHelper::~PerformanceManagerTabHelper() { + DCHECK(!page_node_); + DCHECK(frames_.empty()); + DCHECK_NE(this, first_); + DCHECK(!prev_); + DCHECK(!next_); +} + +void PerformanceManagerTabHelper::TearDown() { + // Validate that this instance is in list of tab helpers. + DCHECK(first_ == this || next_ || prev_); + DCHECK_NE(this, next_); + DCHECK_NE(this, prev_); + // Ship our page and frame nodes to the PerformanceManagerImpl for // incineration. std::vector<std::unique_ptr<NodeBase>> nodes; @@ -84,17 +105,25 @@ // Delete the page and its entire frame tree from the graph. performance_manager_->BatchDeleteNodes(std::move(nodes)); - if (first_ == this) + if (first_ == this) { + DCHECK(!prev_); first_ = next_; + } if (prev_) { DCHECK_EQ(prev_->next_, this); prev_->next_ = next_; } + if (next_) { DCHECK_EQ(next_->prev_, this); next_->prev_ = prev_; } + prev_ = nullptr; + next_ = nullptr; + + // Unsubscribe from the associated WebContents. + Observe(nullptr); } void PerformanceManagerTabHelper::RenderFrameCreated( @@ -279,6 +308,10 @@ PostToGraph(FROM_HERE, &PageNodeImpl::OnTitleUpdated, page_node_.get()); } +void PerformanceManagerTabHelper::WebContentsDestroyed() { + TearDown(); +} + void PerformanceManagerTabHelper::DidUpdateFaviconURL( const std::vector<content::FaviconURL>& candidates) { // TODO(siggi): This logic belongs in the policy layer rather than here.
diff --git a/chrome/browser/performance_manager/performance_manager_tab_helper.h b/chrome/browser/performance_manager/performance_manager_tab_helper.h index a2690f2..5ff5d4e 100644 --- a/chrome/browser/performance_manager/performance_manager_tab_helper.h +++ b/chrome/browser/performance_manager/performance_manager_tab_helper.h
@@ -52,6 +52,7 @@ void DidFinishNavigation( content::NavigationHandle* navigation_handle) override; void TitleWasSet(content::NavigationEntry* entry) override; + void WebContentsDestroyed() override; void DidUpdateFaviconURL( const std::vector<content::FaviconURL>& candidates) override; void OnInterfaceRequestFromFrame( @@ -70,6 +71,7 @@ friend class WebContentsProxyImpl; explicit PerformanceManagerTabHelper(content::WebContents* web_contents); + void TearDown(); // Post a task to run in the performance manager sequence. The |node| will be // passed as unretained, and the closure will be created with BindOnce.
diff --git a/chrome/browser/policy/extension_policy_browsertest.cc b/chrome/browser/policy/extension_policy_browsertest.cc index ce57bc1c..9ee1a21 100644 --- a/chrome/browser/policy/extension_policy_browsertest.cc +++ b/chrome/browser/policy/extension_policy_browsertest.cc
@@ -5,6 +5,7 @@ #include "base/test/bind_test_util.h" #include "build/build_config.h" #include "chrome/browser/background/background_contents_service.h" +#include "chrome/browser/extensions/crx_installer.h" #include "chrome/browser/extensions/extension_management_constants.h" #include "chrome/browser/extensions/extension_management_test_util.h" #include "chrome/browser/extensions/extension_service.h" @@ -12,11 +13,14 @@ #include "chrome/browser/extensions/install_verifier.h" #include "chrome/browser/extensions/shared_module_service.h" #include "chrome/browser/extensions/unpacked_installer.h" +#include "chrome/browser/extensions/updater/extension_cache_fake.h" +#include "chrome/browser/extensions/updater/extension_updater.h" #include "chrome/browser/policy/policy_test_utils.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/ui/browser.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" #include "chrome/test/base/ui_test_utils.h" #include "components/policy/policy_constants.h" #include "components/version_info/channel.h" @@ -27,7 +31,9 @@ #include "extensions/browser/extension_dialog_auto_confirm.h" #include "extensions/browser/extension_host.h" #include "extensions/browser/extension_registry.h" +#include "extensions/browser/extension_system.h" #include "extensions/browser/notification_types.h" +#include "extensions/browser/scoped_ignore_content_verifier_for_test.h" #include "extensions/browser/test_extension_registry_observer.h" #include "extensions/common/features/feature_channel.h" #include "extensions/common/manifest_handlers/shared_module_info.h" @@ -93,9 +99,103 @@ base::Unretained(test_server), match_path, template_file)); } +class ExtensionPolicyTest : public PolicyTest { + protected: + void SetUp() override { + PolicyTest::SetUp(); + test_extension_cache_ = std::make_unique<extensions::ExtensionCacheFake>(); + } + + void SetUpOnMainThread() override { + PolicyTest::SetUpOnMainThread(); + if (extension_service()->updater()) { + extension_service()->updater()->SetExtensionCacheForTesting( + test_extension_cache_.get()); + } + } + + extensions::ExtensionService* extension_service() { + extensions::ExtensionSystem* system = + extensions::ExtensionSystem::Get(browser()->profile()); + return system->extension_service(); + } + + extensions::ExtensionRegistry* extension_registry() { + return extensions::ExtensionRegistry::Get(browser()->profile()); + } + + const extensions::Extension* InstallExtension( + const base::FilePath::StringType& name) { + base::FilePath extension_path(ui_test_utils::GetTestFilePath( + base::FilePath(kTestExtensionsDir), base::FilePath(name))); + scoped_refptr<extensions::CrxInstaller> installer = + extensions::CrxInstaller::CreateSilent(extension_service()); + installer->set_allow_silent_install(true); + installer->set_install_cause(extension_misc::INSTALL_CAUSE_UPDATE); + installer->set_creation_flags(extensions::Extension::FROM_WEBSTORE); + installer->set_off_store_install_allow_reason( + extensions::CrxInstaller::OffStoreInstallAllowReason:: + OffStoreInstallAllowedInTest); + + content::WindowedNotificationObserver observer( + extensions::NOTIFICATION_CRX_INSTALLER_DONE, + content::NotificationService::AllSources()); + installer->InstallCrx(extension_path); + observer.Wait(); + content::Details<const extensions::Extension> details = observer.details(); + return details.ptr(); + } + + const extensions::Extension* InstallBookmarkApp() { + WebApplicationInfo web_app; + web_app.title = base::ASCIIToUTF16("Bookmark App"); + web_app.app_url = GURL("http://www.google.com"); + + scoped_refptr<extensions::CrxInstaller> installer = + extensions::CrxInstaller::CreateSilent(extension_service()); + + content::WindowedNotificationObserver observer( + extensions::NOTIFICATION_CRX_INSTALLER_DONE, + content::NotificationService::AllSources()); + installer->InstallWebApp(web_app); + observer.Wait(); + content::Details<const extensions::Extension> details = observer.details(); + return details.ptr(); + } + + void UninstallExtension(const std::string& id, bool expect_success) { + if (expect_success) { + extensions::TestExtensionRegistryObserver observer(extension_registry()); + extension_service()->UninstallExtension( + id, extensions::UNINSTALL_REASON_FOR_TESTING, nullptr); + observer.WaitForExtensionUninstalled(); + } else { + content::WindowedNotificationObserver observer( + extensions::NOTIFICATION_EXTENSION_UNINSTALL_NOT_ALLOWED, + content::NotificationService::AllSources()); + extension_service()->UninstallExtension( + id, extensions::UNINSTALL_REASON_FOR_TESTING, nullptr); + observer.Wait(); + } + } + + void DisableExtension(const std::string& id) { + extensions::TestExtensionRegistryObserver observer(extension_registry()); + extension_service()->DisableExtension( + id, extensions::disable_reason::DISABLE_USER_ACTION); + observer.WaitForExtensionUnloaded(); + } + + std::unique_ptr<extensions::ExtensionCacheFake> test_extension_cache_; + extensions::ScopedIgnoreContentVerifierForTest ignore_content_verifier_; + extensions::ExtensionUpdater::ScopedSkipScheduledCheckForTest + skip_scheduled_extension_checks_; +}; + } // namespace -IN_PROC_BROWSER_TEST_F(PolicyTest, ExtensionInstallBlacklistSelective) { +IN_PROC_BROWSER_TEST_F(ExtensionPolicyTest, + ExtensionInstallBlacklistSelective) { // Verifies that blacklisted extensions can't be installed. extensions::ExtensionRegistry* registry = extension_registry(); ASSERT_FALSE(registry->GetExtensionById( @@ -128,7 +228,8 @@ // Ensure that bookmark apps are not blocked by the ExtensionInstallBlacklist // policy. -IN_PROC_BROWSER_TEST_F(PolicyTest, ExtensionInstallBlacklist_BookmarkApp) { +IN_PROC_BROWSER_TEST_F(ExtensionPolicyTest, + ExtensionInstallBlacklist_BookmarkApp) { const extensions::Extension* bookmark_app = InstallBookmarkApp(); ASSERT_TRUE(bookmark_app); EXPECT_TRUE(InstallExtension(kGoodCrxName)); @@ -151,7 +252,7 @@ // Ensure that when INSTALLATION_REMOVED is set // that blacklisted extensions are removed from the device. -IN_PROC_BROWSER_TEST_F(PolicyTest, ExtensionInstallRemovedPolicy) { +IN_PROC_BROWSER_TEST_F(ExtensionPolicyTest, ExtensionInstallRemovedPolicy) { EXPECT_TRUE(InstallExtension(kGoodCrxName)); extensions::ExtensionService* service = extension_service(); @@ -175,7 +276,7 @@ // Ensure that when INSTALLATION_REMOVED is set for wildcard // that blacklisted extensions are removed from the device. -IN_PROC_BROWSER_TEST_F(PolicyTest, ExtensionWildcardRemovedPolicy) { +IN_PROC_BROWSER_TEST_F(ExtensionPolicyTest, ExtensionWildcardRemovedPolicy) { EXPECT_TRUE(InstallExtension(kGoodCrxName)); extensions::ExtensionService* service = extension_service(); @@ -199,7 +300,7 @@ // Ensure that bookmark apps are not blocked by the ExtensionAllowedTypes // policy. -IN_PROC_BROWSER_TEST_F(PolicyTest, ExtensionAllowedTypes_BookmarkApp) { +IN_PROC_BROWSER_TEST_F(ExtensionPolicyTest, ExtensionAllowedTypes_BookmarkApp) { const extensions::Extension* bookmark_app = InstallBookmarkApp(); ASSERT_TRUE(bookmark_app); EXPECT_TRUE(InstallExtension(kGoodCrxName)); @@ -223,7 +324,7 @@ // Ensure that bookmark apps are not blocked by the ExtensionSettings // policy. -IN_PROC_BROWSER_TEST_F(PolicyTest, ExtensionSettings_BookmarkApp) { +IN_PROC_BROWSER_TEST_F(ExtensionPolicyTest, ExtensionSettings_BookmarkApp) { const extensions::Extension* bookmark_app = InstallBookmarkApp(); ASSERT_TRUE(bookmark_app); EXPECT_TRUE(InstallExtension(kGoodCrxName)); @@ -282,7 +383,8 @@ #define MAYBE_ExtensionInstallBlacklistWildcard \ ExtensionInstallBlacklistWildcard #endif -IN_PROC_BROWSER_TEST_F(PolicyTest, MAYBE_ExtensionInstallBlacklistWildcard) { +IN_PROC_BROWSER_TEST_F(ExtensionPolicyTest, + MAYBE_ExtensionInstallBlacklistWildcard) { // Verify that a wildcard blacklist takes effect. EXPECT_TRUE(InstallExtension(kSimpleWithIconCrxName)); extensions::ExtensionService* service = extension_service(); @@ -315,7 +417,8 @@ kGoodCrxId, extensions::ExtensionRegistry::COMPATIBILITY)); } -IN_PROC_BROWSER_TEST_F(PolicyTest, ExtensionInstallBlacklistSharedModules) { +IN_PROC_BROWSER_TEST_F(ExtensionPolicyTest, + ExtensionInstallBlacklistSharedModules) { // Verifies that shared_modules are not affected by the blacklist. base::FilePath base_path; @@ -400,7 +503,7 @@ EXPECT_EQ(kSharedModuleId, imports[0].extension_id); } -IN_PROC_BROWSER_TEST_F(PolicyTest, ExtensionInstallWhitelist) { +IN_PROC_BROWSER_TEST_F(ExtensionPolicyTest, ExtensionInstallWhitelist) { // Verifies that the whitelist can open exceptions to the blacklist. extensions::ExtensionRegistry* registry = extension_registry(); ASSERT_FALSE(registry->GetExtensionById( @@ -518,7 +621,7 @@ } // namespace -IN_PROC_BROWSER_TEST_F(PolicyTest, ExtensionInstallForcelist) { +IN_PROC_BROWSER_TEST_F(ExtensionPolicyTest, ExtensionInstallForcelist) { // Verifies that extensions that are force-installed by policies are // installed and can't be uninstalled. @@ -688,7 +791,7 @@ } } -IN_PROC_BROWSER_TEST_F(PolicyTest, +IN_PROC_BROWSER_TEST_F(ExtensionPolicyTest, ExtensionInstallForcelist_DefaultedUpdateUrl) { // Verifies the ExtensionInstallForcelist policy with an empty (defaulted) // "update" URL. @@ -714,7 +817,8 @@ kGoodCrxId, extensions::ExtensionRegistry::COMPATIBILITY)); } -IN_PROC_BROWSER_TEST_F(PolicyTest, ExtensionRecommendedInstallationMode) { +IN_PROC_BROWSER_TEST_F(ExtensionPolicyTest, + ExtensionRecommendedInstallationMode) { // Verifies that extensions that are recommended-installed by policies are // installed, can be disabled but not uninstalled. @@ -768,7 +872,7 @@ EXPECT_FALSE(service->IsExtensionEnabled(kGoodCrxId)); } -IN_PROC_BROWSER_TEST_F(PolicyTest, ExtensionAllowedTypes) { +IN_PROC_BROWSER_TEST_F(ExtensionPolicyTest, ExtensionAllowedTypes) { // Verifies that extensions are blocked if policy specifies an allowed types // list and the extension's type is not on that list. extensions::ExtensionRegistry* registry = extension_registry(); @@ -811,7 +915,7 @@ #else #define MAYBE_ExtensionInstallSources ExtensionInstallSources #endif -IN_PROC_BROWSER_TEST_F(PolicyTest, MAYBE_ExtensionInstallSources) { +IN_PROC_BROWSER_TEST_F(ExtensionPolicyTest, MAYBE_ExtensionInstallSources) { extensions::ScopedTestDialogAutoConfirm auto_confirm( extensions::ScopedTestDialogAutoConfirm::ACCEPT); extensions::ScopedInstallVerifierBypassForTest install_verifier_bypass; @@ -860,7 +964,7 @@ // Verifies that extensions with version older than the minimum version required // by policy will get disabled, and will be auto-updated and/or re-enabled upon // policy changes as well as regular auto-updater scheduled updates. -IN_PROC_BROWSER_TEST_F(PolicyTest, ExtensionMinimumVersionRequired) { +IN_PROC_BROWSER_TEST_F(ExtensionPolicyTest, ExtensionMinimumVersionRequired) { ExtensionRequestInterceptor interceptor; base::AtomicRefCount update_extension_count; @@ -938,7 +1042,8 @@ // Similar to ExtensionMinimumVersionRequired test, but with different settings // and orders. -IN_PROC_BROWSER_TEST_F(PolicyTest, ExtensionMinimumVersionRequiredAlt) { +IN_PROC_BROWSER_TEST_F(ExtensionPolicyTest, + ExtensionMinimumVersionRequiredAlt) { ExtensionRequestInterceptor interceptor; base::AtomicRefCount update_extension_count; @@ -1012,7 +1117,8 @@ // Verifies that a force-installed extension which does not meet a subsequently // set minimum version requirement is handled well. -IN_PROC_BROWSER_TEST_F(PolicyTest, ExtensionMinimumVersionForceInstalled) { +IN_PROC_BROWSER_TEST_F(ExtensionPolicyTest, + ExtensionMinimumVersionForceInstalled) { ExtensionRequestInterceptor interceptor; // Mark as enterprise managed. @@ -1055,15 +1161,15 @@ extension_prefs->GetDisableReasons(kGoodCrxId)); } -// Similar to PolicyTest but sets the WebAppInstallForceList policy before the -// browser is started. -class WebAppInstallForceListPolicyTest : public PolicyTest { +// Similar to ExtensionPolicyTest but sets the WebAppInstallForceList policy +// before the browser is started. +class WebAppInstallForceListPolicyTest : public ExtensionPolicyTest { public: WebAppInstallForceListPolicyTest() {} ~WebAppInstallForceListPolicyTest() override {} void SetUpInProcessBrowserTestFixture() override { - PolicyTest::SetUpInProcessBrowserTestFixture(); + ExtensionPolicyTest::SetUpInProcessBrowserTestFixture(); ASSERT_TRUE(embedded_test_server()->Start()); policy_app_url_ =
diff --git a/chrome/browser/policy/policy_test_utils.cc b/chrome/browser/policy/policy_test_utils.cc index 62d87c7a..9f2ff884 100644 --- a/chrome/browser/policy/policy_test_utils.cc +++ b/chrome/browser/policy/policy_test_utils.cc
@@ -8,8 +8,6 @@ #include "base/strings/utf_string_conversions.h" #include "base/task/post_task.h" #include "chrome/browser/extensions/chrome_test_extension_loader.h" -#include "chrome/browser/extensions/crx_installer.h" -#include "chrome/browser/extensions/extension_service.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/ui/ash/chrome_screenshot_grabber.h" #include "chrome/browser/ui/ash/chrome_screenshot_grabber_test_observer.h" @@ -19,7 +17,6 @@ #include "chrome/browser/ui/location_bar/location_bar.h" #include "chrome/common/chrome_paths.h" #include "chrome/common/net/safe_search_util.h" -#include "chrome/common/web_application_info.h" #include "chrome/test/base/ui_test_utils.h" #include "components/omnibox/browser/omnibox_edit_model.h" #include "components/policy/core/browser/browser_policy_connector.h" @@ -37,10 +34,6 @@ #include "content/public/common/service_names.mojom.h" #include "content/public/test/test_navigation_observer.h" #include "content/public/test/test_utils.h" -#include "extensions/browser/extension_registry.h" -#include "extensions/browser/extension_system.h" -#include "extensions/browser/notification_types.h" -#include "extensions/browser/test_extension_registry_observer.h" #include "net/dns/mock_host_resolver.h" #include "net/http/transport_security_state.h" #include "services/network/public/mojom/network_service_test.mojom.h" @@ -68,7 +61,6 @@ PolicyTest::~PolicyTest() = default; void PolicyTest::SetUp() { - test_extension_cache_.reset(new extensions::ExtensionCacheFake()); InProcessBrowserTest::SetUp(); } @@ -81,10 +73,6 @@ void PolicyTest::SetUpOnMainThread() { host_resolver()->AddRule("*", "127.0.0.1"); - if (extension_service()->updater()) { - extension_service()->updater()->SetExtensionCacheForTesting( - test_extension_cache_.get()); - } } void PolicyTest::SetUpCommandLine(base::CommandLine* command_line) { @@ -160,55 +148,6 @@ } #endif // defined(OS_CHROMEOS) -extensions::ExtensionService* PolicyTest::extension_service() { - extensions::ExtensionSystem* system = - extensions::ExtensionSystem::Get(browser()->profile()); - return system->extension_service(); -} - -extensions::ExtensionRegistry* PolicyTest::extension_registry() { - return extensions::ExtensionRegistry::Get(browser()->profile()); -} - -const extensions::Extension* PolicyTest::InstallExtension( - const base::FilePath::StringType& name) { - base::FilePath extension_path(ui_test_utils::GetTestFilePath( - base::FilePath(kTestExtensionsDir), base::FilePath(name))); - scoped_refptr<extensions::CrxInstaller> installer = - extensions::CrxInstaller::CreateSilent(extension_service()); - installer->set_allow_silent_install(true); - installer->set_install_cause(extension_misc::INSTALL_CAUSE_UPDATE); - installer->set_creation_flags(extensions::Extension::FROM_WEBSTORE); - installer->set_off_store_install_allow_reason( - extensions::CrxInstaller::OffStoreInstallAllowReason:: - OffStoreInstallAllowedInTest); - - content::WindowedNotificationObserver observer( - extensions::NOTIFICATION_CRX_INSTALLER_DONE, - content::NotificationService::AllSources()); - installer->InstallCrx(extension_path); - observer.Wait(); - content::Details<const extensions::Extension> details = observer.details(); - return details.ptr(); -} - -const extensions::Extension* PolicyTest::InstallBookmarkApp() { - WebApplicationInfo web_app; - web_app.title = base::ASCIIToUTF16("Bookmark App"); - web_app.app_url = GURL("http://www.google.com"); - - scoped_refptr<extensions::CrxInstaller> installer = - extensions::CrxInstaller::CreateSilent(extension_service()); - - content::WindowedNotificationObserver observer( - extensions::NOTIFICATION_CRX_INSTALLER_DONE, - content::NotificationService::AllSources()); - installer->InstallWebApp(web_app); - observer.Wait(); - content::Details<const extensions::Extension> details = observer.details(); - return details.ptr(); -} - scoped_refptr<const extensions::Extension> PolicyTest::LoadUnpackedExtension( const base::FilePath::StringType& name) { base::FilePath extension_path(ui_test_utils::GetTestFilePath( @@ -217,30 +156,6 @@ return loader.LoadExtension(extension_path); } -void PolicyTest::UninstallExtension(const std::string& id, - bool expect_success) { - if (expect_success) { - extensions::TestExtensionRegistryObserver observer(extension_registry()); - extension_service()->UninstallExtension( - id, extensions::UNINSTALL_REASON_FOR_TESTING, nullptr); - observer.WaitForExtensionUninstalled(); - } else { - content::WindowedNotificationObserver observer( - extensions::NOTIFICATION_EXTENSION_UNINSTALL_NOT_ALLOWED, - content::NotificationService::AllSources()); - extension_service()->UninstallExtension( - id, extensions::UNINSTALL_REASON_FOR_TESTING, nullptr); - observer.Wait(); - } -} - -void PolicyTest::DisableExtension(const std::string& id) { - extensions::TestExtensionRegistryObserver observer(extension_registry()); - extension_service()->DisableExtension( - id, extensions::disable_reason::DISABLE_USER_ACTION); - observer.WaitForExtensionUnloaded(); -} - void PolicyTest::UpdateProviderPolicy(const PolicyMap& policy) { PolicyMap policy_with_defaults; policy_with_defaults.CopyFrom(policy);
diff --git a/chrome/browser/policy/policy_test_utils.h b/chrome/browser/policy/policy_test_utils.h index 575faaa..e60d53e 100644 --- a/chrome/browser/policy/policy_test_utils.h +++ b/chrome/browser/policy/policy_test_utils.h
@@ -7,17 +7,12 @@ #include "ash/public/cpp/keyboard/keyboard_types.h" #include "base/files/file_path.h" -#include "chrome/browser/extensions/updater/extension_cache_fake.h" -#include "chrome/browser/extensions/updater/extension_updater.h" #include "chrome/test/base/in_process_browser_test.h" #include "components/policy/core/common/mock_configuration_policy_provider.h" #include "components/security_interstitials/core/controller_client.h" -#include "extensions/browser/scoped_ignore_content_verifier_for_test.h" namespace extensions { class Extension; -class ExtensionRegistry; -class ExtensionService; } // namespace extensions namespace policy { @@ -45,22 +40,9 @@ void SetShouldRequireCTForTesting(bool* required); - extensions::ExtensionService* extension_service(); - - extensions::ExtensionRegistry* extension_registry(); - - const extensions::Extension* InstallExtension( - const base::FilePath::StringType& name); - - const extensions::Extension* InstallBookmarkApp(); - scoped_refptr<const extensions::Extension> LoadUnpackedExtension( const base::FilePath::StringType& name); - void UninstallExtension(const std::string& id, bool expect_success); - - void DisableExtension(const std::string& id); - void UpdateProviderPolicy(const PolicyMap& policy); // Sends a mouse click at the given coordinates to the current renderer. @@ -113,10 +95,6 @@ security_interstitials::SecurityInterstitialCommand command); MockConfigurationPolicyProvider provider_; - std::unique_ptr<extensions::ExtensionCacheFake> test_extension_cache_; - extensions::ScopedIgnoreContentVerifierForTest ignore_content_verifier_; - extensions::ExtensionUpdater::ScopedSkipScheduledCheckForTest - skip_scheduled_extension_checks_; }; } // namespace policy
diff --git a/chrome/browser/resources/chromeos/camera/src/js/views/camera/options.js b/chrome/browser/resources/chromeos/camera/src/js/views/camera/options.js index 69371f9..8fc28e5b 100644 --- a/chrome/browser/resources/chromeos/camera/src/js/views/camera/options.js +++ b/chrome/browser/resources/chromeos/camera/src/js/views/camera/options.js
@@ -224,7 +224,7 @@ cca.views.camera.Options.prototype.updateMirroring_ = function(facingMode) { // Update mirroring by detected facing-mode. Enable mirroring by default if // facing-mode isn't available. - var enabled = facingMode ? facingMode == 'user' : true; + var enabled = facingMode ? facingMode != 'environment' : true; // Override mirroring only if mirroring was toggled manually. if (this.videoDeviceId_ in this.mirroringToggles_) {
diff --git a/chrome/browser/resources/chromeos/chromevox/cvox2/background/editing.js b/chrome/browser/resources/chromeos/chromevox/cvox2/background/editing.js index 471d806d..df120be9 100644 --- a/chrome/browser/resources/chromeos/chromevox/cvox2/background/editing.js +++ b/chrome/browser/resources/chromeos/chromevox/cvox2/background/editing.js
@@ -283,45 +283,30 @@ this.updateIntraLineState_(this.line_); - /** - * @private {number|undefined} - */ + /** @private {boolean} */ + this.misspelled = false; + /** @private {boolean} */ + this.grammarError = false; + + /** @private {number|undefined} */ this.fontSize_; - /** - * @private {string|undefined} - */ + /** @private {string|undefined} */ this.fontColor_; - /** - * @private {boolean|undefined} - */ + /** @private {boolean|undefined} */ this.linked_; - /** - * @private {boolean|undefined} - */ + /** @private {boolean|undefined} */ this.subscript_; - /** - * @private {boolean|undefined} - */ + /** @private {boolean|undefined} */ this.superscript_; - /** - * @private {boolean} - */ + /** @private {boolean} */ this.bold_ = false; - /** - * @private {boolean} - */ + /** @private {boolean} */ this.italic_ = false; - /** - * @private {boolean} - */ + /** @private {boolean} */ this.underline_ = false; - /** - * @private {boolean} - */ + /** @private {boolean} */ this.lineThrough_ = false; - /** - * @private {string|undefined} - */ + /** @private {string|undefined} */ this.fontFamily_; } @@ -435,31 +420,8 @@ if (!container) return; - if (container.markerTypes) { - // Only consider markers that start or end at the selection bounds. - var markerStartIndex = -1, markerEndIndex = -1; - var localStartOffset = cur.localStartOffset; - for (var i = 0; i < container.markerStarts.length; i++) { - if (container.markerStarts[i] == localStartOffset) { - markerStartIndex = i; - break; - } - } - - var localEndOffset = cur.localEndOffset; - for (var i = 0; i < container.markerEnds.length; i++) { - if (container.markerEnds[i] == localEndOffset) { - markerEndIndex = i; - break; - } - } - - if (markerStartIndex > -1) - this.speakTextMarker_(container.markerTypes[markerStartIndex]); - - if (markerEndIndex > -1) - this.speakTextMarker_(container.markerTypes[markerEndIndex], true); - } + this.speakTextMarker_( + container, cur.localStartOffset, cur.localEndOffset); if (localStorage['announceRichTextAttributes'] == 'true') this.speakTextStyle_(container); @@ -607,21 +569,31 @@ }, /** - * @param {number} markerType - * @param {boolean=} opt_end + * @param {AutomationNode!} container + * @param {number} selStart + * @param {number} selEnd * @private */ - speakTextMarker_: function(markerType, opt_end) { - // TODO(dtseng): Plumb through constants to automation. - var msgs = []; - if (markerType & 1) { - if (localStorage['indicateMisspell'] == 'announce') - msgs.push(opt_end ? 'misspelling_end' : 'misspelling_start'); + speakTextMarker_: function(container, selStart, selEnd) { + var markersWithinSelection = 0; + if (container.markerTypes) { + for (var i = 0; i < container.markerTypes.length; i++) { + // See if our selection intersects with this marker. + if (container.markerStarts[i] >= selStart || + selEnd < container.markerEnds[i]) + markersWithinSelection |= container.markerTypes[i]; + } } - if (markerType & 2) - msgs.push(opt_end ? 'grammar_end' : 'grammar_start'); - if (markerType & 4) - msgs.push(opt_end ? 'text_match_end' : 'text_match_start'); + + var msgs = []; + if (this.misspelled == !(markersWithinSelection & 1)) { + this.misspelled = !this.misspelled; + msgs.push(this.misspelled ? 'misspelling_start' : 'misspelling_end'); + } + if (this.grammarError == !(markersWithinSelection & 2)) { + this.grammarError = !this.grammarError; + msgs.push(this.grammarError ? 'grammar_start' : 'grammar_end'); + } if (msgs.length) { msgs.forEach(function(msg) { @@ -913,6 +885,23 @@ this.end_ = new Cursor(endNode, endIndex); this.end_ = this.end_.deepEquivalent || this.end_; + // Update |startIndex| and |endIndex| if the calls above to + // cursors.Cursor.deepEquivalent results in cursors to different container + // nodes. The cursors can point directly to inline text boxes, in which case + // we should not adjust the container start or end index. + if (startNode.role == RoleType.STATIC_TEXT && this.start_.node != startNode && + this.start_.node.parent != startNode) { + startIndex = this.start_.index == cursors.NODE_INDEX ? + this.start_.node.name.length : + this.start_.index; + } + if (endNode.role == RoleType.STATIC_TEXT && this.end_.node != endNode && + this.end_.node.parent != endNode) { + endIndex = this.end_.index == cursors.NODE_INDEX ? + this.end_.node.name.length : + this.end_.index; + } + /** @private {number} */ this.localContainerStartOffset_ = startIndex; /** @private {number} */
diff --git a/chrome/browser/resources/chromeos/chromevox/cvox2/background/editing_test.extjs b/chrome/browser/resources/chromeos/chromevox/cvox2/background/editing_test.extjs index 91aab23..92409025 100644 --- a/chrome/browser/resources/chromeos/chromevox/cvox2/background/editing_test.extjs +++ b/chrome/browser/resources/chromeos/chromevox/cvox2/background/editing_test.extjs
@@ -1178,3 +1178,47 @@ input.focus(); }); }); + +TEST_F('ChromeVoxEditingTest', 'GrammarErrors', function() { + var mockFeedback = this.createMockFeedback(); + this.runWithLoadedTree(function() {/*! + <div contenteditable="true" role="textbox"> + This <span aria-invalid="grammar">are</span> a test + </div> + <button id="go">Go</button> + + <script> + document.getElementById('go').addEventListener('click', function() { + var sel = getSelection(); + sel.modify('move', 'forward', 'character'); + }, true); + </script> + */}, function(root) { + var input = root.find({role: RoleType.TEXT_FIELD}); + var go = root.find({role: RoleType.BUTTON}); + var moveByChar = go.doDefault.bind(go); + + this.listenOnce(input, 'focus', function() { + mockFeedback.call(moveByChar) + .expectSpeech('h') + .call(moveByChar) + .expectSpeech('i') + .call(moveByChar) + .expectSpeech('s') + .call(moveByChar) + .expectSpeech(' ') + + .call(moveByChar) + .expectSpeech('a', 'Grammar error') + .call(moveByChar) + .expectSpeech('r') + .call(moveByChar) + .expectSpeech('e') + .call(moveByChar) + .expectSpeech(' ', 'Leaving grammar error') + + .replay(); + }); + input.focus(); + }); +});
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings.grd b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings.grd index 47ca7c55..f9a2d552 100644 --- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings.grd +++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings.grd
@@ -2974,25 +2974,18 @@ <message desc="Description of a command that toggles between 6 and 8 dot braille." name="IDS_CHROMEVOX_TOGGLE_BRAILLE_TABLE"> Toggle between 6 and 8 dot braille </message> - <message desc="Spoken when a user navigates to the beginning of a misspelled word." name="IDS_CHROMEVOX_MISSPELLING_START"> - Misspelling start + <message desc="Spoken when a user navigates into a misspelled word." name="IDS_CHROMEVOX_MISSPELLING_START"> + Misspelled </message> - <message desc="Spoken when a user navigates to the end of a misspelled word." name="IDS_CHROMEVOX_MISSPELLING_END"> - Misspelling end + <message desc="Spoken when a user navigates out of a misspelled word." name="IDS_CHROMEVOX_MISSPELLING_END"> + Leaving misspelled </message> - <message desc="Spoken when a user navigates to the beginning of a grammar error." name="IDS_CHROMEVOX_GRAMMAR_START"> - Grammar error start + <message desc="Spoken when a user navigates into a grammar error." name="IDS_CHROMEVOX_GRAMMAR_START"> + Grammar error </message> - <message desc="Spoken when a user navigates to the end of a grammar error." name="IDS_CHROMEVOX_GRAMMAR_END"> - Grammar error end + <message desc="Spoken when a user navigates out of a grammar error." name="IDS_CHROMEVOX_GRAMMAR_END"> + Leaving grammar error </message> - <message desc="Spoken when a user navigates to the beginning of a text match from a find in page." name="IDS_CHROMEVOX_TEXT_MATCH_START"> - Text match start - </message> - <message desc="Spoken when a user navigates to the end of a text match from a find in page." name="IDS_CHROMEVOX_TEXT_MATCH_END"> - Text match end - </message> - <message desc="Spoken to describe text that is superscript." name="IDS_CHROMEVOX_SUPERSCRIPT"> Superscript </message>
diff --git a/chrome/browser/resources/settings/privacy_page/privacy_page.html b/chrome/browser/resources/settings/privacy_page/privacy_page.html index 1ad2935..11c6038 100644 --- a/chrome/browser/resources/settings/privacy_page/privacy_page.html +++ b/chrome/browser/resources/settings/privacy_page/privacy_page.html
@@ -664,7 +664,7 @@ </settings-subpage> </template> </template> - <template is="dom-if" if="[[enableBluetoothScanningContentSetting_]]"> + <template is="dom-if" if="[[enableExperimentalWebPlatformFeatures_]]"> <template is="dom-if" route-path="/content/bluetoothScanning" no-search> <settings-subpage page-title="$i18n{siteSettingsBluetoothScanning}" search-label="$i18n{siteSettingsAllSitesSearch}"
diff --git a/chrome/browser/resources/settings/privacy_page/privacy_page.js b/chrome/browser/resources/settings/privacy_page/privacy_page.js index 57b42d06..e3d4481 100644 --- a/chrome/browser/resources/settings/privacy_page/privacy_page.js +++ b/chrome/browser/resources/settings/privacy_page/privacy_page.js
@@ -136,14 +136,6 @@ }, /** @private */ - enableBluetoothScanningContentSetting_: { - type: Boolean, - value: function() { - return loadTimeData.getBoolean('enableBluetoothScanningContentSetting'); - } - }, - - /** @private */ enableNativeFileSystemWriteContentSetting_: { type: Boolean, value: function() {
diff --git a/chrome/browser/resources/settings/privacy_page/security_keys_bio_enroll_dialog.html b/chrome/browser/resources/settings/privacy_page/security_keys_bio_enroll_dialog.html index 7569eea..c5f979a8 100644 --- a/chrome/browser/resources/settings/privacy_page/security_keys_bio_enroll_dialog.html +++ b/chrome/browser/resources/settings/privacy_page/security_keys_bio_enroll_dialog.html
@@ -51,7 +51,8 @@ <div id="pinPrompt"> <p>$i18n{securityKeysBioEnrollmentPinPrompt}</p> - <settings-security-keys-pin-field id="pin"> + <settings-security-keys-pin-field + id="pin" label="$i18n{securityKeysPIN}"> </settings-security-keys-pin-field> </div>
diff --git a/chrome/browser/resources/settings/privacy_page/security_keys_credential_management_dialog.html b/chrome/browser/resources/settings/privacy_page/security_keys_credential_management_dialog.html index 0045f54..070ed2d 100644 --- a/chrome/browser/resources/settings/privacy_page/security_keys_credential_management_dialog.html +++ b/chrome/browser/resources/settings/privacy_page/security_keys_credential_management_dialog.html
@@ -69,7 +69,8 @@ <div id="pinPrompt"> <p>$i18nRaw{securityKeysCredentialManagementPinPrompt}</p> - <settings-security-keys-pin-field id="pin"> + <settings-security-keys-pin-field + id="pin" label="$i18n{securityKeysPIN}"> </settings-security-keys-pin-field> </div> @@ -92,9 +93,9 @@ </div> <div class="user">[[formatUser_(item)]]</div> <cr-checkbox on-change="checkedCredentialsChanged_" - data-id$="[[item.id]]" - checked="[[credentialIsChecked_(item.id)]]" - disabled="[[deleteInProgress_]]"></cr-checkbox> + data-id$="[[item.id]]" + checked="[[credentialIsChecked_(item.id)]]" + disabled="[[deleteInProgress_]]"></cr-checkbox> </div> </template> </iron-list>
diff --git a/chrome/browser/resources/settings/privacy_page/security_keys_credential_management_dialog.js b/chrome/browser/resources/settings/privacy_page/security_keys_credential_management_dialog.js index 146f226..062c329 100644 --- a/chrome/browser/resources/settings/privacy_page/security_keys_credential_management_dialog.js +++ b/chrome/browser/resources/settings/privacy_page/security_keys_credential_management_dialog.js
@@ -98,7 +98,9 @@ if (!this.$.pin.validate()) { return; } + this.confirmButtonDisabled_ = true; this.browserProxy_.providePIN(this.$.pin.value).then((retries) => { + this.confirmButtonDisabled_ = false; if (retries != null) { this.$.pin.showIncorrectPINError(retries); this.collectPin_(); @@ -258,9 +260,11 @@ assert(this.credentials_ && this.credentials_.length > 0); assert(this.checkedCredentialIds_.size > 0); + this.confirmButtonDisabled_ = true; this.deleteInProgress_ = true; this.browserProxy_.deleteCredentials(Array.from(this.checkedCredentialIds_)) .then((err) => { + this.confirmButtonDisabled_ = false; this.deleteInProgress_ = false; this.onError_(err); });
diff --git a/chrome/browser/resources/settings/privacy_page/security_keys_pin_field.html b/chrome/browser/resources/settings/privacy_page/security_keys_pin_field.html index bd62a4001..f185cba 100644 --- a/chrome/browser/resources/settings/privacy_page/security_keys_pin_field.html +++ b/chrome/browser/resources/settings/privacy_page/security_keys_pin_field.html
@@ -3,6 +3,7 @@ <link rel="import" href="chrome://resources/html/i18n_behavior.html"> <link rel="import" href="chrome://resources/cr_elements/cr_input/cr_input.html"> <link rel="import" href="chrome://resources/cr_elements/cr_icon_button/cr_icon_button.html"> +<link rel="import" href="chrome://resources/polymer/v1_0/iron-a11y-announcer/iron-a11y-announcer.html"> <link rel="import" href="../i18n_setup.html"> <link rel="import" href="../settings_shared_css.html">
diff --git a/chrome/browser/resources/settings/privacy_page/security_keys_pin_field.js b/chrome/browser/resources/settings/privacy_page/security_keys_pin_field.js index abace08a..72159d83 100644 --- a/chrome/browser/resources/settings/privacy_page/security_keys_pin_field.js +++ b/chrome/browser/resources/settings/privacy_page/security_keys_pin_field.js
@@ -18,7 +18,10 @@ label: String, /** The validation error label of the input field. */ - error: String, + error: { + type: String, + observer: 'errorChanged_', + }, /** The value of the input field. */ value: String, @@ -32,6 +35,10 @@ /** @override */ attached: function() { + Polymer.RenderStatus.afterNextRender(this, function() { + Polymer.IronA11yAnnouncer.requestAvailability(); + }); + this.inputVisible_ = false; }, @@ -158,4 +165,11 @@ return ''; }, + + /** @private */ + errorChanged_: function() { + // Make screen readers announce changes to the PIN validation error + // label. + this.fire('iron-announce', {text: this.error}); + }, });
diff --git a/chrome/browser/resources/settings/route.js b/chrome/browser/resources/settings/route.js index a966106..d6a6eae3 100644 --- a/chrome/browser/resources/settings/route.js +++ b/chrome/browser/resources/settings/route.js
@@ -353,7 +353,7 @@ r.SITE_SETTINGS_PAYMENT_HANDLER = r.SITE_SETTINGS.createChild('paymentHandler'); } - if (loadTimeData.getBoolean('enableBluetoothScanningContentSetting')) { + if (loadTimeData.getBoolean('enableExperimentalWebPlatformFeatures')) { r.SITE_SETTINGS_BLUETOOTH_SCANNING = r.SITE_SETTINGS.createChild('bluetoothScanning'); }
diff --git a/chrome/browser/resources/settings/site_settings/site_details.html b/chrome/browser/resources/settings/site_settings/site_details.html index 1472652c..24e293d 100644 --- a/chrome/browser/resources/settings/site_settings/site_details.html +++ b/chrome/browser/resources/settings/site_settings/site_details.html
@@ -207,7 +207,7 @@ icon="settings:payment-handler" id="paymentHandler" label="$i18n{siteSettingsPaymentHandler}"> </site-details-permission> - <template is="dom-if" if="[[enableBluetoothScanningContentSetting_]]"> + <template is="dom-if" if="[[enableExperimentalWebPlatformFeatures_]]"> <site-details-permission category="{{ContentSettingsTypes.BLUETOOTH_SCANNING}}" icon="settings:bluetooth-scanning" id="bluetoothScanning"
diff --git a/chrome/browser/resources/settings/site_settings/site_details.js b/chrome/browser/resources/settings/site_settings/site_details.js index 875533a5..6e85996 100644 --- a/chrome/browser/resources/settings/site_settings/site_details.js +++ b/chrome/browser/resources/settings/site_settings/site_details.js
@@ -63,14 +63,6 @@ }, /** @private */ - enableBluetoothScanningContentSetting_: { - type: Boolean, - value: function() { - return loadTimeData.getBoolean('enableBluetoothScanningContentSetting'); - } - }, - - /** @private */ enableNativeFileSystemWriteContentSetting_: { type: Boolean, value: function() { @@ -185,7 +177,9 @@ exceptionList.forEach((exception, i) => { // |exceptionList| should be in the same order as // |categoryList|. - permissionsMap[categoryList[i]].site = exception; + if (permissionsMap[categoryList[i]]) { + permissionsMap[categoryList[i]].site = exception; + } }); // The displayName won't change, so just use the first
diff --git a/chrome/browser/resources/settings/site_settings/site_settings_behavior.js b/chrome/browser/resources/settings/site_settings/site_settings_behavior.js index af45a35..a87ec9a 100644 --- a/chrome/browser/resources/settings/site_settings/site_settings_behavior.js +++ b/chrome/browser/resources/settings/site_settings/site_settings_behavior.js
@@ -196,15 +196,15 @@ settings.ContentSettingsTypes.SERIAL_PORTS, 'enableExperimentalWebPlatformFeatures'); addOrRemoveSettingWithFlag( + settings.ContentSettingsTypes.BLUETOOTH_SCANNING, + 'enableExperimentalWebPlatformFeatures'); + addOrRemoveSettingWithFlag( settings.ContentSettingsTypes.ADS, 'enableSafeBrowsingSubresourceFilter'); addOrRemoveSettingWithFlag( settings.ContentSettingsTypes.PAYMENT_HANDLER, 'enablePaymentHandlerContentSetting'); addOrRemoveSettingWithFlag( - settings.ContentSettingsTypes.BLUETOOTH_SCANNING, - 'enableBluetoothScanningContentSetting'); - addOrRemoveSettingWithFlag( settings.ContentSettingsTypes.NATIVE_FILE_SYSTEM_WRITE, 'enableNativeFileSystemWriteContentSetting'); return this.contentTypes_.slice(0);
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 a2adc7f..b65889b 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
@@ -247,7 +247,7 @@ '$i18nPolymer{siteSettingsPaymentHandlerBlock}')]]"></cr-link-row> </template> - <template is="dom-if" if="[[enableBluetoothScanningContentSetting_]]"> + <template is="dom-if" if="[[enableExperimentalWebPlatformFeatures_]]"> <cr-link-row class="hr two-line" data-route="SITE_SETTINGS_BLUETOOTH_SCANNING" id="bluetooth-scanning" label="$i18n{siteSettingsBluetoothScanning}"
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 25bee399..b04a5ac7 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
@@ -60,14 +60,6 @@ }, /** @private */ - enableBluetoothScanningContentSetting_: { - type: Boolean, - value: function() { - return loadTimeData.getBoolean('enableBluetoothScanningContentSetting'); - } - }, - - /** @private */ enableNativeFileSystemWriteContentSetting_: { type: Boolean, value: function() { @@ -130,7 +122,7 @@ pairs.push([R.SITE_SETTINGS_SERIAL_PORTS, 'serial-ports']); } - if (this.enableBluetoothScanningContentSetting_) { + if (this.enableExperimentalWebPlatformFeatures_) { pairs.push([R.SITE_SETTINGS_BLUETOOTH_SCANNING, 'bluetooth-scanning']); }
diff --git a/chrome/browser/ui/android/page_info/page_info_controller_android.cc b/chrome/browser/ui/android/page_info/page_info_controller_android.cc index 5e169791..d7b61dc 100644 --- a/chrome/browser/ui/android/page_info/page_info_controller_android.cc +++ b/chrome/browser/ui/android/page_info/page_info_controller_android.cc
@@ -125,7 +125,7 @@ permissions_to_display.push_back(CONTENT_SETTINGS_TYPE_AUTOPLAY); permissions_to_display.push_back(CONTENT_SETTINGS_TYPE_SOUND); base::CommandLine* cmd = base::CommandLine::ForCurrentProcess(); - if (cmd->HasSwitch(switches::kEnableWebBluetoothScanning)) + if (cmd->HasSwitch(switches::kEnableExperimentalWebPlatformFeatures)) permissions_to_display.push_back(CONTENT_SETTINGS_TYPE_BLUETOOTH_SCANNING); std::map<ContentSettingsType, ContentSetting>
diff --git a/chrome/browser/ui/autofill/chrome_autofill_client.cc b/chrome/browser/ui/autofill/chrome_autofill_client.cc index 4856b2b..a6d3e1e 100644 --- a/chrome/browser/ui/autofill/chrome_autofill_client.cc +++ b/chrome/browser/ui/autofill/chrome_autofill_client.cc
@@ -39,7 +39,6 @@ #include "components/autofill/content/browser/autofill_log_router_factory.h" #include "components/autofill/content/browser/content_autofill_driver.h" #include "components/autofill/content/browser/content_autofill_driver_factory.h" -#include "components/autofill/core/browser/autofill_internals_service.h" #include "components/autofill/core/browser/form_data_importer.h" #include "components/autofill/core/browser/payments/payments_client.h" #include "components/autofill/core/browser/ui/payments/card_unmask_prompt_view.h"
diff --git a/chrome/browser/ui/startup/bad_flags_prompt.cc b/chrome/browser/ui/startup/bad_flags_prompt.cc index 49d76be9..29d6a76 100644 --- a/chrome/browser/ui/startup/bad_flags_prompt.cc +++ b/chrome/browser/ui/startup/bad_flags_prompt.cc
@@ -126,11 +126,6 @@ // updating components won't be performed until shutdown. switches::kDisableBestEffortTasks, - // The UI for Web Bluetooth scanning is not yet implemented. Without the - // UI websites can scan for bluetooth without user intervention. Show a - // warning until the UI is complete. - switches::kEnableWebBluetoothScanning, - // Enables save data feature which can cause user traffic to be proxied via // Google's data reduction proxy servers. data_reduction_proxy::switches::kEnableDataReductionProxy,
diff --git a/chrome/browser/ui/views/autofill/autofill_popup_view_native_views.cc b/chrome/browser/ui/views/autofill/autofill_popup_view_native_views.cc index ee76040..827c232e 100644 --- a/chrome/browser/ui/views/autofill/autofill_popup_view_native_views.cc +++ b/chrome/browser/ui/views/autofill/autofill_popup_view_native_views.cc
@@ -317,8 +317,8 @@ /************** AutofillPopupItemView **************/ void AutofillPopupItemView::GetAccessibleNodeData(ui::AXNodeData* node_data) { - AutofillPopupController* controller = popup_view_->controller(); - auto suggestion = controller->GetSuggestionAt(line_number_); + AutofillPopupController* controller = popup_view()->controller(); + auto suggestion = controller->GetSuggestionAt(line_number()); std::vector<base::string16> text; text.push_back(suggestion.value); @@ -337,17 +337,17 @@ // Options are selectable. node_data->role = ax::mojom::Role::kMenuItem; node_data->AddBoolAttribute(ax::mojom::BoolAttribute::kSelected, - is_selected_); + is_selected()); // Compute set size and position in set, by checking the frontend_id of each // row, summing the number of non-separator rows, and subtracting the number // of separators found before this row from its |pos_in_set|. int set_size = 0; - int pos_in_set = line_number_ + 1; + int pos_in_set = line_number() + 1; for (int i = 0; i < controller->GetLineCount(); ++i) { if (controller->GetSuggestionAt(i).frontend_id == autofill::POPUP_ITEM_ID_SEPARATOR) { - if (i < line_number_) + if (i < line_number()) --pos_in_set; } else { ++set_size; @@ -358,27 +358,27 @@ } void AutofillPopupItemView::OnMouseEntered(const ui::MouseEvent& event) { - AutofillPopupController* controller = popup_view_->controller(); + AutofillPopupController* controller = popup_view()->controller(); if (controller) - controller->SetSelectedLine(line_number_); + controller->SetSelectedLine(line_number()); } void AutofillPopupItemView::OnMouseExited(const ui::MouseEvent& event) { - AutofillPopupController* controller = popup_view_->controller(); + AutofillPopupController* controller = popup_view()->controller(); if (controller) controller->SelectionCleared(); } void AutofillPopupItemView::OnMouseReleased(const ui::MouseEvent& event) { - AutofillPopupController* controller = popup_view_->controller(); + AutofillPopupController* controller = popup_view()->controller(); if (controller && event.IsOnlyLeftMouseButton() && HitTestPoint(event.location())) { - controller->AcceptSuggestion(line_number_); + controller->AcceptSuggestion(line_number()); } } void AutofillPopupItemView::CreateContent() { - AutofillPopupController* controller = popup_view_->controller(); + AutofillPopupController* controller = popup_view()->controller(); auto* layout_manager = SetLayoutManager(std::make_unique<views::BoxLayout>( views::BoxLayout::Orientation::kHorizontal, @@ -388,7 +388,7 @@ views::BoxLayout::CrossAxisAlignment::kCenter); const gfx::ImageSkia icon = - controller->layout_model().GetIconImage(line_number_); + controller->layout_model().GetIconImage(line_number()); if (!icon.isNull()) { AddIcon(icon); @@ -434,15 +434,15 @@ std::unique_ptr<views::View> AutofillPopupItemView::CreateValueLabel() { // TODO(crbug.com/831603): Remove elision responsibilities from controller. base::string16 text = - popup_view_->controller()->GetElidedValueAt(line_number_); - if (popup_view_->controller() - ->GetSuggestionAt(line_number_) + popup_view()->controller()->GetElidedValueAt(line_number()); + if (popup_view()->controller() + ->GetSuggestionAt(line_number()) .is_value_secondary) { return CreateSecondaryLabel(text); } auto text_label = CreateLabelWithStyleAndContext( - popup_view_->controller()->GetElidedValueAt(line_number_), + popup_view()->controller()->GetElidedValueAt(line_number()), ChromeTextContext::CONTEXT_BODY_TEXT_LARGE, GetPrimaryTextStyle()); const gfx::Font::Weight font_weight = GetPrimaryTextWeight(); @@ -512,8 +512,8 @@ std::unique_ptr<views::Background> AutofillPopupSuggestionView::CreateBackground() { - return is_selected_ ? views::CreateSolidBackground( - popup_view_->GetSelectedBackgroundColor()) + return is_selected() ? views::CreateSolidBackground( + popup_view()->GetSelectedBackgroundColor()) : nullptr; } @@ -535,7 +535,7 @@ std::unique_ptr<views::View> AutofillPopupSuggestionView::CreateSubtextLabel() { base::string16 label_text = - popup_view_->controller()->GetSuggestionAt(line_number_).label; + popup_view()->controller()->GetSuggestionAt(line_number()).label; if (label_text.empty()) return nullptr; @@ -590,9 +590,9 @@ int line_number, int frontend_id) : AutofillPopupSuggestionView(popup_view, line_number, frontend_id) { - origin_ = popup_view_->controller()->GetElidedLabelAt(line_number_); + origin_ = popup_view->controller()->GetElidedLabelAt(line_number); masked_password_ = - popup_view_->controller()->GetSuggestionAt(line_number_).additional_label; + popup_view->controller()->GetSuggestionAt(line_number).additional_label; } /************** AutofillPopupFooterView **************/ @@ -614,9 +614,9 @@ /*left=*/0, /*bottom=*/0, /*right=*/0, - /*color=*/popup_view_->GetSeparatorColor())); + /*color=*/popup_view()->GetSeparatorColor())); - AutofillPopupController* controller = popup_view_->controller(); + AutofillPopupController* controller = popup_view()->controller(); views::BoxLayout* layout_manager = SetLayoutManager(std::make_unique<views::BoxLayout>( @@ -627,7 +627,7 @@ views::BoxLayout::CrossAxisAlignment::kStretch); const gfx::ImageSkia icon = - controller->layout_model().GetIconImage(line_number_); + controller->layout_model().GetIconImage(line_number()); // A FooterView shows an icon, if any, on the trailing (right in LTR) side, // but the Show Account Cards context is an anomaly. Its icon is on the @@ -660,8 +660,8 @@ } std::unique_ptr<views::Background> AutofillPopupFooterView::CreateBackground() { - return is_selected_ ? views::CreateSolidBackground( - popup_view_->GetSelectedBackgroundColor()) + return is_selected() ? views::CreateSolidBackground( + popup_view()->GetSelectedBackgroundColor()) : nullptr; } @@ -703,7 +703,7 @@ SetLayoutManager(std::make_unique<views::FillLayout>()); views::Separator* separator = new views::Separator(); - separator->SetColor(popup_view_->GetSeparatorColor()); + separator->SetColor(popup_view()->GetSeparatorColor()); // Add some spacing between the the previous item and the separator. separator->SetPreferredHeight( views::MenuConfig::instance().separator_thickness); @@ -745,16 +745,16 @@ void AutofillPopupWarningView::GetAccessibleNodeData( ui::AXNodeData* node_data) { - AutofillPopupController* controller = popup_view_->controller(); + AutofillPopupController* controller = popup_view()->controller(); if (!controller) return; - node_data->SetName(controller->GetSuggestionAt(line_number_).value); + node_data->SetName(controller->GetSuggestionAt(line_number()).value); node_data->role = ax::mojom::Role::kStaticText; } void AutofillPopupWarningView::CreateContent() { - AutofillPopupController* controller = popup_view_->controller(); + AutofillPopupController* controller = popup_view()->controller(); int horizontal_margin = GetHorizontalMargin(); int vertical_margin = AutofillPopupBaseView::GetCornerRadius(); @@ -764,9 +764,9 @@ gfx::Insets(vertical_margin, horizontal_margin))); auto text_label = CreateLabelWithColorReadabilityDisabled( - controller->GetElidedValueAt(line_number_), + controller->GetElidedValueAt(line_number()), ChromeTextContext::CONTEXT_BODY_TEXT_LARGE, ChromeTextStyle::STYLE_RED); - text_label->SetEnabledColor(popup_view_->GetWarningColor()); + text_label->SetEnabledColor(popup_view()->GetWarningColor()); text_label->SetMultiLine(true); int max_width = std::min(kAutofillPopupMaxWidth,
diff --git a/chrome/browser/ui/views/autofill/autofill_popup_view_native_views.h b/chrome/browser/ui/views/autofill/autofill_popup_view_native_views.h index 5a4c38c0..8663b08d 100644 --- a/chrome/browser/ui/views/autofill/autofill_popup_view_native_views.h +++ b/chrome/browser/ui/views/autofill/autofill_popup_view_native_views.h
@@ -51,13 +51,20 @@ // method which calls Init before returning. void Init(); + AutofillPopupViewNativeViews* popup_view() { return popup_view_; } + int line_number() const { return line_number_; } + bool is_selected() const { return is_selected_; } + virtual void CreateContent() = 0; virtual void RefreshStyle() = 0; virtual std::unique_ptr<views::Background> CreateBackground() = 0; + private: AutofillPopupViewNativeViews* popup_view_; const int line_number_; bool is_selected_ = false; + + DISALLOW_COPY_AND_ASSIGN(AutofillPopupRowView); }; // Views implementation for the autofill and password suggestion.
diff --git a/chrome/browser/ui/views/drag_and_drop_interactive_uitest.cc b/chrome/browser/ui/views/drag_and_drop_interactive_uitest.cc index 70c2173f..30bb7c5 100644 --- a/chrome/browser/ui/views/drag_and_drop_interactive_uitest.cc +++ b/chrome/browser/ui/views/drag_and_drop_interactive_uitest.cc
@@ -26,13 +26,16 @@ #include "chrome/test/base/in_process_browser_test.h" #include "chrome/test/base/interactive_test_utils.h" #include "chrome/test/base/ui_test_utils.h" +#include "content/public/browser/navigation_controller.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/test/browser_test_utils.h" #include "content/public/test/content_browser_test.h" #include "content/public/test/content_browser_test_utils.h" #include "content/public/test/hit_test_region_observer.h" #include "content/public/test/test_frame_navigation_observer.h" +#include "content/public/test/test_navigation_observer.h" #include "content/public/test/test_utils.h" #include "net/base/escape.h" #include "net/dns/mock_host_resolver.h" @@ -88,16 +91,26 @@ // into the specified |location| inside |web_contents|. // |location| is relative to |web_contents|. // Returns true upon success. - bool SimulateDragEnter(gfx::Point location, const std::string& text) { + bool SimulateDragEnter(const gfx::Point& location, const std::string& text) { os_exchange_data_ = std::make_unique<ui::OSExchangeData>(); os_exchange_data_->SetString(base::UTF8ToUTF16(text)); return SimulateDragEnter(location, *os_exchange_data_); } + // Simulates notification that |url| was dragged from outside of the browser, + // into the specified |location| inside |web_contents|. + // |location| is relative to |web_contents|. + // Returns true upon success. + bool SimulateDragEnter(const gfx::Point& location, const GURL& url) { + os_exchange_data_ = std::make_unique<ui::OSExchangeData>(); + os_exchange_data_->SetURL(url, base::UTF8ToUTF16(url.spec())); + return SimulateDragEnter(location, *os_exchange_data_); + } + // Simulates dropping of the drag-and-dropped item. // SimulateDragEnter needs to be called first. // Returns true upon success. - bool SimulateDrop(gfx::Point location) { + bool SimulateDrop(const gfx::Point& location) { if (!active_drag_event_) { ADD_FAILURE() << "Cannot drop a drag that hasn't started yet."; return false; @@ -119,7 +132,8 @@ } private: - bool SimulateDragEnter(gfx::Point location, const ui::OSExchangeData& data) { + bool SimulateDragEnter(const gfx::Point& location, + const ui::OSExchangeData& data) { if (active_drag_event_) { ADD_FAILURE() << "Cannot start a new drag when old one hasn't ended yet."; return false; @@ -148,7 +162,7 @@ return delegate; } - void CalculateEventLocations(gfx::Point web_contents_relative_location, + void CalculateEventLocations(const gfx::Point& web_contents_relative_location, gfx::PointF* out_event_location, gfx::PointF* out_event_root_location) { gfx::NativeView view = web_contents_->GetNativeView(); @@ -664,6 +678,11 @@ return drag_simulator_->SimulateDragEnter(kMiddleOfRightFrame, text); } + bool SimulateDragEnterToRightFrame(const GURL& url) { + AssertTestPageIsLoaded(); + return drag_simulator_->SimulateDragEnter(kMiddleOfRightFrame, url); + } + bool SimulateDropInRightFrame() { AssertTestPageIsLoaded(); return drag_simulator_->SimulateDrop(kMiddleOfRightFrame); @@ -789,6 +808,83 @@ } } +#if defined(OS_WIN) +// Flaky: https://crbug.com/988938 +#define MAYBE_DropValidUrlFromOutside DISABLED_DropValidUrlFromOutside +#else +#define MAYBE_DropValidUrlFromOutside DropValidUrlFromOutside +#endif +// Scenario: drag URL from outside the browser and drop to the right frame. +// Mostly focuses on covering the navigation path (the dragover and/or drop DOM +// events are already covered via the DropTextFromOutside test above). +IN_PROC_BROWSER_TEST_P(DragAndDropBrowserTest, MAYBE_DropValidUrlFromOutside) { + std::string frame_site = use_cross_site_subframe() ? "b.com" : "a.com"; + ASSERT_TRUE(NavigateToTestPage("a.com")); + ASSERT_TRUE(NavigateRightFrame(frame_site, "title1.html")); + content::WebContents* web_contents = + browser()->tab_strip_model()->GetActiveWebContents(); + content::NavigationController& controller = web_contents->GetController(); + int initial_history_count = controller.GetEntryCount(); + + // Drag a normal URL from outside the browser into/over the right frame. + GURL dragged_url = embedded_test_server()->GetURL("d.com", "/title2.html"); + ASSERT_TRUE(SimulateDragEnterToRightFrame(dragged_url)); + + // Drop into the right frame - this should initiate navigating the main frame + // to |dragged_url|. + content::TestNavigationObserver nav_observer(web_contents, 1); + ASSERT_TRUE(SimulateDropInRightFrame()); + + // Verify that the main frame got navigated to |dragged_url|. + nav_observer.Wait(); + EXPECT_EQ(dragged_url, web_contents->GetMainFrame()->GetLastCommittedURL()); + EXPECT_EQ(initial_history_count + 1, controller.GetEntryCount()); +} + +#if defined(OS_WIN) +// Flaky: https://crbug.com/988938 +#define MAYBE_DropForbiddenUrlFromOutside DISABLED_DropForbiddenUrlFromOutside +#else +#define MAYBE_DropForbiddenUrlFromOutside DropForbiddenUrlFromOutside +#endif +// Scenario: drag URL from outside the browser and drop to the right frame. +// Mostly focuses on covering the navigation path (the dragover and/or drop DOM +// events are already covered via the DropTextFromOutside test above). +IN_PROC_BROWSER_TEST_P(DragAndDropBrowserTest, + MAYBE_DropForbiddenUrlFromOutside) { + std::string frame_site = use_cross_site_subframe() ? "b.com" : "a.com"; + ASSERT_TRUE(NavigateToTestPage("a.com")); + ASSERT_TRUE(NavigateRightFrame(frame_site, "title1.html")); + content::WebContents* web_contents = + browser()->tab_strip_model()->GetActiveWebContents(); + content::NavigationController& controller = web_contents->GetController(); + int initial_history_count = controller.GetEntryCount(); + + // Drag URL from outside the browser into/over the right frame. The test uses + // a URL that: + // 1. Passes RenderWidgetHostImpl::FilterDropData checks. + // 2. Fails CanDisplay checks in Blink (e.g. in RemoteFrame::Navigate). + // - This condition trigger the crash from https://crbug.com/1003169 + // 3. Passes BeginNavigation checks + // - This rules out "chrome-error://blah". + GURL dragged_url("blob:null/some-guid"); + ASSERT_TRUE(SimulateDragEnterToRightFrame(dragged_url)); + + // Drop into the right frame - this should *not* initiate navigating the main + // frame to |dragged_url| (because this would be a forbidden, web->file + // navigation). + ASSERT_TRUE(SimulateDropInRightFrame()); + + // Verify that the right frame is still responsive (this is a regression test + // for https://crbug.com/1003169. + ASSERT_TRUE(right_frame()->GetProcess()->IsInitializedAndNotDead()); + EXPECT_EQ(123, content::EvalJs(right_frame(), "123")); + + // Verify that the history remains unchanged. + EXPECT_NE(dragged_url, web_contents->GetMainFrame()->GetLastCommittedURL()); + EXPECT_EQ(initial_history_count, controller.GetEntryCount()); +} + #if !defined(NDEBUG) || defined(OS_WIN) // Flaky: https://crbug.com/988938 #define MAYBE_DragStartInFrame DISABLED_DragStartInFrame
diff --git a/chrome/browser/ui/views/profiles/profile_menu_view_base.cc b/chrome/browser/ui/views/profiles/profile_menu_view_base.cc index df3774a..7f6f79c 100644 --- a/chrome/browser/ui/views/profiles/profile_menu_view_base.cc +++ b/chrome/browser/ui/views/profiles/profile_menu_view_base.cc
@@ -239,7 +239,9 @@ const SkColor kIconColor = ui::NativeTheme::GetInstanceForNativeUi()->GetSystemColor( ui::NativeTheme::kColorId_DefaultIconColor); - const SkColor kBorderColor = SkColorSetA(kIconColor, /*alpha=*/100); + const SkColor kBorderColor = + ui::NativeTheme::GetInstanceForNativeUi()->GetSystemColor( + ui::NativeTheme::kColorId_MenuSeparatorColor); constexpr int kBorderThickness = 1; constexpr int kButtonRadius = kIconSize / 2 + kIconPadding;
diff --git a/chrome/browser/ui/webui/devtools_ui_data_source.cc b/chrome/browser/ui/webui/devtools_ui_data_source.cc index 95e73c5..c29ccd0 100644 --- a/chrome/browser/ui/webui/devtools_ui_data_source.cc +++ b/chrome/browser/ui/webui/devtools_ui_data_source.cc
@@ -57,6 +57,9 @@ } else if (base::EndsWith(filename, ".js", base::CompareCase::INSENSITIVE_ASCII)) { return "application/javascript"; + } else if (base::EndsWith(filename, ".mjs", + base::CompareCase::INSENSITIVE_ASCII)) { + return "application/javascript"; } else if (base::EndsWith(filename, ".png", base::CompareCase::INSENSITIVE_ASCII)) { return "image/png";
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 7a3d590..430ec1a 100644 --- a/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc +++ b/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc
@@ -3058,10 +3058,6 @@ cmd.HasSwitch(::switches::kEnableExperimentalWebPlatformFeatures)); html_source->AddBoolean( - "enableBluetoothScanningContentSetting", - cmd.HasSwitch(::switches::kEnableWebBluetoothScanning)); - - html_source->AddBoolean( "enableNativeFileSystemWriteContentSetting", base::FeatureList::IsEnabled(::blink::features::kNativeFileSystemAPI));
diff --git a/chrome/browser/util/android/BUILD.gn b/chrome/browser/util/android/BUILD.gn index c664532..efb79a4 100644 --- a/chrome/browser/util/android/BUILD.gn +++ b/chrome/browser/util/android/BUILD.gn
@@ -5,7 +5,10 @@ import("//build/config/android/rules.gni") android_library("java") { - java_files = [ "java/src/org/chromium/chrome/browser/util/HashUtil.java" ] + java_files = [ + "java/src/org/chromium/chrome/browser/util/HashUtil.java", + "java/src/org/chromium/chrome/browser/util/IntentUtils.java", + ] deps = [ "//base:base_java", "//content/public/android:content_java",
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/util/IntentUtils.java b/chrome/browser/util/android/java/src/org/chromium/chrome/browser/util/IntentUtils.java similarity index 100% rename from chrome/android/java/src/org/chromium/chrome/browser/util/IntentUtils.java rename to chrome/browser/util/android/java/src/org/chromium/chrome/browser/util/IntentUtils.java
diff --git a/chrome/browser/vr/service/vr_service_impl.cc b/chrome/browser/vr/service/vr_service_impl.cc index 3fbb23d9..31f1a16b0 100644 --- a/chrome/browser/vr/service/vr_service_impl.cc +++ b/chrome/browser/vr/service/vr_service_impl.cc
@@ -366,7 +366,7 @@ void VRServiceImpl::ShowConsentPrompt( device::mojom::XRSessionOptionsPtr options, device::mojom::VRService::RequestSessionCallback callback, - const BrowserXRRuntime* runtime, + BrowserXRRuntime* runtime, std::set<device::mojom::XRSessionFeature> requested_features) { DCHECK(options); DCHECK(runtime); @@ -378,7 +378,7 @@ // WebVR did not require permissions. // TODO(crbug.com/968221): Address privacy requirements for inline sessions if (options->is_legacy_webvr) { - DoRequestSession(std::move(options), std::move(callback), + DoRequestSession(std::move(options), std::move(callback), runtime, std::move(requested_features)); return; } @@ -391,7 +391,7 @@ if (consent_level == XrConsentPromptLevel::kNone || IsConsentGrantedForDevice(runtime->GetId(), consent_level) || IsXrDeviceConsentPromptDisabledForTesting()) { - DoRequestSession(std::move(options), std::move(callback), + DoRequestSession(std::move(options), std::move(callback), runtime, std::move(requested_features)); return; } @@ -405,8 +405,8 @@ render_frame_host_->GetRoutingID(), base::BindOnce(&VRServiceImpl::OnConsentResult, weak_ptr_factory_.GetWeakPtr(), std::move(options), - std::move(callback), std::move(requested_features), - consent_level)); + std::move(callback), runtime->GetId(), + std::move(requested_features), consent_level)); return; #else std::move(callback).Run(nullptr); @@ -419,7 +419,8 @@ render_frame_host_->GetRoutingID(), consent_level, base::BindOnce(&VRServiceImpl::OnConsentResult, weak_ptr_factory_.GetWeakPtr(), std::move(options), - std::move(callback), std::move(requested_features))); + std::move(callback), runtime->GetId(), + std::move(requested_features))); return; } #elif defined(OS_WIN) @@ -427,7 +428,8 @@ GetWebContents(), consent_level, base::BindOnce(&VRServiceImpl::OnConsentResult, weak_ptr_factory_.GetWeakPtr(), std::move(options), - std::move(callback), std::move(requested_features))); + std::move(callback), runtime->GetId(), + std::move(requested_features))); return; #endif @@ -437,6 +439,7 @@ void VRServiceImpl::OnConsentResult( device::mojom::XRSessionOptionsPtr options, device::mojom::VRService::RequestSessionCallback callback, + device::mojom::XRDeviceId expected_runtime_id, std::set<device::mojom::XRSessionFeature> enabled_features, XrConsentPromptLevel consent_level, bool is_consent_granted) { @@ -447,11 +450,15 @@ return; } + // Get the runtime again, since we're running in an async context + // and the pointer returned from `GetRuntimeForOptions` is non-owning. auto* runtime = runtime_manager_->GetRuntimeForOptions(options.get()); - if (!runtime) { + + // Ensure that it's the same runtime as the one we expect. + if (!runtime || runtime->GetId() != expected_runtime_id) { std::move(callback).Run( device::mojom::RequestSessionResult::NewFailureReason( - device::mojom::RequestSessionError::NO_RUNTIME_FOUND)); + device::mojom::RequestSessionError::UNKNOWN_RUNTIME_ERROR)); return; } AddConsentGrantedDevice(runtime->GetId(), consent_level); @@ -465,23 +472,17 @@ return; } - DoRequestSession(std::move(options), std::move(callback), + DoRequestSession(std::move(options), std::move(callback), runtime, std::move(enabled_features)); } void VRServiceImpl::DoRequestSession( device::mojom::XRSessionOptionsPtr options, device::mojom::VRService::RequestSessionCallback callback, + BrowserXRRuntime* runtime, std::set<device::mojom::XRSessionFeature> enabled_features) { // Get the runtime we'll be creating a session with. - BrowserXRRuntime* runtime = - runtime_manager_->GetRuntimeForOptions(options.get()); - if (!runtime) { - std::move(callback).Run( - device::mojom::RequestSessionResult::NewFailureReason( - device::mojom::RequestSessionError::NO_RUNTIME_FOUND)); - return; - } + DCHECK(runtime); device::mojom::XRDeviceId session_runtime_id = runtime->GetId(); TRACE_EVENT_INSTANT1("xr", "GetRuntimeForOptions", TRACE_EVENT_SCOPE_THREAD,
diff --git a/chrome/browser/vr/service/vr_service_impl.h b/chrome/browser/vr/service/vr_service_impl.h index aa435b8..42e01d0 100644 --- a/chrome/browser/vr/service/vr_service_impl.h +++ b/chrome/browser/vr/service/vr_service_impl.h
@@ -131,15 +131,17 @@ void DoRequestSession( device::mojom::XRSessionOptionsPtr options, device::mojom::VRService::RequestSessionCallback callback, + BrowserXRRuntime* runtime, std::set<device::mojom::XRSessionFeature> enabled_features); void ShowConsentPrompt( device::mojom::XRSessionOptionsPtr options, device::mojom::VRService::RequestSessionCallback callback, - const BrowserXRRuntime* runtime, + BrowserXRRuntime* runtime, std::set<device::mojom::XRSessionFeature> requested_features); void OnConsentResult( device::mojom::XRSessionOptionsPtr options, device::mojom::VRService::RequestSessionCallback callback, + device::mojom::XRDeviceId expected_runtime_id, std::set<device::mojom::XRSessionFeature> enabled_features, XrConsentPromptLevel consent_level, bool is_consent_granted);
diff --git a/chrome/browser/vr/webxr_vr_input_browser_test.cc b/chrome/browser/vr/webxr_vr_input_browser_test.cc index b33ea5d..c6cb021d 100644 --- a/chrome/browser/vr/webxr_vr_input_browser_test.cc +++ b/chrome/browser/vr/webxr_vr_input_browser_test.cc
@@ -557,10 +557,12 @@ // only supports that type of controller and fills in default values if // those inputs don't exist. VerifyInputSourceProfilesArray( - t, {"windows-mixed-reality", "grip-touchpad-thumbstick-controller"}); + t, + {"windows-mixed-reality", "generic-trigger-grip-touchpad-thumbstick"}); } else if (t->GetRuntimeType() == XrBrowserTestBase::RuntimeType::RUNTIME_OPENVR) { - VerifyInputSourceProfilesArray(t, {"test-value-test-value", "controller"}); + VerifyInputSourceProfilesArray( + t, {"test-value-test-value", "generic-trigger"}); } t->RunJavaScriptOrFail("done()"); @@ -631,10 +633,12 @@ // only supports that type of controller and fills in default values if // those inputs don't exist. VerifyInputSourceProfilesArray( - t, {"windows-mixed-reality", "grip-touchpad-thumbstick-controller"}); + t, + {"windows-mixed-reality", "generic-trigger-grip-touchpad-thumbstick"}); } else if (t->GetRuntimeType() == XrBrowserTestBase::RuntimeType::RUNTIME_OPENVR) { - VerifyInputSourceProfilesArray(t, {"test-value-test-value", "controller"}); + VerifyInputSourceProfilesArray( + t, {"test-value-test-value", "generic-trigger"}); } t->RunJavaScriptOrFail("done()"); @@ -734,11 +738,13 @@ // only supports that type of controller and fills in default values if // those inputs don't exist. VerifyInputSourceProfilesArray( - t, {"windows-mixed-reality", "grip-touchpad-thumbstick-controller"}); + t, + {"windows-mixed-reality", "generic-trigger-grip-touchpad-thumbstick"}); } else if (t->GetRuntimeType() == XrBrowserTestBase::RuntimeType::RUNTIME_OPENVR) { VerifyInputSourceProfilesArray( - t, {"test-value-test-value", "grip-touchpad-thumbstick-controller"}); + t, + {"test-value-test-value", "generic-trigger-grip-touchpad-thumbstick"}); } t->RunJavaScriptOrFail("done()"); @@ -854,7 +860,7 @@ kPollTimeoutShort); VerifyInputSourceProfilesArray( - this, {"test-value-test-value", "touchpad-controller"}); + this, {"test-value-test-value", "generic-trigger-touchpad"}); RunJavaScriptOrFail("done()"); EndTest(); @@ -897,7 +903,7 @@ PollJavaScriptBooleanOrFail("isButtonCountEqualTo(3)", kPollTimeoutShort); VerifyInputSourceProfilesArray( - this, {"test-value-test-value", "grip-touchpad-controller"}); + this, {"test-value-test-value", "generic-trigger-grip-touchpad"}); RunJavaScriptOrFail("done()"); EndTest();
diff --git a/chrome/test/android/BUILD.gn b/chrome/test/android/BUILD.gn index 7f7ffa6..b2cdab76 100644 --- a/chrome/test/android/BUILD.gn +++ b/chrome/test/android/BUILD.gn
@@ -160,6 +160,7 @@ "//base:base_java_test_support", "//chrome/android:chrome_java", "//chrome/android/third_party/compositor_animator:compositor_animator_java", + "//chrome/browser/util/android:java", "//components/bookmarks/common/android:bookmarks_java", "//components/embedder_support/android:web_contents_delegate_java", "//components/invalidation/impl:java",
diff --git a/chrome/test/base/browser_tests_main_chromeos.cc b/chrome/test/base/browser_tests_main_chromeos.cc index 55106b29..5426703 100644 --- a/chrome/test/base/browser_tests_main_chromeos.cc +++ b/chrome/test/base/browser_tests_main_chromeos.cc
@@ -30,8 +30,10 @@ public: int RunTestSuite(int argc, char** argv) override { BrowserTestSuiteChromeOS test_suite(argc, argv); - // Browser tests are expected not to tear-down various globals. + // Browser tests are expected not to tear-down various globals and may + // complete with the thread priority being above NORMAL. test_suite.DisableCheckForLeakedGlobals(); + test_suite.DisableCheckForThreadPriorityAtTestEnd(); return test_suite.Run(); } };
diff --git a/chrome/test/base/chrome_test_launcher.cc b/chrome/test/base/chrome_test_launcher.cc index ad45e43b..76fdb406 100644 --- a/chrome/test/base/chrome_test_launcher.cc +++ b/chrome/test/base/chrome_test_launcher.cc
@@ -76,8 +76,10 @@ int ChromeTestSuiteRunner::RunTestSuite(int argc, char** argv) { ChromeTestSuite test_suite(argc, argv); - // Browser tests are expected not to tear-down various globals. + // Browser tests are expected not to tear-down various globals and may + // complete with the thread priority being above NORMAL. test_suite.DisableCheckForLeakedGlobals(); + test_suite.DisableCheckForThreadPriorityAtTestEnd(); #if defined(OS_ANDROID) // Android browser tests run child processes as threads instead. content::ContentTestSuiteBase::RegisterInProcessThreads();
diff --git a/chrome/test/base/interactive_ui_tests_main.cc b/chrome/test/base/interactive_ui_tests_main.cc index 051d4b3..abc8ab2 100644 --- a/chrome/test/base/interactive_ui_tests_main.cc +++ b/chrome/test/base/interactive_ui_tests_main.cc
@@ -41,8 +41,10 @@ protected: // ChromeTestSuite overrides: void Initialize() override { - // Browser tests are expected not to tear-down various globals. + // Browser tests are expected not to tear-down various globals and may + // complete with the thread priority being above NORMAL. base::TestSuite::DisableCheckForLeakedGlobals(); + base::TestSuite::DisableCheckForThreadPriorityAtTestEnd(); ChromeTestSuite::Initialize();
diff --git a/chrome/test/data/webui/settings/site_details_tests.js b/chrome/test/data/webui/settings/site_details_tests.js index d5dc15f..e886e50e4 100644 --- a/chrome/test/data/webui/settings/site_details_tests.js +++ b/chrome/test/data/webui/settings/site_details_tests.js
@@ -87,6 +87,12 @@ settings.ContentSettingsTypes.PAYMENT_HANDLER, [test_util.createRawSiteException('https://foo.com:443')]), test_util.createContentSettingTypeToValuePair( + settings.ContentSettingsTypes.SERIAL_PORTS, + [test_util.createRawSiteException('https://foo.com:443')]), + test_util.createContentSettingTypeToValuePair( + settings.ContentSettingsTypes.BLUETOOTH_SCANNING, + [test_util.createRawSiteException('https://foo.com:443')]), + test_util.createContentSettingTypeToValuePair( settings.ContentSettingsTypes.NATIVE_FILE_SYSTEM_WRITE, [test_util.createRawSiteException('https://foo.com:443', { setting: settings.ContentSetting.BLOCK, @@ -126,6 +132,10 @@ nonSiteDetailsContentSettingsTypes.push( settings.ContentSettingsTypes.PROTECTED_CONTENT); } + const experimentalSiteDetailsContentSettingsTypes = [ + settings.ContentSettingsTypes.SERIAL_PORTS, + settings.ContentSettingsTypes.BLUETOOTH_SCANNING, + ]; // A list of optionally shown content settings mapped to their loadTimeData // flag string. @@ -137,15 +147,11 @@ optionalSiteDetailsContentSettingsTypes[settings.ContentSettingsTypes .PAYMENT_HANDLER] = 'enablePaymentHandlerContentSetting'; - optionalSiteDetailsContentSettingsTypes[settings.ContentSettingsTypes - .SERIAL_PORTS] = - 'enableExperimentalWebPlatformFeatures'; - optionalSiteDetailsContentSettingsTypes[settings.ContentSettingsTypes - .BLUETOOTH_SCANNING] = - 'enableBluetoothScanningContentSetting'; + optionalSiteDetailsContentSettingsTypes[settings.ContentSettingsTypes .NATIVE_FILE_SYSTEM_WRITE] = 'enableNativeFileSystemWriteContentSetting'; + browserProxy.setPrefs(prefs); // First, explicitly set all the optional settings to false. @@ -162,6 +168,7 @@ const numContentSettings = Object.keys(settings.ContentSettingsTypes).length - nonSiteDetailsContentSettingsTypes.length - + experimentalSiteDetailsContentSettingsTypes.length - Object.keys(optionalSiteDetailsContentSettingsTypes).length; const loadTimeDataOverride = {}; @@ -180,6 +187,27 @@ testElement = createSiteDetails('https://foo.com:443'); assertEquals(numContentSettings, testElement.getCategoryList().length); } + + const numContentSettings = + Object.keys(settings.ContentSettingsTypes).length - + nonSiteDetailsContentSettingsTypes.length - + Object.keys(optionalSiteDetailsContentSettingsTypes).length; + + // Explicitly set all the optional settings to true. + const loadTimeDataOverride = {}; + loadTimeDataOverride['enableExperimentalWebPlatformFeatures'] = true; + loadTimeData.overrideValues(loadTimeDataOverride); + testElement = createSiteDetails('https://foo.com:443'); + assertEquals(numContentSettings, testElement.getCategoryList().length); + + // Check for setting = off at the end to ensure that the setting does + // not carry over for the next iteration. + loadTimeDataOverride['enableExperimentalWebPlatformFeatures'] = false; + loadTimeData.overrideValues(loadTimeDataOverride); + testElement = createSiteDetails('https://foo.com:443'); + assertEquals( + numContentSettings - experimentalSiteDetailsContentSettingsTypes.length, + testElement.getCategoryList().length); }); test('usage heading shows properly', function() {
diff --git a/chromecast/app/cast_test_launcher.cc b/chromecast/app/cast_test_launcher.cc index 34693e3..e9719c0 100644 --- a/chromecast/app/cast_test_launcher.cc +++ b/chromecast/app/cast_test_launcher.cc
@@ -23,8 +23,10 @@ int RunTestSuite(int argc, char** argv) override { base::TestSuite test_suite(argc, argv); - // Browser tests are expected not to tear-down various globals. + // Browser tests are expected not to tear-down various globals and may + // complete with the thread priority being above NORMAL. test_suite.DisableCheckForLeakedGlobals(); + test_suite.DisableCheckForThreadPriorityAtTestEnd(); return test_suite.Run(); }
diff --git a/chromecast/base/cast_features.cc b/chromecast/base/cast_features.cc index f101ca6..f6ec5fc9 100644 --- a/chromecast/base/cast_features.cc +++ b/chromecast/base/cast_features.cc
@@ -155,6 +155,9 @@ const base::Feature kUseQueryableDataBackend{"use_queryable_data_backend", base::FEATURE_DISABLED_BY_DEFAULT}; +const base::Feature kEnableSideGesturePassThrough{ + "enable_side_gesture_pass_through", base::FEATURE_DISABLED_BY_DEFAULT}; + // End Chromecast Feature definitions. const base::Feature* kFeatures[] = { &kAllowUserMediaAccess, @@ -164,6 +167,7 @@ &kDisableIdleSocketsCloseOnMemoryPressure, &kEnableGeneralAudienceBrowsing, &kUseQueryableDataBackend, + &kEnableSideGesturePassThrough, }; // An iterator for a base::DictionaryValue. Use an alias for brevity in loops.
diff --git a/chromecast/base/cast_features.h b/chromecast/base/cast_features.h index 8d1f0b5..6de0d6b 100644 --- a/chromecast/base/cast_features.h +++ b/chromecast/base/cast_features.h
@@ -30,6 +30,7 @@ extern const base::Feature kDisableIdleSocketsCloseOnMemoryPressure; extern const base::Feature kEnableGeneralAudienceBrowsing; extern const base::Feature kUseQueryableDataBackend; +extern const base::Feature kEnableSideGesturePassThrough; // Get an iterable list of all of the cast features for checking all features as // a collection.
diff --git a/chromecast/browser/accessibility/touch_exploration_controller.cc b/chromecast/browser/accessibility/touch_exploration_controller.cc index c8ef3f0..751e323 100644 --- a/chromecast/browser/accessibility/touch_exploration_controller.cc +++ b/chromecast/browser/accessibility/touch_exploration_controller.cc
@@ -14,6 +14,8 @@ #include "base/bind.h" #include "base/logging.h" #include "base/strings/string_number_conversions.h" +#include "chromecast/base/cast_features.h" +#include "chromecast/base/chromecast_switches.h" #include "ui/aura/client/cursor_client.h" #include "ui/aura/window.h" #include "ui/aura/window_event_dispatcher.h" @@ -29,9 +31,21 @@ VlogEvent(event, __func__) namespace chromecast { -namespace shell { namespace { +// TODO(rmrossi): Unify with identical values in SideSwipeDetector. + +// The number of pixels from the very left or right of the screen to consider as +// a valid origin for the left or right swipe gesture. +constexpr int kDefaultSideGestureStartWidth = 35; + +// The number of pixels from the very top or bottom of the screen to consider as +// a valid origin for the top or bottom swipe gesture. +constexpr int kDefaultSideGestureStartHeight = 35; + +} // namespace + +namespace shell { void SetTouchAccessibilityFlag(ui::Event* event) { // This flag is used to identify mouse move events that were generated from @@ -39,8 +53,6 @@ event->set_flags(event->flags() | ui::EF_TOUCH_ACCESSIBILITY); } -} // namespace - TouchExplorationController::TouchExplorationController( aura::Window* root_window, TouchExplorationControllerDelegate* delegate, @@ -52,7 +64,14 @@ anchor_point_state_(ANCHOR_POINT_NONE), gesture_provider_(new ui::GestureProviderAura(this, this)), prev_state_(NO_FINGERS_DOWN), - DVLOG_on_(true) {} + DVLOG_on_(true), + gesture_start_width_(GetSwitchValueInt(switches::kSystemGestureStartWidth, + kDefaultSideGestureStartWidth)), + gesture_start_height_( + GetSwitchValueInt(switches::kSystemGestureStartHeight, + kDefaultSideGestureStartHeight)), + side_gesture_pass_through_( + chromecast::IsFeatureEnabled(kEnableSideGesturePassThrough)) {} TouchExplorationController::~TouchExplorationController() {} @@ -172,10 +191,21 @@ } DVLOG_EVENT(touch_event); + // Enter pass through mode when side gestures are set to pass-through. + if (side_gesture_pass_through_ && type == ui::ET_TOUCH_PRESSED && + FindEdgesWithinInset(location, gesture_start_width_, + gesture_start_height_) != NO_EDGE) { + SET_STATE(ONE_FINGER_PASSTHROUGH); + initial_press_ = std::make_unique<ui::TouchEvent>(touch_event); + last_unused_finger_event_.reset(new ui::TouchEvent(touch_event)); + return SendEvent(continuation, &event); + } + // In order to avoid accidentally double tapping when moving off the edge // of the screen, the state will be rewritten to NoFingersDown. if ((type == ui::ET_TOUCH_RELEASED || type == ui::ET_TOUCH_CANCELLED) && - FindEdgesWithinInset(location, kLeavingScreenEdge) != NO_EDGE) { + FindEdgesWithinInset(location, kLeavingScreenEdge, kLeavingScreenEdge) != + NO_EDGE) { if (DVLOG_on_) DVLOG(1) << "Leaving screen"; @@ -851,9 +881,10 @@ } int TouchExplorationController::FindEdgesWithinInset(gfx::Point point_dip, - float inset) { + float horiz_inset, + float vert_inset) { gfx::RectF inner_bounds_dip(root_window_->bounds()); - inner_bounds_dip.Inset(inset, inset); + inner_bounds_dip.Inset(horiz_inset, vert_inset); // Bitwise manipulation in order to determine where on the screen the point // lies. If more than one bit is turned on, then it is a corner where the two
diff --git a/chromecast/browser/accessibility/touch_exploration_controller.h b/chromecast/browser/accessibility/touch_exploration_controller.h index 2ef33f6..080f375 100644 --- a/chromecast/browser/accessibility/touch_exploration_controller.h +++ b/chromecast/browser/accessibility/touch_exploration_controller.h
@@ -282,7 +282,6 @@ // Within this many dips of the screen edge, the release event generated will // reset the state to NoFingersDown. - // TODO(kpschoedel): Unify with identical value in SideSwipeDetector. const float kLeavingScreenEdge = 35; // Touch within this distance from a corner can invoke corner passthrough. @@ -394,7 +393,9 @@ // edge. If it is within the given inset of two edges, returns an int with // both bits that represent the respective edges turned on. Otherwise returns // SCREEN_CENTER. - int FindEdgesWithinInset(gfx::Point point, float inset); + int FindEdgesWithinInset(gfx::Point point, + float horiz_inset, + float vert_inset); // Set the state and modifies any variables related to the state change. // (e.g. resetting the gesture provider). @@ -497,6 +498,14 @@ // The maximum touch points seen in the current gesture. size_t max_gesture_touch_points_ = 0; + // The horizontal and vertical insets for side gesture detection. + const int gesture_start_width_; + const int gesture_start_height_; + + // Whether or not to trigger pass through mode when touch events come + // in from the edges. + bool side_gesture_pass_through_; + DISALLOW_COPY_AND_ASSIGN(TouchExplorationController); };
diff --git a/chromecast/browser/cast_web_contents_impl.cc b/chromecast/browser/cast_web_contents_impl.cc index a97d389..600b99df 100644 --- a/chromecast/browser/cast_web_contents_impl.cc +++ b/chromecast/browser/cast_web_contents_impl.cc
@@ -366,9 +366,10 @@ render_frame_host->GetRemoteAssociatedInterfaces()); } - chromecast::shell::mojom::FeatureManagerPtr feature_manager_ptr; - render_frame_host->GetRemoteInterfaces()->GetInterface(&feature_manager_ptr); - feature_manager_ptr->ConfigureFeatures(GetRendererFeatures()); + mojo::Remote<chromecast::shell::mojom::FeatureManager> feature_manager_remote; + render_frame_host->GetRemoteInterfaces()->GetInterface( + feature_manager_remote.BindNewPipeAndPassReceiver()); + feature_manager_remote->ConfigureFeatures(GetRendererFeatures()); chromecast::shell::mojom::MediaPlaybackOptionsAssociatedPtr media_playback_options;
diff --git a/chromecast/graphics/cast_window_manager_aura.cc b/chromecast/graphics/cast_window_manager_aura.cc index 1329615..3ab7e3fd 100644 --- a/chromecast/graphics/cast_window_manager_aura.cc +++ b/chromecast/graphics/cast_window_manager_aura.cc
@@ -6,6 +6,7 @@ #include "base/memory/ptr_util.h" #include "build/build_config.h" +#include "chromecast/base/cast_features.h" #include "chromecast/graphics/cast_focus_client_aura.h" #include "chromecast/graphics/cast_touch_activity_observer.h" #include "chromecast/graphics/cast_touch_event_gate.h" @@ -280,8 +281,11 @@ system_gesture_event_handler_ = std::make_unique<CastSystemGestureEventHandler>( system_gesture_dispatcher_.get(), root_window); - side_swipe_detector_ = std::make_unique<SideSwipeDetector>( - system_gesture_dispatcher_.get(), root_window); + // No need for the edge swipe detector when side gestures are pass-through. + if (!chromecast::IsFeatureEnabled(kEnableSideGesturePassThrough)) { + side_swipe_detector_ = std::make_unique<SideSwipeDetector>( + system_gesture_dispatcher_.get(), root_window); + } } void CastWindowManagerAura::OnWindowOrderChanged(
diff --git a/chromeos/constants/chromeos_switches.cc b/chromeos/constants/chromeos_switches.cc index 013d73f..7883c182 100644 --- a/chromeos/constants/chromeos_switches.cc +++ b/chromeos/constants/chromeos_switches.cc
@@ -557,6 +557,9 @@ } bool ShouldShowScrollableShelf() { + // If we're showing the new shelf design, also enable scrollable shelf. + if (ShouldShowShelfHotseat()) + return true; return base::CommandLine::ForCurrentProcess()->HasSwitch(kShelfScrollable); }
diff --git a/chromeos/dbus/debug_daemon_client.h b/chromeos/dbus/debug_daemon_client.h index eca1ff2..b67dc797 100644 --- a/chromeos/dbus/debug_daemon_client.h +++ b/chromeos/dbus/debug_daemon_client.h
@@ -224,7 +224,9 @@ // A callback to handle the result of StartConcierge/StopConcierge. using ConciergeCallback = base::OnceCallback<void(bool success)>; // Calls debugd::kStartVmConcierge, which starts the Concierge service. - // |callback| is called when the method finishes. + // |callback| is called when the method finishes. If the |callback| is called + // with true, it is guaranteed that the service is ready to accept requests. + // It is not necessary for ConciergeClient to use WaitForServiceToBeAvailable. virtual void StartConcierge(ConciergeCallback callback) = 0; // Calls debugd::kStopVmConcierge, which stops the Concierge service. // |callback| is called when the method finishes.
diff --git a/components/arc/arc_util.cc b/components/arc/arc_util.cc index 1076141..e439b13 100644 --- a/components/arc/arc_util.cc +++ b/components/arc/arc_util.cc
@@ -15,6 +15,7 @@ #include "chromeos/constants/chromeos_switches.h" #include "chromeos/dbus/concierge_client.h" #include "chromeos/dbus/dbus_thread_manager.h" +#include "chromeos/dbus/debug_daemon_client.h" #include "chromeos/dbus/session_manager/session_manager_client.h" #include "components/arc/arc_features.h" #include "components/exo/shell_surface_util.h" @@ -61,10 +62,15 @@ LOG(ERROR) << "SetVmCpuRestriction for ARCVM failed"; } -void SetArcVmCpuRestriction(bool do_restrict) { +void DoSetArcVmCpuRestriction(bool do_restrict, bool concierge_started) { + if (!concierge_started) { + LOG(ERROR) << "Concierge D-Bus service is not available"; + return; + } + auto* client = chromeos::DBusThreadManager::Get()->GetConciergeClient(); if (!client) { - LOG(WARNING) << "ConciergeClient is not available"; + LOG(ERROR) << "ConciergeClient is not available"; return; } @@ -78,6 +84,17 @@ base::BindOnce(&OnSetArcVmCpuRestriction)); } +void SetArcVmCpuRestriction(bool do_restrict) { + auto* client = chromeos::DBusThreadManager::Get()->GetDebugDaemonClient(); + if (!client) { + LOG(WARNING) << "DebugDaemonClient is not available"; + return; + } + // TODO(wvk): Call StartConcierge() only when the service is not running. + client->StartConcierge( + base::BindOnce(&DoSetArcVmCpuRestriction, do_restrict)); +} + void SetArcContainerCpuRestriction(bool do_restrict) { if (!chromeos::SessionManagerClient::Get()) { LOG(WARNING) << "SessionManagerClient is not available";
diff --git a/components/autofill/core/browser/BUILD.gn b/components/autofill/core/browser/BUILD.gn index 44b0525..902f8a2 100644 --- a/components/autofill/core/browser/BUILD.gn +++ b/components/autofill/core/browser/BUILD.gn
@@ -56,8 +56,6 @@ "autofill_handler_proxy.h", "autofill_ie_toolbar_import_win.cc", "autofill_ie_toolbar_import_win.h", - "autofill_internals_service.cc", - "autofill_internals_service.h", "autofill_manager.cc", "autofill_manager.h", "autofill_manager_test_delegate.h", @@ -145,12 +143,11 @@ "geo/state_names.h", "geo/subkey_requester.cc", "geo/subkey_requester.h", - "logging/log_buffer.cc", - "logging/log_buffer.h", "logging/log_buffer_submitter.cc", "logging/log_buffer_submitter.h", "logging/log_manager.cc", "logging/log_manager.h", + "logging/log_protobufs.h", "logging/log_receiver.h", "logging/log_router.cc", "logging/log_router.h", @@ -532,7 +529,6 @@ "autofill_experiments_unittest.cc", "autofill_external_delegate_unittest.cc", "autofill_ie_toolbar_import_win_unittest.cc", - "autofill_internals_service_unittest.cc", "autofill_manager_unittest.cc", "autofill_merge_unittest.cc", "autofill_metrics_unittest.cc", @@ -565,7 +561,6 @@ "geo/phone_number_i18n_unittest.cc", "geo/subkey_requester_unittest.cc", "logging/log_buffer_submitter_unittest.cc", - "logging/log_buffer_unittest.cc", "logging/log_manager_unittest.cc", "logging/log_router_unittest.cc", "payments/credit_card_access_manager_unittest.cc",
diff --git a/components/autofill/core/browser/autofill_and_password_manager_internals/autofill_and_password_manager_internals.css b/components/autofill/core/browser/autofill_and_password_manager_internals/autofill_and_password_manager_internals.css index 8dcdccf..de7620a1 100644 --- a/components/autofill/core/browser/autofill_and_password_manager_internals/autofill_and_password_manager_internals.css +++ b/components/autofill/core/browser/autofill_and_password_manager_internals/autofill_and_password_manager_internals.css
@@ -66,6 +66,10 @@ background-color: #FFECB3; } +.log-entry[scope='AbortParsing'] { + background-color: #FFCDD2; +} + .log-entry[scope='Filling'] { background-color: #D1C4E9; }
diff --git a/components/autofill/core/browser/autofill_download_manager.cc b/components/autofill/core/browser/autofill_download_manager.cc index aa462f22..8d0cba20 100644 --- a/components/autofill/core/browser/autofill_download_manager.cc +++ b/components/autofill/core/browser/autofill_download_manager.cc
@@ -25,11 +25,10 @@ #include "base/strings/stringprintf.h" #include "base/threading/thread_task_runner_handle.h" #include "components/autofill/core/browser/autofill_driver.h" -#include "components/autofill/core/browser/autofill_internals_service.h" #include "components/autofill/core/browser/autofill_metrics.h" #include "components/autofill/core/browser/form_structure.h" -#include "components/autofill/core/browser/logging/log_buffer.h" #include "components/autofill/core/browser/logging/log_manager.h" +#include "components/autofill/core/browser/logging/log_protobufs.h" #include "components/autofill/core/browser/proto/legacy_proto_bridge.h" #include "components/autofill/core/browser/proto/server.pb.h" #include "components/autofill/core/common/autofill_clock.h" @@ -38,6 +37,7 @@ #include "components/autofill/core/common/autofill_internals/logging_scope.h" #include "components/autofill/core/common/autofill_prefs.h" #include "components/autofill/core/common/autofill_switches.h" +#include "components/autofill/core/common/logging/log_buffer.h" #include "components/autofill/core/common/mojom/autofill_types.mojom.h" #include "components/google/core/common/google_util.h" #include "components/history/core/browser/history_service.h"
diff --git a/components/autofill/core/browser/autofill_experiments.cc b/components/autofill/core/browser/autofill_experiments.cc index 4ad323a4..dd2bd38 100644 --- a/components/autofill/core/browser/autofill_experiments.cc +++ b/components/autofill/core/browser/autofill_experiments.cc
@@ -12,7 +12,6 @@ #include "base/strings/string_util.h" #include "base/strings/utf_string_conversions.h" #include "build/build_config.h" -#include "components/autofill/core/browser/autofill_internals_service.h" #include "components/autofill/core/browser/autofill_metrics.h" #include "components/autofill/core/browser/logging/log_manager.h" #include "components/autofill/core/browser/payments/payments_util.h"
diff --git a/components/autofill/core/browser/autofill_handler.cc b/components/autofill/core/browser/autofill_handler.cc index c4c4ae45..dd791fb 100644 --- a/components/autofill/core/browser/autofill_handler.cc +++ b/components/autofill/core/browser/autofill_handler.cc
@@ -8,6 +8,8 @@ #include "components/autofill/core/browser/form_structure.h" #include "components/autofill/core/browser/logging/log_manager.h" #include "components/autofill/core/common/autofill_data_validation.h" +#include "components/autofill/core/common/autofill_internals/log_message.h" +#include "components/autofill/core/common/autofill_internals/logging_scope.h" #include "components/autofill/core/common/autofill_payments_features.h" #include "components/autofill/core/common/signatures_util.h" #include "ui/gfx/geometry/rect_f.h" @@ -267,12 +269,17 @@ const FormStructure* cached_form, FormStructure** parsed_form_structure) { DCHECK(parsed_form_structure); - if (form_structures_.size() >= kAutofillHandlerMaxFormCacheSize) + if (form_structures_.size() >= kAutofillHandlerMaxFormCacheSize) { + if (log_manager_) { + log_manager_->Log() << LoggingScope::kAbortParsing + << LogMessage::kAbortParsingTooManyForms << form; + } return false; + } auto form_structure = std::make_unique<FormStructure>(form); form_structure->ParseFieldTypesFromAutocompleteAttributes(); - if (!form_structure->ShouldBeParsed()) + if (!form_structure->ShouldBeParsed(log_manager_)) return false; if (cached_form) { @@ -284,9 +291,8 @@ if (observer_for_testing_) observer_for_testing_->OnFormParsed(); - if (form_structure.get()->value_from_dynamic_change_form()) { + if (form_structure.get()->value_from_dynamic_change_form()) value_from_dynamic_change_form_ = true; - } } form_structure->DetermineHeuristicTypes(log_manager_);
diff --git a/components/autofill/core/browser/autofill_internals_service.cc b/components/autofill/core/browser/autofill_internals_service.cc deleted file mode 100644 index 3f21b7d..0000000 --- a/components/autofill/core/browser/autofill_internals_service.cc +++ /dev/null
@@ -1,23 +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 "components/autofill/core/browser/autofill_internals_service.h" - -namespace autofill { - -LogBuffer& operator<<(LogBuffer& buf, LoggingScope scope) { - if (!buf.active()) - return buf; - return buf << Tag{"div"} << Attrib{"scope", LoggingScopeToString(scope)} - << Attrib{"class", "log-entry"}; -} - -LogBuffer& operator<<(LogBuffer& buf, LogMessage message) { - if (!buf.active()) - return buf; - return buf << Tag{"div"} << Attrib{"message", LogMessageToString(message)} - << Attrib{"class", "log-message"} << LogMessageValue(message); -} - -} // namespace autofill
diff --git a/components/autofill/core/browser/autofill_internals_service.h b/components/autofill/core/browser/autofill_internals_service.h deleted file mode 100644 index b5c8113..0000000 --- a/components/autofill/core/browser/autofill_internals_service.h +++ /dev/null
@@ -1,24 +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 COMPONENTS_AUTOFILL_CORE_BROWSER_AUTOFILL_INTERNALS_SERVICE_H_ -#define COMPONENTS_AUTOFILL_CORE_BROWSER_AUTOFILL_INTERNALS_SERVICE_H_ - -#include "base/macros.h" -#include "components/autofill/core/browser/logging/log_buffer.h" -#include "components/autofill/core/browser/logging/log_router.h" -#include "components/autofill/core/common/autofill_internals/log_message.h" -#include "components/autofill/core/common/autofill_internals/logging_scope.h" - -namespace autofill { - -// TODO(crbug.com/928595) This is a temporary home for these operations. -// Find a properly named file. -LogBuffer& operator<<(LogBuffer& buf, LoggingScope scope); - -LogBuffer& operator<<(LogBuffer& buf, LogMessage message); - -} // namespace autofill - -#endif // COMPONENTS_AUTOFILL_CORE_BROWSER_AUTOFILL_INTERNALS_SERVICE_H_
diff --git a/components/autofill/core/browser/autofill_internals_service_unittest.cc b/components/autofill/core/browser/autofill_internals_service_unittest.cc deleted file mode 100644 index 2baaee0..0000000 --- a/components/autofill/core/browser/autofill_internals_service_unittest.cc +++ /dev/null
@@ -1,35 +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 "components/autofill/core/browser/autofill_internals_service.h" - -#include "base/json/json_writer.h" -#include "testing/gmock/include/gmock/gmock.h" -#include "testing/gtest/include/gtest/gtest-death-test.h" -#include "testing/gtest/include/gtest/gtest.h" - -namespace autofill { - -TEST(AutofillInternalsService, Scope) { - LogBuffer buffer; - buffer << LoggingScope::kContext; - std::string json; - EXPECT_TRUE(base::JSONWriter::Write(buffer.RetrieveResult(), &json)); - EXPECT_EQ(R"({"attributes":{"class":"log-entry","scope":"Context"},)" - R"("type":"element","value":"div"})", - json); -} - -TEST(AutofillInternalsService, Message) { - LogBuffer buffer; - buffer << LogMessage::kParsedForms; - std::string json; - EXPECT_TRUE(base::JSONWriter::Write(buffer.RetrieveResult(), &json)); - EXPECT_EQ(R"({"attributes":{"class":"log-message","message":"ParsedForms"},)" - R"("children":[{"type":"text","value":"Parsed forms:"}],)" - R"("type":"element","value":"div"})", - json); -} - -} // namespace autofill
diff --git a/components/autofill/core/browser/autofill_manager.cc b/components/autofill/core/browser/autofill_manager.cc index 98281bb..6a92e82 100644 --- a/components/autofill/core/browser/autofill_manager.cc +++ b/components/autofill/core/browser/autofill_manager.cc
@@ -42,7 +42,6 @@ #include "components/autofill/core/browser/autofill_data_util.h" #include "components/autofill/core/browser/autofill_external_delegate.h" #include "components/autofill/core/browser/autofill_field.h" -#include "components/autofill/core/browser/autofill_internals_service.h" #include "components/autofill/core/browser/autofill_manager_test_delegate.h" #include "components/autofill/core/browser/autofill_metrics.h" #include "components/autofill/core/browser/autofill_type.h" @@ -68,6 +67,8 @@ #include "components/autofill/core/common/autofill_constants.h" #include "components/autofill/core/common/autofill_data_validation.h" #include "components/autofill/core/common/autofill_features.h" +#include "components/autofill/core/common/autofill_internals/log_message.h" +#include "components/autofill/core/common/autofill_internals/logging_scope.h" #include "components/autofill/core/common/autofill_payments_features.h" #include "components/autofill/core/common/autofill_prefs.h" #include "components/autofill/core/common/autofill_switches.h"
diff --git a/components/autofill/core/browser/data_model/contact_info.cc b/components/autofill/core/browser/data_model/contact_info.cc index 895e1ed0..131e4085a 100644 --- a/components/autofill/core/browser/data_model/contact_info.cc +++ b/components/autofill/core/browser/data_model/contact_info.cc
@@ -250,15 +250,26 @@ } bool CompanyInfo::IsValidOrVerified(const base::string16& value) const { - if (!base::FeatureList::IsEnabled( - autofill::features::kAutofillRejectCompanyBirthyear)) + if (profile_ && profile_->IsVerified()) { return true; - - if (profile_ && profile_->IsVerified()) - return true; - - // Companies that are of the format of a four digit birth year are not valid. - return !MatchesPattern(value, base::UTF8ToUTF16("^(19|20)\\d{2}$")); + } + // |value| is a birthyear: + if (base::FeatureList::IsEnabled( + autofill::features::kAutofillRejectCompanyBirthyear) && + MatchesPattern(value, base::UTF8ToUTF16("^(19|20)\\d{2}$"))) { + return false; + } + // |value| is a social title: + if (base::FeatureList::IsEnabled( + autofill::features::kAutofillRejectCompanySocialTitle) && + MatchesPattern(value, base::UTF8ToUTF16( + "^(Ms\\.?|Mrs\\.?|Mr\\.?|Miss|Mistress|Mister|" + "Frau|Herr|" + "Mlle|Mme|M\\.|" + "Dr\\.?|Prof\\.?)$"))) { + return false; + } + return true; } } // namespace autofill
diff --git a/components/autofill/core/browser/data_model/contact_info_unittest.cc b/components/autofill/core/browser/data_model/contact_info_unittest.cc index a5e64b41..39982dd 100644 --- a/components/autofill/core/browser/data_model/contact_info_unittest.cc +++ b/components/autofill/core/browser/data_model/contact_info_unittest.cc
@@ -432,6 +432,33 @@ company.SetRawInfo(COMPANY_NAME, UTF8ToUTF16("2345")); EXPECT_EQ(UTF8ToUTF16("2345"), company.GetRawInfo(COMPANY_NAME)); + company.SetRawInfo(COMPANY_NAME, UTF8ToUTF16("Mr")); + EXPECT_EQ(UTF8ToUTF16("Mr"), company.GetRawInfo(COMPANY_NAME)); + + company.SetRawInfo(COMPANY_NAME, UTF8ToUTF16("Mr.")); + EXPECT_EQ(UTF8ToUTF16("Mr."), company.GetRawInfo(COMPANY_NAME)); + + company.SetRawInfo(COMPANY_NAME, UTF8ToUTF16("Mrs")); + EXPECT_EQ(UTF8ToUTF16("Mrs"), company.GetRawInfo(COMPANY_NAME)); + + company.SetRawInfo(COMPANY_NAME, UTF8ToUTF16("Mrs.")); + EXPECT_EQ(UTF8ToUTF16("Mrs."), company.GetRawInfo(COMPANY_NAME)); + + company.SetRawInfo(COMPANY_NAME, UTF8ToUTF16("Mr. & Mrs.")); + EXPECT_EQ(UTF8ToUTF16("Mr. & Mrs."), company.GetRawInfo(COMPANY_NAME)); + + company.SetRawInfo(COMPANY_NAME, UTF8ToUTF16("Mr. & Mrs. Smith")); + EXPECT_EQ(UTF8ToUTF16("Mr. & Mrs. Smith"), company.GetRawInfo(COMPANY_NAME)); + + company.SetRawInfo(COMPANY_NAME, UTF8ToUTF16("Frau")); + EXPECT_EQ(UTF8ToUTF16("Frau"), company.GetRawInfo(COMPANY_NAME)); + + company.SetRawInfo(COMPANY_NAME, UTF8ToUTF16("Frau Doktor")); + EXPECT_EQ(UTF8ToUTF16("Frau Doktor"), company.GetRawInfo(COMPANY_NAME)); + + company.SetRawInfo(COMPANY_NAME, UTF8ToUTF16("Herr")); + EXPECT_EQ(UTF8ToUTF16("Herr"), company.GetRawInfo(COMPANY_NAME)); + profile.set_origin("Not empty"); ASSERT_TRUE(profile.IsVerified()); @@ -449,6 +476,142 @@ company.SetRawInfo(COMPANY_NAME, UTF8ToUTF16("2345")); EXPECT_EQ(UTF8ToUTF16("2345"), company.GetRawInfo(COMPANY_NAME)); + + company.SetRawInfo(COMPANY_NAME, UTF8ToUTF16("Mr")); + EXPECT_EQ(UTF8ToUTF16("Mr"), company.GetRawInfo(COMPANY_NAME)); + + company.SetRawInfo(COMPANY_NAME, UTF8ToUTF16("Mr.")); + EXPECT_EQ(UTF8ToUTF16("Mr."), company.GetRawInfo(COMPANY_NAME)); + + company.SetRawInfo(COMPANY_NAME, UTF8ToUTF16("Mrs")); + EXPECT_EQ(UTF8ToUTF16("Mrs"), company.GetRawInfo(COMPANY_NAME)); + + company.SetRawInfo(COMPANY_NAME, UTF8ToUTF16("Mrs.")); + EXPECT_EQ(UTF8ToUTF16("Mrs."), company.GetRawInfo(COMPANY_NAME)); + + company.SetRawInfo(COMPANY_NAME, UTF8ToUTF16("Mr. & Mrs.")); + EXPECT_EQ(UTF8ToUTF16("Mr. & Mrs."), company.GetRawInfo(COMPANY_NAME)); + + company.SetRawInfo(COMPANY_NAME, UTF8ToUTF16("Mr. & Mrs. Smith")); + EXPECT_EQ(UTF8ToUTF16("Mr. & Mrs. Smith"), company.GetRawInfo(COMPANY_NAME)); + + company.SetRawInfo(COMPANY_NAME, UTF8ToUTF16("Frau")); + EXPECT_EQ(UTF8ToUTF16("Frau"), company.GetRawInfo(COMPANY_NAME)); + + company.SetRawInfo(COMPANY_NAME, UTF8ToUTF16("Frau Doktor")); + EXPECT_EQ(UTF8ToUTF16("Frau Doktor"), company.GetRawInfo(COMPANY_NAME)); + + company.SetRawInfo(COMPANY_NAME, UTF8ToUTF16("Herr")); + EXPECT_EQ(UTF8ToUTF16("Herr"), company.GetRawInfo(COMPANY_NAME)); +} + +TEST(CompanyTest, CompanyNameSocialTitle) { + base::test::ScopedFeatureList scoped_features; + scoped_features.InitWithFeatures( + /*enabled_features=*/{features::kAutofillRejectCompanySocialTitle}, + /*disabled_features=*/{}); + + AutofillProfile profile; + CompanyInfo company(&profile); + ASSERT_FALSE(profile.IsVerified()); + + company.SetRawInfo(COMPANY_NAME, UTF8ToUTF16("Google")); + EXPECT_EQ(UTF8ToUTF16("Google"), company.GetRawInfo(COMPANY_NAME)); + + company.SetRawInfo(COMPANY_NAME, UTF8ToUTF16("1987")); + EXPECT_EQ(UTF8ToUTF16("1987"), company.GetRawInfo(COMPANY_NAME)); + + company.SetRawInfo(COMPANY_NAME, UTF8ToUTF16("It was 1987.")); + EXPECT_EQ(UTF8ToUTF16("It was 1987."), company.GetRawInfo(COMPANY_NAME)); + + company.SetRawInfo(COMPANY_NAME, UTF8ToUTF16("1987 was the year.")); + EXPECT_EQ(UTF8ToUTF16("1987 was the year."), + company.GetRawInfo(COMPANY_NAME)); + + company.SetRawInfo(COMPANY_NAME, UTF8ToUTF16("Yes, 1987 was the year.")); + EXPECT_EQ(UTF8ToUTF16("Yes, 1987 was the year."), + company.GetRawInfo(COMPANY_NAME)); + + company.SetRawInfo(COMPANY_NAME, UTF8ToUTF16("2019")); + EXPECT_EQ(UTF8ToUTF16("2019"), company.GetRawInfo(COMPANY_NAME)); + + company.SetRawInfo(COMPANY_NAME, UTF8ToUTF16("1818")); + EXPECT_EQ(UTF8ToUTF16("1818"), company.GetRawInfo(COMPANY_NAME)); + + company.SetRawInfo(COMPANY_NAME, UTF8ToUTF16("2345")); + EXPECT_EQ(UTF8ToUTF16("2345"), company.GetRawInfo(COMPANY_NAME)); + + company.SetRawInfo(COMPANY_NAME, UTF8ToUTF16("Mr")); + EXPECT_EQ(UTF8ToUTF16(""), company.GetRawInfo(COMPANY_NAME)); + + company.SetRawInfo(COMPANY_NAME, UTF8ToUTF16("Mr.")); + EXPECT_EQ(UTF8ToUTF16(""), company.GetRawInfo(COMPANY_NAME)); + + company.SetRawInfo(COMPANY_NAME, UTF8ToUTF16("Mrs")); + EXPECT_EQ(UTF8ToUTF16(""), company.GetRawInfo(COMPANY_NAME)); + + company.SetRawInfo(COMPANY_NAME, UTF8ToUTF16("Mrs.")); + EXPECT_EQ(UTF8ToUTF16(""), company.GetRawInfo(COMPANY_NAME)); + + company.SetRawInfo(COMPANY_NAME, UTF8ToUTF16("Mr. & Mrs.")); + EXPECT_EQ(UTF8ToUTF16("Mr. & Mrs."), company.GetRawInfo(COMPANY_NAME)); + + company.SetRawInfo(COMPANY_NAME, UTF8ToUTF16("Mr. & Mrs. Smith")); + EXPECT_EQ(UTF8ToUTF16("Mr. & Mrs. Smith"), company.GetRawInfo(COMPANY_NAME)); + + company.SetRawInfo(COMPANY_NAME, UTF8ToUTF16("Frau")); + EXPECT_EQ(UTF8ToUTF16(""), company.GetRawInfo(COMPANY_NAME)); + + company.SetRawInfo(COMPANY_NAME, UTF8ToUTF16("Frau Doktor")); + EXPECT_EQ(UTF8ToUTF16("Frau Doktor"), company.GetRawInfo(COMPANY_NAME)); + + company.SetRawInfo(COMPANY_NAME, UTF8ToUTF16("Herr")); + EXPECT_EQ(UTF8ToUTF16(""), company.GetRawInfo(COMPANY_NAME)); + + profile.set_origin("Not empty"); + ASSERT_TRUE(profile.IsVerified()); + + company.SetRawInfo(COMPANY_NAME, UTF8ToUTF16("Google")); + EXPECT_EQ(UTF8ToUTF16("Google"), company.GetRawInfo(COMPANY_NAME)); + + company.SetRawInfo(COMPANY_NAME, UTF8ToUTF16("1987")); + EXPECT_EQ(UTF8ToUTF16("1987"), company.GetRawInfo(COMPANY_NAME)); + + company.SetRawInfo(COMPANY_NAME, UTF8ToUTF16("2019")); + EXPECT_EQ(UTF8ToUTF16("2019"), company.GetRawInfo(COMPANY_NAME)); + + company.SetRawInfo(COMPANY_NAME, UTF8ToUTF16("1818")); + EXPECT_EQ(UTF8ToUTF16("1818"), company.GetRawInfo(COMPANY_NAME)); + + company.SetRawInfo(COMPANY_NAME, UTF8ToUTF16("2345")); + EXPECT_EQ(UTF8ToUTF16("2345"), company.GetRawInfo(COMPANY_NAME)); + + company.SetRawInfo(COMPANY_NAME, UTF8ToUTF16("Mr")); + EXPECT_EQ(UTF8ToUTF16("Mr"), company.GetRawInfo(COMPANY_NAME)); + + company.SetRawInfo(COMPANY_NAME, UTF8ToUTF16("Mr.")); + EXPECT_EQ(UTF8ToUTF16("Mr."), company.GetRawInfo(COMPANY_NAME)); + + company.SetRawInfo(COMPANY_NAME, UTF8ToUTF16("Mrs")); + EXPECT_EQ(UTF8ToUTF16("Mrs"), company.GetRawInfo(COMPANY_NAME)); + + company.SetRawInfo(COMPANY_NAME, UTF8ToUTF16("Mrs.")); + EXPECT_EQ(UTF8ToUTF16("Mrs."), company.GetRawInfo(COMPANY_NAME)); + + company.SetRawInfo(COMPANY_NAME, UTF8ToUTF16("Mr. & Mrs.")); + EXPECT_EQ(UTF8ToUTF16("Mr. & Mrs."), company.GetRawInfo(COMPANY_NAME)); + + company.SetRawInfo(COMPANY_NAME, UTF8ToUTF16("Mr. & Mrs. Smith")); + EXPECT_EQ(UTF8ToUTF16("Mr. & Mrs. Smith"), company.GetRawInfo(COMPANY_NAME)); + + company.SetRawInfo(COMPANY_NAME, UTF8ToUTF16("Frau")); + EXPECT_EQ(UTF8ToUTF16("Frau"), company.GetRawInfo(COMPANY_NAME)); + + company.SetRawInfo(COMPANY_NAME, UTF8ToUTF16("Frau Doktor")); + EXPECT_EQ(UTF8ToUTF16("Frau Doktor"), company.GetRawInfo(COMPANY_NAME)); + + company.SetRawInfo(COMPANY_NAME, UTF8ToUTF16("Herr")); + EXPECT_EQ(UTF8ToUTF16("Herr"), company.GetRawInfo(COMPANY_NAME)); } TEST(CompanyTest, CompanyNameYearCopy) { @@ -488,4 +651,41 @@ EXPECT_EQ(company_old, company_young); } +TEST(CompanyTest, CompanyNameSocialTitleCopy) { + base::test::ScopedFeatureList scoped_features; + scoped_features.InitWithFeatures( + /*enabled_features=*/{features::kAutofillRejectCompanySocialTitle}, + /*disabled_features=*/{}); + + AutofillProfile profile; + ASSERT_FALSE(profile.IsVerified()); + + CompanyInfo company_google(&profile); + CompanyInfo company_year(&profile); + + company_google.SetRawInfo(COMPANY_NAME, UTF8ToUTF16("Google")); + company_year.SetRawInfo(COMPANY_NAME, UTF8ToUTF16("Prof.")); + + company_google = company_year; + EXPECT_EQ(UTF8ToUTF16(""), company_google.GetRawInfo(COMPANY_NAME)); +} + +TEST(CompanyTest, CompanyNameSocialTitleIsEqual) { + base::test::ScopedFeatureList scoped_features; + scoped_features.InitWithFeatures( + /*enabled_features=*/{features::kAutofillRejectCompanySocialTitle}, + /*disabled_features=*/{}); + + AutofillProfile profile; + ASSERT_FALSE(profile.IsVerified()); + + CompanyInfo company_old(&profile); + CompanyInfo company_young(&profile); + + company_old.SetRawInfo(COMPANY_NAME, UTF8ToUTF16("Dr")); + company_young.SetRawInfo(COMPANY_NAME, UTF8ToUTF16("Prof")); + + EXPECT_EQ(company_old, company_young); +} + } // namespace autofill
diff --git a/components/autofill/core/browser/form_parsing/form_field.cc b/components/autofill/core/browser/form_parsing/form_field.cc index 266bd68..d801580 100644 --- a/components/autofill/core/browser/form_parsing/form_field.cc +++ b/components/autofill/core/browser/form_parsing/form_field.cc
@@ -17,7 +17,6 @@ #include "base/strings/stringprintf.h" #include "base/strings/utf_string_conversions.h" #include "components/autofill/core/browser/autofill_field.h" -#include "components/autofill/core/browser/autofill_internals_service.h" #include "components/autofill/core/browser/form_parsing/address_field.h" #include "components/autofill/core/browser/form_parsing/autofill_scanner.h" #include "components/autofill/core/browser/form_parsing/credit_card_field.h"
diff --git a/components/autofill/core/browser/form_structure.cc b/components/autofill/core/browser/form_structure.cc index 951a1568..5eb8e5a 100644 --- a/components/autofill/core/browser/form_structure.cc +++ b/components/autofill/core/browser/form_structure.cc
@@ -35,13 +35,15 @@ #include "components/autofill/core/browser/field_types.h" #include "components/autofill/core/browser/form_parsing/field_candidates.h" #include "components/autofill/core/browser/form_parsing/form_field.h" -#include "components/autofill/core/browser/logging/log_buffer.h" +#include "components/autofill/core/browser/logging/log_manager.h" #include "components/autofill/core/browser/proto/legacy_proto_bridge.h" #include "components/autofill/core/browser/randomized_encoder.h" #include "components/autofill/core/browser/rationalization_util.h" #include "components/autofill/core/browser/validation.h" #include "components/autofill/core/common/autofill_constants.h" #include "components/autofill/core/common/autofill_features.h" +#include "components/autofill/core/common/autofill_internals/log_message.h" +#include "components/autofill/core/common/autofill_internals/logging_scope.h" #include "components/autofill/core/common/autofill_payments_features.h" #include "components/autofill/core/common/autofill_regex_constants.h" #include "components/autofill/core/common/autofill_regexes.h" @@ -50,6 +52,7 @@ #include "components/autofill/core/common/form_data_predictions.h" #include "components/autofill/core/common/form_field_data.h" #include "components/autofill/core/common/form_field_data_predictions.h" +#include "components/autofill/core/common/logging/log_buffer.h" #include "components/autofill/core/common/signatures_util.h" #include "components/security_state/core/security_state.h" #include "url/origin.h" @@ -951,10 +954,15 @@ } } -bool FormStructure::ShouldBeParsed() const { +bool FormStructure::ShouldBeParsed(LogManager* log_manager) const { // Exclude URLs not on the web via HTTP(S). - if (!HasAllowedScheme(source_url_)) + if (!HasAllowedScheme(source_url_)) { + if (log_manager) { + log_manager->Log() << LoggingScope::kAbortParsing + << LogMessage::kAbortParsingNotAllowedScheme << *this; + } return false; + } size_t min_required_fields = std::min({MinRequiredFieldsForHeuristics(), MinRequiredFieldsForQuery(), @@ -963,6 +971,11 @@ (!all_fields_are_passwords() || active_field_count() < kRequiredFieldsForFormsWithOnlyPasswordFields) && !has_author_specified_types_) { + if (log_manager) { + log_manager->Log() << LoggingScope::kAbortParsing + << LogMessage::kAbortParsingNotEnoughFields + << active_field_count() << *this; + } return false; } @@ -971,6 +984,11 @@ base::UTF8ToUTF16(kUrlSearchActionRe); if (MatchesPattern(base::UTF8ToUTF16(target_url_.path_piece()), kUrlSearchActionPattern)) { + if (log_manager) { + log_manager->Log() << LoggingScope::kAbortParsing + << LogMessage::kAbortParsingUrlMatchesSearchRegex + << *this; + } return false; } @@ -979,6 +997,11 @@ has_text_field |= it->form_control_type != "select-one"; } + if (!has_text_field && log_manager) { + log_manager->Log() << LoggingScope::kAbortParsing + << LogMessage::kAbortParsingFormHasNoTextfield << *this; + } + return has_text_field; } @@ -2192,6 +2215,7 @@ base::NumberToString( HashFormSignature(form.form_signature()))}); buffer << Tr{} << "Form name:" << form.form_name(); + buffer << Tr{} << "Unique renderer Id:" << form.unique_renderer_id(); buffer << Tr{} << "Target URL:" << form.target_url(); for (size_t i = 0; i < form.field_count(); ++i) { buffer << Tag{"tr"};
diff --git a/components/autofill/core/browser/form_structure.h b/components/autofill/core/browser/form_structure.h index 7a90138..915cf3f 100644 --- a/components/autofill/core/browser/form_structure.h +++ b/components/autofill/core/browser/form_structure.h
@@ -130,7 +130,7 @@ void UpdateAutofillCount(); // Returns true if this form matches the structural requirements for Autofill. - bool ShouldBeParsed() const; + bool ShouldBeParsed(LogManager* log_manager = nullptr) const; // Returns true if heuristic autofill type detection should be attempted for // this form.
diff --git a/components/autofill/core/browser/logging/log_buffer_submitter.h b/components/autofill/core/browser/logging/log_buffer_submitter.h index 5925e84..ef6c411 100644 --- a/components/autofill/core/browser/logging/log_buffer_submitter.h +++ b/components/autofill/core/browser/logging/log_buffer_submitter.h
@@ -6,7 +6,7 @@ #define COMPONENTS_AUTOFILL_CORE_BROWSER_LOGGING_LOG_BUFFER_SUBMITTER_H_ #include "base/macros.h" -#include "components/autofill/core/browser/logging/log_buffer.h" +#include "components/autofill/core/common/logging/log_buffer.h" namespace autofill {
diff --git a/components/autofill/core/browser/logging/log_protobufs.h b/components/autofill/core/browser/logging/log_protobufs.h new file mode 100644 index 0000000..a2008a3a --- /dev/null +++ b/components/autofill/core/browser/logging/log_protobufs.h
@@ -0,0 +1,31 @@ +// 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 COMPONENTS_AUTOFILL_CORE_BROWSER_LOGGING_LOG_PROTOBUFS_H_ +#define COMPONENTS_AUTOFILL_CORE_BROWSER_LOGGING_LOG_PROTOBUFS_H_ + +#include "components/autofill/core/common/logging/log_buffer.h" +#include "third_party/protobuf/src/google/protobuf/repeated_field.h" + +namespace autofill { + +// Serialize a repeated field in a protobuf. This function is not part of +// log_buffer.h because that would create a dependency of the renderer process +// to protobufs. +template <typename T> +LogBuffer& operator<<(LogBuffer& buf, + const ::google::protobuf::RepeatedField<T>& values) { + buf << "["; + for (int i = 0; i < values.size(); ++i) { + if (i) + buf << ", "; + buf << values.Get(i); + } + buf << "]"; + return buf; +} + +} // namespace autofill + +#endif // COMPONENTS_AUTOFILL_CORE_BROWSER_LOGGING_LOG_PROTOBUFS_H_
diff --git a/components/autofill/core/browser/logging/log_router.cc b/components/autofill/core/browser/logging/log_router.cc index 3ab3a1b..f31dd7cb 100644 --- a/components/autofill/core/browser/logging/log_router.cc +++ b/components/autofill/core/browser/logging/log_router.cc
@@ -6,9 +6,9 @@ #include "base/stl_util.h" #include "base/strings/string_split.h" -#include "components/autofill/core/browser/logging/log_buffer.h" #include "components/autofill/core/browser/logging/log_manager.h" #include "components/autofill/core/browser/logging/log_receiver.h" +#include "components/autofill/core/common/logging/log_buffer.h" #include "net/base/escape.h" namespace autofill {
diff --git a/components/autofill/core/common/BUILD.gn b/components/autofill/core/common/BUILD.gn index 0bb58c9..88abc76 100644 --- a/components/autofill/core/common/BUILD.gn +++ b/components/autofill/core/common/BUILD.gn
@@ -39,6 +39,8 @@ "form_field_data.h", "form_field_data_predictions.cc", "form_field_data_predictions.h", + "logging/log_buffer.cc", + "logging/log_buffer.h", "password_form.cc", "password_form.h", "password_form_field_prediction_map.h", @@ -75,12 +77,15 @@ source_set("unit_tests") { testonly = true sources = [ + "autofill_internals/log_message_unittest.cc", + "autofill_internals/logging_scope_unittest.cc", "autofill_l10n_util_unittest.cc", "autofill_prefs_unittest.cc", "autofill_regexes_unittest.cc", "autofill_util_unittest.cc", "form_data_unittest.cc", "form_field_data_unittest.cc", + "logging/log_buffer_unittest.cc", "password_form_fill_data_unittest.cc", "save_password_progress_logger_unittest.cc", ]
diff --git a/components/autofill/core/common/autofill_features.cc b/components/autofill/core/common/autofill_features.cc index d7a0b6e..6399d99 100644 --- a/components/autofill/core/common/autofill_features.cc +++ b/components/autofill/core/common/autofill_features.cc
@@ -112,6 +112,11 @@ const base::Feature kAutofillRejectCompanyBirthyear{ "AutofillRejectCompanyBirthyear", base::FEATURE_DISABLED_BY_DEFAULT}; +// Controls whether autofill rejects using non-verified company names that are +// social titles (e.g., "Mrs.") in some languages. +const base::Feature kAutofillRejectCompanySocialTitle{ + "AutofillRejectCompanySocialTitle", base::FEATURE_DISABLED_BY_DEFAULT}; + // Controls whether or not a group of fields not enclosed in a form can be // considered a form. If this is enabled, unowned fields will only constitute // a form if there are signals to suggest that this might a checkout page.
diff --git a/components/autofill/core/common/autofill_features.h b/components/autofill/core/common/autofill_features.h index 8e6937f..197da42 100644 --- a/components/autofill/core/common/autofill_features.h +++ b/components/autofill/core/common/autofill_features.h
@@ -42,6 +42,7 @@ extern const base::Feature kAutofillProfileClientValidation; extern const base::Feature kAutofillProfileServerValidation; extern const base::Feature kAutofillRejectCompanyBirthyear; +extern const base::Feature kAutofillRejectCompanySocialTitle; extern const base::Feature kAutofillRestrictUnownedFieldsToFormlessCheckout; extern const base::Feature kAutofillRichMetadataQueries; extern const base::Feature kAutofillSaveOnProbablySubmitted;
diff --git a/components/autofill/core/common/autofill_internals/log_message.cc b/components/autofill/core/common/autofill_internals/log_message.cc index 450258c6..60da13d 100644 --- a/components/autofill/core/common/autofill_internals/log_message.cc +++ b/components/autofill/core/common/autofill_internals/log_message.cc
@@ -5,6 +5,7 @@ #include "components/autofill/core/common/autofill_internals/log_message.h" #include "base/logging.h" +#include "components/autofill/core/common/logging/log_buffer.h" namespace autofill { @@ -50,4 +51,11 @@ return ""; } +LogBuffer& operator<<(LogBuffer& buf, LogMessage message) { + if (!buf.active()) + return buf; + return buf << Tag{"div"} << Attrib{"message", LogMessageToString(message)} + << Attrib{"class", "log-message"} << LogMessageValue(message); +} + } // namespace autofill
diff --git a/components/autofill/core/common/autofill_internals/log_message.h b/components/autofill/core/common/autofill_internals/log_message.h index 4862e5e..a7232ce6 100644 --- a/components/autofill/core/common/autofill_internals/log_message.h +++ b/components/autofill/core/common/autofill_internals/log_message.h
@@ -7,15 +7,28 @@ namespace autofill { +class LogBuffer; + /////////////// Log Messages ///////////// // Generator for log message. If you need to find the call site for a log // message, take the first parameter (e.g. ParsedForms) and search for // that name prefixed with a k (e.g. kParsedForms) in code search. -#define AUTOFILL_LOG_MESSAGE_TEMPLATES(T) \ - T(ParsedForms, "Parsed forms:") \ - T(SendAutofillUpload, "Sending Autofill Upload Request:") \ - T(LocalHeuristicRegExMatched, "RegEx of local heuristic matched:") +#define AUTOFILL_LOG_MESSAGE_TEMPLATES(T) \ + T(ParsedForms, "Parsed forms:") \ + T(SendAutofillUpload, "Sending Autofill Upload Request:") \ + T(LocalHeuristicRegExMatched, "RegEx of local heuristic matched:") \ + T(AbortParsingTooManyForms, "Abort parsing form: Too many forms in cache: ") \ + T(AbortParsingNotAllowedScheme, \ + "Abort parsing form: Ignoring form because the source url has no allowed " \ + "scheme") \ + T(AbortParsingNotEnoughFields, \ + "Abort parsing form: Not enough fields in form: ") \ + T(AbortParsingUrlMatchesSearchRegex, \ + "Abort parsing form: Action URL matches kUrlSearchActionRe, indicating " \ + "that the form may lead to a search.") \ + T(AbortParsingFormHasNoTextfield, \ + "Abort parsing form: Form has no text field.") // Log messages for chrome://autofill-internals. #define AUTOFILL_TEMPLATE(NAME, MESSAGE) k##NAME, @@ -29,6 +42,8 @@ // Returns the actual string to be presented to the user for |message|. const char* LogMessageValue(LogMessage message); +LogBuffer& operator<<(LogBuffer& buf, LogMessage message); + } // namespace autofill #endif // COMPONENTS_AUTOFILL_CORE_COMMON_AUTOFILL_INTERNALS_LOG_MESSAGE_H_
diff --git a/components/autofill/core/common/autofill_internals/log_message_unittest.cc b/components/autofill/core/common/autofill_internals/log_message_unittest.cc new file mode 100644 index 0000000..2d4f225 --- /dev/null +++ b/components/autofill/core/common/autofill_internals/log_message_unittest.cc
@@ -0,0 +1,24 @@ +// 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 "components/autofill/core/common/autofill_internals/log_message.h" + +#include "base/json/json_writer.h" +#include "components/autofill/core/common/logging/log_buffer.h" +#include "testing/gtest/include/gtest/gtest.h" + +namespace autofill { + +TEST(LogMessage, Serialization) { + LogBuffer buffer; + buffer << LogMessage::kParsedForms; + std::string json; + EXPECT_TRUE(base::JSONWriter::Write(buffer.RetrieveResult(), &json)); + EXPECT_EQ(R"({"attributes":{"class":"log-message","message":"ParsedForms"},)" + R"("children":[{"type":"text","value":"Parsed forms:"}],)" + R"("type":"element","value":"div"})", + json); +} + +} // namespace autofill
diff --git a/components/autofill/core/common/autofill_internals/logging_scope.cc b/components/autofill/core/common/autofill_internals/logging_scope.cc index ab962d5..2e1597b0 100644 --- a/components/autofill/core/common/autofill_internals/logging_scope.cc +++ b/components/autofill/core/common/autofill_internals/logging_scope.cc
@@ -5,6 +5,7 @@ #include "components/autofill/core/common/autofill_internals/logging_scope.h" #include "base/logging.h" +#include "components/autofill/core/common/logging/log_buffer.h" namespace autofill { @@ -29,4 +30,11 @@ return ""; } +LogBuffer& operator<<(LogBuffer& buf, LoggingScope scope) { + if (!buf.active()) + return buf; + return buf << Tag{"div"} << Attrib{"scope", LoggingScopeToString(scope)} + << Attrib{"class", "log-entry"}; +} + } // namespace autofill
diff --git a/components/autofill/core/common/autofill_internals/logging_scope.h b/components/autofill/core/common/autofill_internals/logging_scope.h index ac719ca..5684511 100644 --- a/components/autofill/core/common/autofill_internals/logging_scope.h +++ b/components/autofill/core/common/autofill_internals/logging_scope.h
@@ -7,6 +7,8 @@ namespace autofill { +class LogBuffer; + /////////////// Logging Scopes ///////////// // Generator for source code related to logging scopes. Pass a template T which @@ -16,6 +18,8 @@ T(Context) \ /* Log messages related to the discovery and parsing of forms. */ \ T(Parsing) \ + /* Log messages related to reasons to stop parsing a form. */ \ + T(AbortParsing) \ /* Log messages related to filling of forms. */ \ T(Filling) \ /* Log messages related to the submission of forms. */ \ @@ -33,6 +37,8 @@ // Returns the enum value of |scope| as a string (without the leading k). const char* LoggingScopeToString(LoggingScope scope); +LogBuffer& operator<<(LogBuffer& buf, LoggingScope scope); + } // namespace autofill #endif // COMPONENTS_AUTOFILL_CORE_COMMON_AUTOFILL_INTERNALS_LOGGING_SCOPE_H_
diff --git a/components/autofill/core/common/autofill_internals/logging_scope_unittest.cc b/components/autofill/core/common/autofill_internals/logging_scope_unittest.cc new file mode 100644 index 0000000..16ffe96f --- /dev/null +++ b/components/autofill/core/common/autofill_internals/logging_scope_unittest.cc
@@ -0,0 +1,23 @@ +// 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 "components/autofill/core/common/autofill_internals/logging_scope.h" + +#include "base/json/json_writer.h" +#include "components/autofill/core/common/logging/log_buffer.h" +#include "testing/gtest/include/gtest/gtest.h" + +namespace autofill { + +TEST(LoggingScope, Serialization) { + LogBuffer buffer; + buffer << LoggingScope::kContext; + std::string json; + EXPECT_TRUE(base::JSONWriter::Write(buffer.RetrieveResult(), &json)); + EXPECT_EQ(R"({"attributes":{"class":"log-entry","scope":"Context"},)" + R"("type":"element","value":"div"})", + json); +} + +} // namespace autofill
diff --git a/components/autofill/core/common/form_data.cc b/components/autofill/core/common/form_data.cc index 5f2f9c9..a07d8f5 100644 --- a/components/autofill/core/common/form_data.cc +++ b/components/autofill/core/common/form_data.cc
@@ -12,6 +12,7 @@ #include "base/strings/string_util.h" #include "base/strings/utf_string_conversions.h" #include "components/autofill/core/common/form_field_data.h" +#include "components/autofill/core/common/logging/log_buffer.h" namespace autofill { @@ -250,4 +251,25 @@ return DeserializeFormData(&iter, form_data); } +LogBuffer& operator<<(LogBuffer& buffer, const FormData& form) { + buffer << Tag{"div"} << Attrib{"class", "form"}; + buffer << Tag{"table"}; + buffer << Tr{} << "Form name:" << form.name; + buffer << Tr{} << "Unique renderer Id:" << form.unique_renderer_id; + buffer << Tr{} << "URL:" << form.url; + buffer << Tr{} << "Action:" << form.action; + buffer << Tr{} << "Is <form> tag:" << form.is_form_tag; + for (size_t i = 0; i < form.fields.size(); ++i) { + buffer << Tag{"tr"}; + buffer << Tag{"td"} << "Field " << i << ": " << CTag{}; + buffer << Tag{"td"}; + buffer << Tag{"table"} << form.fields.at(i) << CTag{"table"}; + buffer << CTag{"td"}; + buffer << CTag{"tr"}; + } + buffer << CTag{"table"}; + buffer << CTag{"div"}; + return buffer; +} + } // namespace autofill
diff --git a/components/autofill/core/common/form_data.h b/components/autofill/core/common/form_data.h index 639135a..97d9113ccd 100644 --- a/components/autofill/core/common/form_data.h +++ b/components/autofill/core/common/form_data.h
@@ -18,6 +18,8 @@ namespace autofill { +class LogBuffer; + // Pair of a button title (e.g. "Register") and its type (e.g. // INPUT_ELEMENT_SUBMIT_TYPE). using ButtonTitleInfo = std::pair<base::string16, mojom::ButtonTitleType>; @@ -120,6 +122,8 @@ bool DeserializeFormDataFromBase64String(const base::StringPiece& input, FormData* form_data); +LogBuffer& operator<<(LogBuffer& buffer, const FormData& form); + } // namespace autofill #endif // COMPONENTS_AUTOFILL_CORE_COMMON_FORM_DATA_H_
diff --git a/components/autofill/core/common/form_field_data.cc b/components/autofill/core/common/form_field_data.cc index b8c0f13c..6aec9bf 100644 --- a/components/autofill/core/common/form_field_data.cc +++ b/components/autofill/core/common/form_field_data.cc
@@ -8,6 +8,7 @@ #include "base/strings/string_util.h" #include "components/autofill/core/common/autofill_features.h" #include "components/autofill/core/common/autofill_util.h" +#include "components/autofill/core/common/logging/log_buffer.h" // TODO(crbug/897756): Clean up the (de)serialization code. @@ -468,4 +469,26 @@ << "label_source=" << field.label_source; } +LogBuffer& operator<<(LogBuffer& buffer, const FormFieldData& field) { + buffer << Tag{"table"}; + buffer << Tr{} << "Name:" << field.name; + buffer << Tr{} << "Unique renderer Id:" << field.unique_renderer_id; + buffer << Tr{} << "Name attribute:" << field.name_attribute; + buffer << Tr{} << "Id attribute:" << field.id_attribute; + constexpr size_t kMaxLabelSize = 100; + const base::string16 truncated_label = + field.label.substr(0, std::min(field.label.length(), kMaxLabelSize)); + buffer << Tr{} << "Label:" << truncated_label; + buffer << Tr{} << "Form control type:" << field.form_control_type; + buffer << Tr{} << "Autocomplete attribute:" << field.autocomplete_attribute; + buffer << Tr{} << "Aria label:" << field.aria_label; + buffer << Tr{} << "Aria description:" << field.aria_description; + buffer << Tr{} << "Section:" << field.section; + buffer << Tr{} << "Is focusable:" << field.is_focusable; + buffer << Tr{} << "Is enabled:" << field.is_enabled; + buffer << Tr{} << "Is readonly:" << field.is_readonly; + buffer << CTag{"table"}; + return buffer; +} + } // namespace autofill
diff --git a/components/autofill/core/common/form_field_data.h b/components/autofill/core/common/form_field_data.h index b9d4f9d..301b200 100644 --- a/components/autofill/core/common/form_field_data.h +++ b/components/autofill/core/common/form_field_data.h
@@ -22,6 +22,8 @@ namespace autofill { +class LogBuffer; + // The flags describing form field properties. enum FieldPropertiesFlags { NO_FLAGS = 0u, @@ -202,6 +204,9 @@ EXPECT_EQ(expected.name_attribute, actual.name_attribute); \ } while (0) +// Produces a <table> element with information about the form. +LogBuffer& operator<<(LogBuffer& buffer, const FormFieldData& form); + } // namespace autofill #endif // COMPONENTS_AUTOFILL_CORE_COMMON_FORM_FIELD_DATA_H_
diff --git a/components/autofill/core/browser/logging/log_buffer.cc b/components/autofill/core/common/logging/log_buffer.cc similarity index 98% rename from components/autofill/core/browser/logging/log_buffer.cc rename to components/autofill/core/common/logging/log_buffer.cc index 21ec495f..5abd4daa 100644 --- a/components/autofill/core/browser/logging/log_buffer.cc +++ b/components/autofill/core/common/logging/log_buffer.cc
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "components/autofill/core/browser/logging/log_buffer.h" +#include "components/autofill/core/common/logging/log_buffer.h" #include <string>
diff --git a/components/autofill/core/browser/logging/log_buffer.h b/components/autofill/core/common/logging/log_buffer.h similarity index 92% rename from components/autofill/core/browser/logging/log_buffer.h rename to components/autofill/core/common/logging/log_buffer.h index 2dd9c4c..fc782f4 100644 --- a/components/autofill/core/browser/logging/log_buffer.h +++ b/components/autofill/core/common/logging/log_buffer.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 COMPONENTS_AUTOFILL_CORE_BROWSER_LOGGING_LOG_BUFFER_H_ -#define COMPONENTS_AUTOFILL_CORE_BROWSER_LOGGING_LOG_BUFFER_H_ +#ifndef COMPONENTS_AUTOFILL_CORE_COMMON_LOGGING_LOG_BUFFER_H_ +#define COMPONENTS_AUTOFILL_CORE_COMMON_LOGGING_LOG_BUFFER_H_ #include <string> #include <type_traits> @@ -14,7 +14,6 @@ #include "base/strings/string_number_conversions.h" #include "base/strings/string_piece.h" #include "base/values.h" -#include "third_party/protobuf/src/google/protobuf/repeated_field.h" #include "url/gurl.h" // The desired pattern to generate log messages is to pass a scope, a log @@ -154,19 +153,6 @@ LogBuffer& operator<<(LogBuffer& buf, const GURL& url); template <typename T> -LogBuffer& operator<<(LogBuffer& buf, - const ::google::protobuf::RepeatedField<T>& values) { - buf << "["; - for (int i = 0; i < values.size(); ++i) { - if (i) - buf << ", "; - buf << values.Get(i); - } - buf << "]"; - return buf; -} - -template <typename T> LogBuffer& operator<<(LogBuffer& buf, const std::vector<T>& values) { buf << "["; for (size_t i = 0; i < values.size(); ++i) { @@ -219,4 +205,4 @@ } // namespace autofill -#endif // COMPONENTS_AUTOFILL_CORE_BROWSER_LOGGING_LOG_BUFFER_H_ +#endif // COMPONENTS_AUTOFILL_CORE_COMMON_LOGGING_LOG_BUFFER_H_
diff --git a/components/autofill/core/browser/logging/log_buffer_unittest.cc b/components/autofill/core/common/logging/log_buffer_unittest.cc similarity index 98% rename from components/autofill/core/browser/logging/log_buffer_unittest.cc rename to components/autofill/core/common/logging/log_buffer_unittest.cc index 3b4b6c94..de9126e 100644 --- a/components/autofill/core/browser/logging/log_buffer_unittest.cc +++ b/components/autofill/core/common/logging/log_buffer_unittest.cc
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "components/autofill/core/browser/logging/log_buffer.h" +#include "components/autofill/core/common/logging/log_buffer.h" #include "base/json/json_writer.h" #include "base/strings/string_piece.h"
diff --git a/components/autofill/ios/browser/js_autofill_manager.mm b/components/autofill/ios/browser/js_autofill_manager.mm index c81f80ff9..2b134fc 100644 --- a/components/autofill/ios/browser/js_autofill_manager.mm +++ b/components/autofill/ios/browser/js_autofill_manager.mm
@@ -28,7 +28,7 @@ @implementation JsAutofillManager { // The injection receiver used to evaluate JavaScript. - CRWJSInjectionReceiver* _receiver; + __weak CRWJSInjectionReceiver* _receiver; } - (instancetype)initWithReceiver:(CRWJSInjectionReceiver*)receiver {
diff --git a/components/autofill/ios/browser/js_suggestion_manager.mm b/components/autofill/ios/browser/js_suggestion_manager.mm index 07a81ca2..d7fd9a12 100644 --- a/components/autofill/ios/browser/js_suggestion_manager.mm +++ b/components/autofill/ios/browser/js_suggestion_manager.mm
@@ -24,7 +24,7 @@ @implementation JsSuggestionManager { // The injection receiver used to evaluate JavaScript. - CRWJSInjectionReceiver* _receiver; + __weak CRWJSInjectionReceiver* _receiver; web::WebFramesManager* _webFramesManager; }
diff --git a/components/browser_sync/browser_sync_switches.cc b/components/browser_sync/browser_sync_switches.cc index c1aa1b8..fbb9645 100644 --- a/components/browser_sync/browser_sync_switches.cc +++ b/components/browser_sync/browser_sync_switches.cc
@@ -23,7 +23,7 @@ #if defined(OS_ANDROID) const base::Feature kSyncManualStartAndroid{"SyncManualStartAndroid", - base::FEATURE_DISABLED_BY_DEFAULT}; + base::FEATURE_ENABLED_BY_DEFAULT}; #endif } // namespace switches
diff --git a/components/cronet/ios/test/cronet_prefs_test.mm b/components/cronet/ios/test/cronet_prefs_test.mm index a4120e6..4c47613 100644 --- a/components/cronet/ios/test/cronet_prefs_test.mm +++ b/components/cronet/ios/test/cronet_prefs_test.mm
@@ -79,7 +79,7 @@ NSURLSession* session_; }; -TEST_F(PrefsTest, HttpSeverProperties) { +TEST_F(PrefsTest, DISABLED_HttpSeverProperties) { base::FilePath storage_path; bool result = base::PathService::Get(base::DIR_CACHE, &storage_path); ASSERT_TRUE(result);
diff --git a/components/password_manager/core/browser/password_form_manager.cc b/components/password_manager/core/browser/password_form_manager.cc index 76582e4..38ce34b 100644 --- a/components/password_manager/core/browser/password_form_manager.cc +++ b/components/password_manager/core/browser/password_form_manager.cc
@@ -226,7 +226,7 @@ const std::map<base::string16, const PasswordForm*>& PasswordFormManager::GetBestMatches() const { - return best_matches_; + return form_fetcher_->GetBestMatches(); } std::vector<const autofill::PasswordForm*> @@ -280,7 +280,8 @@ SanitizePossibleUsernames(&pending_credentials_); pending_credentials_.date_created = base::Time::Now(); votes_uploader_.SendVotesOnSave(observed_form_, *parsed_submitted_form_, - best_matches_, &pending_credentials_); + form_fetcher_->GetBestMatches(), + &pending_credentials_); SavePendingToStore(false /*update*/); } else { ProcessUpdate(); @@ -594,8 +595,6 @@ void PasswordFormManager::OnFetchCompleted() { received_stored_credentials_time_ = TimeTicks::Now(); - best_matches_ = form_fetcher_->GetBestMatches(); - preferred_match_ = form_fetcher_->GetPreferredMatch(); // Copy out blacklisted matches. new_blacklisted_.reset(); @@ -750,10 +749,10 @@ return; #endif - SendFillInformationToRenderer(client_, driver_.get(), - *observed_password_form.get(), best_matches_, - form_fetcher_->GetFederatedMatches(), - preferred_match_, metrics_recorder_.get()); + SendFillInformationToRenderer( + client_, driver_.get(), *observed_password_form.get(), + form_fetcher_->GetBestMatches(), form_fetcher_->GetFederatedMatches(), + form_fetcher_->GetPreferredMatch(), metrics_recorder_.get()); } void PasswordFormManager::FillForm(const FormData& observed_form) { @@ -858,7 +857,7 @@ // Calculate the user's action based on existing matches and the submitted // form. - metrics_recorder_->CalculateUserAction(best_matches_, + metrics_recorder_->CalculateUserAction(form_fetcher_->GetBestMatches(), *parsed_submitted_form_); // This function might be called multiple times so set variables that are @@ -870,7 +869,7 @@ // Look for the actually submitted credentials in the list of previously saved // credentials that were available to autofilling. const PasswordForm* saved_form = password_manager_util::GetMatchForUpdating( - *parsed_submitted_form_, best_matches_); + *parsed_submitted_form_, form_fetcher_->GetBestMatches()); if (saved_form) { // A similar credential exists in the store already. pending_credentials_ = *saved_form; @@ -978,7 +977,8 @@ void PasswordFormManager::ProcessUpdate() { DCHECK_EQ(FormFetcher::State::NOT_WAITING, form_fetcher_->GetState()); - DCHECK(preferred_match_ || pending_credentials_.IsFederatedCredential()); + DCHECK(form_fetcher_->GetPreferredMatch() || + pending_credentials_.IsFederatedCredential()); // If we're doing an Update, we either autofilled correctly and need to // update the stats, or the user typed in a new password for autofilled // username, or the user selected one of the non-preferred matches, @@ -1008,16 +1008,17 @@ } if (pending_credentials_.times_used == 1) { - votes_uploader_.UploadFirstLoginVotes(best_matches_, pending_credentials_, + votes_uploader_.UploadFirstLoginVotes(form_fetcher_->GetBestMatches(), + pending_credentials_, *parsed_submitted_form_); } } void PasswordFormManager::FillHttpAuth() { DCHECK(IsHttpAuth()); - if (!preferred_match_) + if (!form_fetcher_->GetPreferredMatch()) return; - client_->AutofillHttpAuth(*preferred_match_, this); + client_->AutofillHttpAuth(*form_fetcher_->GetPreferredMatch(), this); } std::unique_ptr<PasswordForm> PasswordFormManager::ParseFormAndMakeLogging( @@ -1102,7 +1103,7 @@ void PasswordFormManager::SavePendingToStore(bool update) { const PasswordForm* saved_form = password_manager_util::GetMatchForUpdating( - *parsed_submitted_form_, best_matches_); + *parsed_submitted_form_, form_fetcher_->GetBestMatches()); if ((update || password_overridden_) && !pending_credentials_.IsFederatedCredential()) { DCHECK(saved_form);
diff --git a/components/password_manager/core/browser/password_form_manager.h b/components/password_manager/core/browser/password_form_manager.h index ee296dd..683f890 100644 --- a/components/password_manager/core/browser/password_form_manager.h +++ b/components/password_manager/core/browser/password_form_manager.h
@@ -294,11 +294,6 @@ // API. base::Optional<PasswordStore::FormDigest> observed_not_web_form_digest_; - // Set of nonblacklisted PasswordForms from the DB that best match the form - // being managed by |this|, indexed by username. The PasswordForms are owned - // by |form_fetcher_|. - std::map<base::string16, const autofill::PasswordForm*> best_matches_; - // Set of blacklisted forms from the PasswordStore that best match the current // form. They are owned by |form_fetcher_|. std::vector<const autofill::PasswordForm*> blacklisted_matches_; @@ -312,12 +307,6 @@ // which are owned by |form_fetcher_|). std::unique_ptr<autofill::PasswordForm> new_blacklisted_; - // Convenience pointer to entry in best_matches_ that is marked - // as preferred. This is only allowed to be null if there are no best matches - // at all, since there will always be one preferred login when there are - // multiple matches (when first saved, a login is marked preferred). - const autofill::PasswordForm* preferred_match_ = nullptr; - // Takes care of recording metrics and events for |*this|. scoped_refptr<PasswordFormMetricsRecorder> metrics_recorder_;
diff --git a/components/password_manager/core/browser/password_form_metrics_recorder.cc b/components/password_manager/core/browser/password_form_metrics_recorder.cc index 6346433..c55f3ff08 100644 --- a/components/password_manager/core/browser/password_form_metrics_recorder.cc +++ b/components/password_manager/core/browser/password_form_metrics_recorder.cc
@@ -643,9 +643,9 @@ username_updated_in_bubble_ ? SavingOnUsernameFirstFlow::kSavedWithEditedUsername : SavingOnUsernameFirstFlow::kSaved; - UMA_HISTOGRAM_ENUMERATION("PasswordManager.SavingOnUsernameFirstFlow", - saving_on_username_first_flow); } + UMA_HISTOGRAM_ENUMERATION("PasswordManager.SavingOnUsernameFirstFlow", + saving_on_username_first_flow); } }
diff --git a/components/password_manager/core/browser/password_manager_unittest.cc b/components/password_manager/core/browser/password_manager_unittest.cc index 77b2051..ba3308e 100644 --- a/components/password_manager/core/browser/password_manager_unittest.cc +++ b/components/password_manager/core/browser/password_manager_unittest.cc
@@ -3097,7 +3097,7 @@ EXPECT_CALL(client_, PromptUserToSaveOrUpdatePasswordPtr(_)) .WillOnce(WithArg<0>(SaveToScopedPtr(&form_manager_to_save))); - // The form disappeared, so the submission is condered to be successful. + // The form disappeared, so the submission is considered to be successful. manager()->OnPasswordFormsRendered(&driver_, {}, true); ASSERT_TRUE(form_manager_to_save); EXPECT_THAT(form_manager_to_save->GetPendingCredentials(),
diff --git a/components/password_manager/ios/js_password_manager.mm b/components/password_manager/ios/js_password_manager.mm index 56eee97..43859dede 100644 --- a/components/password_manager/ios/js_password_manager.mm +++ b/components/password_manager/ios/js_password_manager.mm
@@ -75,7 +75,7 @@ @implementation JsPasswordManager { // The injection receiver used to evaluate JavaScript. - CRWJSInjectionReceiver* _receiver; + __weak CRWJSInjectionReceiver* _receiver; } - (instancetype)initWithReceiver:(CRWJSInjectionReceiver*)receiver {
diff --git a/components/policy/core/common/cloud/cloud_policy_client_unittest.cc b/components/policy/core/common/cloud/cloud_policy_client_unittest.cc index 108a755..8caff10 100644 --- a/components/policy/core/common/cloud/cloud_policy_client_unittest.cc +++ b/components/policy/core/common/cloud/cloud_policy_client_unittest.cc
@@ -18,6 +18,7 @@ #include "base/memory/ref_counted.h" #include "base/run_loop.h" #include "base/stl_util.h" +#include "base/test/bind_test_util.h" #include "base/test/task_environment.h" #include "base/values.h" #include "build/build_config.h" @@ -248,14 +249,6 @@ remote_command_request_.mutable_remote_command_request() ->set_send_secure_commands(true); - em::RemoteCommand* command = - remote_command_response_.mutable_remote_command_response() - ->add_commands(); - command->set_age_of_command(kAgeOfCommand); - command->set_payload(kPayload); - command->set_command_id(kLastCommandId + 1); - command->set_type(em::RemoteCommand_Type_COMMAND_ECHO_TEST); - attribute_update_permission_request_. mutable_device_attribute_update_permission_request(); attribute_update_permission_response_. @@ -317,7 +310,7 @@ client_->RemoveObserver(&observer_); } - void Register() { + void RegisterClient() { EXPECT_CALL(observer_, OnRegistrationStateChanged(_)); EXPECT_CALL(device_dmtoken_callback_observer_, OnDeviceDMTokenRequested(_)) .WillOnce(Return(kDeviceDMToken)); @@ -475,14 +468,15 @@ net::OK, DeviceManagementService::kSuccess, "{}"))); } - void ExpectFetchRemoteCommands() { + void ExpectFetchRemoteCommands( + const em::DeviceManagementResponse& remote_command_response) { EXPECT_CALL(service_, StartJob(_)) .WillOnce(DoAll( service_.CaptureJobType(&job_type_), service_.CaptureQueryParams(&query_params_), service_.CaptureRequest(&job_request_), service_.StartJobAsync(net::OK, DeviceManagementService::kSuccess, - remote_command_response_))); + remote_command_response))); } void ExpectAttributeUpdatePermission(const std::string& oauth_token) { @@ -580,7 +574,6 @@ em::DeviceManagementResponse upload_certificate_response_; em::DeviceManagementResponse upload_status_response_; em::DeviceManagementResponse chrome_desktop_report_response_; - em::DeviceManagementResponse remote_command_response_; em::DeviceManagementResponse attribute_update_permission_response_; em::DeviceManagementResponse attribute_update_response_; em::DeviceManagementResponse gcm_id_update_response_; @@ -912,7 +905,7 @@ } TEST_F(CloudPolicyClientTest, PolicyUpdate) { - Register(); + RegisterClient(); ExpectPolicyFetch(kDMToken); EXPECT_CALL(observer_, OnPolicyFetched(_)); @@ -940,7 +933,7 @@ } TEST_F(CloudPolicyClientTest, PolicyFetchWithMetaData) { - Register(); + RegisterClient(); const base::Time timestamp( base::Time::UnixEpoch() + base::TimeDelta::FromDays(20)); @@ -963,7 +956,7 @@ } TEST_F(CloudPolicyClientTest, PolicyFetchWithInvalidation) { - Register(); + RegisterClient(); int64_t previous_version = client_->fetched_invalidation_version(); client_->SetInvalidationInfo(12345, "12345"); @@ -986,7 +979,7 @@ } TEST_F(CloudPolicyClientTest, PolicyFetchWithInvalidationNoPayload) { - Register(); + RegisterClient(); int64_t previous_version = client_->fetched_invalidation_version(); client_->SetInvalidationInfo(-12345, std::string()); @@ -1007,7 +1000,7 @@ // Tests that previous OAuth token is no longer sent in policy fetch after its // value was cleared. TEST_F(CloudPolicyClientTest, PolicyFetchClearOAuthToken) { - Register(); + RegisterClient(); ExpectPolicyFetchWithAdditionalAuth(kDMToken, kOAuthToken); EXPECT_CALL(observer_, OnPolicyFetched(_)); @@ -1033,7 +1026,7 @@ } TEST_F(CloudPolicyClientTest, BadPolicyResponse) { - Register(); + RegisterClient(); policy_response_.clear_policy_response(); ExpectPolicyFetch(kDMToken); @@ -1064,7 +1057,7 @@ } TEST_F(CloudPolicyClientTest, PolicyRequestFailure) { - Register(); + RegisterClient(); DeviceManagementService::JobConfiguration::JobType job_type; EXPECT_CALL(service_, StartJob(_)) @@ -1082,7 +1075,7 @@ } TEST_F(CloudPolicyClientTest, Unregister) { - Register(); + RegisterClient(); ExpectUnregistration(kDMToken); EXPECT_CALL(observer_, OnRegistrationStateChanged(_)); @@ -1097,7 +1090,7 @@ } TEST_F(CloudPolicyClientTest, UnregisterEmpty) { - Register(); + RegisterClient(); DeviceManagementService::JobConfiguration::JobType job_type; unregistration_response_.clear_unregister_response(); @@ -1114,7 +1107,7 @@ } TEST_F(CloudPolicyClientTest, UnregisterFailure) { - Register(); + RegisterClient(); DeviceManagementService::JobConfiguration::JobType job_type; EXPECT_CALL(service_, StartJob(_)) @@ -1132,7 +1125,7 @@ } TEST_F(CloudPolicyClientTest, PolicyFetchWithExtensionPolicy) { - Register(); + RegisterClient(); // Set up the |expected_responses| and |policy_response_|. static const char* kExtensions[] = { @@ -1204,7 +1197,7 @@ } TEST_F(CloudPolicyClientTest, UploadEnterpriseMachineCertificate) { - Register(); + RegisterClient(); ExpectUploadCertificate(upload_machine_certificate_request_); EXPECT_CALL(callback_observer_, OnCallbackComplete(true)).Times(1); @@ -1221,7 +1214,7 @@ } TEST_F(CloudPolicyClientTest, UploadEnterpriseEnrollmentCertificate) { - Register(); + RegisterClient(); ExpectUploadCertificate(upload_enrollment_certificate_request_); EXPECT_CALL(callback_observer_, OnCallbackComplete(true)).Times(1); @@ -1239,7 +1232,7 @@ } TEST_F(CloudPolicyClientTest, UploadEnterpriseMachineCertificateEmpty) { - Register(); + RegisterClient(); upload_certificate_response_.clear_cert_upload_response(); ExpectUploadCertificate(upload_machine_certificate_request_); @@ -1257,7 +1250,7 @@ } TEST_F(CloudPolicyClientTest, UploadEnterpriseEnrollmentCertificateEmpty) { - Register(); + RegisterClient(); upload_certificate_response_.clear_cert_upload_response(); ExpectUploadCertificate(upload_enrollment_certificate_request_); @@ -1276,7 +1269,7 @@ } TEST_F(CloudPolicyClientTest, UploadCertificateFailure) { - Register(); + RegisterClient(); const enterprise_management::DeviceManagementResponse dummy_response; DeviceManagementService::JobConfiguration::JobType job_type; @@ -1299,7 +1292,7 @@ } TEST_F(CloudPolicyClientTest, UploadEnterpriseEnrollmentId) { - Register(); + RegisterClient(); ExpectUploadCertificate(upload_enrollment_id_request_); EXPECT_CALL(callback_observer_, OnCallbackComplete(true)).Times(1); @@ -1316,7 +1309,7 @@ } TEST_F(CloudPolicyClientTest, UploadStatus) { - Register(); + RegisterClient(); ExpectUploadStatus(); EXPECT_CALL(callback_observer_, OnCallbackComplete(true)).Times(1); @@ -1337,7 +1330,7 @@ } TEST_F(CloudPolicyClientTest, UploadStatusWithOAuthToken) { - Register(); + RegisterClient(); // Test that OAuth token is sent in status upload. client_->SetOAuthTokenAsAdditionalAuth(kOAuthToken); @@ -1376,7 +1369,7 @@ } TEST_F(CloudPolicyClientTest, UploadStatusWhilePolicyFetchActive) { - Register(); + RegisterClient(); DeviceManagementService::JobConfiguration::JobType job_type; EXPECT_CALL(service_, StartJob(_)) .WillOnce(DoAll( @@ -1413,7 +1406,7 @@ } TEST_F(CloudPolicyClientTest, UploadPolicyValidationReport) { - Register(); + RegisterClient(); ExpectUploadPolicyValidationReport(); std::vector<ValueValidationIssue> issues; @@ -1433,7 +1426,7 @@ } TEST_F(CloudPolicyClientTest, UploadChromeDesktopReport) { - Register(); + RegisterClient(); ExpectChromeDesktopReport(); EXPECT_CALL(callback_observer_, OnCallbackComplete(true)).Times(1); @@ -1456,7 +1449,7 @@ #if defined(OS_WIN) || defined(OS_MACOSX) || \ defined(OS_LINUX) && !defined(OS_CHROMEOS) TEST_F(CloudPolicyClientTest, UploadRealtimeReport) { - Register(); + RegisterClient(); ExpectRealtimeReport(); EXPECT_CALL(callback_observer_, OnCallbackComplete(true)).Times(1); @@ -1589,7 +1582,7 @@ #endif TEST_F(CloudPolicyClientTest, MultipleActiveRequests) { - Register(); + RegisterClient(); // Set up pending upload status job. DeviceManagementService::JobConfiguration::JobType upload_type; @@ -1636,7 +1629,7 @@ } TEST_F(CloudPolicyClientTest, UploadStatusFailure) { - Register(); + RegisterClient(); const enterprise_management::DeviceManagementResponse dummy_response; DeviceManagementService::JobConfiguration::JobType job_type; @@ -1664,7 +1657,7 @@ } TEST_F(CloudPolicyClientTest, RequestCancelOnUnregister) { - Register(); + RegisterClient(); // Set up pending upload status job. DeviceManagementService::JobConfiguration::JobType upload_type; @@ -1698,15 +1691,24 @@ TEST_F(CloudPolicyClientTest, FetchRemoteCommands) { StrictMock<MockRemoteCommandsObserver> remote_commands_observer; - Register(); + RegisterClient(); - ExpectFetchRemoteCommands(); + em::DeviceManagementResponse remote_command_response; + em::RemoteCommand* command = + remote_command_response.mutable_remote_command_response()->add_commands(); + command->set_age_of_command(kAgeOfCommand); + command->set_payload(kPayload); + command->set_command_id(kLastCommandId + 1); + command->set_type(em::RemoteCommand_Type_COMMAND_ECHO_TEST); + + ExpectFetchRemoteCommands(remote_command_response); + EXPECT_CALL( remote_commands_observer, OnRemoteCommandsFetched( DM_STATUS_SUCCESS, ElementsAre(MatchProto( - remote_command_response_.remote_command_response().commands(0))), + remote_command_response.remote_command_response().commands(0))), _)) .Times(1); CloudPolicyClient::RemoteCommandCallback callback = @@ -1726,8 +1728,55 @@ EXPECT_EQ(DM_STATUS_SUCCESS, client_->status()); } +TEST_F(CloudPolicyClientTest, FetchSecureRemoteCommands) { + StrictMock<MockRemoteCommandsObserver> remote_commands_observer; + + RegisterClient(); + + em::DeviceManagementResponse remote_command_response; + em::SignedData* signed_command = + remote_command_response.mutable_remote_command_response() + ->add_secure_commands(); + signed_command->set_data("signed-data"); + signed_command->set_signature("signed-signature"); + + ExpectFetchRemoteCommands(remote_command_response); + + EXPECT_CALL( + remote_commands_observer, + OnRemoteCommandsFetched( + DM_STATUS_SUCCESS, _, + ElementsAre(MatchProto( + remote_command_response.remote_command_response().secure_commands( + 0))))) + .Times(1); + + base::RunLoop run_loop; + CloudPolicyClient::RemoteCommandCallback callback = + base::BindLambdaForTesting( + [&](DeviceManagementStatus status, + const std::vector<enterprise_management::RemoteCommand>& commands, + const std::vector<enterprise_management::SignedData>& + signed_commands) { + remote_commands_observer.OnRemoteCommandsFetched(status, commands, + signed_commands); + run_loop.Quit(); + }); + const std::vector<em::RemoteCommandResult> command_results( + 1, remote_command_request_.remote_command_request().command_results(0)); + client_->FetchRemoteCommands( + std::make_unique<RemoteCommandJob::UniqueIDType>(kLastCommandId), + command_results, std::move(callback)); + run_loop.Run(); + EXPECT_EQ(DeviceManagementService::JobConfiguration::TYPE_REMOTE_COMMANDS, + job_type_); + EXPECT_EQ(job_request_.SerializePartialAsString(), + remote_command_request_.SerializePartialAsString()); + EXPECT_EQ(DM_STATUS_SUCCESS, client_->status()); +} + TEST_F(CloudPolicyClientTest, RequestDeviceAttributeUpdatePermission) { - Register(); + RegisterClient(); ExpectAttributeUpdatePermission(kOAuthToken); EXPECT_CALL(callback_observer_, OnCallbackComplete(true)).Times(1); @@ -1746,7 +1795,7 @@ } TEST_F(CloudPolicyClientTest, RequestDeviceAttributeUpdate) { - Register(); + RegisterClient(); ExpectAttributeUpdate(kOAuthToken); EXPECT_CALL(callback_observer_, OnCallbackComplete(true)).Times(1); @@ -1764,7 +1813,7 @@ } TEST_F(CloudPolicyClientTest, RequestGcmIdUpdate) { - Register(); + RegisterClient(); ExpectGcmIdUpdate(); EXPECT_CALL(callback_observer_, OnCallbackComplete(true)).Times(1); @@ -1822,7 +1871,7 @@ } TEST_F(CloudPolicyClientTest, UploadAppInstallReport) { - Register(); + RegisterClient(); em::DeviceManagementRequest request; request.mutable_app_install_report_request(); ExpectUploadAppInstallReport(request); @@ -1842,7 +1891,7 @@ } TEST_F(CloudPolicyClientTest, CancelUploadAppInstallReport) { - Register(); + RegisterClient(); em::DeviceManagementRequest request; request.mutable_app_install_report_request(); ExpectUploadAppInstallReport(request); @@ -1868,7 +1917,7 @@ } TEST_F(CloudPolicyClientTest, UploadAppInstallReportSupersedesPending) { - Register(); + RegisterClient(); em::DeviceManagementRequest request; request.mutable_app_install_report_request(); ExpectUploadAppInstallReport(request); @@ -1904,7 +1953,7 @@ } TEST_F(CloudPolicyClientTest, PolicyReregistration) { - Register(); + RegisterClient(); // Handle 410 (unknown deviceID) on policy fetch. EXPECT_TRUE(client_->is_registered()); @@ -1946,7 +1995,7 @@ } TEST_F(CloudPolicyClientTest, PolicyReregistrationFailsWithNonMatchingDMToken) { - Register(); + RegisterClient(); // Handle 410 (unknown deviceID) on policy fetch. EXPECT_TRUE(client_->is_registered());
diff --git a/components/policy/core/common/remote_commands/remote_commands_service.cc b/components/policy/core/common/remote_commands/remote_commands_service.cc index 58e044f..3602e8d 100644 --- a/components/policy/core/common/remote_commands/remote_commands_service.cc +++ b/components/policy/core/common/remote_commands/remote_commands_service.cc
@@ -98,11 +98,20 @@ signed_command.signature(), CloudPolicyValidatorBase::SignatureType::SHA1); + auto ignore_result = base::BindOnce( + [](std::vector<em::RemoteCommandResult>* unsent_results, + const char* error_msg) { + SYSLOG(ERROR) << error_msg; + em::RemoteCommandResult result; + result.set_result(em::RemoteCommandResult_ResultType_RESULT_IGNORED); + result.set_command_id(-1); + unsent_results->push_back(result); + }, + &unsent_results_); + if (!valid_signature) { - SYSLOG(ERROR) << "Secure remote command signature verification failed"; - em::RemoteCommandResult result; - result.set_result(em::RemoteCommandResult_ResultType_RESULT_IGNORED); - unsent_results_.push_back(result); + std::move(ignore_result) + .Run("Secure remote command signature verification failed"); return; } @@ -111,24 +120,25 @@ !policy_data.has_policy_type() || policy_data.policy_type() != dm_protocol::kChromeRemoteCommandPolicyType) { - SYSLOG(ERROR) << "Secure remote command with wrong PolicyData type"; - em::RemoteCommandResult result; - result.set_result(em::RemoteCommandResult_ResultType_RESULT_IGNORED); - unsent_results_.push_back(result); + std::move(ignore_result) + .Run("Secure remote command with wrong PolicyData type"); return; } em::RemoteCommand command; if (!policy_data.has_policy_value() || !command.ParseFromString(policy_data.policy_value())) { - SYSLOG(ERROR) << "Secure remote command invalid RemoteCommand data"; - em::RemoteCommandResult result; - result.set_result(em::RemoteCommandResult_ResultType_RESULT_IGNORED); - unsent_results_.push_back(result); + std::move(ignore_result) + .Run("Secure remote command invalid RemoteCommand data"); return; } - // TODO(isandrk): Also make sure that target_device_id matches and add tests! + const em::PolicyData* const policy = store_->policy(); + if (!policy || policy->device_id() != command.target_device_id()) { + std::move(ignore_result) + .Run("Secure remote command wrong target device id"); + return; + } // Signature verification passed. EnqueueCommand(command, &signed_command);
diff --git a/components/policy/core/common/remote_commands/remote_commands_service_unittest.cc b/components/policy/core/common/remote_commands/remote_commands_service_unittest.cc index cbb018e1..d93afe5 100644 --- a/components/policy/core/common/remote_commands/remote_commands_service_unittest.cc +++ b/components/policy/core/common/remote_commands/remote_commands_service_unittest.cc
@@ -20,6 +20,8 @@ #include "base/time/tick_clock.h" #include "components/policy/core/common/cloud/cloud_policy_client.h" #include "components/policy/core/common/cloud/cloud_policy_constants.h" +#include "components/policy/core/common/cloud/mock_cloud_policy_store.h" +#include "components/policy/core/common/cloud/policy_builder.h" #include "components/policy/core/common/remote_commands/remote_command_job.h" #include "components/policy/core/common/remote_commands/remote_commands_factory.h" #include "components/policy/core/common/remote_commands/remote_commands_queue.h" @@ -50,6 +52,11 @@ EXPECT_EQ(expected_payload, command_result.payload()); } +void ExpectIgnoredJob(const em::RemoteCommandResult& command_result) { + EXPECT_EQ(em::RemoteCommandResult_ResultType_RESULT_IGNORED, + command_result.result()); +} + } // namespace // Mocked RemoteCommand factory to allow us to build test commands. @@ -79,6 +86,33 @@ DISALLOW_COPY_AND_ASSIGN(MockTestRemoteCommandFactory); }; +// Expectations for a single FetchRemoteCommands() call. +struct FetchCallExpectation { + FetchCallExpectation() = default; + + FetchCallExpectation SetCommandResults(size_t n) { + expected_command_results = n; + return *this; + } + FetchCallExpectation SetFetchedCommands(size_t n) { + expected_fetched_commands = n; + return *this; + } + FetchCallExpectation SetSignedCommands(size_t n) { + expected_signed_commands = n; + return *this; + } + FetchCallExpectation SetFetchedCallback(base::Closure callback) { + commands_fetched_callback = callback; + return *this; + } + + size_t expected_command_results = 0; + size_t expected_fetched_commands = 0; + size_t expected_signed_commands = 0; + base::Closure commands_fetched_callback = base::DoNothing(); +}; + // A mocked CloudPolicyClient to interact with a TestingRemoteCommandsServer. class TestingCloudPolicyClientForRemoteCommands : public CloudPolicyClient { public: @@ -102,33 +136,12 @@ EXPECT_TRUE(expected_fetch_commands_calls_.empty()); } - // Expect a FetchRemoteCommands() call with |expected_command_results| - // commands results sent and |expected_fetched_commands| commands fetched. - // |commands_fetched_callback| will be executed after the fetch is processed. - void ExpectFetchCommands(size_t expected_command_results, - size_t expected_fetched_commands, - const base::Closure& commands_fetched_callback) { - expected_fetch_commands_calls_.push(FetchCallExpectation( - expected_command_results, expected_fetched_commands, - commands_fetched_callback)); + // Expect a FetchRemoteCommands() call with |fetch_call_expectation|. + void ExpectFetchCommands(FetchCallExpectation fetch_call_expectation) { + expected_fetch_commands_calls_.push(fetch_call_expectation); } private: - // Expectations for a single FetchRemoteCommands() call. - struct FetchCallExpectation { - FetchCallExpectation(size_t expected_command_results, - size_t expected_fetched_commands, - const base::Closure& commands_fetched_callback) - : expected_command_results(expected_command_results), - expected_fetched_commands(expected_fetched_commands), - commands_fetched_callback(commands_fetched_callback) {} - virtual ~FetchCallExpectation() {} - - const size_t expected_command_results; - const size_t expected_fetched_commands; - const base::Closure commands_fetched_callback; - }; - void FetchRemoteCommands( std::unique_ptr<RemoteCommandJob::UniqueIDType> last_command_id, const std::vector<em::RemoteCommandResult>& command_results, @@ -155,13 +168,21 @@ const std::vector<em::RemoteCommandResult>& command_results, RemoteCommandCallback callback, const FetchCallExpectation& fetch_call_expectation) { - const std::vector<em::RemoteCommand> fetched_commands = - server_->FetchCommands(std::move(last_command_id), command_results); + std::vector<em::RemoteCommand> fetched_commands; + std::vector<em::SignedData> signed_commands; + server_->FetchCommands(std::move(last_command_id), command_results, + &fetched_commands, &signed_commands); + + // The server will send us either old-style unsigned or new signed commands, + // never both at the same time. + EXPECT_TRUE(fetched_commands.size() == 0 || signed_commands.size() == 0); EXPECT_EQ(fetch_call_expectation.expected_command_results, command_results.size()); EXPECT_EQ(fetch_call_expectation.expected_fetched_commands, fetched_commands.size()); + EXPECT_EQ(fetch_call_expectation.expected_signed_commands, + signed_commands.size()); if (!fetch_call_expectation.commands_fetched_callback.is_null()) fetch_call_expectation.commands_fetched_callback.Run(); @@ -170,7 +191,7 @@ base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( FROM_HERE, base::BindOnce(std::move(callback), DM_STATUS_SUCCESS, fetched_commands, - std::vector<em::SignedData>()), + signed_commands), base::TimeDelta::FromSeconds( kTestClientServerCommunicationDelayInSeconds)); } @@ -184,24 +205,17 @@ // Base class for unit tests regarding remote commands service. class RemoteCommandsServiceTest : public testing::Test { protected: - RemoteCommandsServiceTest() = default; - - void SetUp() override { - server_.reset(new TestingRemoteCommandsServer()); + RemoteCommandsServiceTest() + : server_(std::make_unique<TestingRemoteCommandsServer>()) { server_->SetClock(mock_task_runner_->GetMockTickClock()); - cloud_policy_client_.reset( - new TestingCloudPolicyClientForRemoteCommands(server_.get())); - } - - void TearDown() override { - remote_commands_service_.reset(); - cloud_policy_client_.reset(); - server_.reset(); + cloud_policy_client_ = + std::make_unique<TestingCloudPolicyClientForRemoteCommands>( + server_.get()); } void StartService(std::unique_ptr<RemoteCommandsFactory> factory) { - remote_commands_service_.reset(new RemoteCommandsService( - std::move(factory), cloud_policy_client_.get(), nullptr /* store */)); + remote_commands_service_ = std::make_unique<RemoteCommandsService>( + std::move(factory), cloud_policy_client_.get(), &store_); remote_commands_service_->SetClocksForTesting( mock_task_runner_->GetMockClock(), mock_task_runner_->GetMockTickClock()); @@ -209,16 +223,17 @@ void FlushAllTasks() { mock_task_runner_->FastForwardUntilNoTasksRemain(); } - std::unique_ptr<TestingRemoteCommandsServer> server_; - std::unique_ptr<TestingCloudPolicyClientForRemoteCommands> - cloud_policy_client_; - std::unique_ptr<RemoteCommandsService> remote_commands_service_; - - private: const scoped_refptr<base::TestMockTimeTaskRunner> mock_task_runner_ = base::MakeRefCounted<base::TestMockTimeTaskRunner>( base::TestMockTimeTaskRunner::Type::kBoundToThread); + std::unique_ptr<TestingRemoteCommandsServer> server_; + std::unique_ptr<TestingCloudPolicyClientForRemoteCommands> + cloud_policy_client_; + MockCloudPolicyStore store_; + std::unique_ptr<RemoteCommandsService> remote_commands_service_; + + private: DISALLOW_COPY_AND_ASSIGN(RemoteCommandsServiceTest); }; @@ -231,7 +246,7 @@ StartService(std::move(factory)); // A fetch requst should get nothing from server. - cloud_policy_client_->ExpectFetchCommands(0u, 0u, base::Closure()); + cloud_policy_client_->ExpectFetchCommands(FetchCallExpectation()); EXPECT_TRUE(remote_commands_service_->FetchRemoteCommands()); FlushAllTasks(); @@ -252,7 +267,9 @@ base::Bind(&ExpectSucceededJob, kTestPayload), false); // Start the service, run until the command is fetched. - cloud_policy_client_->ExpectFetchCommands(0u, 1u, run_loop.QuitClosure()); + cloud_policy_client_->ExpectFetchCommands( + FetchCallExpectation().SetFetchedCommands(1).SetFetchedCallback( + run_loop.QuitClosure())); StartService(std::move(factory)); EXPECT_TRUE(remote_commands_service_->FetchRemoteCommands()); @@ -260,7 +277,8 @@ } // And run again so that the result can be reported. - cloud_policy_client_->ExpectFetchCommands(1u, 0u, base::Closure()); + cloud_policy_client_->ExpectFetchCommands( + FetchCallExpectation().SetCommandResults(1)); FlushAllTasks(); @@ -278,8 +296,10 @@ // Set up expectations on fetch commands calls. The first request will fetch // one command, and the second will fetch none but provide result for the // previous command instead. - cloud_policy_client_->ExpectFetchCommands(0u, 1u, base::Closure()); - cloud_policy_client_->ExpectFetchCommands(1u, 0u, base::Closure()); + cloud_policy_client_->ExpectFetchCommands( + FetchCallExpectation().SetFetchedCommands(1)); + cloud_policy_client_->ExpectFetchCommands( + FetchCallExpectation().SetCommandResults(1)); // Issue a command and manually start a command fetch. server_->IssueCommand(em::RemoteCommand_Type_COMMAND_ECHO_TEST, kTestPayload, @@ -308,7 +328,8 @@ kTestPayload, base::Bind(&ExpectSucceededJob, kTestPayload), true); - cloud_policy_client_->ExpectFetchCommands(0u, 0u, run_loop.QuitClosure()); + cloud_policy_client_->ExpectFetchCommands( + FetchCallExpectation().SetFetchedCallback(run_loop.QuitClosure())); // Attempts to fetch commands. EXPECT_TRUE(remote_commands_service_->FetchRemoteCommands()); @@ -330,8 +351,10 @@ // issued before the first fetch request completes in previous run loop. EXPECT_EQ(1u, server_->NumberOfCommandsPendingResult()); - cloud_policy_client_->ExpectFetchCommands(0u, 1u, base::Closure()); - cloud_policy_client_->ExpectFetchCommands(1u, 0u, base::Closure()); + cloud_policy_client_->ExpectFetchCommands( + FetchCallExpectation().SetFetchedCommands(1)); + cloud_policy_client_->ExpectFetchCommands( + FetchCallExpectation().SetCommandResults(1)); // No further fetch request is made, but the new issued command should be // fetched and executed. @@ -359,8 +382,10 @@ // Set up expectations on fetch commands calls. The first request will fetch // one command, and the second will fetch none but provide result for the // previous command instead. - cloud_policy_client_->ExpectFetchCommands(0u, 1u, base::Closure()); - cloud_policy_client_->ExpectFetchCommands(1u, 0u, base::Closure()); + cloud_policy_client_->ExpectFetchCommands( + FetchCallExpectation().SetFetchedCommands(1)); + cloud_policy_client_->ExpectFetchCommands( + FetchCallExpectation().SetCommandResults(1)); // Issue a command and manually start a command fetch. server_->IssueCommand(em::RemoteCommand_Type_COMMAND_ECHO_TEST, kTestPayload, @@ -372,4 +397,111 @@ EXPECT_TRUE(on_command_acked_callback_called); } +class EnsureCalled { + public: + EnsureCalled() = default; + ~EnsureCalled() { CHECK(called_times_ == 1); } + + void Bind(ResultReportedCallback callback) { + callback_ = std::move(callback); + } + + void Call(const em::RemoteCommandResult& command_result) { + called_times_++; + std::move(callback_).Run(command_result); + } + + private: + int called_times_ = 0; + ResultReportedCallback callback_; + + DISALLOW_COPY_AND_ASSIGN(EnsureCalled); +}; + +class SignedRemoteCommandsServiceTest : public RemoteCommandsServiceTest { + protected: + SignedRemoteCommandsServiceTest() { + StartService(std::make_unique<MockTestRemoteCommandFactory>()); + + // Set the public key and the device id. + std::vector<uint8_t> public_key = PolicyBuilder::GetPublicTestKey(); + store_.policy_signature_public_key_.assign(public_key.begin(), + public_key.end()); + store_.policy_ = std::make_unique<em::PolicyData>(); + store_.policy_->set_device_id("acme-device"); + + // Set up expectations on fetch commands calls. The first request will fetch + // one secure command, and the second will fetch none but provide result for + // the previous command instead. + cloud_policy_client_->ExpectFetchCommands( + FetchCallExpectation().SetSignedCommands(1)); + cloud_policy_client_->ExpectFetchCommands( + FetchCallExpectation().SetCommandResults(1)); + } + + ~SignedRemoteCommandsServiceTest() override { + EXPECT_TRUE(remote_commands_service_->FetchRemoteCommands()); + FlushAllTasks(); + EXPECT_EQ(0u, server_->NumberOfCommandsPendingResult()); + } + + EnsureCalled ensure_called_; + + private: + DISALLOW_COPY_AND_ASSIGN(SignedRemoteCommandsServiceTest); +}; + +// Tests that signed remote commands work. +TEST_F(SignedRemoteCommandsServiceTest, Success) { + ensure_called_.Bind(base::BindOnce(&ExpectSucceededJob, std::string())); + server_->IssueSignedCommand( + base::BindOnce(&EnsureCalled::Call, base::Unretained(&ensure_called_)), + nullptr, nullptr, nullptr); +} + +// Tests that we reject signed remote commands with invalid signature. +TEST_F(SignedRemoteCommandsServiceTest, InvalidSignature) { + em::SignedData signed_data; + signed_data.set_data("some-random-data"); + signed_data.set_signature("random-signature"); + + ensure_called_.Bind(base::BindOnce(&ExpectIgnoredJob)); + server_->IssueSignedCommand( + base::BindOnce(&EnsureCalled::Call, base::Unretained(&ensure_called_)), + nullptr, nullptr, &signed_data); +} + +// Tests that we reject signed remote commands with invalid PolicyData type. +TEST_F(SignedRemoteCommandsServiceTest, InvalidPolicyDataType) { + em::PolicyData policy_data; + policy_data.set_policy_type("some-random-policy-type"); + + ensure_called_.Bind(base::BindOnce(&ExpectIgnoredJob)); + server_->IssueSignedCommand( + base::BindOnce(&EnsureCalled::Call, base::Unretained(&ensure_called_)), + nullptr, &policy_data, nullptr); +} + +// Tests that we reject signed remote commands with invalid RemoteCommand data. +TEST_F(SignedRemoteCommandsServiceTest, InvalidRemoteCommand) { + em::PolicyData policy_data; + policy_data.set_policy_type("google/chromeos/remotecommand"); + + ensure_called_.Bind(base::BindOnce(&ExpectIgnoredJob)); + server_->IssueSignedCommand( + base::BindOnce(&EnsureCalled::Call, base::Unretained(&ensure_called_)), + nullptr, &policy_data, nullptr); +} + +// Tests that we reject signed remote commands with invalid target device id. +TEST_F(SignedRemoteCommandsServiceTest, InvalidDeviceId) { + em::RemoteCommand remote_command; + remote_command.set_target_device_id("roadrunner-device"); + + ensure_called_.Bind(base::BindOnce(&ExpectIgnoredJob)); + server_->IssueSignedCommand( + base::BindOnce(&EnsureCalled::Call, base::Unretained(&ensure_called_)), + &remote_command, nullptr, nullptr); +} + } // namespace policy
diff --git a/components/policy/core/common/remote_commands/testing_remote_commands_server.cc b/components/policy/core/common/remote_commands/testing_remote_commands_server.cc index 902ebdc..faa15e9 100644 --- a/components/policy/core/common/remote_commands/testing_remote_commands_server.cc +++ b/components/policy/core/common/remote_commands/testing_remote_commands_server.cc
@@ -4,33 +4,61 @@ #include "components/policy/core/common/remote_commands/testing_remote_commands_server.h" +#include <iterator> #include <utility> #include "base/bind.h" #include "base/callback.h" +#include "base/hash/sha1.h" #include "base/location.h" #include "base/logging.h" +#include "base/optional.h" #include "base/single_thread_task_runner.h" #include "base/threading/thread_task_runner_handle.h" #include "base/time/default_tick_clock.h" #include "base/time/tick_clock.h" #include "base/time/time.h" +#include "components/policy/core/common/cloud/policy_builder.h" +#include "crypto/signature_creator.h" #include "testing/gtest/include/gtest/gtest.h" namespace em = enterprise_management; namespace policy { +namespace { + +std::string SignDataWithTestKey(const std::string& data) { + std::unique_ptr<crypto::RSAPrivateKey> private_key = + PolicyBuilder::CreateTestSigningKey(); + std::string sha1 = base::SHA1HashString(data); + std::vector<uint8_t> digest(sha1.begin(), sha1.end()); + std::vector<uint8_t> result; + CHECK(crypto::SignatureCreator::Sign(private_key.get(), + crypto::SignatureCreator::SHA1, + digest.data(), digest.size(), &result)); + return std::string(result.begin(), result.end()); +} + +} // namespace + struct TestingRemoteCommandsServer::RemoteCommandWithCallback { - RemoteCommandWithCallback(const em::RemoteCommand& command_proto, + RemoteCommandWithCallback(em::RemoteCommand command_proto, + base::Optional<em::SignedData> signed_command_proto, base::TimeTicks issued_time, - const ResultReportedCallback& reported_callback) + ResultReportedCallback reported_callback) : command_proto(command_proto), + signed_command_proto(signed_command_proto), issued_time(issued_time), - reported_callback(reported_callback) {} + reported_callback(std::move(reported_callback)) {} + RemoteCommandWithCallback(RemoteCommandWithCallback&& other) = default; + RemoteCommandWithCallback& operator=(RemoteCommandWithCallback&& other) = + default; + ~RemoteCommandWithCallback() {} em::RemoteCommand command_proto; + base::Optional<em::SignedData> signed_command_proto; base::TimeTicks issued_time; ResultReportedCallback reported_callback; }; @@ -53,10 +81,9 @@ void TestingRemoteCommandsServer::IssueCommand( em::RemoteCommand_Type type, const std::string& payload, - const ResultReportedCallback& reported_callback, + ResultReportedCallback reported_callback, bool skip_next_fetch) { DCHECK(thread_checker_.CalledOnValidThread()); - base::AutoLock auto_lock(lock_); em::RemoteCommand command; @@ -65,18 +92,59 @@ if (!payload.empty()) command.set_payload(payload); - const RemoteCommandWithCallback command_with_callback( - command, clock_->NowTicks(), reported_callback); + RemoteCommandWithCallback command_with_callback( + command, base::nullopt, clock_->NowTicks(), std::move(reported_callback)); if (skip_next_fetch) - commands_issued_after_next_fetch_.push_back(command_with_callback); + commands_issued_after_next_fetch_.push_back( + std::move(command_with_callback)); else - commands_.push_back(command_with_callback); + commands_.push_back(std::move(command_with_callback)); } -TestingRemoteCommandsServer::RemoteCommands -TestingRemoteCommandsServer::FetchCommands( +void TestingRemoteCommandsServer::IssueSignedCommand( + ResultReportedCallback reported_callback, + em::RemoteCommand* command_in, + em::PolicyData* policy_data_in, + em::SignedData* signed_data_in) { + DCHECK(thread_checker_.CalledOnValidThread()); + base::AutoLock auto_lock(lock_); + + em::RemoteCommand command; + em::PolicyData policy_data; + em::SignedData signed_data; + + if (command_in) { + command = *command_in; + } else { + command.set_target_device_id("acme-device"); + command.set_type(em::RemoteCommand_Type_COMMAND_ECHO_TEST); + command.set_command_id(++last_generated_unique_id_); + } + + if (policy_data_in) { + policy_data = *policy_data_in; + } else { + policy_data.set_policy_type("google/chromeos/remotecommand"); + EXPECT_TRUE(command.SerializeToString(policy_data.mutable_policy_value())); + } + + if (signed_data_in) { + signed_data = *signed_data_in; + } else { + EXPECT_TRUE(policy_data.SerializeToString(signed_data.mutable_data())); + signed_data.set_signature(SignDataWithTestKey(signed_data.data())); + } + + RemoteCommandWithCallback command_with_callback( + command, signed_data, clock_->NowTicks(), std::move(reported_callback)); + commands_.push_back(std::move(command_with_callback)); +} + +void TestingRemoteCommandsServer::FetchCommands( std::unique_ptr<RemoteCommandJob::UniqueIDType> last_command_id, - const RemoteCommandResults& previous_job_results) { + const RemoteCommandResults& previous_job_results, + std::vector<em::RemoteCommand>* fetched_commands, + std::vector<em::SignedData>* signed_commands) { base::AutoLock auto_lock(lock_); for (const auto& job_result : previous_job_results) { @@ -86,6 +154,15 @@ bool found_command = false; ResultReportedCallback reported_callback; + if (job_result.command_id() == -1) { + // The result can have command_id equal to -1 in case a signed command was + // rejected at the validation stage before it could be unpacked. + CHECK(commands_.size() == 1); + found_command = true; + reported_callback = std::move(commands_[0].reported_callback); + commands_.clear(); + } + if (last_command_id) { // This relies on us generating commands with increasing IDs. EXPECT_GE(*last_command_id, job_result.command_id()); @@ -93,7 +170,7 @@ for (auto it = commands_.begin(); it != commands_.end(); ++it) { if (it->command_proto.command_id() == job_result.command_id()) { - reported_callback = it->reported_callback; + reported_callback = std::move(it->reported_callback); commands_.erase(it); found_command = true; break; @@ -103,35 +180,40 @@ // Verify that the command result is for an existing command actually // expecting a result. EXPECT_TRUE(found_command); - EXPECT_FALSE(reported_callback.is_null()); - if (reported_callback.is_null()) { + if (!reported_callback.is_null()) { // Post task to the original thread which will report the result. task_runner_->PostTask( FROM_HERE, base::BindOnce(&TestingRemoteCommandsServer::ReportJobResult, - weak_ptr_to_this_, reported_callback, job_result)); + weak_ptr_to_this_, std::move(reported_callback), + job_result)); } } - RemoteCommands fetched_commands; for (const auto& command_with_callback : commands_) { - if (!last_command_id || - command_with_callback.command_proto.command_id() > *last_command_id) { - fetched_commands.push_back(command_with_callback.command_proto); + if (command_with_callback.signed_command_proto) { + // Signed commands. + signed_commands->push_back( + command_with_callback.signed_command_proto.value()); + } else if (!last_command_id || + command_with_callback.command_proto.command_id() > + *last_command_id) { + // Old style, unsigned commands. + fetched_commands->push_back(command_with_callback.command_proto); // Simulate the age of commands calculation on the server side. - fetched_commands.back().set_age_of_command( + fetched_commands->back().set_age_of_command( (clock_->NowTicks() - command_with_callback.issued_time) .InMilliseconds()); } } // Push delayed commands into the main queue. - commands_.insert(commands_.end(), commands_issued_after_next_fetch_.begin(), - commands_issued_after_next_fetch_.end()); + commands_.insert( + commands_.end(), + std::make_move_iterator(commands_issued_after_next_fetch_.begin()), + std::make_move_iterator(commands_issued_after_next_fetch_.end())); commands_issued_after_next_fetch_.clear(); - - return fetched_commands; } void TestingRemoteCommandsServer::SetClock(const base::TickClock* clock) { @@ -145,10 +227,10 @@ } void TestingRemoteCommandsServer::ReportJobResult( - const ResultReportedCallback& reported_callback, + ResultReportedCallback reported_callback, const em::RemoteCommandResult& job_result) const { DCHECK(thread_checker_.CalledOnValidThread()); - reported_callback.Run(job_result); + std::move(reported_callback).Run(job_result); } } // namespace policy
diff --git a/components/policy/core/common/remote_commands/testing_remote_commands_server.h b/components/policy/core/common/remote_commands/testing_remote_commands_server.h index 4950242..ce0bbe3d 100644 --- a/components/policy/core/common/remote_commands/testing_remote_commands_server.h +++ b/components/policy/core/common/remote_commands/testing_remote_commands_server.h
@@ -27,6 +27,10 @@ namespace policy { +// Callback called when a command's result is reported back to the server. +using ResultReportedCallback = + base::OnceCallback<void(const enterprise_management::RemoteCommandResult&)>; + // This class implements server-side logic for remote commands service tests. It // acts just like a queue, and there are mainly two exposed methods for this // purpose. Test authors are expected to call IssueCommand() to add commands to @@ -45,14 +49,9 @@ TestingRemoteCommandsServer(); virtual ~TestingRemoteCommandsServer(); - using RemoteCommands = std::vector<enterprise_management::RemoteCommand>; using RemoteCommandResults = std::vector<enterprise_management::RemoteCommandResult>; - // Callback called when a command's result is reported back to the server. - using ResultReportedCallback = - base::Callback<void(const enterprise_management::RemoteCommandResult&)>; - // Create and add a command with |type| as command type and |payload| as // command payload if it's not empty. |clock_| will be used to get the // command issue time. |reported_callback| will be called from the same @@ -63,8 +62,12 @@ // the server and |reported_callback| itself will be called at that time. void IssueCommand(enterprise_management::RemoteCommand_Type type, const std::string& payload, - const ResultReportedCallback& reported_callback, + ResultReportedCallback reported_callback, bool skip_next_fetch); + void IssueSignedCommand(ResultReportedCallback reported_callback, + enterprise_management::RemoteCommand* command_in, + enterprise_management::PolicyData* policy_data_in, + enterprise_management::SignedData* signed_data_in); // Fetch commands, acknowledging all commands up to and including // |last_command_id|, and provide |previous_job_results| as results for @@ -74,9 +77,11 @@ // and client for remote command fetching. // Unlike every other methods in the class, this method can be called from // any thread. - RemoteCommands FetchCommands( + void FetchCommands( std::unique_ptr<RemoteCommandJob::UniqueIDType> last_command_id, - const RemoteCommandResults& previous_job_results); + const RemoteCommandResults& previous_job_results, + std::vector<enterprise_management::RemoteCommand>* fetched_commands, + std::vector<enterprise_management::SignedData>* signed_commands); // Set alternative clock for obtaining the command issue time. The default // clock uses the system clock. @@ -90,7 +95,7 @@ struct RemoteCommandWithCallback; void ReportJobResult( - const ResultReportedCallback& reported_callback, + ResultReportedCallback reported_callback, const enterprise_management::RemoteCommandResult& job_result) const; // The main command queue.
diff --git a/components/safe_browsing/browser/safe_browsing_network_context.cc b/components/safe_browsing/browser/safe_browsing_network_context.cc index bafff4a2..d5de6107 100644 --- a/components/safe_browsing/browser/safe_browsing_network_context.cc +++ b/components/safe_browsing/browser/safe_browsing_network_context.cc
@@ -97,6 +97,7 @@ network::mojom::URLLoaderFactoryParams::New(); params->process_id = network::mojom::kBrowserProcessId; params->is_corb_enabled = false; + params->is_trusted = true; GetNetworkContext()->CreateURLLoaderFactory( MakeRequest(&url_loader_factory_), std::move(params)); }
diff --git a/components/storage_monitor/mtp_manager_client_chromeos.cc b/components/storage_monitor/mtp_manager_client_chromeos.cc index 21ae6e8..844dfe1b 100644 --- a/components/storage_monitor/mtp_manager_client_chromeos.cc +++ b/components/storage_monitor/mtp_manager_client_chromeos.cc
@@ -16,11 +16,9 @@ MtpManagerClientChromeOS::MtpManagerClientChromeOS( StorageMonitor::Receiver* receiver, device::mojom::MtpManager* mtp_manager) - : mtp_manager_(mtp_manager), binding_(this), notifications_(receiver) { - device::mojom::MtpManagerClientAssociatedPtrInfo client; - binding_.Bind(mojo::MakeRequest(&client)); + : mtp_manager_(mtp_manager), notifications_(receiver) { mtp_manager_->EnumerateStoragesAndSetClient( - std::move(client), + receiver_.BindNewEndpointAndPassRemote(), base::BindOnce(&MtpManagerClientChromeOS::OnReceivedStorages, weak_ptr_factory_.GetWeakPtr())); }
diff --git a/components/storage_monitor/mtp_manager_client_chromeos.h b/components/storage_monitor/mtp_manager_client_chromeos.h index e88ac51..7a1815f 100644 --- a/components/storage_monitor/mtp_manager_client_chromeos.h +++ b/components/storage_monitor/mtp_manager_client_chromeos.h
@@ -11,7 +11,7 @@ #include "base/memory/weak_ptr.h" #include "components/storage_monitor/storage_monitor.h" -#include "mojo/public/cpp/bindings/associated_binding.h" +#include "mojo/public/cpp/bindings/associated_receiver.h" #include "services/device/public/mojom/mtp_manager.mojom.h" namespace base { @@ -62,7 +62,7 @@ // manager outlives this object. device::mojom::MtpManager* const mtp_manager_; - mojo::AssociatedBinding<device::mojom::MtpManagerClient> binding_; + mojo::AssociatedReceiver<device::mojom::MtpManagerClient> receiver_{this}; // The notifications object to use to signal newly attached devices. // Guaranteed to outlive this class.
diff --git a/components/storage_monitor/storage_monitor_chromeos.cc b/components/storage_monitor/storage_monitor_chromeos.cc index 9ef9b99..729be61 100644 --- a/components/storage_monitor/storage_monitor_chromeos.cc +++ b/components/storage_monitor/storage_monitor_chromeos.cc
@@ -121,8 +121,8 @@ if (!mtp_device_manager_) { // Set up the connection with mojofied MtpManager. DCHECK(GetConnector()); - GetConnector()->BindInterface(device::mojom::kServiceName, - mojo::MakeRequest(&mtp_device_manager_)); + GetConnector()->Connect(device::mojom::kServiceName, + mtp_device_manager_.BindNewPipeAndPassReceiver()); } // |mtp_manager_client_| needs to be initialized for both tests and // production code, so keep it out of the if condition. @@ -237,9 +237,9 @@ } void StorageMonitorCros::SetMediaTransferProtocolManagerForTest( - device::mojom::MtpManagerPtr test_manager) { + mojo::PendingRemote<device::mojom::MtpManager> test_manager) { DCHECK(!mtp_device_manager_); - mtp_device_manager_ = std::move(test_manager); + mtp_device_manager_.Bind(std::move(test_manager)); } bool StorageMonitorCros::GetStorageInfoForPath(
diff --git a/components/storage_monitor/storage_monitor_chromeos.h b/components/storage_monitor/storage_monitor_chromeos.h index 5bdcd970..5cf12ea 100644 --- a/components/storage_monitor/storage_monitor_chromeos.h +++ b/components/storage_monitor/storage_monitor_chromeos.h
@@ -23,6 +23,8 @@ #include "build/build_config.h" #include "chromeos/disks/disk_mount_manager.h" #include "components/storage_monitor/storage_monitor.h" +#include "mojo/public/cpp/bindings/pending_remote.h" +#include "mojo/public/cpp/bindings/remote.h" #include "services/device/public/mojom/mtp_manager.mojom.h" namespace storage_monitor { @@ -43,7 +45,7 @@ protected: void SetMediaTransferProtocolManagerForTest( - device::mojom::MtpManagerPtr test_manager); + mojo::PendingRemote<device::mojom::MtpManager> test_manager); // chromeos::disks::DiskMountManager::Observer implementation. void OnBootDeviceDiskEvent(chromeos::disks::DiskMountManager::DiskEvent event, @@ -86,7 +88,7 @@ // Mapping of relevant mount points and their corresponding mount devices. MountMap mount_map_; - device::mojom::MtpManagerPtr mtp_device_manager_; + mojo::Remote<device::mojom::MtpManager> mtp_device_manager_; std::unique_ptr<MtpManagerClientChromeOS> mtp_manager_client_;
diff --git a/components/storage_monitor/storage_monitor_chromeos_unittest.cc b/components/storage_monitor/storage_monitor_chromeos_unittest.cc index 40bdd34..a1c784f 100644 --- a/components/storage_monitor/storage_monitor_chromeos_unittest.cc +++ b/components/storage_monitor/storage_monitor_chromeos_unittest.cc
@@ -26,6 +26,7 @@ #include "components/storage_monitor/test_media_transfer_protocol_manager_chromeos.h" #include "components/storage_monitor/test_storage_monitor.h" #include "content/public/test/browser_task_environment.h" +#include "mojo/public/cpp/bindings/pending_remote.h" #include "testing/gtest/include/gtest/gtest.h" namespace storage_monitor { @@ -71,11 +72,12 @@ ~TestStorageMonitorCros() override {} void Init() override { - device::mojom::MtpManagerPtr fake_mtp_manager_ptr; + mojo::PendingRemote<device::mojom::MtpManager> pending_fake_mtp_manager; auto* fake_mtp_manager = TestMediaTransferProtocolManagerChromeOS::GetFakeMtpManager(); - fake_mtp_manager->AddBinding(mojo::MakeRequest(&fake_mtp_manager_ptr)); - SetMediaTransferProtocolManagerForTest(std::move(fake_mtp_manager_ptr)); + fake_mtp_manager->AddReceiver( + pending_fake_mtp_manager.InitWithNewPipeAndPassReceiver()); + SetMediaTransferProtocolManagerForTest(std::move(pending_fake_mtp_manager)); StorageMonitorCros::Init(); }
diff --git a/components/storage_monitor/test_media_transfer_protocol_manager_chromeos.cc b/components/storage_monitor/test_media_transfer_protocol_manager_chromeos.cc index f669570..633ad5f9 100644 --- a/components/storage_monitor/test_media_transfer_protocol_manager_chromeos.cc +++ b/components/storage_monitor/test_media_transfer_protocol_manager_chromeos.cc
@@ -28,13 +28,13 @@ TestMediaTransferProtocolManagerChromeOS:: ~TestMediaTransferProtocolManagerChromeOS() {} -void TestMediaTransferProtocolManagerChromeOS::AddBinding( - device::mojom::MtpManagerRequest request) { - bindings_.AddBinding(this, std::move(request)); +void TestMediaTransferProtocolManagerChromeOS::AddReceiver( + mojo::PendingReceiver<device::mojom::MtpManager> receiver) { + receivers_.Add(this, std::move(receiver)); } void TestMediaTransferProtocolManagerChromeOS::EnumerateStoragesAndSetClient( - device::mojom::MtpManagerClientAssociatedPtrInfo client, + mojo::PendingAssociatedRemote<device::mojom::MtpManagerClient> client, EnumerateStoragesAndSetClientCallback callback) { std::move(callback).Run(std::vector<device::mojom::MtpStorageInfoPtr>()); }
diff --git a/components/storage_monitor/test_media_transfer_protocol_manager_chromeos.h b/components/storage_monitor/test_media_transfer_protocol_manager_chromeos.h index cb72dbf..31d96ea5 100644 --- a/components/storage_monitor/test_media_transfer_protocol_manager_chromeos.h +++ b/components/storage_monitor/test_media_transfer_protocol_manager_chromeos.h
@@ -11,7 +11,9 @@ #include <string> #include "base/macros.h" -#include "mojo/public/cpp/bindings/binding_set.h" +#include "mojo/public/cpp/bindings/pending_associated_remote.h" +#include "mojo/public/cpp/bindings/pending_receiver.h" +#include "mojo/public/cpp/bindings/receiver_set.h" #include "services/device/public/mojom/mtp_manager.mojom.h" namespace storage_monitor { @@ -24,12 +26,12 @@ TestMediaTransferProtocolManagerChromeOS(); ~TestMediaTransferProtocolManagerChromeOS() override; - void AddBinding(device::mojom::MtpManagerRequest request); + void AddReceiver(mojo::PendingReceiver<device::mojom::MtpManager> receiver); private: // device::mojom::MtpManager implementation. void EnumerateStoragesAndSetClient( - device::mojom::MtpManagerClientAssociatedPtrInfo client, + mojo::PendingAssociatedRemote<device::mojom::MtpManagerClient> client, EnumerateStoragesAndSetClientCallback callback) override; void GetStorageInfo(const std::string& storage_name, GetStorageInfoCallback callback) override; @@ -69,7 +71,7 @@ uint32_t object_id, DeleteObjectCallback callback) override; - mojo::BindingSet<device::mojom::MtpManager> bindings_; + mojo::ReceiverSet<device::mojom::MtpManager> receivers_; DISALLOW_COPY_AND_ASSIGN(TestMediaTransferProtocolManagerChromeOS); };
diff --git a/components/storage_monitor/test_storage_monitor.cc b/components/storage_monitor/test_storage_monitor.cc index 501aeec..d249e30 100644 --- a/components/storage_monitor/test_storage_monitor.cc +++ b/components/storage_monitor/test_storage_monitor.cc
@@ -22,8 +22,8 @@ #if defined(OS_CHROMEOS) auto* fake_mtp_manager = TestMediaTransferProtocolManagerChromeOS::GetFakeMtpManager(); - fake_mtp_manager->AddBinding( - mojo::MakeRequest(&media_transfer_protocol_manager_)); + fake_mtp_manager->AddReceiver( + media_transfer_protocol_manager_.BindNewPipeAndPassReceiver()); #endif }
diff --git a/components/storage_monitor/test_storage_monitor.h b/components/storage_monitor/test_storage_monitor.h index d851e14..c529a11 100644 --- a/components/storage_monitor/test_storage_monitor.h +++ b/components/storage_monitor/test_storage_monitor.h
@@ -13,6 +13,7 @@ #include "components/storage_monitor/storage_monitor.h" #if defined(OS_CHROMEOS) +#include "mojo/public/cpp/bindings/remote.h" #include "services/device/public/mojom/mtp_manager.mojom.h" #endif @@ -78,7 +79,7 @@ std::vector<base::FilePath> removable_paths_; #if defined(OS_CHROMEOS) - device::mojom::MtpManagerPtr media_transfer_protocol_manager_; + mojo::Remote<device::mojom::MtpManager> media_transfer_protocol_manager_; #endif };
diff --git a/components/sync/engine/sync_engine_switches.cc b/components/sync/engine/sync_engine_switches.cc index d5a3c05..c029dc7e 100644 --- a/components/sync/engine/sync_engine_switches.cc +++ b/components/sync/engine/sync_engine_switches.cc
@@ -25,4 +25,7 @@ const base::Feature kSyncUseScryptForNewCustomPassphrases{ "SyncUseScryptForNewCustomPassphrases", base::FEATURE_ENABLED_BY_DEFAULT}; +const base::Feature kSyncSupportTrustedVaultPassphrase{ + "SyncSupportTrustedVaultPassphrase", base::FEATURE_DISABLED_BY_DEFAULT}; + } // namespace switches
diff --git a/components/sync/engine/sync_engine_switches.h b/components/sync/engine/sync_engine_switches.h index 6861251..40dba17 100644 --- a/components/sync/engine/sync_engine_switches.h +++ b/components/sync/engine/sync_engine_switches.h
@@ -13,6 +13,7 @@ extern const base::Feature kSyncResetPollIntervalOnStart; extern const base::Feature kSyncUseScryptForNewCustomPassphrases; +extern const base::Feature kSyncSupportTrustedVaultPassphrase; } // namespace switches
diff --git a/components/sync/nigori/nigori_sync_bridge_impl.cc b/components/sync/nigori/nigori_sync_bridge_impl.cc index 8fd2f48a..b55794bc 100644 --- a/components/sync/nigori/nigori_sync_bridge_impl.cc +++ b/components/sync/nigori/nigori_sync_bridge_impl.cc
@@ -263,8 +263,8 @@ } break; case NigoriSpecifics::TRUSTED_VAULT_PASSPHRASE: - NOTIMPLEMENTED(); - return false; + return base::FeatureList::IsEnabled( + switches::kSyncSupportTrustedVaultPassphrase); } return true; } @@ -290,7 +290,8 @@ NOTREACHED(); return false; case NigoriSpecifics::KEYSTORE_PASSPHRASE: - return new_passphrase_type == NigoriSpecifics::CUSTOM_PASSPHRASE; + return new_passphrase_type == NigoriSpecifics::CUSTOM_PASSPHRASE || + new_passphrase_type == NigoriSpecifics::TRUSTED_VAULT_PASSPHRASE; case NigoriSpecifics::FROZEN_IMPLICIT_PASSPHRASE: // There is no client side code which can cause such transition, but // technically it's a valid one and can be implemented in the future. @@ -509,7 +510,11 @@ // verifications, taking into account sensitivity of this data. base::Optional<sync_pb::NigoriLocalData> deserialized_data = storage_->RestoreData(); - if (!deserialized_data) { + if (!deserialized_data || + (deserialized_data->nigori_model().passphrase_type() == + NigoriSpecifics::TRUSTED_VAULT_PASSPHRASE && + !base::FeatureList::IsEnabled( + switches::kSyncSupportTrustedVaultPassphrase))) { // We either have no Nigori node stored locally or it was corrupted. processor_->ModelReadyToSync(this, NigoriMetadataBatch()); return; @@ -1054,6 +1059,15 @@ return cryptographer_; } +sync_pb::NigoriSpecifics::PassphraseType +NigoriSyncBridgeImpl::GetPassphraseTypeForTesting() const { + return passphrase_type_; +} + +ModelTypeSet NigoriSyncBridgeImpl::GetEncryptedTypesForTesting() const { + return GetEncryptedTypes(encrypt_everything_); +} + std::string NigoriSyncBridgeImpl::PackExplicitPassphraseKeyForTesting( const Encryptor& encryptor, const Cryptographer& cryptographer) { @@ -1108,6 +1122,9 @@ NOTIMPLEMENTED(); return; case NigoriSpecifics::TRUSTED_VAULT_PASSPHRASE: + // This may be problematic for the MIGRATION_DONE case because the local + // keybag will be cleared and it won't be automatically recovered from + // prefs. NOTIMPLEMENTED(); return; case NigoriSpecifics::FROZEN_IMPLICIT_PASSPHRASE:
diff --git a/components/sync/nigori/nigori_sync_bridge_impl.h b/components/sync/nigori/nigori_sync_bridge_impl.h index 818f8315..a1a986d 100644 --- a/components/sync/nigori/nigori_sync_bridge_impl.h +++ b/components/sync/nigori/nigori_sync_bridge_impl.h
@@ -82,6 +82,9 @@ // tests and decide whether this method should be a part of // SyncEncryptionHandler interface. const Cryptographer& GetCryptographerForTesting() const; + sync_pb::NigoriSpecifics::PassphraseType GetPassphraseTypeForTesting() const; + ModelTypeSet GetEncryptedTypesForTesting() const; + static std::string PackExplicitPassphraseKeyForTesting( const Encryptor& encryptor, const Cryptographer& cryptographer);
diff --git a/components/sync/nigori/nigori_sync_bridge_impl_unittest.cc b/components/sync/nigori/nigori_sync_bridge_impl_unittest.cc index 5ba95430..1355f403 100644 --- a/components/sync/nigori/nigori_sync_bridge_impl_unittest.cc +++ b/components/sync/nigori/nigori_sync_bridge_impl_unittest.cc
@@ -8,8 +8,10 @@ #include "base/base64.h" #include "base/bind.h" +#include "base/test/scoped_feature_list.h" #include "components/sync/base/fake_encryptor.h" #include "components/sync/base/time.h" +#include "components/sync/engine/sync_engine_switches.h" #include "components/sync/model/entity_data.h" #include "components/sync/nigori/nigori_storage.h" #include "testing/gmock/include/gmock/gmock.h" @@ -32,8 +34,8 @@ const std::string& progress_marker_token, int64_t entity_metadata_sequence_number); -MATCHER(NotNullTime, "") { - return !arg.is_null(); +MATCHER(NullTime, "") { + return arg.is_null(); } MATCHER_P(HasDefaultKeyDerivedFrom, key_params, "") { @@ -182,6 +184,20 @@ return specifics; } +sync_pb::NigoriSpecifics BuildTrustedVaultNigoriSpecifics( + const std::vector<KeyParams>& trusted_vault_key_params) { + syncer::Cryptographer cryptographer; + for (const KeyParams& key_params : trusted_vault_key_params) { + cryptographer.AddKey(key_params); + } + + sync_pb::NigoriSpecifics specifics; + EXPECT_TRUE(cryptographer.GetKeys(specifics.mutable_encryption_keybag())); + specifics.set_passphrase_type( + sync_pb::NigoriSpecifics::TRUSTED_VAULT_PASSPHRASE); + return specifics; +} + // Builds NigoriSpecifics with following fields: // 1. encryption_keybag contains keys derived from |passphrase_key_params| // and |*old_key_params| (if |old_key_params| isn't nullopt). Encrypted with @@ -279,6 +295,9 @@ class NigoriSyncBridgeImplTest : public testing::Test { protected: NigoriSyncBridgeImplTest() { + override_features_.InitAndEnableFeature( + switches::kSyncSupportTrustedVaultPassphrase); + auto processor = std::make_unique<testing::NiceMock<MockNigoriLocalChangeProcessor>>(); processor_ = processor.get(); @@ -299,6 +318,7 @@ MockNigoriStorage* storage() { return storage_; } private: + base::test::ScopedFeatureList override_features_; const FakeEncryptor encryptor_; std::unique_ptr<NigoriSyncBridgeImpl> bridge_; // Ownership transferred to |bridge_|. @@ -481,7 +501,7 @@ EXPECT_CALL(*observer(), OnCryptographerStateChanged(NotNull())); EXPECT_CALL(*observer(), OnPassphraseTypeChanged(PassphraseType::kCustomPassphrase, - NotNullTime())); + Not(NullTime()))); EXPECT_THAT(bridge()->MergeSyncData(std::move(entity_data)), Eq(base::nullopt)); EXPECT_TRUE(bridge()->GetCryptographerForTesting().has_pending_keys()); @@ -513,7 +533,7 @@ EXPECT_CALL(*observer(), OnCryptographerStateChanged(NotNull())); EXPECT_CALL(*observer(), OnPassphraseTypeChanged(PassphraseType::kCustomPassphrase, - NotNullTime())); + Not(NullTime()))); EXPECT_THAT(bridge()->ApplySyncChanges(std::move(new_entity_data)), Eq(base::nullopt)); EXPECT_TRUE(bridge()->GetCryptographerForTesting().has_pending_keys()); @@ -618,7 +638,7 @@ EXPECT_CALL(*observer(), OnCryptographerStateChanged(NotNull())); EXPECT_CALL(*observer(), OnPassphraseTypeChanged(PassphraseType::kCustomPassphrase, - /*passphrase_time=*/NotNullTime())); + /*passphrase_time=*/Not(NullTime()))); EXPECT_CALL(*observer(), OnBootstrapTokenUpdated(Ne(std::string()), PASSPHRASE_BOOTSTRAP_TOKEN)); EXPECT_CALL(*processor(), Put(HasCustomPassphraseNigori())); @@ -742,6 +762,166 @@ EXPECT_THAT(cryptographer, HasDefaultKeyDerivedFrom(kKeystoreKeyParams)); } +// Tests the initial sync with a trusted vault Nigori. Observers should be +// notified about encryption state changes and cryptographer shouldn't be ready +// (by having pending keys) until the passphrase is received by means other than +// the sync protocol. +TEST_F(NigoriSyncBridgeImplTest, + ShouldRequireUserActionIfInitiallyUsingTrustedVault) { + const std::string kTrustedVaultPassphrase = "trusted_vault_passphrase"; + EntityData entity_data; + *entity_data.specifics.mutable_nigori() = BuildTrustedVaultNigoriSpecifics( + {Pbkdf2KeyParams(kTrustedVaultPassphrase)}); + + ASSERT_TRUE(bridge()->SetKeystoreKeys({"keystore_key"})); + + EXPECT_CALL(*observer(), OnCryptographerStateChanged(NotNull())); + EXPECT_CALL(*observer(), + OnPassphraseTypeChanged(PassphraseType::kTrustedVaultPassphrase, + NullTime())); + EXPECT_CALL(*observer(), OnPassphraseRequired(/*reason=*/REASON_DECRYPTION, + /*key_derivation_params=*/_, + /*pending_keys=*/_)); + EXPECT_THAT(bridge()->MergeSyncData(std::move(entity_data)), + Eq(base::nullopt)); + EXPECT_THAT(bridge()->GetPassphraseTypeForTesting(), + Eq(sync_pb::NigoriSpecifics::TRUSTED_VAULT_PASSPHRASE)); + EXPECT_THAT(bridge()->GetEncryptedTypesForTesting(), + Eq(SyncEncryptionHandler::SensitiveTypes())); + EXPECT_TRUE(bridge()->GetCryptographerForTesting().has_pending_keys()); + + EXPECT_CALL(*observer(), OnPassphraseAccepted()); + EXPECT_CALL(*observer(), OnCryptographerStateChanged(NotNull())); + EXPECT_CALL(*observer(), OnBootstrapTokenUpdated(_, _)).Times(0); + bridge()->SetDecryptionPassphrase(kTrustedVaultPassphrase); + EXPECT_FALSE(bridge()->GetCryptographerForTesting().has_pending_keys()); +} + +// Tests the processing of a remote incremental update that transitions from +// keystore to trusted vault passphrase, which requires receiving the new +// passphrase by means other than the sync protocol. +TEST_F(NigoriSyncBridgeImplTest, + ShouldProcessRemoteTransitionFromKeystoreToTrustedVault) { + const std::string kTrustedVaultPassphrase = "trusted_vault_passphrase"; + + EntityData default_entity_data; + *default_entity_data.specifics.mutable_nigori() = + sync_pb::NigoriSpecifics::default_instance(); + + ASSERT_TRUE(bridge()->SetKeystoreKeys({"keystore_key"})); + // Note: passing default Nigori to MergeSyncData() leads to instantiation of + // keystore Nigori. + ASSERT_THAT(bridge()->MergeSyncData(std::move(default_entity_data)), + Eq(base::nullopt)); + + EntityData new_entity_data; + *new_entity_data.specifics.mutable_nigori() = + BuildTrustedVaultNigoriSpecifics( + {Pbkdf2KeyParams(kTrustedVaultPassphrase)}); + + EXPECT_CALL(*observer(), OnEncryptedTypesChanged(_, _)).Times(0); + EXPECT_CALL(*observer(), OnBootstrapTokenUpdated(_, _)).Times(0); + EXPECT_CALL(*observer(), OnCryptographerStateChanged(NotNull())); + EXPECT_CALL(*observer(), + OnPassphraseTypeChanged(PassphraseType::kTrustedVaultPassphrase, + NullTime())); + EXPECT_CALL(*observer(), OnPassphraseRequired(/*reason=*/REASON_DECRYPTION, + /*key_derivation_params=*/_, + /*pending_keys=*/_)); + EXPECT_THAT(bridge()->ApplySyncChanges(std::move(new_entity_data)), + Eq(base::nullopt)); + EXPECT_THAT(bridge()->GetPassphraseTypeForTesting(), + Eq(sync_pb::NigoriSpecifics::TRUSTED_VAULT_PASSPHRASE)); + EXPECT_THAT(bridge()->GetEncryptedTypesForTesting(), + Eq(SyncEncryptionHandler::SensitiveTypes())); + EXPECT_TRUE(bridge()->GetCryptographerForTesting().has_pending_keys()); + + EXPECT_CALL(*observer(), OnPassphraseAccepted()); + EXPECT_CALL(*observer(), OnCryptographerStateChanged(NotNull())); + EXPECT_CALL(*observer(), OnBootstrapTokenUpdated(_, _)).Times(0); + bridge()->SetDecryptionPassphrase(kTrustedVaultPassphrase); + EXPECT_FALSE(bridge()->GetCryptographerForTesting().has_pending_keys()); +} + +// Tests the processing of a remote incremental update that rotates the trusted +// vault passphrase. +TEST_F(NigoriSyncBridgeImplTest, + ShouldProcessRemoteKeyRotationForTrustedVault) { + const std::string kTrustedVaultPassphrase = "trusted_vault_passphrase"; + const std::string kRotatedTrustedVaultPassphrase = "rotated_vault_passphrase"; + + EntityData entity_data; + *entity_data.specifics.mutable_nigori() = BuildTrustedVaultNigoriSpecifics( + {Pbkdf2KeyParams(kTrustedVaultPassphrase)}); + + ASSERT_TRUE(bridge()->SetKeystoreKeys({"keystore_key"})); + ASSERT_THAT(bridge()->MergeSyncData(std::move(entity_data)), + Eq(base::nullopt)); + ASSERT_TRUE(bridge()->GetCryptographerForTesting().has_pending_keys()); + bridge()->SetDecryptionPassphrase(kTrustedVaultPassphrase); + ASSERT_FALSE(bridge()->GetCryptographerForTesting().has_pending_keys()); + ASSERT_THAT(bridge()->GetPassphraseTypeForTesting(), + Eq(sync_pb::NigoriSpecifics::TRUSTED_VAULT_PASSPHRASE)); + // Mimic remote key rotation. + EntityData new_entity_data; + *new_entity_data.specifics.mutable_nigori() = + BuildTrustedVaultNigoriSpecifics( + {Pbkdf2KeyParams(kTrustedVaultPassphrase), + Pbkdf2KeyParams(kRotatedTrustedVaultPassphrase)}); + EXPECT_CALL(*observer(), OnEncryptedTypesChanged(_, _)).Times(0); + EXPECT_CALL(*observer(), OnBootstrapTokenUpdated(_, _)).Times(0); + EXPECT_CALL(*observer(), OnPassphraseTypeChanged(_, _)).Times(0); + EXPECT_CALL(*observer(), OnCryptographerStateChanged(NotNull())); + EXPECT_CALL(*observer(), OnPassphraseRequired(/*reason=*/REASON_DECRYPTION, + /*key_derivation_params=*/_, + /*pending_keys=*/_)); + + EXPECT_THAT(bridge()->ApplySyncChanges(std::move(new_entity_data)), + Eq(base::nullopt)); + EXPECT_TRUE(bridge()->GetCryptographerForTesting().has_pending_keys()); + + EXPECT_CALL(*observer(), OnPassphraseAccepted()); + EXPECT_CALL(*observer(), OnCryptographerStateChanged(NotNull())); + bridge()->SetDecryptionPassphrase(kRotatedTrustedVaultPassphrase); + EXPECT_FALSE(bridge()->GetCryptographerForTesting().has_pending_keys()); +} + +// Tests transitioning locally from trusted vault passphrase to custom +// passphrase. +TEST_F(NigoriSyncBridgeImplTest, + ShouldTransitionLocallyFromTrustedVaultToCustomPassphrase) { + const std::string kTrustedVaultPassphrase = "trusted_vault_passphrase"; + const std::string kCustomPassphrase = "custom_passphrase"; + + EntityData entity_data; + *entity_data.specifics.mutable_nigori() = BuildTrustedVaultNigoriSpecifics( + {Pbkdf2KeyParams(kTrustedVaultPassphrase)}); + + ASSERT_TRUE(bridge()->SetKeystoreKeys({"keystore_key"})); + ASSERT_THAT(bridge()->MergeSyncData(std::move(entity_data)), + Eq(base::nullopt)); + ASSERT_TRUE(bridge()->GetCryptographerForTesting().has_pending_keys()); + bridge()->SetDecryptionPassphrase(kTrustedVaultPassphrase); + ASSERT_FALSE(bridge()->GetCryptographerForTesting().has_pending_keys()); + ASSERT_THAT(bridge()->GetPassphraseTypeForTesting(), + Eq(sync_pb::NigoriSpecifics::TRUSTED_VAULT_PASSPHRASE)); + ASSERT_THAT(bridge()->GetData(), Not(HasCustomPassphraseNigori())); + + EXPECT_CALL(*observer(), OnPassphraseAccepted()); + EXPECT_CALL(*observer(), OnEncryptedTypesChanged( + /*encrypted_types=*/EncryptableUserTypes(), + /*encrypt_everything=*/true)); + EXPECT_CALL(*observer(), OnCryptographerStateChanged(NotNull())); + EXPECT_CALL(*observer(), + OnPassphraseTypeChanged(PassphraseType::kCustomPassphrase, + /*passphrase_time=*/Not(NullTime()))); + EXPECT_CALL(*observer(), OnBootstrapTokenUpdated(Ne(std::string()), + PASSPHRASE_BOOTSTRAP_TOKEN)); + EXPECT_CALL(*processor(), Put(HasCustomPassphraseNigori())); + bridge()->SetEncryptionPassphrase(kCustomPassphrase); + EXPECT_THAT(bridge()->GetData(), HasCustomPassphraseNigori()); +} + } // namespace } // namespace syncer
diff --git a/components/sync/protocol/device_info_specifics.proto b/components/sync/protocol/device_info_specifics.proto index 7875ce8a..b77163df3 100644 --- a/components/sync/protocol/device_info_specifics.proto +++ b/components/sync/protocol/device_info_specifics.proto
@@ -56,6 +56,9 @@ // can not be derived from the other fields in the proto and are not general // enough to be used by another feature. optional FeatureSpecificFields feature_fields = 9; + + // Device specific information for Sharing feature. + optional SharingSpecificFields sharing_fields = 10; } // Feature specific information about the device that is running a sync-enabled @@ -68,3 +71,26 @@ // feature optional bool send_tab_to_self_receiving_enabled = 1; } + +// Device specific information for Sharing feature. Used to send end-to-end +// encrypted message through FCM to other devices. +message SharingSpecificFields { + // FCM registration token of device for sending SharingMessage. + optional string fcm_token = 1; + + // Subscription public key required for message encryption [RFC8291]. + optional bytes p256dh = 2; + + // Auth secret key required for message encryption [RFC8291]. + optional bytes auth_secret = 3; + + // Enum defining available Sharing features. + enum EnabledFeatures { + UNKNOWN = 0; + CLICK_TO_CALL = 1; + SHARED_CLIPBOARD = 2; + } + + // A list of enabled Sharing features. + repeated EnabledFeatures enabled_features = 4; +}
diff --git a/components/sync/protocol/proto_visitors.h b/components/sync/protocol/proto_visitors.h index c195c6d..1dfb64f 100644 --- a/components/sync/protocol/proto_visitors.h +++ b/components/sync/protocol/proto_visitors.h
@@ -340,12 +340,20 @@ VISIT(signin_scoped_device_id); VISIT(last_updated_timestamp); VISIT(feature_fields); + VISIT(sharing_fields); } VISIT_PROTO_FIELDS(const sync_pb::FeatureSpecificFields& proto) { VISIT(send_tab_to_self_receiving_enabled); } +VISIT_PROTO_FIELDS(const sync_pb::SharingSpecificFields& proto) { + VISIT(fcm_token); + VISIT_BYTES(p256dh); + VISIT_BYTES(auth_secret); + VISIT_REP(enabled_features); +} + VISIT_PROTO_FIELDS(const sync_pb::DictionarySpecifics& proto) { VISIT(word); }
diff --git a/content/browser/accessibility/dump_accessibility_tree_browsertest.cc b/content/browser/accessibility/dump_accessibility_tree_browsertest.cc index bbf0eb2..5f77bc1 100644 --- a/content/browser/accessibility/dump_accessibility_tree_browsertest.cc +++ b/content/browser/accessibility/dump_accessibility_tree_browsertest.cc
@@ -1667,9 +1667,7 @@ RunHtmlTest(FILE_PATH_LITERAL("label.html")); } -// TODO(http://crubg/1000965): flaky. -IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, - DISABLED_AccessibilityLabelUpdates) { +IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityLabelUpdates) { RunHtmlTest(FILE_PATH_LITERAL("label-updates.html")); }
diff --git a/content/browser/frame_host/back_forward_cache.cc b/content/browser/frame_host/back_forward_cache.cc index b83baae..3d67b7cc 100644 --- a/content/browser/frame_host/back_forward_cache.cc +++ b/content/browser/frame_host/back_forward_cache.cc
@@ -177,12 +177,14 @@ size_t size_limit = cache_size_limit_for_testing_ ? cache_size_limit_for_testing_ : kBackForwardCacheLimit; - - // Remove the last recently used document if the BackForwardCache list is + // Evict the least recently used documents if the BackForwardCache list is // full. - if (render_frame_hosts_.size() > size_limit) { - // TODO(arthursonzogni): Handle RenderFrame deletion appropriately. - render_frame_hosts_.pop_back(); + size_t available_count = 0; + for (auto& frame_host : render_frame_hosts_) { + if (frame_host->is_evicted_from_back_forward_cache()) + continue; + if (++available_count > size_limit) + frame_host->EvictFromBackForwardCache(); } } @@ -228,9 +230,9 @@ render_frame_hosts_.clear(); } -void BackForwardCache::PostTaskToFlushEvictedFrames() { +void BackForwardCache::PostTaskToDestroyEvictedFrames() { base::PostTask(FROM_HERE, {BrowserThread::UI}, - base::BindOnce(&BackForwardCache::FlushEvictedFrames, + base::BindOnce(&BackForwardCache::DestroyEvictedFrames, weak_factory_.GetWeakPtr())); } @@ -260,7 +262,7 @@ return (*matching_rfh).get(); } -void BackForwardCache::FlushEvictedFrames() { +void BackForwardCache::DestroyEvictedFrames() { if (render_frame_hosts_.empty()) return; render_frame_hosts_.erase(
diff --git a/content/browser/frame_host/back_forward_cache.h b/content/browser/frame_host/back_forward_cache.h index d7f9f718..a23765df 100644 --- a/content/browser/frame_host/back_forward_cache.h +++ b/content/browser/frame_host/back_forward_cache.h
@@ -63,7 +63,7 @@ // Posts a task to destroy all frames in the BackForwardCache that have been // marked as evicted. - void PostTaskToFlushEvictedFrames(); + void PostTaskToDestroyEvictedFrames(); // List of reasons the BackForwardCache was disabled for a specific test. If a // test needs to be disabled for a reason not covered below, please add to @@ -126,7 +126,7 @@ private: // Destroys all evicted frames in the BackForwardCache. - void FlushEvictedFrames(); + void DestroyEvictedFrames(); // Contains the set of stored RenderFrameHost. // Invariant:
diff --git a/content/browser/frame_host/navigation_request.cc b/content/browser/frame_host/navigation_request.cc index 8a4eb96..bc1c1d9 100644 --- a/content/browser/frame_host/navigation_request.cc +++ b/content/browser/frame_host/navigation_request.cc
@@ -1272,6 +1272,11 @@ response_head_ = response_head; ssl_info_ = response_head->head.ssl_info; auth_challenge_info_ = response_head->head.auth_challenge_info; + + // Reset the page state as it can no longer be used at commit time since the + // navigation was redirected. + commit_params_->page_state = PageState(); + #if defined(OS_ANDROID) base::WeakPtr<NavigationRequest> this_ptr(weak_factory_.GetWeakPtr());
diff --git a/content/browser/frame_host/render_frame_host_impl.cc b/content/browser/frame_host/render_frame_host_impl.cc index 4ed6e4135..5c6f6ae 100644 --- a/content/browser/frame_host/render_frame_host_impl.cc +++ b/content/browser/frame_host/render_frame_host_impl.cc
@@ -3486,7 +3486,7 @@ // immediately, but destruction is delayed, so that callers don't have to // worry about use-after-free of |this|. top_document->is_evicted_from_back_forward_cache_ = true; - controller->back_forward_cache().PostTaskToFlushEvictedFrames(); + controller->back_forward_cache().PostTaskToDestroyEvictedFrames(); if (!is_navigation_to_evicted_frame_in_flight) return;
diff --git a/content/browser/renderer_host/render_process_host_impl.cc b/content/browser/renderer_host/render_process_host_impl.cc index 64a16f4..d18cfd28 100644 --- a/content/browser/renderer_host/render_process_host_impl.cc +++ b/content/browser/renderer_host/render_process_host_impl.cc
@@ -2975,7 +2975,6 @@ switches::kEnableUseZoomForDSF, switches::kEnableViewport, switches::kEnableVtune, - switches::kEnableWebBluetoothScanning, switches::kEnableWebGL2ComputeContext, switches::kEnableWebGLDraftExtensions, switches::kEnableWebGLImageChromium,
diff --git a/content/child/runtime_features.cc b/content/child/runtime_features.cc index 982a177..d7faf3a 100644 --- a/content/child/runtime_features.cc +++ b/content/child/runtime_features.cc
@@ -125,9 +125,6 @@ WebRuntimeFeatures::EnableAutomationControlled(true); } - if (command_line.HasSwitch(switches::kEnableWebBluetoothScanning)) - WebRuntimeFeatures::EnableWebBluetoothScanning(true); - #if defined(OS_MACOSX) const bool enable_canvas_2d_image_chromium = command_line.HasSwitch(
diff --git a/content/public/android/java/src/org/chromium/content/browser/ContentApiHelperForM.java b/content/public/android/java/src/org/chromium/content/browser/ContentApiHelperForM.java index 4ecbdc9..14e1cc5 100644 --- a/content/public/android/java/src/org/chromium/content/browser/ContentApiHelperForM.java +++ b/content/public/android/java/src/org/chromium/content/browser/ContentApiHelperForM.java
@@ -9,7 +9,7 @@ import android.view.ActionMode; import android.view.View; -import org.chromium.base.annotations.DoNotInline; +import org.chromium.base.annotations.VerifiesOnM; import org.chromium.content.browser.selection.FloatingActionModeCallback; import org.chromium.content.browser.selection.SelectionPopupControllerImpl; @@ -19,7 +19,7 @@ * encountering the new APIs. */ -@DoNotInline +@VerifiesOnM @TargetApi(Build.VERSION_CODES.M) public final class ContentApiHelperForM { private ContentApiHelperForM() {}
diff --git a/content/public/android/java/src/org/chromium/content/browser/selection/AdditionalMenuItemProviderImpl.java b/content/public/android/java/src/org/chromium/content/browser/selection/AdditionalMenuItemProviderImpl.java index 0540f071..a0d2dc58 100644 --- a/content/public/android/java/src/org/chromium/content/browser/selection/AdditionalMenuItemProviderImpl.java +++ b/content/public/android/java/src/org/chromium/content/browser/selection/AdditionalMenuItemProviderImpl.java
@@ -4,10 +4,11 @@ package org.chromium.content.browser.selection; -import android.annotation.SuppressLint; +import android.annotation.TargetApi; import android.app.PendingIntent; import android.app.RemoteAction; import android.content.Context; +import android.os.Build; import android.text.TextUtils; import android.view.Menu; import android.view.MenuItem; @@ -16,7 +17,7 @@ import android.view.textclassifier.TextClassification; import org.chromium.base.Log; -import org.chromium.base.annotations.DoNotInline; +import org.chromium.base.annotations.VerifiesOnP; import java.util.HashMap; import java.util.Map; @@ -27,8 +28,8 @@ * We prevent inlinings since this uses a number of new Android APIs which would create verification * errors (on older Android versions) which would require a slow re-verification at runtime. */ -@DoNotInline -@SuppressLint("NewApi") +@VerifiesOnP +@TargetApi(Build.VERSION_CODES.P) public class AdditionalMenuItemProviderImpl implements AdditionalMenuItemProvider { private static final String TAG = "MenuItemProvider"; // We want the secondary assist actions to come after the default actions but before the text
diff --git a/content/public/common/common_param_traits_macros.h b/content/public/common/common_param_traits_macros.h index 2eb185b..c38cb3c 100644 --- a/content/public/common/common_param_traits_macros.h +++ b/content/public/common/common_param_traits_macros.h
@@ -243,6 +243,7 @@ IPC_STRUCT_TRAITS_MEMBER(css_hex_alpha_color_enabled) IPC_STRUCT_TRAITS_MEMBER(scroll_top_left_interop_enabled) IPC_STRUCT_TRAITS_MEMBER(disable_features_depending_on_viz) + IPC_STRUCT_TRAITS_MEMBER(disable_accelerated_small_canvases) #endif // defined(OS_ANDROID) IPC_STRUCT_TRAITS_MEMBER(force_dark_mode_enabled) IPC_STRUCT_TRAITS_MEMBER(default_minimum_page_scale_factor)
diff --git a/content/public/common/content_switches.cc b/content/public/common/content_switches.cc index 3dddb75..8ceaba3 100644 --- a/content/public/common/content_switches.cc +++ b/content/public/common/content_switches.cc
@@ -109,11 +109,6 @@ // features. const char kDisableBlinkFeatures[] = "disable-blink-features"; -// Enable Web Bluetooth Scanning -// This switch enables Web Bluetooth Scanning without any -// permission prompt for testing. -const char kEnableWebBluetoothScanning[] = "enable-web-bluetooth-scanning"; - // Disables HTML5 DB support. const char kDisableDatabases[] = "disable-databases";
diff --git a/content/public/common/content_switches.h b/content/public/common/content_switches.h index 29afab2..c8d5c24 100644 --- a/content/public/common/content_switches.h +++ b/content/public/common/content_switches.h
@@ -142,7 +142,6 @@ CONTENT_EXPORT extern const char kEnableViewport[]; CONTENT_EXPORT extern const char kEnableVtune[]; CONTENT_EXPORT extern const char kEnableWebAuthTestingAPI[]; -CONTENT_EXPORT extern const char kEnableWebBluetoothScanning[]; CONTENT_EXPORT extern const char kEnableWebGL2ComputeContext[]; CONTENT_EXPORT extern const char kEnableWebGLDraftExtensions[]; CONTENT_EXPORT extern const char kEnableWebGLImageChromium[];
diff --git a/content/public/common/web_preferences.cc b/content/public/common/web_preferences.cc index 114b0f7..8c04e3b 100644 --- a/content/public/common/web_preferences.cc +++ b/content/public/common/web_preferences.cc
@@ -208,6 +208,7 @@ css_hex_alpha_color_enabled(true), scroll_top_left_interop_enabled(true), disable_features_depending_on_viz(false), + disable_accelerated_small_canvases(false), #endif // defined(OS_ANDROID) #if defined(OS_ANDROID) default_minimum_page_scale_factor(0.25f),
diff --git a/content/public/common/web_preferences.h b/content/public/common/web_preferences.h index e47b250..7079cc86 100644 --- a/content/public/common/web_preferences.h +++ b/content/public/common/web_preferences.h
@@ -282,6 +282,8 @@ // architecture of surface embedding. Android WebView does not support this // architecture yet. bool disable_features_depending_on_viz; + // Don't accelerate small canvases to avoid crashes TODO(crbug.com/1004304) + bool disable_accelerated_small_canvases; #endif // defined(OS_ANDROID) // Enable forcibly modifying content rendering to result in a light on dark
diff --git a/content/renderer/BUILD.gn b/content/renderer/BUILD.gn index 4f428a5..3fc14fbf 100644 --- a/content/renderer/BUILD.gn +++ b/content/renderer/BUILD.gn
@@ -452,6 +452,7 @@ "//third_party/webrtc/api:callfactory_api", "//third_party/webrtc/api:libjingle_logging_api", "//third_party/webrtc/api:libjingle_peerconnection_api", + "//third_party/webrtc/api:media_stream_interface", "//third_party/webrtc/api:packet_socket_factory", "//third_party/webrtc/api:rtc_error", "//third_party/webrtc/api:rtc_stats_api",
diff --git a/content/renderer/render_view_impl.cc b/content/renderer/render_view_impl.cc index f14d1f7..6e9a34c 100644 --- a/content/renderer/render_view_impl.cc +++ b/content/renderer/render_view_impl.cc
@@ -867,6 +867,8 @@ prefs.scroll_top_left_interop_enabled); WebRuntimeFeatures::EnableSurfaceEmbeddingFeatures( !prefs.disable_features_depending_on_viz); + WebRuntimeFeatures::EnableAcceleratedSmallCanvases( + !prefs.disable_accelerated_small_canvases); #endif // defined(OS_ANDROID) settings->SetForceDarkModeEnabled(prefs.force_dark_mode_enabled);
diff --git a/content/test/content_test_launcher.cc b/content/test/content_test_launcher.cc index 37aec6f6..7fd5bcb2 100644 --- a/content/test/content_test_launcher.cc +++ b/content/test/content_test_launcher.cc
@@ -39,9 +39,10 @@ protected: void Initialize() override { - // Browser tests are expected not to tear-down various globals. (Must run - // before the base class is initialized.) + // Browser tests are expected not to tear-down various globals and may + // complete with the thread priority being above NORMAL. base::TestSuite::DisableCheckForLeakedGlobals(); + base::TestSuite::DisableCheckForThreadPriorityAtTestEnd(); ContentTestSuiteBase::Initialize();
diff --git a/content/test/data/accessibility/html/label-updates-expected-blink.txt b/content/test/data/accessibility/html/label-updates-expected-blink.txt index 036e26eb..7f9ea7c 100644 --- a/content/test/data/accessibility/html/label-updates-expected-blink.txt +++ b/content/test/data/accessibility/html/label-updates-expected-blink.txt
@@ -6,7 +6,15 @@ ++++++genericContainer ignored invisible ++++++++genericContainer ignored invisible ++++++++++staticText ignored invisible name='oranges' +++++textField name='oranges' +++++++genericContainer +++++labelText ignored invisible +++++++genericContainer ignored invisible +++++++++genericContainer ignored invisible +++++++++++staticText ignored invisible name='oranges' ++++textField name='bananas' ++++++genericContainer ++++labelText ignored invisible ++++++staticText ignored invisible name='bananas' +++++textField name='finished' +++++++genericContainer
diff --git a/content/test/data/accessibility/html/label-updates.html b/content/test/data/accessibility/html/label-updates.html index 4cce4ff..75b25c2 100644 --- a/content/test/data/accessibility/html/label-updates.html +++ b/content/test/data/accessibility/html/label-updates.html
@@ -1,5 +1,5 @@ <!-- -@WAIT-FOR:bananas +@WAIT-FOR:finished @BLINK-DENY:nameFrom* --> <!DOCTYPE html> @@ -9,18 +9,29 @@ <label id="label1" aria-hidden="true" for="input1"><span><span>apples</span></span></label> <input id="input2"> - <label id="label2" aria-hidden="true" for="input2">grapes</label> + <label id="label2" aria-hidden="true" for="input2"><span><span>apples</span></span></label> + + <input id="input3"> + <label id="label3" aria-hidden="true" for="input3">grapes</label> + + <input id="input4"> </div> <script> setTimeout(() => { const label1 = document.getElementById('label1'); label1.firstElementChild.firstElementChild.innerText = 'oranges'; - const label2 = document.getElementById('label2'); - const text2 = label2.firstChild; - text2.deleteData(0,5); // Delete 'grape' - text2.insertData(0,'banana'); // Text should now be 'bananas' + label2.firstElementChild.firstElementChild.innerText = 'oranges'; + + const label3 = document.getElementById('label3'); + const text3 = label3.firstChild; + text3.deleteData(0,5); // Delete 'grape' + text3.insertData(0,'banana'); // Text should now be 'bananas' + setTimeout(() => { + const input4 = document.getElementById('input4'); + input4.setAttribute('aria-label', 'finished'); + }, 0); }, 100); </script> </body>
diff --git a/device/vr/oculus/oculus_render_loop.cc b/device/vr/oculus/oculus_render_loop.cc index 1244924..444b8dd 100644 --- a/device/vr/oculus/oculus_render_loop.cc +++ b/device/vr/oculus/oculus_render_loop.cc
@@ -368,7 +368,7 @@ // The absence of "touchpad" in this string indicates that the slots in the // button and axes arrays are placeholders required by the xr-standard mapping // but not actually updated with any input. - desc->profiles.push_back("grip-thumbstick-controller"); + desc->profiles.push_back("generic-trigger-grip-thumbstick"); state->description = std::move(desc);
diff --git a/device/vr/openvr/openvr_gamepad_helper.cc b/device/vr/openvr/openvr_gamepad_helper.cc index 7f7c66828..1415998 100644 --- a/device/vr/openvr/openvr_gamepad_helper.cc +++ b/device/vr/openvr/openvr_gamepad_helper.cc
@@ -351,18 +351,18 @@ profiles_.push_back(name); // Also record information about what this controller actually does in a - // more general sense. - std::string capabilities = ""; + // more general sense. The controller is guaranteed to at least have a + // trigger if we get here. + std::string capabilities = "generic-trigger"; if (HasSecondaryButton()) { - capabilities += "grip-"; + capabilities += "-grip"; } if (HasTouchpad()) { - capabilities += "touchpad-"; + capabilities += "-touchpad"; } if (HasThumbstick()) { - capabilities += "thumbstick-"; + capabilities += "-thumbstick"; } - capabilities += "controller"; profiles_.push_back(capabilities); }
diff --git a/device/vr/windows_mixed_reality/mixed_reality_input_helper.cc b/device/vr/windows_mixed_reality/mixed_reality_input_helper.cc index 688c02cd..efcbffa 100644 --- a/device/vr/windows_mixed_reality/mixed_reality_input_helper.cc +++ b/device/vr/windows_mixed_reality/mixed_reality_input_helper.cc
@@ -575,7 +575,7 @@ // This makes it clear that the controller actually has a grip button and // touchpad and thumbstick input. Otherwise, it's ambiguous whether slots // like the touchpad buttons + axes are hooked up vs just placeholders. - description->profiles.push_back("grip-touchpad-thumbstick-controller"); + description->profiles.push_back("generic-trigger-grip-touchpad-thumbstick"); source_state->gamepad = GetWebXRGamepad(input_state); } else {
diff --git a/extensions/common/permissions/api_permission.cc b/extensions/common/permissions/api_permission.cc index 47d791a..09fd8bd 100644 --- a/extensions/common/permissions/api_permission.cc +++ b/extensions/common/permissions/api_permission.cc
@@ -104,11 +104,10 @@ // APIPermissionInfo::APIPermissionInfo(const APIPermissionInfo::InitInfo& info) - : id_(info.id), - name_(info.name), + : name_(info.name), + id_(info.id), flags_(info.flags), - api_permission_constructor_(info.constructor) { -} + api_permission_constructor_(info.constructor) {} APIPermissionInfo::~APIPermissionInfo() { }
diff --git a/extensions/common/permissions/api_permission.h b/extensions/common/permissions/api_permission.h index f3ddb903..6b87c87 100644 --- a/extensions/common/permissions/api_permission.h +++ b/extensions/common/permissions/api_permission.h
@@ -446,8 +446,8 @@ explicit APIPermissionInfo(const InitInfo& info); - const APIPermission::ID id_; const char* const name_; + const APIPermission::ID id_; const int flags_; const APIPermissionConstructor api_permission_constructor_; };
diff --git a/extensions/shell/test/shell_test_launcher_delegate.cc b/extensions/shell/test/shell_test_launcher_delegate.cc index 2f680e4a..d0a9430e 100644 --- a/extensions/shell/test/shell_test_launcher_delegate.cc +++ b/extensions/shell/test/shell_test_launcher_delegate.cc
@@ -13,8 +13,10 @@ int AppShellTestLauncherDelegate::RunTestSuite(int argc, char** argv) { base::TestSuite test_suite(argc, argv); - // Browser tests are expected not to tear-down various globals. + // Browser tests are expected not to tear-down various globals and may + // complete with the thread priority being above NORMAL. test_suite.DisableCheckForLeakedGlobals(); + test_suite.DisableCheckForThreadPriorityAtTestEnd(); return test_suite.Run(); }
diff --git a/fuchsia/engine/test/web_engine_test_launcher.cc b/fuchsia/engine/test/web_engine_test_launcher.cc index d989d0a..9789ec4 100644 --- a/fuchsia/engine/test/web_engine_test_launcher.cc +++ b/fuchsia/engine/test/web_engine_test_launcher.cc
@@ -25,8 +25,10 @@ // content::TestLauncherDelegate implementation: int RunTestSuite(int argc, char** argv) override { base::TestSuite test_suite(argc, argv); - // Browser tests are expected not to tear-down various globals. + // Browser tests are expected not to tear-down various globals and may + // complete with the thread priority being above NORMAL. test_suite.DisableCheckForLeakedGlobals(); + test_suite.DisableCheckForThreadPriorityAtTestEnd(); return test_suite.Run(); }
diff --git a/gpu/command_buffer/service/shared_image_video.cc b/gpu/command_buffer/service/shared_image_video.cc index 83b9739..18d3848 100644 --- a/gpu/command_buffer/service/shared_image_video.cc +++ b/gpu/command_buffer/service/shared_image_video.cc
@@ -500,8 +500,9 @@ auto gl_representation = std::make_unique<SharedImageRepresentationGLTextureVideo>( manager, this, tracker, texture); - return SharedImageRepresentationSkiaGL::Create( - std::move(gl_representation), nullptr, manager, this, tracker); + return SharedImageRepresentationSkiaGL::Create(std::move(gl_representation), + std::move(context_state), + manager, this, tracker); } void SharedImageVideo::BeginGLReadAccess() {
diff --git a/headless/test/headless_test_launcher.cc b/headless/test/headless_test_launcher.cc index 6d8ee1c..d0b1430 100644 --- a/headless/test/headless_test_launcher.cc +++ b/headless/test/headless_test_launcher.cc
@@ -41,8 +41,10 @@ // content::TestLauncherDelegate implementation: int RunTestSuite(int argc, char** argv) override { base::TestSuite test_suite(argc, argv); - // Browser tests are expected not to tear-down various globals. + // Browser tests are expected not to tear-down various globals and may + // complete with the thread priority being above NORMAL. test_suite.DisableCheckForLeakedGlobals(); + test_suite.DisableCheckForThreadPriorityAtTestEnd(); return test_suite.Run(); }
diff --git a/infra/config/cr-buildbucket.cfg b/infra/config/cr-buildbucket.cfg index 8ad05ab..422ab62 100644 --- a/infra/config/cr-buildbucket.cfg +++ b/infra/config/cr-buildbucket.cfg
@@ -810,9 +810,9 @@ builder_mixins { name: "xcode-caches" caches: { - # Cache for Xcode 11 (build version 11a419c) needed for iOS builds. - name: "xcode_ios_11a419c" - path: "xcode_ios_11a419c.app" + # Cache for Xcode 11 (build version 11a420a) needed for iOS builds. + name: "xcode_ios_11a420a" + path: "xcode_ios_11a420a.app" } }
diff --git a/ios/build/bots/chromium.clang/ToTiOS.json b/ios/build/bots/chromium.clang/ToTiOS.json index 59457819..c26b2f37 100644 --- a/ios/build/bots/chromium.clang/ToTiOS.json +++ b/ios/build/bots/chromium.clang/ToTiOS.json
@@ -2,7 +2,7 @@ "comments": [ "Clang tip-of-tree builder for iOS." ], - "xcode build version": "11a419c", + "xcode build version": "11a420a", "gn_args": [ "ios_enable_code_signing=false", "is_component_build=false",
diff --git a/ios/build/bots/chromium.clang/ToTiOSDevice.json b/ios/build/bots/chromium.clang/ToTiOSDevice.json index 2b73f84..3e4a1030 100644 --- a/ios/build/bots/chromium.clang/ToTiOSDevice.json +++ b/ios/build/bots/chromium.clang/ToTiOSDevice.json
@@ -2,7 +2,7 @@ "comments": [ "Clang tip-of-tree builder for iOS device." ], - "xcode build version": "11a419c", + "xcode build version": "11a420a", "gn_args": [ "is_debug=false", "llvm_force_head_revision=true",
diff --git a/ios/build/bots/chromium.fyi/ios-device-goma-canary-clobber.json b/ios/build/bots/chromium.fyi/ios-device-goma-canary-clobber.json index f924ec4f..bd9af1f 100644 --- a/ios/build/bots/chromium.fyi/ios-device-goma-canary-clobber.json +++ b/ios/build/bots/chromium.fyi/ios-device-goma-canary-clobber.json
@@ -3,7 +3,7 @@ "Goma canary builder for iOS.", "It is chromium.mac/ios-device.json + use_goma_canary, clobber." ], - "xcode build version": "11a419c", + "xcode build version": "11a420a", "gn_args": [ "goma_dir=\"$(goma_dir)\"", "ios_enable_code_signing=false",
diff --git a/ios/build/bots/chromium.fyi/ios-device-goma-latest-clobber.json b/ios/build/bots/chromium.fyi/ios-device-goma-latest-clobber.json index ea69174..16207a1 100644 --- a/ios/build/bots/chromium.fyi/ios-device-goma-latest-clobber.json +++ b/ios/build/bots/chromium.fyi/ios-device-goma-latest-clobber.json
@@ -3,7 +3,7 @@ "Goma latest builder for iOS.", "It is chromium.mac/ios-device.json + use_goma_canary, clobber." ], - "xcode build version": "11a419c", + "xcode build version": "11a420a", "gn_args": [ "goma_dir=\"$(goma_dir)\"", "ios_enable_code_signing=false",
diff --git a/ios/build/bots/chromium.fyi/ios-device-goma-rbe-canary-clobber.json b/ios/build/bots/chromium.fyi/ios-device-goma-rbe-canary-clobber.json index d29cbcd2..1b1f8b49 100644 --- a/ios/build/bots/chromium.fyi/ios-device-goma-rbe-canary-clobber.json +++ b/ios/build/bots/chromium.fyi/ios-device-goma-rbe-canary-clobber.json
@@ -3,7 +3,7 @@ "Goma RBE canary builder for iOS.", "It is chromium.mac/ios-device.json + use_goma_canary, clobber." ], - "xcode build version": "11a419c", + "xcode build version": "11a420a", "gn_args": [ "goma_dir=\"$(goma_dir)\"", "ios_enable_code_signing=false",
diff --git a/ios/build/bots/chromium.fyi/ios-device-goma-rbe-latest-clobber.json b/ios/build/bots/chromium.fyi/ios-device-goma-rbe-latest-clobber.json index a983ec6..dda29157 100644 --- a/ios/build/bots/chromium.fyi/ios-device-goma-rbe-latest-clobber.json +++ b/ios/build/bots/chromium.fyi/ios-device-goma-rbe-latest-clobber.json
@@ -3,7 +3,7 @@ "Goma RBE latest builder for iOS.", "It is chromium.mac/ios-device.json + use_goma_canary, clobber." ], - "xcode build version": "11a419c", + "xcode build version": "11a420a", "gn_args": [ "goma_dir=\"$(goma_dir)\"", "ios_enable_code_signing=false",
diff --git a/ios/build/bots/chromium.fyi/ios-simulator-cronet.json b/ios/build/bots/chromium.fyi/ios-simulator-cronet.json index 4c0fa28e..cdca8e66 100644 --- a/ios/build/bots/chromium.fyi/ios-simulator-cronet.json +++ b/ios/build/bots/chromium.fyi/ios-simulator-cronet.json
@@ -3,7 +3,7 @@ "Cronet tests 64-bit iOS 12 and 13 simulators.", "Tests run on iPhone X." ], - "xcode build version": "11a419c", + "xcode build version": "11a420a", "gn_args": [ "additional_target_cpus=[\"x86\"]", "disable_brotli_filter=false",
diff --git a/ios/build/bots/chromium.fyi/ios-simulator.json b/ios/build/bots/chromium.fyi/ios-simulator.json index 953bc3a..21be940f 100644 --- a/ios/build/bots/chromium.fyi/ios-simulator.json +++ b/ios/build/bots/chromium.fyi/ios-simulator.json
@@ -2,7 +2,7 @@ "comments": [ "Runs tests on FYI on the latest simulators." ], - "xcode build version": "11a419c", + "xcode build version": "11a420a", "gn_args": [ "goma_dir=\"$(goma_dir)\"", "is_component_build=false",
diff --git a/ios/build/bots/chromium.fyi/ios12-beta-simulator.json b/ios/build/bots/chromium.fyi/ios12-beta-simulator.json index 11c021e1..2a2be9a0 100644 --- a/ios/build/bots/chromium.fyi/ios12-beta-simulator.json +++ b/ios/build/bots/chromium.fyi/ios12-beta-simulator.json
@@ -3,7 +3,7 @@ "Run tests on iOS12beta track on 64-bit iOS 12 simulators.", "Note: Xcode 11 requires OSX 10.14.3 hence 'host os'" ], - "xcode build version": "11a419c", + "xcode build version": "11a420a", "gn_args": [ "goma_dir=\"$(goma_dir)\"", "is_component_build=false",
diff --git a/ios/build/bots/chromium.fyi/ios13-beta-simulator.json b/ios/build/bots/chromium.fyi/ios13-beta-simulator.json index 97b53419..a1a73c94 100644 --- a/ios/build/bots/chromium.fyi/ios13-beta-simulator.json +++ b/ios/build/bots/chromium.fyi/ios13-beta-simulator.json
@@ -3,7 +3,7 @@ "Run tests on iOS13beta track on 64-bit iOS 13 simulators.", "Note: Xcode 11 requires OSX 10.14.4 and up" ], - "xcode build version": "11a419c", + "xcode build version": "11a420a", "gn_args": [ "goma_dir=\"$(goma_dir)\"", "is_component_build=false", @@ -22,7 +22,7 @@ "include": "eg2_tests.json", "device type": "iPhone X", "os": "13.0", - "xcode build version": "11a419c", + "xcode build version": "11a420a", "pool":"Chrome", "host os": "Mac-10.14.4", "optional_dimensions": { @@ -36,7 +36,7 @@ "include": "eg2_tests.json", "device type": "iPad (6th generation)", "os": "13.0", - "xcode build version": "11a419c", + "xcode build version": "11a420a", "pool":"Chrome", "host os": "Mac-10.14.4", "optional_dimensions": { @@ -50,7 +50,7 @@ "include": "eg2_tests.json", "device type": "iPhone X", "os": "12.2", - "xcode build version": "11a419c", + "xcode build version": "11a420a", "pool":"Chrome", "host os": "Mac-10.14.4", "optional_dimensions": { @@ -64,7 +64,7 @@ "include": "eg2_tests.json", "device type": "iPad (6th generation)", "os": "12.2", - "xcode build version": "11a419c", + "xcode build version": "11a420a", "pool":"Chrome", "host os": "Mac-10.14.4", "optional_dimensions": { @@ -77,7 +77,7 @@ "include": "common_tests.json", "device type": "iPhone X", "os": "13.0", - "xcode build version": "11a419c", + "xcode build version": "11a420a", "host os": "Mac-10.14.4", "pool":"Chrome", "optional_dimensions": { @@ -90,7 +90,7 @@ "include": "eg_cq_tests.json", "device type": "iPhone X", "os": "13.0", - "xcode build version": "11a419c", + "xcode build version": "11a420a", "host os": "Mac-10.14.4", "pool":"Chrome", "optional_dimensions": { @@ -103,7 +103,7 @@ "include": "eg_cq_tests.json", "device type": "iPad Pro (12.9-inch)", "os": "13.0", - "xcode build version": "11a419c", + "xcode build version": "11a420a", "host os": "Mac-10.14.4", "pool":"Chrome", "optional_dimensions": { @@ -116,7 +116,7 @@ "include": "eg_tests.json", "device type": "iPhone X", "os": "13.0", - "xcode build version": "11a419c", + "xcode build version": "11a420a", "host os": "Mac-10.14.4", "pool":"Chrome", "optional_dimensions": { @@ -129,7 +129,7 @@ "include": "eg_tests.json", "device type": "iPad Air (3rd generation)", "os": "13.0", - "xcode build version": "11a419c", + "xcode build version": "11a420a", "host os": "Mac-10.14.4", "pool":"Chrome", "optional_dimensions": { @@ -142,7 +142,7 @@ "include": "screen_size_dependent_tests.json", "device type": "iPhone 6s Plus", "os": "13.0", - "xcode build version": "11a419c", + "xcode build version": "11a420a", "host os": "Mac-10.14.4", "pool":"Chrome", "optional_dimensions": { @@ -155,7 +155,7 @@ "include": "screen_size_dependent_tests.json", "device type": "iPhone X", "os": "13.0", - "xcode build version": "11a419c", + "xcode build version": "11a420a", "host os": "Mac-10.14.4", "pool":"Chrome", "optional_dimensions": { @@ -168,7 +168,7 @@ "include": "screen_size_dependent_tests.json", "device type": "iPad Air 2", "os": "13.0", - "xcode build version": "11a419c", + "xcode build version": "11a420a", "host os": "Mac-10.14.4", "pool":"Chrome", "optional_dimensions": {
diff --git a/ios/build/bots/chromium.fyi/ios13-sdk-device.json b/ios/build/bots/chromium.fyi/ios13-sdk-device.json index 2f2ac7d4..b588dbf2 100644 --- a/ios/build/bots/chromium.fyi/ios13-sdk-device.json +++ b/ios/build/bots/chromium.fyi/ios13-sdk-device.json
@@ -3,7 +3,7 @@ "Builder for Xcode 11 iOS 13 SDK", "Build is performed with gn+ninja." ], - "xcode build version": "11a419c", + "xcode build version": "11a420a", "gn_args": [ "goma_dir=\"$(goma_dir)\"", "ios_enable_code_signing=false",
diff --git a/ios/build/bots/chromium.fyi/ios13-sdk-simulator.json b/ios/build/bots/chromium.fyi/ios13-sdk-simulator.json index 574b3ac..69bdf19e 100644 --- a/ios/build/bots/chromium.fyi/ios13-sdk-simulator.json +++ b/ios/build/bots/chromium.fyi/ios13-sdk-simulator.json
@@ -2,7 +2,7 @@ "comments": [ "Runs tests on 64-bit iOS 11.4 and 12.2 and 13.0 tests" ], - "xcode build version": "11a419c", + "xcode build version": "11a420a", "gn_args": [ "goma_dir=\"$(goma_dir)\"", "is_component_build=false",
diff --git a/ios/build/bots/chromium.mac/ios-device-xcode-clang.json b/ios/build/bots/chromium.mac/ios-device-xcode-clang.json index d81b830..321c28df 100644 --- a/ios/build/bots/chromium.mac/ios-device-xcode-clang.json +++ b/ios/build/bots/chromium.mac/ios-device-xcode-clang.json
@@ -3,7 +3,7 @@ "Builder for 32-bit devices.", "Build is performed with gn+ninja." ], - "xcode build version": "11a419c", + "xcode build version": "11a420a", "gn_args": [ "goma_dir=\"$(goma_dir)\"", "ios_enable_code_signing=false",
diff --git a/ios/build/bots/chromium.mac/ios-device.json b/ios/build/bots/chromium.mac/ios-device.json index d1f0c6f..8d4a2086 100644 --- a/ios/build/bots/chromium.mac/ios-device.json +++ b/ios/build/bots/chromium.mac/ios-device.json
@@ -4,7 +4,7 @@ "Build is performed with gn+ninja.", "If modified, please change chromium.fyi/ios-device-goma-canary-clobber.json too." ], - "xcode build version": "11a419c", + "xcode build version": "11a420a", "gn_args": [ "goma_dir=\"$(goma_dir)\"", "ios_enable_code_signing=false",
diff --git a/ios/build/bots/chromium.mac/ios-simulator-cronet.json b/ios/build/bots/chromium.mac/ios-simulator-cronet.json index b0123b3..a5938f92d 100644 --- a/ios/build/bots/chromium.mac/ios-simulator-cronet.json +++ b/ios/build/bots/chromium.mac/ios-simulator-cronet.json
@@ -2,7 +2,7 @@ "comments": [ "Cronet tests 64-bit iOS 12 and 13 simulators." ], - "xcode build version": "11a419c", + "xcode build version": "11a420a", "gn_args": [ "additional_target_cpus=[\"x86\"]", "disable_brotli_filter=false",
diff --git a/ios/build/bots/chromium.mac/ios-simulator-full-configs.json b/ios/build/bots/chromium.mac/ios-simulator-full-configs.json index 6d41796..04a7977c 100644 --- a/ios/build/bots/chromium.mac/ios-simulator-full-configs.json +++ b/ios/build/bots/chromium.mac/ios-simulator-full-configs.json
@@ -3,7 +3,7 @@ "Runs tests on 64-bit iOS 11 and 12 tests on iPad, iPhone,", "@3x, and @2x on main waterfall ios-simulator-full-configs." ], - "xcode build version": "11a419c", + "xcode build version": "11a420a", "gn_args": [ "goma_dir=\"$(goma_dir)\"", "is_component_build=false",
diff --git a/ios/build/bots/chromium.mac/ios-simulator-xcode-clang.json b/ios/build/bots/chromium.mac/ios-simulator-xcode-clang.json index d8a84b0a..208ee735 100644 --- a/ios/build/bots/chromium.mac/ios-simulator-xcode-clang.json +++ b/ios/build/bots/chromium.mac/ios-simulator-xcode-clang.json
@@ -4,7 +4,7 @@ "This 'xcode build version' must exist in GOMA", "Build is performed with gn+ninja." ], - "xcode build version": "11a419c", + "xcode build version": "11a420a", "use xcode build version": true, "gn_args": [ "goma_dir=\"$(goma_dir)\"",
diff --git a/ios/build/bots/chromium.mac/ios-simulator.json b/ios/build/bots/chromium.mac/ios-simulator.json index 188d0bf9..556e4f7 100644 --- a/ios/build/bots/chromium.mac/ios-simulator.json +++ b/ios/build/bots/chromium.mac/ios-simulator.json
@@ -4,7 +4,7 @@ "main and CQ ios-simulator.", "Note: Xcode 10 requires Mac OS 10.13.4 or higher, hence 'host os'." ], - "xcode build version": "11a419c", + "xcode build version": "11a420a", "gn_args": [ "goma_dir=\"$(goma_dir)\"", "is_component_build=false",
diff --git a/ios/build/bots/chromium.mac/ios-slimnav.json b/ios/build/bots/chromium.mac/ios-slimnav.json index 2e4333c..66ef88e 100644 --- a/ios/build/bots/chromium.mac/ios-slimnav.json +++ b/ios/build/bots/chromium.mac/ios-slimnav.json
@@ -2,7 +2,7 @@ "comments": [ "Test the SlimNavigationManager feature." ], - "xcode build version": "11a419c", + "xcode build version": "11a420a", "gn_args": [ "goma_dir=\"$(goma_dir)\"", "is_component_build=false",
diff --git a/ios/build/bots/chromium.mac/ios13-beta-simulator.json b/ios/build/bots/chromium.mac/ios13-beta-simulator.json index 45a79d7..55b4dc0 100644 --- a/ios/build/bots/chromium.mac/ios13-beta-simulator.json +++ b/ios/build/bots/chromium.mac/ios13-beta-simulator.json
@@ -5,7 +5,7 @@ "Note: This file exists only to support the trybot.", "It should be kept in sync with the CI configuration in ../chromium.fyi/." ], - "xcode build version": "11a419c", + "xcode build version": "11a420a", "gn_args": [ "goma_dir=\"$(goma_dir)\"", "is_component_build=false", @@ -24,7 +24,7 @@ "include": "eg2_tests.json", "device type": "iPhone X", "os": "13.0", - "xcode build version": "11a419c", + "xcode build version": "11a420a", "pool":"Chrome", "host os": "Mac-10.14.4", "optional_dimensions": { @@ -38,7 +38,7 @@ "include": "eg2_tests.json", "device type": "iPad (6th generation)", "os": "13.0", - "xcode build version": "11a419c", + "xcode build version": "11a420a", "pool":"Chrome", "host os": "Mac-10.14.4", "optional_dimensions": { @@ -52,7 +52,7 @@ "include": "eg2_tests.json", "device type": "iPhone X", "os": "12.2", - "xcode build version": "11a419c", + "xcode build version": "11a420a", "pool":"Chrome", "host os": "Mac-10.14.4", "optional_dimensions": { @@ -66,7 +66,7 @@ "include": "eg2_tests.json", "device type": "iPad (6th generation)", "os": "12.2", - "xcode build version": "11a419c", + "xcode build version": "11a420a", "pool":"Chrome", "host os": "Mac-10.14.4", "optional_dimensions": { @@ -79,7 +79,7 @@ "include": "common_tests.json", "device type": "iPhone X", "os": "13.0", - "xcode build version": "11a419c", + "xcode build version": "11a420a", "host os": "Mac-10.14.4", "pool":"Chrome", "optional_dimensions": { @@ -92,7 +92,7 @@ "include": "eg_cq_tests.json", "device type": "iPhone X", "os": "13.0", - "xcode build version": "11a419c", + "xcode build version": "11a420a", "host os": "Mac-10.14.4", "pool":"Chrome", "optional_dimensions": { @@ -105,7 +105,7 @@ "include": "eg_cq_tests.json", "device type": "iPad Pro (12.9-inch)", "os": "13.0", - "xcode build version": "11a419c", + "xcode build version": "11a420a", "host os": "Mac-10.14.4", "pool":"Chrome", "optional_dimensions": { @@ -118,7 +118,7 @@ "include": "eg_tests.json", "device type": "iPhone X", "os": "13.0", - "xcode build version": "11a419c", + "xcode build version": "11a420a", "host os": "Mac-10.14.4", "pool":"Chrome", "optional_dimensions": { @@ -131,7 +131,7 @@ "include": "eg_tests.json", "device type": "iPad Air (3rd generation)", "os": "13.0", - "xcode build version": "11a419c", + "xcode build version": "11a420a", "host os": "Mac-10.14.4", "pool":"Chrome", "optional_dimensions": { @@ -144,7 +144,7 @@ "include": "screen_size_dependent_tests.json", "device type": "iPhone 6s Plus", "os": "13.0", - "xcode build version": "11a419c", + "xcode build version": "11a420a", "host os": "Mac-10.14.4", "pool":"Chrome", "optional_dimensions": { @@ -157,7 +157,7 @@ "include": "screen_size_dependent_tests.json", "device type": "iPhone X", "os": "13.0", - "xcode build version": "11a419c", + "xcode build version": "11a420a", "host os": "Mac-10.14.4", "pool":"Chrome", "optional_dimensions": { @@ -170,7 +170,7 @@ "include": "screen_size_dependent_tests.json", "device type": "iPad Air 2", "os": "13.0", - "xcode build version": "11a419c", + "xcode build version": "11a420a", "host os": "Mac-10.14.4", "pool":"Chrome", "optional_dimensions": {
diff --git a/ios/build/bots/chromium.mac/ios13-sdk-simulator.json b/ios/build/bots/chromium.mac/ios13-sdk-simulator.json index 9ab9ef3..11508be 100644 --- a/ios/build/bots/chromium.mac/ios13-sdk-simulator.json +++ b/ios/build/bots/chromium.mac/ios13-sdk-simulator.json
@@ -5,7 +5,7 @@ "Note: This file exists only to support the trybot.", "It should be kept in sync with the CI configuration in ../chromium.fyi/." ], - "xcode build version": "11a419c", + "xcode build version": "11a420a", "gn_args": [ "goma_dir=\"$(goma_dir)\"", "is_component_build=false",
diff --git a/ios/build/bots/chromium.webrtc.fyi/WebRTC Chromium FYI ios-device.json b/ios/build/bots/chromium.webrtc.fyi/WebRTC Chromium FYI ios-device.json index 79e6d21..33ea4312 100644 --- a/ios/build/bots/chromium.webrtc.fyi/WebRTC Chromium FYI ios-device.json +++ b/ios/build/bots/chromium.webrtc.fyi/WebRTC Chromium FYI ios-device.json
@@ -3,7 +3,7 @@ "Builder for 64-bit devices.", "Build is performed with gn+ninja." ], - "xcode build version": "11a419c", + "xcode build version": "11a420a", "gn_args": [ "goma_dir=\"$(goma_dir)\"", "ios_enable_code_signing=false",
diff --git a/ios/build/bots/chromium.webrtc.fyi/WebRTC Chromium FYI ios-simulator.json b/ios/build/bots/chromium.webrtc.fyi/WebRTC Chromium FYI ios-simulator.json index 7a3cb59..131d2a0 100644 --- a/ios/build/bots/chromium.webrtc.fyi/WebRTC Chromium FYI ios-simulator.json +++ b/ios/build/bots/chromium.webrtc.fyi/WebRTC Chromium FYI ios-simulator.json
@@ -2,7 +2,7 @@ "comments": [ "Runs tests on @3x, @2x, 64-bit phone, tablet, iOS 11." ], - "xcode build version": "11a419c", + "xcode build version": "11a420a", "gn_args": [ "goma_dir=\"$(goma_dir)\"", "ios_enable_code_signing=false",
diff --git a/ios/chrome/app/strings/ios_strings.grd b/ios/chrome/app/strings/ios_strings.grd index f225f43..4d9ea1f 100644 --- a/ios/chrome/app/strings/ios_strings.grd +++ b/ios/chrome/app/strings/ios_strings.grd
@@ -311,7 +311,7 @@ <message name="IDS_IOS_AUTOFILL_ZIP" desc="Title of the field of a profile address representing the postal code of the address. [Length: 15em] [iOS only]"> Zip Code </message> - <message name="IDS_IOS_BADGE_INCOGNITO_HINT" desc="Button displayed when the user is in Incognito mode [Length: 15 em] [iOS only]"> + <message name="IDS_IOS_BADGE_INCOGNITO_HINT" desc="Button displayed when the user is in Incognito mode. [iOS only]"> Current Webpage is on Incognito </message> <message name="IDS_IOS_BANDWIDTH_MANAGEMENT_LEARN_URL" translateable="false">
diff --git a/ios/chrome/browser/context_menu/context_menu_egtest.mm b/ios/chrome/browser/context_menu/context_menu_egtest.mm index 2c02eff..f7da05b 100644 --- a/ios/chrome/browser/context_menu/context_menu_egtest.mm +++ b/ios/chrome/browser/context_menu/context_menu_egtest.mm
@@ -162,13 +162,6 @@ @implementation ContextMenuTestCase -// TODO(crbug.com/989550) Disable broken context menu tests on Xcode 11 beta 5. -+ (NSArray*)testInvocations { - if (@available(iOS 13, *)) - return @[]; - return [super testInvocations]; -} - + (void)setUp { [super setUp]; [ChromeEarlGrey setContentSettings:CONTENT_SETTING_ALLOW]; @@ -263,9 +256,10 @@ CGRectGetMidX([chrome_test_util::GetActiveViewController() view].bounds), topInset + 20.0); + // Duration should match |kContextMenuLongPressDuration| as defined in + // web_view_actions.mm. [[EarlGrey selectElementWithMatcher:WebViewMatcher()] - performAction:grey_longPressAtPointWithDuration( - point, kGREYLongPressDefaultDuration)]; + performAction:grey_longPressAtPointWithDuration(point, 1.0)]; TapOnContextMenuButton(OpenImageInNewTabButton()); [ChromeEarlGrey waitForMainTabCount:2];
diff --git a/ios/chrome/browser/infobars/infobar_container_ios.h b/ios/chrome/browser/infobars/infobar_container_ios.h index 22ac6903..07f647b1 100644 --- a/ios/chrome/browser/infobars/infobar_container_ios.h +++ b/ios/chrome/browser/infobars/infobar_container_ios.h
@@ -37,6 +37,7 @@ private: id<InfobarContainerConsumer> consumer_; id<InfobarContainerConsumer> legacyConsumer_; + infobars::InfoBarManager* info_bar_manager_ = nullptr; DISALLOW_COPY_AND_ASSIGN(InfoBarContainerIOS); };
diff --git a/ios/chrome/browser/infobars/infobar_container_ios.mm b/ios/chrome/browser/infobars/infobar_container_ios.mm index d9f7f04..3d64c5a 100644 --- a/ios/chrome/browser/infobars/infobar_container_ios.mm +++ b/ios/chrome/browser/infobars/infobar_container_ios.mm
@@ -4,6 +4,7 @@ #include "ios/chrome/browser/infobars/infobar_container_ios.h" +#include "base/metrics/histogram_macros.h" #include "ios/chrome/browser/infobars/infobar.h" #import "ios/chrome/browser/ui/infobars/infobar_container_consumer.h" #import "ios/chrome/browser/ui/infobars/infobar_feature.h" @@ -28,6 +29,7 @@ infobars::InfoBarManager* infobar_manager) { [consumer_ infobarManagerWillChange]; InfoBarContainer::ChangeInfoBarManager(infobar_manager); + info_bar_manager_ = infobar_manager; } void InfoBarContainerIOS::PlatformSpecificAddInfoBar(infobars::InfoBar* infobar, @@ -35,6 +37,14 @@ InfoBarIOS* infobar_ios = static_cast<InfoBarIOS*>(infobar); id<InfobarUIDelegate> delegate = infobar_ios->InfobarUIDelegate(); + // Record the number of multiple Infobars being presented at the same time. + // This doesn't differentiate between "Messages" or legacy Infobars. + if (info_bar_manager_ && info_bar_manager_->infobar_count() > 0) { + int kMaxValue = 10; + UMA_HISTOGRAM_EXACT_LINEAR("Mobile.Messages.ConcurrentPresented", + info_bar_manager_->infobar_count(), kMaxValue); + } + if ([delegate isPresented]) { // Only InfobarUIReboot Infobars should be presented using the non legacy // consumer.
diff --git a/ios/chrome/browser/metrics/user_interface_style_recorder.mm b/ios/chrome/browser/metrics/user_interface_style_recorder.mm index 6ffebd8..a00fcc0 100644 --- a/ios/chrome/browser/metrics/user_interface_style_recorder.mm +++ b/ios/chrome/browser/metrics/user_interface_style_recorder.mm
@@ -44,15 +44,6 @@ userInterfaceStyleForReporting); } -// Reports the interface style changed while Chrome is active. -void ReportUserInterfaceStyleChangedWhileActive( - UIUserInterfaceStyle userInterfaceStyle) { - InterfaceStyleForReporting userInterfaceStyleForReporting = - InterfaceStyleForReportingForUIUserInterfaceStyle(userInterfaceStyle); - base::UmaHistogramEnumeration("UserInterfaceStyle.ChangedWhileActive", - userInterfaceStyleForReporting); -} - } // namespace @interface UserInterfaceStyleRecorder () @@ -92,12 +83,13 @@ - (void)userInterfaceStyleDidChange: (UIUserInterfaceStyle)newUserInterfaceStyle { - // Record the new user interface style. - ReportUserInterfaceStyleUsed(newUserInterfaceStyle); - - // Record if changed while in foreground. + // When an app goes to the background iOS toggles the user interface 2 times. + // This is probably to take screenshots of the screen for multitask. After + // this if the interface style changes, the app is not notified until it comes + // to the foreground. We only care if changed was registered while in + // foreground. if (!self.applicationInBackground) { - ReportUserInterfaceStyleChangedWhileActive(newUserInterfaceStyle); + ReportUserInterfaceStyleUsed(newUserInterfaceStyle); } }
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 36b6622f..eb2b51e 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,6 +14,7 @@ #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_util/constraints_ui_util.h" #include "ios/chrome/grit/ios_chromium_strings.h" @@ -392,8 +393,7 @@ action:^(const GURL& URL) { [weakSelf openSettings]; }]; - [self.settingsLinkController - setLinkColor:[[MDCPalette cr_bluePalette] tint500]]; + [self.settingsLinkController setLinkColor:[UIColor colorNamed:kBlueColor]]; [self.settingsLinkController addLinkWithRange:range url:URL
diff --git a/ios/chrome/browser/ui/autofill/form_input_accessory/form_input_accessory_coordinator.mm b/ios/chrome/browser/ui/autofill/form_input_accessory/form_input_accessory_coordinator.mm index 8375d49..0701f16a 100644 --- a/ios/chrome/browser/ui/autofill/form_input_accessory/form_input_accessory_coordinator.mm +++ b/ios/chrome/browser/ui/autofill/form_input_accessory/form_input_accessory_coordinator.mm
@@ -185,6 +185,11 @@ } } +- (void)mediatorDidDetectMovingToBackground: + (FormInputAccessoryMediator*)mediator { + [self.formInputAccessoryViewController reset]; +} + #pragma mark - ManualFillAccessoryViewControllerDelegate - (void)keyboardButtonPressed { @@ -225,22 +230,26 @@ #pragma mark - PasswordCoordinatorDelegate - (void)openPasswordSettings { + [self.formInputAccessoryViewController reset]; [self.navigator openPasswordSettings]; } - (void)openAllPasswordsPicker { + [self.formInputAccessoryViewController reset]; [self.navigator openAllPasswordsPicker]; } #pragma mark - CardCoordinatorDelegate - (void)openCardSettings { + [self.formInputAccessoryViewController reset]; [self.navigator openCreditCardSettings]; } #pragma mark - AddressCoordinatorDelegate - (void)openAddressSettings { + [self.formInputAccessoryViewController reset]; [self.navigator openAddressSettings]; }
diff --git a/ios/chrome/browser/ui/autofill/form_input_accessory/form_input_accessory_mediator.h b/ios/chrome/browser/ui/autofill/form_input_accessory/form_input_accessory_mediator.h index c769e96..828e49c8 100644 --- a/ios/chrome/browser/ui/autofill/form_input_accessory/form_input_accessory_mediator.h +++ b/ios/chrome/browser/ui/autofill/form_input_accessory/form_input_accessory_mediator.h
@@ -35,6 +35,11 @@ // present on the screen. - (void)mediatorDidDetectKeyboardHide:(FormInputAccessoryMediator*)mediator; +// The mediator detected that the keyboard was hidden and it is no longer +// present on the screen. +- (void)mediatorDidDetectMovingToBackground: + (FormInputAccessoryMediator*)mediator; + @end // This class contains all the logic to get and provide keyboard input accessory
diff --git a/ios/chrome/browser/ui/autofill/form_input_accessory/form_input_accessory_mediator.mm b/ios/chrome/browser/ui/autofill/form_input_accessory/form_input_accessory_mediator.mm index 36d162e..bd4822fc 100644 --- a/ios/chrome/browser/ui/autofill/form_input_accessory/form_input_accessory_mediator.mm +++ b/ios/chrome/browser/ui/autofill/form_input_accessory/form_input_accessory_mediator.mm
@@ -169,37 +169,42 @@ selector:@selector(handleTextInputDidEndEditing:) name:UITextFieldTextDidEndEditingNotification object:nil]; + [defaultCenter addObserver:self + selector:@selector(applicationDidEnterBackground:) + name:UIApplicationDidEnterBackgroundNotification + object:nil]; + _keyboardObserver = [[KeyboardObserverHelper alloc] init]; _keyboardObserver.consumer = self; - } - // In BVC unit tests the password store doesn't exist. Skip creating the - // fetcher. - // TODO:(crbug.com/878388) Remove this workaround. - if (passwordStore) { - _passwordFetcher = - [[PasswordFetcher alloc] initWithPasswordStore:passwordStore - delegate:self - URL:GURL::EmptyGURL()]; - } - if (personalDataManager) { - _personalDataManager = personalDataManager; - _personalDataManagerObserver.reset( - new autofill::PersonalDataManagerObserverBridge(self)); - personalDataManager->AddObserver(_personalDataManagerObserver.get()); - // TODO:(crbug.com/845472) Add earl grey test to verify the credit card - // button is hidden when local cards are saved and then - // kAutofillCreditCardEnabled is changed to disabled. - consumer.creditCardButtonHidden = - personalDataManager->GetCreditCards().empty(); + // In BVC unit tests the password store doesn't exist. Skip creating the + // fetcher. + // TODO:(crbug.com/878388) Remove this workaround. + if (passwordStore) { + _passwordFetcher = + [[PasswordFetcher alloc] initWithPasswordStore:passwordStore + delegate:self + URL:GURL::EmptyGURL()]; + } + if (personalDataManager) { + _personalDataManager = personalDataManager; + _personalDataManagerObserver.reset( + new autofill::PersonalDataManagerObserverBridge(self)); + personalDataManager->AddObserver(_personalDataManagerObserver.get()); - consumer.addressButtonHidden = - personalDataManager->GetProfilesToSuggest().empty(); - } else { - consumer.creditCardButtonHidden = YES; - consumer.addressButtonHidden = YES; + // TODO:(crbug.com/845472) Add earl grey test to verify the credit card + // button is hidden when local cards are saved and then + // kAutofillCreditCardEnabled is changed to disabled. + consumer.creditCardButtonHidden = + personalDataManager->GetCreditCards().empty(); + + consumer.addressButtonHidden = + personalDataManager->GetProfilesToSuggest().empty(); + } else { + consumer.creditCardButtonHidden = YES; + consumer.addressButtonHidden = YES; + } } - return self; } @@ -507,6 +512,11 @@ } } +// Inform the delegate that the app went to the background. +- (void)applicationDidEnterBackground:(NSNotification*)notification { + [self.delegate mediatorDidDetectMovingToBackground:self]; +} + #pragma mark - Keyboard Notifications // When any text field or text view (e.g. omnibox, settings search bar)
diff --git a/ios/chrome/browser/ui/autofill/manual_fill/fallback_view_controller.h b/ios/chrome/browser/ui/autofill/manual_fill/fallback_view_controller.h index 650866f2..a8e2388 100644 --- a/ios/chrome/browser/ui/autofill/manual_fill/fallback_view_controller.h +++ b/ios/chrome/browser/ui/autofill/manual_fill/fallback_view_controller.h
@@ -23,6 +23,7 @@ // If set to YES, the controller will add negative content insets inverse to the // ones added by UITableViewController to accommodate for the keyboard. +// Not needed and ignored on iOS >= 13. @property(nonatomic, assign) BOOL contentInsetsAlwaysEqualToSafeArea; // Data source for images.
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 58ed525..74668f51 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
@@ -141,6 +141,15 @@ [self presentQueuedActionItems]; } +#pragma mark - Getters + +- (BOOL)contentInsetsAlwaysEqualToSafeArea { + if (@available(iOS 13, *)) { + return NO; + } + return _contentInsetsAlwaysEqualToSafeArea; +} + #pragma mark - Private // Presents the data items currently in queue.
diff --git a/ios/chrome/browser/ui/browser_view/BUILD.gn b/ios/chrome/browser/ui/browser_view/BUILD.gn index e097631..8ba80242 100644 --- a/ios/chrome/browser/ui/browser_view/BUILD.gn +++ b/ios/chrome/browser/ui/browser_view/BUILD.gn
@@ -160,6 +160,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_util", "//ios/public/provider/chrome/browser", "//ios/public/provider/chrome/browser/ui",
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 2216f51..9efe2f2e 100644 --- a/ios/chrome/browser/ui/browser_view/browser_view_controller.mm +++ b/ios/chrome/browser/ui/browser_view/browser_view_controller.mm
@@ -175,6 +175,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_util/constraints_ui_util.h" #include "ios/chrome/grit/ios_strings.h" #include "ios/public/provider/chrome/browser/chrome_browser_provider.h" @@ -1503,7 +1504,7 @@ action:@selector(shieldWasTapped:) forControlEvents:UIControlEventTouchUpInside]; self.view.autoresizingMask = initialViewAutoresizing; - self.view.backgroundColor = [UIColor colorWithWhite:0.75 alpha:1.0]; + self.view.backgroundColor = [UIColor colorNamed:kBackgroundColor]; [self addChildViewController:self.browserContainerViewController]; [self.view addSubview:self.contentArea];
diff --git a/ios/chrome/browser/ui/dialogs/javascript_dialog_egtest.mm b/ios/chrome/browser/ui/dialogs/javascript_dialog_egtest.mm index 20afd5c..7ac9f2f6 100644 --- a/ios/chrome/browser/ui/dialogs/javascript_dialog_egtest.mm +++ b/ios/chrome/browser/ui/dialogs/javascript_dialog_egtest.mm
@@ -575,11 +575,6 @@ // Tests that an alert is presented after a new tab animation is finished. - (void)testShowJavaScriptAfterNewTabAnimation { - // TODO(crbug.com/989550) Disable broken context menu tests on Xc11b5. - if (@available(iOS 13, *)) { - EARL_GREY_TEST_DISABLED(@"Test disabled on iOS13."); - } - // Load the test page with a link to kOnLoadAlertURL and long tap on the link. [self loadPageWithLink];
diff --git a/ios/chrome/browser/ui/elements/chrome_activity_overlay_coordinator.h b/ios/chrome/browser/ui/elements/chrome_activity_overlay_coordinator.h index 868a4853..f5eab0bc 100644 --- a/ios/chrome/browser/ui/elements/chrome_activity_overlay_coordinator.h +++ b/ios/chrome/browser/ui/elements/chrome_activity_overlay_coordinator.h
@@ -14,6 +14,10 @@ // Text that will be shown above the UIActivityIndicatorView. @property(nonatomic, copy) NSString* messageText; +// YES if the Coordinator is started. Meaning that the UIActivityIndicatorView +// is currently being displayed. +@property(nonatomic, assign) BOOL started; + @end #endif // IOS_CHROME_BROWSER_UI_ELEMENTS_CHROME_ACTIVITY_OVERLAY_COORDINATOR_H_
diff --git a/ios/chrome/browser/ui/elements/chrome_activity_overlay_coordinator.mm b/ios/chrome/browser/ui/elements/chrome_activity_overlay_coordinator.mm index ce4aae0..13acaff 100644 --- a/ios/chrome/browser/ui/elements/chrome_activity_overlay_coordinator.mm +++ b/ios/chrome/browser/ui/elements/chrome_activity_overlay_coordinator.mm
@@ -20,7 +20,7 @@ @implementation ChromeActivityOverlayCoordinator - (void)start { - if (self.chromeActivityOverlayViewController) + if (self.chromeActivityOverlayViewController || self.started) return; self.chromeActivityOverlayViewController = @@ -40,15 +40,17 @@ addSubview:self.chromeActivityOverlayViewController.view]; [self.chromeActivityOverlayViewController didMoveToParentViewController:self.baseViewController]; + self.started = YES; } - (void)stop { - if (!self.chromeActivityOverlayViewController) + if (!self.chromeActivityOverlayViewController || !self.started) return; [self.chromeActivityOverlayViewController willMoveToParentViewController:nil]; [self.chromeActivityOverlayViewController.view removeFromSuperview]; [self.chromeActivityOverlayViewController removeFromParentViewController]; self.chromeActivityOverlayViewController = nil; + self.started = NO; } @end
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 b4d58dd..ca161e2 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
@@ -381,7 +381,9 @@ // label. Thus, there should be at least one object alreading in // |accessibleElements|. DCHECK([self.accessibleElements count] > 0); - [self.accessibleElements insertObject:self.badgeView atIndex:1]; + if ([self.accessibleElements indexOfObject:self.badgeView] == NSNotFound) { + [self.accessibleElements insertObject:self.badgeView atIndex:1]; + } } else { [self.accessibleElements removeObject:self.badgeView]; } @@ -449,7 +451,10 @@ } if (self.trailingButton.enabled) { - [self.accessibleElements addObject:self.trailingButton]; + if ([self.accessibleElements indexOfObject:self.trailingButton] == + NSNotFound) { + [self.accessibleElements addObject:self.trailingButton]; + } } else { [self.accessibleElements removeObject:self.trailingButton]; }
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 d4b91dd..bfbbdc7 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
@@ -121,8 +121,10 @@ self.tableView.accessibilityIdentifier = kAutofillCreditCardTableViewId; base::RecordAction(base::UserMetricsAction("AutofillCreditCardsViewed")); - [self setToolbarItems:@[ [self flexibleSpace], self.addPaymentMethodButton ] - animated:YES]; + if (base::FeatureList::IsEnabled(kSettingsAddPaymentMethod)) { + [self setToolbarItems:@[ [self flexibleSpace], self.addPaymentMethodButton ] + animated:YES]; + } [self updateUIForEditState]; [self loadModel]; } @@ -493,15 +495,24 @@ // Adds delete button to the bottom toolbar. - (void)showDeleteButton { - NSArray* customToolbarItems = - @[ self.deleteButton, [self flexibleSpace], self.addPaymentMethodButton ]; + NSArray* customToolbarItems; + if (base::FeatureList::IsEnabled(kSettingsAddPaymentMethod)) { + customToolbarItems = @[ + self.deleteButton, [self flexibleSpace], self.addPaymentMethodButton + ]; + } else { + customToolbarItems = + @[ [self flexibleSpace], self.deleteButton, [self flexibleSpace] ]; + } [self setToolbarItems:customToolbarItems animated:YES]; } // Removes delete button from the bottom toolbar. - (void)hideDeleteButton { - NSArray* customToolbarItems = - @[ [self flexibleSpace], self.addPaymentMethodButton ]; + NSArray* customToolbarItems; + if (base::FeatureList::IsEnabled(kSettingsAddPaymentMethod)) { + customToolbarItems = @[ [self flexibleSpace], self.addPaymentMethodButton ]; + } [self setToolbarItems:customToolbarItems animated:YES]; }
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 52b5b26..b765c1a 100644 --- a/ios/chrome/browser/ui/settings/clear_browsing_data/BUILD.gn +++ b/ios/chrome/browser/ui/settings/clear_browsing_data/BUILD.gn
@@ -132,6 +132,7 @@ "//components/strings", "//ios/chrome/app/strings", "//ios/chrome/browser/browsing_data:feature_flags", + "//ios/chrome/browser/ui/settings/cells", "//ios/chrome/test/earl_grey:test_support", "//ui/base", ]
diff --git a/ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_egtest.mm b/ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_egtest.mm index aa30cae..610053d 100644 --- a/ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_egtest.mm +++ b/ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_egtest.mm
@@ -5,9 +5,11 @@ #import <EarlGrey/EarlGrey.h> #import <XCTest/XCTest.h> +#include "base/ios/ios_util.h" #include "base/test/scoped_feature_list.h" #include "components/strings/grit/components_strings.h" #include "ios/chrome/browser/browsing_data/browsing_data_features.h" +#include "ios/chrome/browser/ui/settings/cells/clear_browsing_data_constants.h" #include "ios/chrome/grit/ios_strings.h" #import "ios/chrome/test/earl_grey/chrome_earl_grey.h" #import "ios/chrome/test/earl_grey/chrome_earl_grey_ui.h" @@ -47,4 +49,30 @@ performAction:grey_tap()]; } +// Verifies that the CBD screen can be swiped down to dismiss. +- (void)testClearBrowsingDataSwipeDown { + if (!base::ios::IsRunningOnOrLater(13, 0, 0)) { + EARL_GREY_TEST_SKIPPED(@"Test disabled on iOS 12 and lower."); + } + [self openClearBrowsingDataDialog]; + + // Check that CBD is presented. + [[EarlGrey + selectElementWithMatcher: + grey_accessibilityID(kClearBrowsingDataViewAccessibilityIdentifier)] + assertWithMatcher:grey_notNil()]; + + // Swipe TableView down. + [[EarlGrey + selectElementWithMatcher: + grey_accessibilityID(kClearBrowsingDataViewAccessibilityIdentifier)] + performAction:grey_swipeFastInDirection(kGREYDirectionDown)]; + + // Check that Settings has been dismissed. + [[EarlGrey + selectElementWithMatcher: + grey_accessibilityID(kClearBrowsingDataViewAccessibilityIdentifier)] + assertWithMatcher:grey_nil()]; +} + @end
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 3a80248..b04fccb 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
@@ -334,6 +334,12 @@ } } +#pragma mark - SettingsRootTableViewController + +- (BOOL)shouldDismissViewControllerBySwipeDown { + return !self.chromeActivityOverlayCoordinator.started; +} + #pragma mark - TableViewTextLinkCellDelegate - (void)tableViewTextLinkCell:(TableViewTextLinkCell*)cell @@ -434,6 +440,11 @@ [self dismiss]; } +- (BOOL)presentationControllerShouldDismiss: + (UIPresentationController*)presentationController { + return !self.chromeActivityOverlayCoordinator.started; +} + #pragma mark - Private Helpers - (void)showClearBrowsingDataAlertController:(id)sender {
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 eb8bc58..e57034e0 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
@@ -293,4 +293,8 @@ return self.detailTextLabel.text; } +- (NSArray<NSString*>*)accessibilityUserInputLabels { + return @[ self.textLabel.text ]; +} + @end
diff --git a/ios/chrome/browser/ui/tabs/tab_strip_controller.h b/ios/chrome/browser/ui/tabs/tab_strip_controller.h index 9184fc4..4dca05e 100644 --- a/ios/chrome/browser/ui/tabs/tab_strip_controller.h +++ b/ios/chrome/browser/ui/tabs/tab_strip_controller.h
@@ -48,6 +48,11 @@ // Hides or shows the tab strip. - (void)hideTabStrip:(BOOL)hidden; +// Preprare the receiver for destruction, disconnecting from all services. +// It is an error for the receiver to dealloc without this having been called +// first. +- (void)disconnect; + @end #endif // IOS_CHROME_BROWSER_UI_TABS_TAB_STRIP_CONTROLLER_H_
diff --git a/ios/chrome/browser/ui/tabs/tab_strip_controller.mm b/ios/chrome/browser/ui/tabs/tab_strip_controller.mm index c7e0bf4..75150b7f 100644 --- a/ios/chrome/browser/ui/tabs/tab_strip_controller.mm +++ b/ios/chrome/browser/ui/tabs/tab_strip_controller.mm
@@ -257,6 +257,9 @@ @property(nonatomic, readonly, retain) TabStripView* tabStripView; @property(nonatomic, readonly, retain) UIButton* buttonNewTab; +// YES if the controller has been disconnected. +@property(nonatomic) BOOL disconnected; + // Initializes the tab array based on the the entries in the TabModel. Creates // one TabView per Tab and adds it to the tabstrip. A later call to // |-layoutTabs| is needed to properly place the tabs in the correct positions. @@ -510,10 +513,16 @@ } - (void)dealloc { + DCHECK(_disconnected); +} + +- (void)disconnect { [_tabStripView setDelegate:nil]; [_tabStripView setLayoutDelegate:nil]; _allWebStateObservationForwarder.reset(); + _webStateListFaviconObserver.reset(); _tabModel.webStateList->RemoveObserver(_webStateListObserver.get()); + self.disconnected = YES; } - (void)hideTabStrip:(BOOL)hidden {
diff --git a/ios/chrome/browser/ui/tabs/tab_strip_controller_unittest.mm b/ios/chrome/browser/ui/tabs/tab_strip_controller_unittest.mm index bb8c6eb..9ada126 100644 --- a/ios/chrome/browser/ui/tabs/tab_strip_controller_unittest.mm +++ b/ios/chrome/browser/ui/tabs/tab_strip_controller_unittest.mm
@@ -126,6 +126,7 @@ return; [tab_model_ browserStateDestroyed]; + [controller_ disconnect]; } web::WebTaskEnvironment task_environment_;
diff --git a/ios/chrome/browser/ui/tabs/tab_strip_legacy_coordinator.mm b/ios/chrome/browser/ui/tabs/tab_strip_legacy_coordinator.mm index a0eb9f0..4c50e1d 100644 --- a/ios/chrome/browser/ui/tabs/tab_strip_legacy_coordinator.mm +++ b/ios/chrome/browser/ui/tabs/tab_strip_legacy_coordinator.mm
@@ -88,6 +88,7 @@ - (void)stop { self.started = NO; + [self.tabStripController disconnect]; self.tabStripController = nil; self.dispatcher = nil; self.tabModel = nil;
diff --git a/media/webrtc/BUILD.gn b/media/webrtc/BUILD.gn index d053c88a..59e7cd7c 100644 --- a/media/webrtc/BUILD.gn +++ b/media/webrtc/BUILD.gn
@@ -43,6 +43,7 @@ deps += [ "//media", "//third_party/webrtc/api:libjingle_peerconnection_api", + "//third_party/webrtc/api:media_stream_interface", "//third_party/webrtc/api/audio:aec3_factory", "//third_party/webrtc/modules/audio_processing/aec_dump:aec_dump", "//third_party/webrtc/rtc_base:rtc_task_queue",
diff --git a/net/http/http_cache_transaction.cc b/net/http/http_cache_transaction.cc index 85b84438..c15d299 100644 --- a/net/http/http_cache_transaction.cc +++ b/net/http/http_cache_transaction.cc
@@ -1428,7 +1428,7 @@ // created a new ActiveEntry (new_entry_) to write to (and doomed the old // one). Now that the new entry has been created, start writing the response. - CHECK_EQ(result, OK); + DCHECK_EQ(result, OK); DCHECK_EQ(mode_, WRITE); DCHECK(new_entry_); DCHECK(response_.headers);
diff --git a/ppapi/c/private/ppb_pdf.h b/ppapi/c/private/ppb_pdf.h index e98003a..9afca9dd 100644 --- a/ppapi/c/private/ppb_pdf.h +++ b/ppapi/c/private/ppb_pdf.h
@@ -184,13 +184,13 @@ // support. void (*SetAccessibilityViewportInfo)( PP_Instance instance, - struct PP_PrivateAccessibilityViewportInfo* viewport_info); + const struct PP_PrivateAccessibilityViewportInfo* viewport_info); // Sends information about the PDF document to the renderer for accessibility // support. void (*SetAccessibilityDocInfo)( PP_Instance instance, - struct PP_PrivateAccessibilityDocInfo* doc_info); + const struct PP_PrivateAccessibilityDocInfo* doc_info); // Sends information about one page in a PDF document to the renderer for // accessibility support.
diff --git a/ppapi/cpp/private/pdf.cc b/ppapi/cpp/private/pdf.cc index 5910c2f..70d965b8b 100644 --- a/ppapi/cpp/private/pdf.cc +++ b/ppapi/cpp/private/pdf.cc
@@ -203,7 +203,7 @@ // static void PDF::SetAccessibilityViewportInfo( const InstanceHandle& instance, - PP_PrivateAccessibilityViewportInfo* viewport_info) { + const PP_PrivateAccessibilityViewportInfo* viewport_info) { if (has_interface<PPB_PDF>()) { get_interface<PPB_PDF>()->SetAccessibilityViewportInfo( instance.pp_instance(), viewport_info); @@ -211,8 +211,9 @@ } // static -void PDF::SetAccessibilityDocInfo(const InstanceHandle& instance, - PP_PrivateAccessibilityDocInfo* doc_info) { +void PDF::SetAccessibilityDocInfo( + const InstanceHandle& instance, + const PP_PrivateAccessibilityDocInfo* doc_info) { if (has_interface<PPB_PDF>()) { get_interface<PPB_PDF>()->SetAccessibilityDocInfo(instance.pp_instance(), doc_info);
diff --git a/ppapi/cpp/private/pdf.h b/ppapi/cpp/private/pdf.h index cec922b2..417016c 100644 --- a/ppapi/cpp/private/pdf.h +++ b/ppapi/cpp/private/pdf.h
@@ -86,10 +86,10 @@ int* snapshot_size_out); static void SetAccessibilityViewportInfo( const InstanceHandle& instance, - PP_PrivateAccessibilityViewportInfo* viewport_info); + const PP_PrivateAccessibilityViewportInfo* viewport_info); static void SetAccessibilityDocInfo( const InstanceHandle& instance, - PP_PrivateAccessibilityDocInfo* doc_info); + const PP_PrivateAccessibilityDocInfo* doc_info); static void SetAccessibilityPageInfo( const InstanceHandle& instance, const PP_PrivateAccessibilityPageInfo* page_info,
diff --git a/ppapi/proxy/pdf_resource.cc b/ppapi/proxy/pdf_resource.cc index 642276c..0dcaeaf 100644 --- a/ppapi/proxy/pdf_resource.cc +++ b/ppapi/proxy/pdf_resource.cc
@@ -9,6 +9,10 @@ #include <stdlib.h> #include <string.h> +#include <limits> +#include <utility> +#include <vector> + #include "base/command_line.h" #include "base/debug/crash_logging.h" #include "base/metrics/histogram.h" @@ -201,12 +205,12 @@ } void PDFResource::SetAccessibilityDocInfo( - PP_PrivateAccessibilityDocInfo* doc_info) { + const PP_PrivateAccessibilityDocInfo* doc_info) { Post(RENDERER, PpapiHostMsg_PDF_SetAccessibilityDocInfo(*doc_info)); } void PDFResource::SetAccessibilityViewportInfo( - PP_PrivateAccessibilityViewportInfo* viewport_info) { + const PP_PrivateAccessibilityViewportInfo* viewport_info) { Post(RENDERER, PpapiHostMsg_PDF_SetAccessibilityViewportInfo(*viewport_info)); }
diff --git a/ppapi/proxy/pdf_resource.h b/ppapi/proxy/pdf_resource.h index b371b3cd..8ae2bdb8 100644 --- a/ppapi/proxy/pdf_resource.h +++ b/ppapi/proxy/pdf_resource.h
@@ -5,6 +5,8 @@ #ifndef PPAPI_PROXY_PDF_RESOURCE_H_ #define PPAPI_PROXY_PDF_RESOURCE_H_ +#include <string> + #include "base/compiler_specific.h" #include "base/macros.h" #include "ppapi/c/pp_instance.h" @@ -57,9 +59,9 @@ const char** snapshot_data_out, int* snapshot_size_out) override; void SetAccessibilityViewportInfo( - PP_PrivateAccessibilityViewportInfo* viewport_info) override; + const PP_PrivateAccessibilityViewportInfo* viewport_info) override; void SetAccessibilityDocInfo( - PP_PrivateAccessibilityDocInfo* doc_info) override; + const PP_PrivateAccessibilityDocInfo* doc_info) override; void SetAccessibilityPageInfo( const PP_PrivateAccessibilityPageInfo* page_info, const PP_PrivateAccessibilityTextRunInfo text_runs[],
diff --git a/ppapi/thunk/ppb_pdf_api.h b/ppapi/thunk/ppb_pdf_api.h index b56ba890..dea3355 100644 --- a/ppapi/thunk/ppb_pdf_api.h +++ b/ppapi/thunk/ppb_pdf_api.h
@@ -37,9 +37,9 @@ const char** snapshot_data_out, int* snapshot_size_out) = 0; virtual void SetAccessibilityViewportInfo( - PP_PrivateAccessibilityViewportInfo* viewport_info) = 0; + const PP_PrivateAccessibilityViewportInfo* viewport_info) = 0; virtual void SetAccessibilityDocInfo( - PP_PrivateAccessibilityDocInfo* doc_info) = 0; + const PP_PrivateAccessibilityDocInfo* doc_info) = 0; virtual void SetAccessibilityPageInfo( const PP_PrivateAccessibilityPageInfo* page_info, const PP_PrivateAccessibilityTextRunInfo text_runs[],
diff --git a/ppapi/thunk/ppb_pdf_thunk.cc b/ppapi/thunk/ppb_pdf_thunk.cc index 19204b0..a66c774 100644 --- a/ppapi/thunk/ppb_pdf_thunk.cc +++ b/ppapi/thunk/ppb_pdf_thunk.cc
@@ -155,7 +155,7 @@ void SetAccessibilityViewportInfo( PP_Instance instance, - PP_PrivateAccessibilityViewportInfo* viewport_info) { + const PP_PrivateAccessibilityViewportInfo* viewport_info) { EnterInstanceAPI<PPB_PDF_API> enter(instance); if (enter.failed()) return; @@ -163,7 +163,7 @@ } void SetAccessibilityDocInfo(PP_Instance instance, - PP_PrivateAccessibilityDocInfo* doc_info) { + const PP_PrivateAccessibilityDocInfo* doc_info) { EnterInstanceAPI<PPB_PDF_API> enter(instance); if (enter.failed()) return;
diff --git a/services/device/device_service.cc b/services/device/device_service.cc index 0bbbf66..ec05ad41 100644 --- a/services/device/device_service.cc +++ b/services/device/device_service.cc
@@ -213,12 +213,12 @@ base::BindRepeating(&DeviceService::BindBluetoothSystemFactoryReceiver, base::Unretained(this))); registry_.AddInterface<mojom::MtpManager>(base::BindRepeating( - &DeviceService::BindMtpManagerRequest, base::Unretained(this))); + &DeviceService::BindMtpManagerReceiver, base::Unretained(this))); #endif #if defined(OS_LINUX) && defined(USE_UDEV) registry_.AddInterface<mojom::InputDeviceManager>(base::Bind( - &DeviceService::BindInputDeviceManagerRequest, base::Unretained(this))); + &DeviceService::BindInputDeviceManagerReceiver, base::Unretained(this))); #endif } @@ -260,19 +260,20 @@ BluetoothSystemFactory::CreateFactory(std::move(receiver)); } -void DeviceService::BindMtpManagerRequest(mojom::MtpManagerRequest request) { +void DeviceService::BindMtpManagerReceiver( + mojo::PendingReceiver<mojom::MtpManager> receiver) { if (!mtp_device_manager_) mtp_device_manager_ = MtpDeviceManager::Initialize(); - mtp_device_manager_->AddBinding(std::move(request)); + mtp_device_manager_->AddReceiver(std::move(receiver)); } #endif #if defined(OS_LINUX) && defined(USE_UDEV) -void DeviceService::BindInputDeviceManagerRequest( - mojom::InputDeviceManagerRequest request) { +void DeviceService::BindInputDeviceManagerReceiver( + mojo::PendingReceiver<mojom::InputDeviceManager> receiver) { file_task_runner_->PostTask( FROM_HERE, - base::BindOnce(&InputServiceLinux::BindRequest, std::move(request))); + base::BindOnce(&InputServiceLinux::BindReceiver, std::move(receiver))); } #endif
diff --git a/services/device/device_service.h b/services/device/device_service.h index 2969c91a..1cff86e4 100644 --- a/services/device/device_service.h +++ b/services/device/device_service.h
@@ -147,7 +147,8 @@ mojo::PendingReceiver<mojom::GeolocationControl> receiver); #if defined(OS_LINUX) && defined(USE_UDEV) - void BindInputDeviceManagerRequest(mojom::InputDeviceManagerRequest request); + void BindInputDeviceManagerReceiver( + mojo::PendingReceiver<mojom::InputDeviceManager> receiver); #endif #if !defined(OS_ANDROID) @@ -163,7 +164,8 @@ #if defined(OS_CHROMEOS) void BindBluetoothSystemFactoryReceiver( mojo::PendingReceiver<mojom::BluetoothSystemFactory> receiver); - void BindMtpManagerRequest(mojom::MtpManagerRequest request); + void BindMtpManagerReceiver( + mojo::PendingReceiver<mojom::MtpManager> receiver); #endif void BindPowerMonitorRequest(mojom::PowerMonitorRequest request);
diff --git a/services/device/hid/input_service_linux.cc b/services/device/hid/input_service_linux.cc index 3069aa5..3704e822 100644 --- a/services/device/hid/input_service_linux.cc +++ b/services/device/hid/input_service_linux.cc
@@ -174,8 +174,9 @@ } // static -void InputServiceLinux::BindRequest(mojom::InputDeviceManagerRequest request) { - GetInstance()->AddBinding(std::move(request)); +void InputServiceLinux::BindReceiver( + mojo::PendingReceiver<mojom::InputDeviceManager> receiver) { + GetInstance()->AddReceiver(std::move(receiver)); } // static @@ -199,8 +200,9 @@ g_input_service_linux = service.release(); } -void InputServiceLinux::AddBinding(mojom::InputDeviceManagerRequest request) { - bindings_.AddBinding(this, std::move(request)); +void InputServiceLinux::AddReceiver( + mojo::PendingReceiver<mojom::InputDeviceManager> receiver) { + receivers_.Add(this, std::move(receiver)); } void InputServiceLinux::GetDevicesAndSetClient(
diff --git a/services/device/hid/input_service_linux.h b/services/device/hid/input_service_linux.h index d1b526b..cfffc29d 100644 --- a/services/device/hid/input_service_linux.h +++ b/services/device/hid/input_service_linux.h
@@ -13,8 +13,9 @@ #include "base/compiler_specific.h" #include "base/macros.h" #include "base/threading/thread_checker.h" -#include "mojo/public/cpp/bindings/binding_set.h" #include "mojo/public/cpp/bindings/interface_ptr_set.h" +#include "mojo/public/cpp/bindings/pending_receiver.h" +#include "mojo/public/cpp/bindings/receiver_set.h" #include "services/device/public/mojom/input_service.mojom.h" namespace device { @@ -29,8 +30,9 @@ InputServiceLinux(); ~InputServiceLinux() override; - // Binds the |request| to an InputServiceLinux instance. - static void BindRequest(mojom::InputDeviceManagerRequest request); + // Binds the |receiver| to an InputServiceLinux instance. + static void BindReceiver( + mojo::PendingReceiver<mojom::InputDeviceManager> receiver); // Returns the InputServiceLinux instance for the current process. Creates one // if none has been set. @@ -46,7 +48,7 @@ // current process. |service| will never be deleted. static void SetForTesting(std::unique_ptr<InputServiceLinux> service); - void AddBinding(mojom::InputDeviceManagerRequest request); + void AddReceiver(mojo::PendingReceiver<mojom::InputDeviceManager> receiver); // mojom::InputDeviceManager implementation: void GetDevicesAndSetClient( @@ -64,7 +66,7 @@ private: base::ThreadChecker thread_checker_; - mojo::BindingSet<mojom::InputDeviceManager> bindings_; + mojo::ReceiverSet<mojom::InputDeviceManager> receivers_; mojo::AssociatedInterfacePtrSet<mojom::InputDeviceManagerClient> clients_; DISALLOW_COPY_AND_ASSIGN(InputServiceLinux);
diff --git a/services/device/media_transfer_protocol/mtp_device_manager.cc b/services/device/media_transfer_protocol/mtp_device_manager.cc index c832187..68e9a30e 100644 --- a/services/device/media_transfer_protocol/mtp_device_manager.cc +++ b/services/device/media_transfer_protocol/mtp_device_manager.cc
@@ -50,12 +50,13 @@ VLOG(1) << "MtpDeviceManager Shutdown completed"; } -void MtpDeviceManager::AddBinding(mojom::MtpManagerRequest request) { - bindings_.AddBinding(this, std::move(request)); +void MtpDeviceManager::AddReceiver( + mojo::PendingReceiver<mojom::MtpManager> receiver) { + receivers_.Add(this, std::move(receiver)); } void MtpDeviceManager::EnumerateStoragesAndSetClient( - mojom::MtpManagerClientAssociatedPtrInfo client, + mojo::PendingAssociatedRemote<mojom::MtpManagerClient> client, EnumerateStoragesAndSetClientCallback callback) { DCHECK(thread_checker_.CalledOnValidThread());
diff --git a/services/device/media_transfer_protocol/mtp_device_manager.h b/services/device/media_transfer_protocol/mtp_device_manager.h index 5d0525a..67991e5 100644 --- a/services/device/media_transfer_protocol/mtp_device_manager.h +++ b/services/device/media_transfer_protocol/mtp_device_manager.h
@@ -17,8 +17,10 @@ #include "base/memory/weak_ptr.h" #include "base/sequenced_task_runner.h" #include "base/threading/thread_checker.h" -#include "mojo/public/cpp/bindings/binding_set.h" -#include "mojo/public/cpp/bindings/interface_ptr_set.h" +#include "mojo/public/cpp/bindings/associated_remote.h" +#include "mojo/public/cpp/bindings/pending_associated_remote.h" +#include "mojo/public/cpp/bindings/pending_receiver.h" +#include "mojo/public/cpp/bindings/receiver_set.h" #include "services/device/media_transfer_protocol/media_transfer_protocol_daemon_client.h" #include "services/device/public/mojom/mtp_manager.mojom.h" @@ -39,11 +41,11 @@ MtpDeviceManager(); ~MtpDeviceManager() override; - void AddBinding(mojom::MtpManagerRequest request); + void AddReceiver(mojo::PendingReceiver<mojom::MtpManager> receiver); // Implements mojom::MtpManager. void EnumerateStoragesAndSetClient( - mojom::MtpManagerClientAssociatedPtrInfo client, + mojo::PendingAssociatedRemote<mojom::MtpManagerClient> client, EnumerateStoragesAndSetClientCallback callback) override; void GetStorageInfo(const std::string& storage_name, GetStorageInfoCallback callback) override; @@ -167,11 +169,11 @@ // DBusThreadManager to provide a bus in unit tests. scoped_refptr<dbus::Bus> const bus_; - mojo::BindingSet<mojom::MtpManager> bindings_; + mojo::ReceiverSet<mojom::MtpManager> receivers_; // MtpManager client who keeps tuned on attachment / detachment events. // Currently, storage_monitor::StorageMonitorCros is supposed to be the // only client. - mojom::MtpManagerClientAssociatedPtr client_; + mojo::AssociatedRemote<mojom::MtpManagerClient> client_; // Map to keep track of attached storages by name. base::flat_map<std::string, mojom::MtpStorageInfo> storage_info_map_;
diff --git a/services/device/public/mojom/mtp_manager.mojom b/services/device/public/mojom/mtp_manager.mojom index f3937fd..6bbcd0f 100644 --- a/services/device/public/mojom/mtp_manager.mojom +++ b/services/device/public/mojom/mtp_manager.mojom
@@ -20,8 +20,9 @@ // client for incoming storage change events. It is designed to reduce // async calls and eliminate a potential race condition between // the client being set and storage updates being made. - EnumerateStoragesAndSetClient(associated MtpManagerClient client) => - (array<MtpStorageInfo> storages); + EnumerateStoragesAndSetClient( + pending_associated_remote<MtpManagerClient> client) => + (array<MtpStorageInfo> storages); // Gets storage metadata for |storage_name|. GetStorageInfo(string storage_name) =>
diff --git a/services/tracing/perfetto/perfetto_service.cc b/services/tracing/perfetto/perfetto_service.cc index 995c0342..a6c0988 100644 --- a/services/tracing/perfetto/perfetto_service.cc +++ b/services/tracing/perfetto/perfetto_service.cc
@@ -78,7 +78,7 @@ } void PerfettoService::ConnectToProducerHost( - mojom::ProducerClientPtr producer_client, + mojo::PendingRemote<mojom::ProducerClient> producer_client, mojom::ProducerHostRequest producer_host_request) { auto new_producer = std::make_unique<ProducerHost>(); uint32_t producer_pid = receivers_.current_context();
diff --git a/services/tracing/perfetto/perfetto_service.h b/services/tracing/perfetto/perfetto_service.h index cd997d07..bed03ad 100644 --- a/services/tracing/perfetto/perfetto_service.h +++ b/services/tracing/perfetto/perfetto_service.h
@@ -40,8 +40,9 @@ uint32_t pid); // mojom::PerfettoService implementation. - void ConnectToProducerHost(mojom::ProducerClientPtr producer_client, - mojom::ProducerHostRequest producer_host) override; + void ConnectToProducerHost( + mojo::PendingRemote<mojom::ProducerClient> producer_client, + mojom::ProducerHostRequest producer_host) override; perfetto::TracingService* GetService() const;
diff --git a/services/tracing/perfetto/producer_host.cc b/services/tracing/perfetto/producer_host.cc index 3f8bafe..268042a 100644 --- a/services/tracing/perfetto/producer_host.cc +++ b/services/tracing/perfetto/producer_host.cc
@@ -36,13 +36,14 @@ producer_endpoint_.reset(); } -void ProducerHost::Initialize(mojom::ProducerClientPtr producer_client, - perfetto::TracingService* service, - const std::string& name) { +void ProducerHost::Initialize( + mojo::PendingRemote<mojom::ProducerClient> producer_client, + perfetto::TracingService* service, + const std::string& name) { DCHECK(service); DCHECK(!producer_endpoint_); - producer_client_ = std::move(producer_client); + producer_client_.Bind(std::move(producer_client)); // Attempt to parse the PID out of the producer name. // If the Producer is in-process, we:
diff --git a/services/tracing/perfetto/producer_host.h b/services/tracing/perfetto/producer_host.h index 9d531482..f1fcaaa 100644 --- a/services/tracing/perfetto/producer_host.h +++ b/services/tracing/perfetto/producer_host.h
@@ -11,6 +11,7 @@ #include <vector> #include "base/macros.h" +#include "mojo/public/cpp/bindings/remote.h" #include "services/tracing/perfetto/producer_host.h" #include "services/tracing/public/mojom/perfetto_service.mojom.h" #include "third_party/perfetto/include/perfetto/ext/tracing/core/producer.h" @@ -40,7 +41,7 @@ // Called by the ProducerService to register the // Producer with Perfetto and connect to the // corresponding remote ProducerClient. - void Initialize(mojom::ProducerClientPtr producer_client, + void Initialize(mojo::PendingRemote<mojom::ProducerClient> producer_client, perfetto::TracingService* service, const std::string& name); @@ -88,7 +89,7 @@ on_commit_callback_for_testing_; private: - mojom::ProducerClientPtr producer_client_; + mojo::Remote<mojom::ProducerClient> producer_client_; bool is_in_process_ = false; protected:
diff --git a/services/tracing/perfetto/test_utils.cc b/services/tracing/perfetto/test_utils.cc index 604022c..8ad1e60 100644 --- a/services/tracing/perfetto/test_utils.cc +++ b/services/tracing/perfetto/test_utils.cc
@@ -316,12 +316,12 @@ : producer_name_(producer_name), datasource_registered_callback_( std::move(datasource_registered_callback)) { - mojom::ProducerClientPtr client; + mojo::PendingRemote<mojom::ProducerClient> client; mojo::PendingRemote<mojom::ProducerHost> host_remote; - auto client_request = mojo::MakeRequest(&client); + auto client_receiver = client.InitWithNewPipeAndPassReceiver(); Initialize(std::move(client), service, producer_name_); receiver_.Bind(host_remote.InitWithNewPipeAndPassReceiver()); - producer_client->BindClientAndHostPipesForTesting(std::move(client_request), + producer_client->BindClientAndHostPipesForTesting(std::move(client_receiver), std::move(host_remote)); producer_client->SetupDataSource(data_source_name); }
diff --git a/services/tracing/public/cpp/perfetto/producer_client.cc b/services/tracing/public/cpp/perfetto/producer_client.cc index 91beb4d..fdb2858d 100644 --- a/services/tracing/public/cpp/perfetto/producer_client.cc +++ b/services/tracing/public/cpp/perfetto/producer_client.cc
@@ -32,15 +32,15 @@ void ProducerClient::Connect( mojo::PendingRemote<mojom::PerfettoService> perfetto_service) { - mojom::ProducerClientPtr client; - auto client_request = mojo::MakeRequest(&client); + mojo::PendingRemote<mojom::ProducerClient> client; + auto client_receiver = client.InitWithNewPipeAndPassReceiver(); mojom::ProducerHostPtrInfo host_info; mojo::Remote<mojom::PerfettoService>(std::move(perfetto_service)) ->ConnectToProducerHost(std::move(client), mojo::MakeRequest(&host_info)); task_runner()->GetOrCreateTaskRunner()->PostTask( FROM_HERE, base::BindOnce(&ProducerClient::BindClientAndHostPipesOnSequence, - base::Unretained(this), std::move(client_request), + base::Unretained(this), std::move(client_receiver), std::move(host_info))); }
diff --git a/services/tracing/public/mojom/perfetto_service.mojom b/services/tracing/public/mojom/perfetto_service.mojom index ab1da59..c987b7af 100644 --- a/services/tracing/public/mojom/perfetto_service.mojom +++ b/services/tracing/public/mojom/perfetto_service.mojom
@@ -139,7 +139,7 @@ // tracing system. A client that wishes to provide tracing data when requested, // should implement ProducerClient for callbacks and pass along. interface PerfettoService { - ConnectToProducerHost(ProducerClient producer_client, + ConnectToProducerHost(pending_remote<ProducerClient> producer_client, ProducerHost& producer_host); };
diff --git a/testing/buildbot/filters/bfcache.chrome_public_test_apk.filter b/testing/buildbot/filters/bfcache.chrome_public_test_apk.filter index 2d8f82a..23cc1c6 100644 --- a/testing/buildbot/filters/bfcache.chrome_public_test_apk.filter +++ b/testing/buildbot/filters/bfcache.chrome_public_test_apk.filter
@@ -1 +1,8 @@ # These tests currently fail when run with --enable-features=BackForwardCache + +# Not a real problem. The bfcache_chrome_public_test_apk bot adds the +# --enable-features=BackForwardCache switch, which increases the number of +# features by one and make those tests to fail: +-org.chromium.chrome.browser.FeaturesAnnotationsTest.testFeaturesAddToExistingFlags +-org.chromium.chrome.browser.FeaturesAnnotationsTest.testFeaturesSetExistingFlags +-org.chromium.chrome.browser.FeaturesAnnotationsTest.testFeaturesDoNotRemoveExistingFlags
diff --git a/testing/buildbot/filters/bfcache.content_browsertests.filter b/testing/buildbot/filters/bfcache.content_browsertests.filter index aa96d3b3..9921976 100644 --- a/testing/buildbot/filters/bfcache.content_browsertests.filter +++ b/testing/buildbot/filters/bfcache.content_browsertests.filter
@@ -72,3 +72,12 @@ # https://crbug.com/1003744 -NavigationBaseBrowserTest.BackForwardInOldDocumentCancelPendingNavigation/1 -NavigationBaseBrowserTest.BackForwardInOldDocumentCancelPendingNavigation/0 + +# The BackForwardCache evicts page asynchronously. The test expects the +# RenderFrameHostImpl to be removed immediately. +-SitePerProcessBrowserTest.RenderViewHostIsNotReusedAfterDelayedSwapOutACK + +# Android-only test. Timeout. +# https://crbug.com/1004786 +-SitePerProcessBrowserTest.TestChildProcessImportance +
diff --git a/testing/variations/fieldtrial_testing_config.json b/testing/variations/fieldtrial_testing_config.json index 1d9af21..f266b50 100644 --- a/testing/variations/fieldtrial_testing_config.json +++ b/testing/variations/fieldtrial_testing_config.json
@@ -763,6 +763,24 @@ ] } ], + "AutofillEnableToolbarStatusChip": [ + { + "platforms": [ + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "AutofillCreditCardUploadFeedback", + "AutofillEnableToolbarStatusChip" + ] + } + ] + } + ], "AutofillFieldMetadata": [ { "platforms": [ @@ -5250,6 +5268,27 @@ ] } ], + "SameSiteCookieMessages": [ + { + "platforms": [ + "android", + "android_webview", + "chromeos", + "ios", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "EnabledLaunch", + "enable_features": [ + "CookieDeprecationMessages" + ] + } + ] + } + ], "SchedulerConfiguration": [ { "platforms": [
diff --git a/third_party/blink/public/BUILD.gn b/third_party/blink/public/BUILD.gn index 6ae48b6..b354871 100644 --- a/third_party/blink/public/BUILD.gn +++ b/third_party/blink/public/BUILD.gn
@@ -551,6 +551,7 @@ "//services/network/public/mojom", "//third_party/blink/renderer/platform/wtf:wtf", "//third_party/webrtc/api:libjingle_peerconnection_api", + "//third_party/webrtc/api:media_stream_interface", "//third_party/webrtc/api:rtc_error", "//third_party/webrtc/api:rtc_stats_api", "//third_party/webrtc/api:rtp_parameters",
diff --git a/third_party/blink/public/mojom/use_counter/css_property_id.mojom b/third_party/blink/public/mojom/use_counter/css_property_id.mojom index 04ffb17..2d75ffa 100644 --- a/third_party/blink/public/mojom/use_counter/css_property_id.mojom +++ b/third_party/blink/public/mojom/use_counter/css_property_id.mojom
@@ -689,6 +689,7 @@ kOverscrollBehaviorInline = 644, kOverscrollBehaviorBlock = 645, kContentSize = 646, + kFontOpticalSizing = 647 // 1. Add new features above this line (don't change the assigned numbers of // the existing items). // 2. Run the update_use_counter_css.py script in
diff --git a/third_party/blink/public/platform/web_runtime_features.h b/third_party/blink/public/platform/web_runtime_features.h index dbe2e555..c559be49 100644 --- a/third_party/blink/public/platform/web_runtime_features.h +++ b/third_party/blink/public/platform/web_runtime_features.h
@@ -247,6 +247,7 @@ BLINK_PLATFORM_EXPORT static void EnableBackForwardCache(bool); BLINK_PLATFORM_EXPORT static void EnableSurfaceEmbeddingFeatures(bool); + BLINK_PLATFORM_EXPORT static void EnableAcceleratedSmallCanvases(bool); private: WebRuntimeFeatures();
diff --git a/third_party/blink/renderer/core/css/binary_data_font_face_source.cc b/third_party/blink/renderer/core/css/binary_data_font_face_source.cc index f73ca24..025157d 100644 --- a/third_party/blink/renderer/core/css/binary_data_font_face_source.cc +++ b/third_party/blink/renderer/core/css/binary_data_font_face_source.cc
@@ -31,8 +31,8 @@ font_description.IsSyntheticBold(), font_description.IsSyntheticItalic(), font_description.GetFontSelectionRequest(), - font_selection_capabilities, font_description.Orientation(), - font_description.VariationSettings()), + font_selection_capabilities, font_description.FontOpticalSizing(), + font_description.Orientation(), font_description.VariationSettings()), CustomFontData::Create()); }
diff --git a/third_party/blink/renderer/core/css/css_computed_style_declaration.cc b/third_party/blink/renderer/core/css/css_computed_style_declaration.cc index 9a26f1e..b700d457 100644 --- a/third_party/blink/renderer/core/css/css_computed_style_declaration.cc +++ b/third_party/blink/renderer/core/css/css_computed_style_declaration.cc
@@ -85,34 +85,35 @@ CSSPropertyID::kDirection, CSSPropertyID::kDisplay, CSSPropertyID::kEmptyCells, CSSPropertyID::kFloat, CSSPropertyID::kFontFamily, CSSPropertyID::kFontKerning, - CSSPropertyID::kFontSize, CSSPropertyID::kFontSizeAdjust, - CSSPropertyID::kFontStretch, CSSPropertyID::kFontStyle, - CSSPropertyID::kFontVariant, CSSPropertyID::kFontVariantLigatures, - CSSPropertyID::kFontVariantCaps, CSSPropertyID::kFontVariantNumeric, - CSSPropertyID::kFontVariantEastAsian, CSSPropertyID::kFontWeight, - CSSPropertyID::kHeight, CSSPropertyID::kImageOrientation, - CSSPropertyID::kImageRendering, CSSPropertyID::kIsolation, - CSSPropertyID::kJustifyItems, CSSPropertyID::kJustifySelf, - CSSPropertyID::kLeft, CSSPropertyID::kLetterSpacing, - CSSPropertyID::kLineHeight, CSSPropertyID::kLineHeightStep, - CSSPropertyID::kListStyleImage, CSSPropertyID::kListStylePosition, - CSSPropertyID::kListStyleType, CSSPropertyID::kMarginBottom, - CSSPropertyID::kMarginLeft, CSSPropertyID::kMarginRight, - CSSPropertyID::kMarginTop, CSSPropertyID::kMaxHeight, - CSSPropertyID::kMaxWidth, CSSPropertyID::kMinHeight, - CSSPropertyID::kMinWidth, CSSPropertyID::kMixBlendMode, - CSSPropertyID::kObjectFit, CSSPropertyID::kObjectPosition, - CSSPropertyID::kOffsetAnchor, CSSPropertyID::kOffsetDistance, - CSSPropertyID::kOffsetPath, CSSPropertyID::kOffsetPosition, - CSSPropertyID::kOffsetRotate, CSSPropertyID::kOpacity, - CSSPropertyID::kOrphans, CSSPropertyID::kOutlineColor, - CSSPropertyID::kOutlineOffset, CSSPropertyID::kOutlineStyle, - CSSPropertyID::kOutlineWidth, CSSPropertyID::kOverflowAnchor, - CSSPropertyID::kOverflowWrap, CSSPropertyID::kOverflowX, - CSSPropertyID::kOverflowY, CSSPropertyID::kPaddingBottom, - CSSPropertyID::kPaddingLeft, CSSPropertyID::kPaddingRight, - CSSPropertyID::kPaddingTop, CSSPropertyID::kPointerEvents, - CSSPropertyID::kPosition, CSSPropertyID::kResize, CSSPropertyID::kRight, + CSSPropertyID::kFontOpticalSizing, CSSPropertyID::kFontSize, + CSSPropertyID::kFontSizeAdjust, CSSPropertyID::kFontStretch, + CSSPropertyID::kFontStyle, CSSPropertyID::kFontVariant, + CSSPropertyID::kFontVariantLigatures, CSSPropertyID::kFontVariantCaps, + CSSPropertyID::kFontVariantNumeric, CSSPropertyID::kFontVariantEastAsian, + CSSPropertyID::kFontWeight, CSSPropertyID::kHeight, + CSSPropertyID::kImageOrientation, CSSPropertyID::kImageRendering, + CSSPropertyID::kIsolation, CSSPropertyID::kJustifyItems, + CSSPropertyID::kJustifySelf, CSSPropertyID::kLeft, + CSSPropertyID::kLetterSpacing, CSSPropertyID::kLineHeight, + CSSPropertyID::kLineHeightStep, CSSPropertyID::kListStyleImage, + CSSPropertyID::kListStylePosition, CSSPropertyID::kListStyleType, + CSSPropertyID::kMarginBottom, CSSPropertyID::kMarginLeft, + CSSPropertyID::kMarginRight, CSSPropertyID::kMarginTop, + CSSPropertyID::kMaxHeight, CSSPropertyID::kMaxWidth, + CSSPropertyID::kMinHeight, CSSPropertyID::kMinWidth, + CSSPropertyID::kMixBlendMode, CSSPropertyID::kObjectFit, + CSSPropertyID::kObjectPosition, CSSPropertyID::kOffsetAnchor, + CSSPropertyID::kOffsetDistance, CSSPropertyID::kOffsetPath, + CSSPropertyID::kOffsetPosition, CSSPropertyID::kOffsetRotate, + CSSPropertyID::kOpacity, CSSPropertyID::kOrphans, + CSSPropertyID::kOutlineColor, CSSPropertyID::kOutlineOffset, + CSSPropertyID::kOutlineStyle, CSSPropertyID::kOutlineWidth, + CSSPropertyID::kOverflowAnchor, CSSPropertyID::kOverflowWrap, + CSSPropertyID::kOverflowX, CSSPropertyID::kOverflowY, + CSSPropertyID::kPaddingBottom, CSSPropertyID::kPaddingLeft, + CSSPropertyID::kPaddingRight, CSSPropertyID::kPaddingTop, + CSSPropertyID::kPointerEvents, CSSPropertyID::kPosition, + CSSPropertyID::kResize, CSSPropertyID::kRight, CSSPropertyID::kScrollBehavior, CSSPropertyID::kScrollCustomization, CSSPropertyID::kSpeak, CSSPropertyID::kTableLayout, CSSPropertyID::kTabSize, CSSPropertyID::kTextAlign, CSSPropertyID::kTextAlignLast,
diff --git a/third_party/blink/renderer/core/css/css_font_face_source_test.cc b/third_party/blink/renderer/core/css/css_font_face_source_test.cc index 9ef1fca..029b8ff9 100644 --- a/third_party/blink/renderer/core/css/css_font_face_source_test.cc +++ b/third_party/blink/renderer/core/css/css_font_face_source_test.cc
@@ -51,10 +51,10 @@ TEST(CSSFontFaceSourceTest, HashCollision) { DummyFontFaceSource font_face_source; // Even if the hash value collide, fontface cache should return different - // value for different fonts. - EXPECT_EQ(SimulateHashCalculation(6009), SimulateHashCalculation(8634)); - EXPECT_NE(font_face_source.GetFontDataForSize(6009), - font_face_source.GetFontDataForSize(8634)); + // value for different fonts, values determined experimentally. + EXPECT_EQ(SimulateHashCalculation(10280), SimulateHashCalculation(9875)); + EXPECT_NE(font_face_source.GetFontDataForSize(10280), + font_face_source.GetFontDataForSize(9875)); } // Exercises the size font_data_table_ assertions in CSSFontFaceSource.
diff --git a/third_party/blink/renderer/core/css/css_primitive_value_mappings.h b/third_party/blink/renderer/core/css/css_primitive_value_mappings.h index 755063b..e49b90b 100644 --- a/third_party/blink/renderer/core/css/css_primitive_value_mappings.h +++ b/third_party/blink/renderer/core/css/css_primitive_value_mappings.h
@@ -754,6 +754,37 @@ } template <> +inline CSSIdentifierValue::CSSIdentifierValue(OpticalSizing optical_sizing) + : CSSValue(kIdentifierClass) { + switch (optical_sizing) { + case kAutoOpticalSizing: + value_id_ = CSSValueID::kAuto; + return; + case kNoneOpticalSizing: + value_id_ = CSSValueID::kNone; + return; + } + + NOTREACHED(); + value_id_ = CSSValueID::kAuto; +} + +template <> +inline OpticalSizing CSSIdentifierValue::ConvertTo() const { + switch (value_id_) { + case CSSValueID::kAuto: + return kAutoOpticalSizing; + case CSSValueID::kNone: + return kNoneOpticalSizing; + default: + break; + } + + NOTREACHED(); + return kAutoOpticalSizing; +} + +template <> inline CSSIdentifierValue::CSSIdentifierValue(EFillSizeType fill_size) : CSSValue(kIdentifierClass) { switch (fill_size) {
diff --git a/third_party/blink/renderer/core/css/css_properties.json5 b/third_party/blink/renderer/core/css/css_properties.json5 index 69af89c..5fbd869 100644 --- a/third_party/blink/renderer/core/css/css_properties.json5 +++ b/third_party/blink/renderer/core/css/css_properties.json5
@@ -636,6 +636,17 @@ typedom_types: ["Keyword"], }, { + name: "font-optical-sizing", + property_methods: ["CSSValueFromComputedStyleInternal"], + inherited: true, + font: true, + name_for_methods: "FontOpticalSizing", + type_name: "OpticalSizing", + priority: "High", + keywords: ["auto", "none"], + typedom_types: ["Keyword"] + }, + { name: "font-size", property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"], interpolable: true,
diff --git a/third_party/blink/renderer/core/css/parser/css_parser_fast_paths.cc b/third_party/blink/renderer/core/css/parser/css_parser_fast_paths.cc index 5578a01c..eecdcb0 100644 --- a/third_party/blink/renderer/core/css/parser/css_parser_fast_paths.cc +++ b/third_party/blink/renderer/core/css/parser/css_parser_fast_paths.cc
@@ -886,6 +886,8 @@ case CSSPropertyID::kFontKerning: return value_id == CSSValueID::kAuto || value_id == CSSValueID::kNormal || value_id == CSSValueID::kNone; + case CSSPropertyID::kFontOpticalSizing: + return value_id == CSSValueID::kAuto || value_id == CSSValueID::kNone; case CSSPropertyID::kWebkitFontSmoothing: return value_id == CSSValueID::kAuto || value_id == CSSValueID::kNone || value_id == CSSValueID::kAntialiased || @@ -1061,6 +1063,7 @@ case CSSPropertyID::kFlexDirection: case CSSPropertyID::kFlexWrap: case CSSPropertyID::kFontKerning: + case CSSPropertyID::kFontOpticalSizing: case CSSPropertyID::kWebkitFontSmoothing: case CSSPropertyID::kLineBreak: case CSSPropertyID::kWebkitLineBreak:
diff --git a/third_party/blink/renderer/core/css/properties/longhands/longhands_custom.cc b/third_party/blink/renderer/core/css/properties/longhands/longhands_custom.cc index 6dc426b..4f40920 100644 --- a/third_party/blink/renderer/core/css/properties/longhands/longhands_custom.cc +++ b/third_party/blink/renderer/core/css/properties/longhands/longhands_custom.cc
@@ -2560,6 +2560,15 @@ return CSSIdentifierValue::Create(style.GetFontDescription().GetKerning()); } +const CSSValue* FontOpticalSizing::CSSValueFromComputedStyleInternal( + const ComputedStyle& style, + const SVGComputedStyle&, + const LayoutObject*, + bool allow_visited_style) const { + return CSSIdentifierValue::Create( + style.GetFontDescription().FontOpticalSizing()); +} + const CSSValue* FontSizeAdjust::ParseSingleValue( CSSParserTokenRange& range, const CSSParserContext& context,
diff --git a/third_party/blink/renderer/core/css/remote_font_face_source.cc b/third_party/blink/renderer/core/css/remote_font_face_source.cc index 681af8a..34bc02d 100644 --- a/third_party/blink/renderer/core/css/remote_font_face_source.cc +++ b/third_party/blink/renderer/core/css/remote_font_face_source.cc
@@ -252,8 +252,8 @@ font_description.IsSyntheticBold(), font_description.IsSyntheticItalic(), font_description.GetFontSelectionRequest(), - font_selection_capabilities, font_description.Orientation(), - font_description.VariationSettings()), + font_selection_capabilities, font_description.FontOpticalSizing(), + font_description.Orientation(), font_description.VariationSettings()), CustomFontData::Create()); }
diff --git a/third_party/blink/renderer/core/css/resolver/css_property_priority.h b/third_party/blink/renderer/core/css/resolver/css_property_priority.h index 9664c0f77..a77173ac 100644 --- a/third_party/blink/renderer/core/css/resolver/css_property_priority.h +++ b/third_party/blink/renderer/core/css/resolver/css_property_priority.h
@@ -87,7 +87,7 @@ template <> inline CSSPropertyID CSSPropertyPriorityData<kHighPropertyPriority>::Last() { static_assert(static_cast<int>(CSSPropertyID::kZoom) == - static_cast<int>(CSSPropertyID::kColor) + 26, + static_cast<int>(CSSPropertyID::kColor) + 27, "CSSPropertyID::kZoom should be the end of the high priority " "property range"); static_assert(static_cast<int>(CSSPropertyID::kWritingMode) ==
diff --git a/third_party/blink/renderer/core/css/resolver/font_builder.cc b/third_party/blink/renderer/core/css/resolver/font_builder.cc index 4e22eb67..f71b93b 100644 --- a/third_party/blink/renderer/core/css/resolver/font_builder.cc +++ b/third_party/blink/renderer/core/css/resolver/font_builder.cc
@@ -182,6 +182,12 @@ font_description_.SetKerning(kerning); } +void FontBuilder::SetFontOpticalSizing(OpticalSizing font_optical_sizing) { + Set(PropertySetFlag::kFontOpticalSizing); + + font_description_.SetFontOpticalSizing(font_optical_sizing); +} + void FontBuilder::SetFontSmoothing(FontSmoothingMode foont_smoothing_mode) { Set(PropertySetFlag::kFontSmoothing); @@ -380,6 +386,8 @@ description.SetTextRendering(font_description_.TextRendering()); if (IsSet(PropertySetFlag::kKerning)) description.SetKerning(font_description_.GetKerning()); + if (IsSet(PropertySetFlag::kFontOpticalSizing)) + description.SetFontOpticalSizing(font_description_.FontOpticalSizing()); if (IsSet(PropertySetFlag::kFontSmoothing)) description.SetFontSmoothing(font_description_.FontSmoothing()); if (IsSet(PropertySetFlag::kTextOrientation) ||
diff --git a/third_party/blink/renderer/core/css/resolver/font_builder.h b/third_party/blink/renderer/core/css/resolver/font_builder.h index ddb0bb87..2021eb1 100644 --- a/third_party/blink/renderer/core/css/resolver/font_builder.h +++ b/third_party/blink/renderer/core/css/resolver/font_builder.h
@@ -72,6 +72,7 @@ void SetVariantNumeric(const FontVariantNumeric&); void SetTextRendering(TextRenderingMode); void SetKerning(FontDescription::Kerning); + void SetFontOpticalSizing(OpticalSizing); void SetFontSmoothing(FontSmoothingMode); void SetVariationSettings(scoped_refptr<FontVariationSettings>); @@ -114,6 +115,7 @@ static FontDescription::Kerning InitialKerning() { return FontDescription::kAutoKerning; } + static OpticalSizing InitialFontOpticalSizing() { return kAutoOpticalSizing; } static FontSmoothingMode InitialFontSmoothing() { return kAutoSmoothing; } static FontSelectionValue InitialStretch() { return NormalWidthValue(); } @@ -156,6 +158,7 @@ kVariationSettings, kTextRendering, kKerning, + kFontOpticalSizing, kFontSmoothing, kEffectiveZoom,
diff --git a/third_party/blink/renderer/core/css/resolver/font_builder_test.cc b/third_party/blink/renderer/core/css/resolver/font_builder_test.cc index a5fc0b5..076628b 100644 --- a/third_party/blink/renderer/core/css/resolver/font_builder_test.cc +++ b/third_party/blink/renderer/core/css/resolver/font_builder_test.cc
@@ -167,6 +167,13 @@ b.SetKerning(FontDescription::kNoneKerning); } +static void FontOpticalSizingBase(FontDescription& d) { + d.SetFontOpticalSizing(kAutoOpticalSizing); +} +static void FontOpticalSizingValue(FontBuilder& b) { + b.SetFontOpticalSizing(kNoneOpticalSizing); +} + static void FontFontSmoothingBase(FontDescription& d) { d.SetFontSmoothing(kAntialiased); } @@ -207,6 +214,7 @@ FunctionPair(FontKerningBase, FontKerningValue), FunctionPair(FontFontSmoothingBase, FontFontSmoothingValue), FunctionPair(FontSizeBase, FontSizeValue), - FunctionPair(FontScriptBase, FontScriptValue))); + FunctionPair(FontScriptBase, FontScriptValue), + FunctionPair(FontOpticalSizingBase, FontOpticalSizingValue))); } // namespace blink
diff --git a/third_party/blink/renderer/core/css/resolver/style_resolver.cc b/third_party/blink/renderer/core/css/resolver/style_resolver.cc index dead088..d98f2b106 100644 --- a/third_party/blink/renderer/core/css/resolver/style_resolver.cc +++ b/third_party/blink/renderer/core/css/resolver/style_resolver.cc
@@ -1402,6 +1402,7 @@ case CSSPropertyID::kFontFamily: case CSSPropertyID::kFontFeatureSettings: case CSSPropertyID::kFontKerning: + case CSSPropertyID::kFontOpticalSizing: case CSSPropertyID::kFontSize: case CSSPropertyID::kFontSizeAdjust: case CSSPropertyID::kFontStretch:
diff --git a/third_party/blink/renderer/core/frame/local_frame.cc b/third_party/blink/renderer/core/frame/local_frame.cc index 1dc588e0..c40a780 100644 --- a/third_party/blink/renderer/core/frame/local_frame.cc +++ b/third_party/blink/renderer/core/frame/local_frame.cc
@@ -497,55 +497,57 @@ } void LocalFrame::DidFreeze() { - if (GetDocument()) { - if (GetDocument()->GetResourceCoordinator() && - !RuntimeEnabledFeatures::BackForwardCacheEnabled()) { - // TODO(yuzus): Skip this block if DidFreeze is triggered by bfcache. + DCHECK(IsAttached()); + auto* document_resource_coordinator = GetDocument()->GetResourceCoordinator(); + if (document_resource_coordinator && + !RuntimeEnabledFeatures::BackForwardCacheEnabled()) { + // TODO(yuzus): Skip this block if DidFreeze is triggered by bfcache. - // Determine if there is a beforeunload handler by dispatching a - // beforeunload that will *not* launch a user dialog. If - // |proceed| is false then there is a non-empty beforeunload - // handler indicating potentially unsaved user state. - bool unused_did_allow_navigation = false; - bool proceed = GetDocument()->DispatchBeforeUnloadEvent( - nullptr, false /* is_reload */, unused_did_allow_navigation); - // Running the beforeunload event may invalidate the - // DocumentResourceCoordinator. Because of that, it can't be stored in a - // local variable that is reused throughout the method. - // https://crbug.com/991380. - auto* document_resource_coordinator = - GetDocument()->GetResourceCoordinator(); - if (document_resource_coordinator) - document_resource_coordinator->SetHasNonEmptyBeforeUnload(!proceed); - } + // Determine if there is a beforeunload handler by dispatching a + // beforeunload that will *not* launch a user dialog. If + // |proceed| is false then there is a non-empty beforeunload + // handler indicating potentially unsaved user state. + bool unused_did_allow_navigation = false; + bool proceed = GetDocument()->DispatchBeforeUnloadEvent( + nullptr, false /* is_reload */, unused_did_allow_navigation); - GetDocument()->DispatchFreezeEvent(); - // TODO(fmeawad): Move the following logic to the page once we have a - // PageResourceCoordinator in Blink. http://crbug.com/838415 - if (auto* document_resource_coordinator = - GetDocument()->GetResourceCoordinator()) { - document_resource_coordinator->SetLifecycleState( - resource_coordinator::mojom::LifecycleState::kFrozen); - } + // DispatchBeforeUnloadEvent dispatches JS events, which may detatch |this|. + if (!IsAttached()) + return; + document_resource_coordinator->SetHasNonEmptyBeforeUnload(!proceed); + } + + GetDocument()->DispatchFreezeEvent(); + // DispatchFreezeEvent dispatches JS events, which may detatch |this|. + if (!IsAttached()) + return; + // TODO(fmeawad): Move the following logic to the page once we have a + // PageResourceCoordinator in Blink. http://crbug.com/838415 + if (document_resource_coordinator) { + document_resource_coordinator->SetLifecycleState( + resource_coordinator::mojom::LifecycleState::kFrozen); } } void LocalFrame::DidResume() { - if (GetDocument()) { - const base::TimeTicks resume_event_start = base::TimeTicks::Now(); - GetDocument()->DispatchEvent(*Event::Create(event_type_names::kResume)); - const base::TimeTicks resume_event_end = base::TimeTicks::Now(); - DEFINE_STATIC_LOCAL( - CustomCountHistogram, resume_histogram, - ("DocumentEventTiming.ResumeDuration", 0, 10000000, 50)); - resume_histogram.CountMicroseconds(resume_event_end - resume_event_start); - // TODO(fmeawad): Move the following logic to the page once we have a - // PageResourceCoordinator in Blink - if (auto* document_resource_coordinator = - GetDocument()->GetResourceCoordinator()) { - document_resource_coordinator->SetLifecycleState( - resource_coordinator::mojom::LifecycleState::kRunning); - } + DCHECK(IsAttached()); + const base::TimeTicks resume_event_start = base::TimeTicks::Now(); + GetDocument()->DispatchEvent(*Event::Create(event_type_names::kResume)); + const base::TimeTicks resume_event_end = base::TimeTicks::Now(); + DEFINE_STATIC_LOCAL(CustomCountHistogram, resume_histogram, + ("DocumentEventTiming.ResumeDuration", 0, 10000000, 50)); + resume_histogram.CountMicroseconds(resume_event_end - resume_event_start); + + // DispatchEvent dispatchs JS events, which may detatch |this|. + if (!IsAttached()) + return; + + // TODO(fmeawad): Move the following logic to the page once we have a + // PageResourceCoordinator in Blink + if (auto* document_resource_coordinator = + GetDocument()->GetResourceCoordinator()) { + document_resource_coordinator->SetLifecycleState( + resource_coordinator::mojom::LifecycleState::kRunning); } } @@ -1700,19 +1702,15 @@ } void LocalFrame::PauseContext() { - if (Document* document = GetDocument()) { - document->Fetcher()->SetDefersLoading(true); - document->SetLifecycleState(lifecycle_state_); - } + GetDocument()->Fetcher()->SetDefersLoading(true); + GetDocument()->SetLifecycleState(lifecycle_state_); Loader().SetDefersLoading(true); GetFrameScheduler()->SetPaused(true); } void LocalFrame::UnpauseContext() { - if (Document* document = GetDocument()) { - document->Fetcher()->SetDefersLoading(false); - document->SetLifecycleState(mojom::FrameLifecycleState::kRunning); - } + GetDocument()->Fetcher()->SetDefersLoading(false); + GetDocument()->SetLifecycleState(mojom::FrameLifecycleState::kRunning); Loader().SetDefersLoading(false); GetFrameScheduler()->SetPaused(false); } @@ -1750,7 +1748,7 @@ if (freeze) { if (lifecycle_state_ != mojom::FrameLifecycleState::kPaused) { DidFreeze(); - // DidFreeze can dispatch JS events, causing |this| to be detached. + // DidFreeze can dispatch JS events, which may detatch |this|. if (!IsAttached()) return; } @@ -1759,13 +1757,12 @@ UnpauseContext(); if (old_state != mojom::FrameLifecycleState::kPaused) { DidResume(); - // DidResume can dispatch JS events, causing |this| to be detached. + // DidResume can dispatch JS events, which may detatch |this|. if (!IsAttached()) return; } } - if (Client()) - Client()->LifecycleStateChanged(state); + Client()->LifecycleStateChanged(state); } void LocalFrame::MaybeLogAdClickNavigation() {
diff --git a/third_party/blink/renderer/core/frame/remote_frame.cc b/third_party/blink/renderer/core/frame/remote_frame.cc index 690a1687..39e1716 100644 --- a/third_party/blink/renderer/core/frame/remote_frame.cc +++ b/third_party/blink/renderer/core/frame/remote_frame.cc
@@ -72,10 +72,12 @@ const KURL& url = frame_request.GetResourceRequest().Url(); if (!frame_request.CanDisplay(url)) { - frame_request.OriginDocument()->AddConsoleMessage(ConsoleMessage::Create( - mojom::ConsoleMessageSource::kSecurity, - mojom::ConsoleMessageLevel::kError, - "Not allowed to load local resource: " + url.ElidedString())); + if (frame_request.OriginDocument()) { + frame_request.OriginDocument()->AddConsoleMessage(ConsoleMessage::Create( + mojom::ConsoleMessageSource::kSecurity, + mojom::ConsoleMessageLevel::kError, + "Not allowed to load local resource: " + url.ElidedString())); + } return; }
diff --git a/third_party/blink/renderer/core/html/canvas/html_canvas_element.cc b/third_party/blink/renderer/core/html/canvas/html_canvas_element.cc index 58a60cf..531238ce 100644 --- a/third_party/blink/renderer/core/html/canvas/html_canvas_element.cc +++ b/third_party/blink/renderer/core/html/canvas/html_canvas_element.cc
@@ -104,6 +104,7 @@ // It is in an invalid range (outside 0.0 - 1.0) so that it will not be // misinterpreted as a user-input value constexpr int kUndefinedQualityValue = -1.0; +constexpr int kMinimumAccelerated2dCanvasSize = 128 * 129; } // namespace @@ -1021,6 +1022,18 @@ return false; } + // Webview crashes with accelerated small canvases TODO(crbug.com/1004304) + if (!RuntimeEnabledFeatures::AcceleratedSmallCanvasesEnabled()) { + base::CheckedNumeric<int> checked_canvas_pixel_count = + Size().Width() * Size().Height(); + if (!checked_canvas_pixel_count.IsValid()) + return false; + int canvas_pixel_count = checked_canvas_pixel_count.ValueOrDie(); + + if (canvas_pixel_count < kMinimumAccelerated2dCanvasSize) + return false; + } + // The following is necessary for handling the special case of canvases in // the dev tools overlay, which run in a process that supports accelerated // 2d canvas but in a special compositing context that does not.
diff --git a/third_party/blink/renderer/core/loader/document_loader.cc b/third_party/blink/renderer/core/loader/document_loader.cc index afc7f2d..6717ede0 100644 --- a/third_party/blink/renderer/core/loader/document_loader.cc +++ b/third_party/blink/renderer/core/loader/document_loader.cc
@@ -254,6 +254,16 @@ initiator_origin_trial_features_.push_back( static_cast<OriginTrialFeature>(feature)); } + + // For back/forward navigations, the browser passed a history item to use at + // commit time in |params_|. Set it as the current history item of this + // DocumentLoader. For other navigations, |history_item_| will be created when + // the FrameLoader calls SetHistoryItemStateForCommit. + if (IsBackForwardLoadType(params_->frame_load_type)) { + HistoryItem* history_item = params_->history_item; + DCHECK(history_item); + history_item_ = history_item; + } } FrameLoader& DocumentLoader::GetFrameLoader() const { @@ -708,14 +718,6 @@ DCHECK(!GetTiming().FetchStart().is_null()); redirect_chain_.push_back(url_); GetTiming().AddRedirect(current_request_url, url_); - - // If a redirection happens during a back/forward navigation, don't restore - // any state from the old HistoryItem. There is a provisional history item for - // back/forward navigation only. In the other case, clearing it is a no-op. - history_item_.Clear(); - - // TODO(creis): Determine if we need to clear any history state - // in embedder to fix https://crbug.com/671276. } bool DocumentLoader::ShouldReportTimingInfoToParent() { @@ -829,22 +831,6 @@ frame_->Owner()->RenderFallbackContent(frame_); } -void DocumentLoader::PrepareForNavigationCommit() { - if (state_ != kProvisional) - return; - - // Set history state before commitProvisionalLoad() so that we still have - // access to the previous committed DocumentLoader's HistoryItem, in case we - // need to copy state from it. - if (!GetFrameLoader().StateMachine()->CreatingInitialEmptyDocument()) { - SetHistoryItemStateForCommit( - GetFrameLoader().GetDocumentLoader()->GetHistoryItem(), load_type_, - HistoryNavigationType::kDifferentDocument); - } - - DCHECK_EQ(state_, kProvisional); -} - void DocumentLoader::FinishNavigationCommit(const AtomicString& mime_type, const KURL& overriding_url) { const AtomicString& encoding = GetResponse().TextEncodingName(); @@ -1152,7 +1138,6 @@ if (loading_url_as_empty_document_) { InitializeEmptyResponse(); - PrepareForNavigationCommit(); return; } @@ -1262,7 +1247,6 @@ // TODO(clamy): Simplify this code path. FinalizeMHTMLArchiveLoad(); } - PrepareForNavigationCommit(); return; } @@ -1270,8 +1254,6 @@ if (defers_loading_) body_loader_->SetDefersLoading(true); - - PrepareForNavigationCommit(); } void DocumentLoader::StartLoadingResponse() {
diff --git a/third_party/blink/renderer/core/loader/document_loader.h b/third_party/blink/renderer/core/loader/document_loader.h index 684fc13ea1..a6b84c16 100644 --- a/third_party/blink/renderer/core/loader/document_loader.h +++ b/third_party/blink/renderer/core/loader/document_loader.h
@@ -183,7 +183,6 @@ navigation_type_ = navigation_type; } - void SetItemForHistoryNavigation(HistoryItem* item) { history_item_ = item; } HistoryItem* GetHistoryItem() const { return history_item_; } void StartLoading(); @@ -303,6 +302,16 @@ // day though. void UpdateUrlForDocumentOpen(const KURL& url) { url_ = url; } + enum class HistoryNavigationType { + kDifferentDocument, + kFragment, + kHistoryApi + }; + + void SetHistoryItemStateForCommit(HistoryItem* old_item, + WebFrameLoadType, + HistoryNavigationType); + protected: Vector<KURL> redirect_chain_; @@ -331,7 +340,6 @@ void WillCommitNavigation(); void DidCommitNavigation(GlobalObjectReusePolicy); - void PrepareForNavigationCommit(); void FinishNavigationCommit(const AtomicString& mime_type, const KURL& overriding_url = KURL()); @@ -358,15 +366,6 @@ void FinishedLoading(base::TimeTicks finish_time); void CancelLoadAfterCSPDenied(const ResourceResponse&); - enum class HistoryNavigationType { - kDifferentDocument, - kFragment, - kHistoryApi - }; - void SetHistoryItemStateForCommit(HistoryItem* old_item, - WebFrameLoadType, - HistoryNavigationType); - void FinalizeMHTMLArchiveLoad(); void HandleRedirect(const KURL& current_request_url); void HandleResponse();
diff --git a/third_party/blink/renderer/core/loader/frame_loader.cc b/third_party/blink/renderer/core/loader/frame_loader.cc index 9b44389..c4893182 100644 --- a/third_party/blink/renderer/core/loader/frame_loader.cc +++ b/third_party/blink/renderer/core/loader/frame_loader.cc
@@ -906,11 +906,12 @@ navigation_params->frame_load_type, !navigation_params->http_body.IsNull(), false /* have_event */); - HistoryItem* history_item = nullptr; - if (IsBackForwardLoadType(navigation_params->frame_load_type)) { - history_item = navigation_params->history_item; - DCHECK(history_item); - } + // Keep track of the current Document HistoryItem as the new DocumentLoader + // might need to copy state from it. Note that the current DocumentLoader + // should always exist, as the initial empty document is committed through + // FrameLoader::Init. + DCHECK(!StateMachine()->CreatingInitialEmptyDocument()); + HistoryItem* previous_history_item = GetDocumentLoader()->GetHistoryItem(); base::Optional<Document::UnloadEventTiming> unload_timing; scoped_refptr<SecurityOrigin> security_origin = @@ -924,8 +925,6 @@ { base::AutoReset<bool> scoped_committing(&committing_navigation_, true); - if (history_item) - provisional_document_loader->SetItemForHistoryNavigation(history_item); if (is_javascript_url) provisional_document_loader->SetLoadingJavaScriptUrl(); @@ -948,6 +947,14 @@ std::move(call_before_attaching_new_document).Run(); + // Following the call to StartLoading, the provisional DocumentLoader state + // has taken into account all redirects that happened during navigation. Its + // HistoryItem can be properly updated for the commit, using the HistoryItem + // of the previous Document. + provisional_document_loader_->SetHistoryItemStateForCommit( + previous_history_item, provisional_document_loader_->LoadType(), + DocumentLoader::HistoryNavigationType::kDifferentDocument); + CommitDocumentLoader(provisional_document_loader_.Release(), unload_timing); // Load the document if needed.
diff --git a/third_party/blink/renderer/core/page/drag_controller.cc b/third_party/blink/renderer/core/page/drag_controller.cc index ac8e3581..9cd4d60 100644 --- a/third_party/blink/renderer/core/page/drag_controller.cc +++ b/third_party/blink/renderer/core/page/drag_controller.cc
@@ -284,8 +284,6 @@ return; } - document_under_mouse_ = nullptr; - if (OperationForLoad(drag_data, local_root) != kDragOperationNone) { if (page_->GetSettings().GetNavigateOnDragDrop()) { ResourceRequest resource_request(drag_data->AsURL()); @@ -315,6 +313,8 @@ // be sending these events. crbug.com/748243. local_root.GetEventHandler().ClearDragState(); } + + document_under_mouse_ = nullptr; } void DragController::MouseMovedIntoDocument(Document* new_document) {
diff --git a/third_party/blink/renderer/core/page/scrolling/text_fragment_anchor_test.cc b/third_party/blink/renderer/core/page/scrolling/text_fragment_anchor_test.cc index 9c134b0..ee0926e3 100644 --- a/third_party/blink/renderer/core/page/scrolling/text_fragment_anchor_test.cc +++ b/third_party/blink/renderer/core/page/scrolling/text_fragment_anchor_test.cc
@@ -1319,6 +1319,102 @@ << LayoutViewport()->GetScrollOffset().ToString(); } +// Test that we don't match partial words at the beginning or end of the text. +TEST_F(TextFragmentAnchorTest, CheckForWordBoundary) { + SimRequest request( + "https://example.com/" + "test.html#targetText=This%20is%20a%20te&tagetText=st%20page", + "text/html"); + LoadURL( + "https://example.com/" + "test.html#targetText=This%20is%20a%20te&tagetText=st%20page"); + request.Complete(R"HTML( + <!DOCTYPE html> + <style> + body { + height: 1200px; + } + p { + position: absolute; + top: 1000px; + } + </style> + <p id="text">This is a test page</p> + )HTML"); + Compositor().BeginFrame(); + RunAsyncMatchingTasks(); + + EXPECT_EQ(ScrollOffset(), LayoutViewport()->GetScrollOffset()); + EXPECT_TRUE(GetDocument().Markers().Markers().IsEmpty()); +} + +// Test that we don't match partial words with context +TEST_F(TextFragmentAnchorTest, CheckForWordBoundaryWithContext) { + SimRequest request("https://example.com/test.html#targetText=est-,page", + "text/html"); + LoadURL("https://example.com/test.html#targetText=est-,page"); + request.Complete(R"HTML( + <!DOCTYPE html> + <style> + body { + height: 1200px; + } + p { + position: absolute; + top: 1000px; + } + </style> + <p id="text">This is a test page</p> + )HTML"); + Compositor().BeginFrame(); + RunAsyncMatchingTasks(); + + EXPECT_EQ(ScrollOffset(), LayoutViewport()->GetScrollOffset()); + EXPECT_TRUE(GetDocument().Markers().Markers().IsEmpty()); +} + +// Test that we correctly match a whole word when it appears as a partial word +// earlier in the page. +TEST_F(TextFragmentAnchorTest, CheckForWordBoundaryWithPartialWord) { + SimRequest request("https://example.com/test.html#targetText=tes,age", + "text/html"); + LoadURL("https://example.com/test.html#targetText=tes,age"); + request.Complete(R"HTML( + <!DOCTYPE html> + <style> + body { + height: 1200px; + } + #first { + position: absolute; + top: 1000px; + } + #second { + position: absolute; + top: 2000px; + } + </style> + <p id="first">This is a test page</p> + <p id="second">This is a tes age</p> + )HTML"); + Compositor().BeginFrame(); + RunAsyncMatchingTasks(); + + Element& p = *GetDocument().getElementById("second"); + + EXPECT_TRUE(ViewportRect().Contains(BoundingRectInFrame(p))) + << "Should have scrolled <p> into view but didn't, scroll offset: " + << LayoutViewport()->GetScrollOffset().ToString(); + + // Expect marker on only "tes age" + EXPECT_EQ(1u, GetDocument().Markers().Markers().size()); + DocumentMarkerVector markers = GetDocument().Markers().MarkersFor( + *To<Text>(p.firstChild()), DocumentMarker::MarkerTypes::TextMatch()); + ASSERT_EQ(1u, markers.size()); + EXPECT_EQ(10u, markers.at(0)->StartOffset()); + EXPECT_EQ(17u, markers.at(0)->EndOffset()); +} + } // namespace } // namespace blink
diff --git a/third_party/blink/renderer/core/page/scrolling/text_fragment_finder.cc b/third_party/blink/renderer/core/page/scrolling/text_fragment_finder.cc index edca62e..9e632ab8 100644 --- a/third_party/blink/renderer/core/page/scrolling/text_fragment_finder.cc +++ b/third_party/blink/renderer/core/page/scrolling/text_fragment_finder.cc
@@ -15,6 +15,7 @@ #include "third_party/blink/renderer/core/editing/iterators/character_iterator.h" #include "third_party/blink/renderer/core/editing/position.h" #include "third_party/blink/renderer/core/page/scrolling/text_fragment_selector.h" +#include "third_party/blink/renderer/platform/text/text_boundaries.h" namespace blink { @@ -22,12 +23,54 @@ const char kNoContext[] = ""; +// Determines whether the start and end positions of |range| are on word +// boundaries. +// TODO(crbug/924965): Determine how this should check node boundaries. This +// treats node boundaries as word boundaries, for example "o" is a whole word +// match in "f<i>o</i>o". +bool IsWholeWordMatch(EphemeralRangeInFlatTree range) { + wtf_size_t start_position = range.StartPosition().OffsetInContainerNode(); + + if (start_position != 0) { + String start_text = range.StartPosition().AnchorNode()->textContent(); + start_text.Ensure16Bit(); + wtf_size_t word_start = FindWordStartBoundary( + start_text.Characters16(), start_text.length(), start_position); + if (word_start != start_position) + return false; + } + + wtf_size_t end_position = range.EndPosition().OffsetInContainerNode(); + String end_text = range.EndPosition().AnchorNode()->textContent(); + + if (end_position != end_text.length()) { + end_text.Ensure16Bit(); + // We expect end_position to be a word boundary, and FindWordEndBoundary + // finds the next word boundary, so start from end_position - 1. + wtf_size_t word_end = FindWordEndBoundary( + end_text.Characters16(), end_text.length(), end_position - 1); + if (word_end != end_position) + return false; + } + + return true; +} + EphemeralRangeInFlatTree FindMatchInRange(String search_text, PositionInFlatTree search_start, PositionInFlatTree search_end) { - const EphemeralRangeInFlatTree search_range(search_start, search_end); - return FindBuffer::FindMatchInRange(search_range, search_text, - kCaseInsensitive); + while (search_start < search_end) { + const EphemeralRangeInFlatTree search_range(search_start, search_end); + EphemeralRangeInFlatTree potential_match = FindBuffer::FindMatchInRange( + search_range, search_text, kCaseInsensitive); + + if (potential_match.IsNull() || IsWholeWordMatch(potential_match)) + return potential_match; + + search_start = potential_match.EndPosition(); + } + + return EphemeralRangeInFlatTree(); } PositionInFlatTree NextTextPosition(PositionInFlatTree position, @@ -58,12 +101,18 @@ FindBuffer buffer(EphemeralRangeInFlatTree(search_start, search_end)); + // TODO(nburris): FindBuffer will search the rest of the document for a match, + // but we only need to check for an immediate match, so we should stop + // searching if there's no immediate match. std::unique_ptr<FindBuffer::Results> match_results = buffer.FindMatches(search_text, kCaseInsensitive); if (!match_results->IsEmpty() && match_results->front().start == 0u) { - FindBuffer::BufferMatchResult match = match_results->front(); - return buffer.RangeFromBufferIndex(match.start, match.start + match.length); + FindBuffer::BufferMatchResult buffer_match = match_results->front(); + EphemeralRangeInFlatTree match = buffer.RangeFromBufferIndex( + buffer_match.start, buffer_match.start + buffer_match.length); + if (IsWholeWordMatch(match)) + return match; } return EphemeralRangeInFlatTree();
diff --git a/third_party/blink/renderer/devtools/.eslintrc.js b/third_party/blink/renderer/devtools/.eslintrc.js index 10cc7cb..401bb011 100644 --- a/third_party/blink/renderer/devtools/.eslintrc.js +++ b/third_party/blink/renderer/devtools/.eslintrc.js
@@ -7,7 +7,8 @@ }, "parserOptions": { - "ecmaVersion": 9 + "ecmaVersion": 9, + "sourceType": "module" }, /**
diff --git a/third_party/blink/renderer/devtools/BUILD.gn b/third_party/blink/renderer/devtools/BUILD.gn index 917c44c..3b9d6d3 100644 --- a/third_party/blink/renderer/devtools/BUILD.gn +++ b/third_party/blink/renderer/devtools/BUILD.gn
@@ -786,7 +786,6 @@ "front_end/toolbox.js", "front_end/toolbox.json", "front_end/ui/ActionRegistry.js", - "front_end/ui/ARIAUtils.js", "front_end/ui/checkboxTextLabel.css", "front_end/ui/closeButton.css", "front_end/ui/confirmDialog.css", @@ -958,6 +957,12 @@ all_devtools_files += lighthouse_locale_files +all_devtools_modules = [ + "front_end/root.js", + "front_end/ui/ARIAUtils.js", + "front_end/ui/UI.js", +] + devtools_test_files = [ "//third_party/axe-core/axe.js", "front_end/accessibility_test_runner/AccessibilityPaneTestRunner.js", @@ -1149,6 +1154,12 @@ "front_end/worker_app.html", ] +copied_devtools_modules = [ + "$resources_out_dir/root.js", + "$resources_out_dir/ui/ARIAUtils.js", + "$resources_out_dir/ui/UI.js", +] + generated_applications = [ "$resources_out_dir/audits_worker.js", "$resources_out_dir/devtools_app.html", @@ -1267,7 +1278,7 @@ visibility = [ "//third_party/blink/*" ] group("devtools_all_files") { - data = all_devtools_files + data = all_devtools_files + all_devtools_modules deps = [ ":devtools_frontend_resources_data", ] @@ -1284,6 +1295,7 @@ ":devtools_extension_api", ":frontend_protocol_sources", ":supported_css_properties", + ":copy_devtools_modules", ] if (debug_devtools) { @@ -1348,8 +1360,8 @@ ] grd_files = - generated_applications + generated_non_autostart_non_remote_modules + - devtools_embedder_scripts + + all_devtools_modules + generated_applications + + generated_non_autostart_non_remote_modules + devtools_embedder_scripts + [ "$resources_out_dir/devtools_extension_api.js" ] # Bundle remote modules in ChromeOS. @@ -1468,6 +1480,24 @@ ] } +action("copy_devtools_modules") { + script = "scripts/build/copy_devtools_modules.py" + + deps = [ + ":build_release_devtools", + ] + + inputs = all_devtools_modules + outputs = copied_devtools_modules + + args = all_devtools_modules + [ + "--input_path", + rebase_path(".", root_build_dir), + "--output_path", + rebase_path(resources_out_dir, root_build_dir), + ] +} + if (debug_devtools) { resources_out_debug_dir = "$root_out_dir/resources/inspector/debug"
diff --git a/third_party/blink/renderer/devtools/PRESUBMIT.py b/third_party/blink/renderer/devtools/PRESUBMIT.py index 1166bdb..4768b66 100644 --- a/third_party/blink/renderer/devtools/PRESUBMIT.py +++ b/third_party/blink/renderer/devtools/PRESUBMIT.py
@@ -78,8 +78,8 @@ # Use eslint to autofix the braces. # Also fix semicolon to avoid confusing clang-format. eslint_process = popen([ - local_node.node_path(), local_node.eslint_path(), - '--no-eslintrc', '--fix', '--env=es6', '--parser-options=ecmaVersion:9', + local_node.node_path(), + local_node.eslint_path(), '--no-eslintrc', '--fix', '--env=es6', '--parser-options=ecmaVersion:9,sourceType:module', '--rule={"curly": [2, "multi-or-nest", "consistent"], "semi": 2}' ] + affected_files) eslint_process.communicate()
diff --git a/third_party/blink/renderer/devtools/front_end/accessibility/ARIAAttributesView.js b/third_party/blink/renderer/devtools/front_end/accessibility/ARIAAttributesView.js index a8a61db6..3bfb476 100644 --- a/third_party/blink/renderer/devtools/front_end/accessibility/ARIAAttributesView.js +++ b/third_party/blink/renderer/devtools/front_end/accessibility/ARIAAttributesView.js
@@ -76,7 +76,7 @@ _populateListItem() { this.listItemElement.removeChildren(); this.appendNameElement(this._attribute.name); - this.listItemElement.createChild('span', 'separator').textContent = ':\u00A0'; + this.listItemElement.createChild('span', 'separator').textContent = ':\xA0'; this.appendAttributeValueElement(this._attribute.value); }
diff --git a/third_party/blink/renderer/devtools/front_end/accessibility/AXBreadcrumbsPane.js b/third_party/blink/renderer/devtools/front_end/accessibility/AXBreadcrumbsPane.js index 9075c5e..fc4f696 100644 --- a/third_party/blink/renderer/devtools/front_end/accessibility/AXBreadcrumbsPane.js +++ b/third_party/blink/renderer/devtools/front_end/accessibility/AXBreadcrumbsPane.js
@@ -327,7 +327,7 @@ } else { this._appendRoleElement(this._axNode.role()); if (this._axNode.name() && this._axNode.name().value) { - this._nodeWrapper.createChild('span', 'separator').textContent = '\u00A0'; + this._nodeWrapper.createChild('span', 'separator').textContent = '\xA0'; this._appendNameElement(/** @type {string} */ (this._axNode.name().value)); } }
diff --git a/third_party/blink/renderer/devtools/front_end/accessibility/AccessibilityNodeView.js b/third_party/blink/renderer/devtools/front_end/accessibility/AccessibilityNodeView.js index 28996aa..56d37a4 100644 --- a/third_party/blink/renderer/devtools/front_end/accessibility/AccessibilityNodeView.js +++ b/third_party/blink/renderer/devtools/front_end/accessibility/AccessibilityNodeView.js
@@ -289,7 +289,7 @@ this.appendNameElement(this._property.name); - this.listItemElement.createChild('span', 'separator').textContent = ':\u00A0'; + this.listItemElement.createChild('span', 'separator').textContent = ':\xA0'; this.appendValueElement(this._property.value); } @@ -428,14 +428,14 @@ this.appendSourceNameElement(this._source); - this.listItemElement.createChild('span', 'separator').textContent = ':\u00a0'; + this.listItemElement.createChild('span', 'separator').textContent = ':\xA0'; if (this._source.attributeValue) { this.appendValueElement(this._source.attributeValue); - this.listItemElement.createTextChild('\u00a0'); + this.listItemElement.createTextChild('\xA0'); } else if (this._source.nativeSourceValue) { this.appendValueElement(this._source.nativeSourceValue); - this.listItemElement.createTextChild('\u00a0'); + this.listItemElement.createTextChild('\xA0'); if (this._source.value) this.appendValueElement(this._source.value); } else if (this._source.value) { @@ -547,10 +547,10 @@ let reasonElement = null; switch (reason) { case 'activeModalDialog': - reasonElement = UI.formatLocalized('Element is hidden by active modal dialog:\u00a0', []); + reasonElement = UI.formatLocalized('Element is hidden by active modal dialog:\xA0', []); break; case 'ancestorIsLeafNode': - reasonElement = UI.formatLocalized('Ancestor\'s children are all presentational:\u00a0', []); + reasonElement = UI.formatLocalized('Ancestor\'s children are all presentational:\xA0', []); break; case 'ariaHiddenElement': { const ariaHiddenSpan = createElement('span', 'source-code').textContent = 'aria-hidden'; @@ -560,7 +560,7 @@ case 'ariaHiddenSubtree': { const ariaHiddenSpan = createElement('span', 'source-code').textContent = 'aria-hidden'; const trueSpan = createElement('span', 'source-code').textContent = 'true'; - reasonElement = UI.formatLocalized('%s is %s on ancestor:\u00a0', [ariaHiddenSpan, trueSpan]); + reasonElement = UI.formatLocalized('%s is %s on ancestor:\xA0', [ariaHiddenSpan, trueSpan]); break; } case 'emptyAlt': @@ -573,16 +573,16 @@ reasonElement = UI.formatLocalized('Element is inert.', []); break; case 'inertSubtree': - reasonElement = UI.formatLocalized('Element is in an inert subtree from\u00a0', []); + reasonElement = UI.formatLocalized('Element is in an inert subtree from\xA0', []); break; case 'inheritsPresentation': - reasonElement = UI.formatLocalized('Element inherits presentational role from\u00a0', []); + reasonElement = UI.formatLocalized('Element inherits presentational role from\xA0', []); break; case 'labelContainer': - reasonElement = UI.formatLocalized('Part of label element:\u00a0', []); + reasonElement = UI.formatLocalized('Part of label element:\xA0', []); break; case 'labelFor': - reasonElement = UI.formatLocalized('Label for\u00a0', []); + reasonElement = UI.formatLocalized('Label for\xA0', []); break; case 'notRendered': reasonElement = UI.formatLocalized('Element is not rendered.', []); @@ -599,7 +599,7 @@ reasonElement = UI.formatLocalized('Element is presentational.', []); break; case 'staticTextUsedAsNameFor': - reasonElement = UI.formatLocalized('Static text node is used as name for\u00a0', []); + reasonElement = UI.formatLocalized('Static text node is used as name for\xA0', []); break; case 'uninteresting': reasonElement = UI.formatLocalized('Element not interesting for accessibility.', []);
diff --git a/third_party/blink/renderer/devtools/front_end/devtools_app.html b/third_party/blink/renderer/devtools/front_end/devtools_app.html index 81b6645..2460c329 100644 --- a/third_party/blink/renderer/devtools/front_end/devtools_app.html +++ b/third_party/blink/renderer/devtools/front_end/devtools_app.html
@@ -9,8 +9,9 @@ <meta charset="utf-8"> <meta http-equiv="Content-Security-Policy" content="object-src 'none'; script-src 'self' 'unsafe-eval' 'unsafe-inline' https://chrome-devtools-frontend.appspot.com"> <meta name="referrer" content="no-referrer"> - <script src="Runtime.js"></script> - <script src="devtools_app.js"></script> + <script type="module" src="root.js"></script> + <script defer src="Runtime.js"></script> + <script defer src="devtools_app.js"></script> </head> <body class="undocked" id="-blink-dev-tools"></body> </html>
diff --git a/third_party/blink/renderer/devtools/front_end/elements/ElementsTreeOutline.js b/third_party/blink/renderer/devtools/front_end/elements/ElementsTreeOutline.js index 7cce4f80..3c67b1b 100644 --- a/third_party/blink/renderer/devtools/front_end/elements/ElementsTreeOutline.js +++ b/third_party/blink/renderer/devtools/front_end/elements/ElementsTreeOutline.js
@@ -1455,9 +1455,9 @@ * @type {!Object.<string, string>} */ Elements.ElementsTreeOutline.MappedCharToEntity = { - '\u00a0': 'nbsp', - '\u0093': '#147', // <control> - '\u00ad': 'shy', + '\xA0': 'nbsp', + '\x93': '#147', // <control> + '\xAD': 'shy', '\u2002': 'ensp', '\u2003': 'emsp', '\u2009': 'thinsp',
diff --git a/third_party/blink/renderer/devtools/front_end/elements/StylePropertyTreeElement.js b/third_party/blink/renderer/devtools/front_end/elements/StylePropertyTreeElement.js index 8167ff6..aa58fcf 100644 --- a/third_party/blink/renderer/devtools/front_end/elements/StylePropertyTreeElement.js +++ b/third_party/blink/renderer/devtools/front_end/elements/StylePropertyTreeElement.js
@@ -1028,7 +1028,7 @@ return; const hasBeenEditedIncrementally = this._hasBeenEditedIncrementally; - styleText = styleText.replace(/[\u00a0\t]/g, ' ').trim(); // Replace with whitespace. + styleText = styleText.replace(/[\xA0\t]/g, ' ').trim(); // Replace with whitespace. if (!styleText.length && majorChange && this._newProperty && !hasBeenEditedIncrementally) { // The user deleted everything and never applied a new property value via Up/Down scrolling/live editing, so remove the tree element and update. this.parent.removeChild(this);
diff --git a/third_party/blink/renderer/devtools/front_end/host/UserMetrics.js b/third_party/blink/renderer/devtools/front_end/host/UserMetrics.js index 954060ee..e788ff7e 100644 --- a/third_party/blink/renderer/devtools/front_end/host/UserMetrics.js +++ b/third_party/blink/renderer/devtools/front_end/host/UserMetrics.js
@@ -157,6 +157,16 @@ security: 16, js_profiler: 17, audits: 18, + 'drawer-coverage': 19, + 'drawer-protocol-monitor': 20, + 'drawer-remote-devices': 21, + 'drawer-web-audio': 22, + 'drawer-changes.changes': 23, + 'drawer-performance.monitor': 24, + 'drawer-release-note': 25, + 'drawer-live_heap_profile': 26, + 'drawer-sources.quick': 27, + 'drawer-network.blocked-urls': 28, }; /** @type {!Host.UserMetrics} */
diff --git a/third_party/blink/renderer/devtools/front_end/inspector.html b/third_party/blink/renderer/devtools/front_end/inspector.html index b5d6f04e..1ab4d319 100644 --- a/third_party/blink/renderer/devtools/front_end/inspector.html +++ b/third_party/blink/renderer/devtools/front_end/inspector.html
@@ -9,8 +9,9 @@ <meta charset="utf-8"> <meta http-equiv="Content-Security-Policy" content="object-src 'none'; script-src 'self' 'unsafe-eval' 'unsafe-inline' https://chrome-devtools-frontend.appspot.com"> <meta name="referrer" content="no-referrer"> - <script src="Runtime.js"></script> - <script src="inspector.js"></script> + <script type="module" src="root.js"></script> + <script defer src="Runtime.js"></script> + <script defer src="inspector.js"></script> </head> <body class="undocked" id="-blink-dev-tools"></body> </html>
diff --git a/third_party/blink/renderer/devtools/front_end/integration_test_runner.html b/third_party/blink/renderer/devtools/front_end/integration_test_runner.html index ca7cc521..073b301 100644 --- a/third_party/blink/renderer/devtools/front_end/integration_test_runner.html +++ b/third_party/blink/renderer/devtools/front_end/integration_test_runner.html
@@ -8,8 +8,9 @@ <head> <meta charset="utf-8"> <meta http-equiv="Content-Security-Policy" content="object-src 'none'; script-src 'self' 'unsafe-eval' 'unsafe-inline' https://chrome-devtools-frontend.appspot.com"> - <script src="Runtime.js"></script> - <script src="integration_test_runner.js"></script> + <script type="module" src="root.js"></script> + <script defer src="Runtime.js"></script> + <script defer src="integration_test_runner.js"></script> </head> <body id="-blink-dev-tools"></body> </html>
diff --git a/third_party/blink/renderer/devtools/front_end/js_app.html b/third_party/blink/renderer/devtools/front_end/js_app.html index 7105918..8cc144c 100644 --- a/third_party/blink/renderer/devtools/front_end/js_app.html +++ b/third_party/blink/renderer/devtools/front_end/js_app.html
@@ -9,8 +9,9 @@ <meta charset="utf-8"> <meta http-equiv="Content-Security-Policy" content="object-src 'none'; script-src 'self' 'unsafe-eval' 'unsafe-inline' https://chrome-devtools-frontend.appspot.com"> <meta name="referrer" content="no-referrer"> - <script src="Runtime.js"></script> - <script src="js_app.js"></script> + <script type="module" src="root.js"></script> + <script defer src="Runtime.js"></script> + <script defer src="js_app.js"></script> </head> <body class="undocked" id="-blink-dev-tools"></body> </html>
diff --git a/third_party/blink/renderer/devtools/front_end/ndb_app.html b/third_party/blink/renderer/devtools/front_end/ndb_app.html index ac0dee1..d6f17486 100644 --- a/third_party/blink/renderer/devtools/front_end/ndb_app.html +++ b/third_party/blink/renderer/devtools/front_end/ndb_app.html
@@ -9,8 +9,9 @@ <meta charset="utf-8"> <meta http-equiv="Content-Security-Policy" content="object-src 'none'; script-src 'self' 'unsafe-eval' 'unsafe-inline' https://chrome-devtools-frontend.appspot.com"> <meta name="referrer" content="no-referrer"> - <script src="Runtime.js"></script> - <script src="ndb_app.js"></script> + <script type="module" src="root.js"></script> + <script defer src="Runtime.js"></script> + <script defer src="ndb_app.js"></script> </head> <body class="undocked" id="-blink-dev-tools"></body> </html>
diff --git a/third_party/blink/renderer/devtools/front_end/network/RequestHeadersView.js b/third_party/blink/renderer/devtools/front_end/network/RequestHeadersView.js index 7500f86..cf12a6d 100644 --- a/third_party/blink/renderer/devtools/front_end/network/RequestHeadersView.js +++ b/third_party/blink/renderer/devtools/front_end/network/RequestHeadersView.js
@@ -224,7 +224,7 @@ paramsTreeElement.listItemElement.createTextChild(title); const headerCount = createElementWithClass('span', 'header-count'); - headerCount.textContent = Common.UIString('\u00A0(%d)', params.length); + headerCount.textContent = Common.UIString('\xA0(%d)', params.length); paramsTreeElement.listItemElement.appendChild(headerCount); /** @@ -430,7 +430,7 @@ headersTreeElement.listItemElement.removeChildren(); headersTreeElement.listItemElement.createTextChild(title); - const headerCount = Common.UIString('\u00A0(%d)', headersLength); + const headerCount = Common.UIString('\xA0(%d)', headersLength); headersTreeElement.listItemElement.createChild('span', 'header-count').textContent = headerCount; }
diff --git a/third_party/blink/renderer/devtools/front_end/node_app.html b/third_party/blink/renderer/devtools/front_end/node_app.html index 05aa910..5b475a11 100644 --- a/third_party/blink/renderer/devtools/front_end/node_app.html +++ b/third_party/blink/renderer/devtools/front_end/node_app.html
@@ -9,8 +9,9 @@ <meta charset="utf-8"> <meta http-equiv="Content-Security-Policy" content="object-src 'none'; script-src 'self' 'unsafe-eval' 'unsafe-inline' https://chrome-devtools-frontend.appspot.com"> <meta name="referrer" content="no-referrer"> - <script src="Runtime.js"></script> - <script src="node_app.js"></script> + <script type="module" src="root.js"></script> + <script defer src="Runtime.js"></script> + <script defer src="node_app.js"></script> </head> <body class="undocked" id="-blink-dev-tools"></body> </html>
diff --git a/third_party/blink/renderer/devtools/front_end/object_ui/ObjectPropertiesSection.js b/third_party/blink/renderer/devtools/front_end/object_ui/ObjectPropertiesSection.js index 6710b555..432ef65 100644 --- a/third_party/blink/renderer/devtools/front_end/object_ui/ObjectPropertiesSection.js +++ b/third_party/blink/renderer/devtools/front_end/object_ui/ObjectPropertiesSection.js
@@ -581,7 +581,6 @@ value, linkifier, emptyPlaceholder) { - properties.sort(ObjectUI.ObjectPropertiesSection.CompareProperties); internalProperties = internalProperties || []; const entriesProperty = internalProperties.find(property => property.name === '[[Entries]]');
diff --git a/third_party/blink/renderer/devtools/front_end/object_ui/RemoteObjectPreviewFormatter.js b/third_party/blink/renderer/devtools/front_end/object_ui/RemoteObjectPreviewFormatter.js index eb928dc..6467c4b 100644 --- a/third_party/blink/renderer/devtools/front_end/object_ui/RemoteObjectPreviewFormatter.js +++ b/third_party/blink/renderer/devtools/front_end/object_ui/RemoteObjectPreviewFormatter.js
@@ -58,7 +58,7 @@ text = hideDescription ? '' : description; } if (text.length > 0) - parentElement.createChild('span', 'object-description').textContent = text + '\u00a0'; + parentElement.createChild('span', 'object-description').textContent = text + '\xA0'; } const propertiesElement = parentElement.createChild('span', 'object-properties-preview'); @@ -70,7 +70,7 @@ else this._appendObjectPropertiesPreview(propertiesElement, preview); if (preview.overflow) { - const ellipsisText = propertiesElement.textContent.length > 1 ? ',\u00a0\u2026' : '\u2026'; + const ellipsisText = propertiesElement.textContent.length > 1 ? ',\xA0\u2026' : '\u2026'; propertiesElement.createChild('span').textContent = ellipsisText; } propertiesElement.createTextChild(isArrayOrTypedArray ? ']' : '}');
diff --git a/third_party/blink/renderer/devtools/front_end/platform/utilities.js b/third_party/blink/renderer/devtools/front_end/platform/utilities.js index c94bb3d..31973aa 100644 --- a/third_party/blink/renderer/devtools/front_end/platform/utilities.js +++ b/third_party/blink/renderer/devtools/front_end/platform/utilities.js
@@ -1021,7 +1021,7 @@ * @return {string} */ self.spacesPadding = function(spacesCount) { - return '\u00a0'.repeat(spacesCount); + return '\xA0'.repeat(spacesCount); }; /**
diff --git a/third_party/blink/renderer/devtools/front_end/resources/ClearStorageView.js b/third_party/blink/renderer/devtools/front_end/resources/ClearStorageView.js index 94c15bc7..9d07955 100644 --- a/third_party/blink/renderer/devtools/front_end/resources/ClearStorageView.js +++ b/third_party/blink/renderer/devtools/front_end/resources/ClearStorageView.js
@@ -220,7 +220,7 @@ return; } this._quotaRow.textContent = Common.UIString( - '%s used out of %s storage quota.\u00a0', Number.bytesToString(response.usage), + '%s used out of %s storage quota.\xA0', Number.bytesToString(response.usage), Number.bytesToString(response.quota)); if (response.quota < 125829120) { // 120 MB this._quotaRow.title = ls`Storage quota is limited in Incognito mode`;
diff --git a/third_party/blink/renderer/devtools/front_end/root.js b/third_party/blink/renderer/devtools/front_end/root.js new file mode 100644 index 0000000..90ae39a --- /dev/null +++ b/third_party/blink/renderer/devtools/front_end/root.js
@@ -0,0 +1,5 @@ +// 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 './ui/UI.js'; \ No newline at end of file
diff --git a/third_party/blink/renderer/devtools/front_end/source_frame/SourceFrame.js b/third_party/blink/renderer/devtools/front_end/source_frame/SourceFrame.js index 7010818..358558c4 100644 --- a/third_party/blink/renderer/devtools/front_end/source_frame/SourceFrame.js +++ b/third_party/blink/renderer/devtools/front_end/source_frame/SourceFrame.js
@@ -415,8 +415,13 @@ _simplifyMimeType(content, mimeType) { if (!mimeType) return ''; + // There are plenty of instances where TSX/JSX files are served with out the trailing x, i.e. JSX with a 'js' suffix + // which breaks the formatting. Therefore, if the mime type is TypeScript or JavaScript, we switch to the TSX/JSX + // superset so that we don't break formatting. + if (mimeType.indexOf('typescript') >= 0) + return 'text/typescript-jsx'; if (mimeType.indexOf('javascript') >= 0 || mimeType.indexOf('jscript') >= 0 || mimeType.indexOf('ecmascript') >= 0) - return 'text/javascript'; + return 'text/jsx'; // A hack around the fact that files with "php" extension might be either standalone or html embedded php scripts. if (mimeType === 'text/x-php' && content.match(/\<\?.*\?\>/g)) return 'application/x-httpd-php';
diff --git a/third_party/blink/renderer/devtools/front_end/source_frame/XMLView.js b/third_party/blink/renderer/devtools/front_end/source_frame/XMLView.js index 75feb5c3..8af5c23 100644 --- a/third_party/blink/renderer/devtools/front_end/source_frame/XMLView.js +++ b/third_party/blink/renderer/devtools/front_end/source_frame/XMLView.js
@@ -297,7 +297,7 @@ for (let i = 0; i < attributes.length; ++i) { const attributeNode = attributes.item(i); titleItems.push( - '\u00a0', 'shadow-xml-view-tag', attributeNode.name, 'shadow-xml-view-attribute-name', '="', + '\xA0', 'shadow-xml-view-tag', attributeNode.name, 'shadow-xml-view-attribute-name', '="', 'shadow-xml-view-tag', attributeNode.value, 'shadow-xml-view-attribute-value', '"', 'shadow-xml-view-tag'); }
diff --git a/third_party/blink/renderer/devtools/front_end/sources/GutterDiffPlugin.js b/third_party/blink/renderer/devtools/front_end/sources/GutterDiffPlugin.js index 064be73671..4f8eddc 100644 --- a/third_party/blink/renderer/devtools/front_end/sources/GutterDiffPlugin.js +++ b/third_party/blink/renderer/devtools/front_end/sources/GutterDiffPlugin.js
@@ -169,7 +169,7 @@ if (!location) return; const element = createElementWithClass('div', 'diff-marker'); - element.textContent = '\u00A0'; + element.textContent = '\xA0'; this._textEditor.setGutterDecoration(location.lineNumber, Sources.GutterDiffPlugin.DiffGutterType, element); this._textEditor.toggleLineClass(location.lineNumber, this._className, true); }
diff --git a/third_party/blink/renderer/devtools/front_end/sources_test_runner/module.json b/third_party/blink/renderer/devtools/front_end/sources_test_runner/module.json index 52a978ab..a260418c 100644 --- a/third_party/blink/renderer/devtools/front_end/sources_test_runner/module.json +++ b/third_party/blink/renderer/devtools/front_end/sources_test_runner/module.json
@@ -5,6 +5,7 @@ "workspace", "source_frame", "text_utils", + "cm_modes", "browser_debugger" ], "scripts": [
diff --git a/third_party/blink/renderer/devtools/front_end/toolbox.html b/third_party/blink/renderer/devtools/front_end/toolbox.html index c48ad36..ab892052 100644 --- a/third_party/blink/renderer/devtools/front_end/toolbox.html +++ b/third_party/blink/renderer/devtools/front_end/toolbox.html
@@ -8,8 +8,9 @@ <head> <meta charset="utf-8"> <meta http-equiv="Content-Security-Policy" content="object-src 'none'; script-src 'self' 'unsafe-eval' 'unsafe-inline' "> - <script src="Runtime.js"></script> - <script src="toolbox.js"></script> + <script type="module" src="root.js"></script> + <script defer src="Runtime.js"></script> + <script defer src="toolbox.js"></script> </head> <body class="undocked" id="-blink-dev-tools"></body> </html>
diff --git a/third_party/blink/renderer/devtools/front_end/ui/ARIAUtils.js b/third_party/blink/renderer/devtools/front_end/ui/ARIAUtils.js index fd1aad50..088e6ee2 100644 --- a/third_party/blink/renderer/devtools/front_end/ui/ARIAUtils.js +++ b/third_party/blink/renderer/devtools/front_end/ui/ARIAUtils.js
@@ -2,327 +2,326 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -UI.ARIAUtils = {}; -UI.ARIAUtils._id = 0; - -/** - * @param {!Element} label - * @param {!Element} control - */ -UI.ARIAUtils.bindLabelToControl = function(label, control) { - const controlId = UI.ARIAUtils.nextId('labelledControl'); - control.id = controlId; - label.setAttribute('for', controlId); -}; - -/** - * @param {!Element} element - */ -UI.ARIAUtils.markAsAlert = function(element) { - element.setAttribute('role', 'alert'); - element.setAttribute('aria-live', 'polite'); -}; - -/** - * @param {!Element} element - */ -UI.ARIAUtils.markAsButton = function(element) { - element.setAttribute('role', 'button'); -}; - -/** - * @param {!Element} element - */ -UI.ARIAUtils.markAsCheckbox = function(element) { - element.setAttribute('role', 'checkbox'); -}; - -/** - * @param {!Element} element - * @param {boolean=} modal - */ -UI.ARIAUtils.markAsDialog = function(element, modal) { - element.setAttribute('role', 'dialog'); - if (modal) - element.setAttribute('aria-modal', 'true'); -}; - -/** - * @param {!Element} element - */ -UI.ARIAUtils.markAsGroup = function(element) { - element.setAttribute('role', 'group'); -}; - -/** - * @param {!Element} element - */ -UI.ARIAUtils.markAsLink = function(element) { - element.setAttribute('role', 'link'); -}; - -/** - * @param {!Element} element - */ -UI.ARIAUtils.markAsMenuButton = function(element) { - UI.ARIAUtils.markAsButton(element); - element.setAttribute('aria-haspopup', true); -}; - -/** - * @param {!Element} element - */ -UI.ARIAUtils.markAsProgressBar = function(element) { - element.setAttribute('role', 'progressbar'); - element.setAttribute('aria-valuemin', 0); - element.setAttribute('aria-valuemax', 100); -}; - -/** - * @param {!Element} element - */ -UI.ARIAUtils.markAsTab = function(element) { - element.setAttribute('role', 'tab'); -}; - -/** - * @param {!Element} element - */ -UI.ARIAUtils.markAsTree = function(element) { - element.setAttribute('role', 'tree'); -}; - -/** - * @param {!Element} element - */ -UI.ARIAUtils.markAsTreeitem = function(element) { - element.setAttribute('role', 'treeitem'); -}; - -/** - * @param {!Element} element - */ -UI.ARIAUtils.markAsTextBox = function(element) { - element.setAttribute('role', 'textbox'); -}; - -/** - * @param {!Element} element - */ -UI.ARIAUtils.markAsMenu = function(element) { - element.setAttribute('role', 'menu'); -}; - -/** - * @param {!Element} element - */ -UI.ARIAUtils.markAsMenuItem = function(element) { - element.setAttribute('role', 'menuitem'); -}; - -/** - * @param {!Element} element - */ -UI.ARIAUtils.markAsMenuItemSubMenu = function(element) { - UI.ARIAUtils.markAsMenuItem(element); - element.setAttribute('aria-haspopup', true); -}; - -/** - * Must contain children whose role is option. - * @param {!Element} element - */ -UI.ARIAUtils.markAsListBox = function(element) { - element.setAttribute('role', 'listbox'); -}; - -/** - * @param {!Element} element - */ -UI.ARIAUtils.markAsMultiSelectable = function(element) { - element.setAttribute('aria-multiselectable', 'true'); -}; - -/** - * Must be contained in, or owned by, an element with the role listbox. - * @param {!Element} element - */ -UI.ARIAUtils.markAsOption = function(element) { - element.setAttribute('role', 'option'); -}; - -/** - * @param {!Element} element - */ -UI.ARIAUtils.markAsRadioGroup = function(element) { - element.setAttribute('role', 'radiogroup'); -}; - -/** - * @param {!Element} element - */ -UI.ARIAUtils.markAsHidden = function(element) { - element.setAttribute('aria-hidden', 'true'); -}; - -/** - * @param {!Element} element - * @param {number} level - */ -UI.ARIAUtils.markAsHeading = function(element, level) { - element.setAttribute('role', 'heading'); - element.setAttribute('aria-level', level); -}; - -/** - * @param {!Element} element - */ -UI.ARIAUtils.markAsPoliteLiveRegion = function(element) { - element.setAttribute('aria-live', 'polite'); -}; - -/** - * @param {!Element} element - * @param {?string} placeholder - */ -UI.ARIAUtils.setPlaceholder = function(element, placeholder) { - if (placeholder) - element.setAttribute('aria-placeholder', placeholder); - else - element.removeAttribute('aria-placeholder'); -}; - -/** - * @param {!Element} element - */ -UI.ARIAUtils.markAsPresentation = function(element) { - element.setAttribute('role', 'presentation'); -}; - -/** - * @param {!Element} element - */ -UI.ARIAUtils.markAsStatus = function(element) { - element.setAttribute('role', 'status'); -}; - -/** - * @param {!Element} element - */ -UI.ARIAUtils.ensureId = function(element) { - if (!element.id) - element.id = UI.ARIAUtils.nextId('ariaElement'); -}; +let _id = 0; /** * @param {string} prefix * @return {string} */ -UI.ARIAUtils.nextId = function(prefix) { - return (prefix || '') + ++UI.ARIAUtils._id; -}; +export function nextId(prefix) { + return (prefix || '') + ++_id; +} + +/** + * @param {!Element} label + * @param {!Element} control + */ +export function bindLabelToControl(label, control) { + const controlId = nextId('labelledControl'); + control.id = controlId; + label.setAttribute('for', controlId); +} + +/** + * @param {!Element} element + */ +export function markAsAlert(element) { + element.setAttribute('role', 'alert'); + element.setAttribute('aria-live', 'polite'); +} + +/** + * @param {!Element} element + */ +export function markAsButton(element) { + element.setAttribute('role', 'button'); +} + +/** + * @param {!Element} element + */ +export function markAsCheckbox(element) { + element.setAttribute('role', 'checkbox'); +} + +/** + * @param {!Element} element + * @param {boolean=} modal + */ +export function markAsDialog(element, modal) { + element.setAttribute('role', 'dialog'); + if (modal) + element.setAttribute('aria-modal', 'true'); +} + +/** + * @param {!Element} element + */ +export function markAsGroup(element) { + element.setAttribute('role', 'group'); +} + +/** + * @param {!Element} element + */ +export function markAsLink(element) { + element.setAttribute('role', 'link'); +} + +/** + * @param {!Element} element + */ +export function markAsMenuButton(element) { + markAsButton(element); + element.setAttribute('aria-haspopup', true); +} + +/** + * @param {!Element} element + */ +export function markAsProgressBar(element) { + element.setAttribute('role', 'progressbar'); + element.setAttribute('aria-valuemin', 0); + element.setAttribute('aria-valuemax', 100); +} + +/** + * @param {!Element} element + */ +export function markAsTab(element) { + element.setAttribute('role', 'tab'); +} + +/** + * @param {!Element} element + */ +export function markAsTree(element) { + element.setAttribute('role', 'tree'); +} + +/** + * @param {!Element} element + */ +export function markAsTreeitem(element) { + element.setAttribute('role', 'treeitem'); +} + +/** + * @param {!Element} element + */ +export function markAsTextBox(element) { + element.setAttribute('role', 'textbox'); +} + +/** + * @param {!Element} element + */ +export function markAsMenu(element) { + element.setAttribute('role', 'menu'); +} + +/** + * @param {!Element} element + */ +export function markAsMenuItem(element) { + element.setAttribute('role', 'menuitem'); +} + +/** + * @param {!Element} element + */ +export function markAsMenuItemSubMenu(element) { + markAsMenuItem(element); + element.setAttribute('aria-haspopup', true); +} + +/** + * Must contain children whose role is option. + * @param {!Element} element + */ +export function markAsListBox(element) { + element.setAttribute('role', 'listbox'); +} + +/** + * @param {!Element} element + */ +export function markAsMultiSelectable(element) { + element.setAttribute('aria-multiselectable', 'true'); +} + +/** + * Must be contained in, or owned by, an element with the role listbox. + * @param {!Element} element + */ +export function markAsOption(element) { + element.setAttribute('role', 'option'); +} + +/** + * @param {!Element} element + */ +export function markAsRadioGroup(element) { + element.setAttribute('role', 'radiogroup'); +} + +/** + * @param {!Element} element + */ +export function markAsHidden(element) { + element.setAttribute('aria-hidden', 'true'); +} + +/** + * @param {!Element} element + * @param {number} level + */ +export function markAsHeading(element, level) { + element.setAttribute('role', 'heading'); + element.setAttribute('aria-level', level); +} + +/** + * @param {!Element} element + */ +export function markAsPoliteLiveRegion(element) { + element.setAttribute('aria-live', 'polite'); +} + +/** + * @param {!Element} element + * @param {?string} placeholder + */ +export function setPlaceholder(element, placeholder) { + if (placeholder) + element.setAttribute('aria-placeholder', placeholder); + else + element.removeAttribute('aria-placeholder'); +} + +/** + * @param {!Element} element + */ +export function markAsPresentation(element) { + element.setAttribute('role', 'presentation'); +} + +/** + * @param {!Element} element + */ +export function markAsStatus(element) { + element.setAttribute('role', 'status'); +} + +/** + * @param {!Element} element + */ +export function ensureId(element) { + if (!element.id) + element.id = nextId('ariaElement'); +} /** * @param {!Element} element * @param {?Element} controlledElement */ -UI.ARIAUtils.setControls = function(element, controlledElement) { +export function setControls(element, controlledElement) { if (!controlledElement) { element.removeAttribute('aria-controls'); return; } - UI.ARIAUtils.ensureId(controlledElement); + ensureId(controlledElement); element.setAttribute('aria-controls', controlledElement.id); -}; +} /** * @param {!Element} element * @param {boolean} value */ -UI.ARIAUtils.setChecked = function(element, value) { +export function setChecked(element, value) { element.setAttribute('aria-checked', !!value); -}; +} /** * @param {!Element} element */ -UI.ARIAUtils.setCheckboxAsIndeterminate = function(element) { +export function setCheckboxAsIndeterminate(element) { element.setAttribute('aria-checked', 'mixed'); -}; +} /** * @param {!Element} element * @param {boolean} value */ -UI.ARIAUtils.setExpanded = function(element, value) { +export function setExpanded(element, value) { element.setAttribute('aria-expanded', !!value); -}; +} /** * @param {!Element} element */ -UI.ARIAUtils.unsetExpandable = function(element) { +export function unsetExpandable(element) { element.removeAttribute('aria-expanded'); -}; +} /** * @param {!Element} element * @param {boolean} value */ -UI.ARIAUtils.setSelected = function(element, value) { +export function setSelected(element, value) { // aria-selected behaves differently for false and undefined. // Often times undefined values are unintentionally typed as booleans. // Use !! to make sure this is true or false. element.setAttribute('aria-selected', !!value); -}; +} /** * @param {!Element} element * @param {boolean} value */ -UI.ARIAUtils.setInvalid = function(element, value) { +export function setInvalid(element, value) { if (value) element.setAttribute('aria-invalid', value); else element.removeAttribute('aria-invalid'); -}; +} /** * @param {!Element} element * @param {boolean} value */ -UI.ARIAUtils.setPressed = function(element, value) { +export function setPressed(element, value) { // aria-pressed behaves differently for false and undefined. // Often times undefined values are unintentionally typed as booleans. // Use !! to make sure this is true or false. element.setAttribute('aria-pressed', !!value); -}; +} /** * @param {!Element} element * @param {number} value */ -UI.ARIAUtils.setProgressBarCurrentPercentage = function(element, value) { +export function setProgressBarCurrentPercentage(element, value) { element.setAttribute('aria-valuenow', value); -}; +} /** * @param {!Element} element * @param {string} name */ -UI.ARIAUtils.setAccessibleName = function(element, name) { +export function setAccessibleName(element, name) { element.setAttribute('aria-label', name); -}; +} /** @type {!WeakMap<!Element, !Element>} */ -UI.ARIAUtils._descriptionMap = new WeakMap(); +const _descriptionMap = new WeakMap(); /** * @param {!Element} element * @param {string} description */ -UI.ARIAUtils.setDescription = function(element, description) { +export function setDescription(element, description) { // Nodes in the accesesibility tree are made up of a core // triplet of "name", "value", "description" // The "description" field is taken from either @@ -348,12 +347,12 @@ // The rest of DevTools shouldn't have to worry about this, // so there is some unfortunate code below. - if (UI.ARIAUtils._descriptionMap.has(element)) - UI.ARIAUtils._descriptionMap.get(element).remove(); + if (_descriptionMap.has(element)) + _descriptionMap.get(element).remove(); element.removeAttribute('data-aria-utils-animation-hack'); if (!description) { - UI.ARIAUtils._descriptionMap.delete(element); + _descriptionMap.delete(element); element.removeAttribute('aria-describedby'); return; } @@ -363,9 +362,9 @@ const descriptionElement = createElement('span'); descriptionElement.textContent = description; descriptionElement.style.display = 'none'; - UI.ARIAUtils.ensureId(descriptionElement); + ensureId(descriptionElement); element.setAttribute('aria-describedby', descriptionElement.id); - UI.ARIAUtils._descriptionMap.set(element, descriptionElement); + _descriptionMap.set(element, descriptionElement); // Now we have to actually put this description element // somewhere in the DOM so that we can point to it. @@ -398,20 +397,20 @@ element.setAttribute('data-aria-utils-animation-hack', 'sorry'); element.addEventListener('animationend', () => { // Someone might have made a new description in the meantime. - if (UI.ARIAUtils._descriptionMap.get(element) !== descriptionElement) + if (_descriptionMap.get(element) !== descriptionElement) return; element.removeAttribute('data-aria-utils-animation-hack'); // Try it again. This time we are in the DOM, so it *should* work. element.insertAdjacentElement('afterend', descriptionElement); }, {once: true}); -}; +} /** * @param {!Element} element * @param {?Element} activedescendant */ -UI.ARIAUtils.setActiveDescendant = function(element, activedescendant) { +export function setActiveDescendant(element, activedescendant) { if (!activedescendant) { element.removeAttribute('aria-activedescendant'); return; @@ -419,17 +418,19 @@ console.assert(element.hasSameShadowRoot(activedescendant), 'elements are not in the same shadow dom'); - UI.ARIAUtils.ensureId(activedescendant); + ensureId(activedescendant); element.setAttribute('aria-activedescendant', activedescendant.id); -}; +} + +const AlertElementSymbol = Symbol('AlertElementSybmol'); /** * @param {string} message * @param {!Element} element */ -UI.ARIAUtils.alert = function(message, element) { +export function alert(message, element) { const document = element.ownerDocument; - if (!document[UI.ARIAUtils.AlertElementSymbol]) { + if (!document[AlertElementSymbol]) { const alertElement = document.body.createChild('div'); alertElement.style.position = 'absolute'; alertElement.style.left = '-999em'; @@ -437,9 +438,54 @@ alertElement.style.overflow = 'hidden'; alertElement.setAttribute('role', 'alert'); alertElement.setAttribute('aria-atomic', 'true'); - document[UI.ARIAUtils.AlertElementSymbol] = alertElement; + document[AlertElementSymbol] = alertElement; } - document[UI.ARIAUtils.AlertElementSymbol].textContent = message.trimEndWithMaxLength(10000); -}; -UI.ARIAUtils.AlertElementSymbol = Symbol('AlertElementSybmol'); + document[AlertElementSymbol].textContent = message.trimEndWithMaxLength(10000); +} + +/** Legacy exported object @suppress {const} */ +self.UI = self.UI || {}; +self.UI.ARIAUtils = { + nextId, + bindLabelToControl, + markAsAlert, + markAsButton, + markAsCheckbox, + markAsDialog, + markAsGroup, + markAsLink, + markAsMenuButton, + markAsProgressBar, + markAsTab, + markAsTree, + markAsTreeitem, + markAsTextBox, + markAsMenu, + markAsMenuItem, + markAsMenuItemSubMenu, + markAsListBox, + markAsMultiSelectable, + markAsOption, + markAsRadioGroup, + markAsHidden, + markAsHeading, + markAsPoliteLiveRegion, + setPlaceholder, + markAsPresentation, + markAsStatus, + ensureId, + setControls, + setChecked, + setCheckboxAsIndeterminate, + setExpanded, + unsetExpandable, + setSelected, + setInvalid, + setPressed, + setProgressBarCurrentPercentage, + setAccessibleName, + setDescription, + setActiveDescendant, + alert, +};
diff --git a/third_party/blink/renderer/devtools/front_end/ui/UI.js b/third_party/blink/renderer/devtools/front_end/ui/UI.js new file mode 100644 index 0000000..262177a9 --- /dev/null +++ b/third_party/blink/renderer/devtools/front_end/ui/UI.js
@@ -0,0 +1,5 @@ +import * as ARIAUtils from './ARIAUtils.js'; + +export { + ARIAUtils, +}; \ No newline at end of file
diff --git a/third_party/blink/renderer/devtools/front_end/ui/module.json b/third_party/blink/renderer/devtools/front_end/ui/module.json index bd5f5a1e..2dcde6f 100644 --- a/third_party/blink/renderer/devtools/front_end/ui/module.json +++ b/third_party/blink/renderer/devtools/front_end/ui/module.json
@@ -54,13 +54,16 @@ "SuggestBox.js", "TabbedPane.js", "UIUtils.js", - "ARIAUtils.js", "ZoomManager.js", "ShortcutsScreen.js", "Geometry.js", "XLink.js", "XWidget.js" ], + "modules": [ + "ARIAUtils.js", + "UI.js" + ], "resources": [ "checkboxTextLabel.css", "closeButton.css",
diff --git a/third_party/blink/renderer/devtools/front_end/worker_app.html b/third_party/blink/renderer/devtools/front_end/worker_app.html index e5827b5e..c041d37 100644 --- a/third_party/blink/renderer/devtools/front_end/worker_app.html +++ b/third_party/blink/renderer/devtools/front_end/worker_app.html
@@ -9,8 +9,9 @@ <meta charset="utf-8"> <meta http-equiv="Content-Security-Policy" content="object-src 'none'; script-src 'self' 'unsafe-eval' 'unsafe-inline' https://chrome-devtools-frontend.appspot.com"> <meta name="referrer" content="no-referrer"> - <script src="Runtime.js"></script> - <script src="worker_app.js"></script> + <script type="module" src="root.js"></script> + <script defer src="Runtime.js"></script> + <script defer src="worker_app.js"></script> </head> <body class="undocked" id="-blink-dev-tools"></body> </html>
diff --git a/third_party/blink/renderer/devtools/package.json b/third_party/blink/renderer/devtools/package.json index feea3f1a..42d8d90 100644 --- a/third_party/blink/renderer/devtools/package.json +++ b/third_party/blink/renderer/devtools/package.json
@@ -35,6 +35,10 @@ "bugs": { "url": "https://bugs.chromium.org/p/chromium/issues/list?can=2&q=component:Platform%3EDevTools%20&sort=-opened&colspec=ID%20Stars%20Owner%20Summary%20Modified%20Opened" }, + "type": "module", + "files": [ + "front_end/**/*.mjs" + ], "homepage": "https://devtools.chrome.com", "devDependencies": { "ajv": "^5.1.5"
diff --git a/third_party/blink/renderer/devtools/scripts/build/build_release_applications.py b/third_party/blink/renderer/devtools/scripts/build/build_release_applications.py index 74e1c10..db32b006 100755 --- a/third_party/blink/renderer/devtools/scripts/build/build_release_applications.py +++ b/third_party/blink/renderer/devtools/scripts/build/build_release_applications.py
@@ -133,13 +133,13 @@ output = StringIO() with open(join(self.application_dir, html_name), 'r') as app_input_html: for line in app_input_html: - if '<script ' in line or '<link ' in line: + if ('<script ' in line and 'type="module"' not in line) or '<link ' in line: continue if '</head>' in line: self._write_include_tags(self.descriptors, output) js_file = join(self.application_dir, self.app_file('js')) if path.exists(js_file): - output.write(' <script>%s</script>\n' % minify_js(read_file(js_file))) + output.write(' <script type="module">%s</script>\n' % minify_js(read_file(js_file))) output.write(line) write_file(join(self.output_dir, html_name), output.getvalue()) @@ -154,7 +154,7 @@ def _generate_include_tag(self, resource_path): if resource_path.endswith('.js'): - return ' <script type="text/javascript" src="%s"></script>\n' % resource_path + return ' <script defer src="%s"></script>\n' % resource_path else: assert resource_path
diff --git a/third_party/blink/renderer/devtools/scripts/build/copy_devtools_modules.py b/third_party/blink/renderer/devtools/scripts/build/copy_devtools_modules.py new file mode 100755 index 0000000..10d9ee235 --- /dev/null +++ b/third_party/blink/renderer/devtools/scripts/build/copy_devtools_modules.py
@@ -0,0 +1,32 @@ +#!/usr/bin/env python +# -*- coding: UTF-8 -*- +# +# 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. +""" +Copies the modules into the resources folder +""" + +from os.path import join, relpath +import shutil +import sys + + +def main(argv): + try: + input_path_flag_index = argv.index('--input_path') + input_path = argv[input_path_flag_index + 1] + output_path_flag_index = argv.index('--output_path') + output_path = argv[output_path_flag_index + 1] + devtools_modules = argv[1:input_path_flag_index] + except: + print 'Usage: %s module_1 module_2 ... module_N --input_path <input_path> --output_path <output_path>' % argv[0] + raise + + for file_name in devtools_modules: + shutil.copy(join(input_path, file_name), join(output_path, relpath(file_name, 'front_end'))) + + +if __name__ == '__main__': + sys.exit(main(sys.argv))
diff --git a/third_party/blink/renderer/devtools/scripts/build/modular_build.py b/third_party/blink/renderer/devtools/scripts/build/modular_build.py index 90d6697..c818ad95 100755 --- a/third_party/blink/renderer/devtools/scripts/build/modular_build.py +++ b/third_party/blink/renderer/devtools/scripts/build/modular_build.py
@@ -76,7 +76,7 @@ for name in self.sorted_modules(): module = self.modules[name] skipped_files = set(module.get('skip_compilation', [])) - for script in module.get('scripts', []): + for script in module.get('scripts', []) + module.get('modules', []): if script not in skipped_files: files[path.normpath(path.join(self.application_dir, name, script))] = True return files.keys()
diff --git a/third_party/blink/renderer/devtools/scripts/check_localizability.js b/third_party/blink/renderer/devtools/scripts/check_localizability.js index 000a294..91e7158 100644 --- a/third_party/blink/renderer/devtools/scripts/check_localizability.js +++ b/third_party/blink/renderer/devtools/scripts/check_localizability.js
@@ -284,7 +284,7 @@ if (path.extname(filePath) === '.grdp') return auditGrdpFile(filePath, fileContent, errors); - const ast = esprima.parse(fileContent, {loc: true}); + const ast = esprima.parseModule(fileContent, {loc: true}); const relativeFilePath = localizationUtils.getRelativeFilePathFromSrc(filePath); for (const node of ast.body)
diff --git a/third_party/blink/renderer/devtools/scripts/check_localizable_resources.js b/third_party/blink/renderer/devtools/scripts/check_localizable_resources.js index 50a2859..acf7e72 100644 --- a/third_party/blink/renderer/devtools/scripts/check_localizable_resources.js +++ b/third_party/blink/renderer/devtools/scripts/check_localizable_resources.js
@@ -32,6 +32,7 @@ else await getErrors(); } catch (e) { + console.log(e.stack); console.log(`Error: ${e.message}`); process.exit(1); }
diff --git a/third_party/blink/renderer/devtools/scripts/compile_frontend.py b/third_party/blink/renderer/devtools/scripts/compile_frontend.py index 53ad724f..78a553da 100755 --- a/third_party/blink/renderer/devtools/scripts/compile_frontend.py +++ b/third_party/blink/renderer/devtools/scripts/compile_frontend.py
@@ -77,6 +77,7 @@ GLOBAL_EXTERNS_FILE = to_platform_path(path.join(DEVTOOLS_FRONTEND_PATH, 'externs.js')) DEFAULT_PROTOCOL_EXTERNS_FILE = path.join(DEVTOOLS_FRONTEND_PATH, 'protocol_externs.js') RUNTIME_FILE = to_platform_path(path.join(DEVTOOLS_FRONTEND_PATH, 'Runtime.js')) +ROOT_MODULE_FILE = to_platform_path(path.join(DEVTOOLS_FRONTEND_PATH, 'root.js')) CLOSURE_COMPILER_JAR = to_platform_path(path.join(SCRIPTS_PATH, 'closure', 'compiler.jar')) CLOSURE_RUNNER_JAR = to_platform_path(path.join(SCRIPTS_PATH, 'closure', 'closure_runner', 'closure_runner.jar')) @@ -279,6 +280,8 @@ namespace_externs_path, '--js', RUNTIME_FILE, + '--js', + ROOT_MODULE_FILE, ] all_files = descriptors.all_compiled_files()
diff --git a/third_party/blink/renderer/devtools/scripts/localization_utils/check_localized_strings.js b/third_party/blink/renderer/devtools/scripts/localization_utils/check_localized_strings.js index d2ac8e67..4281b65c 100644 --- a/third_party/blink/renderer/devtools/scripts/localization_utils/check_localized_strings.js +++ b/third_party/blink/renderer/devtools/scripts/localization_utils/check_localized_strings.js
@@ -93,7 +93,7 @@ if (path.basename(filePath) === 'module.json') return parseLocalizableStringFromModuleJson(fileContent, filePath); - const ast = esprima.parse(fileContent, {loc: true}); + const ast = esprima.parseModule(fileContent, {loc: true}); for (const node of ast.body) parseLocalizableStringFromNode(node, filePath); }
diff --git a/third_party/blink/renderer/devtools/tsconfig.json b/third_party/blink/renderer/devtools/tsconfig.json deleted file mode 100644 index 1dbc1cc..0000000 --- a/third_party/blink/renderer/devtools/tsconfig.json +++ /dev/null
@@ -1,5 +0,0 @@ -{ - "compilerOptions": { - "typeRoots": ["../../../devtools-node-modules/third_party/node_modules/@types"] - } -}
diff --git a/third_party/blink/renderer/modules/media_controls/media_controls_impl.cc b/third_party/blink/renderer/modules/media_controls/media_controls_impl.cc index 66787e6..f9a138e 100644 --- a/third_party/blink/renderer/modules/media_controls/media_controls_impl.cc +++ b/third_party/blink/renderer/modules/media_controls/media_controls_impl.cc
@@ -1905,6 +1905,9 @@ } void MediaControlsImpl::ElementSizeChangedTimerFired(TimerBase*) { + if (!MediaElement().isConnected()) + return; + ComputeWhichControlsFit(); // Rerender timeline bar segments when size changed.
diff --git a/third_party/blink/renderer/platform/BUILD.gn b/third_party/blink/renderer/platform/BUILD.gn index 7378cf2..70b2115 100644 --- a/third_party/blink/renderer/platform/BUILD.gn +++ b/third_party/blink/renderer/platform/BUILD.gn
@@ -607,6 +607,8 @@ "fonts/font_global_context.h", "fonts/font_metrics.cc", "fonts/font_metrics.h", + "fonts/font_optical_sizing.cc", + "fonts/font_optical_sizing.h", "fonts/font_orientation.cc", "fonts/font_orientation.h", "fonts/font_platform_data.cc",
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 fdfc98d..5d4d046f 100644 --- a/third_party/blink/renderer/platform/exported/web_runtime_features.cc +++ b/third_party/blink/renderer/platform/exported/web_runtime_features.cc
@@ -714,4 +714,8 @@ RuntimeEnabledFeatures::SetSurfaceEmbeddingFeaturesEnabled(enable); } +void WebRuntimeFeatures::EnableAcceleratedSmallCanvases(bool enable) { + RuntimeEnabledFeatures::SetAcceleratedSmallCanvasesEnabled(enable); +} + } // namespace blink
diff --git a/third_party/blink/renderer/platform/fonts/font_custom_platform_data.cc b/third_party/blink/renderer/platform/fonts/font_custom_platform_data.cc index 790da16..ecc8454 100644 --- a/third_party/blink/renderer/platform/fonts/font_custom_platform_data.cc +++ b/third_party/blink/renderer/platform/fonts/font_custom_platform_data.cc
@@ -67,6 +67,7 @@ bool italic, const FontSelectionRequest& selection_request, const FontSelectionCapabilities& selection_capabilities, + const OpticalSizing& optical_sizing, FontOrientation orientation, const FontVariationSettings* variation_settings) { DCHECK(base_typeface_); @@ -105,15 +106,24 @@ axes.push_back(width_axis); axes.push_back(slant_axis); + bool explicit_opsz_configured = false; if (variation_settings && variation_settings->size() < UINT16_MAX) { axes.ReserveCapacity(variation_settings->size() + axes.size()); for (const auto& setting : *variation_settings) { + if (setting.Tag() == AtomicString("opsz")) + explicit_opsz_configured = true; SkFontArguments::Axis axis = {AtomicStringToFourByteTag(setting.Tag()), SkFloatToScalar(setting.Value())}; axes.push_back(axis); } } + if (optical_sizing == kAutoOpticalSizing && !explicit_opsz_configured) { + SkFontArguments::Axis opsz_axis = {SkSetFourByteTag('o', 'p', 's', 'z'), + SkFloatToScalar(size)}; + axes.push_back(opsz_axis); + } + int index; std::unique_ptr<SkStreamAsset> stream(base_typeface_->openStream(&index)); sk_sp<SkTypeface> sk_variation_font(FontManagerForSubType(font_sub_type)
diff --git a/third_party/blink/renderer/platform/fonts/font_custom_platform_data.h b/third_party/blink/renderer/platform/fonts/font_custom_platform_data.h index bf02f74..7b129c1a 100644 --- a/third_party/blink/renderer/platform/fonts/font_custom_platform_data.h +++ b/third_party/blink/renderer/platform/fonts/font_custom_platform_data.h
@@ -33,6 +33,7 @@ #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_FONTS_FONT_CUSTOM_PLATFORM_DATA_H_ #include "base/macros.h" +#include "third_party/blink/renderer/platform/fonts/font_optical_sizing.h" #include "third_party/blink/renderer/platform/fonts/font_orientation.h" #include "third_party/blink/renderer/platform/fonts/font_selection_types.h" #include "third_party/blink/renderer/platform/platform_export.h" @@ -64,6 +65,7 @@ bool italic, const FontSelectionRequest&, const FontSelectionCapabilities&, + const OpticalSizing& optical_sizing, FontOrientation = FontOrientation::kHorizontal, const FontVariationSettings* = nullptr);
diff --git a/third_party/blink/renderer/platform/fonts/font_description.cc b/third_party/blink/renderer/platform/fonts/font_description.cc index 24e8e83..6745aa4f 100644 --- a/third_party/blink/renderer/platform/fonts/font_description.cc +++ b/third_party/blink/renderer/platform/fonts/font_description.cc
@@ -93,6 +93,7 @@ fields_.typesetting_features_ = default_typesetting_features_; fields_.variant_numeric_ = FontVariantNumeric().fields_as_unsigned_; fields_.subpixel_ascent_descent_ = false; + fields_.font_optical_sizing_ = OpticalSizing::kAutoOpticalSizing; } FontDescription::FontDescription(const FontDescription&) = default; @@ -217,11 +218,12 @@ bool is_unique_match, const FontSelectionRequest& font_selection_request) const { unsigned options = - static_cast<unsigned>(fields_.synthetic_italic_) << 6 | // bit 7 - static_cast<unsigned>(fields_.synthetic_bold_) << 5 | // bit 6 - static_cast<unsigned>(fields_.text_rendering_) << 3 | // bits 4-5 - static_cast<unsigned>(fields_.orientation_) << 1 | // bit 2-3 - static_cast<unsigned>(fields_.subpixel_text_position_); // bit 1 + static_cast<unsigned>(fields_.font_optical_sizing_) << 7 | // bit 8 + static_cast<unsigned>(fields_.synthetic_italic_) << 6 | // bit 7 + static_cast<unsigned>(fields_.synthetic_bold_) << 5 | // bit 6 + static_cast<unsigned>(fields_.text_rendering_) << 3 | // bits 4-5 + static_cast<unsigned>(fields_.orientation_) << 1 | // bit 2-3 + static_cast<unsigned>(fields_.subpixel_text_position_); // bit 1 #if defined(OS_LINUX) || defined(OS_CHROMEOS) float device_scale_factor_for_key = FontCache::DeviceScaleFactor(); @@ -229,7 +231,7 @@ float device_scale_factor_for_key = 1.0f; #endif FontCacheKey cache_key(creation_params, EffectiveFontSize(), - options | font_selection_request_.GetHash() << 8, + options | font_selection_request_.GetHash() << 9, device_scale_factor_for_key, variation_settings_, is_unique_match); return cache_key; @@ -496,7 +498,7 @@ "keyword_size=%u, font_smoothing=%s, text_rendering=%s, " "synthetic_bold=%s, synthetic_italic=%s, subpixel_positioning=%s, " "subpixel_ascent_descent=%s, variant_numeric=[%s], " - "variant_east_asian=[%s]", + "variant_east_asian=[%s], font_optical_sizing=%s", family_list_.ToString().Ascii().c_str(), (feature_settings_ ? feature_settings_->ToString().Ascii().c_str() : ""), (variation_settings_ ? variation_settings_->ToString().Ascii().c_str() @@ -524,7 +526,8 @@ ToBooleanString(UseSubpixelPositioning()), ToBooleanString(SubpixelAscentDescent()), VariantNumeric().ToString().Ascii().c_str(), - VariantEastAsian().ToString().Ascii().c_str()); + VariantEastAsian().ToString().Ascii().c_str(), + blink::ToString(FontOpticalSizing()).Ascii().c_str()); } } // namespace blink
diff --git a/third_party/blink/renderer/platform/fonts/font_description.h b/third_party/blink/renderer/platform/fonts/font_description.h index 5306455..35bc593 100644 --- a/third_party/blink/renderer/platform/fonts/font_description.h +++ b/third_party/blink/renderer/platform/fonts/font_description.h
@@ -32,6 +32,7 @@ #include "third_party/blink/renderer/platform/font_family_names.h" #include "third_party/blink/renderer/platform/fonts/font_cache_key.h" #include "third_party/blink/renderer/platform/fonts/font_family.h" +#include "third_party/blink/renderer/platform/fonts/font_optical_sizing.h" #include "third_party/blink/renderer/platform/fonts/font_orientation.h" #include "third_party/blink/renderer/platform/fonts/font_selection_types.h" #include "third_party/blink/renderer/platform/fonts/font_smoothing_mode.h" @@ -206,6 +207,9 @@ FontSmoothingMode FontSmoothing() const { return static_cast<FontSmoothingMode>(fields_.font_smoothing_); } + OpticalSizing FontOpticalSizing() const { + return static_cast<OpticalSizing>(fields_.font_optical_sizing_); + } TextRenderingMode TextRendering() const { return static_cast<TextRenderingMode>(fields_.text_rendering_); } @@ -282,6 +286,9 @@ void SetFontSmoothing(FontSmoothingMode smoothing) { fields_.font_smoothing_ = smoothing; } + void SetFontOpticalSizing(OpticalSizing font_optical_sizing) { + fields_.font_optical_sizing_ = font_optical_sizing; + } void SetTextRendering(TextRenderingMode rendering) { fields_.text_rendering_ = rendering; UpdateTypesettingFeatures(); @@ -413,6 +420,7 @@ unsigned variant_numeric_ : 8; unsigned variant_east_asian_ : 6; mutable unsigned subpixel_ascent_descent_ : 1; + unsigned font_optical_sizing_ : 1; }; static_assert(sizeof(BitFields) == sizeof(FieldsAsUnsignedType),
diff --git a/third_party/blink/renderer/platform/fonts/font_description_test.cc b/third_party/blink/renderer/platform/fonts/font_description_test.cc index c5935c6b..737580ef 100644 --- a/third_party/blink/renderer/platform/fonts/font_description_test.cc +++ b/third_party/blink/renderer/platform/fonts/font_description_test.cc
@@ -116,7 +116,7 @@ "variant_numeric=[numeric_figure=NormalFigure, " "numeric_spacing=NormalSpacing, numeric_fraction=Normal, ordinal=Off, " "slashed_zero=Off], variant_east_asian=[form=Normal, width=Normal, " - "ruby=false]", + "ruby=false], font_optical_sizing=Auto", description.ToString()); }
diff --git a/third_party/blink/renderer/platform/fonts/font_optical_sizing.cc b/third_party/blink/renderer/platform/fonts/font_optical_sizing.cc new file mode 100644 index 0000000..b912bfa --- /dev/null +++ b/third_party/blink/renderer/platform/fonts/font_optical_sizing.cc
@@ -0,0 +1,19 @@ +// 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 "third_party/blink/renderer/platform/fonts/font_optical_sizing.h" + +namespace blink { + +String ToString(OpticalSizing font_optical_sizing) { + switch (font_optical_sizing) { + case OpticalSizing::kAutoOpticalSizing: + return "Auto"; + case OpticalSizing::kNoneOpticalSizing: + return "None"; + } + return "Unknown"; +} + +} // namespace blink
diff --git a/third_party/blink/renderer/platform/fonts/font_optical_sizing.h b/third_party/blink/renderer/platform/fonts/font_optical_sizing.h new file mode 100644 index 0000000..bd18e89 --- /dev/null +++ b/third_party/blink/renderer/platform/fonts/font_optical_sizing.h
@@ -0,0 +1,17 @@ +// 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 THIRD_PARTY_BLINK_RENDERER_PLATFORM_FONTS_FONT_OPTICAL_SIZING_H_ +#define THIRD_PARTY_BLINK_RENDERER_PLATFORM_FONTS_FONT_OPTICAL_SIZING_H_ + +#include "third_party/blink/renderer/platform/platform_export.h" +#include "third_party/blink/renderer/platform/wtf/text/wtf_string.h" + +namespace blink { +enum OpticalSizing { kAutoOpticalSizing, kNoneOpticalSizing }; + +PLATFORM_EXPORT String ToString(OpticalSizing); +} // namespace blink + +#endif // THIRD_PARTY_BLINK_RENDERER_PLATFORM_FONTS_FONT_OPTICAL_SIZING_H_
diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/third_party/blink/renderer/platform/runtime_enabled_features.json5 index e07a097..3894793 100644 --- a/third_party/blink/renderer/platform/runtime_enabled_features.json5 +++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5
@@ -95,6 +95,10 @@ status: "stable", }, { + name: "AcceleratedSmallCanvases", + status: "stable", + }, + { name: "AccessibilityObjectModel", status: "experimental", }, @@ -1736,7 +1740,7 @@ }, { name: "WebBluetoothScanning", - status: "test", + status: "experimental", }, { name: "WebGL2ComputeContext",
diff --git a/third_party/blink/renderer/platform/testing/font_test_helpers.cc b/third_party/blink/renderer/platform/testing/font_test_helpers.cc index ef7d0b5..1e40f8a 100644 --- a/third_party/blink/renderer/platform/testing/font_test_helpers.cc +++ b/third_party/blink/renderer/platform/testing/font_test_helpers.cc
@@ -43,7 +43,7 @@ font_description.IsSyntheticBold(), font_description.IsSyntheticItalic(), font_description.GetFontSelectionRequest(), normal_capabilities, - font_description.Orientation()); + font_description.FontOpticalSizing(), font_description.Orientation()); return SimpleFontData::Create(platform_data, CustomFontData::Create()); }
diff --git a/third_party/blink/web_tests/TestExpectations b/third_party/blink/web_tests/TestExpectations index e9e1fc49..c1db465 100644 --- a/third_party/blink/web_tests/TestExpectations +++ b/third_party/blink/web_tests/TestExpectations
@@ -3319,7 +3319,7 @@ crbug.com/626703 [ Mac10.11 ] external/wpt/shape-detection/detection-HTMLVideoElement-invalid-state.html [ Timeout ] crbug.com/626703 [ Mac10.12 ] external/wpt/webaudio/the-audio-api/the-mediaelementaudiosourcenode-interface/mediaElementAudioSourceToScriptProcessorTest.html [ Timeout ] crbug.com/626703 [ Mac10.12 ] external/wpt/html/semantics/embedded-content/media-elements/track/track-element/track-mode.html [ Timeout ] -crbug.com/626703 [ Mac10.12 ] external/wpt/html/semantics/embedded-content/media-elements/ready-states/autoplay-hidden.optional.html [ Timeout ] +crbug.com/1004760 [ Mac ] external/wpt/html/semantics/embedded-content/media-elements/ready-states/autoplay-hidden.optional.html [ Timeout ] crbug.com/626703 [ Mac10.12 ] external/wpt/html/semantics/embedded-content/media-elements/track/track-element/track-cue-negative-timestamp-events.html [ Timeout ] crbug.com/626703 external/wpt/webvtt/rendering/cues-with-video/processing-model/bidi/start_alignment.html [ Failure ] crbug.com/626703 [ Retina ] external/wpt/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-tokenization-top-left.html [ Timeout ] @@ -6204,3 +6204,12 @@ # Sheriff 2019-09-12 crbug.com/1003268 [ Win10 ] fast/harness/internals-observe-gc.html [ Failure ] +crbug.com/731018 [ Mac10.13 Debug ] external/wpt/accelerometer/Accelerometer.https.html [ Pass Failure ] +crbug.com/731018 [ Mac10.13 Debug ] external/wpt/gyroscope/Gyroscope.https.html [ Pass Failure ] +crbug.com/731018 [ Mac10.13 Debug ] external/wpt/orientation-sensor/AbsoluteOrientationSensor.https.html [ Pass Failure ] +crbug.com/731018 [ Mac10.13 Debug ] external/wpt/orientation-sensor/RelativeOrientationSensor.https.html [ Pass Failure ] + +# TODO (csmartdalton): Remove after Skia roll and rebaseline +crbug.com/630695 css3/filters/effect-blur-hw.html [ Pass Failure ] +crbug.com/630695 css3/filters/effect-drop-shadow-hw.html [ Pass Failure ] +crbug.com/630695 virtual/scalefactor200/css3/filters/effect-drop-shadow-hw.html [ Pass Failure ]
diff --git a/third_party/blink/web_tests/external/wpt/accelerometer/LinearAccelerationSensor-shake-threshold-manual.https-expected.txt b/third_party/blink/web_tests/external/wpt/accelerometer/LinearAccelerationSensor-shake-threshold-manual.https-expected.txt deleted file mode 100644 index 6cc9b56e..0000000 --- a/third_party/blink/web_tests/external/wpt/accelerometer/LinearAccelerationSensor-shake-threshold-manual.https-expected.txt +++ /dev/null
@@ -1,4 +0,0 @@ -This is a testharness.js-based test. -FAIL Test that when shaking gesture along x axis of the device, the shake threshold can be greater than 25 assert_unreached: NotAllowedError:Permissions to access sensor are not granted Reached unreachable code -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/external/wpt/css/css-fonts/variations/resources/variabletest_box.ttf b/third_party/blink/web_tests/external/wpt/css/css-fonts/variations/resources/variabletest_box.ttf index 53b5b242..0d5bf3e2 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-fonts/variations/resources/variabletest_box.ttf +++ b/third_party/blink/web_tests/external/wpt/css/css-fonts/variations/resources/variabletest_box.ttf Binary files differ
diff --git a/third_party/blink/web_tests/external/wpt/css/css-fonts/variations/variable-opsz-ref.html b/third_party/blink/web_tests/external/wpt/css/css-fonts/variations/variable-opsz-ref.html new file mode 100644 index 0000000..24080345 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-fonts/variations/variable-opsz-ref.html
@@ -0,0 +1,27 @@ +<!DOCTYPE html> +<html class="reftest-wait"> +<meta charset="utf-8"> +<style> + @font-face { + font-family: variabletest_box; + src: url(resources/variabletest_box.ttf); + } + + body { + font-family: variabletest_box, sans-serif; + font-optical-sizing: none; + } +</style> +<div style="font-size: 6px; font-variation-settings: 'opsz' 6;">B</div> +<div style="font-size: 12px; font-variation-settings: 'opsz' 12;">B</div> +<div style="font-size: 24px; font-variation-settings: 'opsz' 24;">B</div> +<div style="font-size: 48px; font-variation-settings: 'opsz' 48;">B</div> +<div style="font-size: 64px; font-variation-settings: 'opsz' 64;">B</div> +<div style="font-size: 128px; font-variation-settings: 'opsz' 128;">B</div> +<div style="font-size: 24px; font-variation-settings: 'opsz' 128;">B</div> +<div style="font-size: 48px; font-variation-settings: 'opsz' 12;">B</div> +<script> + document.fonts.ready.then( + () => { document.documentElement.classList.remove("reftest-wait"); }); +</script> +</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-fonts/variations/variable-opsz.html b/third_party/blink/web_tests/external/wpt/css/css-fonts/variations/variable-opsz.html new file mode 100644 index 0000000..d274a47 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-fonts/variations/variable-opsz.html
@@ -0,0 +1,34 @@ +<!DOCTYPE html> +<html class="reftest-wait"> +<link rel="author" title="Dominik Röttsches" href="drott@chromium.org"> +<link rel="help" href="https://drafts.csswg.org/css-fonts-4/#font-optical-sizing-def"/> +<meta name="assert" content="Ensures that optical size is automatically applied."/> +<link rel="match" href="variable-opsz-ref.html"> +<meta charset="utf-8"> +<style> + @font-face { + font-family: variabletest_box; + src: url(resources/variabletest_box.ttf); + } + + body { + font-family: variabletest_box, sans-serif; + } +</style> +<!-- The variabletest_box font file contains a glyph for letter B which moves a + horizontal bar up from the middle for opsz > 12 and moves it down for opsz > + 12 where the opsz axis ranges from 12 to 128. --> +<div style="font-size: 6px;">B</div> +<div style="font-size: 12px;">B</div> +<div style="font-size: 24px;">B</div> +<div style="font-size: 48px;">B</div> +<div style="font-size: 64px;">B</div> +<div style="font-size: 128px;">B</div> +<!-- Explicit value overrides auto. --> +<div style="font-size: 24px; font-variation-settings: 'opsz' 128;">B</div> +<div style="font-size: 48px; font-optical-sizing: none;">B</div> +<script> + document.fonts.ready.then( + () => { document.documentElement.classList.remove("reftest-wait"); }); +</script> +</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-multicol/animation/column-count-interpolation.html b/third_party/blink/web_tests/external/wpt/css/css-multicol/animation/column-count-interpolation.html index def34ad..66a7513 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-multicol/animation/column-count-interpolation.html +++ b/third_party/blink/web_tests/external/wpt/css/css-multicol/animation/column-count-interpolation.html
@@ -65,4 +65,16 @@ {at: 1, expect: '1'}, {at: 1.5, expect: '1'} ]); + +test_no_interpolation({ + property: 'column-count', + from: 'initial', + to: '5', +}); + +test_no_interpolation({ + property: 'column-count', + from: 'unset', + to: '5', +}); </script>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-multicol/animation/column-rule-color-interpolation.html b/third_party/blink/web_tests/external/wpt/css/css-multicol/animation/column-rule-color-interpolation.html index 060c841..3aba944 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-multicol/animation/column-rule-color-interpolation.html +++ b/third_party/blink/web_tests/external/wpt/css/css-multicol/animation/column-rule-color-interpolation.html
@@ -74,4 +74,32 @@ {at: 1, expect: 'rgb(170, 70, 70)'}, {at: 1.5, expect: 'rgb(220, 20, 70)'}, ]); + +test_interpolation({ + property: 'column-rule-color', + from: 'unset', + to: 'rgb(0, 255, 0)', +}, [ + {at: -5, expect: 'rgb(255, 0, 255)'}, + {at: -0.4, expect: 'rgb(98, 136, 98)'}, + {at: 0, expect: 'rgb(70, 170, 70)'}, + {at: 0.2, expect: 'rgb(56, 187, 56)'}, + {at: 0.6, expect: 'rgb(28, 221, 28)'}, + {at: 1, expect: 'rgb(0, 255, 0)'}, + {at: 1.5, expect: 'rgb(0, 255, 0)'}, +]); + +test_interpolation({ + property: 'column-rule-color', + from: 'orange', + to: 'blue' +}, [ + {at: -5, expect: '#ffff00'}, + {at: -0.4, expect: '#ffe700'}, + {at: 0, expect: 'orange'}, + {at: 0.2, expect: '#cc8433'}, + {at: 0.6, expect: '#664299'}, + {at: 1, expect: 'blue'}, + {at: 1.5, expect: 'blue'} +]); </script>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-multicol/animation/column-rule-width.html b/third_party/blink/web_tests/external/wpt/css/css-multicol/animation/column-rule-width-interpolation.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/css/css-multicol/animation/column-rule-width.html rename to third_party/blink/web_tests/external/wpt/css/css-multicol/animation/column-rule-width-interpolation.html
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/font-optical-sizing-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/font-optical-sizing-expected.txt deleted file mode 100644 index f0f962fa..0000000 --- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/font-optical-sizing-expected.txt +++ /dev/null
@@ -1,16 +0,0 @@ -This is a testharness.js-based test. -FAIL Can set 'font-optical-sizing' to CSS-wide keywords Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: font-optical-sizing -FAIL Can set 'font-optical-sizing' to var() references Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: font-optical-sizing -FAIL Can set 'font-optical-sizing' to the 'auto' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: font-optical-sizing -FAIL Can set 'font-optical-sizing' to the 'none' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: font-optical-sizing -PASS Setting 'font-optical-sizing' to a length throws TypeError -PASS Setting 'font-optical-sizing' to a percent throws TypeError -PASS Setting 'font-optical-sizing' to a time throws TypeError -PASS Setting 'font-optical-sizing' to an angle throws TypeError -PASS Setting 'font-optical-sizing' to a flexible length throws TypeError -PASS Setting 'font-optical-sizing' to a number throws TypeError -PASS Setting 'font-optical-sizing' to a position throws TypeError -PASS Setting 'font-optical-sizing' to a URL throws TypeError -PASS Setting 'font-optical-sizing' to a transform throws TypeError -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/external/wpt/lifecycle/resources/child.html b/third_party/blink/web_tests/external/wpt/lifecycle/resources/child.html new file mode 100644 index 0000000..708bbfe --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/lifecycle/resources/child.html
@@ -0,0 +1,15 @@ +<!doctype html> +<html> +<head><title>Frozen Child iframe</title></head> +<body> +<script> + +// This child removes itself from the parent on dispatch of the freeze event. +// Regression test of https://crbug.com/994442 +window.document.addEventListener("freeze", () => { + window.frameElement.remove(); +}); + +</script> +</body> +</html>
diff --git a/third_party/blink/web_tests/external/wpt/lifecycle/resources/window.html b/third_party/blink/web_tests/external/wpt/lifecycle/resources/window.html index a7659af4..58181f32 100644 --- a/third_party/blink/web_tests/external/wpt/lifecycle/resources/window.html +++ b/third_party/blink/web_tests/external/wpt/lifecycle/resources/window.html
@@ -6,6 +6,7 @@ <script src="/common/utils.js"></script> <body> <h1>This window will be frozen</h1> +<iframe id="child_frame" src="child.html"></iframe> <script> const freezingStepName = 'testOnFreeze';
diff --git a/third_party/blink/web_tests/external/wpt/scroll-to-text-fragment/scroll-to-text-fragment.html b/third_party/blink/web_tests/external/wpt/scroll-to-text-fragment/scroll-to-text-fragment.html index 3e3cfcb..85f07f38 100644 --- a/third_party/blink/web_tests/external/wpt/scroll-to-text-fragment/scroll-to-text-fragment.html +++ b/third_party/blink/web_tests/external/wpt/scroll-to-text-fragment/scroll-to-text-fragment.html
@@ -16,6 +16,7 @@ { fragment: '##targetText=this,test,-page', expect_position: 'text' }, { fragment: '##targetText=this%20is%20a%20test%20page', expect_position: 'text' }, { fragment: '##targetText=this&targetText=test,page', expect_position: 'text' }, + { fragment: '##targetText=tes&targetText=age', expect_position: 'top' }, { fragment: '#pagestate##targetText=test', expect_position: 'text' }, { fragment: '#pagestate##targetText=nomatch', expect_position: 'top' }, { fragment: '#element##targetText=nomatch', expect_position: 'element' },
diff --git a/third_party/blink/web_tests/fast/css/getComputedStyle/computed-style-empty-font-family-expected.txt b/third_party/blink/web_tests/fast/css/getComputedStyle/computed-style-empty-font-family-expected.txt index 3a9e287..7bb393518 100644 --- a/third_party/blink/web_tests/fast/css/getComputedStyle/computed-style-empty-font-family-expected.txt +++ b/third_party/blink/web_tests/fast/css/getComputedStyle/computed-style-empty-font-family-expected.txt
@@ -2,6 +2,7 @@ font-family: ""; font-kerning: auto; +font-optical-sizing: auto; font-size: 16px; font-size-adjust: none; font-stretch: 100%;
diff --git a/third_party/blink/web_tests/fast/css/getComputedStyle/computed-style-font-family-expected.txt b/third_party/blink/web_tests/fast/css/getComputedStyle/computed-style-font-family-expected.txt index b037e3b..1772273 100644 --- a/third_party/blink/web_tests/fast/css/getComputedStyle/computed-style-font-family-expected.txt +++ b/third_party/blink/web_tests/fast/css/getComputedStyle/computed-style-font-family-expected.txt
@@ -2,6 +2,7 @@ font-family: monospace, "Lucida Grande", sans-serif; font-kerning: auto; +font-optical-sizing: auto; font-size: 16px; font-size-adjust: none; font-stretch: 100%;
diff --git a/third_party/blink/web_tests/fast/css/getComputedStyle/computed-style-listing-expected.txt b/third_party/blink/web_tests/fast/css/getComputedStyle/computed-style-listing-expected.txt index 8fb0590..8bb66c72 100644 --- a/third_party/blink/web_tests/fast/css/getComputedStyle/computed-style-listing-expected.txt +++ b/third_party/blink/web_tests/fast/css/getComputedStyle/computed-style-listing-expected.txt
@@ -148,6 +148,7 @@ flood-color: rgb(0, 0, 0) flood-opacity: 1 font-kerning: auto +font-optical-sizing: auto font-size: 16px font-size-adjust: none font-stretch: 100%
diff --git a/third_party/blink/web_tests/fast/css/getComputedStyle/computed-style-without-renderer-listing-expected.txt b/third_party/blink/web_tests/fast/css/getComputedStyle/computed-style-without-renderer-listing-expected.txt index 7e2b26b..b2567b8 100644 --- a/third_party/blink/web_tests/fast/css/getComputedStyle/computed-style-without-renderer-listing-expected.txt +++ b/third_party/blink/web_tests/fast/css/getComputedStyle/computed-style-without-renderer-listing-expected.txt
@@ -148,6 +148,7 @@ flood-color: rgb(0, 0, 0) flood-opacity: 1 font-kerning: auto +font-optical-sizing: auto font-size: 16px font-size-adjust: none font-stretch: 100%
diff --git a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-accelerated-keyboard-navigation-expected.png b/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-accelerated-keyboard-navigation-expected.png deleted file mode 100644 index 01646946..0000000 --- a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-accelerated-keyboard-navigation-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-accelerated-keyboard-navigation.html b/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-accelerated-keyboard-navigation.html index 546446f..bf83b3e1 100644 --- a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-accelerated-keyboard-navigation.html +++ b/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-accelerated-keyboard-navigation.html
@@ -2,7 +2,6 @@ <html> <head> <script> -testRunner.setUseMockTheme(false); testRunner.waitUntilDone(); </script> <script src='../../../forms/resources/picker-common.js'></script>
diff --git a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-click-expected.png b/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-click-expected.png deleted file mode 100644 index 01646946..0000000 --- a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-click-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-click.html b/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-click.html index 78a992aa..04189d5 100644 --- a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-click.html +++ b/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-click.html
@@ -2,7 +2,6 @@ <html> <head> <script> -testRunner.setUseMockTheme(false); testRunner.waitUntilDone(); </script> <script src='../../../forms/resources/picker-common.js'></script>
diff --git a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-left-corner-expected.png b/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-left-corner-expected.png deleted file mode 100644 index 6a88d971..0000000 --- a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-left-corner-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-left-corner.html b/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-left-corner.html index 92fb7e9..ccc29ab 100644 --- a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-left-corner.html +++ b/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-left-corner.html
@@ -2,7 +2,6 @@ <html> <head> <script> -testRunner.setUseMockTheme(false); testRunner.waitUntilDone(); </script> <script src='../../../forms/resources/picker-common.js'></script>
diff --git a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-right-corner-expected.png b/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-right-corner-expected.png deleted file mode 100644 index 6a88d971..0000000 --- a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-right-corner-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-right-corner.html b/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-right-corner.html index 6c20c83..c807e84d 100644 --- a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-right-corner.html +++ b/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-right-corner.html
@@ -2,7 +2,6 @@ <html> <head> <script> -testRunner.setUseMockTheme(false); testRunner.waitUntilDone(); </script> <script src='../../../forms/resources/picker-common.js'></script>
diff --git a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-left-corner-expected.png b/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-left-corner-expected.png deleted file mode 100644 index 6a88d971..0000000 --- a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-left-corner-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-left-corner.html b/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-left-corner.html index 40e1071..fd5f5437 100644 --- a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-left-corner.html +++ b/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-left-corner.html
@@ -2,7 +2,6 @@ <html> <head> <script> -testRunner.setUseMockTheme(false); testRunner.waitUntilDone(); </script> <script src='../../../forms/resources/picker-common.js'></script>
diff --git a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-right-corner-expected.png b/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-right-corner-expected.png deleted file mode 100644 index 6a88d971..0000000 --- a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-right-corner-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-right-corner.html b/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-right-corner.html index 85855617..a2f52f2 100644 --- a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-right-corner.html +++ b/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-right-corner.html
@@ -2,7 +2,6 @@ <html> <head> <script> -testRunner.setUseMockTheme(false); testRunner.waitUntilDone(); </script> <script src='../../../forms/resources/picker-common.js'></script>
diff --git a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-drag-expected.png b/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-drag-expected.png deleted file mode 100644 index 01646946..0000000 --- a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-drag-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-drag.html b/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-drag.html index 68580ee..3e53ba8 100644 --- a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-drag.html +++ b/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-drag.html
@@ -2,7 +2,6 @@ <html> <head> <script> -testRunner.setUseMockTheme(false); testRunner.waitUntilDone(); </script> <script src='../../../forms/resources/picker-common.js'></script>
diff --git a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-after-drag.html b/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-after-drag.html index f21e463..a1663fb 100644 --- a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-after-drag.html +++ b/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-after-drag.html
@@ -2,7 +2,6 @@ <html> <head> <script> -testRunner.setUseMockTheme(false); testRunner.waitUntilDone(); </script> <script src='../../../forms/resources/picker-common.js'></script>
diff --git a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-expected.png b/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-expected.png deleted file mode 100644 index 01646946..0000000 --- a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation.html b/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation.html index 9707bdf..4aaefa7 100644 --- a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation.html +++ b/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation.html
@@ -2,7 +2,6 @@ <html> <head> <script> -testRunner.setUseMockTheme(false); testRunner.waitUntilDone(); </script> <script src='../../../forms/resources/picker-common.js'></script>
diff --git a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png b/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png deleted file mode 100644 index 6a88d971..0000000 --- a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-bottom-right-corner.html b/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-bottom-right-corner.html index 145d2673..70d228d6 100644 --- a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-bottom-right-corner.html +++ b/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-bottom-right-corner.html
@@ -2,7 +2,6 @@ <html> <head> <script> -testRunner.setUseMockTheme(false); testRunner.waitUntilDone(); </script> <script src='../../../forms/resources/picker-common.js'></script>
diff --git a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-top-right-corner-expected.png b/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-top-right-corner-expected.png deleted file mode 100644 index 6a88d971..0000000 --- a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-top-right-corner-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-top-right-corner.html b/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-top-right-corner.html index 7192bff..7c68578 100644 --- a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-top-right-corner.html +++ b/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-top-right-corner.html
@@ -2,7 +2,6 @@ <html> <head> <script> -testRunner.setUseMockTheme(false); testRunner.waitUntilDone(); </script> <script src='../../../forms/resources/picker-common.js'></script>
diff --git a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-bottom-right-corner-expected.png b/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-bottom-right-corner-expected.png deleted file mode 100644 index 6a88d971..0000000 --- a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-bottom-right-corner-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-bottom-right-corner.html b/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-bottom-right-corner.html index cdfa23e..c713d79 100644 --- a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-bottom-right-corner.html +++ b/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-bottom-right-corner.html
@@ -2,7 +2,6 @@ <html> <head> <script> -testRunner.setUseMockTheme(false); testRunner.waitUntilDone(); </script> <script src='../../../forms/resources/picker-common.js'></script>
diff --git a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-top-right-corner-expected.png b/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-top-right-corner-expected.png deleted file mode 100644 index 6a88d971..0000000 --- a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-top-right-corner-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-top-right-corner.html b/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-top-right-corner.html index 052fff42..46d9637 100644 --- a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-top-right-corner.html +++ b/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-top-right-corner.html
@@ -2,7 +2,6 @@ <html> <head> <script> -testRunner.setUseMockTheme(false); testRunner.waitUntilDone(); </script> <script src='../../../forms/resources/picker-common.js'></script>
diff --git a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png b/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png deleted file mode 100644 index 6a88d971..0000000 --- a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-bottom-left-corner.html b/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-bottom-left-corner.html index e652438..1ba280e 100644 --- a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-bottom-left-corner.html +++ b/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-bottom-left-corner.html
@@ -2,7 +2,6 @@ <html> <head> <script> -testRunner.setUseMockTheme(false); testRunner.waitUntilDone(); </script> <script src='../../../forms/resources/picker-common.js'></script>
diff --git a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-top-left-corner-expected.png b/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-top-left-corner-expected.png deleted file mode 100644 index 6a88d971..0000000 --- a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-top-left-corner-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-top-left-corner.html b/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-top-left-corner.html index 124bc4d5..6e7b71a 100644 --- a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-top-left-corner.html +++ b/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-top-left-corner.html
@@ -2,7 +2,6 @@ <html> <head> <script> -testRunner.setUseMockTheme(false); testRunner.waitUntilDone(); </script> <script src='../../../forms/resources/picker-common.js'></script>
diff --git a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-bottom-left-corner-expected.png b/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-bottom-left-corner-expected.png deleted file mode 100644 index 6a88d971..0000000 --- a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-bottom-left-corner-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-bottom-left-corner.html b/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-bottom-left-corner.html index 5a90859..9928c90 100644 --- a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-bottom-left-corner.html +++ b/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-bottom-left-corner.html
@@ -2,7 +2,6 @@ <html> <head> <script> -testRunner.setUseMockTheme(false); testRunner.waitUntilDone(); </script> <script src='../../../forms/resources/picker-common.js'></script>
diff --git a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-top-left-corner-expected.png b/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-top-left-corner-expected.png deleted file mode 100644 index 6a88d971..0000000 --- a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-top-left-corner-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-top-left-corner.html b/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-top-left-corner.html index b61a9b9d..407cf7b 100644 --- a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-top-left-corner.html +++ b/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-top-left-corner.html
@@ -2,7 +2,6 @@ <html> <head> <script> -testRunner.setUseMockTheme(false); testRunner.waitUntilDone(); </script> <script src='../../../forms/resources/picker-common.js'></script>
diff --git a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png b/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png deleted file mode 100644 index 6a88d971..0000000 --- a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-left-corner.html b/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-left-corner.html index 6268ffd..7ba4614 100644 --- a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-left-corner.html +++ b/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-left-corner.html
@@ -2,7 +2,6 @@ <html> <head> <script> -testRunner.setUseMockTheme(false); testRunner.waitUntilDone(); </script> <script src='../../../forms/resources/picker-common.js'></script>
diff --git a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png b/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png deleted file mode 100644 index 6a88d971..0000000 --- a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-right-corner.html b/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-right-corner.html index fd9193a..2b9a2ea6 100644 --- a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-right-corner.html +++ b/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-right-corner.html
@@ -2,7 +2,6 @@ <html> <head> <script> -testRunner.setUseMockTheme(false); testRunner.waitUntilDone(); </script> <script src='../../../forms/resources/picker-common.js'></script>
diff --git a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-left-corner-expected.png b/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-left-corner-expected.png deleted file mode 100644 index 6a88d971..0000000 --- a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-left-corner-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-left-corner.html b/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-left-corner.html index 61292a5..3c5c37ee 100644 --- a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-left-corner.html +++ b/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-left-corner.html
@@ -2,7 +2,6 @@ <html> <head> <script> -testRunner.setUseMockTheme(false); testRunner.waitUntilDone(); </script> <script src='../../../forms/resources/picker-common.js'></script>
diff --git a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-right-corner-expected.png b/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-right-corner-expected.png deleted file mode 100644 index 6a88d971..0000000 --- a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-right-corner-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-right-corner.html b/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-right-corner.html index 30eaabf..6c7ef14 100644 --- a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-right-corner.html +++ b/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-right-corner.html
@@ -2,7 +2,6 @@ <html> <head> <script> -testRunner.setUseMockTheme(false); testRunner.waitUntilDone(); </script> <script src='../../../forms/resources/picker-common.js'></script>
diff --git a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-hex-format-expected.png b/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-hex-format-expected.png deleted file mode 100644 index 28ed0b3..0000000 --- a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-hex-format-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-hex-format.html b/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-hex-format.html index 8e52fef..fe73b56 100644 --- a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-hex-format.html +++ b/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-hex-format.html
@@ -2,7 +2,6 @@ <html> <head> <script> -testRunner.setUseMockTheme(false); testRunner.waitUntilDone(); </script> <script src='../../../forms/resources/picker-common.js'></script>
diff --git a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-hsl-format-expected.png b/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-hsl-format-expected.png deleted file mode 100644 index 28ed0b3..0000000 --- a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-hsl-format-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-hsl-format.html b/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-hsl-format.html index 2ea7e7e..41aa3798 100644 --- a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-hsl-format.html +++ b/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-hsl-format.html
@@ -2,7 +2,6 @@ <html> <head> <script> -testRunner.setUseMockTheme(false); testRunner.waitUntilDone(); </script> <script src='../../../forms/resources/picker-common.js'></script>
diff --git a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-accelerated-keyboard-navigation-expected.png b/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-accelerated-keyboard-navigation-expected.png deleted file mode 100644 index d5370777..0000000 --- a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-accelerated-keyboard-navigation-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-accelerated-keyboard-navigation.html b/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-accelerated-keyboard-navigation.html index b8905bb..cdff53a 100644 --- a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-accelerated-keyboard-navigation.html +++ b/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-accelerated-keyboard-navigation.html
@@ -2,7 +2,6 @@ <html> <head> <script> -testRunner.setUseMockTheme(false); testRunner.waitUntilDone(); </script> <script src='../../../forms/resources/picker-common.js'></script>
diff --git a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-click-expected.png b/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-click-expected.png deleted file mode 100644 index d5370777..0000000 --- a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-click-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-click.html b/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-click.html index b24aad3e..cc6bbc1 100644 --- a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-click.html +++ b/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-click.html
@@ -2,7 +2,6 @@ <html> <head> <script> -testRunner.setUseMockTheme(false); testRunner.waitUntilDone(); </script> <script src='../../../forms/resources/picker-common.js'></script>
diff --git a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-drag-expected.png b/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-drag-expected.png deleted file mode 100644 index d5370777..0000000 --- a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-drag-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-drag.html b/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-drag.html index 2bc9ad4..00a7180 100644 --- a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-drag.html +++ b/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-drag.html
@@ -2,7 +2,6 @@ <html> <head> <script> -testRunner.setUseMockTheme(false); testRunner.waitUntilDone(); </script> <script src='../../../forms/resources/picker-common.js'></script>
diff --git a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-keyboard-navigation-expected.png b/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-keyboard-navigation-expected.png deleted file mode 100644 index d5370777..0000000 --- a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-keyboard-navigation-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-keyboard-navigation.html b/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-keyboard-navigation.html index 29fb4863..e7c3e99 100644 --- a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-keyboard-navigation.html +++ b/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-keyboard-navigation.html
@@ -2,7 +2,6 @@ <html> <head> <script> -testRunner.setUseMockTheme(false); testRunner.waitUntilDone(); </script> <script src='../../../forms/resources/picker-common.js'></script>
diff --git a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-left-edge-zero-hue.html b/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-left-edge-zero-hue.html index a15d319f0..26db7cc 100644 --- a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-left-edge-zero-hue.html +++ b/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-left-edge-zero-hue.html
@@ -2,7 +2,6 @@ <html> <head> <script> -testRunner.setUseMockTheme(false); testRunner.waitUntilDone(); </script> <script src='../../../forms/resources/picker-common.js'></script>
diff --git a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-right-edge-zero-hue-expected.png b/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-right-edge-zero-hue-expected.png deleted file mode 100644 index dae8a211..0000000 --- a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-right-edge-zero-hue-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-right-edge-zero-hue.html b/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-right-edge-zero-hue.html index a0d8e771..d911e02 100644 --- a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-right-edge-zero-hue.html +++ b/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-right-edge-zero-hue.html
@@ -2,7 +2,6 @@ <html> <head> <script> -testRunner.setUseMockTheme(false); testRunner.waitUntilDone(); </script> <script src='../../../forms/resources/picker-common.js'></script>
diff --git a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-imperfect-match-expected.png b/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-imperfect-match-expected.png deleted file mode 100644 index b846542..0000000 --- a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-imperfect-match-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-imperfect-match.html b/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-imperfect-match.html index 2653fcf..eb46ed13 100644 --- a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-imperfect-match.html +++ b/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-imperfect-match.html
@@ -2,7 +2,6 @@ <html> <head> <script> -testRunner.setUseMockTheme(false); testRunner.waitUntilDone(); </script> <script src='../../../forms/resources/picker-common.js'></script>
diff --git a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-manual-color-change-expected.png b/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-manual-color-change-expected.png deleted file mode 100644 index b846542..0000000 --- a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-manual-color-change-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-manual-color-change.html b/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-manual-color-change.html index 8b40fdd2..ffea59c 100644 --- a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-manual-color-change.html +++ b/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-manual-color-change.html
@@ -2,7 +2,6 @@ <html> <head> <script> -testRunner.setUseMockTheme(false); testRunner.waitUntilDone(); </script> <script src='../../../forms/resources/picker-common.js'></script>
diff --git a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-set-value-expected.png b/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-set-value-expected.png deleted file mode 100644 index 28ed0b3..0000000 --- a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-set-value-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-set-value.html b/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-set-value.html index ed9c32a0..c14a9f36 100644 --- a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-set-value.html +++ b/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-set-value.html
@@ -2,7 +2,6 @@ <html> <head> <script> -testRunner.setUseMockTheme(false); testRunner.waitUntilDone(); </script> <script src='../../../forms/resources/picker-common.js'></script>
diff --git a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-value-attribute-expected.png b/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-value-attribute-expected.png deleted file mode 100644 index 28ed0b3..0000000 --- a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-value-attribute-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-value-attribute.html b/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-value-attribute.html index eba6318..34be5d5a 100644 --- a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-value-attribute.html +++ b/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-value-attribute.html
@@ -2,7 +2,6 @@ <html> <head> <script> -testRunner.setUseMockTheme(false); testRunner.waitUntilDone(); </script> <script src='../../../forms/resources/picker-common.js'></script>
diff --git a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125.html b/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125.html index 20808cb..1f065ba9 100644 --- a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125.html +++ b/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125.html
@@ -2,7 +2,6 @@ <html> <head> <script> -testRunner.setUseMockTheme(false); testRunner.waitUntilDone(); </script> <script src='../../../forms/resources/picker-common.js'></script>
diff --git a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-zoom200-expected.png b/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-zoom200-expected.png deleted file mode 100644 index 1009037..0000000 --- a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-zoom200-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-zoom200.html b/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-zoom200.html index 8958196..ca885b5 100644 --- a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-zoom200.html +++ b/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-zoom200.html
@@ -2,7 +2,6 @@ <html> <head> <script> -testRunner.setUseMockTheme(false); testRunner.waitUntilDone(); </script> <script src='../../../forms/resources/picker-common.js'></script>
diff --git a/third_party/blink/web_tests/http/tests/devtools/a11y-axe-core/performance/landing-page-a11y-test-expected.txt b/third_party/blink/web_tests/http/tests/devtools/a11y-axe-core/performance/landing-page-a11y-test-expected.txt new file mode 100644 index 0000000..eebd1e4 --- /dev/null +++ b/third_party/blink/web_tests/http/tests/devtools/a11y-axe-core/performance/landing-page-a11y-test-expected.txt
@@ -0,0 +1,4 @@ +Tests accessibility in Performance landing page using the axe-core linter. +aXe violations: [] + +
diff --git a/third_party/blink/web_tests/http/tests/devtools/a11y-axe-core/performance/landing-page-a11y-test.js b/third_party/blink/web_tests/http/tests/devtools/a11y-axe-core/performance/landing-page-a11y-test.js new file mode 100644 index 0000000..982b291 --- /dev/null +++ b/third_party/blink/web_tests/http/tests/devtools/a11y-axe-core/performance/landing-page-a11y-test.js
@@ -0,0 +1,15 @@ +// 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. + +(async function() { + TestRunner.addResult('Tests accessibility in Performance landing page using the axe-core linter.'); + + await TestRunner.loadModule('axe_core_test_runner'); + const view = 'timeline'; + await UI.viewManager.showView(view); + const widget = await UI.viewManager.view(view).widget(); + await AxeCoreTestRunner.runValidation(widget.element); + + TestRunner.completeTest(); +})(); \ No newline at end of file
diff --git a/third_party/blink/web_tests/http/tests/devtools/console/console-call-getter-on-proto-expected.txt b/third_party/blink/web_tests/http/tests/devtools/console/console-call-getter-on-proto-expected.txt index 7047e39a..f075c857 100644 --- a/third_party/blink/web_tests/http/tests/devtools/console/console-call-getter-on-proto-expected.txt +++ b/third_party/blink/web_tests/http/tests/devtools/console/console-call-getter-on-proto-expected.txt
@@ -4,7 +4,7 @@ foo: 239 value: 239 __proto__: A - constructor: ƒ () foo: 239 + constructor: ƒ () __proto__: Object
diff --git a/third_party/blink/web_tests/http/tests/devtools/console/console-dir-expected.txt b/third_party/blink/web_tests/http/tests/devtools/console/console-dir-expected.txt index 22b6e3d..3bc64a10 100644 --- a/third_party/blink/web_tests/http/tests/devtools/console/console-dir-expected.txt +++ b/third_party/blink/web_tests/http/tests/devtools/console/console-dir-expected.txt
@@ -6,32 +6,32 @@ length: 2 __proto__: Array(0) console-dir.js:13 NodeList(1) - 0: html length: 1 + 0: html __proto__: NodeList console-dir.js:14 XPathResult - booleanValue: (...) - invalidIteratorState: false - numberValue: (...) resultType: 4 - singleNodeValue: (...) - snapshotLength: (...) + numberValue: (...) stringValue: (...) + booleanValue: (...) + singleNodeValue: (...) + invalidIteratorState: false + snapshotLength: (...) __proto__: XPathResult console-dir.js:24 Object + $foo5_: 0 + " a b ": " a b " + c d: "c d" "": "" " ": " " - " a b ": " a b " - $foo5_: 0 "a↵↵b↵c": "a↵↵b↵c" - c d: "c d" negZero: -0 __proto__: Object console-dir.js:27 ƒ anonymous() - arguments: null - caller: null length: 0 name: "" + arguments: null + caller: null prototype: {constructor: ƒ} __proto__: ƒ () [[FunctionLocation]]: console-dir.js:27 @@ -58,19 +58,19 @@ [300000000 … 399999999] __proto__: TypedArray console-dir.js:47 Event - bubbles: false - cancelBubble: false - cancelable: false - composed: false - currentTarget: null - defaultPrevented: false - eventPhase: 0 isTrusted: false - path: [] - returnValue: true - srcElement: null - target: null type: "" + target: null + currentTarget: null + eventPhase: 0 + bubbles: false + cancelable: false + defaultPrevented: false + composed: false + srcElement: null + returnValue: true + cancelBubble: false + path: [] timeStamp: 0 __proto__: Event
diff --git a/third_party/blink/web_tests/http/tests/devtools/console/console-format-es6-expected.txt b/third_party/blink/web_tests/http/tests/devtools/console/console-format-es6-expected.txt index b7c5528f..6df270c 100644 --- a/third_party/blink/web_tests/http/tests/devtools/console/console-format-es6-expected.txt +++ b/third_party/blink/web_tests/http/tests/devtools/console/console-format-es6-expected.txt
@@ -119,8 +119,8 @@ globals[4] Symbol(a) console-format-es6.js:15 {a: Symbol(), Symbol(a): 2} - a: Symbol() getter: (...) + a: Symbol() Symbol(a): 2 get getter: ƒ getter() __proto__: Object @@ -130,8 +130,8 @@ __proto__: Array(0) globals[5] {a: Symbol(), Symbol(a): 2} - a: Symbol() getter: (...) + a: Symbol() Symbol(a): 2 get getter: ƒ getter() __proto__: Object
diff --git a/third_party/blink/web_tests/http/tests/devtools/console/console-format-expected.txt b/third_party/blink/web_tests/http/tests/devtools/console/console-format-expected.txt index b9017637..54ab1e7 100644 --- a/third_party/blink/web_tests/http/tests/devtools/console/console-format-expected.txt +++ b/third_party/blink/web_tests/http/tests/devtools/console/console-format-expected.txt
@@ -465,12 +465,12 @@ globals[25] <svg id="svg-node"></svg> console-format.js:21 {enumerableProp: 4, __underscoreEnumerableProp__: 5, __underscoreNonEnumerableProp: 2, abc: 3, getFoo: ƒ, …} + bar: (...) enumerableProp: 4 __underscoreEnumerableProp__: 5 - abc: 3 - bar: (...) - getFoo: ƒ () __underscoreNonEnumerableProp: 2 + abc: 3 + getFoo: ƒ () get bar: ƒ () set bar: ƒ (x) __proto__: Object @@ -480,12 +480,12 @@ __proto__: Array(0) globals[26] {enumerableProp: 4, __underscoreEnumerableProp__: 5, __underscoreNonEnumerableProp: 2, abc: 3, getFoo: ƒ, …} + bar: (...) enumerableProp: 4 __underscoreEnumerableProp__: 5 - abc: 3 - bar: (...) - getFoo: ƒ () __underscoreNonEnumerableProp: 2 + abc: 3 + getFoo: ƒ () get bar: ƒ () set bar: ƒ (x) __proto__: Object @@ -514,16 +514,16 @@ ƒ Object() { [native code] } console-format.js:21 {constructor: ƒ, __defineGetter__: ƒ, __defineSetter__: ƒ, hasOwnProperty: ƒ, __lookupGetter__: ƒ, …} constructor: ƒ Object() - hasOwnProperty: ƒ hasOwnProperty() - isPrototypeOf: ƒ isPrototypeOf() - propertyIsEnumerable: ƒ propertyIsEnumerable() - toLocaleString: ƒ toLocaleString() - toString: ƒ toString() - valueOf: ƒ valueOf() __defineGetter__: ƒ __defineGetter__() __defineSetter__: ƒ __defineSetter__() + hasOwnProperty: ƒ hasOwnProperty() __lookupGetter__: ƒ __lookupGetter__() __lookupSetter__: ƒ __lookupSetter__() + isPrototypeOf: ƒ isPrototypeOf() + propertyIsEnumerable: ƒ propertyIsEnumerable() + toString: ƒ toString() + valueOf: ƒ valueOf() + toLocaleString: ƒ toLocaleString() get __proto__: ƒ __proto__() set __proto__: ƒ __proto__() console-format.js:22 [{…}] @@ -533,16 +533,16 @@ globals[30] {constructor: ƒ, __defineGetter__: ƒ, __defineSetter__: ƒ, hasOwnProperty: ƒ, __lookupGetter__: ƒ, …} constructor: ƒ Object() - hasOwnProperty: ƒ hasOwnProperty() - isPrototypeOf: ƒ isPrototypeOf() - propertyIsEnumerable: ƒ propertyIsEnumerable() - toLocaleString: ƒ toLocaleString() - toString: ƒ toString() - valueOf: ƒ valueOf() __defineGetter__: ƒ __defineGetter__() __defineSetter__: ƒ __defineSetter__() + hasOwnProperty: ƒ hasOwnProperty() __lookupGetter__: ƒ __lookupGetter__() __lookupSetter__: ƒ __lookupSetter__() + isPrototypeOf: ƒ isPrototypeOf() + propertyIsEnumerable: ƒ propertyIsEnumerable() + toString: ƒ toString() + valueOf: ƒ valueOf() + toLocaleString: ƒ toLocaleString() get __proto__: ƒ __proto__() set __proto__: ƒ __proto__() console-format.js:21 ƒ ( /**/ foo/**/, /*/**/bar, @@ -585,13 +585,13 @@ __proto__: String [[PrimitiveValue]]: "abc" console-format.js:21 Uint16Array(3) [1, 2, 3] - 0: 1 - 1: 2 - 2: 3 buffer: (...) byteLength: (...) byteOffset: (...) length: (...) + 0: 1 + 1: 2 + 2: 3 Symbol(Symbol.toStringTag): (...) __proto__: TypedArray console-format.js:22 [Uint16Array(3)] @@ -600,13 +600,13 @@ __proto__: Array(0) globals[34] Uint16Array(3) [1, 2, 3] - 0: 1 - 1: 2 - 2: 3 buffer: (...) byteLength: (...) byteOffset: (...) length: (...) + 0: 1 + 1: 2 + 2: 3 Symbol(Symbol.toStringTag): (...) __proto__: TypedArray console-format.js:21 #text @@ -624,11 +624,11 @@ globals[36] DOMException: Failed to execute 'removeChild' on 'Node': The node to be removed is not a child of this node. console-format.js:21 Uint8Array [3] - 0: 3 buffer: (...) byteLength: (...) byteOffset: (...) length: (...) + 0: 3 Symbol(Symbol.toStringTag): (...) __proto__: TypedArray console-format.js:22 [Uint8Array(1)] @@ -637,11 +637,11 @@ __proto__: Array(0) globals[37] Uint8Array [3] - 0: 3 buffer: (...) byteLength: (...) byteOffset: (...) length: (...) + 0: 3 Symbol(Symbol.toStringTag): (...) __proto__: TypedArray console-format.js:21 Uint8Array(400) [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …] @@ -734,10 +734,10 @@ [[PrimitiveValue]]: 42 console-format.js:21 String {"abc", 3: "foo", 01: "foo", a: "bar"} 0: "a" - 01: "foo" 1: "b" 2: "c" 3: "foo" + 01: "foo" a: "bar" length: 3 __proto__: String @@ -749,10 +749,10 @@ globals[44] String {"abc", 3: "foo", 01: "foo", a: "bar"} 0: "a" - 01: "foo" 1: "b" 2: "c" 3: "foo" + 01: "foo" a: "bar" length: 3 __proto__: String
diff --git a/third_party/blink/web_tests/http/tests/devtools/console/console-functions-expected.txt b/third_party/blink/web_tests/http/tests/devtools/console/console-functions-expected.txt index 1a32b572..11ada2c 100644 --- a/third_party/blink/web_tests/http/tests/devtools/console/console-functions-expected.txt +++ b/third_party/blink/web_tests/http/tests/devtools/console/console-functions-expected.txt
@@ -2,10 +2,10 @@ console-functions.js:27 ƒ simple() {} console-functions.js:28 ƒ simple() - arguments: null - caller: null length: 0 name: "simple" + arguments: null + caller: null prototype: {constructor: ƒ} __proto__: ƒ () [[FunctionLocation]]: console-functions.js:13 @@ -32,50 +32,50 @@ [[Scopes]]: Scopes[1] console-functions.js:27 ƒ (){} console-functions.js:28 ƒ anonymous() - arguments: null - caller: null length: 0 name: "" + arguments: null + caller: null prototype: {constructor: ƒ} __proto__: ƒ () [[FunctionLocation]]: console-functions.js:16 [[Scopes]]: Scopes[1] console-functions.js:27 ƒ (x, y){} console-functions.js:28 ƒ anonymous(x, y) - arguments: null - caller: null length: 2 name: "" + arguments: null + caller: null prototype: {constructor: ƒ} __proto__: ƒ () [[FunctionLocation]]: console-functions.js:17 [[Scopes]]: Scopes[1] console-functions.js:27 ƒ namedArgs(x) {} console-functions.js:28 ƒ namedArgs(x) - arguments: null - caller: null length: 1 name: "namedArgs" + arguments: null + caller: null prototype: {constructor: ƒ} __proto__: ƒ () [[FunctionLocation]]: console-functions.js:18 [[Scopes]]: Scopes[1] console-functions.js:27 ƒ namedArgs2(x, y) {} console-functions.js:28 ƒ namedArgs2(x, y) - arguments: null - caller: null length: 2 name: "namedArgs2" + arguments: null + caller: null prototype: {constructor: ƒ} __proto__: ƒ () [[FunctionLocation]]: console-functions.js:19 [[Scopes]]: Scopes[1] console-functions.js:27 ƒ ({}) {} console-functions.js:28 ƒ anonymous({}) - arguments: null - caller: null length: 1 name: "" + arguments: null + caller: null prototype: {constructor: ƒ} __proto__: ƒ () [[FunctionLocation]]: console-functions.js:20
diff --git a/third_party/blink/web_tests/http/tests/devtools/console/console-log-object-with-getter-expected.txt b/third_party/blink/web_tests/http/tests/devtools/console/console-log-object-with-getter-expected.txt index ed8b0ca..686c13c 100644 --- a/third_party/blink/web_tests/http/tests/devtools/console/console-log-object-with-getter-expected.txt +++ b/third_party/blink/web_tests/http/tests/devtools/console/console-log-object-with-getter-expected.txt
@@ -5,5 +5,5 @@ console-log-object-with-getter.js:32 {} console-log-object-with-getter.js:30 {}foo: Objectget foo: ƒ ()set bar: ƒ (x)__proto__: Object console-log-object-with-getter.js:31 (2) [(...), empty]0: 1length: 2get 0: ƒ ()set 1: ƒ (x)__proto__: Array(0) -console-log-object-with-getter.js:32 {}error: [Exception: custom stack]function: [Exception: ƒ ()]number: [Exception: 123]string: [Exception: "myString"]get error: ƒ error()get function: ƒ ()get number: ƒ number()get string: ƒ string()__proto__: Object +console-log-object-with-getter.js:32 {}error: [Exception: custom stack]string: [Exception: "myString"]number: [Exception: 123]function: [Exception: ƒ ()]get error: ƒ error()get string: ƒ string()get number: ƒ number()get function: ƒ ()__proto__: Object
diff --git a/third_party/blink/web_tests/http/tests/devtools/console/console-log-short-hand-method-expected.txt b/third_party/blink/web_tests/http/tests/devtools/console/console-log-short-hand-method-expected.txt index 5fdcaf3..2a495519 100644 --- a/third_party/blink/web_tests/http/tests/devtools/console/console-log-short-hand-method-expected.txt +++ b/third_party/blink/web_tests/http/tests/devtools/console/console-log-short-hand-method-expected.txt
@@ -2,8 +2,8 @@ console-log-short-hand-method.js:24 {foo: ƒ, boo: ƒ, gen: ƒ} baz: (...) - boo: ƒ (c,d) foo: ƒ foo(a,b) + boo: ƒ (c,d) gen: ƒ* gen() get baz: ƒ baz() set baz: ƒ baz(x)
diff --git a/third_party/blink/web_tests/http/tests/devtools/console/console-object-preview-expected.txt b/third_party/blink/web_tests/http/tests/devtools/console/console-object-preview-expected.txt index 06fb11b4..7179575 100644 --- a/third_party/blink/web_tests/http/tests/devtools/console/console-object-preview-expected.txt +++ b/third_party/blink/web_tests/http/tests/devtools/console/console-object-preview-expected.txt
@@ -56,13 +56,13 @@ console-object-preview.js:62 Dense array with indexes and propeties console-object-preview.js:68 (150) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, …][0 … 99][100 … 149]property_0: 0property_1: 1property_2: 2property_3: 3property_4: 4property_5: 5property_6: 6property_7: 7property_8: 8property_9: 9property_10: 10property_11: 11property_12: 12property_13: 13property_14: 14property_15: 15property_16: 16property_17: 17property_18: 18property_19: 19property_20: 20property_21: 21property_22: 22property_23: 23property_24: 24property_25: 25property_26: 26property_27: 27property_28: 28property_29: 29property_30: 30property_31: 31property_32: 32property_33: 33property_34: 34property_35: 35property_36: 36property_37: 37property_38: 38property_39: console-object-preview.js:70 Object with properties containing whitespaces -console-object-preview.js:77 {" a b ": " a b ", c d: "c d", "": "", " ": " ", "a↵↵b↵c": "a↵↵b↵c"}"": """ ": " "" a b ": " a b ""a↵↵b↵c": "a↵↵b↵c"c d: "c d"__proto__: Object +console-object-preview.js:77 {" a b ": " a b ", c d: "c d", "": "", " ": " ", "a↵↵b↵c": "a↵↵b↵c"}" a b ": " a b "c d: "c d""": """ ": " ""a↵↵b↵c": "a↵↵b↵c"__proto__: Object console-object-preview.js:79 Object with a document.all property console-object-preview.js:80 {all: HTMLAllCollection(4)}all: HTMLAllCollection(4) [html, head, base, body]__proto__: Object console-object-preview.js:82 Object with special numbers -console-object-preview.js:84 {nan: NaN, posInf: Infinity, negInf: -Infinity, negZero: -0}nan: NaNnegInf: -InfinitynegZero: -0posInf: Infinity__proto__: Object +console-object-preview.js:84 {nan: NaN, posInf: Infinity, negInf: -Infinity, negZero: -0}nan: NaNposInf: InfinitynegInf: -InfinitynegZero: -0__proto__: Object console-object-preview.js:86 Object with exactly 5 properties: expected to be lossless console-object-preview.js:87 {a: 1, b: 2, c: 3, d: 4, e: 5}a: 1b: 2c: 3d: 4e: 5__proto__: Object -console-object-preview.js:89 {null: null, undef: undefined, regexp: /^[regexp]$/g, bool: false}bool: falsenull: nullregexp: /^[regexp]$/gundef: undefined__proto__: Object +console-object-preview.js:89 {null: null, undef: undefined, regexp: /^[regexp]$/g, bool: false}null: nullundef: undefinedregexp: /^[regexp]$/gbool: false__proto__: Object console-object-preview.js:96 IHavePrivateProperties {regularProperty: 3, #privateProperty1: 1, #privateProperty2: 2}regularProperty: 3#privateProperty1: 1#privateProperty2: 2__proto__: Object
diff --git a/third_party/blink/web_tests/http/tests/devtools/elements/event-listener-sidebar-custom-framework-expected.txt b/third_party/blink/web_tests/http/tests/devtools/elements/event-listener-sidebar-custom-framework-expected.txt index 07639ca8..63e3c7c 100644 --- a/third_party/blink/web_tests/http/tests/devtools/elements/event-listener-sidebar-custom-framework-expected.txt +++ b/third_party/blink/web_tests/http/tests/devtools/elements/event-listener-sidebar-custom-framework-expected.txt
@@ -5,9 +5,6 @@ ======== click ======== == Framework [expanded] button#inspectedNodeRemoveevent-listener-sidebar-custom-framework.js:30 - useCapture: false - passive: false - once: false handler: function internalHandler(e) { console.log("I'm internal event handler"); @@ -16,36 +13,36 @@ if (e.type === "customSecond") customSecondEventListener(e); } + once: false + passive: false + useCapture: false ======== customFirst ======== == FrameworkUser [expanded] button#inspectedNodeevent-listener-sidebar-custom-framework.js:20 - useCapture: true - passive: false - once: false handler: function customFirstEventListener(e) { console.log("I'm first custom event listener"); } + once: false + passive: false + useCapture: true ======== customSecond ======== == FrameworkUser [expanded] button#inspectedNodeevent-listener-sidebar-custom-framework.js:25 - useCapture: false - passive: false - once: false handler: function customSecondEventListener(e) { console.log("I'm second custom event listener"); } + once: false + passive: false + useCapture: false == Exception in fetchers' getter ======== click ======== == Raw [expanded] button#inspectedNodeRemoveevent-listener-sidebar-custom-framework.js:30 - useCapture: false - passive: false - once: false handler: function internalHandler(e) { console.log("I'm internal event handler"); @@ -54,6 +51,9 @@ if (e.type === "customSecond") customSecondEventListener(e); } + once: false + passive: false + useCapture: false Framework Event Listeners API Errors: fetcher call produced error: Error in fetcher fetcher call produced error: TypeError: Cannot read property 'eventListeners' of null
diff --git a/third_party/blink/web_tests/http/tests/devtools/elements/event-listener-sidebar-expected.txt b/third_party/blink/web_tests/http/tests/devtools/elements/event-listener-sidebar-expected.txt index b4000f9..30586d0 100644 --- a/third_party/blink/web_tests/http/tests/devtools/elements/event-listener-sidebar-expected.txt +++ b/third_party/blink/web_tests/http/tests/devtools/elements/event-listener-sidebar-expected.txt
@@ -4,69 +4,69 @@ ======== click ======== == Raw [expanded] documentRemoveevent-listener-sidebar.js:15 - useCapture: false - passive: false - once: false handler: function documentClickHandler(event) { console.log("click - document - attribute"); } + once: false + passive: false + useCapture: false == Raw [expanded] documentRemoveevent-listener-sidebar.js:40 - useCapture: true - passive: false - once: false handler: function() { console.log("click - document - handleEvent"); } + once: false + passive: false + useCapture: true == Raw [expanded] documentRemoveevent-listener-sidebar.js:28 - useCapture: true - passive: false - once: false handler: function(event) { console.log("click - document - capturing"); } + once: false + passive: false + useCapture: true == Raw [expanded] button#nodeRemoveevent-listener-sidebar.js:26 - useCapture: false - passive: false - once: false handler: function(event) { console.log("click - button - bubbling (registered after attribute)"); } + once: false + passive: false + useCapture: false == Raw [expanded] button#nodeRemoveevent-listener-sidebar.js:25 - useCapture: false - passive: false - once: false handler: function(event) { console.log("click - button - attribute"); } + once: false + passive: false + useCapture: false == Raw [expanded] button#nodeRemoveevent-listener-sidebar.js:21 - useCapture: false - passive: false - once: false handler: function clickHandler(event) { console.log("click - button - bubbling (registered before attribute)"); } + once: false + passive: false + useCapture: false == Raw [expanded] button#nodeRemoveevent-listener-sidebar.js:24 - useCapture: true - passive: false - once: false handler: function(event) { console.log("click - button - capturing"); } + once: false + passive: false + useCapture: true ======== custom event ======== == Raw [expanded] bodyRemoveevent-listener-sidebar.js:19 - useCapture: true - passive: false - once: true handler: function f() {} + once: true + passive: false + useCapture: true ======== hover ======== == Raw [expanded] button#nodeRemoveevent-listener-sidebar.js:23 - useCapture: false - passive: false - once: false handler: function hoverHandler(event) { console.log("hover - button - bubbling"); } + once: false + passive: false + useCapture: false ======== wheel ======== == Raw [expanded] bodyRemoveToggle Passiveevent-listener-sidebar.js:19 - useCapture: false - passive: true - once: false handler: function f() {} + once: false + passive: true + useCapture: false Listeners for selected node only(should be no listeners):
diff --git a/third_party/blink/web_tests/http/tests/devtools/elements/event-listener-sidebar-jquery1-expected.txt b/third_party/blink/web_tests/http/tests/devtools/elements/event-listener-sidebar-jquery1-expected.txt index 503c1777..1ecae1959 100644 --- a/third_party/blink/web_tests/http/tests/devtools/elements/event-listener-sidebar-jquery1-expected.txt +++ b/third_party/blink/web_tests/http/tests/devtools/elements/event-listener-sidebar-jquery1-expected.txt
@@ -4,26 +4,26 @@ ======== click ======== == FrameworkUser [expanded] button#nodeRemoveevent-listener-sidebar-jquery1.js:18 - useCapture: true - passive: false - once: false handler: function(){ console.log("second jquery"); } + once: false + passive: false + useCapture: true == FrameworkUser [expanded] button#nodeRemoveevent-listener-sidebar-jquery1.js:17 - useCapture: true - passive: false - once: false handler: function(){ console.log("first jquery"); } + once: false + passive: false + useCapture: true == Raw [expanded] button#nodeRemoveevent-listener-sidebar-jquery1.js:19 - useCapture: false - passive: false - once: false handler: function() { console.log("addEventListener"); } + once: false + passive: false + useCapture: false == Framework [expanded] button#nodeRemovejquery-1.11.3.min.js:4 - useCapture: false - passive: false - once: false handler: function(a){return typeof m===K||a&&m.event.triggered===a.type?void 0:m.event.dispatch.apply(k.elem,arguments)} + once: false + passive: false + useCapture: false
diff --git a/third_party/blink/web_tests/http/tests/devtools/elements/event-listener-sidebar-jquery2-expected.txt b/third_party/blink/web_tests/http/tests/devtools/elements/event-listener-sidebar-jquery2-expected.txt index c03a22066f8..57d5cc1c 100644 --- a/third_party/blink/web_tests/http/tests/devtools/elements/event-listener-sidebar-jquery2-expected.txt +++ b/third_party/blink/web_tests/http/tests/devtools/elements/event-listener-sidebar-jquery2-expected.txt
@@ -4,33 +4,33 @@ ======== click ======== == FrameworkUser [expanded] button#nodeRemoveevent-listener-sidebar-jquery2.js:18 - useCapture: true - passive: false - once: false handler: function(){ console.log("second jquery"); } + once: false + passive: false + useCapture: true == FrameworkUser [expanded] button#nodeRemoveevent-listener-sidebar-jquery2.js:17 - useCapture: true - passive: false - once: false handler: function(){ console.log("first jquery"); } + once: false + passive: false + useCapture: true == Raw [expanded] button#nodeRemoveevent-listener-sidebar-jquery2.js:20 - useCapture: false - passive: false - once: false handler: function() { console.log("onclick"); } + once: false + passive: false + useCapture: false == Raw [expanded] button#nodeRemoveevent-listener-sidebar-jquery2.js:19 - useCapture: false - passive: false - once: false handler: function() { console.log("addEventListener"); } + once: false + passive: false + useCapture: false == Framework [expanded] button#nodeRemovejquery-2.1.4.min.js:3 - useCapture: false - passive: false - once: false handler: function(b){return typeof n!==U&&n.event.triggered!==b.type?n.event.dispatch.apply(a,arguments):void 0} + once: false + passive: false + useCapture: false Remove listeners..
diff --git a/third_party/blink/web_tests/http/tests/devtools/elements/event-listener-sidebar-remove-expected.txt b/third_party/blink/web_tests/http/tests/devtools/elements/event-listener-sidebar-remove-expected.txt index 381809dc..06e793c 100644 --- a/third_party/blink/web_tests/http/tests/devtools/elements/event-listener-sidebar-remove-expected.txt +++ b/third_party/blink/web_tests/http/tests/devtools/elements/event-listener-sidebar-remove-expected.txt
@@ -4,42 +4,42 @@ ======== click ======== == Raw [expanded] button#nodeRemoveevent-listener-sidebar-remove.js:16 - useCapture: false - passive: false - once: false handler: function f() {} + once: false + passive: false + useCapture: false ======== mouseover ======== == Raw [expanded] button#nodeRemoveevent-listener-sidebar-remove.js:16 - useCapture: false - passive: false - once: false handler: function f() {} + once: false + passive: false + useCapture: false Listeners after removal: ======== mouseover ======== == Raw [expanded] button#nodeRemoveevent-listener-sidebar-remove.js:16 - useCapture: false - passive: false - once: false handler: function f() {} + once: false + passive: false + useCapture: false Listeners for sibling node: ======== click ======== == Raw [expanded] button#node-siblingRemoveevent-listener-sidebar-remove.js:17 - useCapture: false - passive: false - once: false handler: function g() {} + once: false + passive: false + useCapture: false ======== mouseover ======== == Raw [expanded] button#node-siblingRemoveevent-listener-sidebar-remove.js:17 - useCapture: false - passive: false - once: false handler: function g() {} + once: false + passive: false + useCapture: false
diff --git a/third_party/blink/web_tests/http/tests/devtools/elements/event-listeners-about-blank-expected.txt b/third_party/blink/web_tests/http/tests/devtools/elements/event-listeners-about-blank-expected.txt index 1ea4a89..9d7cc62b 100644 --- a/third_party/blink/web_tests/http/tests/devtools/elements/event-listeners-about-blank-expected.txt +++ b/third_party/blink/web_tests/http/tests/devtools/elements/event-listeners-about-blank-expected.txt
@@ -4,24 +4,24 @@ ======== click ======== == Raw [expanded] bodyRemoveevent-listeners-about-blank.js:16 - useCapture: true - passive: false - once: false handler: function f() {} + once: false + passive: false + useCapture: true ======== hover ======== == Raw [expanded] div#div-in-iframeRemoveevent-listeners-about-blank.js:16 - useCapture: true - passive: false - once: true handler: function f() {} + once: true + passive: false + useCapture: true ======== wheel ======== == Raw [expanded] bodyRemoveToggle Passiveevent-listeners-about-blank.js:16 - useCapture: false - passive: true - once: false handler: function f() {} + once: false + passive: true + useCapture: false
diff --git a/third_party/blink/web_tests/http/tests/devtools/elements/event-listeners-framework-with-service-worker-expected.txt b/third_party/blink/web_tests/http/tests/devtools/elements/event-listeners-framework-with-service-worker-expected.txt index cbd6eb14..da397e4 100644 --- a/third_party/blink/web_tests/http/tests/devtools/elements/event-listeners-framework-with-service-worker-expected.txt +++ b/third_party/blink/web_tests/http/tests/devtools/elements/event-listeners-framework-with-service-worker-expected.txt
@@ -10,10 +10,10 @@ ======== load ======== == Raw [expanded] WindowRemoveinspected-page.html:1 - useCapture: false - passive: false - once: false handler: function onload(event) { testFunction() } + once: false + passive: false + useCapture: false
diff --git a/third_party/blink/web_tests/http/tests/devtools/persistence/persistence-mimetype-on-rename-expected.txt b/third_party/blink/web_tests/http/tests/devtools/persistence/persistence-mimetype-on-rename-expected.txt index ec1c6a7..c6df194 100644 --- a/third_party/blink/web_tests/http/tests/devtools/persistence/persistence-mimetype-on-rename-expected.txt +++ b/third_party/blink/web_tests/http/tests/devtools/persistence/persistence-mimetype-on-rename-expected.txt
@@ -2,7 +2,7 @@ Running: Open foo.js editor -Text editor mimeType: text/javascript +Text editor mimeType: text/jsx Running: Rename foo.js => foo.css Text editor mimeType: text/css
diff --git a/third_party/blink/web_tests/http/tests/devtools/sources/debugger-pause/set-return-value-expected.txt b/third_party/blink/web_tests/http/tests/devtools/sources/debugger-pause/set-return-value-expected.txt index 95f05fd..d55d76b6 100644 --- a/third_party/blink/web_tests/http/tests/devtools/sources/debugger-pause/set-return-value-expected.txt +++ b/third_party/blink/web_tests/http/tests/devtools/sources/debugger-pause/set-return-value-expected.txt
@@ -5,40 +5,40 @@ Expanded property: Return value Scope variables sidebar pane: Local - Return value: 42 - this: undefined x: 42 + this: undefined + Return value: 42 WindowGlobal <section collapsed> Set return value to {a:1} Expanded property: Return value Scope variables sidebar pane: Local + x: 42 + this: undefined Return value: Object a: 1 __proto__: Object - this: undefined - x: 42 WindowGlobal <section collapsed> Try to remove return value Expanded property: Return value Scope variables sidebar pane: Local + x: 42 + this: undefined Return value: Object a: 1 __proto__: Object - this: undefined - x: 42 WindowGlobal <section collapsed> Set return value to 239 Expanded property: Return value Scope variables sidebar pane: Local - Return value: 239 - this: undefined x: 42 + this: undefined + Return value: 239 WindowGlobal <section collapsed> Script execution resumed.
diff --git a/third_party/blink/web_tests/http/tests/devtools/sources/debugger-ui/debugger-expand-scope-expected.txt b/third_party/blink/web_tests/http/tests/devtools/sources/debugger-ui/debugger-expand-scope-expected.txt index 5c0cc59..44744a84 100644 --- a/third_party/blink/web_tests/http/tests/devtools/sources/debugger-ui/debugger-expand-scope-expected.txt +++ b/third_party/blink/web_tests/http/tests/devtools/sources/debugger-ui/debugger-expand-scope-expected.txt
@@ -9,14 +9,14 @@ at innerFunction (...) at testFunction (...) Local + x: 2010 innerFunctionLocalVar: 2012 negInf: -Infinity negZero: -0 this: Window - x: 2010 Closure (makeClosure) - makeClosureLocalVar: "local.TextParam" n: "TextParam" + makeClosureLocalVar: "local.TextParam" WindowGlobal <section collapsed> Script execution resumed.
diff --git a/third_party/blink/web_tests/http/tests/devtools/sources/debugger-ui/watch-expressions-preserve-expansion-expected.txt b/third_party/blink/web_tests/http/tests/devtools/sources/debugger-ui/watch-expressions-preserve-expansion-expected.txt index 8fe7ba7..d606d90 100644 --- a/third_party/blink/web_tests/http/tests/devtools/sources/debugger-ui/watch-expressions-preserve-expansion-expected.txt +++ b/third_party/blink/web_tests/http/tests/devtools/sources/debugger-ui/watch-expressions-preserve-expansion-expected.txt
@@ -122,10 +122,10 @@ length: 300 __proto__: Array(0) func: function() {return a + b;} - arguments: null - caller: null length: 0 name: + arguments: null + caller: null prototype: Object __proto__: function () { [native code] } [[FunctionLocation]]: Object @@ -249,10 +249,10 @@ length: 300 __proto__: Array(0) func: function() {return a + b;} - arguments: null - caller: null length: 0 name: + arguments: null + caller: null prototype: Object __proto__: function () { [native code] } [[FunctionLocation]]: Object
diff --git a/third_party/blink/web_tests/http/tests/devtools/sources/debugger/debugger-es6-harmony-scopes-expected.txt b/third_party/blink/web_tests/http/tests/devtools/sources/debugger/debugger-es6-harmony-scopes-expected.txt index fa559246..b8b18e4 100644 --- a/third_party/blink/web_tests/http/tests/devtools/sources/debugger/debugger-es6-harmony-scopes-expected.txt +++ b/third_party/blink/web_tests/http/tests/devtools/sources/debugger/debugger-es6-harmony-scopes-expected.txt
@@ -15,22 +15,22 @@ block1: "block {...}" const1: 1 Local + x: 2014 innerFunctionBlockVar: 2116 innerFunctionLocalVar: 2016 negInf: -Infinity negZero: -0 this: undefined - x: 2014 Block makeClosureDeeperBlockVar: "block.deep.TextParam" Closure (window.makeClosure) - makeClosureBlockVar: "block.TextParam" - makeClosureDeeperLocalVar: "local.deep.TextParam" - makeClosureLocalVar: "local.TextParam" n: "TextParam" + makeClosureBlockVar: "block.TextParam" + makeClosureLocalVar: "local.TextParam" + makeClosureDeeperLocalVar: "local.deep.TextParam" Script - globalScriptConst: 42 globalScriptLet: 41 + globalScriptConst: 42 WindowGlobal <section collapsed> Script execution resumed.
diff --git a/third_party/blink/web_tests/http/tests/devtools/sources/debugger/debugger-scope-minified-variables-expected.txt b/third_party/blink/web_tests/http/tests/devtools/sources/debugger/debugger-scope-minified-variables-expected.txt index 6778500..9a20758 100644 --- a/third_party/blink/web_tests/http/tests/devtools/sources/debugger/debugger-scope-minified-variables-expected.txt +++ b/third_party/blink/web_tests/http/tests/devtools/sources/debugger/debugger-scope-minified-variables-expected.txt
@@ -7,10 +7,10 @@ Catch error: "boom!" Local - longMap: Map(1) {100 => "hello"} - longObject: {} parameter1: 100 parameter2: "hello" + longObject: {} + longMap: Map(1) {100 => "hello"} this: Window WindowGlobal <section collapsed>
diff --git a/third_party/blink/web_tests/http/tests/devtools/sources/debugger/properties-special-expected.txt b/third_party/blink/web_tests/http/tests/devtools/sources/debugger/properties-special-expected.txt index 8aaa146..ebff8982 100644 --- a/third_party/blink/web_tests/http/tests/devtools/sources/debugger/properties-special-expected.txt +++ b/third_party/blink/web_tests/http/tests/devtools/sources/debugger/properties-special-expected.txt
@@ -3,10 +3,10 @@ __proto__: Boolean [[PrimitiveValue]]: true properties-special.js:12 ƒ anonymous(a,b) - arguments: null - caller: null length: 2 name: "" + arguments: null + caller: null prototype: {constructor: ƒ} __proto__: ƒ () [[FunctionLocation]]: properties-special.js:12
diff --git a/third_party/blink/web_tests/http/tests/devtools/startup/console/console-format-startup-expected.txt b/third_party/blink/web_tests/http/tests/devtools/startup/console/console-format-startup-expected.txt index f5369586..a49f5a94 100644 --- a/third_party/blink/web_tests/http/tests/devtools/startup/console/console-format-startup-expected.txt +++ b/third_party/blink/web_tests/http/tests/devtools/startup/console/console-format-startup-expected.txt
@@ -374,8 +374,8 @@ __proto__: Array(0) console-format-startup.html:164 Object table console-format-startup.html:165 Object - bar: {a: 3, b: 4} foo: {a: 1, b: 2} + bar: {a: 3, b: 4} __proto__: Object console-format-startup.html:167 Null as columns console-format-startup.html:168 Array(2) @@ -452,21 +452,22 @@ length: 3 __proto__: Array(0) console-format-startup.html:206 HTMLCollection(1) - 0: select#sel length: 1 + 0: select#sel sel: select#sel __proto__: HTMLCollection console-format-startup.html:210 HTMLCollection(1) - 0: script length: 1 + 0: script __proto__: HTMLCollection console-format-startup.html:214 HTMLOptionsCollection(2) - 0: option - 1: option length: 2 selectedIndex: 0 + 0: option + 1: option __proto__: HTMLOptionsCollection console-format-startup.html:218 HTMLAllCollection(14) + length: 14 0: html 1: head 2: script @@ -481,26 +482,25 @@ 11: option 12: input 13: input - length: 14 - f: form#f - p: p#p - sel: select#sel - svg-node: svg#svg-node x: HTMLCollection(3) [div#x, input, input, x: div#x] + p: p#p + svg-node: svg#svg-node + f: form#f + sel: select#sel __proto__: HTMLAllCollection console-format-startup.html:222 HTMLFormControlsCollection(3) + length: 3 0: select#sel 1: input 2: input - length: 3 sel: select#sel x: RadioNodeList(2) [input, input, value: ""] __proto__: HTMLFormControlsCollection console-format-startup.html:226 RadioNodeList(2) + value: "" + length: 2 0: input 1: input - length: 2 - value: "" __proto__: RadioNodeList console-format-startup.html:232 Array(2) 0: 1 @@ -508,14 +508,14 @@ length: 2 __proto__: Array(0) console-format-startup.html:235 NonArrayWithLength - keys: [] length: (...) + keys: [] __proto__: Object console-format-startup.html:242 Arguments(2) 0: 1 1: "2" - callee: ƒ generateArguments(foo, bar) length: 2 + callee: ƒ generateArguments(foo, bar) Symbol(Symbol.iterator): ƒ values() __proto__: Object console-format-startup.html:246 DOMTokenList(0) @@ -775,12 +775,12 @@ globals[25] <svg id="svg-node"></svg> console-format-startup.html:7 {enumerableProp: 4, __underscoreEnumerableProp__: 5, __underscoreNonEnumerableProp: 2, abc: 3, getFoo: ƒ, …} + bar: (...) enumerableProp: 4 __underscoreEnumerableProp__: 5 - abc: 3 - bar: (...) - getFoo: ƒ () __underscoreNonEnumerableProp: 2 + abc: 3 + getFoo: ƒ () get bar: ƒ () set bar: ƒ (x) __proto__: Object @@ -790,12 +790,12 @@ __proto__: Array(0) globals[26] {enumerableProp: 4, __underscoreEnumerableProp__: 5, __underscoreNonEnumerableProp: 2, abc: 3, getFoo: ƒ, …} + bar: (...) enumerableProp: 4 __underscoreEnumerableProp__: 5 - abc: 3 - bar: (...) - getFoo: ƒ () __underscoreNonEnumerableProp: 2 + abc: 3 + getFoo: ƒ () get bar: ƒ () set bar: ƒ (x) __proto__: Object @@ -824,16 +824,16 @@ ƒ Object() { [native code] } console-format-startup.html:7 {constructor: ƒ, __defineGetter__: ƒ, __defineSetter__: ƒ, hasOwnProperty: ƒ, __lookupGetter__: ƒ, …} constructor: ƒ Object() - hasOwnProperty: ƒ hasOwnProperty() - isPrototypeOf: ƒ isPrototypeOf() - propertyIsEnumerable: ƒ propertyIsEnumerable() - toLocaleString: ƒ toLocaleString() - toString: ƒ toString() - valueOf: ƒ valueOf() __defineGetter__: ƒ __defineGetter__() __defineSetter__: ƒ __defineSetter__() + hasOwnProperty: ƒ hasOwnProperty() __lookupGetter__: ƒ __lookupGetter__() __lookupSetter__: ƒ __lookupSetter__() + isPrototypeOf: ƒ isPrototypeOf() + propertyIsEnumerable: ƒ propertyIsEnumerable() + toString: ƒ toString() + valueOf: ƒ valueOf() + toLocaleString: ƒ toLocaleString() get __proto__: ƒ __proto__() set __proto__: ƒ __proto__() console-format-startup.html:8 [{…}] @@ -843,16 +843,16 @@ globals[30] {constructor: ƒ, __defineGetter__: ƒ, __defineSetter__: ƒ, hasOwnProperty: ƒ, __lookupGetter__: ƒ, …} constructor: ƒ Object() - hasOwnProperty: ƒ hasOwnProperty() - isPrototypeOf: ƒ isPrototypeOf() - propertyIsEnumerable: ƒ propertyIsEnumerable() - toLocaleString: ƒ toLocaleString() - toString: ƒ toString() - valueOf: ƒ valueOf() __defineGetter__: ƒ __defineGetter__() __defineSetter__: ƒ __defineSetter__() + hasOwnProperty: ƒ hasOwnProperty() __lookupGetter__: ƒ __lookupGetter__() __lookupSetter__: ƒ __lookupSetter__() + isPrototypeOf: ƒ isPrototypeOf() + propertyIsEnumerable: ƒ propertyIsEnumerable() + toString: ƒ toString() + valueOf: ƒ valueOf() + toLocaleString: ƒ toLocaleString() get __proto__: ƒ __proto__() set __proto__: ƒ __proto__() console-format-startup.html:7 ƒ ( /**/ foo/**/, /*/**/bar, @@ -895,13 +895,13 @@ __proto__: String [[PrimitiveValue]]: "abc" console-format-startup.html:7 Uint16Array(3) [1, 2, 3] - 0: 1 - 1: 2 - 2: 3 buffer: (...) byteLength: (...) byteOffset: (...) length: (...) + 0: 1 + 1: 2 + 2: 3 Symbol(Symbol.toStringTag): (...) __proto__: TypedArray console-format-startup.html:8 [Uint16Array(3)] @@ -910,13 +910,13 @@ __proto__: Array(0) globals[34] Uint16Array(3) [1, 2, 3] - 0: 1 - 1: 2 - 2: 3 buffer: (...) byteLength: (...) byteOffset: (...) length: (...) + 0: 1 + 1: 2 + 2: 3 Symbol(Symbol.toStringTag): (...) __proto__: TypedArray console-format-startup.html:7 #text @@ -934,11 +934,11 @@ globals[36] DOMException: Failed to execute 'removeChild' on 'Node': The node to be removed is not a child of this node. console-format-startup.html:7 Uint8Array [3] - 0: 3 buffer: (...) byteLength: (...) byteOffset: (...) length: (...) + 0: 3 Symbol(Symbol.toStringTag): (...) __proto__: TypedArray console-format-startup.html:8 [Uint8Array(1)] @@ -947,11 +947,11 @@ __proto__: Array(0) globals[37] Uint8Array [3] - 0: 3 buffer: (...) byteLength: (...) byteOffset: (...) length: (...) + 0: 3 Symbol(Symbol.toStringTag): (...) __proto__: TypedArray console-format-startup.html:7 Uint8Array(400) [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …] @@ -1044,10 +1044,10 @@ [[PrimitiveValue]]: 42 console-format-startup.html:7 String {"abc", 3: "foo", 01: "foo", a: "bar"} 0: "a" - 01: "foo" 1: "b" 2: "c" 3: "foo" + 01: "foo" a: "bar" length: 3 __proto__: String @@ -1059,10 +1059,10 @@ globals[44] String {"abc", 3: "foo", 01: "foo", a: "bar"} 0: "a" - 01: "foo" 1: "b" 2: "c" 3: "foo" + 01: "foo" a: "bar" length: 3 __proto__: String @@ -1121,8 +1121,8 @@ globals[49] Symbol(a) console-format-startup.html:7 {a: Symbol(), Symbol(a): 2} - a: Symbol() getter: (...) + a: Symbol() Symbol(a): 2 get getter: ƒ getter() __proto__: Object @@ -1132,8 +1132,8 @@ __proto__: Array(0) globals[50] {a: Symbol(), Symbol(a): 2} - a: Symbol() getter: (...) + a: Symbol() Symbol(a): 2 get getter: ƒ getter() __proto__: Object
diff --git a/third_party/blink/web_tests/http/tests/devtools/user-metrics-expected.txt b/third_party/blink/web_tests/http/tests/devtools/user-metrics-expected.txt index 35549c80..da46d33 100644 --- a/third_party/blink/web_tests/http/tests/devtools/user-metrics-expected.txt +++ b/third_party/blink/web_tests/http/tests/devtools/user-metrics-expected.txt
@@ -44,11 +44,21 @@ audits : 18 console : 8 drawer-animations : 11 + drawer-changes.changes : 23 drawer-console-view : 10 + drawer-coverage : 19 + drawer-live_heap_profile : 26 + drawer-network.blocked-urls : 28 drawer-network.config : 12 + drawer-performance.monitor : 24 + drawer-protocol-monitor : 20 + drawer-release-note : 25 + drawer-remote-devices : 21 drawer-rendering : 13 drawer-sensors : 14 + drawer-sources.quick : 27 drawer-sources.search : 15 + drawer-web-audio : 22 elements : 1 heap_profiler : 6 js_profiler : 17
diff --git a/third_party/blink/web_tests/platform/linux/external/wpt/css/css-transitions/Element-getAnimations.tentative-expected.txt b/third_party/blink/web_tests/platform/linux/external/wpt/css/css-transitions/Element-getAnimations.tentative-expected.txt new file mode 100644 index 0000000..6163606 --- /dev/null +++ b/third_party/blink/web_tests/platform/linux/external/wpt/css/css-transitions/Element-getAnimations.tentative-expected.txt
@@ -0,0 +1,10 @@ +This is a testharness.js-based test. +PASS getAnimations returns one Animation per transitioning property +PASS getAnimations returns CSSTransition objects for CSS Transitions +PASS getAnimations does not return finished CSS Transitions +PASS getAnimations does not return a transition for a non-animatable property +PASS getAnimations does not return a transition for an unsupposed property +FAIL getAnimations sorts simultaneous transitions by name assert_equals: expected "border-left-width" but got "opacity" +PASS getAnimations sorts transitions by when they were generated +Harness: the test ran to completion. +
diff --git a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-accelerated-keyboard-navigation-expected.png b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-accelerated-keyboard-navigation-expected.png index c938f29..c6b59fe 100644 --- a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-accelerated-keyboard-navigation-expected.png +++ b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-accelerated-keyboard-navigation-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-click-expected.png b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-click-expected.png index 2b2826d..a4ef31d 100644 --- a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-click-expected.png +++ b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-click-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-left-corner-expected.png b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-left-corner-expected.png index d50a7b09..5742b0e 100644 --- a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-left-corner-expected.png +++ b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-left-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-right-corner-expected.png b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-right-corner-expected.png index f005826c..fedcbd20 100644 --- a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-right-corner-expected.png +++ b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-right-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-left-corner-expected.png b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-left-corner-expected.png index 1923d0d..cd24705 100644 --- a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-left-corner-expected.png +++ b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-left-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-right-corner-expected.png b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-right-corner-expected.png index d80c396..25ef58a 100644 --- a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-right-corner-expected.png +++ b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-right-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-drag-expected.png b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-drag-expected.png index 2b2826d..a4ef31d 100644 --- a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-drag-expected.png +++ b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-drag-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-after-drag-expected.png b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-after-drag-expected.png index b3b0fd9..67380867f 100644 --- a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-after-drag-expected.png +++ b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-after-drag-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-expected.png b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-expected.png index 1db6f6e..276afe4 100644 --- a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-expected.png +++ b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png index 85d19e0..95ae484 100644 --- a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png +++ b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-top-right-corner-expected.png b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-top-right-corner-expected.png index dedb0be..45b2a08 100644 --- a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-top-right-corner-expected.png +++ b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-top-right-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-bottom-right-corner-expected.png b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-bottom-right-corner-expected.png index c1d2dd9..3730259 100644 --- a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-bottom-right-corner-expected.png +++ b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-bottom-right-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-top-right-corner-expected.png b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-top-right-corner-expected.png index f5aa62627..798974d 100644 --- a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-top-right-corner-expected.png +++ b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-top-right-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png index 9f32693..3a6cef1 100644 --- a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png +++ b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-top-left-corner-expected.png b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-top-left-corner-expected.png index 9bd0edd..cd7ba6e 100644 --- a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-top-left-corner-expected.png +++ b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-top-left-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-bottom-left-corner-expected.png b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-bottom-left-corner-expected.png index e724374..361d2cb 100644 --- a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-bottom-left-corner-expected.png +++ b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-bottom-left-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-top-left-corner-expected.png b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-top-left-corner-expected.png index d2fcb59..bb51135 100644 --- a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-top-left-corner-expected.png +++ b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-top-left-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png index fc9f9fa6..1b052c91 100644 --- a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png +++ b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png index aafde509..4d121e5 100644 --- a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png +++ b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-left-corner-expected.png b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-left-corner-expected.png index 8437e06..763efc57c 100644 --- a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-left-corner-expected.png +++ b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-left-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-right-corner-expected.png b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-right-corner-expected.png index 017873c2..2b019cd 100644 --- a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-right-corner-expected.png +++ b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-right-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hex-format-expected.png b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hex-format-expected.png index 7435d31..229f74e 100644 --- a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hex-format-expected.png +++ b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hex-format-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hsl-format-expected.png b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hsl-format-expected.png index dd3c40a..31887aa 100644 --- a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hsl-format-expected.png +++ b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hsl-format-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-accelerated-keyboard-navigation-expected.png b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-accelerated-keyboard-navigation-expected.png index 73d01f9d..093f98f 100644 --- a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-accelerated-keyboard-navigation-expected.png +++ b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-accelerated-keyboard-navigation-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-click-expected.png b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-click-expected.png index cf1d256..dc32968 100644 --- a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-click-expected.png +++ b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-click-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-drag-expected.png b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-drag-expected.png index cf1d256..dc32968 100644 --- a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-drag-expected.png +++ b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-drag-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-keyboard-navigation-expected.png b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-keyboard-navigation-expected.png index 697e016e..692693d6 100644 --- a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-keyboard-navigation-expected.png +++ b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-keyboard-navigation-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-left-edge-zero-hue-expected.png b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-left-edge-zero-hue-expected.png index 592c73b..54721ba 100644 --- a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-left-edge-zero-hue-expected.png +++ b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-left-edge-zero-hue-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-right-edge-zero-hue-expected.png b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-right-edge-zero-hue-expected.png index e4d355f..d65554ab 100644 --- a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-right-edge-zero-hue-expected.png +++ b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-right-edge-zero-hue-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-imperfect-match-expected.png b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-imperfect-match-expected.png index b51a3b8..da43984c 100644 --- a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-imperfect-match-expected.png +++ b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-imperfect-match-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-manual-color-change-expected.png b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-manual-color-change-expected.png index dab82e64..d56acb4 100644 --- a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-manual-color-change-expected.png +++ b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-manual-color-change-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-set-value-expected.png b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-set-value-expected.png index ba22656..34d2d6f1 100644 --- a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-set-value-expected.png +++ b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-set-value-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-value-attribute-expected.png b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-value-attribute-expected.png index 3506c0f..70bd340d 100644 --- a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-value-attribute-expected.png +++ b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-value-attribute-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png index 05aff4d2..5c9fe6d 100644 --- a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png +++ b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom200-expected.png b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom200-expected.png index fe86ee1..61982c5 100644 --- a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom200-expected.png +++ b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom200-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-accelerated-keyboard-navigation-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-accelerated-keyboard-navigation-expected.png index 97cc793..2ee51bb0 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-accelerated-keyboard-navigation-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-accelerated-keyboard-navigation-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-click-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-click-expected.png index 74f49e2..5b62bc4 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-click-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-click-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-left-corner-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-left-corner-expected.png index 78c70a4..192dbab 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-left-corner-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-left-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-right-corner-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-right-corner-expected.png index 2692915..fbd3929 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-right-corner-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-right-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-left-corner-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-left-corner-expected.png index a3ff8f5..4b7e29a 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-left-corner-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-left-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-right-corner-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-right-corner-expected.png index ac670b6f..28c34524 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-right-corner-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-right-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-drag-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-drag-expected.png index 74f49e2..5b62bc4 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-drag-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-drag-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-after-drag-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-after-drag-expected.png index 9276a92c..0bbacb3 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-after-drag-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-after-drag-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-expected.png index 6e25cb5f..02bc4794 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png index 626a7034..91fdf05 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-top-right-corner-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-top-right-corner-expected.png index ca7f3e2..35f0f06a 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-top-right-corner-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-top-right-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-bottom-right-corner-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-bottom-right-corner-expected.png index dfb6339..c6f30312 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-bottom-right-corner-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-bottom-right-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-top-right-corner-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-top-right-corner-expected.png index 2b4e560..57d0904 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-top-right-corner-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-top-right-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png index d48e9e33..92926bd 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-top-left-corner-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-top-left-corner-expected.png index 6fd67c19..908aa9b 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-top-left-corner-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-top-left-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-bottom-left-corner-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-bottom-left-corner-expected.png index 0fe70ff..fd89212f 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-bottom-left-corner-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-bottom-left-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-top-left-corner-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-top-left-corner-expected.png index 7e9d150..f6dd830 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-top-left-corner-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-top-left-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png index 4215ebe10..8695007 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png index 4577b736..6542d662 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-left-corner-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-left-corner-expected.png index 975ca10e..a3871e4 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-left-corner-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-left-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-right-corner-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-right-corner-expected.png index 00e252c..e37b407 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-right-corner-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-right-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hex-format-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hex-format-expected.png index 8fa44349..32d1cc4 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hex-format-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hex-format-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hsl-format-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hsl-format-expected.png index 15a7452..75eb9be 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hsl-format-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hsl-format-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-accelerated-keyboard-navigation-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-accelerated-keyboard-navigation-expected.png index 8df6bfcf..09d57f2 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-accelerated-keyboard-navigation-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-accelerated-keyboard-navigation-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-click-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-click-expected.png index d3a5532..2c2b460 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-click-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-click-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-drag-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-drag-expected.png index d3a5532..2c2b460 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-drag-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-drag-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-keyboard-navigation-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-keyboard-navigation-expected.png index 77f6cc38..4a6f110 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-keyboard-navigation-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-keyboard-navigation-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-left-edge-zero-hue-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-left-edge-zero-hue-expected.png index 67197f9..dc5d0112df 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-left-edge-zero-hue-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-left-edge-zero-hue-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-right-edge-zero-hue-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-right-edge-zero-hue-expected.png index 1ea425c6..ad79d4e 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-right-edge-zero-hue-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-right-edge-zero-hue-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-imperfect-match-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-imperfect-match-expected.png index ad4ae26..2dbabcc 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-imperfect-match-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-imperfect-match-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-manual-color-change-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-manual-color-change-expected.png index fb1a328d..6d2afae 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-manual-color-change-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-manual-color-change-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-set-value-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-set-value-expected.png index 5794e24..e5490f4d 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-set-value-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-set-value-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-value-attribute-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-value-attribute-expected.png index d293115..3ea29944 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-value-attribute-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-value-attribute-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png index 139ef26..9d79c67 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom200-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom200-expected.png index 0a2f0e8..f5a00bf5 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom200-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom200-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-accelerated-keyboard-navigation-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-accelerated-keyboard-navigation-expected.png index 97cc793..2ee51bb0 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-accelerated-keyboard-navigation-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-accelerated-keyboard-navigation-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-click-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-click-expected.png index 74f49e2..5b62bc4 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-click-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-click-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-left-corner-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-left-corner-expected.png index 78c70a4..192dbab 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-left-corner-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-left-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-right-corner-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-right-corner-expected.png index 2692915..fbd3929 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-right-corner-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-right-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-left-corner-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-left-corner-expected.png index a3ff8f5..4b7e29a 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-left-corner-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-left-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-right-corner-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-right-corner-expected.png index ac670b6f..28c34524 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-right-corner-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-right-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-drag-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-drag-expected.png index 74f49e2..5b62bc4 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-drag-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-drag-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-after-drag-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-after-drag-expected.png index 9276a92c..0bbacb3 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-after-drag-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-after-drag-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-expected.png index 6e25cb5f..02bc4794 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png index 626a7034..91fdf05 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-top-right-corner-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-top-right-corner-expected.png index ca7f3e2..35f0f06a 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-top-right-corner-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-top-right-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-bottom-right-corner-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-bottom-right-corner-expected.png index dfb6339..c6f30312 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-bottom-right-corner-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-bottom-right-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-top-right-corner-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-top-right-corner-expected.png index 2b4e560..57d0904 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-top-right-corner-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-top-right-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png index d48e9e33..92926bd 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-top-left-corner-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-top-left-corner-expected.png index 6fd67c19..908aa9b 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-top-left-corner-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-top-left-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-bottom-left-corner-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-bottom-left-corner-expected.png index 0fe70ff..fd89212f 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-bottom-left-corner-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-bottom-left-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-top-left-corner-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-top-left-corner-expected.png index 7e9d150..f6dd830 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-top-left-corner-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-top-left-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png index 4215ebe10..8695007 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png index 4577b736..6542d662 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-left-corner-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-left-corner-expected.png index 975ca10e..a3871e4 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-left-corner-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-left-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-right-corner-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-right-corner-expected.png index 00e252c..e37b407 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-right-corner-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-right-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hex-format-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hex-format-expected.png index 8fa44349..32d1cc4 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hex-format-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hex-format-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hsl-format-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hsl-format-expected.png index 15a7452..75eb9be 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hsl-format-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hsl-format-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-accelerated-keyboard-navigation-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-accelerated-keyboard-navigation-expected.png index 8df6bfcf..09d57f2 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-accelerated-keyboard-navigation-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-accelerated-keyboard-navigation-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-click-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-click-expected.png index d3a5532..2c2b460 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-click-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-click-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-drag-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-drag-expected.png index d3a5532..2c2b460 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-drag-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-drag-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-keyboard-navigation-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-keyboard-navigation-expected.png index 77f6cc38..4a6f110 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-keyboard-navigation-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-keyboard-navigation-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-left-edge-zero-hue-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-left-edge-zero-hue-expected.png index 67197f9..dc5d0112df 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-left-edge-zero-hue-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-left-edge-zero-hue-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-right-edge-zero-hue-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-right-edge-zero-hue-expected.png index 1ea425c6..ad79d4e 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-right-edge-zero-hue-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-right-edge-zero-hue-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-imperfect-match-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-imperfect-match-expected.png index ad4ae26..2dbabcc 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-imperfect-match-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-imperfect-match-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-manual-color-change-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-manual-color-change-expected.png index fb1a328d..6d2afae 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-manual-color-change-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-manual-color-change-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-set-value-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-set-value-expected.png index 5794e24..e5490f4d 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-set-value-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-set-value-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-value-attribute-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-value-attribute-expected.png index d293115..3ea29944 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-value-attribute-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-value-attribute-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png index 139ef26..9d79c67 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom200-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom200-expected.png index 0a2f0e8..f5a00bf5 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom200-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom200-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-accelerated-keyboard-navigation-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-accelerated-keyboard-navigation-expected.png index 97cc793..2ee51bb0 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-accelerated-keyboard-navigation-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-accelerated-keyboard-navigation-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-click-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-click-expected.png index 74f49e2..5b62bc4 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-click-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-click-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-left-corner-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-left-corner-expected.png index 78c70a4..192dbab 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-left-corner-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-left-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-right-corner-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-right-corner-expected.png index 2692915..fbd3929 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-right-corner-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-right-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-left-corner-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-left-corner-expected.png index a3ff8f5..4b7e29a 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-left-corner-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-left-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-right-corner-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-right-corner-expected.png index ac670b6f..28c34524 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-right-corner-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-right-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-drag-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-drag-expected.png index 74f49e2..5b62bc4 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-drag-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-drag-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-after-drag-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-after-drag-expected.png index 9276a92c..0bbacb3 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-after-drag-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-after-drag-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-expected.png index 6e25cb5f..02bc4794 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png index 626a7034..91fdf05 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-top-right-corner-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-top-right-corner-expected.png index ca7f3e2..35f0f06a 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-top-right-corner-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-top-right-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-bottom-right-corner-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-bottom-right-corner-expected.png index dfb6339..c6f30312 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-bottom-right-corner-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-bottom-right-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-top-right-corner-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-top-right-corner-expected.png index 2b4e560..57d0904 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-top-right-corner-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-top-right-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png index d48e9e33..92926bd 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-top-left-corner-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-top-left-corner-expected.png index 6fd67c19..908aa9b 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-top-left-corner-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-top-left-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-bottom-left-corner-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-bottom-left-corner-expected.png index 0fe70ff..fd89212f 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-bottom-left-corner-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-bottom-left-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-top-left-corner-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-top-left-corner-expected.png index 7e9d150..f6dd830 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-top-left-corner-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-top-left-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png index 4215ebe10..8695007 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png index 4577b736..6542d662 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-left-corner-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-left-corner-expected.png index 975ca10e..a3871e4 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-left-corner-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-left-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-right-corner-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-right-corner-expected.png index 00e252c..e37b407 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-right-corner-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-right-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hex-format-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hex-format-expected.png index 8fa44349..32d1cc4 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hex-format-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hex-format-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hsl-format-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hsl-format-expected.png index 15a7452..75eb9be 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hsl-format-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hsl-format-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-accelerated-keyboard-navigation-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-accelerated-keyboard-navigation-expected.png index 8df6bfcf..09d57f2 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-accelerated-keyboard-navigation-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-accelerated-keyboard-navigation-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-click-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-click-expected.png index d3a5532..2c2b460 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-click-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-click-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-drag-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-drag-expected.png index d3a5532..2c2b460 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-drag-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-drag-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-keyboard-navigation-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-keyboard-navigation-expected.png index 77f6cc38..4a6f110 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-keyboard-navigation-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-keyboard-navigation-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-left-edge-zero-hue-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-left-edge-zero-hue-expected.png index 67197f9..dc5d0112df 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-left-edge-zero-hue-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-left-edge-zero-hue-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-right-edge-zero-hue-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-right-edge-zero-hue-expected.png index 1ea425c6..ad79d4e 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-right-edge-zero-hue-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-right-edge-zero-hue-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-imperfect-match-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-imperfect-match-expected.png index ad4ae26..2dbabcc 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-imperfect-match-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-imperfect-match-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-manual-color-change-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-manual-color-change-expected.png index fb1a328d..6d2afae 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-manual-color-change-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-manual-color-change-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-set-value-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-set-value-expected.png index 5794e24..e5490f4d 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-set-value-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-set-value-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-value-attribute-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-value-attribute-expected.png index d293115..3ea29944 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-value-attribute-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-value-attribute-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png index 139ef26..9d79c67 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom200-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom200-expected.png index 0a2f0e8..f5a00bf5 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom200-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom200-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-accelerated-keyboard-navigation-expected.png b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-accelerated-keyboard-navigation-expected.png index 129adc8..6aca9f5 100644 --- a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-accelerated-keyboard-navigation-expected.png +++ b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-accelerated-keyboard-navigation-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-click-expected.png b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-click-expected.png index 6bf11e8..c6524e68 100644 --- a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-click-expected.png +++ b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-click-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-left-corner-expected.png b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-left-corner-expected.png index e4b5de44..c365b2c 100644 --- a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-left-corner-expected.png +++ b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-left-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-right-corner-expected.png b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-right-corner-expected.png index fff5e4d..c750320 100644 --- a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-right-corner-expected.png +++ b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-right-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-left-corner-expected.png b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-left-corner-expected.png index 4491f97..65bed6c8 100644 --- a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-left-corner-expected.png +++ b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-left-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-right-corner-expected.png b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-right-corner-expected.png index f71675a9..92ed97b 100644 --- a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-right-corner-expected.png +++ b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-right-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-drag-expected.png b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-drag-expected.png index 6bf11e8..c6524e68 100644 --- a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-drag-expected.png +++ b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-drag-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-after-drag-expected.png b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-after-drag-expected.png index 065cff1..65365302 100644 --- a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-after-drag-expected.png +++ b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-after-drag-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-expected.png b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-expected.png index 4cab342..9664f4b 100644 --- a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-expected.png +++ b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png index ed7d334..61ad50d 100644 --- a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png +++ b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-top-right-corner-expected.png b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-top-right-corner-expected.png index 35a44799..93ea8f5 100644 --- a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-top-right-corner-expected.png +++ b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-top-right-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-bottom-right-corner-expected.png b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-bottom-right-corner-expected.png index 1602af4..fdc6751 100644 --- a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-bottom-right-corner-expected.png +++ b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-bottom-right-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-top-right-corner-expected.png b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-top-right-corner-expected.png index 2bfb45b..505ef7b3 100644 --- a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-top-right-corner-expected.png +++ b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-top-right-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png index 37cff23..a12d326 100644 --- a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png +++ b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-top-left-corner-expected.png b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-top-left-corner-expected.png index 71f19c42..9e36a42b 100644 --- a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-top-left-corner-expected.png +++ b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-top-left-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-bottom-left-corner-expected.png b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-bottom-left-corner-expected.png index a2fdb5e..2412dda 100644 --- a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-bottom-left-corner-expected.png +++ b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-bottom-left-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-top-left-corner-expected.png b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-top-left-corner-expected.png index 358b6e2..caa089d 100644 --- a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-top-left-corner-expected.png +++ b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-top-left-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png index 5fa35de..f9e4f27 100644 --- a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png +++ b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png index 934e209..0e3dcf1 100644 --- a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png +++ b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-left-corner-expected.png b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-left-corner-expected.png index ce435da8..612575a 100644 --- a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-left-corner-expected.png +++ b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-left-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-right-corner-expected.png b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-right-corner-expected.png index 5892c80..24c05f8 100644 --- a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-right-corner-expected.png +++ b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-right-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hex-format-expected.png b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hex-format-expected.png index 8095a29..3403ed9c 100644 --- a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hex-format-expected.png +++ b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hex-format-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hsl-format-expected.png b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hsl-format-expected.png index 0ec76978..421bc39d 100644 --- a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hsl-format-expected.png +++ b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hsl-format-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-accelerated-keyboard-navigation-expected.png b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-accelerated-keyboard-navigation-expected.png index 4bf7436..ec89bbe9 100644 --- a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-accelerated-keyboard-navigation-expected.png +++ b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-accelerated-keyboard-navigation-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-click-expected.png b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-click-expected.png index 1f4606f6..b085790 100644 --- a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-click-expected.png +++ b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-click-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-drag-expected.png b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-drag-expected.png index 1f4606f6..b085790 100644 --- a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-drag-expected.png +++ b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-drag-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-keyboard-navigation-expected.png b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-keyboard-navigation-expected.png index c95f913..0443df5 100644 --- a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-keyboard-navigation-expected.png +++ b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-keyboard-navigation-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-left-edge-zero-hue-expected.png b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-left-edge-zero-hue-expected.png index ae76a47d..038990af 100644 --- a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-left-edge-zero-hue-expected.png +++ b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-left-edge-zero-hue-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-right-edge-zero-hue-expected.png b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-right-edge-zero-hue-expected.png index cdec9d0..f5cce07 100644 --- a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-right-edge-zero-hue-expected.png +++ b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-right-edge-zero-hue-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-imperfect-match-expected.png b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-imperfect-match-expected.png index 280d225..04e968cc 100644 --- a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-imperfect-match-expected.png +++ b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-imperfect-match-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-manual-color-change-expected.png b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-manual-color-change-expected.png index 8422596..1bca672 100644 --- a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-manual-color-change-expected.png +++ b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-manual-color-change-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-set-value-expected.png b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-set-value-expected.png index ddb6e3bd..26eea760 100644 --- a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-set-value-expected.png +++ b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-set-value-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-value-attribute-expected.png b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-value-attribute-expected.png index 7cf98ba..007215a 100644 --- a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-value-attribute-expected.png +++ b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-value-attribute-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png index 5cf7d9d..09421ce 100644 --- a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png +++ b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom200-expected.png b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom200-expected.png index 7a073267..6198bc27 100644 --- a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom200-expected.png +++ b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom200-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/external/wpt/css/css-transitions/Element-getAnimations.tentative-expected.txt b/third_party/blink/web_tests/platform/mac/external/wpt/css/css-transitions/Element-getAnimations.tentative-expected.txt new file mode 100644 index 0000000..6163606 --- /dev/null +++ b/third_party/blink/web_tests/platform/mac/external/wpt/css/css-transitions/Element-getAnimations.tentative-expected.txt
@@ -0,0 +1,10 @@ +This is a testharness.js-based test. +PASS getAnimations returns one Animation per transitioning property +PASS getAnimations returns CSSTransition objects for CSS Transitions +PASS getAnimations does not return finished CSS Transitions +PASS getAnimations does not return a transition for a non-animatable property +PASS getAnimations does not return a transition for an unsupposed property +FAIL getAnimations sorts simultaneous transitions by name assert_equals: expected "border-left-width" but got "opacity" +PASS getAnimations sorts transitions by when they were generated +Harness: the test ran to completion. +
diff --git a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-accelerated-keyboard-navigation-expected.png b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-accelerated-keyboard-navigation-expected.png index 129adc8..6aca9f5 100644 --- a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-accelerated-keyboard-navigation-expected.png +++ b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-accelerated-keyboard-navigation-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-click-expected.png b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-click-expected.png index 6bf11e8..c6524e68 100644 --- a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-click-expected.png +++ b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-click-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-left-corner-expected.png b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-left-corner-expected.png index e4b5de44..c365b2c 100644 --- a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-left-corner-expected.png +++ b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-left-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-right-corner-expected.png b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-right-corner-expected.png index fff5e4d..c750320 100644 --- a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-right-corner-expected.png +++ b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-right-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-left-corner-expected.png b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-left-corner-expected.png index 4491f97..65bed6c8 100644 --- a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-left-corner-expected.png +++ b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-left-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-right-corner-expected.png b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-right-corner-expected.png index f71675a9..92ed97b 100644 --- a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-right-corner-expected.png +++ b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-right-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-drag-expected.png b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-drag-expected.png index 6bf11e8..c6524e68 100644 --- a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-drag-expected.png +++ b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-drag-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-after-drag-expected.png b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-after-drag-expected.png index 065cff1..65365302 100644 --- a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-after-drag-expected.png +++ b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-after-drag-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-expected.png b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-expected.png index 4cab342..9664f4b 100644 --- a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-expected.png +++ b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png index ed7d334..61ad50d 100644 --- a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png +++ b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-top-right-corner-expected.png b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-top-right-corner-expected.png index 35a44799..93ea8f5 100644 --- a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-top-right-corner-expected.png +++ b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-top-right-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-bottom-right-corner-expected.png b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-bottom-right-corner-expected.png index 1602af4..fdc6751 100644 --- a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-bottom-right-corner-expected.png +++ b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-bottom-right-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-top-right-corner-expected.png b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-top-right-corner-expected.png index 2bfb45b..505ef7b3 100644 --- a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-top-right-corner-expected.png +++ b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-top-right-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png index 37cff23..a12d326 100644 --- a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png +++ b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-top-left-corner-expected.png b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-top-left-corner-expected.png index 71f19c42..9e36a42b 100644 --- a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-top-left-corner-expected.png +++ b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-top-left-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-bottom-left-corner-expected.png b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-bottom-left-corner-expected.png index a2fdb5e..2412dda 100644 --- a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-bottom-left-corner-expected.png +++ b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-bottom-left-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-top-left-corner-expected.png b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-top-left-corner-expected.png index 358b6e2..caa089d 100644 --- a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-top-left-corner-expected.png +++ b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-top-left-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png index 5fa35de..f9e4f27 100644 --- a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png +++ b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png index 934e209..0e3dcf1 100644 --- a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png +++ b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-left-corner-expected.png b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-left-corner-expected.png index ce435da8..612575a 100644 --- a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-left-corner-expected.png +++ b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-left-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-right-corner-expected.png b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-right-corner-expected.png index 5892c80..24c05f8 100644 --- a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-right-corner-expected.png +++ b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-right-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hex-format-expected.png b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hex-format-expected.png index 8095a29..3403ed9c 100644 --- a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hex-format-expected.png +++ b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hex-format-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hsl-format-expected.png b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hsl-format-expected.png index 0ec76978..421bc39d 100644 --- a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hsl-format-expected.png +++ b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hsl-format-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-accelerated-keyboard-navigation-expected.png b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-accelerated-keyboard-navigation-expected.png index 4bf7436..ec89bbe9 100644 --- a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-accelerated-keyboard-navigation-expected.png +++ b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-accelerated-keyboard-navigation-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-click-expected.png b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-click-expected.png index 1f4606f6..b085790 100644 --- a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-click-expected.png +++ b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-click-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-drag-expected.png b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-drag-expected.png index 1f4606f6..b085790 100644 --- a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-drag-expected.png +++ b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-drag-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-keyboard-navigation-expected.png b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-keyboard-navigation-expected.png index c95f913..0443df5 100644 --- a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-keyboard-navigation-expected.png +++ b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-keyboard-navigation-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-left-edge-zero-hue-expected.png b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-left-edge-zero-hue-expected.png index ae76a47d..038990af 100644 --- a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-left-edge-zero-hue-expected.png +++ b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-left-edge-zero-hue-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-right-edge-zero-hue-expected.png b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-right-edge-zero-hue-expected.png index cdec9d0..f5cce07 100644 --- a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-right-edge-zero-hue-expected.png +++ b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-right-edge-zero-hue-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-imperfect-match-expected.png b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-imperfect-match-expected.png index 280d225..04e968cc 100644 --- a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-imperfect-match-expected.png +++ b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-imperfect-match-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-manual-color-change-expected.png b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-manual-color-change-expected.png index 8422596..1bca672 100644 --- a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-manual-color-change-expected.png +++ b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-manual-color-change-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-set-value-expected.png b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-set-value-expected.png index ddb6e3bd..26eea760 100644 --- a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-set-value-expected.png +++ b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-set-value-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-value-attribute-expected.png b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-value-attribute-expected.png index 7cf98ba..007215a 100644 --- a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-value-attribute-expected.png +++ b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-value-attribute-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png index 5cf7d9d..09421ce 100644 --- a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png +++ b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom200-expected.png b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom200-expected.png index 7a073267..6198bc27 100644 --- a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom200-expected.png +++ b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom200-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/external/wpt/css/css-transitions/Element-getAnimations.tentative-expected.txt b/third_party/blink/web_tests/platform/win/external/wpt/css/css-transitions/Element-getAnimations.tentative-expected.txt new file mode 100644 index 0000000..6163606 --- /dev/null +++ b/third_party/blink/web_tests/platform/win/external/wpt/css/css-transitions/Element-getAnimations.tentative-expected.txt
@@ -0,0 +1,10 @@ +This is a testharness.js-based test. +PASS getAnimations returns one Animation per transitioning property +PASS getAnimations returns CSSTransition objects for CSS Transitions +PASS getAnimations does not return finished CSS Transitions +PASS getAnimations does not return a transition for a non-animatable property +PASS getAnimations does not return a transition for an unsupposed property +FAIL getAnimations sorts simultaneous transitions by name assert_equals: expected "border-left-width" but got "opacity" +PASS getAnimations sorts transitions by when they were generated +Harness: the test ran to completion. +
diff --git a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-after-drag-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-accelerated-keyboard-navigation-expected.png similarity index 72% copy from third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-after-drag-expected.png copy to third_party/blink/web_tests/platform/win/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-accelerated-keyboard-navigation-expected.png index b846542..6a3b490 100644 --- a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-after-drag-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-accelerated-keyboard-navigation-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-after-drag-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-click-expected.png similarity index 72% copy from third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-after-drag-expected.png copy to third_party/blink/web_tests/platform/win/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-click-expected.png index b846542..6a3b490 100644 --- a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-after-drag-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-click-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-left-corner-expected.png similarity index 74% rename from third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png rename to third_party/blink/web_tests/platform/win/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-left-corner-expected.png index 816abce..2d8ca591 100644 --- a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-left-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-right-corner-expected.png similarity index 74% copy from third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png copy to third_party/blink/web_tests/platform/win/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-right-corner-expected.png index 816abce..2d8ca591 100644 --- a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-right-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-left-corner-expected.png similarity index 74% copy from third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png copy to third_party/blink/web_tests/platform/win/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-left-corner-expected.png index 816abce..2d8ca591 100644 --- a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-left-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-right-corner-expected.png similarity index 74% copy from third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png copy to third_party/blink/web_tests/platform/win/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-right-corner-expected.png index 816abce..2d8ca591 100644 --- a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-right-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-after-drag-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-drag-expected.png similarity index 72% copy from third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-after-drag-expected.png copy to third_party/blink/web_tests/platform/win/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-drag-expected.png index b846542..6a3b490 100644 --- a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-after-drag-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-drag-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-after-drag-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-after-drag-expected.png new file mode 100644 index 0000000..af330a81 --- /dev/null +++ b/third_party/blink/web_tests/platform/win/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-after-drag-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-after-drag-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-expected.png similarity index 72% copy from third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-after-drag-expected.png copy to third_party/blink/web_tests/platform/win/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-expected.png index b846542..6a3b490 100644 --- a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-after-drag-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png similarity index 74% copy from third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png copy to third_party/blink/web_tests/platform/win/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png index 816abce..2d8ca591 100644 --- a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-top-right-corner-expected.png similarity index 74% copy from third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png copy to third_party/blink/web_tests/platform/win/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-top-right-corner-expected.png index 816abce..2d8ca591 100644 --- a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-top-right-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-bottom-right-corner-expected.png similarity index 74% copy from third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png copy to third_party/blink/web_tests/platform/win/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-bottom-right-corner-expected.png index 816abce..2d8ca591 100644 --- a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-bottom-right-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-top-right-corner-expected.png similarity index 74% copy from third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png copy to third_party/blink/web_tests/platform/win/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-top-right-corner-expected.png index 816abce..2d8ca591 100644 --- a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-top-right-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png similarity index 74% copy from third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png copy to third_party/blink/web_tests/platform/win/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png index 816abce..2d8ca591 100644 --- a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-top-left-corner-expected.png similarity index 74% copy from third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png copy to third_party/blink/web_tests/platform/win/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-top-left-corner-expected.png index 816abce..2d8ca591 100644 --- a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-top-left-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-bottom-left-corner-expected.png similarity index 74% copy from third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png copy to third_party/blink/web_tests/platform/win/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-bottom-left-corner-expected.png index 816abce..2d8ca591 100644 --- a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-bottom-left-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-top-left-corner-expected.png similarity index 74% copy from third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png copy to third_party/blink/web_tests/platform/win/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-top-left-corner-expected.png index 816abce..2d8ca591 100644 --- a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-top-left-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png similarity index 74% copy from third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png copy to third_party/blink/web_tests/platform/win/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png index 816abce..2d8ca591 100644 --- a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png similarity index 74% copy from third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png copy to third_party/blink/web_tests/platform/win/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png index 816abce..2d8ca591 100644 --- a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-left-corner-expected.png similarity index 74% copy from third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png copy to third_party/blink/web_tests/platform/win/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-left-corner-expected.png index 816abce..2d8ca591 100644 --- a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-left-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-right-corner-expected.png similarity index 74% copy from third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png copy to third_party/blink/web_tests/platform/win/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-right-corner-expected.png index 816abce..2d8ca591 100644 --- a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-right-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-after-drag-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/controls-new-ui/color/color-picker-appearance-hex-format-expected.png similarity index 74% rename from third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-after-drag-expected.png rename to third_party/blink/web_tests/platform/win/fast/forms/controls-new-ui/color/color-picker-appearance-hex-format-expected.png index b846542..52b6c085 100644 --- a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-after-drag-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/controls-new-ui/color/color-picker-appearance-hex-format-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-after-drag-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/controls-new-ui/color/color-picker-appearance-hsl-format-expected.png similarity index 74% copy from third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-after-drag-expected.png copy to third_party/blink/web_tests/platform/win/fast/forms/controls-new-ui/color/color-picker-appearance-hsl-format-expected.png index b846542..52b6c085 100644 --- a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-after-drag-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/controls-new-ui/color/color-picker-appearance-hsl-format-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-left-edge-zero-hue-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-accelerated-keyboard-navigation-expected.png similarity index 74% rename from third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-left-edge-zero-hue-expected.png rename to third_party/blink/web_tests/platform/win/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-accelerated-keyboard-navigation-expected.png index dae8a211..67a02d35 100644 --- a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-left-edge-zero-hue-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-accelerated-keyboard-navigation-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-left-edge-zero-hue-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-click-expected.png similarity index 74% copy from third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-left-edge-zero-hue-expected.png copy to third_party/blink/web_tests/platform/win/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-click-expected.png index dae8a211..67a02d35 100644 --- a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-left-edge-zero-hue-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-click-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-left-edge-zero-hue-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-drag-expected.png similarity index 74% copy from third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-left-edge-zero-hue-expected.png copy to third_party/blink/web_tests/platform/win/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-drag-expected.png index dae8a211..67a02d35 100644 --- a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-left-edge-zero-hue-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-drag-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-left-edge-zero-hue-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-keyboard-navigation-expected.png similarity index 74% copy from third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-left-edge-zero-hue-expected.png copy to third_party/blink/web_tests/platform/win/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-keyboard-navigation-expected.png index dae8a211..67a02d35 100644 --- a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-left-edge-zero-hue-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-keyboard-navigation-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-left-edge-zero-hue-expected.png similarity index 72% copy from third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png copy to third_party/blink/web_tests/platform/win/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-left-edge-zero-hue-expected.png index 816abce..127267b 100644 --- a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-left-edge-zero-hue-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-right-edge-zero-hue-expected.png similarity index 72% copy from third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png copy to third_party/blink/web_tests/platform/win/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-right-edge-zero-hue-expected.png index 816abce..127267b 100644 --- a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-right-edge-zero-hue-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/controls-new-ui/color/color-picker-appearance-imperfect-match-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/controls-new-ui/color/color-picker-appearance-imperfect-match-expected.png new file mode 100644 index 0000000..af330a81 --- /dev/null +++ b/third_party/blink/web_tests/platform/win/fast/forms/controls-new-ui/color/color-picker-appearance-imperfect-match-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/controls-new-ui/color/color-picker-appearance-manual-color-change-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/controls-new-ui/color/color-picker-appearance-manual-color-change-expected.png new file mode 100644 index 0000000..af330a81 --- /dev/null +++ b/third_party/blink/web_tests/platform/win/fast/forms/controls-new-ui/color/color-picker-appearance-manual-color-change-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-after-drag-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/controls-new-ui/color/color-picker-appearance-set-value-expected.png similarity index 74% copy from third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-after-drag-expected.png copy to third_party/blink/web_tests/platform/win/fast/forms/controls-new-ui/color/color-picker-appearance-set-value-expected.png index b846542..52b6c085 100644 --- a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-after-drag-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/controls-new-ui/color/color-picker-appearance-set-value-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-after-drag-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/controls-new-ui/color/color-picker-appearance-value-attribute-expected.png similarity index 74% copy from third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-after-drag-expected.png copy to third_party/blink/web_tests/platform/win/fast/forms/controls-new-ui/color/color-picker-appearance-value-attribute-expected.png index b846542..52b6c085 100644 --- a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-after-drag-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/controls-new-ui/color/color-picker-appearance-value-attribute-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png new file mode 100644 index 0000000..33356cc7 --- /dev/null +++ b/third_party/blink/web_tests/platform/win/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/controls-new-ui/color/color-picker-appearance-zoom200-expected.png similarity index 72% copy from third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png copy to third_party/blink/web_tests/platform/win/fast/forms/controls-new-ui/color/color-picker-appearance-zoom200-expected.png index 816abce..21a94b3 100644 --- a/third_party/blink/web_tests/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/controls-new-ui/color/color-picker-appearance-zoom200-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-accelerated-keyboard-navigation-expected.png b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-accelerated-keyboard-navigation-expected.png index c0223054..2c26fa78 100644 --- a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-accelerated-keyboard-navigation-expected.png +++ b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-accelerated-keyboard-navigation-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-click-expected.png b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-click-expected.png index 70e91ab..871f3166 100644 --- a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-click-expected.png +++ b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-click-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-left-corner-expected.png b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-left-corner-expected.png index 4dc8ba17..0e05cf9 100644 --- a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-left-corner-expected.png +++ b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-left-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-right-corner-expected.png b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-right-corner-expected.png index 4e5798e..5881f3e 100644 --- a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-right-corner-expected.png +++ b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-right-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-left-corner-expected.png b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-left-corner-expected.png index 22889e7..7e0a0a78 100644 --- a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-left-corner-expected.png +++ b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-left-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-right-corner-expected.png b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-right-corner-expected.png index e0d6a601..7e8062e 100644 --- a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-right-corner-expected.png +++ b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-right-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-drag-expected.png b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-drag-expected.png index 70e91ab..871f3166 100644 --- a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-drag-expected.png +++ b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-drag-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-after-drag-expected.png b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-after-drag-expected.png index fe5e2e2..c049d8f 100644 --- a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-after-drag-expected.png +++ b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-after-drag-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-expected.png b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-expected.png index 4aa6076..652e5fb90 100644 --- a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-expected.png +++ b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-top-right-corner-expected.png b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-top-right-corner-expected.png index aa26fe4..be2d1e6ab 100644 --- a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-top-right-corner-expected.png +++ b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-top-right-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-top-right-corner-expected.png b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-top-right-corner-expected.png index ef266bfd..d45e116 100644 --- a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-top-right-corner-expected.png +++ b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-top-right-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-top-left-corner-expected.png b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-top-left-corner-expected.png index 874650b..1c88c84a 100644 --- a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-top-left-corner-expected.png +++ b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-top-left-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-top-left-corner-expected.png b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-top-left-corner-expected.png index 3b3b662..d64194e 100644 --- a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-top-left-corner-expected.png +++ b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-top-left-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png index ff3a1ad..bb5a9c77 100644 --- a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png +++ b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png index 87effa5a..f726235 100644 --- a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png +++ b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-left-corner-expected.png b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-left-corner-expected.png index 20631627..aab8e56 100644 --- a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-left-corner-expected.png +++ b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-left-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-right-corner-expected.png b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-right-corner-expected.png index da59433..f157fe8d 100644 --- a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-right-corner-expected.png +++ b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-right-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hex-format-expected.png b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hex-format-expected.png index b9c1433..77e1119 100644 --- a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hex-format-expected.png +++ b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hex-format-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hsl-format-expected.png b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hsl-format-expected.png index 4c37386bc..5fd83282 100644 --- a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hsl-format-expected.png +++ b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hsl-format-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-keyboard-navigation-expected.png b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-keyboard-navigation-expected.png index f904e675..1a2830e07 100644 --- a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-keyboard-navigation-expected.png +++ b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-keyboard-navigation-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-left-edge-zero-hue-expected.png b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-left-edge-zero-hue-expected.png index f93a8348..f001b69 100644 --- a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-left-edge-zero-hue-expected.png +++ b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-left-edge-zero-hue-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-right-edge-zero-hue-expected.png b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-right-edge-zero-hue-expected.png index ff354762..b8ed8f2 100644 --- a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-right-edge-zero-hue-expected.png +++ b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-right-edge-zero-hue-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-imperfect-match-expected.png b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-imperfect-match-expected.png index 687c6c55..e3c346b 100644 --- a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-imperfect-match-expected.png +++ b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-imperfect-match-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-manual-color-change-expected.png b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-manual-color-change-expected.png index fc90aae..0fbc2b4 100644 --- a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-manual-color-change-expected.png +++ b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-manual-color-change-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-set-value-expected.png b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-set-value-expected.png index 010531f..d987b1de 100644 --- a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-set-value-expected.png +++ b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-set-value-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-value-attribute-expected.png b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-value-attribute-expected.png index 1bb63e6..e61ad0d2 100644 --- a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-value-attribute-expected.png +++ b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-value-attribute-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png index 81ed505..0f7de89 100644 --- a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png +++ b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom200-expected.png b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom200-expected.png index 0b0b9212..06a2fb93 100644 --- a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom200-expected.png +++ b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom200-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/svg/css/getComputedStyle-listing-expected.txt b/third_party/blink/web_tests/svg/css/getComputedStyle-listing-expected.txt index 570664b1..eef906b 100644 --- a/third_party/blink/web_tests/svg/css/getComputedStyle-listing-expected.txt +++ b/third_party/blink/web_tests/svg/css/getComputedStyle-listing-expected.txt
@@ -148,6 +148,7 @@ flood-color: rgb(0, 0, 0) flood-opacity: 1 font-kerning: auto +font-optical-sizing: auto font-size: 16px font-size-adjust: none font-stretch: 100%
diff --git a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-accelerated-keyboard-navigation-expected.png b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-accelerated-keyboard-navigation-expected.png index c0223054..2c26fa78 100644 --- a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-accelerated-keyboard-navigation-expected.png +++ b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-accelerated-keyboard-navigation-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-click-expected.png b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-click-expected.png index 70e91ab..871f3166 100644 --- a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-click-expected.png +++ b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-click-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-left-corner-expected.png b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-left-corner-expected.png index 4dc8ba17..0e05cf9 100644 --- a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-left-corner-expected.png +++ b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-left-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-right-corner-expected.png b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-right-corner-expected.png index 4e5798e..5881f3e 100644 --- a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-right-corner-expected.png +++ b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-right-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-left-corner-expected.png b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-left-corner-expected.png index 22889e7..7e0a0a78 100644 --- a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-left-corner-expected.png +++ b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-left-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-right-corner-expected.png b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-right-corner-expected.png index e0d6a601..7e8062e 100644 --- a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-right-corner-expected.png +++ b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-right-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-drag-expected.png b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-drag-expected.png index 70e91ab..871f3166 100644 --- a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-drag-expected.png +++ b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-drag-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-after-drag-expected.png b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-after-drag-expected.png index fe5e2e2..c049d8f 100644 --- a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-after-drag-expected.png +++ b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-after-drag-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-expected.png b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-expected.png index 4aa6076..652e5fb90 100644 --- a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-expected.png +++ b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png index 6cc8559..32d807a3 100644 --- a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png +++ b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-top-right-corner-expected.png b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-top-right-corner-expected.png index aa26fe4..be2d1e6ab 100644 --- a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-top-right-corner-expected.png +++ b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-top-right-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-bottom-right-corner-expected.png b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-bottom-right-corner-expected.png index 3ed9a01..33310c5 100644 --- a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-bottom-right-corner-expected.png +++ b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-bottom-right-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-top-right-corner-expected.png b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-top-right-corner-expected.png index ef266bfd..d45e116 100644 --- a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-top-right-corner-expected.png +++ b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-top-right-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png index 8073d34..ca1e855 100644 --- a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png +++ b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-top-left-corner-expected.png b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-top-left-corner-expected.png index 874650b..1c88c84a 100644 --- a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-top-left-corner-expected.png +++ b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-top-left-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-bottom-left-corner-expected.png b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-bottom-left-corner-expected.png index d34c671..d9e45fad 100644 --- a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-bottom-left-corner-expected.png +++ b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-bottom-left-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-top-left-corner-expected.png b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-top-left-corner-expected.png index 3b3b662..d64194e 100644 --- a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-top-left-corner-expected.png +++ b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-top-left-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png index ff3a1ad..bb5a9c77 100644 --- a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png +++ b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png index 87effa5a..f726235 100644 --- a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png +++ b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-left-corner-expected.png b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-left-corner-expected.png index 20631627..aab8e56 100644 --- a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-left-corner-expected.png +++ b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-left-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-right-corner-expected.png b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-right-corner-expected.png index da59433..f157fe8d 100644 --- a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-right-corner-expected.png +++ b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-right-corner-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hex-format-expected.png b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hex-format-expected.png index b9c1433..77e1119 100644 --- a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hex-format-expected.png +++ b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hex-format-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hsl-format-expected.png b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hsl-format-expected.png index 4c37386bc..5fd83282 100644 --- a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hsl-format-expected.png +++ b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hsl-format-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-accelerated-keyboard-navigation-expected.png b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-accelerated-keyboard-navigation-expected.png index 38bfd58..d5f3137 100644 --- a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-accelerated-keyboard-navigation-expected.png +++ b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-accelerated-keyboard-navigation-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-click-expected.png b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-click-expected.png index dd641d9..3b2a8c6 100644 --- a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-click-expected.png +++ b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-click-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-drag-expected.png b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-drag-expected.png index dd641d9..3b2a8c6 100644 --- a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-drag-expected.png +++ b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-drag-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-keyboard-navigation-expected.png b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-keyboard-navigation-expected.png index f904e675..1a2830e07 100644 --- a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-keyboard-navigation-expected.png +++ b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-keyboard-navigation-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-left-edge-zero-hue-expected.png b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-left-edge-zero-hue-expected.png index f93a8348..f001b69 100644 --- a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-left-edge-zero-hue-expected.png +++ b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-left-edge-zero-hue-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-right-edge-zero-hue-expected.png b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-right-edge-zero-hue-expected.png index ff354762..b8ed8f2 100644 --- a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-right-edge-zero-hue-expected.png +++ b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-right-edge-zero-hue-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-imperfect-match-expected.png b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-imperfect-match-expected.png index 687c6c55..e3c346b 100644 --- a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-imperfect-match-expected.png +++ b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-imperfect-match-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-manual-color-change-expected.png b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-manual-color-change-expected.png index fc90aae..0fbc2b4 100644 --- a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-manual-color-change-expected.png +++ b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-manual-color-change-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-set-value-expected.png b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-set-value-expected.png index 010531f..d987b1de 100644 --- a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-set-value-expected.png +++ b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-set-value-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-value-attribute-expected.png b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-value-attribute-expected.png index 1bb63e6..e61ad0d2 100644 --- a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-value-attribute-expected.png +++ b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-value-attribute-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png index 81ed505..0f7de89 100644 --- a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png +++ b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom200-expected.png b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom200-expected.png index 0b0b9212..06a2fb93 100644 --- a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom200-expected.png +++ b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom200-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/virtual/stable/webexposed/css-properties-as-js-properties-expected.txt b/third_party/blink/web_tests/virtual/stable/webexposed/css-properties-as-js-properties-expected.txt index 0835ba5..4793d224 100644 --- a/third_party/blink/web_tests/virtual/stable/webexposed/css-properties-as-js-properties-expected.txt +++ b/third_party/blink/web_tests/virtual/stable/webexposed/css-properties-as-js-properties-expected.txt
@@ -142,6 +142,7 @@ fontFamily fontFeatureSettings fontKerning +fontOpticalSizing fontSize fontStretch fontStyle
diff --git a/third_party/blink/web_tests/virtual/stable/webexposed/css-property-listing-expected.txt b/third_party/blink/web_tests/virtual/stable/webexposed/css-property-listing-expected.txt index 6add93f..6a61111 100644 --- a/third_party/blink/web_tests/virtual/stable/webexposed/css-property-listing-expected.txt +++ b/third_party/blink/web_tests/virtual/stable/webexposed/css-property-listing-expected.txt
@@ -176,6 +176,7 @@ font-family font-feature-settings font-kerning + font-optical-sizing font-size font-stretch font-style
diff --git a/third_party/blink/web_tests/webexposed/css-properties-as-js-properties-expected.txt b/third_party/blink/web_tests/webexposed/css-properties-as-js-properties-expected.txt index 9073aad3..b9bc397 100644 --- a/third_party/blink/web_tests/webexposed/css-properties-as-js-properties-expected.txt +++ b/third_party/blink/web_tests/webexposed/css-properties-as-js-properties-expected.txt
@@ -151,6 +151,7 @@ fontFamily fontFeatureSettings fontKerning +fontOpticalSizing fontSize fontSizeAdjust fontStretch
diff --git a/third_party/blink/web_tests/webexposed/css-property-listing-expected.txt b/third_party/blink/web_tests/webexposed/css-property-listing-expected.txt index 6c79bc1..d8aae8b6 100644 --- a/third_party/blink/web_tests/webexposed/css-property-listing-expected.txt +++ b/third_party/blink/web_tests/webexposed/css-property-listing-expected.txt
@@ -177,6 +177,7 @@ font-family font-feature-settings font-kerning + font-optical-sizing font-size font-size-adjust font-stretch
diff --git a/third_party/freetype/README.chromium b/third_party/freetype/README.chromium index b170041b..110c766 100644 --- a/third_party/freetype/README.chromium +++ b/third_party/freetype/README.chromium
@@ -1,7 +1,7 @@ Name: FreeType URL: http://www.freetype.org/ -Version: VER-2-10-1-47-gcc17f852d -Revision: cc17f852d575a8a66f9be51461af550d0f413891 +Version: VER-2-10-1-48-g99f23d6ff +Revision: 99f23d6ff2203966d210bccd49eacc62a20328f9 License: Custom license "inspired by the BSD, Artistic, and IJG (Independent JPEG Group) licenses" License File: src/docs/FTL.TXT
diff --git a/tools/android/elf_compression/compress_section.py b/tools/android/elf_compression/compress_section.py index 0f7d312..2efe7ef 100755 --- a/tools/android/elf_compression/compress_section.py +++ b/tools/android/elf_compression/compress_section.py
@@ -120,7 +120,8 @@ segments is required here. """ elf = elf_headers.ElfHeader(data) - for phdr in elf.GetPhdrsByType(elf_headers.ProgramHeader.Type.PT_LOAD): + for phdr in elf.GetProgramHeadersByType( + elf_headers.ProgramHeader.Type.PT_LOAD): # Current version of the prototype only supports ranges which are fully # contained inside one LOAD segment. It should cover most of the common # cases. @@ -191,14 +192,15 @@ old_phoff = elf_hdr.e_phoff new_phoff = elf_hdr.e_phoff = len(data) - unaligned_new_vaddr = _FindNewVaddr(elf_hdr.GetPhdrs()) + unaligned_new_vaddr = _FindNewVaddr(elf_hdr.GetProgramHeaders()) new_vaddr = MatchVaddrAlignment(unaligned_new_vaddr, new_phoff) # Since we moved the PHDR section to the end of the file, we need to create a # new LOAD segment to load it in. current_filesize = elf_hdr.e_phnum * elf_hdr.e_phentsize # We are using current_filesize while adding new program header due to - # AddPhdr handling the increase of size due to addition of new header. - elf_hdr.AddPhdr( + # AddProgramHeader handling the increase of size due to addition of new + # header. + elf_hdr.AddProgramHeader( elf_headers.ProgramHeader.Create( elf_hdr.byte_order, p_type=elf_headers.ProgramHeader.Type.PT_LOAD, @@ -212,7 +214,8 @@ )) # PHDR segment if it exists should point to the new location. - for phdr in elf_hdr.GetPhdrsByType(elf_headers.ProgramHeader.Type.PT_PHDR): + for phdr in elf_hdr.GetProgramHeadersByType( + elf_headers.ProgramHeader.Type.PT_PHDR): phdr.p_offset = new_phoff phdr.p_vaddr = new_vaddr phdr.p_paddr = new_vaddr @@ -227,17 +230,53 @@ elf_hdr.PatchData(data) -def _SplitLoadSegment(data, l, r): +def _CreateLoadForCompressedSection(data): + """Creates a LOAD segment to previously created COMPRESSED_SECTION_NAME.""" + elf_hdr = elf_headers.ElfHeader(data) + + section_offset = None + section_size = None + for shdr in elf_hdr.GetSectionHeaders(): + if shdr.GetStrName() == COMPRESSED_SECTION_NAME: + section_offset = shdr.sh_offset + section_size = shdr.sh_size + break + if section_offset is None: + raise RuntimeError( + 'Failed to locate {} section in file'.format(COMPRESSED_SECTION_NAME)) + + unaligned_new_vaddr = _FindNewVaddr(elf_hdr.GetProgramHeaders()) + new_vaddr = MatchVaddrAlignment(unaligned_new_vaddr, section_offset) + elf_hdr.AddProgramHeader( + elf_headers.ProgramHeader.Create( + elf_hdr.byte_order, + p_type=elf_headers.ProgramHeader.Type.PT_LOAD, + p_flags=elf_headers.ProgramHeader.Flags.PF_R, + p_offset=section_offset, + p_vaddr=new_vaddr, + p_paddr=new_vaddr, + p_filesz=section_size, + p_memsz=section_size, + p_align=ADDRESS_ALIGN, + )) + elf_hdr.PatchData(data) + + +def _SplitLoadSegmentAndNullifyRange(data, l, r): """Find LOAD segment covering [l, r) and splits it into three segments. Split is done so one of the LOAD segments contains only [l, r) and nothing else. If the range is located at the start or at the end of the segment less than three segments may be created. + + The resulting LOAD segment containing [l, r) is edited so it sets the + corresponding virtual address range to zeroes, ignoring file content. """ elf_hdr = elf_headers.ElfHeader(data) range_phdr = None - for phdr in elf_hdr.GetPhdrsByType(elf_headers.ProgramHeader.Type.PT_LOAD): + for phdr in elf_hdr.GetProgramHeadersByType( + elf_headers.ProgramHeader.Type.PT_LOAD): if phdr.p_offset <= l and phdr.FilePositionEnd() >= r: range_phdr = phdr break @@ -249,7 +288,7 @@ left_segment_size = l - range_phdr.p_offset if left_segment_size > 0: # Creating LOAD segment containing the [phdr.p_offset, l) part. - elf_hdr.AddPhdr( + elf_hdr.AddProgramHeader( elf_headers.ProgramHeader.Create( elf_hdr.byte_order, p_type=range_phdr.p_type, @@ -267,7 +306,7 @@ right_segment_address = range_phdr.p_vaddr + right_segment_delta right_segment_filesize = max(range_phdr.p_filesz - right_segment_delta, 0) right_segment_memsize = range_phdr.p_memsz - right_segment_delta - elf_hdr.AddPhdr( + elf_hdr.AddProgramHeader( elf_headers.ProgramHeader.Create( elf_hdr.byte_order, p_type=range_phdr.p_type, @@ -284,7 +323,7 @@ range_phdr.p_offset = l range_phdr.p_vaddr = central_segment_address range_phdr.p_paddr = central_segment_address - range_phdr.p_filesz = r - l + range_phdr.p_filesz = 0 range_phdr.p_memsz = r - l elf_hdr.PatchData(data) @@ -314,7 +353,9 @@ _CopyRangeIntoCompressedSection(data, left_range, right_range) _MovePhdrToTheEnd(data) - _SplitLoadSegment(data, left_range, right_range) + + _CreateLoadForCompressedSection(data) + _SplitLoadSegmentAndNullifyRange(data, left_range, right_range) with open(args.output, 'wb') as f: f.write(data)
diff --git a/tools/android/elf_compression/elf_headers.py b/tools/android/elf_compression/elf_headers.py index 59b240c..f929191b 100644 --- a/tools/android/elf_compression/elf_headers.py +++ b/tools/android/elf_compression/elf_headers.py
@@ -103,6 +103,86 @@ return obj +class SectionHeader(ElfEntry): + """This class represents SectionEntry from ELF standard.""" + + class Type(enum.IntEnum): + SHT_NULL = 0 + SHT_PROGBITS = 1 + SHT_SYMTAB = 2 + SHT_STRTAB = 3 + SHT_RELA = 4 + SHT_HASH = 5 + SHT_DYNAMIC = 6 + SHT_NOTE = 7 + SHT_NOBITS = 8 + SHT_REL = 9 + SHT_SHLIB = 10 + SHT_DYNSYM = 11 + + def __init__(self, byte_order): + self.sh_name = None + self.sh_type = None + self.sh_flags = None + self.sh_addr = None + self.sh_offset = None + self.sh_size = None + self.sh_link = None + self.sh_info = None + self.sh_addralign = None + self.sh_entsize = None + fields = [ + ('sh_name', 4), + ('sh_type', 4), + ('sh_flags', 8), + ('sh_addr', 8), + ('sh_offset', 8), + ('sh_size', 8), + ('sh_link', 4), + ('sh_info', 4), + ('sh_addralign', 8), + ('sh_entsize', 8), + ] + super(SectionHeader, self).__init__(byte_order, fields) + # This is readonly version of section name in string form. We can't set it + # in constructor since to actually get it we need to instantiate + # StringTableHeader so it is set by SetStrName method later on. + self._str_name = '' + + def SetStrName(self, name): + """Sets the resolved sh_name to provided str. + + Changes made by this method WILL NOT propagate into data after PatchData + call. + + Args: + name: str. Name to set. + """ + self._str_name = name + + def GetStrName(self): + """Returns the sh_name as resolved string.""" + return self._str_name + + +class StringTableHeader(SectionHeader): + """This class represents a StringTableHeader header entry.""" + + def GetName(self, data, string_index): + """Returns the name located on string_index table's offset. + + Args: + data: bytearray. The file's data. + string_index: int. Offset from the beginning of the string table to the + required name. + """ + begin = self.sh_offset + string_index + end = data.find(0, begin) + if end == -1: + raise RuntimeError('Failed to find null terminator for StringTable entry') + return data[begin:end].decode('ascii') + + class ProgramHeader(ElfEntry): """This class represent PhdrEntry from ELF standard.""" @@ -198,13 +278,30 @@ return 'big' raise RuntimeError('Failed to parse ei_data') - def _ParsePhdrs(self, data): + def _ParseProgramHeaders(self, data): current_offset = self.e_phoff for _ in range(0, self.e_phnum): self.phdrs.append( ProgramHeader.FromBytes(self.byte_order, data, current_offset)) current_offset += self.e_phentsize + def _ParseSectionHeaders(self, data): + current_offset = self.e_shoff + string_table = None + for _ in range(0, self.e_shnum): + shdr = SectionHeader.FromBytes(self.byte_order, data, current_offset) + self.shdrs.append(shdr) + current_offset += self.e_shentsize + + if self.e_shstrndx != 0: + string_table_offset = self.e_shoff + self.e_shstrndx * self.e_shentsize + string_table = StringTableHeader.FromBytes(self.byte_order, data, + string_table_offset) + + for shdr in self.shdrs: + shdr.SetStrName(string_table.GetName(data, shdr.sh_name)) + + def __init__(self, data): """ElfHeader constructor. @@ -264,17 +361,24 @@ raise RuntimeError('Only shared libraries are supported') self.phdrs = [] - self._ParsePhdrs(data) + self._ParseProgramHeaders(data) - def GetPhdrs(self): + self.shdrs = [] + self._ParseSectionHeaders(data) + + def GetProgramHeaders(self): """Returns the list of file's program headers.""" return self.phdrs - def GetPhdrsByType(self, phdr_type): + def GetProgramHeadersByType(self, phdr_type): """Yields program headers of the given type.""" return (phdr for phdr in self.phdrs if phdr.p_type == phdr_type) - def AddPhdr(self, phdr): + def GetSectionHeaders(self): + """Returns the list of file's section headers.""" + return self.shdrs + + def AddProgramHeader(self, phdr): """Adds a new ProgramHeader entry correcting the e_phnum variable. This method will increase the size of LOAD segment containing the program @@ -291,7 +395,7 @@ # We need to locate the LOAD segment containing program headers and # increase its size. phdr_found = False - for phdr in self.GetPhdrsByType(ProgramHeader.Type.PT_LOAD): + for phdr in self.GetProgramHeadersByType(ProgramHeader.Type.PT_LOAD): if phdr.p_offset > self.e_phoff: continue if phdr.FilePositionEnd() < self.e_phoff + phdrs_size: @@ -304,12 +408,12 @@ raise RuntimeError('Failed to increase program headers LOAD segment') # If PHDR segment exists it needs to be corrected as well. - for phdr in self.GetPhdrsByType(ProgramHeader.Type.PT_PHDR): + for phdr in self.GetProgramHeadersByType(ProgramHeader.Type.PT_PHDR): phdr.p_filesz += self.e_phentsize phdr.p_memsz += self.e_phentsize self.e_phnum += 1 - def _OrderPhdrs(self): + def _OrderProgramHeaders(self): """Orders program LOAD headers by p_vaddr to comply with standard.""" def HeaderToKey(phdr): @@ -321,6 +425,15 @@ self.phdrs.sort(key=HeaderToKey) + def _PatchProgramHeaders(self, data): + """Patch all program headers.""" + current_offset = self.e_phoff + self._OrderProgramHeaders() + for phdr in self.GetProgramHeaders(): + phdr_bytes = phdr.ToBytes() + data[current_offset:current_offset + len(phdr_bytes)] = phdr_bytes + current_offset += self.e_phentsize + def PatchData(self, data): """Patches the given data array to reflect all changes made to the header. @@ -339,9 +452,4 @@ """ elf_bytes = self.ToBytes() data[:len(elf_bytes)] = elf_bytes - current_offset = self.e_phoff - self._OrderPhdrs() - for phdr in self.GetPhdrs(): - phdr_bytes = phdr.ToBytes() - data[current_offset:current_offset + len(phdr_bytes)] = phdr_bytes - current_offset += self.e_phentsize + self._PatchProgramHeaders(data)
diff --git a/tools/android/elf_compression/test/compression_script_test.py b/tools/android/elf_compression/test/compression_script_test.py index dee43eb0e..38438ce2 100755 --- a/tools/android/elf_compression/test/compression_script_test.py +++ b/tools/android/elf_compression/test/compression_script_test.py
@@ -117,7 +117,7 @@ patched_library_path = self._RunScript(library_path) opener_output = self._RunOpener(opener_path, patched_library_path) - self.assertEqual(opener_output, '1046506\n') + self.assertEqual(opener_output, '4096\n') def testAlignUp(self): """Tests for AlignUp method of the script."""
diff --git a/tools/android/elf_compression/test/elf_headers_test.py b/tools/android/elf_compression/test/elf_headers_test.py index ced8154..8df18ec 100755 --- a/tools/android/elf_compression/test/elf_headers_test.py +++ b/tools/android/elf_compression/test/elf_headers_test.py
@@ -36,8 +36,8 @@ self.assertEqual(elf.e_shentsize, 64) self.assertEqual(elf.e_shnum, 26) self.assertEqual(elf.e_shstrndx, 25) - # Validating types and amounts of all segments excluding GNU specific ones. - phdrs = elf.GetPhdrs() + # Validating types and amount of all segments excluding GNU specific ones. + phdrs = elf.GetProgramHeaders() self.assertEqual(len(phdrs), 8) phdr_types = [ @@ -46,9 +46,9 @@ elf_headers.ProgramHeader.Type.PT_LOAD, elf_headers.ProgramHeader.Type.PT_LOAD, elf_headers.ProgramHeader.Type.PT_DYNAMIC, - None, - None, - None, + None, # Non-standard segment: GNU_EH_FRAME + None, # Non-standard segment: GNU_STACK + None, # Non-standard segment: GNU_RELRO ] for i in range(0, len(phdrs)): if phdr_types[i] is not None: @@ -69,6 +69,102 @@ self.assertEqual(load_phdr.p_vaddr, 0x1000) self.assertEqual(load_phdr.p_paddr, 0x1000) + # Validating types and amount of sections excluding GNU ones. + shdrs = elf.GetSectionHeaders() + self.assertEqual(len(shdrs), 26) + + shdr_types = [ + elf_headers.SectionHeader.Type.SHT_NULL, + elf_headers.SectionHeader.Type.SHT_HASH, + None, # Non-standard section: GNU_HASH + elf_headers.SectionHeader.Type.SHT_DYNSYM, + elf_headers.SectionHeader.Type.SHT_STRTAB, + None, # Non-standard section: VERSYM + None, # Non-standard section: VERNEED + elf_headers.SectionHeader.Type.SHT_RELA, + elf_headers.SectionHeader.Type.SHT_PROGBITS, + elf_headers.SectionHeader.Type.SHT_PROGBITS, + elf_headers.SectionHeader.Type.SHT_PROGBITS, + elf_headers.SectionHeader.Type.SHT_PROGBITS, + elf_headers.SectionHeader.Type.SHT_PROGBITS, + elf_headers.SectionHeader.Type.SHT_PROGBITS, + elf_headers.SectionHeader.Type.SHT_PROGBITS, + None, # Non-standard section: INIT_ARRAY + None, # Non-standard section: FINI_ARRAY + elf_headers.SectionHeader.Type.SHT_DYNAMIC, + elf_headers.SectionHeader.Type.SHT_PROGBITS, + elf_headers.SectionHeader.Type.SHT_PROGBITS, + elf_headers.SectionHeader.Type.SHT_PROGBITS, + elf_headers.SectionHeader.Type.SHT_NOBITS, + elf_headers.SectionHeader.Type.SHT_PROGBITS, + elf_headers.SectionHeader.Type.SHT_SYMTAB, + elf_headers.SectionHeader.Type.SHT_STRTAB, + elf_headers.SectionHeader.Type.SHT_STRTAB, + ] + for i in range(0, len(shdrs)): + if shdr_types[i] is not None: + self.assertEqual(shdrs[i].sh_type, shdr_types[i]) + + # Validate all fields of the first and second section, since the first one + # is NULL section. + shdr = shdrs[0] + self.assertEqual(shdr.sh_flags, 0) + self.assertEqual(shdr.sh_addr, 0x0) + self.assertEqual(shdr.sh_offset, 0x0) + self.assertEqual(shdr.sh_size, 0x0) + self.assertEqual(shdr.sh_link, 0) + self.assertEqual(shdr.sh_info, 0) + self.assertEqual(shdr.sh_addralign, 0) + self.assertEqual(shdr.sh_entsize, 0) + + shdr = shdrs[1] + self.assertEqual(shdr.sh_flags, 2) + self.assertEqual(shdr.sh_addr, 0x200) + self.assertEqual(shdr.sh_offset, 0x200) + self.assertEqual(shdr.sh_size, 0x30) + self.assertEqual(shdr.sh_link, 3) + self.assertEqual(shdr.sh_info, 0) + self.assertEqual(shdr.sh_addralign, 8) + self.assertEqual(shdr.sh_entsize, 4) + + def testElfHeaderSectionNames(self): + """Test that the section names are correctly resolved""" + with open(self.library_path, 'rb') as f: + data = f.read() + elf = elf_headers.ElfHeader(data) + + section_names = [ + '', + '.hash', + '.gnu.hash', + '.dynsym', + '.dynstr', + '.gnu.version', + '.gnu.version_r', + '.rela.dyn', + '.init', + '.plt', + '.plt.got', + '.text', + '.fini', + '.eh_frame_hdr', + '.eh_frame', + '.init_array', + '.fini_array', + '.dynamic', + '.got', + '.got.plt', + '.data', + '.bss', + '.comment', + '.symtab', + '.strtab', + '.shstrtab', + ] + shdrs = elf.GetSectionHeaders() + for i in range(0, len(shdrs)): + self.assertEqual(shdrs[i].GetStrName(), section_names[i]) + def testElfHeaderNoopPatching(self): """Patching the ELF without any changes.""" with open(self.library_path, 'rb') as f: @@ -85,8 +181,8 @@ elf = elf_headers.ElfHeader(data) # Changing some values. elf.e_ehsize = 42 - elf.GetPhdrs()[0].p_align = 1 - elf.GetPhdrs()[0].p_filesz = 10 + elf.GetProgramHeaders()[0].p_align = 1 + elf.GetProgramHeaders()[0].p_filesz = 10 elf.PatchData(data) updated_elf = elf_headers.ElfHeader(data) @@ -104,8 +200,8 @@ self.assertEqual(updated_elf.e_shstrndx, elf.e_shstrndx) # Validating all of the fields of the first segment. - load_phdr = elf.GetPhdrs()[0] - updated_load_phdr = updated_elf.GetPhdrs()[0] + load_phdr = elf.GetProgramHeaders()[0] + updated_load_phdr = updated_elf.GetProgramHeaders()[0] self.assertEqual(updated_load_phdr.p_offset, load_phdr.p_offset) self.assertEqual(updated_load_phdr.p_vaddr, load_phdr.p_vaddr)
diff --git a/tools/android/elf_compression/test/library_opener.cc b/tools/android/elf_compression/test/library_opener.cc index bfc78f84..f4075f43 100644 --- a/tools/android/elf_compression/test/library_opener.cc +++ b/tools/android/elf_compression/test/library_opener.cc
@@ -24,13 +24,13 @@ return 1; } - TestFunction get_sum = - reinterpret_cast<TestFunction>(dlsym(handle, "GetSum")); - if (get_sum == nullptr) { + TestFunction get_zeroes = + reinterpret_cast<TestFunction>(dlsym(handle, "GetZeroes")); + if (get_zeroes == nullptr) { std::cerr << "GetSum method not found" << std::endl; return 1; } - std::cout << get_sum() << std::endl; + std::cout << get_zeroes() << std::endl; return 0; }
diff --git a/tools/android/elf_compression/test/libtest.cc b/tools/android/elf_compression/test/libtest.cc index c28198c..aa1832bb 100644 --- a/tools/android/elf_compression/test/libtest.cc +++ b/tools/android/elf_compression/test/libtest.cc
@@ -8,20 +8,20 @@ // for the script. We expect library to not crash and return the 55 as a // result. -#include <numeric> +#include <algorithm> #include <vector> #include "libtest_array.h" // NOLINT(build/include) extern "C" { -int GetSum(); +int GetZeroes(); } -int GetSum() { +int GetZeroes() { // We are using some c++ features here to better simulate a c++ library and // cause more code reach to catch potential memory errors. std::vector<int> sum_array(std::begin(array), std::end(array)); - int sum = std::accumulate(sum_array.begin(), sum_array.end(), 0); - // sum should be equal to 1046506. - return sum; + int count = std::count(sum_array.begin(), sum_array.end(), 0); + // count should be equal to 4096. + return count; }
diff --git a/tools/android/elf_compression/test/libtest_array.h b/tools/android/elf_compression/test/libtest_array.h index 721f6c31..34ee7eb 100644 --- a/tools/android/elf_compression/test/libtest_array.h +++ b/tools/android/elf_compression/test/libtest_array.h
@@ -5,8 +5,8 @@ // This header file contains an array for testing compression script. // // Script shrinks the given data range so it is page aligned which requires the -// size of array to at least 2 * 4096 to guarantee that the range won't be -// empty after the shrinking. +// size of array to be at least 2 * 4096 - 1 to guarantee that the range won't +// be empty after the shrinking. // Another requirement is for array to not be lazily initialized by zeroes // since that would result in it occupying no actual size in the file and // being placed in .bss section. As a result all of the array elements have @@ -25,7 +25,7 @@ // Disabling clang-format on the array since it tries to put each number at the // separate line which is not needed in this case. // clang-format off -unsigned char array[8192] = { +unsigned char array[8191] = { kMagicPrefix[0], kMagicPrefix[1], kMagicPrefix[2], kMagicPrefix[3], 88, 2, 71, 243, 203, 204, 83, 235, 153, 204, 231, 242, 135, 143, 154, 147, 156, 221, 159, 188, 255, 135, 149, 96, 18, 240, 23, 60, 34, 97, @@ -37,7 +37,7 @@ 231, 76, 121, 87, 192, 63, 97, 219, 69, 13, 110, 231, 28, 2, 238, 34, 241, 162, 222, 236, 246, 163, 61, 7, 175, 209, 251, 97, 60, 206, 179, 65, 97, 14, 29, 101, 230, 114, 73, 205, 163, 77, 27, 69, 77, - 139, 191, 109, 187, 204, 61, 108, 0, 195, 223, 168, 60, 181, 236, 91, + 139, 191, 109, 187, 204, 61, 108, 1, 195, 223, 168, 60, 181, 236, 91, 164, 72, 200, 101, 253, 72, 131, 145, 161, 144, 125, 181, 198, 197, 246, 122, 79, 236, 176, 84, 122, 224, 207, 143, 20, 179, 192, 83, 78, 157, 40, 88, 184, 6, 65, 166, 74, 173, 103, 224, 5, 44, 113, 90, 128, @@ -45,14 +45,14 @@ 47, 249, 120, 94, 33, 202, 201, 24, 67, 182, 150, 84, 208, 187, 88, 74, 204, 133, 161, 2, 181, 116, 198, 135, 207, 12, 87, 36, 50, 76, 44, 160, 143, 66, 55, 115, 27, 233, 11, 106, 31, 122, 119, 194, 125, - 202, 12, 234, 83, 21, 124, 0, 247, 26, 206, 139, 233, 252, 222, 20, + 202, 12, 234, 83, 21, 124, 1, 247, 26, 206, 139, 233, 252, 222, 20, 69, 66, 141, 116, 186, 120, 24, 100, 178, 222, 3, 234, 104, 11, 107, 197, 32, 220, 179, 82, 4, 92, 110, 161, 9, 43, 138, 131, 241, 239, - 74, 164, 103, 245, 100, 82, 30, 134, 121, 47, 214, 0, 139, 18, 210, + 74, 164, 103, 245, 100, 82, 30, 134, 121, 47, 214, 1, 139, 18, 210, 115, 93, 208, 45, 97, 131, 254, 50, 182, 152, 246, 64, 242, 12, 1, 10, 112, 67, 82, 92, 148, 105, 183, 168, 242, 87, 197, 94, 251, 156, 31, 41, 188, 150, 92, 41, 124, 211, 144, 181, 69, 250, 178, 36, 30, - 182, 0, 207, 132, 36, 0, 107, 126, 91, 210, 2, 7, 248, 224, 228, + 182, 1, 207, 132, 36, 1, 107, 126, 91, 210, 2, 7, 248, 224, 228, 3, 209, 223, 15, 95, 18, 159, 53, 114, 22, 225, 130, 233, 204, 138, 171, 209, 123, 13, 215, 97, 113, 214, 220, 161, 251, 233, 190, 51, 96, 155, 248, 25, 205, 185, 192, 126, 49, 195, 132, 224, 46, 51, 247, 47, @@ -60,10 +60,10 @@ 222, 68, 247, 91, 205, 215, 106, 121, 29, 166, 200, 163, 239, 141, 172, 101, 59, 152, 214, 27, 36, 1, 229, 193, 230, 164, 251, 148, 215, 188, 211, 113, 243, 85, 81, 48, 244, 204, 172, 128, 92, 86, 202, 178, 227, - 85, 0, 56, 204, 233, 203, 164, 100, 222, 109, 251, 6, 249, 63, 68, + 85, 1, 56, 204, 233, 203, 164, 100, 222, 109, 251, 6, 249, 63, 68, 7, 22, 140, 11, 251, 129, 245, 85, 61, 216, 112, 34, 87, 30, 244, 35, 58, 127, 58, 179, 234, 96, 36, 83, 1, 19, 116, 201, 141, 95, - 205, 130, 197, 105, 18, 0, 216, 41, 36, 206, 245, 165, 128, 116, 34, + 205, 130, 197, 105, 18, 1, 216, 41, 36, 206, 245, 165, 128, 116, 34, 154, 114, 159, 3, 46, 217, 150, 102, 39, 163, 82, 37, 187, 254, 106, 175, 209, 52, 88, 93, 196, 252, 15, 169, 19, 187, 250, 1, 240, 218, 230, 255, 130, 84, 246, 241, 134, 67, 22, 109, 59, 121, 208, 242, 149, @@ -86,11 +86,11 @@ 165, 82, 156, 100, 119, 214, 214, 83, 83, 81, 189, 170, 115, 90, 120, 182, 29, 97, 161, 84, 153, 84, 149, 188, 13, 254, 78, 26, 123, 125, 6, 191, 26, 254, 19, 56, 41, 133, 209, 98, 222, 218, 183, 230, 63, - 186, 3, 195, 211, 146, 2, 31, 53, 211, 0, 213, 245, 35, 255, 173, + 186, 3, 195, 211, 146, 2, 31, 53, 211, 1, 213, 245, 35, 255, 173, 205, 221, 61, 227, 47, 48, 237, 154, 177, 150, 152, 221, 189, 227, 129, 16, 145, 186, 88, 82, 28, 211, 23, 109, 59, 245, 102, 31, 21, 207, 235, 131, 24, 33, 63, 49, 187, 27, 203, 80, 66, 59, 113, 224, 255, - 39, 248, 153, 171, 30, 231, 2, 184, 24, 87, 0, 153, 244, 57, 78, + 39, 248, 153, 171, 30, 231, 2, 184, 24, 87, 1, 153, 244, 57, 78, 223, 188, 196, 239, 117, 98, 142, 86, 16, 188, 2, 68, 180, 173, 252, 128, 78, 99, 125, 226, 236, 158, 169, 109, 129, 225, 127, 164, 34, 243, 93, 135, 64, 206, 188, 130, 11, 85, 235, 68, 30, 129, 71, 89, 150, @@ -101,7 +101,7 @@ 135, 153, 12, 221, 71, 80, 67, 111, 103, 230, 206, 188, 13, 242, 109, 59, 233, 173, 244, 18, 213, 42, 29, 42, 204, 135, 151, 63, 237, 168, 224, 186, 127, 210, 153, 193, 218, 127, 6, 63, 230, 192, 105, 148, 83, - 150, 209, 105, 216, 86, 116, 124, 207, 78, 92, 0, 3, 74, 168, 253, + 150, 209, 105, 216, 86, 116, 124, 207, 78, 92, 1, 3, 74, 168, 253, 185, 210, 42, 225, 54, 155, 71, 31, 224, 90, 70, 143, 25, 240, 216, 207, 29, 9, 77, 37, 29, 109, 143, 234, 148, 195, 44, 142, 151, 20, 234, 10, 240, 81, 15, 64, 82, 175, 132, 111, 76, 121, 240, 231, 78, @@ -110,13 +110,13 @@ 221, 107, 246, 248, 20, 249, 105, 69, 242, 70, 88, 177, 45, 90, 64, 149, 31, 125, 81, 37, 54, 3, 120, 138, 161, 29, 195, 197, 35, 226, 75, 243, 44, 8, 222, 29, 181, 140, 29, 116, 18, 104, 250, 40, 115, - 0, 57, 90, 239, 59, 230, 113, 105, 104, 176, 74, 74, 237, 105, 240, - 197, 220, 97, 47, 114, 193, 241, 169, 19, 105, 17, 240, 0, 19, 151, + 1, 57, 90, 239, 59, 230, 113, 105, 104, 176, 74, 74, 237, 105, 240, + 197, 220, 97, 47, 114, 193, 241, 169, 19, 105, 17, 240, 1, 19, 151, 149, 27, 46, 13, 174, 11, 74, 241, 201, 50, 225, 52, 11, 134, 89, 22, 13, 87, 179, 97, 117, 182, 201, 27, 201, 188, 62, 73, 3, 165, 196, 112, 229, 140, 230, 178, 137, 28, 105, 54, 126, 61, 119, 169, 181, 144, 225, 119, 161, 108, 172, 205, 72, 150, 152, 196, 115, 121, 1, 44, - 143, 8, 34, 108, 2, 107, 56, 171, 69, 182, 0, 188, 30, 47, 66, + 143, 8, 34, 108, 2, 107, 56, 171, 69, 182, 1, 188, 30, 47, 66, 237, 189, 194, 99, 173, 232, 140, 219, 193, 223, 162, 57, 130, 148, 242, 199, 88, 188, 253, 146, 179, 1, 243, 109, 126, 144, 140, 21, 110, 201, 11, 5, 150, 197, 50, 207, 85, 123, 242, 213, 117, 92, 118, 68, 38, @@ -140,14 +140,14 @@ 135, 206, 164, 74, 85, 75, 6, 167, 213, 159, 254, 170, 150, 8, 216, 3, 28, 138, 113, 184, 69, 155, 162, 16, 38, 228, 133, 126, 164, 209, 243, 96, 215, 1, 187, 210, 130, 84, 228, 16, 91, 137, 195, 178, 126, - 0, 106, 183, 92, 202, 51, 162, 207, 179, 104, 111, 105, 39, 137, 36, + 1, 106, 183, 92, 202, 51, 162, 207, 179, 104, 111, 105, 39, 137, 36, 182, 237, 179, 138, 54, 104, 237, 251, 68, 185, 113, 177, 201, 242, 202, 34, 236, 243, 153, 165, 136, 176, 116, 249, 29, 16, 45, 120, 165, 51, 103, 10, 150, 106, 223, 242, 200, 5, 48, 210, 201, 158, 102, 238, 187, 251, 71, 244, 9, 187, 229, 125, 176, 84, 223, 100, 211, 240, 193, 155, 110, 96, 182, 75, 229, 93, 137, 1, 63, 137, 235, 131, 100, 13, 174, 66, 206, 25, 116, 94, 181, 107, 20, 9, 69, 108, 28, 56, 49, 182, - 126, 38, 68, 239, 114, 92, 160, 0, 250, 59, 7, 12, 176, 12, 169, + 126, 38, 68, 239, 114, 92, 160, 1, 250, 59, 7, 12, 176, 12, 169, 76, 71, 94, 154, 151, 113, 46, 223, 78, 116, 116, 128, 57, 120, 153, 120, 96, 205, 65, 45, 88, 133, 110, 21, 83, 205, 37, 175, 66, 159, 82, 203, 203, 220, 152, 148, 19, 6, 1, 19, 159, 88, 73, 151, 77, @@ -200,7 +200,7 @@ 220, 35, 225, 26, 226, 90, 33, 149, 175, 26, 147, 109, 114, 30, 44, 189, 197, 137, 201, 223, 25, 102, 95, 76, 227, 54, 197, 128, 187, 137, 241, 26, 32, 46, 207, 137, 90, 202, 55, 145, 71, 215, 50, 112, 211, - 192, 239, 239, 50, 206, 190, 31, 230, 106, 187, 0, 154, 229, 211, 190, + 192, 239, 239, 50, 206, 190, 31, 230, 106, 187, 1, 154, 229, 211, 190, 169, 163, 199, 159, 169, 135, 228, 64, 19, 137, 103, 227, 85, 27, 42, 101, 193, 224, 57, 171, 135, 184, 146, 226, 172, 72, 227, 115, 42, 28, 102, 158, 166, 196, 178, 79, 255, 99, 128, 31, 218, 178, 68, 191, 20, @@ -209,7 +209,7 @@ 139, 183, 56, 21, 52, 96, 201, 184, 142, 82, 230, 82, 189, 205, 248, 142, 92, 244, 173, 219, 169, 145, 38, 104, 69, 97, 222, 166, 181, 125, 255, 10, 150, 236, 100, 82, 162, 148, 73, 21, 193, 6, 167, 87, 100, - 119, 254, 114, 121, 1, 159, 158, 243, 22, 91, 197, 231, 0, 164, 23, + 119, 254, 114, 121, 1, 159, 158, 243, 22, 91, 197, 231, 1, 164, 23, 222, 187, 113, 23, 161, 153, 191, 188, 255, 42, 104, 168, 205, 21, 16, 196, 23, 75, 33, 138, 195, 32, 96, 218, 175, 92, 201, 68, 241, 150, 210, 145, 240, 217, 243, 77, 38, 149, 163, 53, 202, 169, 178, 79, 18, @@ -229,7 +229,7 @@ 234, 245, 174, 219, 2, 49, 123, 193, 246, 97, 164, 63, 255, 36, 132, 189, 177, 187, 244, 90, 43, 238, 113, 153, 89, 91, 195, 112, 117, 209, 183, 168, 192, 66, 157, 64, 106, 203, 45, 28, 17, 216, 143, 246, 192, - 239, 225, 219, 5, 192, 0, 130, 190, 248, 2, 229, 99, 192, 25, 110, + 239, 225, 219, 5, 192, 1, 130, 190, 248, 2, 229, 99, 192, 25, 110, 200, 118, 245, 151, 199, 76, 239, 146, 213, 138, 249, 96, 56, 93, 52, 181, 158, 51, 84, 92, 75, 172, 216, 190, 174, 126, 70, 244, 246, 194, 84, 50, 192, 225, 145, 229, 183, 219, 132, 228, 115, 52, 110, 38, 254, @@ -251,11 +251,11 @@ 68, 147, 71, 71, 30, 160, 76, 230, 47, 97, 238, 98, 140, 7, 157, 136, 68, 192, 247, 153, 150, 73, 223, 240, 167, 226, 59, 237, 183, 185, 45, 202, 70, 44, 65, 210, 207, 33, 67, 239, 249, 32, 208, 102, 138, - 67, 155, 0, 163, 108, 119, 56, 95, 246, 94, 117, 161, 162, 119, 250, + 67, 155, 1, 163, 108, 119, 56, 95, 246, 94, 117, 161, 162, 119, 250, 109, 140, 121, 213, 66, 107, 199, 121, 198, 36, 186, 55, 112, 138, 3, 115, 115, 205, 67, 90, 25, 202, 71, 212, 175, 96, 8, 108, 197, 89, 222, 151, 75, 114, 202, 229, 229, 93, 177, 73, 139, 61, 145, 79, 69, - 228, 235, 0, 48, 138, 70, 73, 180, 206, 4, 104, 159, 101, 217, 7, + 228, 235, 1, 48, 138, 70, 73, 180, 206, 4, 104, 159, 101, 217, 7, 2, 241, 19, 74, 195, 165, 168, 226, 8, 85, 225, 55, 118, 90, 203, 117, 65, 158, 120, 252, 190, 138, 62, 250, 169, 78, 69, 139, 152, 23, 111, 44, 118, 76, 75, 1, 52, 239, 10, 32, 98, 207, 126, 84, 110, @@ -282,7 +282,7 @@ 105, 66, 247, 89, 128, 59, 14, 139, 20, 191, 9, 15, 170, 172, 154, 26, 35, 75, 195, 177, 28, 45, 132, 195, 218, 157, 166, 237, 105, 40, 123, 225, 249, 186, 140, 105, 93, 189, 254, 8, 174, 198, 151, 191, 150, - 234, 76, 151, 24, 174, 35, 0, 63, 138, 27, 86, 102, 67, 61, 203, + 234, 76, 151, 24, 174, 35, 1, 63, 138, 27, 86, 102, 67, 61, 203, 7, 88, 167, 138, 55, 91, 193, 49, 74, 170, 164, 215, 125, 135, 46, 212, 116, 13, 42, 146, 151, 248, 192, 194, 170, 188, 90, 174, 253, 63, 229, 116, 193, 176, 93, 194, 128, 72, 91, 47, 228, 146, 132, 26, 35, @@ -312,7 +312,7 @@ 94, 178, 227, 179, 180, 184, 164, 244, 189, 169, 80, 4, 222, 78, 171, 216, 123, 126, 220, 32, 55, 212, 37, 86, 152, 188, 80, 50, 51, 75, 100, 211, 236, 103, 39, 199, 17, 1, 195, 32, 68, 164, 57, 254, 133, - 128, 0, 93, 148, 21, 169, 126, 45, 15, 151, 244, 145, 161, 251, 202, + 128, 1, 93, 148, 21, 169, 126, 45, 15, 151, 244, 145, 161, 251, 202, 187, 60, 216, 230, 222, 218, 242, 115, 238, 126, 77, 107, 223, 128, 167, 180, 74, 149, 227, 143, 57, 138, 6, 155, 27, 103, 70, 97, 238, 144, 26, 41, 108, 66, 95, 140, 50, 65, 153, 180, 190, 149, 144, 88, 100, @@ -330,7 +330,7 @@ 128, 21, 113, 56, 164, 132, 164, 90, 122, 41, 213, 234, 28, 107, 145, 208, 51, 27, 254, 168, 82, 212, 225, 38, 66, 56, 51, 172, 216, 82, 54, 217, 144, 214, 87, 116, 79, 28, 7, 74, 213, 71, 189, 71, 191, - 111, 236, 161, 71, 205, 234, 125, 214, 55, 168, 0, 203, 107, 176, 184, + 111, 236, 161, 71, 205, 234, 125, 214, 55, 168, 1, 203, 107, 176, 184, 205, 42, 217, 168, 127, 164, 143, 132, 192, 42, 142, 155, 171, 76, 155, 129, 35, 148, 164, 40, 24, 29, 166, 21, 107, 156, 46, 243, 79, 84, 165, 68, 57, 241, 132, 158, 137, 71, 53, 242, 65, 143, 123, 4, 79, @@ -347,7 +347,7 @@ 37, 190, 109, 200, 4, 241, 199, 78, 207, 142, 73, 65, 95, 71, 26, 38, 127, 214, 55, 80, 106, 86, 199, 112, 34, 130, 97, 85, 235, 245, 19, 245, 34, 78, 188, 201, 213, 53, 102, 173, 212, 119, 156, 89, 161, - 177, 95, 135, 181, 0, 63, 192, 245, 143, 214, 197, 89, 242, 28, 212, + 177, 95, 135, 181, 1, 63, 192, 245, 143, 214, 197, 89, 242, 28, 212, 210, 23, 151, 16, 133, 237, 58, 39, 33, 79, 5, 72, 210, 10, 3, 29, 142, 170, 206, 88, 180, 167, 154, 115, 187, 34, 183, 53, 240, 44, 43, 101, 62, 176, 69, 209, 207, 174, 246, 218, 57, 204, 155, 35, 239, @@ -361,7 +361,7 @@ 104, 118, 20, 1, 141, 230, 77, 191, 169, 80, 228, 173, 201, 4, 188, 153, 149, 186, 12, 106, 180, 163, 246, 28, 113, 29, 84, 123, 17, 48, 129, 140, 130, 121, 189, 126, 149, 213, 255, 86, 31, 228, 198, 155, 41, - 73, 183, 112, 189, 134, 218, 0, 172, 228, 199, 71, 174, 161, 193, 247, + 73, 183, 112, 189, 134, 218, 1, 172, 228, 199, 71, 174, 161, 193, 247, 112, 153, 96, 14, 81, 88, 109, 170, 54, 196, 104, 206, 213, 211, 167, 226, 252, 132, 174, 162, 186, 135, 115, 234, 21, 197, 209, 69, 196, 124, 39, 127, 85, 224, 57, 179, 114, 250, 33, 170, 30, 185, 226, 6, 149, @@ -373,7 +373,7 @@ 199, 184, 110, 84, 31, 80, 178, 163, 208, 70, 94, 7, 141, 170, 233, 13, 113, 35, 74, 123, 221, 98, 204, 229, 1, 162, 28, 71, 198, 98, 160, 45, 29, 215, 194, 251, 193, 69, 136, 117, 218, 94, 9, 189, 218, - 35, 82, 171, 247, 245, 118, 30, 29, 95, 209, 94, 214, 0, 221, 176, + 35, 82, 171, 247, 245, 118, 30, 29, 95, 209, 94, 214, 1, 221, 176, 23, 153, 176, 50, 102, 32, 86, 13, 237, 241, 37, 4, 193, 180, 254, 104, 203, 118, 188, 14, 251, 224, 139, 195, 154, 136, 251, 65, 173, 230, 77, 23, 249, 149, 171, 189, 176, 237, 109, 94, 233, 41, 50, 27, 140, @@ -387,14 +387,14 @@ 140, 30, 71, 3, 119, 39, 47, 83, 127, 157, 137, 165, 210, 24, 213, 212, 247, 189, 228, 45, 138, 56, 79, 126, 202, 252, 111, 149, 169, 126, 96, 25, 124, 136, 57, 172, 186, 253, 216, 147, 168, 93, 57, 58, 23, - 171, 43, 203, 54, 241, 202, 13, 66, 238, 24, 33, 114, 0, 109, 77, + 171, 43, 203, 54, 241, 202, 13, 66, 238, 24, 33, 114, 1, 109, 77, 63, 173, 175, 240, 70, 90, 109, 132, 244, 228, 95, 65, 208, 137, 199, 192, 42, 41, 174, 97, 251, 161, 37, 136, 201, 94, 70, 134, 5, 207, 105, 6, 224, 13, 8, 115, 130, 15, 236, 142, 191, 75, 148, 134, 35, 5, 9, 241, 7, 101, 215, 60, 9, 45, 84, 77, 3, 154, 106, 228, 31, 25, 78, 29, 157, 67, 168, 30, 254, 233, 136, 115, 187, 237, 224, 222, 18, 91, 82, 238, 248, 201, 149, 134, 135, 76, 56, 217, 119, 86, - 122, 199, 54, 53, 43, 52, 43, 122, 234, 180, 154, 0, 171, 145, 25, + 122, 199, 54, 53, 43, 52, 43, 122, 234, 180, 154, 1, 171, 145, 25, 230, 205, 178, 189, 200, 200, 224, 98, 206, 241, 129, 156, 202, 226, 254, 132, 192, 162, 229, 140, 220, 241, 145, 233, 91, 209, 91, 240, 175, 103, 46, 94, 252, 174, 69, 26, 246, 131, 63, 178, 227, 165, 105, 86, 87, @@ -402,7 +402,7 @@ 168, 236, 162, 189, 246, 45, 142, 109, 192, 77, 198, 177, 110, 120, 232, 220, 49, 232, 231, 86, 179, 104, 144, 164, 215, 224, 187, 67, 244, 45, 69, 67, 116, 133, 82, 121, 121, 159, 126, 56, 147, 130, 144, 255, 64, - 230, 229, 165, 232, 0, 154, 53, 57, 97, 121, 178, 248, 122, 11, 121, + 230, 229, 165, 232, 1, 154, 53, 57, 97, 121, 178, 248, 122, 11, 121, 16, 78, 198, 44, 143, 94, 253, 240, 98, 198, 105, 84, 104, 244, 168, 232, 236, 247, 52, 242, 119, 56, 33, 22, 254, 63, 69, 138, 59, 4, 249, 165, 111, 166, 105, 186, 106, 62, 164, 188, 109, 163, 150, 80, 102, @@ -414,7 +414,7 @@ 209, 167, 233, 82, 220, 46, 115, 54, 103, 61, 69, 132, 64, 160, 79, 44, 121, 27, 69, 122, 129, 216, 252, 129, 234, 17, 126, 111, 152, 97, 169, 149, 44, 34, 78, 46, 34, 23, 154, 204, 72, 223, 222, 73, 189, - 167, 194, 125, 121, 62, 249, 97, 227, 20, 57, 123, 0, 9, 198, 126, + 167, 194, 125, 121, 62, 249, 97, 227, 20, 57, 123, 1, 9, 198, 126, 137, 190, 151, 233, 220, 29, 223, 91, 247, 198, 74, 37, 23, 195, 222, 166, 100, 71, 143, 205, 136, 204, 5, 117, 144, 182, 57, 31, 71, 116, 58, 245, 21, 227, 197, 227, 172, 31, 139, 114, 86, 43, 84, 11, 197, @@ -430,7 +430,7 @@ 15, 45, 103, 207, 185, 141, 123, 192, 158, 20, 143, 159, 94, 126, 201, 85, 91, 227, 192, 36, 237, 21, 102, 17, 166, 138, 242, 7, 204, 83, 16, 102, 167, 167, 176, 244, 139, 213, 183, 183, 145, 110, 97, 214, 36, - 1, 120, 221, 117, 240, 144, 100, 184, 149, 12, 202, 172, 108, 0, 239, + 1, 120, 221, 117, 240, 144, 100, 184, 149, 12, 202, 172, 108, 1, 239, 72, 106, 38, 58, 10, 79, 169, 82, 208, 172, 128, 252, 169, 47, 7, 45, 143, 135, 174, 139, 158, 12, 192, 197, 200, 238, 164, 244, 24, 121, 88, 221, 138, 2, 61, 231, 97, 68, 194, 173, 86, 164, 104, 144, 63, @@ -458,7 +458,7 @@ 97, 9, 39, 61, 241, 128, 55, 122, 139, 185, 131, 142, 228, 141, 87, 43, 90, 159, 143, 246, 202, 229, 118, 149, 158, 220, 77, 125, 159, 166, 165, 7, 157, 74, 39, 229, 83, 88, 10, 49, 183, 51, 86, 161, 129, - 240, 21, 188, 197, 14, 31, 53, 119, 182, 114, 89, 35, 0, 4, 19, + 240, 21, 188, 197, 14, 31, 53, 119, 182, 114, 89, 35, 1, 4, 19, 201, 209, 61, 158, 167, 228, 83, 22, 255, 12, 116, 184, 249, 20, 184, 74, 169, 147, 107, 11, 58, 228, 83, 143, 96, 192, 29, 240, 9, 81, 1, 255, 176, 165, 219, 202, 149, 99, 246, 187, 229, 24, 12, 206, 238, @@ -479,7 +479,7 @@ 228, 35, 69, 250, 244, 30, 195, 65, 90, 217, 151, 234, 64, 99, 183, 106, 179, 159, 117, 214, 248, 125, 137, 10, 254, 59, 1, 181, 175, 100, 216, 145, 84, 199, 93, 32, 21, 13, 149, 131, 129, 154, 130, 114, 230, - 146, 46, 45, 79, 39, 41, 204, 66, 39, 116, 0, 220, 127, 59, 138, + 146, 46, 45, 79, 39, 41, 204, 66, 39, 116, 1, 220, 127, 59, 138, 193, 97, 63, 175, 141, 228, 118, 177, 75, 241, 81, 201, 144, 208, 5, 205, 175, 142, 172, 124, 57, 125, 123, 229, 176, 11, 170, 205, 216, 85, 187, 60, 239, 36, 232, 158, 43, 175, 181, 220, 213, 249, 150, 152, 150, @@ -487,7 +487,7 @@ 166, 61, 74, 57, 182, 115, 58, 118, 5, 122, 220, 230, 206, 55, 82, 102, 95, 81, 115, 230, 194, 86, 43, 118, 61, 16, 73, 52, 100, 57, 131, 51, 125, 148, 36, 84, 20, 163, 92, 198, 166, 129, 241, 129, 114, - 243, 70, 250, 140, 172, 0, 198, 237, 103, 166, 44, 226, 221, 83, 37, + 243, 70, 250, 140, 172, 1, 198, 237, 103, 166, 44, 226, 221, 83, 37, 167, 10, 156, 53, 235, 202, 183, 223, 192, 15, 172, 155, 253, 132, 171, 102, 250, 26, 219, 110, 79, 92, 177, 125, 169, 255, 188, 67, 93, 141, 157, 42, 161, 197, 154, 208, 140, 32, 191, 152, 135, 137, 23, 186, 117, @@ -496,7 +496,7 @@ 235, 50, 8, 182, 2, 248, 41, 19, 44, 139, 198, 193, 69, 172, 139, 89, 216, 231, 118, 116, 92, 76, 130, 140, 240, 164, 193, 103, 47, 12, 144, 34, 172, 183, 203, 132, 242, 19, 202, 112, 135, 33, 9, 253, 96, - 129, 0, 232, 24, 16, 188, 63, 178, 0, 174, 120, 158, 8, 171, 152, + 129, 1, 232, 24, 16, 188, 63, 178, 1, 174, 120, 158, 8, 171, 152, 59, 198, 243, 21, 46, 61, 216, 167, 83, 34, 210, 22, 51, 113, 137, 231, 250, 50, 208, 196, 68, 191, 110, 29, 25, 158, 220, 200, 74, 66, 144, 99, 167, 9, 104, 55, 95, 126, 5, 61, 232, 112, 166, 84, 88, @@ -537,19 +537,19 @@ 244, 240, 57, 154, 203, 246, 190, 145, 111, 124, 60, 170, 42, 126, 191, 176, 142, 116, 28, 152, 106, 154, 214, 45, 196, 86, 223, 10, 193, 239, 187, 151, 121, 76, 79, 84, 224, 171, 227, 141, 56, 207, 201, 84, 39, - 166, 68, 72, 0, 99, 85, 130, 67, 9, 16, 229, 241, 164, 144, 58, + 166, 68, 72, 1, 99, 85, 130, 67, 9, 16, 229, 241, 164, 144, 58, 81, 8, 247, 233, 118, 141, 68, 149, 210, 141, 27, 7, 101, 205, 244, 223, 169, 9, 15, 35, 77, 120, 94, 109, 69, 47, 245, 180, 127, 194, 157, 93, 103, 205, 12, 39, 117, 234, 67, 158, 185, 40, 210, 24, 207, 247, 75, 150, 87, 214, 67, 67, 142, 219, 110, 82, 81, 83, 238, 149, 210, 107, 249, 241, 151, 240, 23, 72, 128, 185, 164, 149, 29, 112, 135, - 192, 176, 165, 209, 171, 147, 193, 54, 206, 213, 0, 178, 193, 193, 163, + 192, 176, 165, 209, 171, 147, 193, 54, 206, 213, 1, 178, 193, 193, 163, 226, 205, 253, 170, 251, 208, 29, 154, 18, 33, 62, 136, 241, 58, 208, 245, 219, 70, 7, 133, 2, 234, 211, 175, 230, 142, 9, 135, 9, 35, 45, 152, 145, 82, 171, 13, 2, 52, 190, 223, 177, 37, 89, 138, 55, 155, 127, 47, 67, 210, 13, 189, 44, 245, 199, 32, 20, 92, 27, 61, 252, 46, 206, 58, 119, 140, 208, 18, 191, 63, 226, 175, 135, 223, 63, - 178, 195, 89, 72, 0, 47, 105, 251, 131, 240, 131, 104, 215, 29, 192, + 178, 195, 89, 72, 1, 47, 105, 251, 131, 240, 131, 104, 215, 29, 192, 164, 157, 66, 149, 39, 168, 193, 113, 233, 29, 166, 241, 95, 83, 169, 31, 5, 104, 104, 139, 164, 203, 14, 153, 145, 85, 99, 60, 153, 205, 192, 101, 158, 191, 38, 149, 153, 9, 147, 66, 12, 45, 251, 169, 174, @@ -572,7 +572,7 @@ 169, 75, 181, 199, 71, 122, 35, 47, 242, 153, 151, 107, 174, 67, 183, 18, 89, 156, 190, 252, 85, 172, 110, 95, 56, 31, 21, 92, 54, 104, 177, 40, 96, 169, 51, 73, 203, 201, 26, 199, 59, 21, 197, 199, 128, - 161, 25, 176, 92, 3, 70, 33, 167, 2, + 161, 25, 176, 92, 3, 70, 33, 167, kMagicSuffix[0], kMagicSuffix[1], kMagicSuffix[2], kMagicSuffix[3] }; // clang-format on
diff --git a/tools/binary_size/libsupersize/static/index.html b/tools/binary_size/libsupersize/static/index.html index 1303889..0dd1a05 100644 --- a/tools/binary_size/libsupersize/static/index.html +++ b/tools/binary_size/libsupersize/static/index.html
@@ -25,6 +25,10 @@ </style> <link rel="icon" href="favicon.ico" sizes="16x16 32x32 256x256" type="image/x-icon"> <script> + + +const DO_NOT_DIFF = "Don't diff"; + /** * @param {string[]} options * @param {string} key @@ -74,8 +78,13 @@ // Milestones. (async () => { - const response = await fetch('milestones/milestones.json'); - const {pushed} = await response.json(); + // Milestones. + const milestoneResponse = await fetch('milestones/milestones.json'); + const milestonesPushed = (await milestoneResponse.json())['pushed']; + + // Official Builds + const officialBuildsResponse = await fetch('official_builds/reports.json'); + const officialBuildsPushed = (await officialBuildsResponse.json())['pushed']; if (document.readyState === 'loading') { await new Promise(resolve => { @@ -89,97 +98,129 @@ } /** @type {HTMLFormElement} */ + const submitButton = document.getElementById('submit-button'); const form = document.getElementById('select-form'); - const selMode = form.elements.namedItem('mode'); - const selCpu = form.elements.namedItem('cpu'); const selApk = form.elements.namedItem('apk'); const selVersion1 = form.elements.namedItem('version1'); const selVersion2 = form.elements.namedItem('version2'); const btnOpen = form.querySelector('button[type="submit"]'); const msgBadCompare = form.querySelector('.msg-bad-compare'); - selCpu.appendChild(buildOptions(pushed.cpu)); - selApk.appendChild(buildOptions(pushed.apk)); - const versionOptions = buildOptions(pushed.version); - selVersion1.appendChild(versionOptions.cloneNode(true)); - selVersion2.appendChild(versionOptions); - - selectOption(selVersion1.querySelectorAll('option'), -2); - selectOption(selVersion2.querySelectorAll('option'), -1); - - let viewMode = null; - function readViewMode() { - viewMode = document.querySelector('#sel-mode').value; - form.classList.toggle('mode-view', viewMode === 'view'); - } - readViewMode(); - - function disableButtonIfNoDiffPair() { - const isDisabled = (viewMode === 'compare') && - isGreaterOrEqual(selVersion1.value, selVersion2.value); - btnOpen.disabled = isDisabled; - msgBadCompare.classList.toggle('visible', isDisabled); - } - disableButtonIfNoDiffPair(); - - selMode.addEventListener('change', () => { - readViewMode(); - disableButtonIfNoDiffPair(); - }); - - function getDataUrl() { - let ret = `milestones/${cpu.value}/${apk.value}/`; - if (viewMode === 'view') { - ret += `report_${selVersion2.value}.ndjson`; - } else if (viewMode === 'compare') { - ret += `report_${selVersion1.value}_${selVersion2.value}.ndjson`; - } - return ret; + function channelIsMilestone() { + // Returns: Whether channel is set to stable/beta (i.e. is a milestone) + const channel = document.querySelector('input[name="mode"]:checked').value; + return channel == 'stable/beta'; } - selVersion1.addEventListener('change', disableButtonIfNoDiffPair); - selVersion2.addEventListener('change', disableButtonIfNoDiffPair); - setSubmitListener(form, getDataUrl); -})(); - -// Official Builds. -(async () => { - const response = await fetch('official_builds/reports.json'); - const { pushed } = await response.json(); - - if (document.readyState === 'loading') { - await new Promise(resolve => { - document.onreadystatechange = () => { - if (document.readyState !== 'loading') { - resolve(); - document.onreadystatechange = null; + function cpuApkPairs(cpus, apks) { + let out = []; + for (let cpu of cpus) { + for (let apk of apks) { + // Chrome.apk not available for arm_64 + if(!(cpu == 'arm_64' && apk == 'Chrome.apk')) { + out.push(cpu + '/' + apk); } } + } + return out; + } + + function updateApk() { + // Overwrites the apk selector with entries of format {cpu}/{apk} + let apks = []; + if (channelIsMilestone()) { + apks = cpuApkPairs(milestonesPushed.cpu, milestonesPushed.apk); + } else { + apks = [...new Set(officialBuildsPushed.map(a => { + let apk = a.apk; + // Can safely discard minimal apks - as of 16-Sep-2019 there was only + // one entry with an attached Monochrome.minimal apk, assumed bug + if (apk === 'Monochrome.minimal.apks') apk = 'Monochrome.apk'; + return a.cpu + '/' + apk; + } + ))]; + } + selApk.innerHTML = ''; + selApk.appendChild(buildOptions(apks)); + } + + function updateSubmitButton() { + if (channelIsMilestone()) { + submitButton.textContent = 'Open Official Build Report'; + } else { + submitButton.textContent = 'Open Milestone Report'; + } + } + +/* + * @param {bool} swapping: True if this is driven by a canary <-> stable change + */ + function updateVersions() { + let versions = []; + if (channelIsMilestone()) { + // For the selected APK + versions = milestonesPushed.version; + } else { + versions = officialBuildsPushed.map(a => a.version); + } + selVersion1.innerHTML = ''; + selVersion1.appendChild(buildOptions(versions)); + selectOption(selVersion1.querySelectorAll('option'), -1); + } + + function updateDiffVersions() { + // Filter diff-against versions that are newer + // Preserve current options if possible + let diffVersions = []; + if (channelIsMilestone()) { + diffVersions = [...milestonesPushed.version]; + diffVersions = diffVersions.filter(v2 => !isGreaterOrEqual(v2, selVersion1.value)); + } else { + diffVersions = ['Diff with Previous Branch']; + } + diffVersions.push(DO_NOT_DIFF); + selVersion2.innerHTML = ''; + selVersion2.appendChild(buildOptions(diffVersions)); + selectOption(selVersion2.querySelectorAll('option'), -1); + } + + updateApk(); + updateVersions(); + updateDiffVersions(); + + const selChannels = document.getElementsByName('mode'); + for(let i=0; i < selChannels.length; i++) { + selChannels[i].addEventListener('click', () => { + updateSubmitButton(); + updateApk(); + updateVersions(); + updateDiffVersions(); }); } - /** @type {HTMLFormElement} */ - const form = document.getElementById('ob_form'); - const selCpu = form.elements.namedItem('ob_cpu'); - const selApk = form.elements.namedItem('ob_apk'); - const selVersion = form.elements.namedItem('ob_version'); - const viewMode = form.elements.namedItem('ob_viewmode'); - - selCpu.appendChild(buildOptions(pushed, 'cpu')); - selApk.appendChild(buildOptions(pushed, 'apk')); - selVersion.appendChild(buildOptions(pushed, 'version')); - - selectOption(selVersion.querySelectorAll('option'), -1); + selVersion1.addEventListener('change', () => { + updateDiffVersions(); + }); function getDataUrl() { - let path = `official_builds/reports/${ob_cpu.value}/${ob_apk.value}/`; - if (viewMode.value === 'view') { - return path + `report_${selVersion.value}.ndjson`; - } else if (viewMode.value === 'diff') { - for (const item of pushed) { - if (item['version'] == selVersion.value) { - const refVersion = item['reference_version']; - return path + `report_${refVersion}_${selVersion.value}.ndjson`; + if (channelIsMilestone()) { + let ret = `milestones/${apk.value}/`; + if (selVersion2.value === DO_NOT_DIFF) { + ret += `report_${selVersion1.value}.ndjson`; + } else { + ret += `report_${selVersion2.value}_${selVersion1.value}.ndjson`; + } + return ret; + } else { + let path = `official_builds/reports/${selApk.value}/`; + if (selVersion2.value === DO_NOT_DIFF) { + return path + `report_${selVersion1.value}.ndjson`; + } else { // Diff with previous version + for (const item of officialBuildsPushed) { + if (item['version'] == selVersion1.value) { + const refVersion = item['reference_version']; + return path + `report_${refVersion}_${selVersion1.value}.ndjson`; + } } } } @@ -201,77 +242,36 @@ <tr> <td class="form"> <form id="select-form"> - <h2 class="subhead">Select milestones to - <select id="sel-mode" class="sel-small" name="mode"> - <option value="view">view</option> - <option value="compare" selected="selected">compare</option> - </select> + <h2 class="subhead">Channel: + <label><input type="radio" name="mode" value="canary" checked> canary</label> + <label><input type="radio" name="mode" value="stable/beta"> stable/beta</label> </h2> <p class="select-wrapper"> - <select id="cpu" class="sel-big" name="cpu"></select> - <label class="select-label" for="cpu">Architecture</label> - </p> - <p class="select-wrapper"> <select id="apk" class="sel-big" name="apk"></select> <label class="select-label" for="apk">APK</label> </p> - <p class="select-wrapper hide-on-mode-view"> + <p class="select-wrapper"> <select id="version1" class="sel-big" name="version1"></select> - <label class="select-label" for="version1">Version 1</label> + <label class="select-label" for="version1">Version</label> </p> <p class="select-wrapper"> <select id="version2" class="sel-big" name="version2"></select> <label class="select-label" for="version2"> - Version <span class="hide-on-mode-view"> 2</span> + Diff Against </label> </p> - <button type="submit" class="text-button filled-button"> - Open Milestone Report - </button> + <p class="select-wrapper"> + <button type="submit" class="text-button filled-button" id="submit-button"> + Open Milestone Report + </button> + </p> <div class="msg-bad-compare">Version 1 must be older than Version 2</div> <div style="margin:20pt 0 10pt"> <b>Note:</b> AndroidWebview.apk size information exists only for M71 and above.<br> - <b>Note:</b> Starting wih M73, Monochrome.apk is actually Monochrome.minimal.apks<br> - <b>Note:</b> Chrome.apk not available for arm_64. </div> </form> </td> - - <td class="form-divider"> - <h2 class="subhead"><b>or</b></h2> - </td> - - <td class="form"> - <form id="ob_form"> - <h2 class="subhead">Select Official Build to View</h2> - <p class="select-wrapper"> - <select id="ob_cpu" class="sel-big" name="ob_cpu"></select> - <label class="select-label" for="ob_cpu">Architecture</label> - </p> - <p class="select-wrapper"> - <select id="ob_apk" class="sel-big" name="ob_apk"></select> - <label class="select-label" for="ob_apk">APK</label> - </p> - <p class="select-wrapper"> - <select id="ob_version" class="sel-big" name="ob_version"></select> - <label class="select-label" for="ob_version">Version</label> - </p> - <p class="select-wrapper"> - <select id="ob_viewmode" class="sel-big" name="ob_viewmode"> - <option value="view">Full Build Report</option> - <option value="diff" selected="selected">Diff with Previous Branch</option> - </select> - <label class="select-label" for="ob_viewmode">Type</label> - </p> - - <button type="submit" class="text-button filled-button"> - Open Official Build Report - </button> - <div class="msg-bad-compare"> </div> - <div class="note"><b>Note:</b> Official build size information exists only for M72 and above.</div> - </form> - </td> </tr> <tr> <td class="center-text" colspan=3>
diff --git a/tools/binary_size/libsupersize/static/options.css b/tools/binary_size/libsupersize/static/options.css index 184d57ff..789c30b7 100644 --- a/tools/binary_size/libsupersize/static/options.css +++ b/tools/binary_size/libsupersize/static/options.css
@@ -238,11 +238,9 @@ /** <input type='checkbox' or 'radio'> elements */ input[type='checkbox'], input[type='radio'] { - position: absolute; - margin: 0; + margin: 4px 0; height: 18px; width: 18px; - opacity: 0; } .checkbox-wrapper, .radio-wrapper {
diff --git a/tools/cr/cr/actions/gn.py b/tools/cr/cr/actions/gn.py index 34b045b..1614d47a 100644 --- a/tools/cr/cr/actions/gn.py +++ b/tools/cr/cr/actions/gn.py
@@ -14,10 +14,6 @@ class GnPrepareOut(cr.PrepareOut): """A prepare action that runs gn whenever you select an output directory.""" - ACTIVE = cr.Config.From( - GN_ARG_is_component_build='true', - ) - @property def priority(self): return -1
diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums.xml index 8b1dcc2..42a42420 100644 --- a/tools/metrics/histograms/enums.xml +++ b/tools/metrics/histograms/enums.xml
@@ -13483,6 +13483,16 @@ <int value="16" label="Security"/> <int value="17" label="JavaScript Profiler"/> <int value="18" label="Audits"/> + <int value="19" label="Drawer - Coverage"/> + <int value="20" label="Drawer - Protocol monitor"/> + <int value="21" label="Drawer - Remote devices"/> + <int value="22" label="Drawer - WebAudio"/> + <int value="23" label="Drawer - Changes"/> + <int value="24" label="Drawer - Performance monitor"/> + <int value="25" label="Drawer - What's New"/> + <int value="26" label="Drawer - Live Heap Profile"/> + <int value="27" label="Drawer - Quick source"/> + <int value="28" label="Drawer - Request blocking"/> </enum> <enum name="DevToolsSetting"> @@ -31950,6 +31960,29 @@ <int value="4" label="Unknown Reason"/> </enum> +<enum name="InstallAttributesUsageEvent"> + <int value="0" label="Cache read sucess"/> + <int value="1" label="First install"/> + <int value="2" label="Cache parse failed"/> + <int value="3" label="TPM not owned"/> + <int value="4" label="TPM invalid state"/> + <int value="5" label="NVRAM Space Absent"/> + <int value="6" label="NVRAM Invalid"/> + <int value="7" label="TPM Unavailable"/> + <int value="8" label="TPM Error"/> +</enum> + +<enum name="InstallAttributesValidationEvent"> + <int value="0" label="Cache write succeeded"/> + <int value="1" label="NVRAM read failed"/> + <int value="2" label="NVRAM invalid size"/> + <int value="3" label="NVRAM decode failed"/> + <int value="4" label="Data read failed"/> + <int value="5" label="Data verification of size failed"/> + <int value="6" label="Data verification of hash failed"/> + <int value="7" label="Cache write failed"/> +</enum> + <enum name="InstallStatus"> <int value="0" label="FIRST_INSTALL_SUCCESS"/> <int value="1" label="INSTALL_REPAIRED"/> @@ -34854,6 +34887,7 @@ <int value="-1863962664" label="LockScreenNotifications:enabled"/> <int value="-1861814223" label="MidiManagerDynamicInstantiation:enabled"/> <int value="-1860481724" label="ChromeHomeExpandButton:enabled"/> + <int value="-1859421131" label="BackForwardCache:disabled"/> <int value="-1859095876" label="Previews:disabled"/> <int value="-1856902397" label="LoadingWithMojo:enabled"/> <int value="-1855347512" label="FormControlsRefresh:disabled"/> @@ -37795,6 +37829,7 @@ <int value="2113804526" label="EnableAppShortcutSearch:enabled"/> <int value="2114843059" label="ContextualSuggestionsOptOut:enabled"/> <int value="2119964154" label="enable-download-resumption"/> + <int value="2120659210" label="BackForwardCache:enabled"/> <int value="2121056855" label="IncreaseInputAudioBufferSize:disabled"/> <int value="2121550859" label="PreferHtmlOverPlugins:enabled"/> <int value="2121776031" label="auto-virtual-keyboard"/>
diff --git a/tools/metrics/histograms/histograms.xml b/tools/metrics/histograms/histograms.xml index d059cb65..60d54dc 100644 --- a/tools/metrics/histograms/histograms.xml +++ b/tools/metrics/histograms/histograms.xml
@@ -26604,6 +26604,26 @@ </summary> </histogram> +<histogram name="Cryptohome.InstallAttributesUsage" + enum="InstallAttributesValidationEvent" expires_after="M80"> + <owner>vsavu@google.com</owner> + <owner>igorcov@chromium.com</owner> + <summary> + Records the result of using the install_attributes.pb cache. This is logged + at each device boot. + </summary> +</histogram> + +<histogram name="Cryptohome.InstallAttributesValidation" + enum="InstallAttributesValidationEvent" expires_after="M80"> + <owner>vsavu@google.com</owner> + <owner>igorcov@chromium.com</owner> + <summary> + Records the result of validating install_attributes.pb. This is logged at + each device boot. + </summary> +</histogram> + <histogram base="true" name="Cryptohome.LECredential" enum="CryptohomeLECredError" expires_after="2020-02-23"> <!-- Name completed by histogram_suffixes name="LECredentialOps" --> @@ -68383,6 +68403,16 @@ </summary> </histogram> +<histogram name="Mobile.Messages.ConcurrentPresented" units="infobars" + expires_after="2020-06-01"> + <owner>sczs@chromium.org</owner> + <owner>thegreenfrog@chromium.org</owner> + <summary> + Tracks the number of multiple Infobars being presented at the same time. + This will be recorded everytime an Infobar is presented. + </summary> +</histogram> + <histogram base="true" name="Mobile.Messages.Modal.Event" enum="MobileMessagesModalEvent" expires_after="2020-02-01"> <!-- Name completed by histogram_suffixes name="Mobile.Messages.Type" --> @@ -150560,13 +150590,18 @@ <histogram name="UserInterfaceStyle.ChangedWhileActive" enum="IOSUserInterfaceStyle" expires_after="M81"> + <obsolete> + Removed. Chrome can't listen to changes in the background, these are delayed + until the app becomes active again. Use UserInterfaceStyle.CurrentlyUsed + instead. + </obsolete> <owner>javierrobles@chromium.org</owner> <owner>rkgibson@google.com</owner> <owner>bling-team@google.com</owner> <summary> [iOS] Used on iOS 13+ to report the changes to Light and Dark mode. This is logged when the interface style changes and Chrome is active. Can be caused - by the system automatic switch or by the user manually schanging the style. + by the system automatic switch or by the user manually changing the style. </summary> </histogram> @@ -150577,7 +150612,8 @@ <owner>bling-team@google.com</owner> <summary> [iOS] Used on iOS 13+ to report the usage of Light and Dark mode. This is - logged at startup and on each user interface style change. + logged at startup and on each user interface style change. Can be caused by + the system automatic switch or by the user manually changing the style. </summary> </histogram>
diff --git a/ui/gfx/render_text_harfbuzz.cc b/ui/gfx/render_text_harfbuzz.cc index af2b53e..807209e 100644 --- a/ui/gfx/render_text_harfbuzz.cc +++ b/ui/gfx/render_text_harfbuzz.cc
@@ -2001,30 +2001,54 @@ } } - std::string preferred_fallback_family; + // Keep a set of fonts already tried for shaping runs. + std::set<Font, CaseInsensitiveCompare> fallback_fonts_already_tried; + fallback_fonts_already_tried.insert(primary_font); - Font fallback_font(primary_font); - bool fallback_found; - { - SCOPED_UMA_HISTOGRAM_LONG_TIMER("RenderTextHarfBuzz.GetFallbackFontTime"); - TRACE_EVENT1("ui", "RenderTextHarfBuzz::GetFallbackFont", "script", - TRACE_STR_COPY(uscript_getShortName(font_params.script))); - const base::StringPiece16 run_text(&text[runs.front()->range.start()], - runs.front()->range.length()); - fallback_found = - GetFallbackFont(primary_font, locale_, run_text, &fallback_font); + // Find fallback fonts for the remaining runs using a worklist algorithm. Try + // to shape the first run by using GetFallbackFont(...) and then try shaping + // other runs with the same font. If the first font can't be shaped, remove it + // and continue with the remaining runs until the worklist is empty. The + // fallback font returned by GetFallbackFont(...) depends on the text of the + // run and the results may differ between runs. + std::vector<internal::TextRunHarfBuzz*> remaining_unshaped_runs; + while (!runs.empty()) { + Font fallback_font(primary_font); + bool fallback_found; + internal::TextRunHarfBuzz* current_run = *runs.begin(); + { + SCOPED_UMA_HISTOGRAM_LONG_TIMER("RenderTextHarfBuzz.GetFallbackFontTime"); + TRACE_EVENT1("ui", "RenderTextHarfBuzz::GetFallbackFont", "script", + TRACE_STR_COPY(uscript_getShortName(font_params.script))); + const base::StringPiece16 run_text(&text[current_run->range.start()], + current_run->range.length()); + fallback_found = + GetFallbackFont(primary_font, locale_, run_text, &fallback_font); + } + + if (fallback_found) { + const bool fallback_font_is_untried = + fallback_fonts_already_tried.insert(fallback_font).second; + if (fallback_font_is_untried) { + internal::TextRunHarfBuzz::FontParams test_font_params = font_params; + if (test_font_params.SetFontAndRenderParams( + fallback_font, fallback_font.GetFontRenderParams())) { + ShapeRunsWithFont(text, test_font_params, &runs); + } + } + } + + // Remove the first run if not fully shaped with its associated fallback + // font. + if (!runs.empty() && runs[0] == current_run) { + remaining_unshaped_runs.push_back(current_run); + runs.erase(runs.begin()); + } } - if (fallback_found) { - preferred_fallback_family = fallback_font.GetFontName(); - internal::TextRunHarfBuzz::FontParams test_font_params = font_params; - if (test_font_params.SetFontAndRenderParams( - fallback_font, fallback_font.GetFontRenderParams())) { - ShapeRunsWithFont(text, test_font_params, &runs); - } - if (runs.empty()) { - RecordShapeRunsFallback(ShapeRunFallback::FALLBACK); - return; - } + runs.swap(remaining_unshaped_runs); + if (runs.empty()) { + RecordShapeRunsFallback(ShapeRunFallback::FALLBACK); + return; } std::vector<Font> fallback_font_list; @@ -2035,10 +2059,10 @@ fallback_font_list = GetFallbackFonts(primary_font); #if defined(OS_WIN) - // Append fonts in the fallback list of the preferred fallback font. + // Append fonts in the fallback list of the fallback fonts. // TODO(tapted): Investigate whether there's a case that benefits from this // on Mac. - if (!preferred_fallback_family.empty()) { + for (const auto& fallback_font : fallback_fonts_already_tried) { std::vector<Font> fallback_fonts = GetFallbackFonts(fallback_font); fallback_font_list.insert(fallback_font_list.end(), fallback_fonts.begin(), fallback_fonts.end()); @@ -2049,10 +2073,9 @@ // http://crbug.com/467459. On some Windows configurations the default font // could be a raster font like System, which would not give us a reasonable // fallback font list. - if (!base::LowerCaseEqualsASCII(primary_font.GetFontName(), "segoe ui") && - !base::LowerCaseEqualsASCII(preferred_fallback_family, "segoe ui")) { - std::vector<Font> default_fallback_families = - GetFallbackFonts(Font("Segoe UI", 13)); + Font segoe("Segoe UI", 13); + if (!fallback_fonts_already_tried.count(segoe)) { + std::vector<Font> default_fallback_families = GetFallbackFonts(segoe); fallback_font_list.insert(fallback_font_list.end(), default_fallback_families.begin(), default_fallback_families.end()); @@ -2065,18 +2088,15 @@ "RenderTextHarfBuzz.ShapeRunsWithFallbackFontsTime"); TRACE_EVENT1("ui", "RenderTextHarfBuzz::ShapeRunsWithFallbackFonts", "fonts_count", fallback_font_list.size()); - std::set<Font, CaseInsensitiveCompare> fallback_fonts; // Try shaping with the fallback fonts. for (const auto& font : fallback_font_list) { std::string font_name = font.GetFontName(); - if (font_name == primary_font.GetFontName() || - font_name == preferred_fallback_family || fallback_fonts.count(font)) { + const bool fallback_font_is_untried = + fallback_fonts_already_tried.insert(font).second; + if (!fallback_font_is_untried) continue; - } - - fallback_fonts.insert(font); FontRenderParamsQuery query; query.families.push_back(font_name);
diff --git a/ui/gfx/render_text_unittest.cc b/ui/gfx/render_text_unittest.cc index f651622..f5467aa 100644 --- a/ui/gfx/render_text_unittest.cc +++ b/ui/gfx/render_text_unittest.cc
@@ -4749,6 +4749,39 @@ #endif } +TEST_F(RenderTextTest, HarfBuzz_ShapeRunsWithMultipleFonts) { + RenderTextHarfBuzz* render_text = GetRenderText(); + + // The following text will be split in 3 runs: + // 1) u+1F3F3 u+FE0F u+FE0F (Segoe UI Emoji) + // 2) u+0020 (Segoe UI) + // 3) u+1F308 u+20E0 u+20E0 (Segoe UI Symbol) + // The three runs are shape in the same group but are mapped with three + // different fonts. + render_text->SetText( + UTF8ToUTF16(u8"\U0001F3F3\U0000FE0F\U00000020\U0001F308\U000020E0")); + test_api()->EnsureLayout(); + std::vector<base::string16> expected; + expected.push_back(WideToUTF16(L"\U0001F3F3\U0000FE0F")); + expected.push_back(WideToUTF16(L" ")); + expected.push_back(WideToUTF16(L"\U0001F308\U000020E0")); + EXPECT_EQ(expected, GetRunListStrings()); + EXPECT_EQ("[0->2][3][4->6]", GetRunListStructureString()); + +#if defined(OS_WIN) + std::vector<std::string> expected_fonts; + if (base::win::GetVersion() < base::win::Version::WIN10) + expected_fonts = {"Segoe UI", "Segoe UI", "Segoe UI Symbol"}; + else + expected_fonts = {"Segoe UI Emoji", "Segoe UI", "Segoe UI Symbol"}; + + std::vector<std::string> mapped_fonts; + for (const auto& font_span : render_text->GetFontSpansForTesting()) + mapped_fonts.push_back(font_span.first.GetFontName()); + EXPECT_EQ(expected_fonts, mapped_fonts); +#endif +} + TEST_F(RenderTextTest, GlyphBounds) { const char* kTestStrings[] = {"asdf 1234 qwer", "\u0647\u0654", "\u0645\u0631\u062D\u0628\u0627"};
diff --git a/weblayer/browser/browser_controller_impl.cc b/weblayer/browser/browser_controller_impl.cc index fdce547b..cf72f57 100644 --- a/weblayer/browser/browser_controller_impl.cc +++ b/weblayer/browser/browser_controller_impl.cc
@@ -98,6 +98,12 @@ observer.LoadingStateChanged(is_loading, to_different_document); } +void BrowserControllerImpl::LoadProgressChanged(content::WebContents* source, + double progress) { + for (auto& observer : observers_) + observer.LoadProgressChanged(progress); +} + void BrowserControllerImpl::DidNavigateMainFramePostCommit( content::WebContents* web_contents) { for (auto& observer : observers_)
diff --git a/weblayer/browser/browser_controller_impl.h b/weblayer/browser/browser_controller_impl.h index 1b8821d..d46923a 100644 --- a/weblayer/browser/browser_controller_impl.h +++ b/weblayer/browser/browser_controller_impl.h
@@ -59,6 +59,8 @@ // content::WebContentsDelegate implementation: void LoadingStateChanged(content::WebContents* source, bool to_different_document) override; + void LoadProgressChanged(content::WebContents* source, + double progress) override; void DidNavigateMainFramePostCommit( content::WebContents* web_contents) override; int GetTopControlsHeight() override;
diff --git a/weblayer/browser/browser_observer_proxy.cc b/weblayer/browser/browser_observer_proxy.cc index ff551492..01d1803 100644 --- a/weblayer/browser/browser_observer_proxy.cc +++ b/weblayer/browser/browser_observer_proxy.cc
@@ -37,9 +37,11 @@ void BrowserObserverProxy::LoadingStateChanged(bool is_loading, bool to_different_document) {} +void BrowserObserverProxy::LoadProgressChanged(double progress) {} + void BrowserObserverProxy::FirstContentfulPaint() {} -static jlong JNI_BrowserObserverProxy_CreateBrowserObsererProxy( +static jlong JNI_BrowserObserverProxy_CreateBrowserObserverProxy( JNIEnv* env, const base::android::JavaParamRef<jobject>& proxy, jlong browser_controller) {
diff --git a/weblayer/browser/browser_observer_proxy.h b/weblayer/browser/browser_observer_proxy.h index 45b4273..81882881 100644 --- a/weblayer/browser/browser_observer_proxy.h +++ b/weblayer/browser/browser_observer_proxy.h
@@ -28,6 +28,7 @@ void DisplayedURLChanged(const GURL& url) override; void LoadingStateChanged(bool is_loading, bool to_different_document) override; + void LoadProgressChanged(double progress) override; void FirstContentfulPaint() override; private:
diff --git a/weblayer/browser/java/org/chromium/weblayer_private/BrowserControllerImpl.java b/weblayer/browser/java/org/chromium/weblayer_private/BrowserControllerImpl.java index 931a749..6558a644 100644 --- a/weblayer/browser/java/org/chromium/weblayer_private/BrowserControllerImpl.java +++ b/weblayer/browser/java/org/chromium/weblayer_private/BrowserControllerImpl.java
@@ -5,6 +5,8 @@ package org.chromium.weblayer_private; import android.content.Context; +import android.content.ContextWrapper; +import android.content.res.Resources; import android.view.Gravity; import android.view.KeyEvent; import android.view.MotionEvent; @@ -60,9 +62,16 @@ public void onScrollChanged(int lPix, int tPix, int oldlPix, int oldtPix) {} } - public BrowserControllerImpl(Context context, ProfileImpl profile) { + public BrowserControllerImpl(Context clientContext, Context implContext, ProfileImpl profile) { mProfile = profile; + Context context = new ContextWrapper(clientContext) { + @Override + public Resources getResources() { + // Always use resources from the implementation APK. + return implContext.getResources(); + } + }; mWindowAndroid = new ActivityWindowAndroid(context); mContentViewRenderView = new ContentViewRenderView(context);
diff --git a/weblayer/browser/java/org/chromium/weblayer_private/BrowserObserverProxy.java b/weblayer/browser/java/org/chromium/weblayer_private/BrowserObserverProxy.java index 2f4e0f9..14e913a 100644 --- a/weblayer/browser/java/org/chromium/weblayer_private/BrowserObserverProxy.java +++ b/weblayer/browser/java/org/chromium/weblayer_private/BrowserObserverProxy.java
@@ -23,7 +23,7 @@ BrowserObserverProxy(long browserController, IBrowserControllerClient client) { mClient = client; - mNativeBrowserObserverProxy = nativeCreateBrowserObsererProxy(this, browserController); + mNativeBrowserObserverProxy = nativeCreateBrowserObserverProxy(this, browserController); } public void destroy() { @@ -40,7 +40,7 @@ } } - private static native long nativeCreateBrowserObsererProxy( + private static native long nativeCreateBrowserObserverProxy( BrowserObserverProxy proxy, long browserController); private static native void nativeDeleteBrowserObserverProxy(long proxy); }
diff --git a/weblayer/browser/java/org/chromium/weblayer_private/ProfileImpl.java b/weblayer/browser/java/org/chromium/weblayer_private/ProfileImpl.java index 85777708..00b6acf 100644 --- a/weblayer/browser/java/org/chromium/weblayer_private/ProfileImpl.java +++ b/weblayer/browser/java/org/chromium/weblayer_private/ProfileImpl.java
@@ -32,8 +32,10 @@ } @Override - public IBrowserController createBrowserController(IObjectWrapper context) { - return new BrowserControllerImpl(ObjectWrapper.unwrap(context, Context.class), this); + public IBrowserController createBrowserController( + IObjectWrapper clientContext, IObjectWrapper implContext) { + return new BrowserControllerImpl(ObjectWrapper.unwrap(clientContext, Context.class), + ObjectWrapper.unwrap(implContext, Context.class), this); } long getNativeProfile() {
diff --git a/weblayer/browser/java/org/chromium/weblayer_private/aidl/IProfile.aidl b/weblayer/browser/java/org/chromium/weblayer_private/aidl/IProfile.aidl index d687893..3099c12 100644 --- a/weblayer/browser/java/org/chromium/weblayer_private/aidl/IProfile.aidl +++ b/weblayer/browser/java/org/chromium/weblayer_private/aidl/IProfile.aidl
@@ -12,5 +12,11 @@ void clearBrowsingData() = 1; - IBrowserController createBrowserController(in IObjectWrapper context) = 2; + /** + * Creates a new IBrowserController. + * @param clientContext Context from the client + * @param implContext Context that refers to the weblayer implementation + */ + IBrowserController createBrowserController(in IObjectWrapper clientContext, + in IObjectWrapper implContext) = 2; }
diff --git a/weblayer/public/browser_observer.h b/weblayer/public/browser_observer.h index fa43c3b8..3fe3244 100644 --- a/weblayer/public/browser_observer.h +++ b/weblayer/public/browser_observer.h
@@ -23,6 +23,11 @@ virtual void LoadingStateChanged(bool is_loading, bool to_different_document) {} + // Indicates that the load progress of the WebContents has changed. This + // corresponds to WebContentsDelegate::LoadProgressChanged, meaning |progress| + // ranges from 0.0 to 1.0. + virtual void LoadProgressChanged(double progress) {} + // This is fired after each navigation has completed, to indicate that the // first paint after a non-empty layout has finished. virtual void FirstContentfulPaint() {}
diff --git a/weblayer/public/java/org/chromium/weblayer/Profile.java b/weblayer/public/java/org/chromium/weblayer/Profile.java index 085273a..5702c4b 100644 --- a/weblayer/public/java/org/chromium/weblayer/Profile.java +++ b/weblayer/public/java/org/chromium/weblayer/Profile.java
@@ -46,7 +46,8 @@ public BrowserFragmentImpl createBrowserFragment(Context context) { try { return new BrowserFragmentImpl( - mImpl.createBrowserController(ObjectWrapper.wrap(context))); + mImpl.createBrowserController(ObjectWrapper.wrap(context), + ObjectWrapper.wrap(WebLayer.getInstance().createRemoteContext()))); } catch (RemoteException e) { throw new APICallException(e); }
diff --git a/weblayer/public/java/org/chromium/weblayer/WebLayer.java b/weblayer/public/java/org/chromium/weblayer/WebLayer.java index 87ee4de..f7fbc98 100644 --- a/weblayer/public/java/org/chromium/weblayer/WebLayer.java +++ b/weblayer/public/java/org/chromium/weblayer/WebLayer.java
@@ -8,8 +8,10 @@ import android.content.Context; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; +import android.content.pm.PackageManager.NameNotFoundException; import android.os.IBinder; import android.os.RemoteException; +import android.util.AndroidRuntimeException; import android.webkit.WebViewDelegate; import android.webkit.WebViewFactory; @@ -29,6 +31,8 @@ private static WebLayer sInstance; private IWebLayer mImpl; + private Application mApplication; + public static WebLayer getInstance() { if (sInstance == null) { sInstance = new WebLayer(); @@ -39,6 +43,7 @@ WebLayer() {} public void init(Application application) { + mApplication = application; try { // TODO: Make asset loading work on L, where WebViewDelegate doesn't exist. // WebViewDelegate.addWebViewAssetPath() accesses the currently loaded package info from @@ -56,8 +61,7 @@ WebViewDelegate delegate = (WebViewDelegate) constructor.newInstance(); delegate.addWebViewAssetPath(application); - Context remoteContext = application.createPackageContext( - PACKAGE_NAME, Context.CONTEXT_IGNORE_SECURITY | Context.CONTEXT_INCLUDE_CODE); + Context remoteContext = createRemoteContext(); mImpl = IWebLayer.Stub.asInterface( (IBinder) remoteContext.getClassLoader() .loadClass("org.chromium.weblayer_private.WebLayerImpl") @@ -88,4 +92,16 @@ throw new APICallException(e); } } + + /** + * Creates a Context for the remote (weblayer implementation) side. + */ + Context createRemoteContext() { + try { + return mApplication.createPackageContext( + PACKAGE_NAME, Context.CONTEXT_IGNORE_SECURITY | Context.CONTEXT_INCLUDE_CODE); + } catch (NameNotFoundException e) { + throw new AndroidRuntimeException(e); + } + } }
diff --git a/weblayer/shell/BUILD.gn b/weblayer/shell/BUILD.gn index db25698..44d80ae82 100644 --- a/weblayer/shell/BUILD.gn +++ b/weblayer/shell/BUILD.gn
@@ -193,6 +193,9 @@ sources += [ "$root_gen_dir/ui/views/resources/views_resources_100_percent.pak" ] } + if (is_android) { + deps += [ "//ui/android:ui_java_resources" ] + } output = "$root_out_dir/weblayer_support.pak" }
diff --git a/weblayer/shell/browser/shell.cc b/weblayer/shell/browser/shell.cc index 8a4b6c0..33f95c0 100644 --- a/weblayer/shell/browser/shell.cc +++ b/weblayer/shell/browser/shell.cc
@@ -105,6 +105,10 @@ PlatformEnableUIControl(STOP_BUTTON, to_different_document && is_loading); } +void Shell::LoadProgressChanged(double progress) { + PlatformSetLoadProgress(progress); +} + void Shell::DisplayedURLChanged(const GURL& url) { PlatformSetAddressBarURL(url); }
diff --git a/weblayer/shell/browser/shell.h b/weblayer/shell/browser/shell.h index 0aebe03..c429bfb 100644 --- a/weblayer/shell/browser/shell.h +++ b/weblayer/shell/browser/shell.h
@@ -76,6 +76,7 @@ // BrowserObserver implementation: void LoadingStateChanged(bool is_loading, bool to_different_document) override; + void LoadProgressChanged(double progress) override; void DisplayedURLChanged(const GURL& url) override; // Helper to create a new Shell. @@ -113,8 +114,8 @@ // Updates the url in the url bar. void PlatformSetAddressBarURL(const GURL& url); - // Sets whether the spinner is spinning. - void PlatformSetIsLoading(bool loading); + // Sets the load progress indicator in the UI. + void PlatformSetLoadProgress(double progress); // Set the title of shell window void PlatformSetTitle(const base::string16& title);
diff --git a/weblayer/shell/browser/shell_views.cc b/weblayer/shell/browser/shell_views.cc index cd8c12e..5201a1d 100644 --- a/weblayer/shell/browser/shell_views.cc +++ b/weblayer/shell/browser/shell_views.cc
@@ -82,6 +82,7 @@ } void SetWindowTitle(const base::string16& title) { title_ = title; } + void EnableUIControl(UIControl control, bool is_enabled) { if (control == BACK_BUTTON) { back_button_->SetState(is_enabled ? views::Button::STATE_NORMAL @@ -92,9 +93,18 @@ } else if (control == STOP_BUTTON) { stop_button_->SetState(is_enabled ? views::Button::STATE_NORMAL : views::Button::STATE_DISABLED); + if (!is_enabled) + UpdateLoadProgress(); } } + void UpdateLoadProgress(double progress = 0.) { + std::string stop_text("Stop"); + if (stop_button_->state() == views::Button::STATE_NORMAL) + stop_text = base::StringPrintf("Stop (%.0f%%)", progress * 100); + stop_button_->SetText(base::ASCIIToUTF16(stop_text)); + } + private: // Initialize the UI control contained in shell window void InitShellWindow() { @@ -145,12 +155,11 @@ refresh_button_size.width() / 2); // Stop button auto stop_button = - views::MdTextButton::Create(this, base::ASCIIToUTF16("Stop")); - gfx::Size stop_button_size = stop_button->GetPreferredSize(); + views::MdTextButton::Create(this, base::ASCIIToUTF16("Stop (100%)")); + int stop_button_width = stop_button->GetPreferredSize().width(); toolbar_column_set->AddColumn( - views::GridLayout::CENTER, views::GridLayout::CENTER, 0, - views::GridLayout::FIXED, stop_button_size.width(), - stop_button_size.width() / 2); + views::GridLayout::FILL, views::GridLayout::CENTER, 0, + views::GridLayout::FIXED, stop_button_width, stop_button_width / 2); toolbar_column_set->AddPaddingColumn(0, 2); // URL entry auto url_entry = std::make_unique<views::Textfield>(); @@ -184,6 +193,7 @@ InitAccelerators(); } + void InitAccelerators() { static const ui::KeyboardCode keys[] = {ui::VKEY_F5, ui::VKEY_BROWSER_BACK, ui::VKEY_BROWSER_FORWARD}; @@ -193,9 +203,11 @@ ui::AcceleratorManager::kNormalPriority, this); } } + // Overridden from TextfieldController void ContentsChanged(views::Textfield* sender, const base::string16& new_contents) override {} + bool HandleKeyEvent(views::Textfield* sender, const ui::KeyEvent& key_event) override { if (key_event.type() == ui::ET_KEY_PRESSED && sender == url_entry_ && @@ -278,7 +290,7 @@ views::Button* back_button_ = nullptr; views::Button* forward_button_ = nullptr; views::Button* refresh_button_ = nullptr; - views::Button* stop_button_ = nullptr; + views::MdTextButton* stop_button_ = nullptr; views::Textfield* url_entry_ = nullptr; // Contents view contains the WebBrowser view @@ -342,7 +354,11 @@ delegate_view->SetAddressBarURL(url); } -void Shell::PlatformSetIsLoading(bool loading) {} +void Shell::PlatformSetLoadProgress(double progress) { + ShellWindowDelegateView* delegate_view = + static_cast<ShellWindowDelegateView*>(window_widget_->widget_delegate()); + delegate_view->UpdateLoadProgress(progress); +} void Shell::PlatformCreateWindow(int width, int height) { window_widget_ = new views::Widget;