diff --git a/DEPS b/DEPS index 780b27f..ae2abcb 100644 --- a/DEPS +++ b/DEPS
@@ -181,11 +181,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': '504032e57526923e9deda5cca6ae5380772195cc', + 'skia_revision': 'fb28c6fb7fe3f069eb5dca7a5ef2bbd8c87a7cd3', # 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': 'd2cad7137654e04a5328728551c51a1b79145a5d', + 'v8_revision': '7006065f20dd6ee20961e5b7b72be70e431a8b83', # 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. @@ -197,7 +197,7 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling SwiftShader # and whatever else without interference from each other. - 'swiftshader_revision': 'f6d3cbb2830306f3ef51a72cd3f798684d107c14', + 'swiftshader_revision': 'c236b576c88966c720eed4effa5ef5da352da217', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling PDFium # and whatever else without interference from each other. @@ -244,7 +244,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': 'f6f813d450e5e09c1e5f3c0f0afa00c5892864f4', + 'catapult_revision': '32c9791b8a182069f8dacc7dfbab1762c11e77b4', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling libFuzzer # and whatever else without interference from each other. @@ -252,7 +252,7 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling devtools-frontend # and whatever else without interference from each other. - 'devtools_frontend_revision': '2ef3661d276c4d31381479c25e0f2cd4153fe6eb', + 'devtools_frontend_revision': '9417f6065f0dbdef68a6334d2f05caed6f220c39', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling libprotobuf-mutator # and whatever else without interference from each other. @@ -308,11 +308,11 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling feed # and whatever else without interference from each other. - 'shaderc_revision': '3f24b6829b3e7da9c97b779402311ece81264ca8', + 'shaderc_revision': 'dc2172c083f6ac0ba8c1c609d64a2edd0fa8b81b', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling feed # and whatever else without interference from each other. - 'dawn_revision': '5fc2c82c11e078928e6a0f9c447b69fe208815f8', + 'dawn_revision': '69c68d01b2420e77283166ffcc7ddb4b0fbc2505', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling feed # and whatever else without interference from each other. @@ -904,7 +904,7 @@ }, 'src/third_party/depot_tools': - Var('chromium_git') + '/chromium/tools/depot_tools.git' + '@' + '13928b7e7f1a37e5e70cae53aba089f88bbbccfc', + Var('chromium_git') + '/chromium/tools/depot_tools.git' + '@' + 'fc132e61dbe484619d780ce9dedb08986a090706', 'src/third_party/devtools-frontend/src': Var('chromium_git') + '/devtools/devtools-frontend' + '@' + Var('devtools_frontend_revision'), @@ -963,7 +963,7 @@ }, 'src/third_party/glslang/src': - Var('chromium_git') + '/external/github.com/KhronosGroup/glslang.git' + '@' + '51813670627c976a93f4cfbea6fa89fdb4d35cad', + Var('chromium_git') + '/external/github.com/KhronosGroup/glslang.git' + '@' + 'd203754bc1160cbb14e80de238042a2b9b439917', 'src/third_party/google_toolbox_for_mac/src': { 'url': Var('chromium_git') + '/external/github.com/google/google-toolbox-for-mac.git' + '@' + Var('google_toolbox_for_mac_revision'), @@ -1297,7 +1297,7 @@ }, 'src/third_party/perfetto': - Var('android_git') + '/platform/external/perfetto.git' + '@' + '920683437e19b65d3a6a23a0c539cf9106f1a5cb', + Var('android_git') + '/platform/external/perfetto.git' + '@' + 'a2970bdcff5328a92aebf5acba269f3b66eaac1a', 'src/third_party/perl': { 'url': Var('chromium_git') + '/chromium/deps/perl.git' + '@' + '6f3e5028eb65d0b4c5fdd792106ac4c84eee1eb3', @@ -1498,7 +1498,7 @@ Var('chromium_git') + '/external/khronosgroup/webgl.git' + '@' + '88d715c9115a5ce65c0bf660209dfeee9131ccd0', 'src/third_party/webrtc': - Var('webrtc_git') + '/src.git' + '@' + '4b07059139178636809b3d9eee961da0b9c92437', + Var('webrtc_git') + '/src.git' + '@' + 'b42aeaa3fb21d78e59c47d2a9916acb380494496', 'src/third_party/libgifcodec': Var('skia_git') + '/libgifcodec' + '@'+ Var('libgifcodec_revision'), @@ -1568,7 +1568,7 @@ Var('chromium_git') + '/v8/v8.git' + '@' + Var('v8_revision'), 'src-internal': { - 'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@3f1bd1b88a315c2ff9cca3c5efde1be681128bba', + 'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@a6d4c99b62d854ed2b87adc41d8d8dec00554189', 'condition': 'checkout_src_internal', },
diff --git a/android_webview/javatests/src/org/chromium/android_webview/test/AwVariationsSeedFetcherTest.java b/android_webview/javatests/src/org/chromium/android_webview/test/AwVariationsSeedFetcherTest.java index 5eac4676..e6e3930 100644 --- a/android_webview/javatests/src/org/chromium/android_webview/test/AwVariationsSeedFetcherTest.java +++ b/android_webview/javatests/src/org/chromium/android_webview/test/AwVariationsSeedFetcherTest.java
@@ -26,13 +26,13 @@ import org.chromium.android_webview.test.util.VariationsTestUtils; import org.chromium.base.ContextUtils; import org.chromium.base.test.util.CallbackHelper; +import org.chromium.components.background_task_scheduler.TaskIds; import org.chromium.components.variations.firstrun.VariationsSeedFetcher; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.List; -import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; /** @@ -41,8 +41,7 @@ @RunWith(AwJUnit4ClassRunner.class) @OnlyRunIn(SINGLE_PROCESS) public class AwVariationsSeedFetcherTest { - // Jan 1, 2019 12:00AM GMT - private static final long FAKE_NOW_MS = 1546300800000L; + private static final int JOB_ID = TaskIds.WEBVIEW_VARIATIONS_SEED_FETCH_JOB_ID; // A mock JobScheduler which only holds one job, and never does anything with it. private class MockJobScheduler extends JobScheduler { @@ -52,10 +51,12 @@ mJob = null; } - public void assertScheduledWithDelayEqualTo(long delay) { + public void assertScheduled() { Assert.assertNotNull("No job scheduled", mJob); - Assert.assertEquals( - "Job scheduled with wrong delay", delay, mJob.getMinLatencyMillis()); + } + + public void assertNotScheduled() { + Assert.assertNull("Job should not have been scheduled", mJob); } @Override @@ -88,8 +89,7 @@ @Override public int schedule(JobInfo job) { - Assert.assertEquals( - "Job scheduled with wrong ID", AwVariationsSeedFetcher.JOB_ID, job.getId()); + Assert.assertEquals("Job scheduled with wrong ID", JOB_ID, job.getId()); Assert.assertEquals("Job scheduled with wrong network type", JobInfo.NETWORK_TYPE_ANY, job.getNetworkType()); Assert.assertTrue("Job scheduled without charging requirement", @@ -120,7 +120,6 @@ @Before public void setUp() throws IOException { AwVariationsSeedFetcher.setMocks(mScheduler, mDownloader); - AwVariationsSeedFetcher.setMinJobPeriodMillisForTesting(TimeUnit.DAYS.toMillis(1)); VariationsTestUtils.deleteSeeds(); } @@ -135,8 +134,8 @@ @SmallTest public void testScheduleWithNoStamp() { try { - AwVariationsSeedFetcher.scheduleIfNeeded(FAKE_NOW_MS); - mScheduler.assertScheduledWithDelayEqualTo(0); + AwVariationsSeedFetcher.scheduleIfNeeded(); + mScheduler.assertScheduled(); } finally { mScheduler.clear(); } @@ -152,30 +151,25 @@ Assert.assertFalse("Stamp file already exists", stamp.exists()); Assert.assertTrue("Failed to create stamp file", stamp.createNewFile()); Assert.assertTrue("Failed to set stamp time", stamp.setLastModified(0)); - AwVariationsSeedFetcher.scheduleIfNeeded(FAKE_NOW_MS); - mScheduler.assertScheduledWithDelayEqualTo(0); + AwVariationsSeedFetcher.scheduleIfNeeded(); + mScheduler.assertScheduled(); } finally { mScheduler.clear(); VariationsTestUtils.deleteSeeds(); // Remove the stamp file. } } - // Create a stamp file with time = 7 hours ago, indicating the download job ran recently. Then - // test scheduleIfNeeded(), which should schedule the job 17 hours in the future. + // Create a stamp file with time = now, indicating the download job ran recently. Then test + // scheduleIfNeeded(), which should not schedule a job. @Test @MediumTest public void testScheduleWithFreshStamp() throws IOException { - long seedAge = TimeUnit.HOURS.toMillis(7); File stamp = VariationsUtils.getStampFile(); try { - long stampLastModified = FAKE_NOW_MS - seedAge; Assert.assertFalse("Stamp file already exists", stamp.exists()); Assert.assertTrue("Failed to create stamp file", stamp.createNewFile()); - Assert.assertTrue("Failed to set stamp time", stamp.setLastModified(stampLastModified)); - - AwVariationsSeedFetcher.scheduleIfNeeded(FAKE_NOW_MS); - - mScheduler.assertScheduledWithDelayEqualTo(TimeUnit.HOURS.toMillis(17)); + AwVariationsSeedFetcher.scheduleIfNeeded(); + mScheduler.assertNotScheduled(); } finally { mScheduler.clear(); VariationsTestUtils.deleteSeeds(); // Remove the stamp file. @@ -192,15 +186,15 @@ @SuppressLint("JobSchedulerService") ComponentName component = new ComponentName( ContextUtils.getApplicationContext(), AwVariationsSeedFetcher.class); - JobInfo job = new JobInfo.Builder(AwVariationsSeedFetcher.JOB_ID, component) - .setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY) - .setRequiresCharging(true) - .build(); + JobInfo job = new JobInfo.Builder(JOB_ID, component) + .setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY) + .setRequiresCharging(true) + .build(); mScheduler.schedule(job); - AwVariationsSeedFetcher.scheduleIfNeeded(FAKE_NOW_MS); + AwVariationsSeedFetcher.scheduleIfNeeded(); // Check that our job object hasn't been replaced (meaning that scheduleIfNeeded didn't // schedule a job). - Assert.assertSame(job, mScheduler.getPendingJob(AwVariationsSeedFetcher.JOB_ID)); + Assert.assertSame(job, mScheduler.getPendingJob(JOB_ID)); } finally { mScheduler.clear(); }
diff --git a/android_webview/junit/src/org/chromium/android_webview/robolectric/services/AwVariationsSeedFetcherTest.java b/android_webview/junit/src/org/chromium/android_webview/robolectric/services/AwVariationsSeedFetcherTest.java deleted file mode 100644 index f2e9261..0000000 --- a/android_webview/junit/src/org/chromium/android_webview/robolectric/services/AwVariationsSeedFetcherTest.java +++ /dev/null
@@ -1,54 +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. - -package org.chromium.android_webview.robolectric.services; - -import android.support.test.filters.SmallTest; - -import org.junit.Assert; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.robolectric.annotation.Config; - -import org.chromium.android_webview.services.AwVariationsSeedFetcher; -import org.chromium.testing.local.LocalRobolectricTestRunner; - -import java.util.concurrent.TimeUnit; - -@RunWith(LocalRobolectricTestRunner.class) -@Config(manifest = Config.NONE) -public class AwVariationsSeedFetcherTest { - // Jan 1, 2019 12:00AM GMT - private static final long FAKE_NOW_MS = 1546300800000L; - - @Before - public void setUp() { - AwVariationsSeedFetcher.setMinJobPeriodMillisForTesting(TimeUnit.DAYS.toMillis(1)); - } - - @Test - @SmallTest - public void testJobNotDelayedIfNotPreviouslyRun() { - long delayMs = AwVariationsSeedFetcher.computeJobDelay(FAKE_NOW_MS, 0); - Assert.assertEquals("Job should have no delay on first run", 0, delayMs); - } - - @Test - @SmallTest - public void testJobNotDelayedOutwideThrottleWindow() { - long oldRequestTimeMs = FAKE_NOW_MS - TimeUnit.DAYS.toMillis(4); - long delayMs = AwVariationsSeedFetcher.computeJobDelay(FAKE_NOW_MS, oldRequestTimeMs); - Assert.assertEquals("Job should have no delay when run after throttle window", 0, delayMs); - } - - @Test - @SmallTest - public void testJobDelayedIfRunWithinThrottleWindow() { - long recentRequestTimeMs = FAKE_NOW_MS - TimeUnit.HOURS.toMillis(8); - long delayMs = AwVariationsSeedFetcher.computeJobDelay(FAKE_NOW_MS, recentRequestTimeMs); - Assert.assertEquals("Job should be delayed if run within throttle window", - TimeUnit.HOURS.toMillis(16), delayMs); - } -}
diff --git a/android_webview/nonembedded/java/src/org/chromium/android_webview/services/AwVariationsSeedFetcher.java b/android_webview/nonembedded/java/src/org/chromium/android_webview/services/AwVariationsSeedFetcher.java index 9590edc..2e4d31c 100644 --- a/android_webview/nonembedded/java/src/org/chromium/android_webview/services/AwVariationsSeedFetcher.java +++ b/android_webview/nonembedded/java/src/org/chromium/android_webview/services/AwVariationsSeedFetcher.java
@@ -26,6 +26,7 @@ import org.chromium.components.version_info.VersionConstants; import java.io.IOException; +import java.util.Date; import java.util.concurrent.TimeUnit; /** @@ -41,14 +42,12 @@ */ @TargetApi(Build.VERSION_CODES.LOLLIPOP) // for JobService public class AwVariationsSeedFetcher extends JobService { - public static final int JOB_ID = TaskIds.WEBVIEW_VARIATIONS_SEED_FETCH_JOB_ID; - private static final long MIN_JOB_PERIOD_MILLIS = TimeUnit.DAYS.toMillis(1); - private static final String TAG = "AwVariationsSeedFet-"; + private static final int JOB_ID = TaskIds.WEBVIEW_VARIATIONS_SEED_FETCH_JOB_ID; + private static final long MIN_JOB_PERIOD_MILLIS = TimeUnit.DAYS.toMillis(1); private static JobScheduler sMockJobScheduler; private static VariationsSeedFetcher sMockDownloader; - private static long sMinJobPeriodMillis = MIN_JOB_PERIOD_MILLIS; private FetchTask mFetchTask; @@ -82,7 +81,7 @@ Context.JOB_SCHEDULER_SERVICE); } - public static void scheduleIfNeeded(long nowMs) { + public static void scheduleIfNeeded() { JobScheduler scheduler = getScheduler(); if (scheduler == null) return; @@ -91,30 +90,26 @@ return; } - long lastRequestTimeMs = VariationsUtils.getStampTime(); + // Check how long it's been since FetchTask last ran. + long lastRequestTime = VariationsUtils.getStampTime(); + if (lastRequestTime != 0) { + long now = (new Date()).getTime(); + if (now < lastRequestTime + MIN_JOB_PERIOD_MILLIS) { + return; + } + } + ComponentName thisComponent = new ComponentName( ContextUtils.getApplicationContext(), AwVariationsSeedFetcher.class); JobInfo job = new JobInfo.Builder(JOB_ID, thisComponent) - .setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY) - .setRequiresCharging(true) - .setMinimumLatency(computeJobDelay(nowMs, lastRequestTimeMs)) - .build(); + .setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY) + .setRequiresCharging(true) + .build(); if (scheduler.schedule(job) != JobScheduler.RESULT_SUCCESS) { Log.e(TAG, "Failed to schedule job"); } } - // Calculates the minimum amount of time to delay the job so we wait at least - // sMinJobPeriodMillis between requests. There should be no delay if the previous request - // occurred more than sMinJobPeriodMillis ago. - public static long computeJobDelay(long nowMs, long lastRequestTimeMs) { - if (lastRequestTimeMs == 0) { - return 0; - } - long timeSinceLastRequestMs = nowMs - lastRequestTimeMs; - return Math.max(0, sMinJobPeriodMillis - timeSinceLastRequestMs); - } - private class FetchTask extends BackgroundOnlyAsyncTask<Void> { private JobParameters mParams; @@ -185,8 +180,4 @@ sMockJobScheduler = scheduler; sMockDownloader = fetcher; } - - public static void setMinJobPeriodMillisForTesting(long minJobPeriodMillis) { - sMinJobPeriodMillis = minJobPeriodMillis; - } }
diff --git a/android_webview/nonembedded/java/src/org/chromium/android_webview/services/VariationsSeedHolder.java b/android_webview/nonembedded/java/src/org/chromium/android_webview/services/VariationsSeedHolder.java index 12cce3a..c7d9b1f 100644 --- a/android_webview/nonembedded/java/src/org/chromium/android_webview/services/VariationsSeedHolder.java +++ b/android_webview/nonembedded/java/src/org/chromium/android_webview/services/VariationsSeedHolder.java
@@ -17,7 +17,6 @@ import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; -import java.util.Date; /** * VariationsSeedHolder is a singleton which manages the local copy of the variations seed - both @@ -148,7 +147,7 @@ @VisibleForTesting public void scheduleFetchIfNeeded() { - AwVariationsSeedFetcher.scheduleIfNeeded(new Date().getTime()); + AwVariationsSeedFetcher.scheduleIfNeeded(); } // overridden by tests
diff --git a/android_webview/test/BUILD.gn b/android_webview/test/BUILD.gn index d076864..33ea364f 100644 --- a/android_webview/test/BUILD.gn +++ b/android_webview/test/BUILD.gn
@@ -190,7 +190,6 @@ "//services/device/public/java:geolocation_java_test_support", "//third_party/android_support_test_runner:rules_java", "//third_party/android_support_test_runner:runner_java", - "//third_party/hamcrest:hamcrest_java", "//third_party/junit", "//third_party/metrics_proto:metrics_proto_java", "//ui/android:ui_java", @@ -457,7 +456,6 @@ "../junit/src/org/chromium/android_webview/robolectric/FindAddressTest.java", "../junit/src/org/chromium/android_webview/robolectric/common/FlagOverrideHelperTest.java", "../junit/src/org/chromium/android_webview/robolectric/common/services/ServiceNamesTest.java", - "../junit/src/org/chromium/android_webview/robolectric/services/AwVariationsSeedFetcherTest.java", ] deps = [
diff --git a/ash/accelerators/accelerator_commands_unittest.cc b/ash/accelerators/accelerator_commands_unittest.cc index 4620d9cd..1bf90d0 100644 --- a/ash/accelerators/accelerator_commands_unittest.cc +++ b/ash/accelerators/accelerator_commands_unittest.cc
@@ -52,19 +52,19 @@ // When not in fullscreen, accelerators::ToggleMaximized toggles Maximized. EXPECT_FALSE(window_state->IsMaximized()); - accelerators::ToggleMaximized(); + ToggleMaximized(); EXPECT_TRUE(window_state->IsMaximized()); - accelerators::ToggleMaximized(); + ToggleMaximized(); EXPECT_FALSE(window_state->IsMaximized()); // When in fullscreen accelerators::ToggleMaximized gets out of fullscreen. EXPECT_FALSE(window_state->IsFullscreen()); - accelerators::ToggleFullscreen(); + ToggleFullscreen(); EXPECT_TRUE(window_state->IsFullscreen()); - accelerators::ToggleMaximized(); + ToggleMaximized(); EXPECT_FALSE(window_state->IsFullscreen()); EXPECT_FALSE(window_state->IsMaximized()); - accelerators::ToggleMaximized(); + ToggleMaximized(); EXPECT_FALSE(window_state->IsFullscreen()); EXPECT_TRUE(window_state->IsMaximized()); }
diff --git a/ash/accelerators/accelerator_confirmation_dialog.cc b/ash/accelerators/accelerator_confirmation_dialog.cc index 1899c456..5cd6253 100644 --- a/ash/accelerators/accelerator_confirmation_dialog.cc +++ b/ash/accelerators/accelerator_confirmation_dialog.cc
@@ -53,7 +53,7 @@ views::Widget* widget = CreateDialogWidget( this, nullptr, - Shell::GetContainer(ash::Shell::GetPrimaryRootWindow(), container_id)); + Shell::GetContainer(Shell::GetPrimaryRootWindow(), container_id)); widget->Show(); }
diff --git a/ash/accelerators/accelerator_controller_unittest.cc b/ash/accelerators/accelerator_controller_unittest.cc index c36336a7..41e58832 100644 --- a/ash/accelerators/accelerator_controller_unittest.cc +++ b/ash/accelerators/accelerator_controller_unittest.cc
@@ -614,7 +614,7 @@ TEST_F(AcceleratorControllerTest, RotateScreenInPhysicalTabletState) { display::test::DisplayManagerTestApi(display_manager()) .SetFirstDisplayAsInternalDisplay(); - ash::ShellTestApi().SetTabletModeEnabledForTest(true); + ShellTestApi().SetTabletModeEnabledForTest(true); auto* tablet_mode_controller = Shell::Get()->tablet_mode_controller(); auto* screen_orientation_controller = Shell::Get()->screen_orientation_controller(); @@ -633,7 +633,7 @@ // When the device is no longer used as a tablet, the original rotation will // be restored. - ash::ShellTestApi().SetTabletModeEnabledForTest(false); + ShellTestApi().SetTabletModeEnabledForTest(false); EXPECT_FALSE(tablet_mode_controller->is_in_tablet_physical_state()); EXPECT_EQ(OrientationLockType::kLandscapePrimary, screen_orientation_controller->GetCurrentOrientation()); @@ -648,7 +648,7 @@ TEST_F(AcceleratorControllerTest, RotateScreenWithWindowLockingOrientation) { display::test::DisplayManagerTestApi(display_manager()) .SetFirstDisplayAsInternalDisplay(); - ash::ShellTestApi().SetTabletModeEnabledForTest(true); + ShellTestApi().SetTabletModeEnabledForTest(true); auto* tablet_mode_controller = Shell::Get()->tablet_mode_controller(); auto* screen_orientation_controller = Shell::Get()->screen_orientation_controller(); @@ -1063,7 +1063,7 @@ ui::Accelerator(ui::VKEY_BROWSER_SEARCH, ui::EF_SHIFT_DOWN))); base::RunLoop().RunUntilIdle(); GetAppListTestHelper()->CheckVisibility(true); - GetAppListTestHelper()->CheckState(ash::AppListViewState::kFullscreenAllApps); + GetAppListTestHelper()->CheckState(AppListViewState::kFullscreenAllApps); histogram_tester.ExpectTotalCount(kAppListToggleMethodHistogram, ++toggle_count_total); histogram_tester.ExpectBucketCount(kAppListToggleMethodHistogram, @@ -1081,7 +1081,7 @@ ui::Accelerator(ui::VKEY_BROWSER_SEARCH, ui::EF_NONE))); base::RunLoop().RunUntilIdle(); GetAppListTestHelper()->CheckVisibility(true); - GetAppListTestHelper()->CheckState(ash::AppListViewState::kPeeking); + GetAppListTestHelper()->CheckState(AppListViewState::kPeeking); histogram_tester.ExpectTotalCount(kAppListToggleMethodHistogram, ++toggle_count_total); histogram_tester.ExpectBucketCount(kAppListToggleMethodHistogram, kSearchKey, @@ -1091,7 +1091,7 @@ ui::Accelerator(ui::VKEY_BROWSER_SEARCH, ui::EF_SHIFT_DOWN))); base::RunLoop().RunUntilIdle(); GetAppListTestHelper()->CheckVisibility(true); - GetAppListTestHelper()->CheckState(ash::AppListViewState::kFullscreenAllApps); + GetAppListTestHelper()->CheckState(AppListViewState::kFullscreenAllApps); histogram_tester.ExpectTotalCount(kAppListToggleMethodHistogram, ++toggle_count_total); histogram_tester.ExpectBucketCount(kAppListToggleMethodHistogram, @@ -1109,7 +1109,7 @@ ui::Accelerator(ui::VKEY_BROWSER_SEARCH, ui::EF_NONE))); base::RunLoop().RunUntilIdle(); GetAppListTestHelper()->CheckVisibility(true); - GetAppListTestHelper()->CheckState(ash::AppListViewState::kPeeking); + GetAppListTestHelper()->CheckState(AppListViewState::kPeeking); histogram_tester.ExpectTotalCount(kAppListToggleMethodHistogram, ++toggle_count_total); histogram_tester.ExpectBucketCount(kAppListToggleMethodHistogram, kSearchKey, @@ -1119,13 +1119,13 @@ generator->ReleaseKey(ui::VKEY_0, ui::EF_NONE); base::RunLoop().RunUntilIdle(); GetAppListTestHelper()->CheckVisibility(true); - GetAppListTestHelper()->CheckState(ash::AppListViewState::kHalf); + GetAppListTestHelper()->CheckState(AppListViewState::kHalf); // Shift+VKEY_BROWSER_SEARCH transitions to FULLSCREEN_SEARCH. EXPECT_TRUE(ProcessInController( ui::Accelerator(ui::VKEY_BROWSER_SEARCH, ui::EF_SHIFT_DOWN))); base::RunLoop().RunUntilIdle(); GetAppListTestHelper()->CheckVisibility(true); - GetAppListTestHelper()->CheckState(ash::AppListViewState::kFullscreenSearch); + GetAppListTestHelper()->CheckState(AppListViewState::kFullscreenSearch); histogram_tester.ExpectTotalCount(kAppListToggleMethodHistogram, ++toggle_count_total); histogram_tester.ExpectBucketCount(kAppListToggleMethodHistogram,
diff --git a/ash/accelerators/magnifier_key_scroller.cc b/ash/accelerators/magnifier_key_scroller.cc index 7f01563..8c4dab4 100644 --- a/ash/accelerators/magnifier_key_scroller.cc +++ b/ash/accelerators/magnifier_key_scroller.cc
@@ -25,7 +25,7 @@ switches::kAshEnableMagnifierKeyScroller); return (magnifier_key_scroller_enabled || has_switch) && - ash::Shell::Get()->magnification_controller()->IsEnabled(); + Shell::Get()->magnification_controller()->IsEnabled(); } // static @@ -42,7 +42,7 @@ } bool MagnifierKeyScroller::ShouldProcessEvent(const ui::KeyEvent* event) const { - return IsEnabled() && ash::keyboard_util::IsArrowKeyCode(event->key_code()); + return IsEnabled() && keyboard_util::IsArrowKeyCode(event->key_code()); } bool MagnifierKeyScroller::IsStartEvent(const ui::KeyEvent* event) const {
diff --git a/ash/accelerometer/accelerometer_reader.cc b/ash/accelerometer/accelerometer_reader.cc index 00c5acd..b784ea33 100644 --- a/ash/accelerometer/accelerometer_reader.cc +++ b/ash/accelerometer/accelerometer_reader.cc
@@ -153,7 +153,7 @@ // configuration, and reads the data. Upon a successful read it will notify // all observers. class AccelerometerFileReader - : public ash::TabletModeObserver, + : public TabletModeObserver, public base::RefCountedThreadSafe<AccelerometerFileReader> { public: AccelerometerFileReader();
diff --git a/ash/accessibility/accessibility_controller_unittest.cc b/ash/accessibility/accessibility_controller_unittest.cc index 9c4551b2..fcab59d 100644 --- a/ash/accessibility/accessibility_controller_unittest.cc +++ b/ash/accessibility/accessibility_controller_unittest.cc
@@ -989,15 +989,15 @@ controller->AddObserver(&observer); controller->SetSelectToSpeakState( - ash::SelectToSpeakState::kSelectToSpeakStateSelecting); + SelectToSpeakState::kSelectToSpeakStateSelecting); EXPECT_EQ(controller->GetSelectToSpeakState(), - ash::SelectToSpeakState::kSelectToSpeakStateSelecting); + SelectToSpeakState::kSelectToSpeakStateSelecting); EXPECT_EQ(observer.status_changed_count_, 1); controller->SetSelectToSpeakState( - ash::SelectToSpeakState::kSelectToSpeakStateSpeaking); + SelectToSpeakState::kSelectToSpeakStateSpeaking); EXPECT_EQ(controller->GetSelectToSpeakState(), - ash::SelectToSpeakState::kSelectToSpeakStateSpeaking); + SelectToSpeakState::kSelectToSpeakStateSpeaking); EXPECT_EQ(observer.status_changed_count_, 2); controller->RemoveObserver(&observer);
diff --git a/ash/accessibility/accessibility_highlight_controller_unittest.cc b/ash/accessibility/accessibility_highlight_controller_unittest.cc index b38b8706..4bf3a19 100644 --- a/ash/accessibility/accessibility_highlight_controller_unittest.cc +++ b/ash/accessibility/accessibility_highlight_controller_unittest.cc
@@ -105,7 +105,7 @@ // Keep trying until we get the correct size butmap and // the first pixel is not transparent. while (true) { - aura::Window* window = ash::Shell::GetPrimaryRootWindow(); + aura::Window* window = Shell::GetPrimaryRootWindow(); base::RunLoop run_loop; ui::GrabWindowSnapshotAndScaleAsync( window, bounds, bounds.size(), @@ -197,7 +197,7 @@ // and AccessibilityFocusRingController. TEST_F(AccessibilityHighlightControllerTest, CursorWorksOnMultipleDisplays) { UpdateDisplay("400x400,500x500"); - aura::Window::Windows root_windows = ash::Shell::Get()->GetAllRootWindows(); + aura::Window::Windows root_windows = Shell::Get()->GetAllRootWindows(); ASSERT_EQ(2u, root_windows.size()); AccessibilityHighlightController highlight_controller;
diff --git a/ash/accessibility/accessibility_panel_layout_manager.h b/ash/accessibility/accessibility_panel_layout_manager.h index c2281297..dc72ebcdf 100644 --- a/ash/accessibility/accessibility_panel_layout_manager.h +++ b/ash/accessibility/accessibility_panel_layout_manager.h
@@ -29,7 +29,7 @@ : public aura::LayoutManager, public display::DisplayObserver, public ::wm::ActivationChangeObserver, - public ash::ShellObserver { + public ShellObserver { public: // Height of the panel in DIPs. Public for test. static constexpr int kDefaultPanelHeight = 35;
diff --git a/ash/ambient/model/photo_model.h b/ash/ambient/model/photo_model.h index 54b3aca..7a8d5b8f 100644 --- a/ash/ambient/model/photo_model.h +++ b/ash/ambient/model/photo_model.h
@@ -56,7 +56,7 @@ int buffer_length_for_testing_ = -1; - base::ObserverList<ash::PhotoModelObserver> observers_; + base::ObserverList<PhotoModelObserver> observers_; DISALLOW_COPY_AND_ASSIGN(PhotoModel); };
diff --git a/ash/ambient/ui/ambient_assistant_container_view.cc b/ash/ambient/ui/ambient_assistant_container_view.cc index cba7a89..a2d6904 100644 --- a/ash/ambient/ui/ambient_assistant_container_view.cc +++ b/ash/ambient/ui/ambient_assistant_container_view.cc
@@ -98,7 +98,7 @@ std::make_unique<views::Label>(GetGreetingMessage(active_user_session))); greeting_label_->SetEnabledColor(kTextColorSecondary); greeting_label_->SetFontList( - ash::assistant::ui::GetDefaultFontList() + assistant::ui::GetDefaultFontList() .DeriveWithSizeDelta(8) .DeriveWithWeight(gfx::Font::Weight::NORMAL)); greeting_label_->SetHorizontalAlignment(
diff --git a/ash/app_list/app_list_controller_impl.cc b/ash/app_list/app_list_controller_impl.cc index 3fd093a..d7ddeda 100644 --- a/ash/app_list/app_list_controller_impl.cc +++ b/ash/app_list/app_list_controller_impl.cc
@@ -516,12 +516,10 @@ // Hide app list UI initially to prevent app list from flashing in background // while the initial app window is being shown. - if (!last_target_visible_) { - presenter_.GetView()->SetVisible(false); - presenter_.GetView()->search_box_view()->SetVisible(false); - } else { + if (!last_target_visible_) + presenter_.SetViewVisibility(false); + else OnVisibilityChanged(true, last_visible_display_id_); - } } void AppListControllerImpl::OnAppListItemWillBeDeleted(AppListItem* item) { @@ -784,6 +782,11 @@ if (!IsShowingEmbeddedAssistantUI()) presenter_.ShowEmbeddedAssistantUI(true); + + // Make sure that app list views are visible - they might get hidden + // during session startup, and the app list visibility might not have yet + // changed to visible by this point. + presenter_.SetViewVisibility(true); break; case AssistantVisibility::kHidden: NOTREACHED(); @@ -1494,10 +1497,8 @@ presenter_.GetView()->SelectInitialAppsPage(); } - if (real_target_visibility && presenter_.GetView()) { - presenter_.GetView()->SetVisible(true); - presenter_.GetView()->search_box_view()->SetVisible(true); - } + if (real_target_visibility && presenter_.GetView()) + presenter_.SetViewVisibility(true); if (client_) client_->OnAppListVisibilityWillChange(real_target_visibility);
diff --git a/ash/app_list/app_list_controller_impl_unittest.cc b/ash/app_list/app_list_controller_impl_unittest.cc index 368f24f..deac30b 100644 --- a/ash/app_list/app_list_controller_impl_unittest.cc +++ b/ash/app_list/app_list_controller_impl_unittest.cc
@@ -481,9 +481,9 @@ void SetUp() override { // The feature verified by this test is only enabled if drag from shelf to // home or overview is disabled. - scoped_features_.InitWithFeatures( - {}, {ash::features::kDragFromShelfToHomeOrOverview, - chromeos::features::kShelfHotseat}); + scoped_features_.InitWithFeatures({}, + {features::kDragFromShelfToHomeOrOverview, + chromeos::features::kShelfHotseat}); AppListControllerImplTest::SetUp(); } @@ -1040,9 +1040,9 @@ void SetUp() override { // The feature verified by this test is only enabled if drag from shelf to // home or overview is disabled. - scoped_features_.InitWithFeatures( - {}, {ash::features::kDragFromShelfToHomeOrOverview, - chromeos::features::kShelfHotseat}); + scoped_features_.InitWithFeatures({}, + {features::kDragFromShelfToHomeOrOverview, + chromeos::features::kShelfHotseat}); AppListControllerImplMetricsTest::SetUp(); }
diff --git a/ash/app_list/app_list_presenter_delegate_impl.cc b/ash/app_list/app_list_presenter_delegate_impl.cc index 61f7438a..43b3ec74 100644 --- a/ash/app_list/app_list_presenter_delegate_impl.cc +++ b/ash/app_list/app_list_presenter_delegate_impl.cc
@@ -225,13 +225,14 @@ return; } - // If the event happened on the home button, it'll get handled by the + // If the event happened on the home button's widget, it'll get handled by the // button. Shelf* shelf = Shelf::ForWindow(target); HomeButton* home_button = shelf->shelf_widget()->GetHomeButton(); if (home_button && home_button->GetWidget() && target == home_button->GetWidget()->GetNativeWindow() && - home_button->bounds().Contains(event->location())) { + home_button->GetWidget()->GetWindowBoundsInScreen().Contains( + event->root_location())) { return; }
diff --git a/ash/app_list/app_list_presenter_impl.cc b/ash/app_list/app_list_presenter_impl.cc index 4593ba9..9899b412 100644 --- a/ash/app_list/app_list_presenter_impl.cc +++ b/ash/app_list/app_list_presenter_impl.cc
@@ -11,6 +11,7 @@ #include "ash/app_list/views/app_list_main_view.h" #include "ash/app_list/views/apps_container_view.h" #include "ash/app_list/views/contents_view.h" +#include "ash/app_list/views/search_box_view.h" #include "ash/public/cpp/app_list/app_list_features.h" #include "ash/public/cpp/app_list/app_list_switches.h" #include "ash/public/cpp/app_list/app_list_types.h" @@ -190,6 +191,13 @@ base::RecordAction(base::UserMetricsAction("Launcher_Dismiss")); } +void AppListPresenterImpl::SetViewVisibility(bool visible) { + if (!view_) + return; + view_->SetVisible(visible); + view_->search_box_view()->SetVisible(visible); +} + bool AppListPresenterImpl::HandleCloseOpenFolder() { return is_target_visibility_show_ && view_ && view_->HandleCloseOpenFolder(); }
diff --git a/ash/app_list/app_list_presenter_impl.h b/ash/app_list/app_list_presenter_impl.h index 62c00d0..9fd560c9 100644 --- a/ash/app_list/app_list_presenter_impl.h +++ b/ash/app_list/app_list_presenter_impl.h
@@ -65,6 +65,10 @@ // one AppListShowSource or focusing out side of the launcher. void Dismiss(base::TimeTicks event_time_stamp); + // Sets the app list view visibility (without updating the app list window + // visibility). No-op if the app list view does not exist. + void SetViewVisibility(bool visible); + // If app list has an opened folder, close it. Returns whether an opened // folder was closed. bool HandleCloseOpenFolder();
diff --git a/ash/assistant/assistant_screen_context_controller.h b/ash/assistant/assistant_screen_context_controller.h index 5b36c21..74d85f7 100644 --- a/ash/assistant/assistant_screen_context_controller.h +++ b/ash/assistant/assistant_screen_context_controller.h
@@ -28,7 +28,7 @@ class AssistantScreenContextModelObserver; class ASH_EXPORT AssistantScreenContextController - : public ash::mojom::AssistantScreenContextController, + : public mojom::AssistantScreenContextController, public AssistantControllerObserver, public AssistantUiModelObserver { public:
diff --git a/ash/assistant/assistant_screen_context_controller_unittest.cc b/ash/assistant/assistant_screen_context_controller_unittest.cc index 2223c092..e9653642 100644 --- a/ash/assistant/assistant_screen_context_controller_unittest.cc +++ b/ash/assistant/assistant_screen_context_controller_unittest.cc
@@ -52,7 +52,7 @@ DCHECK(controller_); } - ash::AssistantScreenContextController* controller() { return controller_; } + AssistantScreenContextController* controller() { return controller_; } private: AssistantScreenContextController* controller_ = nullptr;
diff --git a/ash/assistant/test/assistant_ash_test_base.cc b/ash/assistant/test/assistant_ash_test_base.cc index 3cdd5b1..a62871e 100644 --- a/ash/assistant/test/assistant_ash_test_base.cc +++ b/ash/assistant/test/assistant_ash_test_base.cc
@@ -116,7 +116,7 @@ } void AssistantAshTestBase::CloseLauncher() { - ash::Shell::Get()->app_list_controller()->ViewClosing(); + Shell::Get()->app_list_controller()->ViewClosing(); } void AssistantAshTestBase::SetTabletMode(bool enable) {
diff --git a/ash/assistant/ui/main_stage/animated_container_view.cc b/ash/assistant/ui/main_stage/animated_container_view.cc index 034e2c3..37f1e92 100644 --- a/ash/assistant/ui/main_stage/animated_container_view.cc +++ b/ash/assistant/ui/main_stage/animated_container_view.cc
@@ -58,6 +58,7 @@ void AnimatedContainerView::OnResponseCleared() { RemoveAllViews(); + queued_response_ = nullptr; } void AnimatedContainerView::RemoveAllViews() { @@ -137,13 +138,13 @@ void AnimatedContainerView::ChangeResponse( const scoped_refptr<const AssistantResponse>& response) { - // We may have to pend the response while we animate the previous response off - // stage. We use a shared pointer to ensure that any views we add to the view - // hierarchy can be removed before the underlying views are destroyed. - pending_response_ = response; + // We may have to postpone the response while we animate the previous response + // off stage. We use a shared pointer to ensure that any views we add to the + // view hierarchy can be removed before the underlying views are destroyed. + queued_response_ = response; // If we are currently fading out the old content, don't interrupt it. - // When the fading out is completed, it will detect we've got a pending + // When the fading out is completed, it will detect we've got a queued // response and animate it in. if (fade_out_in_progress_) return; @@ -151,7 +152,7 @@ // If we don't have any pre-existing content, there is nothing to animate off // stage so we can proceed to add the new response. if (content_view()->children().empty()) { - AddResponse(std::move(pending_response_)); + AddResponse(std::move(queued_response_)); return; } @@ -242,10 +243,10 @@ // clearing of their views and managed resources. weak_ptr->RemoveAllViews(); - // It is safe to add our pending response, if one exists, to the view + // It is safe to add our queued response, if one exists, to the view // hierarchy now that we've cleared the previous response from the stage. - if (weak_ptr->pending_response_) - weak_ptr->AddResponse(std::move(weak_ptr->pending_response_)); + if (weak_ptr->queued_response_) + weak_ptr->AddResponse(std::move(weak_ptr->queued_response_)); // We return true to delete our observer. return true; @@ -268,8 +269,8 @@ // If the new response arrived while the fade-out was in progress, we will // start handling it now. - if (weak_ptr->pending_response_) - weak_ptr->ChangeResponse(std::move(weak_ptr->pending_response_)); + if (weak_ptr->queued_response_) + weak_ptr->ChangeResponse(std::move(weak_ptr->queued_response_)); // We return true to delete our observer. return true;
diff --git a/ash/assistant/ui/main_stage/animated_container_view.h b/ash/assistant/ui/main_stage/animated_container_view.h index 4156a96..e7f628c4 100644 --- a/ash/assistant/ui/main_stage/animated_container_view.h +++ b/ash/assistant/ui/main_stage/animated_container_view.h
@@ -130,11 +130,11 @@ bool fade_out_in_progress_ = false; // Shared pointers to the response that is currently on stage as well as the - // pending response to be presented following the former's animated exit. We + // queued response to be presented following the former's animated exit. We // use shared pointers to ensure that underlying views are not destroyed // before we have an opportunity to remove their associated views. scoped_refptr<const AssistantResponse> response_; - scoped_refptr<const AssistantResponse> pending_response_; + scoped_refptr<const AssistantResponse> queued_response_; base::WeakPtrFactory<AnimatedContainerView> weak_factory_{this};
diff --git a/ash/assistant/ui/main_stage/assistant_card_element_view.cc b/ash/assistant/ui/main_stage/assistant_card_element_view.cc index b1305bfd..e0e64da 100644 --- a/ash/assistant/ui/main_stage/assistant_card_element_view.cc +++ b/ash/assistant/ui/main_stage/assistant_card_element_view.cc
@@ -95,7 +95,7 @@ // vertically. As such, we need to prevent the Assistant card window from // receiving events it doesn't need. It needs mouse click events for // handling links. - window->SetProperty(ash::assistant::ui::kOnlyAllowMouseClickEvents, true); + window->SetProperty(assistant::ui::kOnlyAllowMouseClickEvents, true); } void AssistantCardElementView::ChildPreferredSizeChanged(views::View* child) {
diff --git a/ash/assistant/ui/main_stage/assistant_query_view.cc b/ash/assistant/ui/main_stage/assistant_query_view.cc index ce5e8d4..be4b7732 100644 --- a/ash/assistant/ui/main_stage/assistant_query_view.cc +++ b/ash/assistant/ui/main_stage/assistant_query_view.cc
@@ -77,7 +77,7 @@ views::BoxLayout::MainAxisAlignment::kCenter); layout_manager->set_cross_axis_alignment( - views::BoxLayout::CrossAxisAlignment::kCenter); + views::BoxLayout::CrossAxisAlignment::kStretch); // Label. label_ = new views::StyledLabel(base::string16(), /*listener=*/nullptr); @@ -139,8 +139,6 @@ CreateStyleInfo(kTextColorSecondary)); } } - label_->SizeToFit(width()); - PreferredSizeChanged(); } } // namespace ash
diff --git a/ash/assistant/ui/main_stage/suggestion_chip_view.cc b/ash/assistant/ui/main_stage/suggestion_chip_view.cc index 8783197..ed5a85d 100644 --- a/ash/assistant/ui/main_stage/suggestion_chip_view.cc +++ b/ash/assistant/ui/main_stage/suggestion_chip_view.cc
@@ -106,7 +106,7 @@ text_view_->SetEnabledColor(kTextColor); text_view_->SetSubpixelRenderingEnabled(false); text_view_->SetFontList( - ash::assistant::ui::GetDefaultFontList().DeriveWithSizeDelta(1)); + assistant::ui::GetDefaultFontList().DeriveWithSizeDelta(1)); SetText(params.text); AddChildView(text_view_); }
diff --git a/ash/assistant/ui/main_stage/ui_element_container_view.cc b/ash/assistant/ui/main_stage/ui_element_container_view.cc index db2686a..a0b206e 100644 --- a/ash/assistant/ui/main_stage/ui_element_container_view.cc +++ b/ash/assistant/ui/main_stage/ui_element_container_view.cc
@@ -183,6 +183,7 @@ // We don't read when there is TTS to avoid speaking over the server response. const AssistantResponse* response = delegate()->GetInteractionModel()->response(); + DCHECK(response); if (!response->has_tts()) NotifyAccessibilityEvent(ax::mojom::Event::kAlert, true); }
diff --git a/ash/assistant/ui/proactive_suggestions_simple_view.cc b/ash/assistant/ui/proactive_suggestions_simple_view.cc index fd51ca0..2ee03f0 100644 --- a/ash/assistant/ui/proactive_suggestions_simple_view.cc +++ b/ash/assistant/ui/proactive_suggestions_simple_view.cc
@@ -94,7 +94,7 @@ // Assistant icon. views::ImageView* assistant_icon = new views::ImageView(); assistant_icon->SetImage(gfx::CreateVectorIcon( - ash::kAssistantIcon, kAssistantIconSizeDip, gfx::kPlaceholderColor)); + kAssistantIcon, kAssistantIconSizeDip, gfx::kPlaceholderColor)); assistant_icon->SetPreferredSize( gfx::Size(kAssistantIconSizeDip, kAssistantIconSizeDip)); AddChildView(assistant_icon);
diff --git a/ash/autoclick/autoclick_controller.cc b/ash/autoclick/autoclick_controller.cc index 34e2a34..88defea 100644 --- a/ash/autoclick/autoclick_controller.cc +++ b/ash/autoclick/autoclick_controller.cc
@@ -514,10 +514,8 @@ void AutoclickController::InitializeScrollLocation() { // Sets the scroll location to the center of the root window. - scroll_location_ = ash::Shell::Get() - ->GetPrimaryRootWindow() - ->GetBoundsInScreen() - .CenterPoint(); + scroll_location_ = + Shell::Get()->GetPrimaryRootWindow()->GetBoundsInScreen().CenterPoint(); is_initial_scroll_location_ = true; Shell::Get() ->accessibility_controller()
diff --git a/ash/autotest_private_api_utils.cc b/ash/autotest_private_api_utils.cc index 0ae0ece..141b681 100644 --- a/ash/autotest_private_api_utils.cc +++ b/ash/autotest_private_api_utils.cc
@@ -82,7 +82,7 @@ std::vector<aura::Window*> GetAppWindowList() { ScopedSkipUserSessionBlockedCheck skip_session_blocked; return Shell::Get()->mru_window_tracker()->BuildWindowForCycleWithPipList( - ash::kAllDesks); + kAllDesks); } bool WaitForLauncherState(AppListViewState target_state, @@ -110,7 +110,7 @@ // because a) home launcher behavior is deterministic, b) correctly // deteching if the home launcher is animating to visibile/invisible require // some refactoring. - bool target_visible = target_state != ash::AppListViewState::kClosed; + bool target_visible = target_state != AppListViewState::kClosed; new HomeLauncherStateWaiter(target_visible, std::move(closure)); } else { // Don't wait if the launcher is already in the target state and not @@ -121,7 +121,7 @@ app_list_view && app_list_view->GetWidget()->GetLayer()->GetAnimator()->is_animating(); bool at_target_state = - (!app_list_view && target_state == ash::AppListViewState::kClosed) || + (!app_list_view && target_state == AppListViewState::kClosed) || (app_list_view && app_list_view->app_list_state() == target_state); if (at_target_state && !animating) { std::move(closure).Run();
diff --git a/ash/detachable_base/detachable_base_notification_controller.cc b/ash/detachable_base/detachable_base_notification_controller.cc index 994eaae..58acbca 100644 --- a/ash/detachable_base/detachable_base_notification_controller.cc +++ b/ash/detachable_base/detachable_base_notification_controller.cc
@@ -63,7 +63,7 @@ IDS_ASH_DETACHABLE_BASE_NOTIFICATION_UPDATE_NEEDED_MESSAGE); std::unique_ptr<message_center::Notification> notification = - ash::CreateSystemNotification( + CreateSystemNotification( message_center::NOTIFICATION_TYPE_SIMPLE, kBaseRequiresUpdateNotificationId, title, message, base::string16(), GURL(), @@ -139,7 +139,7 @@ IDS_ASH_DETACHABLE_BASE_NOTIFICATION_DEVICE_CHANGED_MESSAGE); std::unique_ptr<message_center::Notification> notification = - ash::CreateSystemNotification( + CreateSystemNotification( message_center::NOTIFICATION_TYPE_SIMPLE, kBaseChangedNotificationId, title, message, base::string16(), GURL(), message_center::NotifierId(
diff --git a/ash/display/cros_display_config.cc b/ash/display/cros_display_config.cc index 349f84a..9e5bb2b 100644 --- a/ash/display/cros_display_config.cc +++ b/ash/display/cros_display_config.cc
@@ -903,7 +903,7 @@ return; } if (!touch_calibrator_) - touch_calibrator_ = std::make_unique<ash::TouchCalibratorController>(); + touch_calibrator_ = std::make_unique<TouchCalibratorController>(); if (op == mojom::DisplayConfigOperation::kShowNative) { // For native calibration, |callback| is not run until calibration // completes. @@ -927,8 +927,8 @@ } if (op == mojom::DisplayConfigOperation::kReset) { - ash::Shell::Get()->display_manager()->ClearTouchCalibrationData( - display.id(), base::nullopt); + Shell::Get()->display_manager()->ClearTouchCalibrationData(display.id(), + base::nullopt); std::move(callback).Run(mojom::DisplayConfigResult::kSuccess); return; } @@ -954,7 +954,7 @@ return; } - ash::Shell::Get()->touch_transformer_controller()->SetForCalibration(false); + Shell::Get()->touch_transformer_controller()->SetForCalibration(false); display::TouchCalibrationData::CalibrationPointPairQuad calibration_points; calibration_points[0] = GetCalibrationPair(*calibration->pairs[0]);
diff --git a/ash/display/cursor_window_controller.h b/ash/display/cursor_window_controller.h index 9b1c6ce..ddfaac8 100644 --- a/ash/display/cursor_window_controller.h +++ b/ash/display/cursor_window_controller.h
@@ -102,7 +102,7 @@ ui::CursorSize cursor_size_ = ui::CursorSize::kNormal; gfx::Point hot_point_; - int large_cursor_size_in_dip_ = ash::kDefaultLargeCursorSize; + int large_cursor_size_in_dip_ = kDefaultLargeCursorSize; // The display on which the cursor is drawn. // For mirroring mode, the display is always the primary display.
diff --git a/ash/display/display_animator.cc b/ash/display/display_animator.cc index 229cc141..91a06cb8 100644 --- a/ash/display/display_animator.cc +++ b/ash/display/display_animator.cc
@@ -120,9 +120,9 @@ std::make_unique<ui::Layer>(ui::LAYER_SOLID_COLOR); hiding_layer->SetColor(SK_ColorBLACK); hiding_layer->SetBounds(root_window->bounds()); - ui::Layer* parent = ash::Shell::GetContainer( - root_window, ash::kShellWindowId_OverlayContainer) - ->layer(); + ui::Layer* parent = + Shell::GetContainer(root_window, kShellWindowId_OverlayContainer) + ->layer(); parent->Add(hiding_layer.get()); hiding_layer->SetOpacity(0.0); @@ -173,9 +173,9 @@ hiding_layer = new ui::Layer(ui::LAYER_SOLID_COLOR); hiding_layer->SetColor(SK_ColorBLACK); hiding_layer->SetBounds(root_window->bounds()); - ui::Layer* parent = ash::Shell::GetContainer( - root_window, ash::kShellWindowId_OverlayContainer) - ->layer(); + ui::Layer* parent = + Shell::GetContainer(root_window, kShellWindowId_OverlayContainer) + ->layer(); parent->Add(hiding_layer); hiding_layer->SetOpacity(1.0f); hiding_layer->SetVisible(true);
diff --git a/ash/display/display_manager_unittest.cc b/ash/display/display_manager_unittest.cc index 7e89e708..c016d3d 100644 --- a/ash/display/display_manager_unittest.cc +++ b/ash/display/display_manager_unittest.cc
@@ -1097,7 +1097,7 @@ updated_display_info2.GetOverscanInsetsInPixel().ToString()); // Make sure switching primary display applies the overscan offset only once. - ash::Shell::Get()->window_tree_host_manager()->SetPrimaryDisplayId( + Shell::Get()->window_tree_host_manager()->SetPrimaryDisplayId( display_manager()->GetSecondaryDisplay().id()); EXPECT_EQ("-500,0 500x500", display_manager()->GetSecondaryDisplay().bounds().ToString()); @@ -1699,7 +1699,7 @@ EXPECT_EQ(1U, display_manager()->GetNumDisplays()); EXPECT_EQ("1,1 100x100", GetDisplayInfoForId(10).bounds_in_native().ToString()); - EXPECT_EQ("100x100", ash::Shell::GetPrimaryRootWindow() + EXPECT_EQ("100x100", Shell::GetPrimaryRootWindow() ->GetHost() ->GetBoundsInPixels() .size() @@ -1725,7 +1725,7 @@ GetDisplayForId(internal_display_id).bounds().ToString()); EXPECT_EQ("500,0 100x100", GetDisplayForId(10).bounds().ToString()); - ash::Shell::Get()->window_tree_host_manager()->SetPrimaryDisplayId( + Shell::Get()->window_tree_host_manager()->SetPrimaryDisplayId( secondary_display_info.id()); EXPECT_EQ("-500,0 500x500", GetDisplayForId(internal_display_id).bounds().ToString());
diff --git a/ash/display/display_prefs_unittest.cc b/ash/display/display_prefs_unittest.cc index 5d8a90f..c0f417a 100644 --- a/ash/display/display_prefs_unittest.cc +++ b/ash/display/display_prefs_unittest.cc
@@ -210,7 +210,7 @@ } display::Display::Rotation GetRotation() { - return ash::Shell::Get() + return Shell::Get() ->display_manager() ->GetDisplayInfo(display::Display::InternalDisplayId()) .GetRotation(display::Display::RotationSource::ACCELEROMETER); @@ -227,7 +227,7 @@ std::string GetRegisteredDisplayPlacementStr( const display::DisplayIdList& list) { - return ash::Shell::Get() + return Shell::Get() ->display_manager() ->layout_store() ->GetRegisteredDisplayLayout(list) @@ -236,10 +236,10 @@ } chromeos::DisplayPowerState GetRequestedPowerState() const { - return ash::Shell::Get()->display_configurator()->GetRequestedPowerState(); + return Shell::Get()->display_configurator()->GetRequestedPowerState(); } PrefService* local_state() { return &local_state_; } - DisplayPrefs* display_prefs() { return ash::Shell::Get()->display_prefs(); } + DisplayPrefs* display_prefs() { return Shell::Get()->display_prefs(); } private: std::unique_ptr<WindowTreeHostManager::Observer> observer_; @@ -277,9 +277,7 @@ // requested_power_state_ should be chromeos::DISPLAY_POWER_ALL_ON at boot const base::Optional<chromeos::DisplayPowerState> requested_power_state = - ash::Shell::Get() - ->display_configurator() - ->GetRequestedPowerStateForTest(); + Shell::Get()->display_configurator()->GetRequestedPowerStateForTest(); ASSERT_NE(base::nullopt, requested_power_state); EXPECT_EQ(chromeos::DISPLAY_POWER_ALL_ON, *requested_power_state); // DisplayPowerState should be ignored at boot. @@ -303,8 +301,8 @@ } TEST_F(DisplayPrefsTest, BasicStores) { - ash::WindowTreeHostManager* window_tree_host_manager = - ash::Shell::Get()->window_tree_host_manager(); + WindowTreeHostManager* window_tree_host_manager = + Shell::Get()->window_tree_host_manager(); int64_t id1 = display::Screen::GetScreen()->GetPrimaryDisplay().id(); // For each configuration change, we store mirror info only for external @@ -523,7 +521,7 @@ EXPECT_EQ(base::NumberToString(id2), primary_id_str); display_manager()->SetLayoutForCurrentDisplays( - display::test::CreateDisplayLayout(ash::Shell::Get()->display_manager(), + display::test::CreateDisplayLayout(Shell::Get()->display_manager(), display::DisplayPlacement::BOTTOM, 20)); @@ -619,14 +617,13 @@ int64_t id = display::Screen::GetScreen()->GetPrimaryDisplay().id(); // Set display's resolution in single display. It creates the notification and // display preferences should not stored meanwhile. - ash::Shell* shell = ash::Shell::Get(); + Shell* shell = Shell::Get(); display::ManagedDisplayMode old_mode(gfx::Size(400, 300)); display::ManagedDisplayMode new_mode(gfx::Size(500, 400)); EXPECT_TRUE(shell->resolution_notification_controller() ->PrepareNotificationAndSetDisplayMode( - id, old_mode, new_mode, - ash::mojom::DisplayConfigSource::kUser, + id, old_mode, new_mode, mojom::DisplayConfigSource::kUser, base::OnceClosure())); UpdateDisplay("500x400#500x400|400x300|300x200"); @@ -643,7 +640,7 @@ base::RunLoop().RunUntilIdle(); // The specified resolution will be stored by SetDisplayMode. - ash::Shell::Get()->display_manager()->SetDisplayMode( + Shell::Get()->display_manager()->SetDisplayMode( id, display::ManagedDisplayMode(gfx::Size(300, 200), 60.0f, false, true)); UpdateDisplay("300x200#500x400|400x300|300x200"); @@ -724,15 +721,15 @@ } TEST_F(DisplayPrefsTestGuest, DisplayPrefsTestGuest) { - ash::WindowTreeHostManager* window_tree_host_manager = - ash::Shell::Get()->window_tree_host_manager(); + WindowTreeHostManager* window_tree_host_manager = + Shell::Get()->window_tree_host_manager(); UpdateDisplay("200x200*2,200x200"); LoggedInAsGuest(); int64_t id1 = display::Screen::GetScreen()->GetPrimaryDisplay().id(); display::test::ScopedSetInternalDisplayId set_internal( - ash::Shell::Get()->display_manager(), id1); + Shell::Get()->display_manager(), id1); int64_t id2 = display_manager()->GetSecondaryDisplay().id(); display_manager()->SetLayoutForCurrentDisplays( display::test::CreateDisplayLayout(display_manager(), @@ -833,7 +830,7 @@ // Tests that display configuration changes caused by TabletModeController // are not saved. TEST_F(DisplayPrefsTest, DontSaveTabletModeControllerRotations) { - ash::Shell* shell = ash::Shell::Get(); + Shell* shell = Shell::Get(); display::Display::SetInternalDisplayId( display::Screen::GetScreen()->GetPrimaryDisplay().id()); LoggedInAsUser(); @@ -852,8 +849,7 @@ -base::kMeanGravityFloat); update->Set(ACCELEROMETER_SOURCE_SCREEN, false, 0.0f, base::kMeanGravityFloat, 0.0f); - ash::TabletModeController* controller = - ash::Shell::Get()->tablet_mode_controller(); + TabletModeController* controller = Shell::Get()->tablet_mode_controller(); controller->OnAccelerometerUpdated(update); EXPECT_TRUE(controller->InTabletMode()); @@ -1003,8 +999,8 @@ -base::kMeanGravityFloat); update->Set(ACCELEROMETER_SOURCE_SCREEN, false, 0.0f, base::kMeanGravityFloat, 0.0f); - ash::TabletModeController* tablet_mode_controller = - ash::Shell::Get()->tablet_mode_controller(); + TabletModeController* tablet_mode_controller = + Shell::Get()->tablet_mode_controller(); tablet_mode_controller->OnAccelerometerUpdated(update); EXPECT_TRUE(tablet_mode_controller->InTabletMode()); bool screen_orientation_rotation_lock = IsRotationLocked(); @@ -1020,7 +1016,7 @@ display::Screen::GetScreen()->GetPrimaryDisplay().id()); ASSERT_FALSE(local_state()->HasPrefPath(prefs::kDisplayRotationLock)); - ash::Shell::Get()->screen_orientation_controller()->ToggleUserRotationLock(); + Shell::Get()->screen_orientation_controller()->ToggleUserRotationLock(); EXPECT_TRUE(local_state()->HasPrefPath(prefs::kDisplayRotationLock)); @@ -1096,7 +1092,7 @@ std::vector<display::ManagedDisplayInfo> display_info_list; display_info_list.emplace_back(first_display_info); display_manager()->OnNativeDisplaysChanged(display_info_list); - ash::Shell::Get()->window_tree_host_manager()->SetPrimaryDisplayId( + Shell::Get()->window_tree_host_manager()->SetPrimaryDisplayId( first_display_id); EXPECT_FALSE(display_manager()->IsInUnifiedMode()); EXPECT_FALSE(display_manager()->IsInMirrorMode());
diff --git a/ash/display/display_util.cc b/ash/display/display_util.cc index c7038acd..a8dcad0 100644 --- a/ash/display/display_util.cc +++ b/ash/display/display_util.cc
@@ -154,7 +154,7 @@ } std::unique_ptr<message_center::Notification> notification = - ash::CreateSystemNotification( + CreateSystemNotification( message_center::NOTIFICATION_TYPE_SIMPLE, kDisplayErrorNotificationId, base::string16(), // title message,
diff --git a/ash/display/mouse_cursor_event_filter.cc b/ash/display/mouse_cursor_event_filter.cc index 8cea699d..d7ec342 100644 --- a/ash/display/mouse_cursor_event_filter.cc +++ b/ash/display/mouse_cursor_event_filter.cc
@@ -25,7 +25,7 @@ void MouseCursorEventFilter::ShowSharedEdgeIndicator(aura::Window* from) { mouse_warp_controller_ = - ash::CreateMouseWarpController(Shell::Get()->display_manager(), from); + CreateMouseWarpController(Shell::Get()->display_manager(), from); } void MouseCursorEventFilter::HideSharedEdgeIndicator() { @@ -38,7 +38,7 @@ void MouseCursorEventFilter::OnDisplayConfigurationChanged() { mouse_warp_controller_ = - ash::CreateMouseWarpController(Shell::Get()->display_manager(), nullptr); + CreateMouseWarpController(Shell::Get()->display_manager(), nullptr); } void MouseCursorEventFilter::OnMouseEvent(ui::MouseEvent* event) {
diff --git a/ash/display/overscan_calibrator.cc b/ash/display/overscan_calibrator.cc index db97ee5..8213055 100644 --- a/ash/display/overscan_calibrator.cc +++ b/ash/display/overscan_calibrator.cc
@@ -119,8 +119,8 @@ committed_(false) { // Undo the overscan calibration temporarily so that the user can see // dark boundary and current overscan region. - ash::Shell::Get()->window_tree_host_manager()->SetOverscanInsets( - display_.id(), gfx::Insets()); + Shell::Get()->window_tree_host_manager()->SetOverscanInsets(display_.id(), + gfx::Insets()); UpdateUILayer(); display::Screen::GetScreen()->AddObserver(this); } @@ -130,13 +130,13 @@ // Overscan calibration has finished without commit, so the display has to // be the original offset. if (!committed_) { - ash::Shell::Get()->window_tree_host_manager()->SetOverscanInsets( + Shell::Get()->window_tree_host_manager()->SetOverscanInsets( display_.id(), initial_insets_); } } void OverscanCalibrator::Commit() { - ash::Shell::Get()->window_tree_host_manager()->SetOverscanInsets( + Shell::Get()->window_tree_host_manager()->SetOverscanInsets( display_.id(), ConvertToHost(display_, insets_)); committed_ = true; } @@ -188,12 +188,11 @@ void OverscanCalibrator::UpdateUILayer() { display::ManagedDisplayInfo info = - ash::Shell::Get()->display_manager()->GetDisplayInfo(display_.id()); + Shell::Get()->display_manager()->GetDisplayInfo(display_.id()); - aura::Window* root = ash::Shell::GetRootWindowForDisplayId(display_.id()); + aura::Window* root = Shell::GetRootWindowForDisplayId(display_.id()); ui::Layer* parent_layer = - ash::Shell::GetContainer(root, ash::kShellWindowId_OverlayContainer) - ->layer(); + Shell::GetContainer(root, kShellWindowId_OverlayContainer)->layer(); calibration_layer_.reset(new ui::Layer()); calibration_layer_->SetOpacity(0.5f); calibration_layer_->SetBounds(parent_layer->bounds());
diff --git a/ash/display/resolution_notification_controller.cc b/ash/display/resolution_notification_controller.cc index 6273a42..57829fc4 100644 --- a/ash/display/resolution_notification_controller.cc +++ b/ash/display/resolution_notification_controller.cc
@@ -114,13 +114,13 @@ int64_t display_id, const display::ManagedDisplayMode& old_resolution, const display::ManagedDisplayMode& new_resolution, - ash::mojom::DisplayConfigSource source, + mojom::DisplayConfigSource source, base::OnceClosure accept_callback) { Shell::Get()->screen_layout_observer()->SetDisplayChangedFromSettingsUI( display_id); display::DisplayManager* const display_manager = Shell::Get()->display_manager(); - if (source == ash::mojom::DisplayConfigSource::kPolicy || + if (source == mojom::DisplayConfigSource::kPolicy || display::Display::IsInternalDisplayId(display_id)) { // We don't show notifications to confirm/revert the resolution change in // the case of an internal display or policy-forced changes. @@ -222,7 +222,7 @@ base::UTF8ToUTF16( change_info_->current_resolution.size().ToString())); - std::unique_ptr<Notification> notification = ash::CreateSystemNotification( + std::unique_ptr<Notification> notification = CreateSystemNotification( message_center::NOTIFICATION_TYPE_SIMPLE, kNotificationId, message, timeout_message, base::string16(), // display_source
diff --git a/ash/display/resolution_notification_controller.h b/ash/display/resolution_notification_controller.h index f32ca31..755eb8f 100644 --- a/ash/display/resolution_notification_controller.h +++ b/ash/display/resolution_notification_controller.h
@@ -62,7 +62,7 @@ int64_t display_id, const display::ManagedDisplayMode& old_resolution, const display::ManagedDisplayMode& new_resolution, - ash::mojom::DisplayConfigSource source, + mojom::DisplayConfigSource source, base::OnceClosure accept_callback) WARN_UNUSED_RESULT; // Returns true if the notification is visible or scheduled to be visible and
diff --git a/ash/drag_drop/drag_drop_controller.cc b/ash/drag_drop/drag_drop_controller.cc index 2ac03ef..367a7f2a 100644 --- a/ash/drag_drop/drag_drop_controller.cc +++ b/ash/drag_drop/drag_drop_controller.cc
@@ -465,7 +465,7 @@ cursor = ui::CursorType::kAlias; else if (op & ui::DragDropTypes::DRAG_MOVE) cursor = ui::CursorType::kGrabbing; - ash::Shell::Get()->cursor_manager()->SetCursor(cursor); + Shell::Get()->cursor_manager()->SetCursor(cursor); } } @@ -490,7 +490,7 @@ void DragDropController::Drop(aura::Window* target, const ui::LocatedEvent& event) { - ash::Shell::Get()->cursor_manager()->SetCursor(ui::CursorType::kPointer); + Shell::Get()->cursor_manager()->SetCursor(ui::CursorType::kPointer); // We must guarantee that a target gets a OnDragEntered before Drop. WebKit // depends on not getting a Drop without DragEnter. This behavior is @@ -546,7 +546,7 @@ void DragDropController::DoDragCancel( base::TimeDelta drag_cancel_animation_duration) { - ash::Shell::Get()->cursor_manager()->SetCursor(ui::CursorType::kPointer); + Shell::Get()->cursor_manager()->SetCursor(ui::CursorType::kPointer); // |drag_window_| can be NULL if we have just started the drag and have not // received any DragUpdates, or, if the |drag_window_| gets destroyed during @@ -616,7 +616,7 @@ drag_data_.reset(); // Cleanup can be called again while deleting DragDropTracker, so delete // the pointer with a local variable to avoid double free. - std::unique_ptr<ash::DragDropTracker> holder = std::move(drag_drop_tracker_); + std::unique_ptr<DragDropTracker> holder = std::move(drag_drop_tracker_); } } // namespace ash
diff --git a/ash/drag_drop/drag_drop_controller.h b/ash/drag_drop/drag_drop_controller.h index bce9249..6fc034ea 100644 --- a/ash/drag_drop/drag_drop_controller.h +++ b/ash/drag_drop/drag_drop_controller.h
@@ -138,7 +138,7 @@ // Closure for quitting nested run loop. base::OnceClosure quit_closure_; - std::unique_ptr<ash::DragDropTracker> drag_drop_tracker_; + std::unique_ptr<DragDropTracker> drag_drop_tracker_; std::unique_ptr<DragDropTrackerDelegate> drag_drop_window_delegate_; ui::DragDropTypes::DragEventSource current_drag_event_source_;
diff --git a/ash/events/event_rewriter_controller_impl.cc b/ash/events/event_rewriter_controller_impl.cc index 6b44d04..76736178 100644 --- a/ash/events/event_rewriter_controller_impl.cc +++ b/ash/events/event_rewriter_controller_impl.cc
@@ -43,7 +43,7 @@ void EventRewriterControllerImpl::Initialize( ui::EventRewriterChromeOS::Delegate* event_rewriter_delegate, - ash::SpokenFeedbackEventRewriterDelegate* + SpokenFeedbackEventRewriterDelegate* spoken_feedback_event_rewriter_delegate) { std::unique_ptr<KeyboardDrivenEventRewriter> keyboard_driven_event_rewriter = std::make_unique<KeyboardDrivenEventRewriter>(); @@ -51,7 +51,7 @@ std::unique_ptr<ui::EventRewriterChromeOS> event_rewriter_chromeos = std::make_unique<ui::EventRewriterChromeOS>( - event_rewriter_delegate, ash::Shell::Get()->sticky_keys_controller()); + event_rewriter_delegate, Shell::Get()->sticky_keys_controller()); std::unique_ptr<SpokenFeedbackEventRewriter> spoken_feedback_event_rewriter = std::make_unique<SpokenFeedbackEventRewriter>(
diff --git a/ash/events/event_rewriter_controller_impl.h b/ash/events/event_rewriter_controller_impl.h index 2632029..6c614b0 100644 --- a/ash/events/event_rewriter_controller_impl.h +++ b/ash/events/event_rewriter_controller_impl.h
@@ -32,7 +32,7 @@ // EventRewriterController: void Initialize(ui::EventRewriterChromeOS::Delegate* event_rewriter_delegate, - ash::SpokenFeedbackEventRewriterDelegate* + SpokenFeedbackEventRewriterDelegate* spoken_feedback_event_rewriter_delegate) override; void AddEventRewriter(std::unique_ptr<ui::EventRewriter> rewriter) override; void SetKeyboardDrivenEventRewriterEnabled(bool enabled) override;
diff --git a/ash/events/keyboard_driven_event_rewriter.cc b/ash/events/keyboard_driven_event_rewriter.cc index c9000c4b8..aa85857b 100644 --- a/ash/events/keyboard_driven_event_rewriter.cc +++ b/ash/events/keyboard_driven_event_rewriter.cc
@@ -55,8 +55,8 @@ const ui::KeyEvent& key_event = static_cast<const ui::KeyEvent&>(event); ui::KeyboardCode key_code = key_event.key_code(); - if (!ash::keyboard_util::IsArrowKeyCode(key_code) && - key_code != ui::VKEY_RETURN && key_code != ui::VKEY_F6) { + if (!keyboard_util::IsArrowKeyCode(key_code) && key_code != ui::VKEY_RETURN && + key_code != ui::VKEY_F6) { return ui::EVENT_REWRITE_CONTINUE; } @@ -65,7 +65,7 @@ key_event.code(), key_event.GetDomKey(), key_event.key_code()}; if (arrow_to_tab_rewriting_enabled_) { - if (ash::keyboard_util::IsArrowKeyCode(key_code)) { + if (keyboard_util::IsArrowKeyCode(key_code)) { const ui::KeyEvent tab_event(ui::ET_KEY_PRESSED, ui::VKEY_TAB, ui::EF_NONE); state.code = tab_event.code();
diff --git a/ash/extended_desktop_unittest.cc b/ash/extended_desktop_unittest.cc index e367b9b..11439d7 100644 --- a/ash/extended_desktop_unittest.cc +++ b/ash/extended_desktop_unittest.cc
@@ -833,8 +833,8 @@ views::Textfield* textfield = new views::Textfield; lock_widget->client_view()->AddChildView(textfield); - ash::Shell::GetContainer(Shell::GetPrimaryRootWindow(), - ash::kShellWindowId_LockScreenContainer) + Shell::GetContainer(Shell::GetPrimaryRootWindow(), + kShellWindowId_LockScreenContainer) ->AddChild(lock_widget->GetNativeView()); lock_widget->Show(); textfield->RequestFocus();
diff --git a/ash/highlighter/highlighter_controller.cc b/ash/highlighter/highlighter_controller.cc index 0bf378d..175cc173 100644 --- a/ash/highlighter/highlighter_controller.cc +++ b/ash/highlighter/highlighter_controller.cc
@@ -237,7 +237,7 @@ bool HighlighterController::CanStartNewGesture(ui::TouchEvent* event) { // Ignore events over the palette. - if (ash::palette_utils::PaletteContainsPointInScreen(event->root_location())) + if (palette_utils::PaletteContainsPointInScreen(event->root_location())) return false; return !interrupted_stroke_timer_ && FastInkPointerController::CanStartNewGesture(event);
diff --git a/ash/highlighter/highlighter_controller_test_api.h b/ash/highlighter/highlighter_controller_test_api.h index b5fbedd..a5e0560 100644 --- a/ash/highlighter/highlighter_controller_test_api.h +++ b/ash/highlighter/highlighter_controller_test_api.h
@@ -19,8 +19,7 @@ // An api for testing the HighlighterController class. // Implements ash::mojom::HighlighterControllerClient and binds itself as the // client to provide the tests with access to gesture recognition results. -class HighlighterControllerTestApi - : public ash::HighlighterController::Observer { +class HighlighterControllerTestApi : public HighlighterController::Observer { public: explicit HighlighterControllerTestApi(HighlighterController* instance); ~HighlighterControllerTestApi() override;
diff --git a/ash/keyboard/ui/keyboard_ui.h b/ash/keyboard/ui/keyboard_ui.h index 7c2874c9..0b9902ae 100644 --- a/ash/keyboard/ui/keyboard_ui.h +++ b/ash/keyboard/ui/keyboard_ui.h
@@ -74,7 +74,7 @@ KeyboardUIController* keyboard_controller() { return keyboard_controller_; } private: - keyboard::KeyboardUIController* keyboard_controller_ = nullptr; + KeyboardUIController* keyboard_controller_ = nullptr; DISALLOW_COPY_AND_ASSIGN(KeyboardUI); };
diff --git a/ash/keyboard/ui/keyboard_ui_controller_unittest.cc b/ash/keyboard/ui/keyboard_ui_controller_unittest.cc index 3707931..ffe16fe 100644 --- a/ash/keyboard/ui/keyboard_ui_controller_unittest.cc +++ b/ash/keyboard/ui/keyboard_ui_controller_unittest.cc
@@ -159,12 +159,12 @@ controller_.Initialize( std::make_unique<TestKeyboardUIFactory>(host()->GetInputMethod()), layout_delegate_.get()); - keyboard::SetTouchKeyboardEnabled(true); + SetTouchKeyboardEnabled(true); controller_.AddObserver(this); } void TearDown() override { - keyboard::SetTouchKeyboardEnabled(false); + SetTouchKeyboardEnabled(false); controller_.RemoveObserver(this); focus_controller_.reset(); aura::test::AuraTestBase::TearDown(); @@ -233,7 +233,7 @@ if (client && client->GetTextInputType() != ui::TEXT_INPUT_TYPE_NONE && client->GetTextInputMode() != ui::TEXT_INPUT_MODE_NONE) { input_method->ShowVirtualKeyboardIfEnabled(); - ASSERT_TRUE(keyboard::WaitUntilShown()); + ASSERT_TRUE(WaitUntilShown()); } } @@ -494,7 +494,7 @@ EXPECT_TRUE(keyboard_window->IsVisible()); EXPECT_FALSE(IsKeyboardDisabled()); - keyboard::SetTouchKeyboardEnabled(false); + SetTouchKeyboardEnabled(false); EXPECT_TRUE(IsKeyboardDisabled()); } @@ -533,7 +533,7 @@ EXPECT_TRUE(keyboard_window()->IsVisible()); float show_start_opacity = layer->opacity(); gfx::Transform transform; - transform.Translate(0, keyboard::kFullWidthKeyboardAnimationDistance); + transform.Translate(0, kFullWidthKeyboardAnimationDistance); EXPECT_EQ(transform, layer->transform()); // Actual final bounds should be notified after animation finishes to avoid // flash of background being seen. @@ -729,14 +729,14 @@ EXPECT_TRUE(keyboard_window->IsVisible()); EXPECT_FALSE(IsKeyboardDisabled()); - keyboard::SetTouchKeyboardEnabled(false); + SetTouchKeyboardEnabled(false); EXPECT_TRUE(IsKeyboardDisabled()); - keyboard::SetTouchKeyboardEnabled(true); + SetTouchKeyboardEnabled(true); ClearKeyboardDisabled(); EXPECT_FALSE(IsKeyboardDisabled()); - keyboard::SetTouchKeyboardEnabled(false); + SetTouchKeyboardEnabled(false); EXPECT_TRUE(IsKeyboardDisabled()); } @@ -768,21 +768,21 @@ TEST_F(KeyboardUIControllerTest, OnKeyboardEnabledChangedToEnabled) { // Start with the keyboard disabled. - keyboard::SetTouchKeyboardEnabled(false); + SetTouchKeyboardEnabled(false); MockKeyboardControllerObserver mock_observer; controller().AddObserver(&mock_observer); EXPECT_CALL(mock_observer, OnKeyboardEnabledChanged(true)) .WillOnce(testing::InvokeWithoutArgs([]() { - auto* controller = keyboard::KeyboardUIController::Get(); + auto* controller = KeyboardUIController::Get(); ASSERT_TRUE(controller); EXPECT_TRUE(controller->IsEnabled()); EXPECT_TRUE(controller->GetKeyboardWindow()); EXPECT_TRUE(controller->GetRootWindow()); })); - keyboard::SetTouchKeyboardEnabled(true); + SetTouchKeyboardEnabled(true); controller().RemoveObserver(&mock_observer); } @@ -793,14 +793,14 @@ EXPECT_CALL(mock_observer, OnKeyboardEnabledChanged(false)) .WillOnce(testing::InvokeWithoutArgs([]() { - auto* controller = keyboard::KeyboardUIController::Get(); + auto* controller = KeyboardUIController::Get(); ASSERT_TRUE(controller); EXPECT_FALSE(controller->IsEnabled()); EXPECT_FALSE(controller->GetKeyboardWindow()); EXPECT_FALSE(controller->GetRootWindow()); })); - keyboard::SetTouchKeyboardEnabled(false); + SetTouchKeyboardEnabled(false); controller().RemoveObserver(&mock_observer); }
diff --git a/ash/keyboard/ui/keyboard_util_unittest.cc b/ash/keyboard/ui/keyboard_util_unittest.cc index fc4bd9864..2bbe76ef 100644 --- a/ash/keyboard/ui/keyboard_util_unittest.cc +++ b/ash/keyboard/ui/keyboard_util_unittest.cc
@@ -96,32 +96,32 @@ // Tests that we respect the accessibility setting. TEST_F(KeyboardUtilTest, AlwaysShowIfA11yEnabled) { // Disabled by default. - EXPECT_FALSE(keyboard::IsKeyboardEnabled()); + EXPECT_FALSE(IsKeyboardEnabled()); // If enabled by accessibility, should ignore other flag values. DisableAllFlags(); - keyboard::SetAccessibilityKeyboardEnabled(true); - EXPECT_TRUE(keyboard::IsKeyboardEnabled()); + SetAccessibilityKeyboardEnabled(true); + EXPECT_TRUE(IsKeyboardEnabled()); } // Tests that we respect the policy setting. TEST_F(KeyboardUtilTest, AlwaysShowIfPolicyEnabled) { - EXPECT_FALSE(keyboard::IsKeyboardEnabled()); + EXPECT_FALSE(IsKeyboardEnabled()); // If policy is enabled, should ignore other flag values. DisableAllFlags(); SetEnableFlag(KeyboardEnableFlag::kPolicyEnabled); - EXPECT_TRUE(keyboard::IsKeyboardEnabled()); + EXPECT_TRUE(IsKeyboardEnabled()); } // Tests that we respect the policy setting. TEST_F(KeyboardUtilTest, HidesIfPolicyDisabled) { - EXPECT_FALSE(keyboard::IsKeyboardEnabled()); + EXPECT_FALSE(IsKeyboardEnabled()); EnableAllFlags(); // Set accessibility to neutral since accessibility has higher precedence. - keyboard::SetAccessibilityKeyboardEnabled(false); - EXPECT_TRUE(keyboard::IsKeyboardEnabled()); + SetAccessibilityKeyboardEnabled(false); + EXPECT_TRUE(IsKeyboardEnabled()); // Disable policy. Keyboard should be disabled. SetEnableFlag(KeyboardEnableFlag::kPolicyDisabled); - EXPECT_FALSE(keyboard::IsKeyboardEnabled()); + EXPECT_FALSE(IsKeyboardEnabled()); } // Tests that the keyboard shows when requested flag provided higher priority @@ -130,10 +130,10 @@ DisableAllFlags(); // Remove device policy, which has higher precedence than us. ClearEnableFlag(KeyboardEnableFlag::kPolicyDisabled); - EXPECT_FALSE(keyboard::IsKeyboardEnabled()); + EXPECT_FALSE(IsKeyboardEnabled()); // Requested should have higher precedence than all the remaining flags. SetEnableFlag(KeyboardEnableFlag::kExtensionEnabled); - EXPECT_TRUE(keyboard::IsKeyboardEnabled()); + EXPECT_TRUE(IsKeyboardEnabled()); } // Tests that the touch keyboard is hidden when requested flag is disabled and @@ -142,20 +142,20 @@ EnableAllFlags(); // Remove higher precedence flags. ClearEnableFlag(KeyboardEnableFlag::kPolicyEnabled); - keyboard::SetAccessibilityKeyboardEnabled(false); - EXPECT_TRUE(keyboard::IsKeyboardEnabled()); + SetAccessibilityKeyboardEnabled(false); + EXPECT_TRUE(IsKeyboardEnabled()); // Set requested flag to disable. Keyboard should disable. SetEnableFlag(KeyboardEnableFlag::kExtensionDisabled); - EXPECT_FALSE(keyboard::IsKeyboardEnabled()); + EXPECT_FALSE(IsKeyboardEnabled()); } // SetTouchKeyboardEnabled has the lowest priority, but should still work when // none of the other flags are enabled. TEST_F(KeyboardUtilTest, HideKeyboardWhenTouchEnabled) { ResetAllFlags(); - EXPECT_FALSE(keyboard::IsKeyboardEnabled()); - keyboard::SetTouchKeyboardEnabled(true); - EXPECT_TRUE(keyboard::IsKeyboardEnabled()); + EXPECT_FALSE(IsKeyboardEnabled()); + SetTouchKeyboardEnabled(true); + EXPECT_TRUE(IsKeyboardEnabled()); } TEST_F(KeyboardUtilTest, UpdateKeyboardConfig) { @@ -178,17 +178,17 @@ EXPECT_FALSE(keyboard_ui_controller_.IsKeyboardOverscrollEnabled()); // Enable the virtual keyboard. - keyboard::SetTouchKeyboardEnabled(true); + SetTouchKeyboardEnabled(true); EXPECT_TRUE(keyboard_ui_controller_.IsKeyboardOverscrollEnabled()); // Set overscroll enabled flag. KeyboardConfig config = keyboard_ui_controller_.keyboard_config(); - config.overscroll_behavior = keyboard::KeyboardOverscrollBehavior::kDisabled; + config.overscroll_behavior = KeyboardOverscrollBehavior::kDisabled; keyboard_ui_controller_.UpdateKeyboardConfig(config); EXPECT_FALSE(keyboard_ui_controller_.IsKeyboardOverscrollEnabled()); // Set default overscroll flag. - config.overscroll_behavior = keyboard::KeyboardOverscrollBehavior::kDefault; + config.overscroll_behavior = KeyboardOverscrollBehavior::kDefault; keyboard_ui_controller_.UpdateKeyboardConfig(config); EXPECT_TRUE(keyboard_ui_controller_.IsKeyboardOverscrollEnabled()); @@ -201,18 +201,18 @@ // See https://crbug.com/946358. TEST_F(KeyboardUtilTest, RebuildsWhenChangingAccessibilityFlag) { // Virtual keyboard enabled with compact layout. - keyboard::SetTouchKeyboardEnabled(true); + SetTouchKeyboardEnabled(true); - keyboard::TestKeyboardControllerObserver observer; + TestKeyboardControllerObserver observer; keyboard_ui_controller_.AddObserver(&observer); // Virtual keyboard should rebuild to switch to a11y layout. - keyboard::SetAccessibilityKeyboardEnabled(true); + SetAccessibilityKeyboardEnabled(true); EXPECT_EQ(1, observer.disabled_count); EXPECT_EQ(1, observer.enabled_count); // Virtual keyboard should rebuild to switch back to compact layout. - keyboard::SetAccessibilityKeyboardEnabled(false); + SetAccessibilityKeyboardEnabled(false); EXPECT_EQ(2, observer.disabled_count); EXPECT_EQ(2, observer.enabled_count);
diff --git a/ash/laser/laser_pointer_controller.cc b/ash/laser/laser_pointer_controller.cc index b5b9896..e708d60 100644 --- a/ash/laser/laser_pointer_controller.cc +++ b/ash/laser/laser_pointer_controller.cc
@@ -76,7 +76,7 @@ bool LaserPointerController::CanStartNewGesture(ui::TouchEvent* event) { // Ignore events over the palette. - if (ash::palette_utils::PaletteContainsPointInScreen(event->root_location())) + if (palette_utils::PaletteContainsPointInScreen(event->root_location())) return false; return FastInkPointerController::CanStartNewGesture(event); }
diff --git a/ash/login/login_screen_test_api.cc b/ash/login/login_screen_test_api.cc index 618a38b..b8e789c 100644 --- a/ash/login/login_screen_test_api.cc +++ b/ash/login/login_screen_test_api.cc
@@ -136,8 +136,8 @@ // static bool LoginScreenTestApi::IsAuthErrorBubbleShown() { - ash::LockScreen::TestApi lock_screen_test(ash::LockScreen::Get()); - ash::LockContentsView::TestApi lock_contents_test( + LockScreen::TestApi lock_screen_test(LockScreen::Get()); + LockContentsView::TestApi lock_contents_test( lock_screen_test.contents_view()); return lock_contents_test.auth_error_bubble()->GetVisible(); }
diff --git a/ash/login/ui/lock_contents_view.cc b/ash/login/ui/lock_contents_view.cc index 2d340b29..68a1568 100644 --- a/ash/login/ui/lock_contents_view.cc +++ b/ash/login/ui/lock_contents_view.cc
@@ -1831,7 +1831,7 @@ } // http://crbug/866790: After Supervised Users are deprecated, remove this. - if (ash::features::IsSupervisedUserDeprecationNoticeEnabled() && + if (features::IsSupervisedUserDeprecationNoticeEnabled() && big_user.basic_user_info.type == user_manager::USER_TYPE_SUPERVISED) { base::string16 message = l10n_util::GetStringUTF16( IDS_ASH_LOGIN_POD_LEGACY_SUPERVISED_EXPIRATION_WARNING);
diff --git a/ash/login/ui/lock_contents_view_unittest.cc b/ash/login/ui/lock_contents_view_unittest.cc index 2b657b0..a5119ae 100644 --- a/ash/login/ui/lock_contents_view_unittest.cc +++ b/ash/login/ui/lock_contents_view_unittest.cc
@@ -2047,7 +2047,7 @@ // Disable auth and media. DataDispatcher()->DisableAuthForUser( kFirstUserAccountId, - AuthDisabledData(ash::AuthDisabledReason::kTimeWindowLimit, + AuthDisabledData(AuthDisabledReason::kTimeWindowLimit, base::Time::Now() + base::TimeDelta::FromHours(8), base::TimeDelta::FromHours(1), true /*disable_lock_screen_media*/)); @@ -2073,7 +2073,7 @@ // Disable auth and media. DataDispatcher()->DisableAuthForUser( kFirstUserAccountId, - AuthDisabledData(ash::AuthDisabledReason::kTimeWindowLimit, + AuthDisabledData(AuthDisabledReason::kTimeWindowLimit, base::Time::Now() + base::TimeDelta::FromHours(8), base::TimeDelta::FromHours(1), true /*disable_lock_screen_media*/)); @@ -2109,7 +2109,7 @@ // Disable auth, but allow media. DataDispatcher()->DisableAuthForUser( kFirstUserAccountId, - AuthDisabledData(ash::AuthDisabledReason::kTimeWindowLimit, + AuthDisabledData(AuthDisabledReason::kTimeWindowLimit, base::Time::Now() + base::TimeDelta::FromHours(8), base::TimeDelta::FromHours(1), false /*disable_lock_screen_media*/)); @@ -2175,30 +2175,30 @@ // Simulate initial state - user auth disabled and button shown. DataDispatcher()->DisableAuthForUser(child_id, GetTestDisabledAuthData()); Shell::Get()->login_screen_controller()->ShowParentAccessButton(true); - EXPECT_TRUE(ash::LoginScreenTestApi::IsParentAccessButtonShown()); + EXPECT_TRUE(LoginScreenTestApi::IsParentAccessButtonShown()); // Validation failed - show the button. contents->ShowParentAccessDialog(); - EXPECT_FALSE(ash::LoginScreenTestApi::IsParentAccessButtonShown()); + EXPECT_FALSE(LoginScreenTestApi::IsParentAccessButtonShown()); ParentAccessWidget::TestApi(ParentAccessWidget::Get()) .SimulateValidationFinished(false); - EXPECT_TRUE(ash::LoginScreenTestApi::IsParentAccessButtonShown()); + EXPECT_TRUE(LoginScreenTestApi::IsParentAccessButtonShown()); // Validation succeeded - hide the button. contents->ShowParentAccessDialog(); - EXPECT_FALSE(ash::LoginScreenTestApi::IsParentAccessButtonShown()); + EXPECT_FALSE(LoginScreenTestApi::IsParentAccessButtonShown()); ParentAccessWidget::TestApi(ParentAccessWidget::Get()) .SimulateValidationFinished(true); - EXPECT_FALSE(ash::LoginScreenTestApi::IsParentAccessButtonShown()); + EXPECT_FALSE(LoginScreenTestApi::IsParentAccessButtonShown()); // Validation failed but user auth got enabled - hide button. // (Device got unlocked when parent access dialog was shown) contents->ShowParentAccessDialog(); - EXPECT_FALSE(ash::LoginScreenTestApi::IsParentAccessButtonShown()); + EXPECT_FALSE(LoginScreenTestApi::IsParentAccessButtonShown()); DataDispatcher()->EnableAuthForUser(child_id); ParentAccessWidget::TestApi(ParentAccessWidget::Get()) .SimulateValidationFinished(false); - EXPECT_FALSE(ash::LoginScreenTestApi::IsParentAccessButtonShown()); + EXPECT_FALSE(LoginScreenTestApi::IsParentAccessButtonShown()); } using LockContentsViewPowerManagerUnitTest = LockContentsViewUnitTest;
diff --git a/ash/login/ui/lock_screen.cc b/ash/login/ui/lock_screen.cc index c8b142674..c767562 100644 --- a/ash/login/ui/lock_screen.cc +++ b/ash/login/ui/lock_screen.cc
@@ -46,7 +46,7 @@ } LockScreen::LockScreen(ScreenType type) : type_(type) { - tray_action_observer_.Add(ash::Shell::Get()->tray_action()); + tray_action_observer_.Add(Shell::Get()->tray_action()); saved_clipboard_ = ui::Clipboard::TakeForCurrentThread(); } @@ -119,9 +119,9 @@ void LockScreen::Destroy() { LoginScreenController::AuthenticationStage authentication_stage = - ash::Shell::Get()->login_screen_controller()->authentication_stage(); + Shell::Get()->login_screen_controller()->authentication_stage(); base::debug::Alias(&authentication_stage); - if (ash::Shell::Get()->login_screen_controller()->authentication_stage() != + if (Shell::Get()->login_screen_controller()->authentication_stage() != authentication_stage) { LOG(FATAL) << "Unexpected authentication stage " << static_cast<int>(authentication_stage);
diff --git a/ash/login/ui/parent_access_widget.cc b/ash/login/ui/parent_access_widget.cc index 0f2a2d6b..f879282 100644 --- a/ash/login/ui/parent_access_widget.cc +++ b/ash/login/ui/parent_access_widget.cc
@@ -93,10 +93,10 @@ ShellWindowId parent_window_id = Shell::Get()->session_controller()->GetSessionState() == session_manager::SessionState::ACTIVE - ? ash::kShellWindowId_SystemModalContainer - : ash::kShellWindowId_LockSystemModalContainer; + ? kShellWindowId_SystemModalContainer + : kShellWindowId_LockSystemModalContainer; widget_params.parent = - ash::Shell::GetPrimaryRootWindow()->GetChildById(parent_window_id); + Shell::GetPrimaryRootWindow()->GetChildById(parent_window_id); ParentAccessView::Callbacks callbacks; callbacks.on_finished = base::BindRepeating(&ParentAccessWidget::OnExit,
diff --git a/ash/magnifier/magnification_controller_unittest.cc b/ash/magnifier/magnification_controller_unittest.cc index dfeb863c..ab43046 100644 --- a/ash/magnifier/magnification_controller_unittest.cc +++ b/ash/magnifier/magnification_controller_unittest.cc
@@ -85,8 +85,8 @@ return location.ToString(); } - ash::MagnificationController* GetMagnificationController() const { - return ash::Shell::Get()->magnification_controller(); + MagnificationController* GetMagnificationController() const { + return Shell::Get()->magnification_controller(); } gfx::Rect GetViewport() const {
diff --git a/ash/media/media_notification_controller_impl.cc b/ash/media/media_notification_controller_impl.cc index 01cfb69..ba22074 100644 --- a/ash/media/media_notification_controller_impl.cc +++ b/ash/media/media_notification_controller_impl.cc
@@ -173,7 +173,7 @@ return; std::unique_ptr<message_center::Notification> notification = - ash::CreateSystemNotification( + CreateSystemNotification( message_center::NotificationType::NOTIFICATION_TYPE_CUSTOM, id, base::string16(), base::string16(), base::string16(), GURL(), message_center::NotifierId(
diff --git a/ash/media/media_notification_controller_impl_unittest.cc b/ash/media/media_notification_controller_impl_unittest.cc index ae6632d..32615784 100644 --- a/ash/media/media_notification_controller_impl_unittest.cc +++ b/ash/media/media_notification_controller_impl_unittest.cc
@@ -453,8 +453,8 @@ // Show a non-media notification that should still be displayed. message_center->AddNotification( - ash::CreateSystemNotification("test", base::string16(), base::string16(), - "test", base::BindRepeating([]() {}))); + CreateSystemNotification("test", base::string16(), base::string16(), + "test", base::BindRepeating([]() {}))); EXPECT_EQ(2u, message_center->GetVisibleNotifications().size());
diff --git a/ash/metrics/user_metrics_recorder_unittest.cc b/ash/metrics/user_metrics_recorder_unittest.cc index 62c4687..12f4a2a4 100644 --- a/ash/metrics/user_metrics_recorder_unittest.cc +++ b/ash/metrics/user_metrics_recorder_unittest.cc
@@ -137,13 +137,13 @@ ASSERT_EQ(0u, shelf_model->items().size()); ShelfItem shelf_item; - shelf_item.type = ash::TYPE_PINNED_APP; + shelf_item.type = TYPE_PINNED_APP; shelf_item.id = ShelfID("app_id_1"); shelf_model->Add(shelf_item); shelf_item.id = ShelfID("app_id_2"); shelf_model->Add(shelf_item); - shelf_item.type = ash::TYPE_APP; + shelf_item.type = TYPE_APP; shelf_item.id = ShelfID("app_id_3"); shelf_model->Add(shelf_item); shelf_item.id = ShelfID("app_id_4");
diff --git a/ash/multi_user/multi_user_window_manager_impl.h b/ash/multi_user/multi_user_window_manager_impl.h index 312c919a..7c3c0dd7 100644 --- a/ash/multi_user/multi_user_window_manager_impl.h +++ b/ash/multi_user/multi_user_window_manager_impl.h
@@ -228,7 +228,7 @@ // The animation between users. std::unique_ptr<UserSwitchAnimator> animation_; - base::ObserverList<ash::MultiUserWindowManagerObserver>::Unchecked observers_; + base::ObserverList<MultiUserWindowManagerObserver>::Unchecked observers_; DISALLOW_COPY_AND_ASSIGN(MultiUserWindowManagerImpl); };
diff --git a/ash/public/cpp/app_list/app_list_client.h b/ash/public/cpp/app_list/app_list_client.h index b2af2563..26f248f 100644 --- a/ash/public/cpp/app_list/app_list_client.h +++ b/ash/public/cpp/app_list/app_list_client.h
@@ -55,8 +55,8 @@ // by user pressing ENTER key. virtual void OpenSearchResult(const std::string& result_id, int event_flags, - ash::AppListLaunchedFrom launched_from, - ash::AppListLaunchType launch_type, + AppListLaunchedFrom launched_from, + AppListLaunchType launch_type, int suggestion_index, bool launch_as_default) = 0; // Invokes a custom action on a result with |result_id|. @@ -100,17 +100,14 @@ const std::string& id, GetContextMenuModelCallback callback) = 0; // Invoked when a folder is created in Ash (e.g. merge items into a folder). - virtual void OnFolderCreated( - int profile_id, - std::unique_ptr<ash::AppListItemMetadata> folder) = 0; + virtual void OnFolderCreated(int profile_id, + std::unique_ptr<AppListItemMetadata> folder) = 0; // Invoked when a folder has only one item left and so gets removed. - virtual void OnFolderDeleted( - int profile_id, - std::unique_ptr<ash::AppListItemMetadata> folder) = 0; + virtual void OnFolderDeleted(int profile_id, + std::unique_ptr<AppListItemMetadata> folder) = 0; // Invoked when user changes a folder's name or an item's position. - virtual void OnItemUpdated( - int profile_id, - std::unique_ptr<ash::AppListItemMetadata> folder) = 0; + virtual void OnItemUpdated(int profile_id, + std::unique_ptr<AppListItemMetadata> folder) = 0; // Invoked when a "page break" item is added with |id| and |position|. virtual void OnPageBreakItemAdded(int profile_id, const std::string& id, @@ -133,7 +130,7 @@ virtual void NotifySearchResultsForLogging( const base::string16& trimmed_query, - const ash::SearchResultIdWithPositionIndices& results, + const SearchResultIdWithPositionIndices& results, int position_index) = 0; protected:
diff --git a/ash/public/cpp/app_list/app_list_config.cc b/ash/public/cpp/app_list/app_list_config.cc index 0a9a6d1..50171ca 100644 --- a/ash/public/cpp/app_list/app_list_config.cc +++ b/ash/public/cpp/app_list/app_list_config.cc
@@ -255,7 +255,7 @@ } // namespace -AppListConfig::AppListConfig(ash::AppListConfigType type) +AppListConfig::AppListConfig(AppListConfigType type) : type_(type), scale_x_(1), scale_y_(1), @@ -482,22 +482,22 @@ // static AppListConfig& AppListConfig::instance() { return *AppListConfigProvider::Get().GetConfigForType( - ash::AppListConfigType::kShared, true /*can_create*/); + AppListConfigType::kShared, true /*can_create*/); } int AppListConfig::GetPreferredIconDimension( - ash::SearchResultDisplayType display_type) const { + SearchResultDisplayType display_type) const { switch (display_type) { - case ash::SearchResultDisplayType::kRecommendation: + case SearchResultDisplayType::kRecommendation: FALLTHROUGH; - case ash::SearchResultDisplayType::kTile: + case SearchResultDisplayType::kTile: return search_tile_icon_dimension_; - case ash::SearchResultDisplayType::kList: + case SearchResultDisplayType::kList: return search_list_icon_dimension_; - case ash::SearchResultDisplayType::kNone: // Falls through. - case ash::SearchResultDisplayType::kCard: + case SearchResultDisplayType::kNone: // Falls through. + case SearchResultDisplayType::kCard: return 0; - case ash::SearchResultDisplayType::kLast: + case SearchResultDisplayType::kLast: return 0; } }
diff --git a/ash/public/cpp/app_list/app_list_config.h b/ash/public/cpp/app_list/app_list_config.h index ca421202..43a9d23 100644 --- a/ash/public/cpp/app_list/app_list_config.h +++ b/ash/public/cpp/app_list/app_list_config.h
@@ -22,7 +22,7 @@ class ASH_PUBLIC_EXPORT AppListConfig { public: // Constructor for unscaled configurations of the provided type. - explicit AppListConfig(ash::AppListConfigType type); + explicit AppListConfig(AppListConfigType type); // Constructor for scaled app list configuration. // Used only if kScalableAppList feature is not enabled, in which case the @@ -47,7 +47,7 @@ // Gets default app list configuration. static AppListConfig& instance(); - ash::AppListConfigType type() const { return type_; } + AppListConfigType type() const { return type_; } float scale_x() const { return scale_x_; } float scale_y() const { return scale_y_; } int grid_tile_width() const { return grid_tile_width_; } @@ -226,8 +226,7 @@ } // Returns the dimension at which a result's icon should be displayed. - int GetPreferredIconDimension( - ash::SearchResultDisplayType display_type) const; + int GetPreferredIconDimension(SearchResultDisplayType display_type) const; // Returns the maximum number of items allowed in specified page in apps grid. int GetMaxNumOfItemsPerPage(int page) const; @@ -241,7 +240,7 @@ int GetIdealVerticalMargin(const gfx::Rect& abailable_bounds) const; private: - const ash::AppListConfigType type_; + const AppListConfigType type_; // Current config scale values - should be different from 1 for // AppListConfigType::kShared only.
diff --git a/ash/public/cpp/app_list/app_list_config_provider.cc b/ash/public/cpp/app_list/app_list_config_provider.cc index dc11978..f91d9b8f 100644 --- a/ash/public/cpp/app_list/app_list_config_provider.cc +++ b/ash/public/cpp/app_list/app_list_config_provider.cc
@@ -62,25 +62,24 @@ observers_.RemoveObserver(observer); } -AppListConfig* AppListConfigProvider::GetConfigForType( - ash::AppListConfigType type, - bool can_create) { +AppListConfig* AppListConfigProvider::GetConfigForType(AppListConfigType type, + bool can_create) { const auto config_it = configs_.find(type); if (config_it != configs_.end()) return config_it->second.get(); // Assume the shared config always exists. - if (type != ash::AppListConfigType::kShared && !can_create) + if (type != AppListConfigType::kShared && !can_create) return nullptr; - DCHECK(type == ash::AppListConfigType::kShared || + DCHECK(type == AppListConfigType::kShared || app_list_features::IsScalableAppListEnabled()); auto config = std::make_unique<AppListConfig>(type); auto* result = config.get(); configs_.emplace(type, std::move(config)); - if (type != ash::AppListConfigType::kShared) { + if (type != AppListConfigType::kShared) { for (auto& observer : observers_) observer.OnAppListConfigCreated(type); } @@ -182,8 +181,7 @@ if (!app_list_features::IsScalableAppListEnabled()) return AppListConfig::instance(); - ash::AppListConfigType type = - GetConfigTypeForDisplaySize(display_work_area_size); + AppListConfigType type = GetConfigTypeForDisplaySize(display_work_area_size); // Ensures that the app list config provider has a config with the same // type as the created config - the app list model will use the config owned // by the AppListConfigProvider instance to generate folder icons needed by
diff --git a/ash/public/cpp/app_list/app_list_config_provider.h b/ash/public/cpp/app_list/app_list_config_provider.h index 272000c..a0bce7d 100644 --- a/ash/public/cpp/app_list/app_list_config_provider.h +++ b/ash/public/cpp/app_list/app_list_config_provider.h
@@ -32,7 +32,7 @@ // for AppListConfigType::kShared configs, as they're assumed to always // exist. // |config_type| - The created config's type. - virtual void OnAppListConfigCreated(ash::AppListConfigType config_type) = 0; + virtual void OnAppListConfigCreated(AppListConfigType config_type) = 0; }; static AppListConfigProvider& Get(); @@ -48,7 +48,7 @@ // is set. Returns nullptr if the config does not exist and cannot be created. // NOTE: |can_create| has effect only on config types different than kShared. // A new kShared config will always be created if it does not yet exist. - AppListConfig* GetConfigForType(ash::AppListConfigType type, bool can_create); + AppListConfig* GetConfigForType(AppListConfigType type, bool can_create); // Returns the app list config that should be used by an app list instance // based on the app list display, and available size for the apps grid. @@ -74,7 +74,7 @@ const AppListConfig& GetBaseConfigForDisplaySize( const gfx::Size& display_work_area_size); - std::map<ash::AppListConfigType, std::unique_ptr<AppListConfig>> configs_; + std::map<AppListConfigType, std::unique_ptr<AppListConfig>> configs_; base::ObserverList<Observer>::Unchecked observers_;
diff --git a/ash/public/cpp/app_list/app_list_config_provider_unittest.cc b/ash/public/cpp/app_list/app_list_config_provider_unittest.cc index d3901c7..9ba2ab5 100644 --- a/ash/public/cpp/app_list/app_list_config_provider_unittest.cc +++ b/ash/public/cpp/app_list/app_list_config_provider_unittest.cc
@@ -154,15 +154,15 @@ // ash::AppListConfigType::kShared app list config. TEST_F(SharedConfigAppListConfigProviderTest, SharedInstance) { AppListConfig* shared_config = AppListConfigProvider::Get().GetConfigForType( - ash::AppListConfigType::kShared, false); + AppListConfigType::kShared, false); ASSERT_TRUE(shared_config); EXPECT_EQ(&AppListConfig::instance(), shared_config); // Observer not expected to trigger, as the shared config is considered // created by default (even though it's created lazily on first access). - EXPECT_EQ(std::vector<ash::AppListConfigType>(), + EXPECT_EQ(std::vector<AppListConfigType>(), registry_observer_.created_types()); - EXPECT_EQ(ash::AppListConfigType::kShared, shared_config->type()); + EXPECT_EQ(AppListConfigType::kShared, shared_config->type()); EXPECT_EQ(1., shared_config->scale_x()); EXPECT_EQ(1., shared_config->scale_y()); } @@ -170,9 +170,9 @@ // Tests GetConfigForType behavior for app list configs associated with // kScalableAppList feature. TEST_F(AppListConfigProviderTest, NonSharedConfigGetters) { - std::vector<ash::AppListConfigType> test_cases = { - ash::AppListConfigType::kSmall, ash::AppListConfigType::kMedium, - ash::AppListConfigType::kLarge}; + std::vector<AppListConfigType> test_cases = {AppListConfigType::kSmall, + AppListConfigType::kMedium, + AppListConfigType::kLarge}; for (const auto& config_type : test_cases) { SCOPED_TRACE(static_cast<int>(config_type)); @@ -180,7 +180,7 @@ // config. EXPECT_FALSE(AppListConfigProvider::Get().GetConfigForType( config_type, false /*can_create*/)); - EXPECT_EQ(std::vector<ash::AppListConfigType>(), + EXPECT_EQ(std::vector<AppListConfigType>(), registry_observer_.created_types()); // Calling GetConfigForType with true |can_create| will create a new config @@ -190,8 +190,7 @@ config_type, true /*can_create*/); ASSERT_TRUE(config); EXPECT_EQ(config_type, config->type()); - const std::vector<ash::AppListConfigType> expected_created_types = { - config_type}; + const std::vector<AppListConfigType> expected_created_types = {config_type}; EXPECT_EQ(expected_created_types, registry_observer_.created_types()); EXPECT_NE(&AppListConfig::instance(), config); @@ -212,15 +211,15 @@ TEST_F(AppListConfigProviderTest, CreateConfigByDisplayWorkArea) { const struct TestCase { gfx::Size work_area_size; - ash::AppListConfigType config_type; - } test_cases[] = {{gfx::Size(900, 500), ash::AppListConfigType::kSmall}, - {gfx::Size(500, 900), ash::AppListConfigType::kSmall}, - {gfx::Size(960, 600), ash::AppListConfigType::kMedium}, - {gfx::Size(1100, 700), ash::AppListConfigType::kMedium}, - {gfx::Size(600, 960), ash::AppListConfigType::kMedium}, - {gfx::Size(700, 1100), ash::AppListConfigType::kMedium}, - {gfx::Size(1200, 768), ash::AppListConfigType::kLarge}, - {gfx::Size(768, 1200), ash::AppListConfigType::kLarge}}; + AppListConfigType config_type; + } test_cases[] = {{gfx::Size(900, 500), AppListConfigType::kSmall}, + {gfx::Size(500, 900), AppListConfigType::kSmall}, + {gfx::Size(960, 600), AppListConfigType::kMedium}, + {gfx::Size(1100, 700), AppListConfigType::kMedium}, + {gfx::Size(600, 960), AppListConfigType::kMedium}, + {gfx::Size(700, 1100), AppListConfigType::kMedium}, + {gfx::Size(1200, 768), AppListConfigType::kLarge}, + {gfx::Size(768, 1200), AppListConfigType::kLarge}}; for (const auto& test_case : test_cases) { SCOPED_TRACE(::testing::Message() @@ -269,7 +268,7 @@ gfx::Size(1200, 768), gfx::Insets(0, 0, 56, 0) /*shelf_insets*/, nullptr); ASSERT_TRUE(config); - EXPECT_EQ(ash::AppListConfigType::kLarge, config->type()); + EXPECT_EQ(AppListConfigType::kLarge, config->type()); // Verify CreateForAppListWidget returns nullptr if the created config would // be the same as |config|. @@ -283,7 +282,7 @@ gfx::Size(960, 600), gfx::Insets(0, 0, 56, 0) /*shelf_insets*/, config.get()); ASSERT_TRUE(updated_config); - EXPECT_EQ(ash::AppListConfigType::kMedium, updated_config->type()); + EXPECT_EQ(AppListConfigType::kMedium, updated_config->type()); } TEST_F(SharedConfigAppListConfigProviderTest, @@ -297,7 +296,7 @@ gfx::Size(1200, 768) /*display_work_area_size*/, gfx::Insets(0, 0, 56, 0) /*shelf_insets*/, nullptr); ASSERT_TRUE(config.get()); - EXPECT_EQ(ash::AppListConfigType::kShared, config->type()); + EXPECT_EQ(AppListConfigType::kShared, config->type()); EXPECT_EQ(1, config->scale_x()); EXPECT_EQ(1, config->scale_y()); EXPECT_EQ(112, config->grid_tile_width()); @@ -321,7 +320,7 @@ gfx::Size(800, 700) /*display_work_area_size*/, gfx::Insets(0, 102, 56, 102) /*shelf_insets*/, config.get()); ASSERT_TRUE(config); - EXPECT_EQ(ash::AppListConfigType::kShared, config->type()); + EXPECT_EQ(AppListConfigType::kShared, config->type()); EXPECT_EQ(500.f / kMinGridWidth, config->scale_x()); EXPECT_EQ(1, config->scale_y()); // 100 == std::round(scale_x * 112) @@ -336,7 +335,7 @@ gfx::Size(800, 624) /*display_work_area_size*/, gfx::Insets(0, 0, 56, 0) /*shelf_insets*/, config.get()); ASSERT_TRUE(config); - EXPECT_EQ(ash::AppListConfigType::kShared, config->type()); + EXPECT_EQ(AppListConfigType::kShared, config->type()); EXPECT_EQ(1, config->scale_x()); // Available height includes fadeout zones, which should not be included in // scale calculation. @@ -353,7 +352,7 @@ gfx::Size(800, 624) /*display_work_area_size*/, gfx::Insets(0, 102, 56, 102) /*shelf_insets*/, config.get()); ASSERT_TRUE(config); - EXPECT_EQ(ash::AppListConfigType::kShared, config->type()); + EXPECT_EQ(AppListConfigType::kShared, config->type()); EXPECT_EQ(500.f / kMinGridWidth, config->scale_x()); // Available height includes fadeout zones, which should not be included in // scale calculation. @@ -379,7 +378,7 @@ gfx::Size(768, 1200) /*display_work_area_size*/, gfx::Insets(0, 0, 56, 0) /*shelf_insets*/, nullptr); ASSERT_TRUE(config.get()); - EXPECT_EQ(ash::AppListConfigType::kShared, config->type()); + EXPECT_EQ(AppListConfigType::kShared, config->type()); EXPECT_EQ(1, config->scale_x()); EXPECT_EQ(1, config->scale_y()); EXPECT_EQ(112, config->grid_tile_width()); @@ -403,7 +402,7 @@ gfx::Size(600, 800) /*display_work_area_size*/, gfx::Insets(0, 52, 56, 52) /*shelf_insets*/, config.get()); ASSERT_TRUE(config); - EXPECT_EQ(ash::AppListConfigType::kShared, config->type()); + EXPECT_EQ(AppListConfigType::kShared, config->type()); EXPECT_EQ(400.f / kMinGridWidth, config->scale_x()); EXPECT_EQ(1, config->scale_y()); // 100 == std::round(scale_x * 112) @@ -418,7 +417,7 @@ gfx::Size(600, 624) /*display_work_area_size*/, gfx::Insets(0, 0, 56, 0) /*shelf_insets*/, config.get()); ASSERT_TRUE(config); - EXPECT_EQ(ash::AppListConfigType::kShared, config->type()); + EXPECT_EQ(AppListConfigType::kShared, config->type()); EXPECT_EQ(1, config->scale_x()); // Available height includes fadeout zones, which should not be included in // scale calculation. @@ -435,7 +434,7 @@ gfx::Size(600, 732) /*display_work_area_size*/, gfx::Insets(0, 102, 56, 102) /*shelf_insets*/, config.get()); ASSERT_TRUE(config); - EXPECT_EQ(ash::AppListConfigType::kShared, config->type()); + EXPECT_EQ(AppListConfigType::kShared, config->type()); EXPECT_EQ(300.f / kMinGridWidth, config->scale_x()); // Available height includes fadeout zones, which should not be included in // scale calculation.
diff --git a/ash/public/cpp/app_list/app_list_controller.h b/ash/public/cpp/app_list/app_list_controller.h index 51a13f9..00f550c 100644 --- a/ash/public/cpp/app_list/app_list_controller.h +++ b/ash/public/cpp/app_list/app_list_controller.h
@@ -38,12 +38,11 @@ virtual AppListClient* GetClient() = 0; // Adds an item to AppListModel. - virtual void AddItem(std::unique_ptr<ash::AppListItemMetadata> app_item) = 0; + virtual void AddItem(std::unique_ptr<AppListItemMetadata> app_item) = 0; // Adds an item into a certain folder in AppListModel. - virtual void AddItemToFolder( - std::unique_ptr<ash::AppListItemMetadata> app_item, - const std::string& folder_id) = 0; + virtual void AddItemToFolder(std::unique_ptr<AppListItemMetadata> app_item, + const std::string& folder_id) = 0; // Removes an item by its id from AppListModel. virtual void RemoveItem(const std::string& id) = 0; @@ -58,11 +57,11 @@ // Tells Ash what the current status of AppListModel should be, // e.g. the model is under synchronization or in normal status. - virtual void SetStatus(ash::AppListModelStatus status) = 0; + virtual void SetStatus(AppListModelStatus status) = 0; // Tells Ash what the current state of the app list should be, // e.g. the user is searching for something, or showing apps, etc. - virtual void SetState(ash::AppListState state) = 0; + virtual void SetState(AppListState state) = 0; // Highlights the given item in the app list. If not present and it is later // added, the item will be highlighted after being added. @@ -86,12 +85,11 @@ // Publishes search results to Ash to render them. virtual void PublishSearchResults( - std::vector<std::unique_ptr<ash::SearchResultMetadata>> results) = 0; + std::vector<std::unique_ptr<SearchResultMetadata>> results) = 0; // Updates an item's metadata (e.g. name, position, etc). - virtual void SetItemMetadata( - const std::string& id, - std::unique_ptr<ash::AppListItemMetadata> data) = 0; + virtual void SetItemMetadata(const std::string& id, + std::unique_ptr<AppListItemMetadata> data) = 0; // Updates an item's icon. virtual void SetItemIcon(const std::string& id, @@ -108,12 +106,12 @@ // Update the whole model, usually when profile changes happen in Chrome. virtual void SetModelData( int profile_id, - std::vector<std::unique_ptr<ash::AppListItemMetadata>> apps, + std::vector<std::unique_ptr<AppListItemMetadata>> apps, bool is_search_engine_google) = 0; // Updates a search rresult's metadata. virtual void SetSearchResultMetadata( - std::unique_ptr<ash::SearchResultMetadata> metadata) = 0; + std::unique_ptr<SearchResultMetadata> metadata) = 0; // Updates whether a search result is being installed. virtual void SetSearchResultIsInstalling(const std::string& id, @@ -150,7 +148,7 @@ // Ash. // |oem_folder|: the meta data of the OEM folder, or null if it doesn't exist. using ResolveOemFolderPositionCallback = - base::OnceCallback<void(std::unique_ptr<ash::AppListItemMetadata>)>; + base::OnceCallback<void(std::unique_ptr<AppListItemMetadata>)>; virtual void ResolveOemFolderPosition( const syncer::StringOrdinal& preferred_oem_position, ResolveOemFolderPositionCallback callback) = 0;
diff --git a/ash/public/cpp/app_list/app_list_metrics.cc b/ash/public/cpp/app_list/app_list_metrics.cc index 50d0c3b..7b6ba70d1 100644 --- a/ash/public/cpp/app_list/app_list_metrics.cc +++ b/ash/public/cpp/app_list/app_list_metrics.cc
@@ -45,17 +45,16 @@ namespace ash { -void RecordSearchResultOpenTypeHistogram( - ash::AppListLaunchedFrom launch_location, - SearchResultType type, - bool is_tablet_mode) { +void RecordSearchResultOpenTypeHistogram(AppListLaunchedFrom launch_location, + SearchResultType type, + bool is_tablet_mode) { if (type == SEARCH_RESULT_TYPE_BOUNDARY) { NOTREACHED(); return; } switch (launch_location) { - case ash::AppListLaunchedFrom::kLaunchedFromSearchBox: + case AppListLaunchedFrom::kLaunchedFromSearchBox: UMA_HISTOGRAM_ENUMERATION(kAppListSearchResultOpenTypeHistogram, type, SEARCH_RESULT_TYPE_BOUNDARY); if (is_tablet_mode) { @@ -67,7 +66,7 @@ SEARCH_RESULT_TYPE_BOUNDARY); } break; - case ash::AppListLaunchedFrom::kLaunchedFromSuggestionChip: + case AppListLaunchedFrom::kLaunchedFromSuggestionChip: if (is_tablet_mode) { UMA_HISTOGRAM_ENUMERATION( kAppListSuggestionChipOpenTypeHistogramInTablet, type, @@ -78,8 +77,8 @@ SEARCH_RESULT_TYPE_BOUNDARY); } break; - case ash::AppListLaunchedFrom::kLaunchedFromShelf: - case ash::AppListLaunchedFrom::kLaunchedFromGrid: + case AppListLaunchedFrom::kLaunchedFromShelf: + case AppListLaunchedFrom::kLaunchedFromGrid: // Search results don't live in the shelf or the app grid. NOTREACHED(); break; @@ -109,9 +108,8 @@ } } -void RecordSuccessfulAppLaunchUsingSearch( - ash::AppListLaunchedFrom launched_from, - int query_length) { +void RecordSuccessfulAppLaunchUsingSearch(AppListLaunchedFrom launched_from, + int query_length) { if (query_length > 0) { UMA_HISTOGRAM_ENUMERATION(kSearchSuccessAppLaunch, launched_from); UMA_HISTOGRAM_COUNTS_100(kSearchQueryLengthAppLaunch, query_length);
diff --git a/ash/public/cpp/app_list/app_list_metrics.h b/ash/public/cpp/app_list/app_list_metrics.h index 4518121..4017ff7d 100644 --- a/ash/public/cpp/app_list/app_list_metrics.h +++ b/ash/public/cpp/app_list/app_list_metrics.h
@@ -85,7 +85,7 @@ }; ASH_PUBLIC_EXPORT void RecordSearchResultOpenTypeHistogram( - ash::AppListLaunchedFrom launch_location, + AppListLaunchedFrom launch_location, SearchResultType type, bool is_tablet_mode); @@ -98,7 +98,7 @@ ASH_PUBLIC_EXPORT void RecordLauncherIssuedSearchQueryLength(int query_length); ASH_PUBLIC_EXPORT void RecordSuccessfulAppLaunchUsingSearch( - ash::AppListLaunchedFrom launched_from, + AppListLaunchedFrom launched_from, int query_length); } // namespace ash
diff --git a/ash/public/cpp/app_list/app_list_types.cc b/ash/public/cpp/app_list/app_list_types.cc index 0403449..a694e725f 100644 --- a/ash/public/cpp/app_list/app_list_types.cc +++ b/ash/public/cpp/app_list/app_list_types.cc
@@ -19,11 +19,11 @@ OmniBoxZeroStateAction GetOmniBoxZeroStateAction(int button_index) { if (button_index < 0 || button_index >= - static_cast<int>(ash::OmniBoxZeroStateAction::kZeroStateActionMax)) { - return ash::OmniBoxZeroStateAction::kZeroStateActionMax; + static_cast<int>(OmniBoxZeroStateAction::kZeroStateActionMax)) { + return OmniBoxZeroStateAction::kZeroStateActionMax; } - return static_cast<ash::OmniBoxZeroStateAction>(button_index); + return static_cast<OmniBoxZeroStateAction>(button_index); } ////////////////////////////////////////////////////////////////////////////////
diff --git a/ash/public/cpp/ash_features.cc b/ash/public/cpp/ash_features.cc index e4ae16a..c7e979a3 100644 --- a/ash/public/cpp/ash_features.cc +++ b/ash/public/cpp/ash_features.cc
@@ -13,7 +13,7 @@ namespace features { const base::Feature kAllowAmbientEQ{"AllowAmbientEQ", - base::FEATURE_ENABLED_BY_DEFAULT}; + base::FEATURE_DISABLED_BY_DEFAULT}; const base::Feature kAutoNightLight{"AutoNightLight", base::FEATURE_DISABLED_BY_DEFAULT};
diff --git a/ash/public/cpp/assistant/assistant_state_base.h b/ash/public/cpp/assistant/assistant_state_base.h index 8b43e55..ebbfb14 100644 --- a/ash/public/cpp/assistant/assistant_state_base.h +++ b/ash/public/cpp/assistant/assistant_state_base.h
@@ -37,9 +37,9 @@ virtual void OnAssistantNotificationEnabled(bool notification_enabled) {} // mojom::AssistantStateObserver: - void OnAssistantStatusChanged(ash::mojom::AssistantState state) override {} + void OnAssistantStatusChanged(mojom::AssistantState state) override {} void OnAssistantFeatureAllowedChanged( - ash::mojom::AssistantAllowedState state) override {} + mojom::AssistantAllowedState state) override {} void OnArcPlayStoreEnabledChanged(bool enabled) override {} void OnLocaleChanged(const std::string& locale) override {} void OnLockedFullScreenStateChanged(bool enabled) override {}
diff --git a/ash/public/cpp/cast_config_controller.h b/ash/public/cpp/cast_config_controller.h index 132c9d43..102fa22 100644 --- a/ash/public/cpp/cast_config_controller.h +++ b/ash/public/cpp/cast_config_controller.h
@@ -97,7 +97,7 @@ // registered observers will get called. virtual void RequestDeviceRefresh() = 0; - virtual const std::vector<ash::SinkAndRoute>& GetSinksAndRoutes() = 0; + virtual const std::vector<SinkAndRoute>& GetSinksAndRoutes() = 0; // Initiate a casting session to the sink identified by |sink_id|. virtual void CastToSink(const std::string& sink_id) = 0;
diff --git a/ash/public/cpp/default_scale_factor_retriever.cc b/ash/public/cpp/default_scale_factor_retriever.cc index 07ba5d0..02462ac 100644 --- a/ash/public/cpp/default_scale_factor_retriever.cc +++ b/ash/public/cpp/default_scale_factor_retriever.cc
@@ -13,7 +13,7 @@ DefaultScaleFactorRetriever::DefaultScaleFactorRetriever() {} void DefaultScaleFactorRetriever::Start( - mojo::PendingRemote<ash::mojom::CrosDisplayConfigController> + mojo::PendingRemote<mojom::CrosDisplayConfigController> cros_display_config) { cros_display_config_.Bind(std::move(cros_display_config)); auto callback = base::BindOnce( @@ -23,10 +23,10 @@ /*single_unified=*/false, base::BindOnce( [](GetDefaultScaleFactorCallback callback, - std::vector<ash::mojom::DisplayUnitInfoPtr> info_list) { + std::vector<mojom::DisplayUnitInfoPtr> info_list) { // TODO(oshima): This does not return correct value in docked // mode. - for (const ash::mojom::DisplayUnitInfoPtr& info : info_list) { + for (const mojom::DisplayUnitInfoPtr& info : info_list) { if (info->is_internal) { DCHECK(info->available_display_modes.size()); std::move(callback).Run(
diff --git a/ash/public/cpp/default_scale_factor_retriever_unittest.cc b/ash/public/cpp/default_scale_factor_retriever_unittest.cc index 7a383b0..1e075c90 100644 --- a/ash/public/cpp/default_scale_factor_retriever_unittest.cc +++ b/ash/public/cpp/default_scale_factor_retriever_unittest.cc
@@ -84,7 +84,7 @@ TEST_F(DefaultScaleFactorRetrieverTest, Basic) { display::Display::SetInternalDisplayId(TestCrosDisplayConfig::kFakeDisplayId); auto display_config = std::make_unique<TestCrosDisplayConfig>(); - auto retriever = std::make_unique<ash::DefaultScaleFactorRetriever>(); + auto retriever = std::make_unique<DefaultScaleFactorRetriever>(); auto callback = [](float* result, float default_scale_factor) { result[0] = default_scale_factor; @@ -118,7 +118,7 @@ TEST_F(DefaultScaleFactorRetrieverTest, Cancel) { display::Display::SetInternalDisplayId(TestCrosDisplayConfig::kFakeDisplayId); auto display_config = std::make_unique<TestCrosDisplayConfig>(); - auto retriever = std::make_unique<ash::DefaultScaleFactorRetriever>(); + auto retriever = std::make_unique<DefaultScaleFactorRetriever>(); auto callback = [](float* result, float default_scale_factor) { result[0] = default_scale_factor;
diff --git a/ash/public/cpp/event_rewriter_controller.h b/ash/public/cpp/event_rewriter_controller.h index 48b10ed..41be3da 100644 --- a/ash/public/cpp/event_rewriter_controller.h +++ b/ash/public/cpp/event_rewriter_controller.h
@@ -28,7 +28,7 @@ // Initializes this controller after ash::Shell finishes initialization. virtual void Initialize( ui::EventRewriterChromeOS::Delegate* event_rewriter_delegate, - ash::SpokenFeedbackEventRewriterDelegate* + SpokenFeedbackEventRewriterDelegate* spoken_feedback_event_rewriter_delegate) = 0; // Takes ownership of |rewriter| and adds it to the current event sources.
diff --git a/ash/public/cpp/rounded_corner_decorator_unittest.cc b/ash/public/cpp/rounded_corner_decorator_unittest.cc index 2d75f6a..5681b23c 100644 --- a/ash/public/cpp/rounded_corner_decorator_unittest.cc +++ b/ash/public/cpp/rounded_corner_decorator_unittest.cc
@@ -21,7 +21,7 @@ constexpr gfx::RoundedCornersF kRadii(kCornerRadius); std::unique_ptr<aura::Window> window(aura::test::CreateTestWindowWithBounds( gfx::Rect(100, 100, 100, 100), root_window())); - auto decorator = std::make_unique<ash::RoundedCornerDecorator>( + auto decorator = std::make_unique<RoundedCornerDecorator>( window.get(), window.get(), window->layer(), kCornerRadius); // Confirm a mask layer exists and the decorator is valid. @@ -44,7 +44,7 @@ constexpr gfx::RoundedCornersF kRadii(kCornerRadius); std::unique_ptr<aura::Window> window(aura::test::CreateTestWindowWithBounds( gfx::Rect(100, 100, 100, 100), root_window())); - auto decorator = std::make_unique<ash::RoundedCornerDecorator>( + auto decorator = std::make_unique<RoundedCornerDecorator>( window.get(), window.get(), window->layer(), kCornerRadius); ASSERT_FALSE(window->layer()->layer_mask_layer());
diff --git a/ash/public/cpp/shelf_config.h b/ash/public/cpp/shelf_config.h index 232f5766..8bb2efe 100644 --- a/ash/public/cpp/shelf_config.h +++ b/ash/public/cpp/shelf_config.h
@@ -175,8 +175,8 @@ // all observers. void OnShelfConfigUpdated(); - // Updates |is_dense_| and notifies all observers of the update. - void UpdateIsDense(); + // Updates |is_dense_| and returns whether |is_dense_| was changed. + bool UpdateIsDense(); // Gets the current shelf size. // |ignore_in_app_state| - Whether the returned shelf size should be
diff --git a/ash/public/cpp/shelf_model.cc b/ash/public/cpp/shelf_model.cc index be3e1c1..9d7daad 100644 --- a/ash/public/cpp/shelf_model.cc +++ b/ash/public/cpp/shelf_model.cc
@@ -144,6 +144,19 @@ return item; } +bool ShelfModel::Swap(int index, bool with_next) { + const int target_index = with_next ? index + 1 : index - 1; + + if (index < 0 || target_index >= item_count() || target_index < 0) + return false; + + // Only allow swapping two pinned apps or two unpinned apps. + if (!SamePinState(items()[index].type, items()[target_index].type)) + return false; + Move(index, target_index); + return true; +} + void ShelfModel::Move(int index, int target_index) { if (index == target_index) return;
diff --git a/ash/public/cpp/shelf_model.h b/ash/public/cpp/shelf_model.h index 1dce285a..a7201db 100644 --- a/ash/public/cpp/shelf_model.h +++ b/ash/public/cpp/shelf_model.h
@@ -84,6 +84,11 @@ std::unique_ptr<ShelfItemDelegate> RemoveItemAndTakeShelfItemDelegate( const ShelfID& shelf_id); + // Swaps the item at the given index with the next one if |with_next| is + // true, or with the previous one if |with_next| is false. Returns true + // if the requested swap has happened, and false otherwise. + bool Swap(int index, bool with_next); + // Moves the item at |index| to |target_index|. |target_index| is in terms // of the model *after* the item at |index| is removed. void Move(int index, int target_index);
diff --git a/ash/session/session_controller_impl.cc b/ash/session/session_controller_impl.cc index 54ddd1e..111ca8e 100644 --- a/ash/session/session_controller_impl.cc +++ b/ash/session/session_controller_impl.cc
@@ -422,9 +422,8 @@ void SessionControllerImpl::CanSwitchActiveUser( CanSwitchActiveUserCallback callback) { - ash::Shell::Get() - ->screen_switch_check_controller() - ->CanSwitchAwayFromActiveUser(std::move(callback)); + Shell::Get()->screen_switch_check_controller()->CanSwitchAwayFromActiveUser( + std::move(callback)); } void SessionControllerImpl::ShowMultiprofilesIntroDialog(
diff --git a/ash/session/test_session_controller_client.h b/ash/session/test_session_controller_client.h index e2accf3..88e4a242 100644 --- a/ash/session/test_session_controller_client.h +++ b/ash/session/test_session_controller_client.h
@@ -38,7 +38,7 @@ // SessionControllerClient created, e.g. InProcessBrowserTest based tests. On // the other hand, tests code in chrome can use this class as long as it does // not run BrowserMain, e.g. testing::Test based test. -class TestSessionControllerClient : public ash::SessionControllerClient { +class TestSessionControllerClient : public SessionControllerClient { public: TestSessionControllerClient(SessionControllerImpl* controller, TestPrefServiceProvider* prefs_provider);
diff --git a/ash/shelf/home_button.cc b/ash/shelf/home_button.cc index ee49ea4..4d1a736 100644 --- a/ash/shelf/home_button.cc +++ b/ash/shelf/home_button.cc
@@ -173,13 +173,10 @@ const gfx::Rect& rect) const { DCHECK_EQ(target, this); gfx::Rect button_bounds = target->GetLocalBounds(); - // Increase clickable area for the button from - // (kShelfControlSize x kShelfButtonSize) to - // (kShelfButtonSize x kShelfButtonSize). - int left_offset = button_bounds.width() - ShelfConfig::Get()->button_size(); - int bottom_offset = - button_bounds.height() - ShelfConfig::Get()->button_size(); - button_bounds.Inset(gfx::Insets(0, left_offset, bottom_offset, 0)); + // Increase clickable area for the button to account for clicks around the + // spacing. This will not intercept events outside of the parent widget. + button_bounds.Inset( + gfx::Insets(-ShelfConfig::Get()->home_button_edge_spacing())); return button_bounds.Intersects(rect); }
diff --git a/ash/shelf/home_button_unittest.cc b/ash/shelf/home_button_unittest.cc index 333b94d..1851eab 100644 --- a/ash/shelf/home_button_unittest.cc +++ b/ash/shelf/home_button_unittest.cc
@@ -178,7 +178,8 @@ ->shelf_widget() ->navigation_widget() ->get_bounds_animator_for_testing()); - EXPECT_EQ(home_button()->bounds().x(), 0); + EXPECT_EQ(home_button()->bounds().x(), + ShelfConfig::Get()->home_button_edge_spacing()); // Switch to in-app shelf. std::unique_ptr<views::Widget> widget = CreateTestWidget(); @@ -199,8 +200,9 @@ ->navigation_widget() ->get_bounds_animator_for_testing()); - // Visual space around the home button is set at the widget level. - EXPECT_EQ(0, home_button()->bounds().x()); + // Home button spacing is within the widget. + EXPECT_EQ(ShelfConfig::Get()->home_button_edge_spacing(), + home_button()->bounds().x()); } TEST_P(HomeButtonTest, LongPressGesture) { @@ -290,4 +292,75 @@ ->visibility()); } +// Tests that tapping in the bottom left corner in tablet mode results in the +// home button activating. +TEST_P(HomeButtonTest, InteractOutsideHomeButtonBounds) { + EXPECT_EQ(ShelfAlignment::kBottom, GetPrimaryShelf()->alignment()); + + // Tap the bottom left of the shelf. The button should work. + gfx::Point bottom_left = GetPrimaryShelf() + ->shelf_widget() + ->GetWindowBoundsInScreen() + .bottom_left(); + GetEventGenerator()->GestureTapAt(bottom_left); + GetAppListTestHelper()->WaitUntilIdle(); + GetAppListTestHelper()->CheckVisibility(true); + + // Tap the top left of the shelf, the button should work. + gfx::Point bottom_right = GetPrimaryShelf() + ->shelf_widget() + ->GetWindowBoundsInScreen() + .bottom_right(); + GetEventGenerator()->GestureTapAt(bottom_right); + GetAppListTestHelper()->WaitUntilIdle(); + GetAppListTestHelper()->CheckVisibility(false); + + // Test left shelf. + GetPrimaryShelf()->SetAlignment(ShelfAlignment::kLeft); + gfx::Point top_left = + GetPrimaryShelf()->shelf_widget()->GetWindowBoundsInScreen().origin(); + GetEventGenerator()->GestureTapAt(top_left); + GetAppListTestHelper()->WaitUntilIdle(); + GetAppListTestHelper()->CheckVisibility(true); + + bottom_left = GetPrimaryShelf() + ->shelf_widget() + ->GetWindowBoundsInScreen() + .bottom_left(); + GetEventGenerator()->GestureTapAt(bottom_left); + GetAppListTestHelper()->WaitUntilIdle(); + GetAppListTestHelper()->CheckVisibility(false); + + // Test right shelf. + GetPrimaryShelf()->SetAlignment(ShelfAlignment::kRight); + gfx::Point top_right = + GetPrimaryShelf()->shelf_widget()->GetWindowBoundsInScreen().top_right(); + GetEventGenerator()->GestureTapAt(top_right); + GetAppListTestHelper()->WaitUntilIdle(); + GetAppListTestHelper()->CheckVisibility(true); + + bottom_right = GetPrimaryShelf() + ->shelf_widget() + ->GetWindowBoundsInScreen() + .bottom_right(); + GetEventGenerator()->GestureTapAt(bottom_right); + GetAppListTestHelper()->WaitUntilIdle(); + GetAppListTestHelper()->CheckVisibility(false); +} + +// Tests that clicking the corner of the display opens the AppList. +TEST_P(HomeButtonTest, ClickOnCornerPixel) { + // Screen corners are extremely easy to reach with a mouse. Let's make sure + // that a click on the bottom-left corner (or bottom-right corner in RTL) + // can trigger the home button. + gfx::Point corner( + 0, display::Screen::GetScreen()->GetPrimaryDisplay().bounds().height()); + + GetAppListTestHelper()->CheckVisibility(false); + GetEventGenerator()->MoveMouseTo(corner); + GetEventGenerator()->ClickLeftButton(); + GetAppListTestHelper()->WaitUntilIdle(); + GetAppListTestHelper()->CheckVisibility(true); +} + } // namespace ash
diff --git a/ash/shelf/shelf_button.h b/ash/shelf/shelf_button.h index 76a82891..6edb344d 100644 --- a/ash/shelf/shelf_button.h +++ b/ash/shelf/shelf_button.h
@@ -26,6 +26,7 @@ std::unique_ptr<views::InkDrop> CreateInkDrop() override; Shelf* shelf() { return shelf_; } + const Shelf* shelf() const { return shelf_; } protected: ShelfButtonDelegate* shelf_button_delegate() {
diff --git a/ash/shelf/shelf_config.cc b/ash/shelf/shelf_config.cc index dd1033b..495df8b 100644 --- a/ash/shelf/shelf_config.cc +++ b/ash/shelf/shelf_config.cc
@@ -61,7 +61,9 @@ shelf_blur_radius_(30), mousewheel_scroll_offset_threshold_(20), in_app_control_button_height_inset_(4) { - UpdateIsDense(); + // Ensure ShelfConfig observers are notified if |is_dense_| is updated. + if (UpdateIsDense()) + OnShelfConfigUpdated(); } ShelfConfig::~ShelfConfig() = default; @@ -100,16 +102,22 @@ } void ShelfConfig::OnTabletModeStarted() { - UpdateIsDense(); + // Ensure ShelfConfig observers are notified if |is_dense_| is updated. + if (UpdateIsDense()) + OnShelfConfigUpdated(); } void ShelfConfig::OnTabletModeEnded() { - UpdateIsDense(); + // Ensure ShelfConfig observers are notified if |is_dense_| is updated. + if (UpdateIsDense()) + OnShelfConfigUpdated(); } void ShelfConfig::OnDisplayMetricsChanged(const display::Display& display, uint32_t changed_metrics) { - UpdateIsDense(); + // Ensure ShelfConfig observers are notified if |is_dense_| is updated. + if (UpdateIsDense()) + OnShelfConfigUpdated(); } void ShelfConfig::OnAppListVisibilityWillChange(bool shown, @@ -119,6 +127,13 @@ DCHECK_NE(is_app_list_visible_, shown); is_app_list_visible_ = shown; + + // Ensure |is_dense_| is updated since this code path can be triggered + // by a tablet mode change before the tablet mode change has propagated to + // ShelfConfig. Updating |is_dense_| here will minimize the number of times + // OnShelfConfigUpdated() is called during a tablet mode change. + UpdateIsDense(); + OnShelfConfigUpdated(); } @@ -208,7 +223,7 @@ !is_app_list_visible_; } -void ShelfConfig::UpdateIsDense() { +bool ShelfConfig::UpdateIsDense() { const gfx::Rect screen_size = display::Screen::GetScreen()->GetPrimaryDisplay().bounds(); @@ -218,10 +233,10 @@ (screen_size.width() <= kDenseShelfScreenSizeThreshold || screen_size.height() <= kDenseShelfScreenSizeThreshold)); if (new_is_dense == is_dense_) - return; + return false; is_dense_ = new_is_dense; - OnShelfConfigUpdated(); + return true; } int ShelfConfig::GetShelfSize(bool ignore_in_app_state) const {
diff --git a/ash/shelf/shelf_control_button.cc b/ash/shelf/shelf_control_button.cc index 181fcca..7b28f0ab 100644 --- a/ash/shelf/shelf_control_button.cc +++ b/ash/shelf/shelf_control_button.cc
@@ -89,6 +89,7 @@ if (chromeos::switches::ShouldShowShelfHotseat() && Shell::Get()->tablet_mode_controller()->InTabletMode() && ShelfConfig::Get()->is_in_app()) { + // Control button highlights are oval in in-app, so adjust the insets. return std::make_unique<views::RoundRectInkDropMask>( size(), gfx::Insets(ShelfConfig::Get()->in_app_control_button_height_inset(),
diff --git a/ash/shelf/shelf_layout_manager.cc b/ash/shelf/shelf_layout_manager.cc index e2130bf..fce0b11 100644 --- a/ash/shelf/shelf_layout_manager.cc +++ b/ash/shelf/shelf_layout_manager.cc
@@ -684,7 +684,7 @@ } // Unexpected event. Reset the state and let the event fall through. - CancelDrag(); + CancelDrag(base::nullopt); return false; } @@ -856,7 +856,7 @@ if (drag_status_ == kDragInProgress || drag_status_ == kDragAppListInProgress || drag_status_ == kDragHomeToOverviewInProgress) { - CancelDrag(); + CancelDrag(base::nullopt); } } @@ -1622,11 +1622,15 @@ status_origin.set_x(shelf_width - status_size.width()); target_bounds_.status_bounds_in_shelf = gfx::Rect(status_origin, status_size); - gfx::Point nav_origin = - gfx::Point(home_button_edge_spacing, home_button_edge_spacing); - const gfx::Size nav_size = shelf_widget_->navigation_widget()->GetIdealSize(); + gfx::Point nav_origin = gfx::Point(); + gfx::Size nav_size = shelf_widget_->navigation_widget()->GetIdealSize(); + + // Enlarge the widget to take up available space, this ensures events which + // are outside of the HomeButton bounds can be received. + nav_size.Enlarge(home_button_edge_spacing, home_button_edge_spacing); + if (shelf_->IsHorizontalAlignment() && base::i18n::IsRTL()) - nav_origin.set_x(shelf_width - nav_size.width() - nav_origin.x()); + nav_origin.set_x(shelf_width - nav_size.width()); target_bounds_.nav_bounds_in_shelf = gfx::Rect(nav_origin, nav_size); gfx::Point hotseat_origin; @@ -2405,8 +2409,8 @@ void ShelfLayoutManager::CompleteDrag(const ui::LocatedEvent& event_in_screen) { // End the possible window drag before checking the shelf visibility. - base::Optional<ShelfWindowDragResult> window_drag_result = - MaybeEndWindowDrag(event_in_screen); + base::Optional<DragWindowFromShelfController::ShelfWindowDragResult> + window_drag_result = MaybeEndWindowDrag(event_in_screen); HotseatState old_hotseat_state = hotseat_state(); const bool transitioned_from_overview_to_home = @@ -2421,7 +2425,7 @@ if (ShouldChangeVisibilityAfterDrag(event_in_screen)) CompleteDragWithChangedVisibility(); else - CancelDrag(); + CancelDrag(window_drag_result); // Hotseat gestures are meaningful only in tablet mode with hotseat enabled. if (chromeos::switches::ShouldShowShelfHotseat() && IsTabletModeEnabled()) { @@ -2470,7 +2474,9 @@ drag_status_ = kDragNone; } -void ShelfLayoutManager::CancelDrag() { +void ShelfLayoutManager::CancelDrag( + base::Optional<DragWindowFromShelfController::ShelfWindowDragResult> + window_drag_result) { if (drag_status_ == kDragAppListInProgress || drag_status_ == kDragHomeToOverviewInProgress) { HomeLauncherGestureHandler* home_launcher_handler = @@ -2494,7 +2500,12 @@ // extending the hotseat was not the primary goal of the gesture. shelf_widget_->hotseat_widget()->set_manually_extended( hotseat_state() == HotseatState::kExtended && - !Shell::Get()->overview_controller()->InOverviewSession()); + (!Shell::Get()->overview_controller()->InOverviewSession() || + (window_drag_result.has_value() && + window_drag_result.value() == + DragWindowFromShelfController::ShelfWindowDragResult:: + kRestoreToOriginalBounds))); + hotseat_presentation_time_recorder_.reset(); } hotseat_is_in_drag_ = false;
diff --git a/ash/shelf/shelf_layout_manager.h b/ash/shelf/shelf_layout_manager.h index 49b3e7f..96370f77 100644 --- a/ash/shelf/shelf_layout_manager.h +++ b/ash/shelf/shelf_layout_manager.h
@@ -510,7 +510,9 @@ float scroll_y); void CompleteDrag(const ui::LocatedEvent& event_in_screen); void CompleteAppListDrag(const ui::LocatedEvent& event_in_screen); - void CancelDrag(); + void CancelDrag( + base::Optional<DragWindowFromShelfController::ShelfWindowDragResult> + window_drag_result); void CompleteDragWithChangedVisibility(); float GetAppListBackgroundOpacityOnShelfOpacity();
diff --git a/ash/shelf/shelf_layout_manager_unittest.cc b/ash/shelf/shelf_layout_manager_unittest.cc index aed7e0ad..27b3aa1 100644 --- a/ash/shelf/shelf_layout_manager_unittest.cc +++ b/ash/shelf/shelf_layout_manager_unittest.cc
@@ -3983,6 +3983,47 @@ EXPECT_EQ(HotseatState::kHidden, GetShelfLayoutManager()->hotseat_state()); } +// Tests that failing to drag the maximized window to overview mode results in +// an extended hotseat. +TEST_P(HotseatShelfLayoutManagerTest, + FailingOverviewDragResultsInExtendedHotseat) { + base::test::ScopedFeatureList scoped_features; + scoped_features.InitAndEnableFeature( + features::kDragFromShelfToHomeOrOverview); + + const ShelfAutoHideBehavior auto_hide_behavior = GetParam(); + GetPrimaryShelf()->SetAutoHideBehavior(auto_hide_behavior); + TabletModeControllerTestApi().EnterTabletMode(); + + std::unique_ptr<aura::Window> window = + AshTestBase::CreateTestWindow(gfx::Rect(0, 0, 400, 400)); + wm::ActivateWindow(window.get()); + + // If the shelf is auto-hidden, swipe up to bring up shelf and hotseat first + // (otherwise, the window drag to overview will not be handled). + if (auto_hide_behavior == ShelfAutoHideBehavior::kAlways) { + SwipeUpOnShelf(); + ASSERT_EQ(HotseatState::kExtended, + GetShelfLayoutManager()->hotseat_state()); + } + + // Swipe up to start dragging the active window. + const gfx::Rect bottom_shelf_bounds = + GetShelfWidget()->GetWindowBoundsInScreen(); + StartScroll(bottom_shelf_bounds.top_center()); + + // Drag upward, a bit past the hotseat extended height but not enough to go to + // overview. + const int extended_hotseat_distance_from_top_of_shelf = + ShelfConfig::Get()->hotseat_bottom_padding() + + ShelfConfig::Get()->hotseat_size(); + UpdateScroll(-extended_hotseat_distance_from_top_of_shelf - 30); + EndScroll(/*is_fling=*/false, 0.f); + + ASSERT_FALSE(Shell::Get()->overview_controller()->InOverviewSession()); + EXPECT_EQ(HotseatState::kExtended, GetShelfLayoutManager()->hotseat_state()); +} + // Tests that hotseat remains in extended state while in overview mode when // flinging the shelf up or down. TEST_P(HotseatShelfLayoutManagerTest, SwipeOnHotseatInOverview) { @@ -4862,8 +4903,7 @@ EXPECT_FALSE(GetShelfWidget()->GetOpaqueBackground()->visible()); } -// Tests that closing a window which was opened prior to entering tablet mode -// results in a kShown hotseat. +// Tests that the hotseat is extended if focused with a keyboard. TEST_F(HotseatShelfLayoutManagerTest, ExtendHotseatIfFocusedWithKeyboard) { TabletModeControllerTestApi().EnterTabletMode(); std::unique_ptr<aura::Window> window = @@ -4894,7 +4934,7 @@ EXPECT_EQ(HotseatState::kExtended, GetShelfLayoutManager()->hotseat_state()); } -// Tests that if the hotseat was hidden while being focused, doing a trasversal +// Tests that if the hotseat was hidden while being focused, doing a traversal // focus on the next element brings it up again. TEST_F(HotseatShelfLayoutManagerTest, SwipeDownOnFocusedHotseat) { TabletModeControllerTestApi().EnterTabletMode();
diff --git a/ash/shelf/shelf_navigation_widget.cc b/ash/shelf/shelf_navigation_widget.cc index fd4ed79..312b2d05 100644 --- a/ash/shelf/shelf_navigation_widget.cc +++ b/ash/shelf/shelf_navigation_widget.cc
@@ -38,7 +38,12 @@ // Returns the bounds for the first button shown in this view (the back // button in tablet mode, the home button otherwise). gfx::Rect GetFirstButtonBounds() { - return gfx::Rect(0, 0, ShelfConfig::Get()->control_size(), + // ShelfNavigationWidget is larger than the buttons in order to enable child + // views to capture events nearby. + const int home_button_edge_spacing = + ShelfConfig::Get()->home_button_edge_spacing(); + return gfx::Rect(home_button_edge_spacing, home_button_edge_spacing, + ShelfConfig::Get()->control_size(), ShelfConfig::Get()->control_size()); } @@ -46,10 +51,13 @@ // always the home button and only in tablet mode, which implies a horizontal // shelf). gfx::Rect GetSecondButtonBounds() { - return gfx::Rect( - ShelfConfig::Get()->control_size() + ShelfConfig::Get()->button_spacing(), - 0, ShelfConfig::Get()->control_size(), - ShelfConfig::Get()->control_size()); + const int home_button_edge_spacing = + ShelfConfig::Get()->home_button_edge_spacing(); + return gfx::Rect(home_button_edge_spacing + + ShelfConfig::Get()->control_size() + + ShelfConfig::Get()->button_spacing(), + home_button_edge_spacing, ShelfConfig::Get()->control_size(), + ShelfConfig::Get()->control_size()); } bool IsBackButtonShown() { @@ -151,7 +159,13 @@ if (opaque_background_.rounded_corner_radii() != rounded_corners) opaque_background_.SetRoundedCornerRadius(rounded_corners); - opaque_background_.SetBounds(GetLocalBounds()); + // The opaque background does not show up when there are two buttons. + gfx::Rect opaque_background_bounds = GetFirstButtonBounds(); + if (base::i18n::IsRTL()) { + opaque_background_bounds.set_x( + 2 * ShelfConfig::Get()->home_button_edge_spacing()); + } + opaque_background_.SetBounds(opaque_background_bounds); opaque_background_.SetBackgroundBlur( ShelfConfig::Get()->GetShelfControlButtonBlurRadius()); } @@ -240,13 +254,19 @@ gfx::Size ShelfNavigationWidget::GetIdealSize() const { const int control_size = ShelfConfig::Get()->control_size(); - if (!shelf_->IsHorizontalAlignment()) - return gfx::Size(control_size, control_size); + const int home_button_edge_spacing = + ShelfConfig::Get()->home_button_edge_spacing(); - return gfx::Size(IsBackButtonShown() ? (2 * control_size + - ShelfConfig::Get()->button_spacing()) - : control_size, - control_size); + if (!shelf_->IsHorizontalAlignment()) + return gfx::Size(home_button_edge_spacing + control_size, + home_button_edge_spacing + control_size); + + return gfx::Size( + 2 * home_button_edge_spacing + + (IsBackButtonShown() + ? (2 * control_size + ShelfConfig::Get()->button_spacing()) + : control_size), + 2 * home_button_edge_spacing + control_size); } void ShelfNavigationWidget::OnMouseEvent(ui::MouseEvent* event) {
diff --git a/ash/shelf/shelf_view.cc b/ash/shelf/shelf_view.cc index 47b39f4..85c2a20 100644 --- a/ash/shelf/shelf_view.cc +++ b/ash/shelf/shelf_view.cc
@@ -1395,9 +1395,6 @@ void ShelfView::SwapButtons(views::View* button_to_swap, bool with_next) { if (!button_to_swap) return; - // We don't allow reordering of buttons that aren't app buttons. - if (button_to_swap->GetClassName() != ShelfAppButton::kViewClassName) - return; // Find the index of the button to swap in the view model. int src_index = -1; @@ -1410,23 +1407,19 @@ } const int target_index = with_next ? src_index + 1 : src_index - 1; + // TODO(manucornet): Remove this restriction once we get rid of overflow + // bubbles in favor of a scrollable shelf. const int first_swappable_index = std::max(first_visible_index_, 0); const int last_swappable_index = last_visible_index_; - if (src_index == -1 || (target_index > last_swappable_index) || - (target_index < first_swappable_index)) { - return; - } - - // Only allow swapping two pinned apps or two unpinned apps. - if (!SamePinState(model_->items()[src_index].type, - model_->items()[target_index].type)) { + if (target_index > last_swappable_index || + target_index < first_swappable_index) { return; } // Swapping items in the model is sufficient, everything will then be // reflected in the views. - model_->Move(src_index, target_index); - AnimateToIdealBounds(); + if (model_->Swap(src_index, with_next)) + AnimateToIdealBounds(); // TODO(manucornet): Announce the swap to screen readers. }
diff --git a/ash/shelf/shelf_view_unittest.cc b/ash/shelf/shelf_view_unittest.cc index c0282f8..4647227 100644 --- a/ash/shelf/shelf_view_unittest.cc +++ b/ash/shelf/shelf_view_unittest.cc
@@ -2062,22 +2062,6 @@ test_api_->HideOverflowBubble(); } -// Checks how the overflow button and menu get laid out when the display is -// very narrow. -TEST_F(ShelfViewTestNotScrollable, TestOverflowWithNarrowDisplay) { - 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(ShelfViewTestNotScrollable, CheckOverflowStatusPinOpenedAppToShelf) {
diff --git a/ash/shell/content/client/shell_browser_main_parts.cc b/ash/shell/content/client/shell_browser_main_parts.cc index d6f04dc1..6231708 100644 --- a/ash/shell/content/client/shell_browser_main_parts.cc +++ b/ash/shell/content/client/shell_browser_main_parts.cc
@@ -97,7 +97,7 @@ } ShellInitParams shell_init_params; - shell_init_params.delegate = std::make_unique<shell::ShellDelegateImpl>(); + shell_init_params.delegate = std::make_unique<ShellDelegateImpl>(); shell_init_params.context_factory = content::GetContextFactory(); shell_init_params.context_factory_private = content::GetContextFactoryPrivate(); @@ -130,7 +130,7 @@ example_app_list_client_ = std::make_unique<ExampleAppListClient>( Shell::Get()->app_list_controller()); - shell::InitWindowTypeLauncher( + InitWindowTypeLauncher( base::BindRepeating(views::examples::ShowExamplesWindowWithContent, base::Passed(base::OnceClosure()), base::Unretained(browser_context_.get()), nullptr),
diff --git a/ash/shell/example_session_controller_client.cc b/ash/shell/example_session_controller_client.cc index 9a01626..46d4c06 100644 --- a/ash/shell/example_session_controller_client.cc +++ b/ash/shell/example_session_controller_client.cc
@@ -46,7 +46,7 @@ void ExampleSessionControllerClient::RequestLockScreen() { TestSessionControllerClient::RequestLockScreen(); - shell::CreateLockScreen(); + CreateLockScreen(); Shell::Get()->UpdateShelfVisibility(); }
diff --git a/ash/shell_test_api.cc b/ash/shell_test_api.cc index 2bbb57c..c615fde 100644 --- a/ash/shell_test_api.cc +++ b/ash/shell_test_api.cc
@@ -178,7 +178,7 @@ } void ShellTestApi::ToggleFullscreen() { - ash::accelerators::ToggleFullscreen(); + accelerators::ToggleFullscreen(); } bool ShellTestApi::IsOverviewSelecting() { @@ -231,7 +231,7 @@ } void ShellTestApi::WaitForLauncherAnimationState( - ash::AppListViewState target_state) { + AppListViewState target_state) { base::RunLoop run_loop; WaitForLauncherState(target_state, run_loop.QuitWhenIdleClosure()); run_loop.Run(); @@ -251,7 +251,7 @@ } std::vector<aura::Window*> ShellTestApi::GetItemWindowListInOverviewGrids() { - return ash::Shell::Get() + return Shell::Get() ->overview_controller() ->GetItemWindowListInOverviewGridsForTest(); }
diff --git a/ash/system/night_light/night_light_controller_impl.cc b/ash/system/night_light/night_light_controller_impl.cc index 06a84fe..8477cc1f 100644 --- a/ash/system/night_light/night_light_controller_impl.cc +++ b/ash/system/night_light/night_light_controller_impl.cc
@@ -534,6 +534,12 @@ return kDefaultColorTemperature; } +void NightLightControllerImpl::UpdateAmbientRgbScalingFactors() { + ambient_rgb_scaling_factors_ = + NightLightControllerImpl::ColorScalesFromRemappedTemperatureInKevin( + ambient_temperature_); +} + NightLightController::ScheduleType NightLightControllerImpl::GetScheduleType() const { if (active_user_pref_service_) { @@ -568,10 +574,7 @@ } bool NightLightControllerImpl::GetAmbientColorEnabled() const { - const bool ambient_eq_supported = - features::IsAllowAmbientEQEnabled() && - chromeos::PowerManagerClient::Get()->SupportsAmbientColor(); - return ambient_eq_supported && active_user_pref_service_ && + return features::IsAllowAmbientEQEnabled() && active_user_pref_service_ && active_user_pref_service_->GetBoolean(prefs::kAmbientColorEnabled); } @@ -735,10 +738,9 @@ ambient_temperature_ += (temperature_difference / abs_temperature_difference) * kAmbientColorChangeThreshold; + if (GetAmbientColorEnabled()) { - ambient_rgb_scaling_factors_ = - NightLightControllerImpl::ColorScalesFromRemappedTemperatureInKevin( - ambient_temperature_); + UpdateAmbientRgbScalingFactors(); RefreshDisplaysColorTemperatures(); } } @@ -912,6 +914,8 @@ void NightLightControllerImpl::InitFromUserPrefs() { StartWatchingPrefsChanges(); LoadCachedGeopositionIfNeeded(); + if (GetAmbientColorEnabled()) + UpdateAmbientRgbScalingFactors(); Refresh(true /* did_schedule_change */); NotifyStatusChanged(); NotifyClientWithScheduleChange(); @@ -950,9 +954,7 @@ void NightLightControllerImpl::OnAmbientColorEnabledPrefChanged() { DCHECK(active_user_pref_service_); if (GetAmbientColorEnabled()) { - ambient_rgb_scaling_factors_ = - NightLightControllerImpl::ColorScalesFromRemappedTemperatureInKevin( - ambient_temperature_); + UpdateAmbientRgbScalingFactors(); VerifyAmbientColorCtmSupport(); } RefreshDisplaysColorTemperatures();
diff --git a/ash/system/night_light/night_light_controller_impl.h b/ash/system/night_light/night_light_controller_impl.h index 5bdd5e4..adff379 100644 --- a/ash/system/night_light/night_light_controller_impl.h +++ b/ash/system/night_light/night_light_controller_impl.h
@@ -146,6 +146,10 @@ TimeOfDay GetCustomEndTime() const; bool GetAmbientColorEnabled() const; + // Update |ambient_rgb_scaling_factors_| from the current + // |ambient_temperature_|. + void UpdateAmbientRgbScalingFactors(); + // Set the desired NightLight settings in the current active user prefs. void SetEnabled(bool enabled, AnimationDuration animation_type); void SetColorTemperature(float temperature); @@ -309,7 +313,7 @@ // The ambient color R, G, and B scaling factors. // Valid only if ambient color is enabled. - gfx::Vector3dF ambient_rgb_scaling_factors_; + gfx::Vector3dF ambient_rgb_scaling_factors_ = {1.f, 1.f, 1.f}; base::WeakPtrFactory<NightLightControllerImpl> weak_ptr_factory_;
diff --git a/ash/system/night_light/night_light_controller_unittest.cc b/ash/system/night_light/night_light_controller_unittest.cc index bbab856..aa45ed72 100644 --- a/ash/system/night_light/night_light_controller_unittest.cc +++ b/ash/system/night_light/night_light_controller_unittest.cc
@@ -28,7 +28,6 @@ #include "base/optional.h" #include "base/strings/pattern.h" #include "base/test/scoped_feature_list.h" -#include "chromeos/dbus/power/fake_power_manager_client.h" #include "components/prefs/pref_service.h" #include "ui/compositor/layer.h" #include "ui/display/fake/fake_display_snapshot.h" @@ -196,7 +195,6 @@ // Start with ambient color pref disabled. SetAmbientColorPrefEnabled(false); - SetAmbientColorSupported(false); } void CreateTestUserSessions() { @@ -219,12 +217,6 @@ GetController()->SetAmbientColorEnabled(enabled); } - void SetAmbientColorSupported(bool supported) { - static_cast<chromeos::FakePowerManagerClient*>( - chromeos::PowerManagerClient::Get()) - ->set_supports_ambient_color(supported); - } - // Simulate powerd sending multiple times an ambient temperature of // |powerd_temperature|. The remapped ambient temperature should eventually // reach |target_remapped_temperature|. @@ -999,52 +991,31 @@ controller->timer()->GetCurrentDelay()); } -TEST_F(NightLightTest, TestAmbientLightEnabledSetting) { - // Feature enabled, Device not supported, Pref disabled -> disabled +TEST_F(NightLightTest, TestAmbientLightEnabledSetting_FeatureOn) { + base::test::ScopedFeatureList features; + features.InitAndEnableFeature(features::kAllowAmbientEQ); + + // Feature enabled, Pref disabled -> disabled SetAmbientColorPrefEnabled(false); - SetAmbientColorSupported(false); EXPECT_FALSE(GetController()->GetAmbientColorEnabled()); - // Feature enabled, Device not supported, Pref enabled -> disabled + // Feature enabled, Pref enabled -> enabled SetAmbientColorPrefEnabled(true); - SetAmbientColorSupported(false); - EXPECT_FALSE(GetController()->GetAmbientColorEnabled()); - - // Feature enabled, Device not supported, Pref enabled -> disabled - SetAmbientColorPrefEnabled(false); - SetAmbientColorSupported(true); - EXPECT_FALSE(GetController()->GetAmbientColorEnabled()); - - // Feature enabled, Device supported, Pref enabled -> enabled - SetAmbientColorPrefEnabled(true); - SetAmbientColorSupported(true); EXPECT_TRUE(GetController()->GetAmbientColorEnabled()); +} +TEST_F(NightLightTest, TestAmbientLightEnabledSetting_FeatureOff) { // With the feature disabled it should always be disabled. - { - base::test::ScopedFeatureList features; - features.InitAndDisableFeature(features::kAllowAmbientEQ); + base::test::ScopedFeatureList features; + features.InitAndDisableFeature(features::kAllowAmbientEQ); - // Feature disabled, Device not supported, Pref disabled -> disabled - SetAmbientColorPrefEnabled(false); - SetAmbientColorSupported(false); - EXPECT_FALSE(GetController()->GetAmbientColorEnabled()); + // Feature disabled, Pref disabled -> disabled + SetAmbientColorPrefEnabled(false); + EXPECT_FALSE(GetController()->GetAmbientColorEnabled()); - // Feature disabled, Device not supported, Pref enabled -> disabled - SetAmbientColorPrefEnabled(true); - SetAmbientColorSupported(false); - EXPECT_FALSE(GetController()->GetAmbientColorEnabled()); - - // Feature disabled, Device not supported, Pref enabled -> disabled - SetAmbientColorPrefEnabled(false); - SetAmbientColorSupported(true); - EXPECT_FALSE(GetController()->GetAmbientColorEnabled()); - - // Feature disabled, Device supported, Pref enabled -> disabled - SetAmbientColorPrefEnabled(true); - SetAmbientColorSupported(true); - EXPECT_FALSE(GetController()->GetAmbientColorEnabled()); - } + // Feature disabled, Pref enabled -> disabled + SetAmbientColorPrefEnabled(true); + EXPECT_FALSE(GetController()->GetAmbientColorEnabled()); } TEST_F(NightLightTest, TestAmbientLightRemappingTemperature) { @@ -1082,9 +1053,10 @@ } TEST_F(NightLightTest, TestAmbientColorMatrix) { + base::test::ScopedFeatureList features; + features.InitAndEnableFeature(features::kAllowAmbientEQ); SetNightLightEnabled(false); SetAmbientColorPrefEnabled(true); - SetAmbientColorSupported(true); auto scaling_factors = GetAllDisplaysCompositorsRGBScaleFactors(); // If no temperature is set, we expect 1.0 for each scaling factor. for (const gfx::Vector3dF& rgb : scaling_factors) { @@ -1113,12 +1085,14 @@ } TEST_F(NightLightTest, TestNightLightAndAmbientColorInteraction) { + base::test::ScopedFeatureList features; + features.InitAndEnableFeature(features::kAllowAmbientEQ); + SetNightLightEnabled(true); auto night_light_rgb = GetAllDisplaysCompositorsRGBScaleFactors().front(); SetAmbientColorPrefEnabled(true); - SetAmbientColorSupported(true); auto night_light_and_ambient_rgb = GetAllDisplaysCompositorsRGBScaleFactors().front(); @@ -1661,6 +1635,92 @@ EXPECT_TRUE(controller->GetAutoNightLightNotificationForTesting()); } +// Fixture for testing Ambient EQ. +class AmbientEQTest : public NightLightTest { + public: + AmbientEQTest() = default; + ~AmbientEQTest() override = default; + AmbientEQTest(const AmbientEQTest& other) = delete; + AmbientEQTest& operator=(const AmbientEQTest& rhs) = delete; + + static constexpr gfx::Vector3dF kDefaultScalingFactors{1.0f, 1.0f, 1.0f}; + + // NightLightTest: + void SetUp() override { + NightLightTest::SetUp(); + features_.InitAndEnableFeature(features::kAllowAmbientEQ); + controller_ = GetController(); + } + + protected: + base::test::ScopedFeatureList features_; + NightLightControllerImpl* controller_; // Not owned. +}; + +// static +constexpr gfx::Vector3dF AmbientEQTest::kDefaultScalingFactors; + +TEST_F(AmbientEQTest, TestAmbientRgbScalingUpdatesOnPrefChanged) { + // Start with the pref disabled. + controller_->SetAmbientColorEnabled(false); + + // Shift to the coolest temperature and the temperature updates even with the + // pref disabled but the scaling factors don't. + float ambient_temperature = SimulateAmbientColorFromPowerd(8000, 7350.0f); + EXPECT_EQ(ambient_temperature, controller_->ambient_temperature()); + EXPECT_EQ(kDefaultScalingFactors, controller_->ambient_rgb_scaling_factors()); + + // Enabling the pref and the scaling factors update. + controller_->SetAmbientColorEnabled(true); + const auto coolest_scaling_factors = + controller_->ambient_rgb_scaling_factors(); + EXPECT_NE(kDefaultScalingFactors, coolest_scaling_factors); + + // Shift to the warmest temp and the the scaling factors should update along + // with the temperature while the pref is enabled. + ambient_temperature = SimulateAmbientColorFromPowerd(2700, 5800.0f); + EXPECT_EQ(ambient_temperature, controller_->ambient_temperature()); + const auto warmest_scaling_factors = + controller_->ambient_rgb_scaling_factors(); + EXPECT_NE(warmest_scaling_factors, coolest_scaling_factors); + EXPECT_NE(warmest_scaling_factors, kDefaultScalingFactors); +} + +TEST_F(AmbientEQTest, TestAmbientRgbScalingUpdatesOnUserChangedToEnabled) { + // Start with user1 logged in with pref disabled. + controller_->SetAmbientColorEnabled(false); + + // Shift to the coolest temperature and the temperature updates even with the + // pref disabled but the scaling factors don't. + float ambient_temperature = SimulateAmbientColorFromPowerd(8000, 7350.0f); + EXPECT_EQ(ambient_temperature, controller_->ambient_temperature()); + EXPECT_EQ(kDefaultScalingFactors, controller_->ambient_rgb_scaling_factors()); + + // Enable the pref for user 2 then switch to user2 and the factors update. + user2_pref_service()->SetBoolean(prefs::kAmbientColorEnabled, true); + SwitchActiveUser(kUser2Email); + const auto coolest_scaling_factors = + controller_->ambient_rgb_scaling_factors(); + EXPECT_NE(kDefaultScalingFactors, coolest_scaling_factors); +} + +TEST_F(AmbientEQTest, TestAmbientRgbScalingUpdatesOnUserChangedBothDisabled) { + // Start with user1 logged in with pref disabled. + controller_->SetAmbientColorEnabled(false); + + // Shift to the coolest temperature and the temperature updates even with the + // pref disabled but the scaling factors don't. + float ambient_temperature = SimulateAmbientColorFromPowerd(8000, 7350.0f); + EXPECT_EQ(ambient_temperature, controller_->ambient_temperature()); + EXPECT_EQ(kDefaultScalingFactors, controller_->ambient_rgb_scaling_factors()); + + // Disable the pref for user 2 then switch to user2 and the factors still + // shouldn't update. + user2_pref_service()->SetBoolean(prefs::kAmbientColorEnabled, false); + SwitchActiveUser(kUser2Email); + EXPECT_EQ(kDefaultScalingFactors, controller_->ambient_rgb_scaling_factors()); +} + } // namespace } // namespace ash
diff --git a/ash/system/status_area_widget_delegate.cc b/ash/system/status_area_widget_delegate.cc index 18468d6..7de4c6e 100644 --- a/ash/system/status_area_widget_delegate.cc +++ b/ash/system/status_area_widget_delegate.cc
@@ -7,11 +7,11 @@ #include "ash/focus_cycler.h" #include "ash/root_window_controller.h" #include "ash/shelf/shelf.h" -#include "ash/shelf/shelf_layout_manager.h" #include "ash/shelf/shelf_widget.h" #include "ash/shell.h" #include "ash/system/status_area_widget.h" #include "ash/system/tray/tray_constants.h" +#include "ash/wm/tablet_mode/tablet_mode_controller.h" #include "chromeos/constants/chromeos_switches.h" #include "ui/compositor/layer.h" #include "ui/compositor/scoped_layer_animation_settings.h" @@ -86,7 +86,6 @@ set_owned_by_client(); // Deleted by DeleteDelegate(). ShelfConfig::Get()->AddObserver(this); - shelf_->shelf_layout_manager()->AddObserver(this); // Allow the launcher to surrender the focus to another window upon // navigation completion by the user. @@ -97,7 +96,6 @@ StatusAreaWidgetDelegate::~StatusAreaWidgetDelegate() { ShelfConfig::Get()->RemoveObserver(this); - shelf_->shelf_layout_manager()->RemoveObserver(this); } void StatusAreaWidgetDelegate::SetFocusCyclerForTesting( @@ -180,21 +178,6 @@ UpdateLayout(); } -void StatusAreaWidgetDelegate::OnHotseatStateChanged(HotseatState old_state, - HotseatState new_state) { - // Update the border of the last visible child so it has the right - // padding depending of the state of the shelf (See - // https://crbug.com/1025270). Don't layout as it will cause the whole - // transition to snap instead of animate (See https://crbug.com/1032770). - auto it = std::find_if(children().crbegin(), children().crend(), - [](const View* v) { return v->GetVisible(); }); - if (it == children().crend()) - return; - - View* last_visible_child = *it; - SetBorderOnChild(last_visible_child, /*is_child_on_edge=*/true); -} - void StatusAreaWidgetDelegate::UpdateLayout() { // Use a grid layout so that the trays can be centered in each cell, and // so that the widget gets laid out correctly when tray sizes change. @@ -274,11 +257,13 @@ // items also takes care of padding at the edge of the shelf. int right_edge = kPaddingBetweenWidgetsNewUi; - if (is_child_on_edge && chromeos::switches::ShouldShowShelfHotseat()) { - right_edge = - shelf_->shelf_layout_manager()->hotseat_state() == HotseatState::kShown - ? kPaddingBetweenWidgetAndRightScreenEdge - : 0; + const bool tablet_mode = + Shell::Get()->tablet_mode_controller() && + Shell::Get()->tablet_mode_controller()->InTabletMode(); + + if (is_child_on_edge && chromeos::switches::ShouldShowShelfHotseat() && + !tablet_mode) { + right_edge = kPaddingBetweenWidgetAndRightScreenEdge; } // Swap edges if alignment is not horizontal (bottom-to-top).
diff --git a/ash/system/status_area_widget_delegate.h b/ash/system/status_area_widget_delegate.h index 16dc765..f5f6779 100644 --- a/ash/system/status_area_widget_delegate.h +++ b/ash/system/status_area_widget_delegate.h
@@ -8,7 +8,6 @@ #include "ash/ash_export.h" #include "ash/public/cpp/shelf_config.h" #include "ash/public/cpp/shelf_types.h" -#include "ash/shelf/shelf_layout_manager_observer.h" #include "ash/system/status_area_widget.h" #include "base/macros.h" #include "ui/gfx/image/image_skia.h" @@ -22,8 +21,7 @@ // The View for the status area widget. class ASH_EXPORT StatusAreaWidgetDelegate : public views::AccessiblePaneView, public views::WidgetDelegate, - public ShelfConfig::Observer, - public ShelfLayoutManagerObserver { + public ShelfConfig::Observer { public: explicit StatusAreaWidgetDelegate(Shelf* shelf); ~StatusAreaWidgetDelegate() override; @@ -61,10 +59,6 @@ // Overridden from ShelfConfig::Observer: void OnShelfConfigUpdated() override; - // ShelfLayoutManagerObserver: - void OnHotseatStateChanged(HotseatState old_state, - HotseatState new_state) override; - void set_default_last_focusable_child(bool default_last_focusable_child) { default_last_focusable_child_ = default_last_focusable_child; }
diff --git a/ash/tooltips/tooltip_controller_unittest.cc b/ash/tooltips/tooltip_controller_unittest.cc index 0756bd0..ef4d18b 100644 --- a/ash/tooltips/tooltip_controller_unittest.cc +++ b/ash/tooltips/tooltip_controller_unittest.cc
@@ -117,16 +117,16 @@ EXPECT_TRUE(helper_->IsTooltipVisible()); // Disable mouse event which hides the cursor and check again. - ash::Shell::Get()->cursor_manager()->DisableMouseEvents(); + Shell::Get()->cursor_manager()->DisableMouseEvents(); base::RunLoop().RunUntilIdle(); - EXPECT_FALSE(ash::Shell::Get()->cursor_manager()->IsCursorVisible()); + EXPECT_FALSE(Shell::Get()->cursor_manager()->IsCursorVisible()); helper_->UpdateIfRequired(); EXPECT_FALSE(helper_->IsTooltipVisible()); // Enable mouse event which shows the cursor and re-check. - ash::Shell::Get()->cursor_manager()->EnableMouseEvents(); + Shell::Get()->cursor_manager()->EnableMouseEvents(); base::RunLoop().RunUntilIdle(); - EXPECT_TRUE(ash::Shell::Get()->cursor_manager()->IsCursorVisible()); + EXPECT_TRUE(Shell::Get()->cursor_manager()->IsCursorVisible()); helper_->UpdateIfRequired(); EXPECT_TRUE(helper_->IsTooltipVisible()); }
diff --git a/ash/touch/touch_observer_hud_unittest.cc b/ash/touch/touch_observer_hud_unittest.cc index 4b7587c..012d923 100644 --- a/ash/touch/touch_observer_hud_unittest.cc +++ b/ash/touch/touch_observer_hud_unittest.cc
@@ -205,7 +205,7 @@ // Add ash-touch-hud flag to enable debug touch HUD. This flag should be set // before Ash environment is set up, i.e., before TouchHudTestBase::SetUp(). base::CommandLine::ForCurrentProcess()->AppendSwitch( - ash::switches::kAshTouchHud); + switches::kAshTouchHud); TouchHudTestBase::SetUp(); }
diff --git a/ash/utility/screenshot_controller.cc b/ash/utility/screenshot_controller.cc index d2a7e3f..9234f67 100644 --- a/ash/utility/screenshot_controller.cc +++ b/ash/utility/screenshot_controller.cc
@@ -466,7 +466,7 @@ return; ui::Accelerator accelerator(*event); - ash::Shell::Get() + Shell::Get() ->accelerator_controller() ->accelerator_history() ->StoreCurrentAccelerator(accelerator);
diff --git a/ash/wm/always_on_top_controller.cc b/ash/wm/always_on_top_controller.cc index 2c03705..37cb4eb 100644 --- a/ash/wm/always_on_top_controller.cc +++ b/ash/wm/always_on_top_controller.cc
@@ -86,7 +86,7 @@ window->type() == aura::client::WINDOW_TYPE_POPUP); aura::Window* container = GetContainer(window); if (window->parent() != container && - !window->GetProperty(ash::kDisallowReparentKey)) + !window->GetProperty(kDisallowReparentKey)) container->AddChild(window); }
diff --git a/ash/wm/base_state.cc b/ash/wm/base_state.cc index 8381da906..f230f49 100644 --- a/ash/wm/base_state.cc +++ b/ash/wm/base_state.cc
@@ -151,11 +151,11 @@ window->SetProperty(aura::client::kPreMinimizedShowStateKey, ToWindowShowState(previous_state_type)); // We must not save MINIMIZED to |kPreMinimizedShowStateKey|. - else if (window->GetProperty(ash::kPrePipWindowStateTypeKey) != + else if (window->GetProperty(kPrePipWindowStateTypeKey) != WindowStateType::kMinimized) - window->SetProperty(aura::client::kPreMinimizedShowStateKey, - ToWindowShowState(window->GetProperty( - ash::kPrePipWindowStateTypeKey))); + window->SetProperty( + aura::client::kPreMinimizedShowStateKey, + ToWindowShowState(window->GetProperty(kPrePipWindowStateTypeKey))); } // Count minimizing a PIP window as dismissing it. Android apps in PIP mode // don't exit when they are dismissed, they just go back to being a regular
diff --git a/ash/wm/client_controlled_state_unittest.cc b/ash/wm/client_controlled_state_unittest.cc index 49431fa..510dc904b 100644 --- a/ash/wm/client_controlled_state_unittest.cc +++ b/ash/wm/client_controlled_state_unittest.cc
@@ -563,7 +563,7 @@ } TEST_F(ClientControlledStateTest, HandleBoundsEventsUpdatesPipRestoreBounds) { - state()->EnterNextState(window_state(), ash::WindowStateType::kPip); + state()->EnterNextState(window_state(), WindowStateType::kPip); EXPECT_TRUE(window_state()->IsPip());
diff --git a/ash/wm/drag_details.h b/ash/wm/drag_details.h index ea354035..4eecb5f 100644 --- a/ash/wm/drag_details.h +++ b/ash/wm/drag_details.h
@@ -25,7 +25,7 @@ ::wm::WindowMoveSource source); ~DragDetails(); - ash::WindowStateType initial_state_type; + WindowStateType initial_state_type; // Initial bounds of the window in parent coordinates. const gfx::Rect initial_bounds_in_parent;
diff --git a/ash/wm/immersive_fullscreen_controller_unittest.cc b/ash/wm/immersive_fullscreen_controller_unittest.cc index 9fedf59..a2a7c6a 100644 --- a/ash/wm/immersive_fullscreen_controller_unittest.cc +++ b/ash/wm/immersive_fullscreen_controller_unittest.cc
@@ -541,7 +541,7 @@ TEST_F(ImmersiveFullscreenControllerTest, MouseEventsVerticalDisplayLayout) { // Set up initial state. UpdateDisplay("800x600,800x600"); - ash::Shell::Get()->display_manager()->SetLayoutForCurrentDisplays( + Shell::Get()->display_manager()->SetLayoutForCurrentDisplays( display::test::CreateDisplayLayout(display_manager(), display::DisplayPlacement::TOP, 0)); @@ -549,7 +549,7 @@ ASSERT_TRUE(controller()->IsEnabled()); ASSERT_FALSE(controller()->IsRevealed()); - aura::Window::Windows root_windows = ash::Shell::GetAllRootWindows(); + aura::Window::Windows root_windows = Shell::GetAllRootWindows(); ASSERT_EQ(root_windows[0], top_container()->GetWidget()->GetNativeWindow()->GetRootWindow()); @@ -837,7 +837,7 @@ // Check that the window state gets properly marked for immersive fullscreen. TEST_F(ImmersiveFullscreenControllerTest, WindowStateImmersiveFullscreen) { - ash::WindowState* window_state = ash::WindowState::Get(window()); + WindowState* window_state = WindowState::Get(window()); SetWindowShowState(ui::SHOW_STATE_NORMAL); EXPECT_FALSE(window_state->IsInImmersiveFullscreen());
diff --git a/ash/wm/lock_action_handler_layout_manager_unittest.cc b/ash/wm/lock_action_handler_layout_manager_unittest.cc index fcb3aa1e..196649a 100644 --- a/ash/wm/lock_action_handler_layout_manager_unittest.cc +++ b/ash/wm/lock_action_handler_layout_manager_unittest.cc
@@ -316,7 +316,7 @@ // Verify that window bounds get updated when Chromevox bounds are shown (so // the Chromevox panel does not overlay with the action handler window). - ash::ShelfLayoutManager* shelf_layout_manager = + ShelfLayoutManager* shelf_layout_manager = GetPrimaryShelf()->shelf_layout_manager(); ASSERT_TRUE(shelf_layout_manager);
diff --git a/ash/wm/lock_layout_manager_unittest.cc b/ash/wm/lock_layout_manager_unittest.cc index ac35ed9..c033952 100644 --- a/ash/wm/lock_layout_manager_unittest.cc +++ b/ash/wm/lock_layout_manager_unittest.cc
@@ -65,7 +65,7 @@ bool use_delegate) { aura::Window* parent = Shell::GetPrimaryRootWindowController()->GetContainer( - ash::kShellWindowId_LockScreenContainer); + kShellWindowId_LockScreenContainer); params.parent = parent; views::Widget* widget = new views::Widget; if (use_delegate) @@ -177,7 +177,7 @@ } TEST_F(LockLayoutManagerTest, AccessibilityPanel) { - ash::ShelfLayoutManager* shelf_layout_manager = + ShelfLayoutManager* shelf_layout_manager = GetPrimaryShelf()->shelf_layout_manager(); ASSERT_TRUE(shelf_layout_manager); @@ -335,7 +335,7 @@ TEST_F(LockLayoutManagerTest, AccessibilityPanelWithMultipleMonitors) { UpdateDisplay("300x400,400x500"); - ash::ShelfLayoutManager* shelf_layout_manager = + ShelfLayoutManager* shelf_layout_manager = GetPrimaryShelf()->shelf_layout_manager(); ASSERT_TRUE(shelf_layout_manager);
diff --git a/ash/wm/lock_state_controller.h b/ash/wm/lock_state_controller.h index c8857d43..112cd6e2 100644 --- a/ash/wm/lock_state_controller.h +++ b/ash/wm/lock_state_controller.h
@@ -151,12 +151,12 @@ // Fades in wallpaper layer with |speed| if it was hidden in unlocked state. void AnimateWallpaperAppearanceIfNecessary( - ash::SessionStateAnimator::AnimationSpeed speed, + SessionStateAnimator::AnimationSpeed speed, SessionStateAnimator::AnimationSequence* animation_sequence); // Fades out wallpaper layer with |speed| if it was hidden in unlocked state. void AnimateWallpaperHidingIfNecessary( - ash::SessionStateAnimator::AnimationSpeed speed, + SessionStateAnimator::AnimationSpeed speed, SessionStateAnimator::AnimationSequence* animation_sequence); // Notifies observers.
diff --git a/ash/wm/lock_window_state.cc b/ash/wm/lock_window_state.cc index c7ae3eb..d28a23a 100644 --- a/ash/wm/lock_window_state.cc +++ b/ash/wm/lock_window_state.cc
@@ -67,8 +67,8 @@ if (window_state->IsMaximized() || window_state->IsFullscreen()) { UpdateBounds(window_state); } else { - const ash::SetBoundsWMEvent* bounds_event = - static_cast<const ash::SetBoundsWMEvent*>(event); + const SetBoundsWMEvent* bounds_event = + static_cast<const SetBoundsWMEvent*>(event); window_state->SetBoundsConstrained(bounds_event->requested_bounds()); } break;
diff --git a/ash/wm/overview/overview_grid.cc b/ash/wm/overview/overview_grid.cc index 4eee23e1..e44c06b 100644 --- a/ash/wm/overview/overview_grid.cc +++ b/ash/wm/overview/overview_grid.cc
@@ -275,8 +275,8 @@ DCHECK_EQ(window, target_window_); // When the property is cleared, the dragged window should have been merged // into |target_window_|, update the corresponding window item in overview. - if (key == ash::kIsDeferredTabDraggingTargetWindowKey && - !window->GetProperty(ash::kIsDeferredTabDraggingTargetWindowKey)) { + if (key == kIsDeferredTabDraggingTargetWindowKey && + !window->GetProperty(kIsDeferredTabDraggingTargetWindowKey)) { UpdateWindowItemInOverviewContaining(window); StopObserving(); } @@ -761,7 +761,7 @@ // overview item so that it can't merge into this overview item if the // dragged window is currently in preview window area. if (target_window && !IsDropTargetWindow(target_window)) - target_window->ClearProperty(ash::kIsDeferredTabDraggingTargetWindowKey); + target_window->ClearProperty(kIsDeferredTabDraggingTargetWindowKey); return; } @@ -769,7 +769,7 @@ // Show the tab drag highlight if |location_in_screen| is contained by the // browser windows' overview item in overview. if (target_window && - target_window->GetProperty(ash::kIsDeferredTabDraggingTargetWindowKey)) { + target_window->GetProperty(kIsDeferredTabDraggingTargetWindowKey)) { auto* item = GetOverviewItemContaining(target_window); if (!item) return; @@ -814,7 +814,7 @@ aura::Window* target_window = GetTargetWindowOnLocation(location_in_screen, /*ignored_item=*/nullptr); if (target_window && - target_window->GetProperty(ash::kIsDeferredTabDraggingTargetWindowKey)) { + target_window->GetProperty(kIsDeferredTabDraggingTargetWindowKey)) { // Create an window observer and update the minimized window widget after // the dragged window merges into |target_window|. if (!target_window_observer_) @@ -1874,7 +1874,7 @@ // into another window when changing the dragged window's bounds, so // that the dragged window doesn't merge into another window because of // its changed bounds. - dragged_window->SetProperty(ash::kCanAttachToAnotherWindowKey, false); + dragged_window->SetProperty(kCanAttachToAnotherWindowKey, false); TabletModeWindowState::UpdateWindowPosition( WindowState::Get(dragged_window), /*animate=*/false); const gfx::Rect new_bounds = dragged_window->bounds(); @@ -1884,7 +1884,7 @@ gfx::RectF(new_bounds), gfx::RectF(old_bounds)); dragged_window->SetTransform(transform); } - dragged_window->ClearProperty(ash::kCanAttachToAnotherWindowKey); + dragged_window->ClearProperty(kCanAttachToAnotherWindowKey); } overview_session_->AddItem(dragged_window, /*reposition=*/false,
diff --git a/ash/wm/overview/overview_session_unittest.cc b/ash/wm/overview/overview_session_unittest.cc index 4acc895..cc6f811 100644 --- a/ash/wm/overview/overview_session_unittest.cc +++ b/ash/wm/overview/overview_session_unittest.cc
@@ -169,11 +169,10 @@ ScopedOverviewTransformWindow::SetImmediateCloseForTests(); OverviewWallpaperController::SetDoNotChangeWallpaperForTests(); FpsCounter::SetForceReportZeroAnimationForTest(true); - ash::PresentationTimeRecorder::SetReportPresentationTimeImmediatelyForTest( - true); + PresentationTimeRecorder::SetReportPresentationTimeImmediatelyForTest(true); } void TearDown() override { - ash::PresentationTimeRecorder::SetReportPresentationTimeImmediatelyForTest( + PresentationTimeRecorder::SetReportPresentationTimeImmediatelyForTest( false); FpsCounter::SetForceReportZeroAnimationForTest(false); trace_names_.clear(); @@ -906,7 +905,7 @@ TEST_P(OverviewSessionTest, SkipOverviewWindow) { std::unique_ptr<aura::Window> window1(CreateTestWindow()); std::unique_ptr<aura::Window> window2(CreateTestWindow()); - window2->SetProperty(ash::kHideInOverviewKey, true); + window2->SetProperty(kHideInOverviewKey, true); // Enter overview. ToggleOverview(); @@ -5486,7 +5485,7 @@ // AshTestBase: void SetUp() override { scoped_feature_list_.InitAndEnableFeature( - ash::features::kDragToSnapInClamshellMode); + features::kDragToSnapInClamshellMode); OverviewSessionTest::SetUp(); Shell::Get()->tablet_mode_controller()->SetEnabledForTest(false); DCHECK(ShouldAllowSplitView());
diff --git a/ash/wm/resize_shadow_and_cursor_unittest.cc b/ash/wm/resize_shadow_and_cursor_unittest.cc index f23cdda8..e4d64485 100644 --- a/ash/wm/resize_shadow_and_cursor_unittest.cc +++ b/ash/wm/resize_shadow_and_cursor_unittest.cc
@@ -127,7 +127,7 @@ // mouse's position. TEST_F(ResizeShadowAndCursorTest, MouseHover) { ui::test::EventGenerator generator(Shell::GetPrimaryRootWindow()); - ASSERT_TRUE(ash::WindowState::Get(window())->IsNormalStateType()); + ASSERT_TRUE(WindowState::Get(window())->IsNormalStateType()); generator.MoveMouseTo(50, 50); VerifyResizeShadow(false); @@ -152,21 +152,21 @@ EXPECT_EQ(HTBOTTOM, ResizeShadowHitTest()); EXPECT_EQ(ui::CursorType::kSouthResize, GetCurrentCursorType()); - generator.MoveMouseTo(50, 100 + ash::kResizeOutsideBoundsSize - 1); + generator.MoveMouseTo(50, 100 + kResizeOutsideBoundsSize - 1); VerifyResizeShadow(true); EXPECT_EQ(HTBOTTOM, ResizeShadowHitTest()); EXPECT_EQ(ui::CursorType::kSouthResize, GetCurrentCursorType()); - generator.MoveMouseTo(50, 100 + ash::kResizeOutsideBoundsSize + 10); + generator.MoveMouseTo(50, 100 + kResizeOutsideBoundsSize + 10); VerifyResizeShadow(false); EXPECT_EQ(ui::CursorType::kNull, GetCurrentCursorType()); - generator.MoveMouseTo(50, 100 - ash::kResizeInsideBoundsSize); + generator.MoveMouseTo(50, 100 - kResizeInsideBoundsSize); VerifyResizeShadow(true); EXPECT_EQ(HTBOTTOM, ResizeShadowHitTest()); EXPECT_EQ(ui::CursorType::kSouthResize, GetCurrentCursorType()); - generator.MoveMouseTo(50, 100 - ash::kResizeInsideBoundsSize - 10); + generator.MoveMouseTo(50, 100 - kResizeInsideBoundsSize - 10); VerifyResizeShadow(false); EXPECT_EQ(ui::CursorType::kNull, GetCurrentCursorType()); } @@ -175,7 +175,7 @@ // as long as a user is resizing a window. TEST_F(ResizeShadowAndCursorTest, MouseDrag) { ui::test::EventGenerator generator(Shell::GetPrimaryRootWindow()); - ASSERT_TRUE(ash::WindowState::Get(window())->IsNormalStateType()); + ASSERT_TRUE(WindowState::Get(window())->IsNormalStateType()); gfx::Size initial_size(window()->bounds().size()); generator.MoveMouseTo(200, 50); @@ -200,11 +200,11 @@ // Test that the resize shadows stay visible while resizing a window via touch. TEST_F(ResizeShadowAndCursorTest, Touch) { - ASSERT_TRUE(ash::WindowState::Get(window())->IsNormalStateType()); + ASSERT_TRUE(WindowState::Get(window())->IsNormalStateType()); ui::test::EventGenerator generator(Shell::GetPrimaryRootWindow()); - int start_x = 200 + ash::kResizeOutsideBoundsSize - 1; - int start_y = 100 + ash::kResizeOutsideBoundsSize - 1; + int start_x = 200 + kResizeOutsideBoundsSize - 1; + int start_y = 100 + kResizeOutsideBoundsSize - 1; generator.GestureScrollSequenceWithCallback( gfx::Point(start_x, start_y), gfx::Point(start_x + 50, start_y + 50), base::TimeDelta::FromMilliseconds(200), 3, @@ -217,16 +217,16 @@ // used when the window is maximized. TEST_F(ResizeShadowAndCursorTest, MaximizeRestore) { ui::test::EventGenerator generator(Shell::GetPrimaryRootWindow()); - ASSERT_TRUE(ash::WindowState::Get(window())->IsNormalStateType()); + ASSERT_TRUE(WindowState::Get(window())->IsNormalStateType()); generator.MoveMouseTo(200, 50); EXPECT_EQ(HTRIGHT, ResizeShadowHitTest()); EXPECT_EQ(ui::CursorType::kEastResize, GetCurrentCursorType()); - generator.MoveMouseTo(200 - ash::kResizeInsideBoundsSize, 50); + generator.MoveMouseTo(200 - kResizeInsideBoundsSize, 50); EXPECT_EQ(HTRIGHT, ResizeShadowHitTest()); EXPECT_EQ(ui::CursorType::kEastResize, GetCurrentCursorType()); - ash::WindowState::Get(window())->Maximize(); + WindowState::Get(window())->Maximize(); gfx::Rect bounds(window()->GetBoundsInRootWindow()); gfx::Point right_center(bounds.right() - 1, (bounds.y() + bounds.bottom()) / 2); @@ -234,11 +234,11 @@ VerifyResizeShadow(false); EXPECT_EQ(ui::CursorType::kNull, GetCurrentCursorType()); - ash::WindowState::Get(window())->Restore(); + WindowState::Get(window())->Restore(); generator.MoveMouseTo(200, 50); EXPECT_EQ(HTRIGHT, ResizeShadowHitTest()); EXPECT_EQ(ui::CursorType::kEastResize, GetCurrentCursorType()); - generator.MoveMouseTo(200 - ash::kResizeInsideBoundsSize, 50); + generator.MoveMouseTo(200 - kResizeInsideBoundsSize, 50); EXPECT_EQ(HTRIGHT, ResizeShadowHitTest()); EXPECT_EQ(ui::CursorType::kEastResize, GetCurrentCursorType()); } @@ -247,15 +247,15 @@ // for crbug.com/752583 TEST_F(ResizeShadowAndCursorTest, Minimize) { ui::test::EventGenerator generator(Shell::GetPrimaryRootWindow()); - ASSERT_TRUE(ash::WindowState::Get(window())->IsNormalStateType()); + ASSERT_TRUE(WindowState::Get(window())->IsNormalStateType()); generator.MoveMouseTo(200, 50); VerifyResizeShadow(true); - ash::WindowState::Get(window())->Minimize(); + WindowState::Get(window())->Minimize(); VerifyResizeShadow(false); - ash::WindowState::Get(window())->Restore(); + WindowState::Get(window())->Restore(); VerifyResizeShadow(false); }
diff --git a/ash/wm/screen_dimmer.cc b/ash/wm/screen_dimmer.cc index 332b5c9..d5ae6ab 100644 --- a/ash/wm/screen_dimmer.cc +++ b/ash/wm/screen_dimmer.cc
@@ -50,7 +50,7 @@ return container_ == Container::ROOT ? Shell::GetAllRootWindows() : GetContainersForAllRootWindows( - ash::kShellWindowId_LockScreenContainersContainer); + kShellWindowId_LockScreenContainersContainer); } void ScreenDimmer::OnRootWindowAdded(aura::Window* root_window) {
diff --git a/ash/wm/splitview/multi_display_overview_and_split_view_test.cc b/ash/wm/splitview/multi_display_overview_and_split_view_test.cc index 7cd92ce8..a394ded 100644 --- a/ash/wm/splitview/multi_display_overview_and_split_view_test.cc +++ b/ash/wm/splitview/multi_display_overview_and_split_view_test.cc
@@ -17,7 +17,7 @@ void MultiDisplayOverviewAndSplitViewTest::SetUp() { if (GetParam()) { scoped_feature_list_.InitAndEnableFeature( - ash::features::kMultiDisplayOverviewAndSplitView); + features::kMultiDisplayOverviewAndSplitView); } AshTestBase::SetUp(); }
diff --git a/ash/wm/splitview/split_view_controller.cc b/ash/wm/splitview/split_view_controller.cc index ee6c8fd7..d5526c2 100644 --- a/ash/wm/splitview/split_view_controller.cc +++ b/ash/wm/splitview/split_view_controller.cc
@@ -195,8 +195,7 @@ const void* key, intptr_t old) override { DCHECK_EQ(window, dragged_window_); - if (key == ash::kIsDraggingTabsKey && - !window_util::IsDraggingTabs(window)) { + if (key == kIsDraggingTabsKey && !window_util::IsDraggingTabs(window)) { // At this point we know the newly created dragged window just finished // dragging. EndTabDragging(window, /*is_being_destroyed=*/false); @@ -222,7 +221,7 @@ // update its bounds to ensure it has the right bounds after the drag ends. void UpdateSourceWindowBoundsAfterDragEnds(aura::Window* window) { aura::Window* source_window = - window->GetProperty(ash::kTabDraggingSourceWindowKey); + window->GetProperty(kTabDraggingSourceWindowKey); if (source_window) { TabletModeWindowState::UpdateWindowPosition( WindowState::Get(source_window), /*animate=*/true); @@ -936,8 +935,8 @@ } void SplitViewController::OnPostWindowStateTypeChange( - ash::WindowState* window_state, - ash::WindowStateType old_type) { + WindowState* window_state, + WindowStateType old_type) { DCHECK_EQ( window_state->GetDisplay().id(), display::Screen::GetScreen()->GetDisplayNearestWindow(root_window_).id()); @@ -1854,7 +1853,7 @@ } } else { aura::Window* initiator_window = - window->GetProperty(ash::kTabDraggingSourceWindowKey); + window->GetProperty(kTabDraggingSourceWindowKey); // Note SnapWindow() might put the previous window that was snapped at the // |desired_snap_position| in overview. SnapWindow(window, desired_snap_position,
diff --git a/ash/wm/splitview/split_view_controller.h b/ash/wm/splitview/split_view_controller.h index c9c0644..3f433fc 100644 --- a/ash/wm/splitview/split_view_controller.h +++ b/ash/wm/splitview/split_view_controller.h
@@ -220,8 +220,8 @@ void OnResizeLoopEnded(aura::Window* window) override; // WindowStateObserver: - void OnPostWindowStateTypeChange(ash::WindowState* window_state, - ash::WindowStateType old_type) override; + void OnPostWindowStateTypeChange(WindowState* window_state, + WindowStateType old_type) override; // wm::ActivationChangeObserver: void OnWindowActivated(ActivationReason reason,
diff --git a/ash/wm/splitview/split_view_controller_unittest.cc b/ash/wm/splitview/split_view_controller_unittest.cc index 2bd92a7..54b2d54 100644 --- a/ash/wm/splitview/split_view_controller_unittest.cc +++ b/ash/wm/splitview/split_view_controller_unittest.cc
@@ -135,11 +135,10 @@ base::RunLoop().RunUntilIdle(); Shell::Get()->tablet_mode_controller()->SetEnabledForTest(true); FpsCounter::SetForceReportZeroAnimationForTest(true); - ash::PresentationTimeRecorder::SetReportPresentationTimeImmediatelyForTest( - true); + PresentationTimeRecorder::SetReportPresentationTimeImmediatelyForTest(true); } void TearDown() override { - ash::PresentationTimeRecorder::SetReportPresentationTimeImmediatelyForTest( + PresentationTimeRecorder::SetReportPresentationTimeImmediatelyForTest( false); FpsCounter::SetForceReportZeroAnimationForTest(false); trace_names_.clear(); @@ -4462,7 +4461,7 @@ void SetUp() override { scoped_feature_list_.InitAndEnableFeature( - ash::features::kDragToSnapInClamshellMode); + features::kDragToSnapInClamshellMode); SplitViewTabDraggingTest::SetUp(); }
diff --git a/ash/wm/splitview/split_view_drag_indicators_unittest.cc b/ash/wm/splitview/split_view_drag_indicators_unittest.cc index 35ee35a..8baa5467 100644 --- a/ash/wm/splitview/split_view_drag_indicators_unittest.cc +++ b/ash/wm/splitview/split_view_drag_indicators_unittest.cc
@@ -41,11 +41,10 @@ base::RunLoop().RunUntilIdle(); Shell::Get()->tablet_mode_controller()->SetEnabledForTest(true); base::RunLoop().RunUntilIdle(); - ash::PresentationTimeRecorder::SetReportPresentationTimeImmediatelyForTest( - true); + PresentationTimeRecorder::SetReportPresentationTimeImmediatelyForTest(true); } void TearDown() override { - ash::PresentationTimeRecorder::SetReportPresentationTimeImmediatelyForTest( + PresentationTimeRecorder::SetReportPresentationTimeImmediatelyForTest( false); AshTestBase::TearDown(); }
diff --git a/ash/wm/splitview/split_view_utils.cc b/ash/wm/splitview/split_view_utils.cc index cafa248..5362280 100644 --- a/ash/wm/splitview/split_view_utils.cc +++ b/ash/wm/splitview/split_view_utils.cc
@@ -347,13 +347,12 @@ } bool IsClamshellSplitViewModeEnabled() { - return base::FeatureList::IsEnabled( - ash::features::kDragToSnapInClamshellMode); + return base::FeatureList::IsEnabled(features::kDragToSnapInClamshellMode); } bool AreMultiDisplayOverviewAndSplitViewEnabled() { return base::FeatureList::IsEnabled( - ash::features::kMultiDisplayOverviewAndSplitView); + features::kMultiDisplayOverviewAndSplitView); } bool ShouldAllowSplitView() { @@ -375,7 +374,7 @@ } void ShowAppCannotSnapToast() { - ash::Shell::Get()->toast_manager()->Show(ash::ToastData( + Shell::Get()->toast_manager()->Show(ToastData( kAppCannotSnapToastId, l10n_util::GetStringUTF16(IDS_ASH_SPLIT_VIEW_CANNOT_SNAP), kAppCannotSnapToastDurationMs, base::Optional<base::string16>()));
diff --git a/ash/wm/system_modal_container_layout_manager_unittest.cc b/ash/wm/system_modal_container_layout_manager_unittest.cc index 40524f8..f62f61b 100644 --- a/ash/wm/system_modal_container_layout_manager_unittest.cc +++ b/ash/wm/system_modal_container_layout_manager_unittest.cc
@@ -328,7 +328,7 @@ std::unique_ptr<aura::Window> status_control( status_delegate->OpenTestWindowWithParent( Shell::GetPrimaryRootWindowController()->GetContainer( - ash::kShellWindowId_ShelfControlContainer))); + kShellWindowId_ShelfControlContainer))); status_control->SetBounds(main->bounds()); // Make sure that status window can receive event. @@ -360,7 +360,7 @@ EventTestWindow* lock_delegate = new EventTestWindow(false); std::unique_ptr<aura::Window> lock(lock_delegate->OpenTestWindowWithParent( Shell::GetPrimaryRootWindowController()->GetContainer( - ash::kShellWindowId_LockScreenContainer))); + kShellWindowId_LockScreenContainer))); // BlockUserSession could change the workspace size. Make sure |lock| has // the same bounds as |main| so that |lock| gets the generated mouse events. lock->SetBounds(main->bounds()); @@ -421,7 +421,7 @@ std::unique_ptr<aura::Window> status_control( status_delegate->OpenTestWindowWithParent( Shell::GetPrimaryRootWindowController()->GetContainer( - ash::kShellWindowId_ShelfControlContainer))); + kShellWindowId_ShelfControlContainer))); status_control->SetBounds(main->bounds()); // Events are blocked on all windows because status window is above the modal @@ -627,7 +627,7 @@ BlockUserSession(static_cast<UserSessionBlockReason>(block_reason)); std::unique_ptr<aura::Window> lock_parent(OpenTestWindowWithParent( Shell::GetPrimaryRootWindowController()->GetContainer( - ash::kShellWindowId_LockScreenContainer), + kShellWindowId_LockScreenContainer), false)); std::unique_ptr<aura::Window> lock_modal_window( OpenTestWindowWithParent(lock_parent.get(), true)); @@ -666,10 +666,10 @@ aura::Window::Windows root_windows = Shell::GetAllRootWindows(); EXPECT_EQ(2U, root_windows.size()); - aura::Window* container1 = Shell::GetContainer( - root_windows[0], ash::kShellWindowId_SystemModalContainer); - aura::Window* container2 = Shell::GetContainer( - root_windows[1], ash::kShellWindowId_SystemModalContainer); + aura::Window* container1 = + Shell::GetContainer(root_windows[0], kShellWindowId_SystemModalContainer); + aura::Window* container2 = + Shell::GetContainer(root_windows[1], kShellWindowId_SystemModalContainer); std::unique_ptr<aura::Window> modal1( OpenTestWindowWithParent(container1, true));
diff --git a/ash/wm/tablet_mode/tablet_mode_browser_window_drag_delegate.cc b/ash/wm/tablet_mode/tablet_mode_browser_window_drag_delegate.cc index 9a22cae5..27c131f2 100644 --- a/ash/wm/tablet_mode/tablet_mode_browser_window_drag_delegate.cc +++ b/ash/wm/tablet_mode/tablet_mode_browser_window_drag_delegate.cc
@@ -121,7 +121,7 @@ : dragged_window_(dragged_window) { DCHECK(dragged_window); aura::Window* source_window = - dragged_window->GetProperty(ash::kTabDraggingSourceWindowKey); + dragged_window->GetProperty(kTabDraggingSourceWindowKey); DCHECK(source_window); // Disable the backdrop for |source_window| during dragging. @@ -160,7 +160,7 @@ ~WindowsHider() override { // It might be possible that |source_window| is destroyed during dragging. aura::Window* source_window = - dragged_window_->GetProperty(ash::kTabDraggingSourceWindowKey); + dragged_window_->GetProperty(kTabDraggingSourceWindowKey); if (source_window) source_window->SetProperty(kBackdropWindowMode, source_window_backdrop_); @@ -265,7 +265,7 @@ bool TabletModeBrowserWindowDragDelegate::ShouldOpenOverviewWhenDragStarts() { DCHECK(dragged_window_); aura::Window* source_window = - dragged_window_->GetProperty(ash::kTabDraggingSourceWindowKey); + dragged_window_->GetProperty(kTabDraggingSourceWindowKey); return !source_window; } @@ -275,10 +275,10 @@ // source window is not in splitscreen && the source window is not in // overview. aura::Window* source_window = - dragged_window_->GetProperty(ash::kTabDraggingSourceWindowKey); + dragged_window_->GetProperty(kTabDraggingSourceWindowKey); if (!source_window || source_window == dragged_window_ || split_view_controller_->IsWindowInSplitView(source_window) || - source_window->GetProperty(ash::kIsShowingInOverviewKey)) { + source_window->GetProperty(kIsShowingInOverviewKey)) { return; } @@ -333,7 +333,7 @@ return; aura::Window* source_window = - dragged_window_->GetProperty(ash::kTabDraggingSourceWindowKey); + dragged_window_->GetProperty(kTabDraggingSourceWindowKey); // Do not merge back if there is no source window. if (!source_window) return; @@ -381,7 +381,7 @@ // Arriving here we know the dragged window should merge back into its source // window. - source_window->SetProperty(ash::kIsDeferredTabDraggingTargetWindowKey, true); + source_window->SetProperty(kIsDeferredTabDraggingTargetWindowKey, true); } } // namespace ash
diff --git a/ash/wm/tablet_mode/tablet_mode_controller_unittest.cc b/ash/wm/tablet_mode/tablet_mode_controller_unittest.cc index c3047fec..86a18a4 100644 --- a/ash/wm/tablet_mode/tablet_mode_controller_unittest.cc +++ b/ash/wm/tablet_mode/tablet_mode_controller_unittest.cc
@@ -1213,7 +1213,7 @@ wm::ActivateWindow(dragged_window.get()); ASSERT_TRUE(Shell::Get()->toplevel_window_event_handler()->AttemptToStartDrag( dragged_window.get(), gfx::PointF(), HTCAPTION, - ash::ToplevelWindowEventHandler::EndClosure())); + ToplevelWindowEventHandler::EndClosure())); tablet_mode_controller()->SetEnabledForTest(true); EXPECT_EQ(SplitViewController::State::kLeftSnapped, split_view_controller()->state()); @@ -1255,7 +1255,7 @@ wm::ActivateWindow(dragged_window.get()); ASSERT_TRUE(Shell::Get()->toplevel_window_event_handler()->AttemptToStartDrag( dragged_window.get(), gfx::PointF(), HTCAPTION, - ash::ToplevelWindowEventHandler::EndClosure())); + ToplevelWindowEventHandler::EndClosure())); tablet_mode_controller()->SetEnabledForTest(true); EXPECT_EQ(SplitViewController::State::kLeftSnapped, split_view_controller()->state());
diff --git a/ash/wm/tablet_mode/tablet_mode_window_manager_unittest.cc b/ash/wm/tablet_mode/tablet_mode_window_manager_unittest.cc index b9686ac..ca71b88 100644 --- a/ash/wm/tablet_mode/tablet_mode_window_manager_unittest.cc +++ b/ash/wm/tablet_mode/tablet_mode_window_manager_unittest.cc
@@ -1913,7 +1913,7 @@ // AshTestBase: void SetUp() override { scoped_feature_list_.InitAndEnableFeature( - ash::features::kDragToSnapInClamshellMode); + features::kDragToSnapInClamshellMode); TabletModeWindowManagerTest::SetUp(); DCHECK(ShouldAllowSplitView()); }
diff --git a/ash/wm/test_session_state_animator.cc b/ash/wm/test_session_state_animator.cc index 6131aae2..36d9863 100644 --- a/ash/wm/test_session_state_animator.cc +++ b/ash/wm/test_session_state_animator.cc
@@ -231,7 +231,7 @@ } } -ash::SessionStateAnimator::AnimationSequence* +SessionStateAnimator::AnimationSequence* TestSessionStateAnimator::BeginAnimationSequence(base::OnceClosure callback) { return new AnimationSequence(std::move(callback), this); }
diff --git a/ash/wm/toplevel_window_event_handler_unittest.cc b/ash/wm/toplevel_window_event_handler_unittest.cc index 5529477..c489f359 100644 --- a/ash/wm/toplevel_window_event_handler_unittest.cc +++ b/ash/wm/toplevel_window_event_handler_unittest.cc
@@ -187,7 +187,7 @@ TEST_F(ToplevelWindowEventHandlerTest, WindowPositionAutoManagement) { std::unique_ptr<aura::Window> w1(CreateWindow(HTNOWHERE)); const gfx::Size size = w1->bounds().size(); - WindowState* window_state = ash::WindowState::Get(w1.get()); + WindowState* window_state = WindowState::Get(w1.get()); ui::test::EventGenerator generator(Shell::GetPrimaryRootWindow(), w1.get()); // Explicitly enable window position auto management, and expect it to be @@ -1033,8 +1033,7 @@ void SetUp() override { AshTestBase::SetUp(); - feature_list_.InitAndEnableFeature( - ash::features::kSwipingFromLeftEdgeToGoBack); + feature_list_.InitAndEnableFeature(features::kSwipingFromLeftEdgeToGoBack); top_window_ = CreateAppWindow(gfx::Rect(), AppType::BROWSER); TabletModeControllerTestApi().EnterTabletMode(); } @@ -1069,7 +1068,7 @@ /*pointer_id=*/5, /*radius_x=*/5.0f, /*radius_y=*/5.0, /*force=*/1.0f)); ui::Event::DispatcherApi(&event).set_target(top_window_.get()); - ash::Shell::Get()->toplevel_window_event_handler()->OnTouchEvent(&event); + Shell::Get()->toplevel_window_event_handler()->OnTouchEvent(&event); } aura::Window* top_window() { return top_window_.get(); } @@ -1614,7 +1613,7 @@ position.x(), position.y(), ui::EF_NONE, base::TimeTicks::Now(), ui::GestureEventDetails(type, scroll_x, scroll_y)); ui::Event::DispatcherApi(&event).set_target(dragged_window_.get()); - ash::Shell::Get()->toplevel_window_event_handler()->OnGestureEvent(&event); + Shell::Get()->toplevel_window_event_handler()->OnGestureEvent(&event); } std::unique_ptr<aura::Window> dragged_window_;
diff --git a/ash/wm/window_manager_unittest.cc b/ash/wm/window_manager_unittest.cc index e9181ec12..df4f2024 100644 --- a/ash/wm/window_manager_unittest.cc +++ b/ash/wm/window_manager_unittest.cc
@@ -722,7 +722,7 @@ // Touch visually hides the cursor. TEST_F(WindowManagerTest, UpdateCursorVisibility) { ui::test::EventGenerator* generator = GetEventGenerator(); - ::wm::CursorManager* cursor_manager = ash::Shell::Get()->cursor_manager(); + ::wm::CursorManager* cursor_manager = Shell::Get()->cursor_manager(); generator->MoveMouseTo(gfx::Point(0, 0)); EXPECT_TRUE(cursor_manager->IsCursorVisible()); @@ -741,7 +741,7 @@ // Tests cursor visibility on key pressed event. TEST_F(WindowManagerTest, UpdateCursorVisibilityOnKeyEvent) { ui::test::EventGenerator* generator = GetEventGenerator(); - ::wm::CursorManager* cursor_manager = ash::Shell::Get()->cursor_manager(); + ::wm::CursorManager* cursor_manager = Shell::Get()->cursor_manager(); // Pressing a key hides the cursor but does not disable mouse events. generator->PressKey(ui::VKEY_A, ui::EF_NONE); @@ -790,7 +790,7 @@ TEST_F(WindowManagerTest, TestCursorClientObserver) { ui::test::EventGenerator* generator = GetEventGenerator(); - ::wm::CursorManager* cursor_manager = ash::Shell::Get()->cursor_manager(); + ::wm::CursorManager* cursor_manager = Shell::Get()->cursor_manager(); std::unique_ptr<aura::Window> w1( CreateTestWindowInShell(SK_ColorWHITE, -1, gfx::Rect(0, 0, 100, 100)));
diff --git a/ash/wm/window_properties.cc b/ash/wm/window_properties.cc index 10c2ea33..324be35 100644 --- a/ash/wm/window_properties.cc +++ b/ash/wm/window_properties.cc
@@ -15,6 +15,6 @@ DEFINE_UI_CLASS_PROPERTY_KEY(bool, kWindowIsJanky, false) -DEFINE_OWNED_UI_CLASS_PROPERTY_KEY(ash::WindowState, kWindowStateKey, nullptr) +DEFINE_OWNED_UI_CLASS_PROPERTY_KEY(WindowState, kWindowStateKey, nullptr) } // namespace ash
diff --git a/ash/wm/window_resizer.cc b/ash/wm/window_resizer.cc index 3eccfc0..c6f185e 100644 --- a/ash/wm/window_resizer.cc +++ b/ash/wm/window_resizer.cc
@@ -77,7 +77,7 @@ WindowResizer::WindowResizer(WindowState* window_state) : window_state_(window_state) { - recorder_ = ash::CreatePresentationTimeHistogramRecorder( + recorder_ = CreatePresentationTimeHistogramRecorder( GetTarget()->layer()->GetCompositor(), "Ash.InteractiveWindowResize.TimeToPresent", "Ash.InteractiveWindowResize.TimeToPresent.MaxLatency");
diff --git a/ash/wm/window_state.cc b/ash/wm/window_state.cc index 0ebb3a2..3da0d82 100644 --- a/ash/wm/window_state.cc +++ b/ash/wm/window_state.cc
@@ -597,7 +597,7 @@ return window_->GetProperty(aura::client::kShowStateKey); } -ash::WindowPinType WindowState::GetPinType() const { +WindowPinType WindowState::GetPinType() const { return window_->GetProperty(kWindowPinTypeKey); } @@ -644,11 +644,11 @@ } // sync up current window show state with PinType property. - ash::WindowPinType pin_type = ash::WindowPinType::kNone; + WindowPinType pin_type = WindowPinType::kNone; if (GetStateType() == WindowStateType::kPinned) - pin_type = ash::WindowPinType::kPinned; + pin_type = WindowPinType::kPinned; else if (GetStateType() == WindowStateType::kTrustedPinned) - pin_type = ash::WindowPinType::kTrustedPinned; + pin_type = WindowPinType::kTrustedPinned; if (pin_type != GetPinType()) { base::AutoReset<bool> resetter(&ignore_property_change_, true); window_->SetProperty(kWindowPinTypeKey, pin_type); @@ -778,8 +778,7 @@ // There may already be a system ui window on the initial position. UpdatePipBounds(); if (!was_pip) { - window()->SetProperty(ash::kPrePipWindowStateTypeKey, - old_window_state_type); + window()->SetProperty(kPrePipWindowStateTypeKey, old_window_state_type); } CollectPipEnterExitMetrics(/*enter=*/true); @@ -903,7 +902,7 @@ if (!ignore_property_change_) { // This change came from outside ash. Update our shelf visibility based // on our changed state. - ash::Shell::Get()->UpdateShelfVisibility(); + Shell::Get()->UpdateShelfVisibility(); } return; }
diff --git a/ash/wm/window_state.h b/ash/wm/window_state.h index 33ea9cc..8e3c9c1f 100644 --- a/ash/wm/window_state.h +++ b/ash/wm/window_state.h
@@ -395,7 +395,7 @@ ui::WindowShowState GetShowState() const; // Return the window's current pin type. - ash::WindowPinType GetPinType() const; + WindowPinType GetPinType() const; // Sets the window's bounds in screen coordinates. void SetBoundsInScreen(const gfx::Rect& bounds_in_screen);
diff --git a/ash/wm/window_util.cc b/ash/wm/window_util.cc index 5c790877..1639f00 100644 --- a/ash/wm/window_util.cc +++ b/ash/wm/window_util.cc
@@ -316,9 +316,9 @@ if (!pip_container) return; - auto pip_window_iter = std::find_if(pip_container->children().begin(), - pip_container->children().end(), - window_util::IsArcPipWindow); + auto pip_window_iter = + std::find_if(pip_container->children().begin(), + pip_container->children().end(), IsArcPipWindow); if (pip_window_iter == pip_container->children().end()) return;
diff --git a/ash/wm/workspace/workspace_layout_manager_unittest.cc b/ash/wm/workspace/workspace_layout_manager_unittest.cc index c33c564..66014d9 100644 --- a/ash/wm/workspace/workspace_layout_manager_unittest.cc +++ b/ash/wm/workspace/workspace_layout_manager_unittest.cc
@@ -1593,7 +1593,7 @@ window_nonarc->Show(); window_arc->SetProperty(aura::client::kAppType, - static_cast<int>(ash::AppType::ARC_APP)); + static_cast<int>(AppType::ARC_APP)); EXPECT_FALSE(test_helper.GetBackdropWindow()); // ARC window will have a backdrop only when it's active.
diff --git a/ash/wm/workspace_controller_unittest.cc b/ash/wm/workspace_controller_unittest.cc index dfc7d67..92dd0cbf 100644 --- a/ash/wm/workspace_controller_unittest.cc +++ b/ash/wm/workspace_controller_unittest.cc
@@ -348,7 +348,7 @@ std::unique_ptr<Window> w1(CreateTestWindow()); const gfx::Rect w1_bounds(0, 1, 101, 102); Shelf* shelf = GetPrimaryShelf(); - shelf->SetAutoHideBehavior(ash::ShelfAutoHideBehavior::kAlways); + shelf->SetAutoHideBehavior(ShelfAutoHideBehavior::kAlways); const gfx::Rect touches_shelf_bounds( 0, shelf_layout_manager()->GetIdealBounds().y() - 10, 101, 102); // Move |w1| to overlap the shelf. @@ -444,7 +444,7 @@ // AshTestHelper. SessionInfo info; info.state = session_manager::SessionState::ACTIVE; - ash::Shell::Get()->session_controller()->SetSessionInfo(info); + Shell::Get()->session_controller()->SetSessionInfo(info); std::unique_ptr<Window> w1(CreateTestWindow()); w1->Show();
diff --git a/base/files/file_path.cc b/base/files/file_path.cc index 5514ddf0..5668636 100644 --- a/base/files/file_path.cc +++ b/base/files/file_path.cc
@@ -35,7 +35,8 @@ namespace { -const char* const kCommonDoubleExtensionSuffixes[] = { "gz", "z", "bz2", "bz" }; +const char* const kCommonDoubleExtensionSuffixes[] = {"gz", "xz", "bz2", "z", + "bz"}; const char* const kCommonDoubleExtensions[] = { "user.js" }; // Compatibility shim for cross-platform code that passes a StringPieceType to a
diff --git a/base/files/file_path_unittest.cc b/base/files/file_path_unittest.cc index 1fc624f..d576ab4 100644 --- a/base/files/file_path_unittest.cc +++ b/base/files/file_path_unittest.cc
@@ -728,6 +728,7 @@ } TEST_F(FilePathTest, Extension2) { + // clang-format off const struct UnaryTestData cases[] = { #if defined(FILE_PATH_USES_WIN_SEPARATORS) { FPL("C:\\a\\b\\c.ext"), FPL(".ext") }, @@ -772,8 +773,11 @@ { FPL("/foo.1234.user.js"), FPL(".user.js") }, { FPL("foo.user.js"), FPL(".user.js") }, { FPL("/foo.tar.bz"), FPL(".tar.bz") }, + { FPL("/foo.tar.xz"), FPL(".tar.xz") }, }; - for (unsigned int i = 0; i < base::size(cases); ++i) { + // clang-format on + + for (size_t i = 0; i < base::size(cases); ++i) { FilePath path(cases[i].input); FilePath::StringType extension = path.Extension(); FilePath::StringType final_extension = path.FinalExtension(); @@ -782,7 +786,8 @@ EXPECT_EQ(cases[i].expected, final_extension) << "i: " << i << ", path: " << path.value(); } - for (unsigned int i = 0; i < base::size(double_extension_cases); ++i) { + + for (size_t i = 0; i < base::size(double_extension_cases); ++i) { FilePath path(double_extension_cases[i].input); FilePath::StringType extension = path.Extension(); EXPECT_EQ(double_extension_cases[i].expected, extension) @@ -878,7 +883,7 @@ { FPL("/foo.bar/foo"), FPL("/foo.bar/foo") }, { FPL("/foo.bar/..////"), FPL("/foo.bar/..////") }, }; - for (unsigned int i = 0; i < base::size(cases); ++i) { + for (size_t i = 0; i < base::size(cases); ++i) { FilePath path(cases[i].input); FilePath removed = path.RemoveExtension(); FilePath removed_final = path.RemoveFinalExtension(); @@ -887,13 +892,18 @@ EXPECT_EQ(cases[i].expected, removed_final.value()) << "i: " << i << ", path: " << path.value(); } - { + + const FilePath::StringPieceType tarballs[] = { + FPL("foo.tar.gz"), FPL("foo.tar.xz"), FPL("foo.tar.bz2"), + FPL("foo.tar.Z"), FPL("foo.tar.bz")}; + for (size_t i = 0; i < base::size(tarballs); ++i) { FilePath path(FPL("foo.tar.gz")); FilePath removed = path.RemoveExtension(); FilePath removed_final = path.RemoveFinalExtension(); - EXPECT_EQ(FPL("foo"), removed.value()) << ", path: " << path.value(); - EXPECT_EQ(FPL("foo.tar"), removed_final.value()) << ", path: " - << path.value(); + EXPECT_EQ(FPL("foo"), removed.value()) + << "i: " << i << ", path: " << path.value(); + EXPECT_EQ(FPL("foo.tar"), removed_final.value()) + << "i: " << i << ", path: " << path.value(); } }
diff --git a/base/metrics/OWNERS b/base/metrics/OWNERS index 3d7488d3a..f70e5d4c 100644 --- a/base/metrics/OWNERS +++ b/base/metrics/OWNERS
@@ -4,7 +4,6 @@ isherman@chromium.org jwd@chromium.org mpearson@chromium.org -nikunjb@chromium.org rkaplow@chromium.org # COMPONENT: Internals>Metrics
diff --git a/base/task/sequence_manager/sequence_manager.h b/base/task/sequence_manager/sequence_manager.h index 9710bf8f..5f56cef 100644 --- a/base/task/sequence_manager/sequence_manager.h +++ b/base/task/sequence_manager/sequence_manager.h
@@ -333,12 +333,6 @@ BASE_EXPORT std::unique_ptr<SequenceManager> CreateUnboundSequenceManager( SequenceManager::Settings settings = SequenceManager::Settings()); -// Create a SequenceManager that runs on top of |task_runner|. -// TODO(alexclarke): Change |task_runner| to a SequencedTaskRunner. -BASE_EXPORT std::unique_ptr<SequenceManager> CreateFunneledSequenceManager( - scoped_refptr<SingleThreadTaskRunner> task_runner, - SequenceManager::Settings settings = SequenceManager::Settings()); - } // namespace sequence_manager } // namespace base
diff --git a/base/task/sequence_manager/sequence_manager_impl.cc b/base/task/sequence_manager/sequence_manager_impl.cc index fcdb8d1..a4add2a 100644 --- a/base/task/sequence_manager/sequence_manager_impl.cc +++ b/base/task/sequence_manager/sequence_manager_impl.cc
@@ -71,16 +71,6 @@ return internal::SequenceManagerImpl::CreateUnbound(std::move(settings)); } -BASE_EXPORT std::unique_ptr<SequenceManager> CreateFunneledSequenceManager( - scoped_refptr<SingleThreadTaskRunner> task_runner, - SequenceManager::Settings settings) { - std::unique_ptr<SequenceManager> sequence_manager = - internal::SequenceManagerImpl::CreateSequenceFunneled( - std::move(task_runner), std::move(settings)); - sequence_manager->BindToCurrentThread(); - return sequence_manager; -} - namespace internal { using TimeRecordingPolicy =
diff --git a/build/config/android/rules.gni b/build/config/android/rules.gni index f7257bb..335ff76 100644 --- a/build/config/android/rules.gni +++ b/build/config/android/rules.gni
@@ -4559,11 +4559,6 @@ # Prevent "unused variable". not_needed([ "_enable_multidex" ]) - # TODO: Remove downstream use of static_library_proguard_disabled. - if (defined(invoker.static_library_proguard_disabled)) { - not_needed(invoker, [ "static_library_proguard_disabled" ]) - } - if (_proguard_enabled) { _uses_static_library_synchronized_proguard = defined(invoker.static_library_synchronized_proguard) &&
diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn index d8c4fd6e..d9253fb 100644 --- a/build/config/compiler/BUILD.gn +++ b/build/config/compiler/BUILD.gn
@@ -143,11 +143,10 @@ # rest with 0xAA. This makes behavior of uninitialized memory bugs consistent, # recognizeble in debugger, and crashes memory accesses by uninitialized # pointers. - # TODO(vitalybuka): investigate why some debug windows bots fail tests. + # TODO(vitalybuka): # 'is_android' breaks content_shell_test_apk on android-kitkat-arm-rel. # 'use_xcode_clang' may call old clang. - init_stack_vars = !is_android && !(is_win && is_debug) && !use_xcode_clang && - !is_official_build + init_stack_vars = !is_android && !use_xcode_clang && !is_official_build } declare_args() {
diff --git a/build/config/mac/mac_sdk.gni b/build/config/mac/mac_sdk.gni index f0a8ee34..27c3b36 100644 --- a/build/config/mac/mac_sdk.gni +++ b/build/config/mac/mac_sdk.gni
@@ -35,7 +35,7 @@ # The SDK version used when making official builds. This is a single exact # version, not a minimum. If this version isn't available official builds # will fail. - mac_sdk_official_version = "10.14" + mac_sdk_official_version = "10.15" } # Check that the version of macOS SDK used is the one requested when building
diff --git a/build/mac_toolchain.py b/build/mac_toolchain.py index f50635c..0d64142 100755 --- a/build/mac_toolchain.py +++ b/build/mac_toolchain.py
@@ -28,10 +28,10 @@ import sys -# This contains binaries from Xcode 10.12.1, along with the 10.14 SDKs. To build -# this package, see comments in build/xcode_binaries.yaml +# This contains binaries from Xcode 11.2.1, along with the 10.15 SDKs (aka +# 11B53). To build this package, see comments in build/xcode_binaries.yaml MAC_BINARIES_LABEL = 'infra_internal/ios/xcode/xcode_binaries/mac-amd64' -MAC_BINARIES_TAG = 'yjQtk3auAegQO4t18uBtBlKbj76xBjVtLE-3UM2faRUC' +MAC_BINARIES_TAG = 'HHSqYjco5P_Q5g9gOWV6djGpZ9aqlV12N0hxKJv8U3gC' # The toolchain will not be downloaded if the minimum OS version is not met. # 17 is the major version number for macOS 10.13.
diff --git a/cc/input/input_handler.h b/cc/input/input_handler.h index cc801af..c73d03a 100644 --- a/cc/input/input_handler.h +++ b/cc/input/input_handler.h
@@ -185,7 +185,6 @@ // taken into account when determining the duration of the animation if one // is created. virtual InputHandlerScrollResult ScrollUpdate(ScrollState* scroll_state, - ScrollInputType type, base::TimeDelta delayed_by) = 0; // Stop scrolling the selected layer. Should only be called if ScrollBegin()
diff --git a/cc/trees/layer_tree_host_impl.cc b/cc/trees/layer_tree_host_impl.cc index 0a4e73d..a63bbd4 100644 --- a/cc/trees/layer_tree_host_impl.cc +++ b/cc/trees/layer_tree_host_impl.cc
@@ -4405,7 +4405,10 @@ } void LayerTreeHostImpl::ScrollLatchedScroller(ScrollState* scroll_state) { - DCHECK(CurrentlyScrollingNode() && scroll_state); + DCHECK(CurrentlyScrollingNode()); + DCHECK(scroll_state); + DCHECK(latched_scroll_type_.has_value()); + ScrollNode* scroll_node = CurrentlyScrollingNode(); gfx::Point viewport_point(scroll_state->position_x(), scroll_state->position_y()); @@ -4428,7 +4431,8 @@ // still use Viewport::ScrollBy to also move browser controls if needed. Viewport::ScrollResult result = viewport().ScrollBy( delta, viewport_point, scroll_state->is_direct_manipulation(), - !wheel_scrolling_, scroll_node->scrolls_outer_viewport); + latched_scroll_type_ != InputHandler::WHEEL, + scroll_node->scrolls_outer_viewport); applied_delta = result.consumed_delta; delta_applied_to_content = result.content_scrolled_delta; @@ -4530,9 +4534,9 @@ scroll_affects_scroll_handler_ = active_tree_->have_scroll_event_handlers(); scroll_animating_snap_target_ids_ = TargetSnapAreaElementIds(); last_latched_scroller_ = CurrentlyScrollingNode()->element_id; - wheel_scrolling_ = type == InputHandler::WHEEL; + latched_scroll_type_ = type; - frame_trackers_.StartSequence(wheel_scrolling_ + frame_trackers_.StartSequence(latched_scroll_type_ == InputHandler::WHEEL ? FrameSequenceTrackerType::kWheelScroll : FrameSequenceTrackerType::kTouchScroll); client_->RenewTreePriority(); @@ -4587,8 +4591,7 @@ } bool LayerTreeHostImpl::ShouldAnimateScroll( - const ScrollState& scroll_state, - InputHandler::ScrollInputType type) const { + const ScrollState& scroll_state) const { if (!settings_.enable_smooth_scroll) return false; @@ -4603,7 +4606,7 @@ // Mac does not smooth scroll wheel events (crbug.com/574283). We allow tests // to force it on. - return type == InputHandler::SCROLLBAR + return latched_scroll_type_ == InputHandler::SCROLLBAR ? true : force_smooth_wheel_scrolling_for_testing_; #else @@ -4613,11 +4616,10 @@ InputHandlerScrollResult LayerTreeHostImpl::ScrollUpdate( ScrollState* scroll_state, - InputHandler::ScrollInputType type, base::TimeDelta delayed_by) { DCHECK(scroll_state); - if (ShouldAnimateScroll(*scroll_state, type)) { + if (ShouldAnimateScroll(*scroll_state)) { DCHECK(!scroll_state->is_in_inertial_phase()); gfx::Vector2dF scroll_delta(scroll_state->delta_x(), scroll_state->delta_y()); @@ -4901,6 +4903,7 @@ did_scroll_x_for_scroll_gesture_ = false; did_scroll_y_for_scroll_gesture_ = false; scroll_animating_snap_target_ids_ = TargetSnapAreaElementIds(); + latched_scroll_type_.reset(); } void LayerTreeHostImpl::ScrollEnd(bool should_snap) { @@ -4911,12 +4914,14 @@ return; } + DCHECK(latched_scroll_type_.has_value()); + browser_controls_offset_manager_->ScrollEnd(); - ClearCurrentlyScrollingNode(); - frame_trackers_.StopSequence(wheel_scrolling_ + frame_trackers_.StopSequence(latched_scroll_type_ == InputHandler::WHEEL ? FrameSequenceTrackerType::kWheelScroll : FrameSequenceTrackerType::kTouchScroll); + ClearCurrentlyScrollingNode(); deferred_scroll_end_ = false; scroll_gesture_did_end_ = true; client_->SetNeedsCommitOnImplThread();
diff --git a/cc/trees/layer_tree_host_impl.h b/cc/trees/layer_tree_host_impl.h index 1243d52d..32e967a 100644 --- a/cc/trees/layer_tree_host_impl.h +++ b/cc/trees/layer_tree_host_impl.h
@@ -268,7 +268,6 @@ InputHandler::ScrollInputType type) override; InputHandlerScrollResult ScrollUpdate( ScrollState* scroll_state, - InputHandler::ScrollInputType type, base::TimeDelta delayed_by = base::TimeDelta()) override; void RequestUpdateForSynchronousInputHandler() override; void SetSynchronousInputHandlerRootScrollOffset( @@ -933,8 +932,7 @@ void ScrollLatchedScroller(ScrollState* scroll_state); - bool ShouldAnimateScroll(const ScrollState& scroll_state, - InputHandler::ScrollInputType type) const; + bool ShouldAnimateScroll(const ScrollState& scroll_state) const; bool AnimatePageScale(base::TimeTicks monotonic_time); bool AnimateScrollbars(base::TimeTicks monotonic_time); @@ -1090,7 +1088,6 @@ std::unique_ptr<LayerTreeImpl> recycle_tree_; InputHandlerClient* input_handler_client_ = nullptr; - bool wheel_scrolling_ = false; // This is used to tell the scheduler there are active scroll handlers on the // page so we should prioritize latency during a scroll to try to keep @@ -1289,6 +1286,10 @@ // the first commit after a GSE. ElementId last_latched_scroller_; + // The source device type that started the scroll gesture. Only set between a + // ScrollBegin and ScrollEnd. + base::Optional<InputHandler::ScrollInputType> latched_scroll_type_; + // Scroll animation can finish either before or after GSE arrival. // deferred_scroll_end_ is set when the GSE has arrvied before scroll // animation completion. ScrollEnd will get called once the animation is
diff --git a/cc/trees/layer_tree_host_impl_unittest.cc b/cc/trees/layer_tree_host_impl_unittest.cc index 7cc295d4..ce4a824 100644 --- a/cc/trees/layer_tree_host_impl_unittest.cc +++ b/cc/trees/layer_tree_host_impl_unittest.cc
@@ -1147,8 +1147,7 @@ EXPECT_TRUE(host_impl_->IsCurrentlyScrollingLayerAt(gfx::Point())); host_impl_->ScrollUpdate( UpdateState(gfx::Point(), gfx::Vector2d(0, 10), InputHandler::TOUCHSCREEN) - .get(), - InputHandler::TOUCHSCREEN); + .get()); EXPECT_TRUE(host_impl_->IsCurrentlyScrollingLayerAt(gfx::Point(0, 10))); host_impl_->ScrollEnd(); EXPECT_FALSE(host_impl_->IsCurrentlyScrollingLayerAt(gfx::Point())); @@ -1171,8 +1170,7 @@ EXPECT_TRUE(host_impl_->IsActivelyScrolling()); host_impl_->ScrollUpdate( UpdateState(gfx::Point(), gfx::Vector2d(0, 10), InputHandler::WHEEL) - .get(), - InputHandler::WHEEL); + .get()); EXPECT_TRUE(host_impl_->IsActivelyScrolling()); host_impl_->ScrollEnd(); EXPECT_FALSE(host_impl_->IsActivelyScrolling()); @@ -1237,8 +1235,7 @@ host_impl_->ScrollUpdate( UpdateState(gfx::Point(), gfx::ScrollOffsetToVector2dF(scroll_delta), InputHandler::WHEEL) - .get(), - InputHandler::WHEEL); + .get()); host_impl_->ScrollEnd(); std::unique_ptr<ScrollAndScaleSet> scroll_info = host_impl_->ProcessScrollDeltas(); @@ -1258,8 +1255,7 @@ status.main_thread_scrolling_reasons); host_impl_->ScrollUpdate( UpdateState(gfx::Point(), gfx::Vector2d(0, 10), InputHandler::WHEEL) - .get(), - InputHandler::WHEEL); + .get()); EXPECT_TRUE(host_impl_->active_tree()->CurrentlyScrollingNode()); EXPECT_TRUE(host_impl_->IsActivelyScrolling()); @@ -1476,8 +1472,7 @@ EXPECT_TRUE(host_impl_->IsCurrentlyScrollingLayerAt(gfx::Point(75, 75))); host_impl_->ScrollUpdate( UpdateState(gfx::Point(), gfx::Vector2d(0, 10), InputHandler::WHEEL) - .get(), - InputHandler::WHEEL); + .get()); EXPECT_FALSE(host_impl_->IsCurrentlyScrollingLayerAt(gfx::Point(25, 25))); host_impl_->ScrollEnd(); EXPECT_FALSE(host_impl_->IsCurrentlyScrollingLayerAt(gfx::Point(75, 75))); @@ -1493,8 +1488,7 @@ EXPECT_TRUE(host_impl_->IsCurrentlyScrollingLayerAt(gfx::Point(75, 75))); host_impl_->ScrollUpdate( UpdateState(gfx::Point(), gfx::Vector2d(0, 10), InputHandler::TOUCHSCREEN) - .get(), - InputHandler::TOUCHSCREEN); + .get()); host_impl_->ScrollEnd(); EXPECT_FALSE(host_impl_->IsCurrentlyScrollingLayerAt(gfx::Point(75, 75))); } @@ -1521,8 +1515,8 @@ EXPECT_TRUE(host_impl_->IsCurrentlyScrollingLayerAt(gfx::Point(40, 10))); host_impl_->ScrollUpdate( - UpdateState(gfx::Point(), gfx::Vector2d(0, 1), InputHandler::WHEEL).get(), - InputHandler::WHEEL); + UpdateState(gfx::Point(), gfx::Vector2d(0, 1), InputHandler::WHEEL) + .get()); host_impl_->ScrollEnd(); // This point is still inside the non-fast region. @@ -1582,43 +1576,37 @@ host_impl_ ->ScrollUpdate(UpdateState(gfx::Point(), gfx::Vector2d(-10, 0), InputHandler::TOUCHSCREEN) - .get(), - InputHandler::TOUCHSCREEN) + .get()) .did_scroll); EXPECT_FALSE( host_impl_ ->ScrollUpdate(UpdateState(gfx::Point(), gfx::Vector2d(0, -10), InputHandler::TOUCHSCREEN) - .get(), - InputHandler::TOUCHSCREEN) + .get()) .did_scroll); EXPECT_FALSE( host_impl_ ->ScrollUpdate(UpdateState(gfx::Point(), gfx::Vector2d(-10, -10), InputHandler::TOUCHSCREEN) - .get(), - InputHandler::TOUCHSCREEN) + .get()) .did_scroll); // Scrolling to the right/bottom will succeed. EXPECT_TRUE(host_impl_ ->ScrollUpdate(UpdateState(gfx::Point(), gfx::Vector2d(10, 0), InputHandler::TOUCHSCREEN) - .get(), - InputHandler::TOUCHSCREEN) + .get()) .did_scroll); EXPECT_TRUE(host_impl_ ->ScrollUpdate(UpdateState(gfx::Point(), gfx::Vector2d(0, 10), InputHandler::TOUCHSCREEN) - .get(), - InputHandler::TOUCHSCREEN) + .get()) .did_scroll); EXPECT_TRUE( host_impl_ ->ScrollUpdate(UpdateState(gfx::Point(), gfx::Vector2d(10, 10), InputHandler::TOUCHSCREEN) - .get(), - InputHandler::TOUCHSCREEN) + .get()) .did_scroll); // Scrolling to left/top will now succeed. @@ -1626,22 +1614,19 @@ host_impl_ ->ScrollUpdate(UpdateState(gfx::Point(), gfx::Vector2d(-10, 0), InputHandler::TOUCHSCREEN) - .get(), - InputHandler::TOUCHSCREEN) + .get()) .did_scroll); EXPECT_TRUE( host_impl_ ->ScrollUpdate(UpdateState(gfx::Point(), gfx::Vector2d(0, -10), InputHandler::TOUCHSCREEN) - .get(), - InputHandler::TOUCHSCREEN) + .get()) .did_scroll); EXPECT_TRUE( host_impl_ ->ScrollUpdate(UpdateState(gfx::Point(), gfx::Vector2d(-10, -10), InputHandler::TOUCHSCREEN) - .get(), - InputHandler::TOUCHSCREEN) + .get()) .did_scroll); // Scrolling diagonally against an edge will succeed. @@ -1649,22 +1634,19 @@ host_impl_ ->ScrollUpdate(UpdateState(gfx::Point(), gfx::Vector2d(10, -10), InputHandler::TOUCHSCREEN) - .get(), - InputHandler::TOUCHSCREEN) + .get()) .did_scroll); EXPECT_TRUE( host_impl_ ->ScrollUpdate(UpdateState(gfx::Point(), gfx::Vector2d(-10, 0), InputHandler::TOUCHSCREEN) - .get(), - InputHandler::TOUCHSCREEN) + .get()) .did_scroll); EXPECT_TRUE( host_impl_ ->ScrollUpdate(UpdateState(gfx::Point(), gfx::Vector2d(-10, 10), InputHandler::TOUCHSCREEN) - .get(), - InputHandler::TOUCHSCREEN) + .get()) .did_scroll); // Trying to scroll more than the available space will also succeed. @@ -1672,8 +1654,7 @@ host_impl_ ->ScrollUpdate(UpdateState(gfx::Point(), gfx::Vector2d(5000, 5000), InputHandler::TOUCHSCREEN) - .get(), - InputHandler::TOUCHSCREEN) + .get()) .did_scroll); } @@ -1696,8 +1677,7 @@ GetSnapContainerData(overflow)->GetTargetSnapAreaElementIds()); host_impl_->ScrollUpdate( - UpdateState(pointer_position, x_delta, InputHandler::WHEEL).get(), - InputHandler::WHEEL); + UpdateState(pointer_position, x_delta, InputHandler::WHEEL).get()); EXPECT_EQ(TargetSnapAreaElementIds(), GetSnapContainerData(overflow)->GetTargetSnapAreaElementIds()); @@ -1741,8 +1721,7 @@ GetSnapContainerData(overflow)->GetTargetSnapAreaElementIds()); host_impl_->ScrollUpdate( - UpdateState(pointer_position, y_delta, InputHandler::WHEEL).get(), - InputHandler::WHEEL); + UpdateState(pointer_position, y_delta, InputHandler::WHEEL).get()); EXPECT_EQ(TargetSnapAreaElementIds(), GetSnapContainerData(overflow)->GetTargetSnapAreaElementIds()); @@ -1786,8 +1765,7 @@ GetSnapContainerData(overflow)->GetTargetSnapAreaElementIds()); host_impl_->ScrollUpdate( - UpdateState(pointer_position, delta, InputHandler::WHEEL).get(), - InputHandler::WHEEL); + UpdateState(pointer_position, delta, InputHandler::WHEEL).get()); EXPECT_EQ(TargetSnapAreaElementIds(), GetSnapContainerData(overflow)->GetTargetSnapAreaElementIds()); @@ -1827,8 +1805,7 @@ BeginState(pointer_position, delta, InputHandler::WHEEL).get(), InputHandler::WHEEL) .thread); - host_impl_->ScrollUpdate(AnimatedUpdateState(pointer_position, delta).get(), - InputHandler::WHEEL); + host_impl_->ScrollUpdate(AnimatedUpdateState(pointer_position, delta).get()); host_impl_->ScrollEnd(); EXPECT_EQ(overflow->scroll_tree_index(), @@ -1888,8 +1865,7 @@ EXPECT_VECTOR_EQ(gfx::Vector2dF(0, 0), overflow->CurrentScrollOffset()); host_impl_->ScrollUpdate( - UpdateState(pointer_position, x_delta, InputHandler::WHEEL).get(), - InputHandler::WHEEL); + UpdateState(pointer_position, x_delta, InputHandler::WHEEL).get()); EXPECT_FALSE(host_impl_->IsAnimatingForSnap()); viz::BeginFrameArgs begin_frame_args = @@ -1951,8 +1927,7 @@ // There is a snap target at 50, scroll to it directly. host_impl_->ScrollUpdate( - UpdateState(pointer_position, x_delta, InputHandler::WHEEL).get(), - InputHandler::WHEEL); + UpdateState(pointer_position, x_delta, InputHandler::WHEEL).get()); EXPECT_FALSE(host_impl_->IsAnimatingForSnap()); viz::BeginFrameArgs begin_frame_args = @@ -2001,8 +1976,7 @@ // Should be (20, 20) in the scroller's coordinate. InputHandlerScrollResult result = host_impl_->ScrollUpdate( - UpdateState(pointer_position, delta, InputHandler::WHEEL).get(), - InputHandler::WHEEL); + UpdateState(pointer_position, delta, InputHandler::WHEEL).get()); EXPECT_VECTOR_EQ(gfx::Vector2dF(20, 20), overflow->CurrentScrollOffset()); EXPECT_VECTOR_EQ(gfx::Vector2dF(4, 4), result.current_visual_offset); @@ -2041,8 +2015,7 @@ // Should be (20, 20) in the scroller's coordinate. InputHandlerScrollResult result = host_impl_->ScrollUpdate( - UpdateState(pointer_position, delta, InputHandler::WHEEL).get(), - InputHandler::WHEEL); + UpdateState(pointer_position, delta, InputHandler::WHEEL).get()); EXPECT_VECTOR_EQ(gfx::Vector2dF(20, 20), overflow->CurrentScrollOffset()); EXPECT_VECTOR_EQ(gfx::Vector2dF(4, 4), result.current_visual_offset); @@ -2093,8 +2066,7 @@ EXPECT_VECTOR_EQ(gfx::Vector2dF(), overflow->CurrentScrollOffset()); host_impl_->ScrollUpdate( - UpdateState(pointer_position, x_delta, InputHandler::WHEEL).get(), - InputHandler::WHEEL); + UpdateState(pointer_position, x_delta, InputHandler::WHEEL).get()); host_impl_->ScrollEnd(); EXPECT_VECTOR_EQ(gfx::Vector2dF(20, 30), scroll_layer->CurrentScrollOffset()); EXPECT_VECTOR_EQ(gfx::Vector2dF(0, 0), overflow->CurrentScrollOffset()); @@ -2118,8 +2090,7 @@ EXPECT_VECTOR_EQ(gfx::Vector2dF(0, 0), overflow->CurrentScrollOffset()); host_impl_->ScrollUpdate( - UpdateState(pointer_position, x_delta, InputHandler::WHEEL).get(), - InputHandler::WHEEL); + UpdateState(pointer_position, x_delta, InputHandler::WHEEL).get()); host_impl_->ScrollEnd(); EXPECT_VECTOR_EQ(gfx::Vector2dF(20, 30), scroll_layer->CurrentScrollOffset()); EXPECT_VECTOR_EQ(gfx::Vector2dF(0, 0), overflow->CurrentScrollOffset()); @@ -2137,8 +2108,7 @@ EXPECT_VECTOR_EQ(gfx::Vector2dF(0, 0), overflow->CurrentScrollOffset()); host_impl_->ScrollUpdate( - UpdateState(pointer_position, y_delta, InputHandler::WHEEL).get(), - InputHandler::WHEEL); + UpdateState(pointer_position, y_delta, InputHandler::WHEEL).get()); host_impl_->ScrollEnd(); EXPECT_VECTOR_EQ(gfx::Vector2dF(20, 20), scroll_layer->CurrentScrollOffset()); EXPECT_VECTOR_EQ(gfx::Vector2dF(0, 0), overflow->CurrentScrollOffset()); @@ -2156,8 +2126,7 @@ EXPECT_VECTOR_EQ(gfx::Vector2dF(0, 0), overflow->CurrentScrollOffset()); host_impl_->ScrollUpdate( - UpdateState(pointer_position, diagonal_delta, InputHandler::WHEEL).get(), - InputHandler::WHEEL); + UpdateState(pointer_position, diagonal_delta, InputHandler::WHEEL).get()); host_impl_->ScrollEnd(); EXPECT_VECTOR_EQ(gfx::Vector2dF(20, 20), scroll_layer->CurrentScrollOffset()); EXPECT_VECTOR_EQ(gfx::Vector2dF(0, 0), overflow->CurrentScrollOffset()); @@ -2182,8 +2151,7 @@ EXPECT_VECTOR_EQ(gfx::Vector2dF(0, 0), overflow->CurrentScrollOffset()); host_impl_->ScrollUpdate( - UpdateState(pointer_position, x_delta, InputHandler::WHEEL).get(), - InputHandler::WHEEL); + UpdateState(pointer_position, x_delta, InputHandler::WHEEL).get()); host_impl_->ScrollEnd(); EXPECT_VECTOR_EQ(gfx::Vector2dF(10, 20), scroll_layer->CurrentScrollOffset()); EXPECT_VECTOR_EQ(gfx::Vector2dF(0, 0), overflow->CurrentScrollOffset()); @@ -2201,8 +2169,7 @@ EXPECT_VECTOR_EQ(gfx::Vector2dF(0, 0), overflow->CurrentScrollOffset()); host_impl_->ScrollUpdate( - UpdateState(pointer_position, y_delta, InputHandler::WHEEL).get(), - InputHandler::WHEEL); + UpdateState(pointer_position, y_delta, InputHandler::WHEEL).get()); host_impl_->ScrollEnd(); EXPECT_VECTOR_EQ(gfx::Vector2dF(10, 20), scroll_layer->CurrentScrollOffset()); EXPECT_VECTOR_EQ(gfx::Vector2dF(0, 0), overflow->CurrentScrollOffset()); @@ -2220,8 +2187,7 @@ EXPECT_VECTOR_EQ(gfx::Vector2dF(0, 0), overflow->CurrentScrollOffset()); host_impl_->ScrollUpdate( - UpdateState(pointer_position, diagonal_delta, InputHandler::WHEEL).get(), - InputHandler::WHEEL); + UpdateState(pointer_position, diagonal_delta, InputHandler::WHEEL).get()); host_impl_->ScrollEnd(); EXPECT_VECTOR_EQ(gfx::Vector2dF(10, 20), scroll_layer->CurrentScrollOffset()); EXPECT_VECTOR_EQ(gfx::Vector2dF(0, 0), overflow->CurrentScrollOffset()); @@ -2245,17 +2211,13 @@ EXPECT_VECTOR_EQ(gfx::Vector2dF(0, 0), overflow->CurrentScrollOffset()); host_impl_->ScrollUpdate( - UpdateState(pointer_position, x_delta, InputHandler::WHEEL).get(), - InputHandler::WHEEL); + UpdateState(pointer_position, x_delta, InputHandler::WHEEL).get()); host_impl_->ScrollUpdate( - UpdateState(pointer_position, -x_delta, InputHandler::WHEEL).get(), - InputHandler::WHEEL); + UpdateState(pointer_position, -x_delta, InputHandler::WHEEL).get()); host_impl_->ScrollUpdate( - UpdateState(pointer_position, y_delta, InputHandler::WHEEL).get(), - InputHandler::WHEEL); + UpdateState(pointer_position, y_delta, InputHandler::WHEEL).get()); host_impl_->ScrollUpdate( - UpdateState(pointer_position, -y_delta, InputHandler::WHEEL).get(), - InputHandler::WHEEL); + UpdateState(pointer_position, -y_delta, InputHandler::WHEEL).get()); host_impl_->ScrollEnd(); EXPECT_VECTOR_EQ(gfx::Vector2dF(10, 20), scroll_layer->CurrentScrollOffset()); EXPECT_VECTOR_EQ(gfx::Vector2dF(10, 10), overflow->CurrentScrollOffset()); @@ -2287,8 +2249,7 @@ EXPECT_VECTOR_EQ(gfx::Vector2dF(), overflow->CurrentScrollOffset()); host_impl_->ScrollUpdate( - UpdateState(scroll_position, scroll_delta, InputHandler::WHEEL).get(), - InputHandler::WHEEL); + UpdateState(scroll_position, scroll_delta, InputHandler::WHEEL).get()); host_impl_->ScrollEnd(); EXPECT_VECTOR_EQ(gfx::Vector2dF(), scroll_layer->CurrentScrollOffset()); EXPECT_VECTOR_EQ(gfx::Vector2dF(10, 10), overflow->CurrentScrollOffset()); @@ -2308,8 +2269,7 @@ EXPECT_VECTOR_EQ(gfx::Vector2dF(10, 10), overflow->CurrentScrollOffset()); host_impl_->ScrollUpdate( - UpdateState(scroll_position, scroll_delta, InputHandler::WHEEL).get(), - InputHandler::WHEEL); + UpdateState(scroll_position, scroll_delta, InputHandler::WHEEL).get()); host_impl_->ScrollEnd(); EXPECT_VECTOR_EQ(gfx::Vector2dF(0, 0), scroll_layer->CurrentScrollOffset()); EXPECT_VECTOR_EQ(gfx::Vector2dF(10, 20), overflow->CurrentScrollOffset()); @@ -2328,8 +2288,7 @@ EXPECT_VECTOR_EQ(gfx::Vector2dF(10, 20), overflow->CurrentScrollOffset()); host_impl_->ScrollUpdate( - UpdateState(scroll_position, scroll_delta, InputHandler::WHEEL).get(), - InputHandler::WHEEL); + UpdateState(scroll_position, scroll_delta, InputHandler::WHEEL).get()); host_impl_->ScrollEnd(); EXPECT_VECTOR_EQ(gfx::Vector2dF(10, 10), scroll_layer->CurrentScrollOffset()); EXPECT_VECTOR_EQ(gfx::Vector2dF(10, 20), overflow->CurrentScrollOffset()); @@ -2650,8 +2609,7 @@ InputHandler::WHEEL) .thread); host_impl_->ScrollUpdate( - UpdateState(gfx::Point(), scroll_delta, InputHandler::WHEEL).get(), - InputHandler::WHEEL); + UpdateState(gfx::Point(), scroll_delta, InputHandler::WHEEL).get()); host_impl_->ScrollEnd(); std::unique_ptr<ScrollAndScaleSet> scroll_info = @@ -2757,11 +2715,10 @@ InputHandler::TOUCHSCREEN) .get(), InputHandler::TOUCHSCREEN); - host_impl_->ScrollUpdate( - UpdateState(gfx::Point(0, 0), gfx::Vector2dF(100, 100), - InputHandler::TOUCHSCREEN) - .get(), - InputHandler::TOUCHSCREEN); + host_impl_->ScrollUpdate(UpdateState(gfx::Point(0, 0), + gfx::Vector2dF(100, 100), + InputHandler::TOUCHSCREEN) + .get()); host_impl_->ScrollEnd(); EXPECT_VECTOR_EQ(gfx::Vector2dF(50, 50), @@ -2776,11 +2733,10 @@ InputHandler::TOUCHSCREEN) .get(), InputHandler::TOUCHSCREEN); - host_impl_->ScrollUpdate( - UpdateState(gfx::Point(0, 0), gfx::Vector2dF(1000, 1000), - InputHandler::TOUCHSCREEN) - .get(), - InputHandler::TOUCHSCREEN); + host_impl_->ScrollUpdate(UpdateState(gfx::Point(0, 0), + gfx::Vector2dF(1000, 1000), + InputHandler::TOUCHSCREEN) + .get()); host_impl_->ScrollEnd(); EXPECT_VECTOR_EQ(gfx::Vector2dF(250, 250), @@ -2816,11 +2772,10 @@ InputHandler::TOUCHSCREEN) .get(), InputHandler::TOUCHSCREEN); - host_impl_->ScrollUpdate( - UpdateState(gfx::Point(250, 250), gfx::Vector2dF(0.125f, 0.125f), - InputHandler::TOUCHSCREEN) - .get(), - InputHandler::TOUCHSCREEN); + host_impl_->ScrollUpdate(UpdateState(gfx::Point(250, 250), + gfx::Vector2dF(0.125f, 0.125f), + InputHandler::TOUCHSCREEN) + .get()); EXPECT_VECTOR2DF_EQ(gfx::Vector2dF(0.125f, 0.125f), outer_scroll_layer->CurrentScrollOffset()); EXPECT_VECTOR2DF_EQ(gfx::Vector2dF(0, 0), @@ -2835,11 +2790,10 @@ InputHandler::TOUCHSCREEN) .get(), InputHandler::TOUCHSCREEN); - host_impl_->ScrollUpdate( - UpdateState(gfx::Point(250, 250), gfx::Vector2dF(0.5f, 0.5f), - InputHandler::TOUCHSCREEN) - .get(), - InputHandler::TOUCHSCREEN); + host_impl_->ScrollUpdate(UpdateState(gfx::Point(250, 250), + gfx::Vector2dF(0.5f, 0.5f), + InputHandler::TOUCHSCREEN) + .get()); EXPECT_VECTOR2DF_EQ(gfx::Vector2dF(0.125f, 0.125f), outer_scroll_layer->CurrentScrollOffset()); EXPECT_VECTOR2DF_EQ(gfx::Vector2dF(0.25f, 0.25f), @@ -2883,11 +2837,10 @@ // Needed so that the pinch is accounted for in draw properties. DrawFrame(); - host_impl_->ScrollUpdate( - UpdateState(gfx::Point(250, 250), gfx::Vector2dF(10, 10), - InputHandler::TOUCHSCREEN) - .get(), - InputHandler::TOUCHSCREEN); + host_impl_->ScrollUpdate(UpdateState(gfx::Point(250, 250), + gfx::Vector2dF(10, 10), + InputHandler::TOUCHSCREEN) + .get()); EXPECT_VECTOR_EQ(gfx::Vector2dF(0, 0), outer_scroll_layer->CurrentScrollOffset()); EXPECT_VECTOR_EQ(gfx::Vector2dF(130, 130), @@ -2895,11 +2848,10 @@ DrawFrame(); - host_impl_->ScrollUpdate( - UpdateState(gfx::Point(250, 250), gfx::Vector2dF(400, 400), - InputHandler::TOUCHSCREEN) - .get(), - InputHandler::TOUCHSCREEN); + host_impl_->ScrollUpdate(UpdateState(gfx::Point(250, 250), + gfx::Vector2dF(400, 400), + InputHandler::TOUCHSCREEN) + .get()); EXPECT_VECTOR_EQ(gfx::Vector2dF(80, 80), outer_scroll_layer->CurrentScrollOffset()); EXPECT_VECTOR_EQ(gfx::Vector2dF(250, 250), @@ -3020,8 +2972,7 @@ InputHandler::WHEEL); host_impl_->ScrollUpdate( UpdateState(gfx::Point(0, 0), gfx::Vector2dF(10, 20), InputHandler::WHEEL) - .get(), - InputHandler::WHEEL); + .get()); host_impl_->ScrollEnd(); EXPECT_VECTOR_EQ(gfx::Vector2dF(5, 10), @@ -3034,11 +2985,10 @@ InputHandler::WHEEL) .get(), InputHandler::WHEEL); - host_impl_->ScrollUpdate( - UpdateState(gfx::Point(0, 0), gfx::Vector2dF(100, 100), - InputHandler::WHEEL) - .get(), - InputHandler::WHEEL); + host_impl_->ScrollUpdate(UpdateState(gfx::Point(0, 0), + gfx::Vector2dF(100, 100), + InputHandler::WHEEL) + .get()); host_impl_->ScrollEnd(); EXPECT_VECTOR_EQ(gfx::Vector2dF(50, 50), @@ -3052,11 +3002,10 @@ InputHandler::WHEEL) .get(), InputHandler::WHEEL); - host_impl_->ScrollUpdate( - UpdateState(gfx::Point(0, 0), gfx::Vector2dF(190, 180), - InputHandler::WHEEL) - .get(), - InputHandler::WHEEL); + host_impl_->ScrollUpdate(UpdateState(gfx::Point(0, 0), + gfx::Vector2dF(190, 180), + InputHandler::WHEEL) + .get()); host_impl_->ScrollEnd(); EXPECT_VECTOR_EQ(gfx::Vector2dF(100, 100), @@ -3082,8 +3031,7 @@ .thread); host_impl_->ScrollUpdate( UpdateState(gfx::Point(), gfx::Vector2d(0, 10), InputHandler::TOUCHSCREEN) - .get(), - InputHandler::TOUCHSCREEN); + .get()); host_impl_->QueueSwapPromiseForMainThreadScrollUpdate( std::move(swap_promise)); host_impl_->ScrollEnd(); @@ -3122,16 +3070,14 @@ InputHandler::TOUCHSCREEN) .get(), InputHandler::TOUCHSCREEN); - host_impl_->ScrollUpdate( - UpdateState(gfx::Point(21, 21), gfx::Vector2d(5, 5), - InputHandler::TOUCHSCREEN) - .get(), - InputHandler::TOUCHSCREEN); - host_impl_->ScrollUpdate( - UpdateState(gfx::Point(21, 21), gfx::Vector2d(100, 100), - InputHandler::TOUCHSCREEN) - .get(), - InputHandler::TOUCHSCREEN); + host_impl_->ScrollUpdate(UpdateState(gfx::Point(21, 21), + gfx::Vector2d(5, 5), + InputHandler::TOUCHSCREEN) + .get()); + host_impl_->ScrollUpdate(UpdateState(gfx::Point(21, 21), + gfx::Vector2d(100, 100), + InputHandler::TOUCHSCREEN) + .get()); host_impl_->ScrollEnd(); // The child should be fully scrolled by the first ScrollUpdate. @@ -3153,26 +3099,22 @@ InputHandler::TOUCHSCREEN) .get(), InputHandler::TOUCHSCREEN); - host_impl_->ScrollUpdate( - UpdateState(gfx::Point(21, 21), gfx::Vector2d(3, 4), - InputHandler::TOUCHSCREEN) - .get(), - InputHandler::TOUCHSCREEN); - host_impl_->ScrollUpdate( - UpdateState(gfx::Point(21, 21), gfx::Vector2d(2, 1), - InputHandler::TOUCHSCREEN) - .get(), - InputHandler::TOUCHSCREEN); - host_impl_->ScrollUpdate( - UpdateState(gfx::Point(21, 21), gfx::Vector2d(2, 1), - InputHandler::TOUCHSCREEN) - .get(), - InputHandler::TOUCHSCREEN); - host_impl_->ScrollUpdate( - UpdateState(gfx::Point(21, 21), gfx::Vector2d(2, 1), - InputHandler::TOUCHSCREEN) - .get(), - InputHandler::TOUCHSCREEN); + host_impl_->ScrollUpdate(UpdateState(gfx::Point(21, 21), + gfx::Vector2d(3, 4), + InputHandler::TOUCHSCREEN) + .get()); + host_impl_->ScrollUpdate(UpdateState(gfx::Point(21, 21), + gfx::Vector2d(2, 1), + InputHandler::TOUCHSCREEN) + .get()); + host_impl_->ScrollUpdate(UpdateState(gfx::Point(21, 21), + gfx::Vector2d(2, 1), + InputHandler::TOUCHSCREEN) + .get()); + host_impl_->ScrollUpdate(UpdateState(gfx::Point(21, 21), + gfx::Vector2d(2, 1), + InputHandler::TOUCHSCREEN) + .get()); host_impl_->ScrollEnd(); // The ScrollUpdate's should scroll the parent to its extent. @@ -3323,11 +3265,10 @@ InputHandler::TOUCHSCREEN); host_impl_->PinchGestureBegin(); host_impl_->PinchGestureUpdate(page_scale_delta, gfx::Point(10, 10)); - host_impl_->ScrollUpdate( - UpdateState(gfx::Point(10, 10), gfx::Vector2d(-10, -10), - InputHandler::TOUCHSCREEN) - .get(), - InputHandler::TOUCHSCREEN); + host_impl_->ScrollUpdate(UpdateState(gfx::Point(10, 10), + gfx::Vector2d(-10, -10), + InputHandler::TOUCHSCREEN) + .get()); host_impl_->PinchGestureUpdate(page_scale_delta, gfx::Point(20, 20)); host_impl_->PinchGestureEnd(gfx::Point(20, 20), true); host_impl_->ScrollEnd(); @@ -3362,11 +3303,10 @@ // Needed so layer transform includes page scale. DrawFrame(); - host_impl_->ScrollUpdate( - UpdateState(gfx::Point(0, 0), gfx::Vector2d(10, 10), - InputHandler::TOUCHSCREEN) - .get(), - InputHandler::TOUCHSCREEN); + host_impl_->ScrollUpdate(UpdateState(gfx::Point(0, 0), + gfx::Vector2d(10, 10), + InputHandler::TOUCHSCREEN) + .get()); host_impl_->PinchGestureUpdate(1, gfx::Point(10, 10)); host_impl_->PinchGestureEnd(gfx::Point(10, 10), true); host_impl_->ScrollEnd(); @@ -3407,11 +3347,10 @@ InputHandler::TOUCHSCREEN); host_impl_->PinchGestureBegin(); host_impl_->PinchGestureUpdate(page_scale_delta, gfx::Point(10, 10)); - host_impl_->ScrollUpdate( - UpdateState(gfx::Point(10, 10), gfx::Vector2dF(0, -1.001f), - InputHandler::TOUCHSCREEN) - .get(), - InputHandler::TOUCHSCREEN); + host_impl_->ScrollUpdate(UpdateState(gfx::Point(10, 10), + gfx::Vector2dF(0, -1.001f), + InputHandler::TOUCHSCREEN) + .get()); host_impl_->PinchGestureUpdate(page_scale_delta, gfx::Point(10, 9)); host_impl_->PinchGestureEnd(gfx::Point(10, 9), true); host_impl_->ScrollEnd(); @@ -3450,11 +3389,10 @@ BeginState(gfx::Point(10, 10), gfx::Vector2dF(0, -1), InputHandler::WHEEL) .get(), InputHandler::WHEEL); - host_impl_->ScrollUpdate( - UpdateState(gfx::Point(10, 10), gfx::Vector2dF(0, -1), - InputHandler::WHEEL) - .get(), - InputHandler::WHEEL); + host_impl_->ScrollUpdate(UpdateState(gfx::Point(10, 10), + gfx::Vector2dF(0, -1), + InputHandler::WHEEL) + .get()); host_impl_->ScrollEnd(); gfx::ScrollOffset active_base = @@ -4014,7 +3952,7 @@ ASSERT_EQ(host_impl_->CurrentlyScrollingNode(), host_impl_->OuterViewportScrollNode()); - host_impl_->ScrollUpdate(update_state.get(), type); + host_impl_->ScrollUpdate(update_state.get()); EXPECT_TRUE(GetImplAnimationHost()->IsImplOnlyScrollAnimating()); host_impl_->ScrollEnd(); @@ -4036,7 +3974,7 @@ ASSERT_EQ(host_impl_->CurrentlyScrollingNode(), host_impl_->OuterViewportScrollNode()); - host_impl_->ScrollUpdate(update_state.get(), type); + host_impl_->ScrollUpdate(update_state.get()); EXPECT_FALSE(GetImplAnimationHost()->IsImplOnlyScrollAnimating()); host_impl_->ScrollEnd(); @@ -4081,7 +4019,7 @@ ASSERT_EQ(host_impl_->CurrentlyScrollingNode(), host_impl_->OuterViewportScrollNode()); - host_impl_->ScrollUpdate(update_state.get(), type); + host_impl_->ScrollUpdate(update_state.get()); EXPECT_FALSE(GetImplAnimationHost()->IsImplOnlyScrollAnimating()); host_impl_->ScrollEnd(); @@ -4204,8 +4142,7 @@ InputHandler::WHEEL); host_impl_->ScrollUpdate( UpdateState(gfx::Point(), gfx::Vector2dF(0, 0), InputHandler::WHEEL) - .get(), - InputHandler::WHEEL); + .get()); host_impl_->ScrollEnd(); EXPECT_FALSE(did_request_next_frame_); EXPECT_FALSE(did_request_redraw_); @@ -4241,8 +4178,7 @@ InputHandler::WHEEL); host_impl_->ScrollUpdate( UpdateState(gfx::Point(), gfx::Vector2dF(0, 5), InputHandler::WHEEL) - .get(), - InputHandler::WHEEL); + .get()); EXPECT_FALSE(did_request_next_frame_); EXPECT_TRUE(did_request_redraw_); did_request_redraw_ = false; @@ -4394,8 +4330,7 @@ InputHandler::WHEEL); host_impl_->ScrollUpdate( UpdateState(gfx::Point(), gfx::Vector2dF(0, 5), InputHandler::WHEEL) - .get(), - InputHandler::WHEEL); + .get()); host_impl_->ScrollEnd(); CreatePendingTree(); @@ -4524,8 +4459,7 @@ InputHandler::WHEEL); host_impl_->ScrollUpdate( UpdateState(gfx::Point(20, 20), gfx::Vector2d(0, 10), InputHandler::WHEEL) - .get(), - InputHandler::WHEEL); + .get()); host_impl_->ScrollEnd(); EXPECT_TRUE(scrollbar_1_->Opacity()); @@ -4540,8 +4474,7 @@ .get(), InputHandler::WHEEL); host_impl_->ScrollUpdate( - AnimatedUpdateState(gfx::Point(70, 70), gfx::Vector2d(0, 100)).get(), - InputHandler::WHEEL); + AnimatedUpdateState(gfx::Point(70, 70), gfx::Vector2d(0, 100)).get()); host_impl_->ScrollEnd(); EXPECT_TRUE(scrollbar_1_->Opacity()); @@ -4807,8 +4740,7 @@ InputHandler::WHEEL); host_impl_->ScrollUpdate( UpdateState(gfx::Point(), gfx::Vector2d(10, 10), InputHandler::WHEEL) - .get(), - InputHandler::WHEEL); + .get()); host_impl_->ScrollEnd(); EXPECT_FALSE(animation_task_.is_null()); animation_task_.Reset(); @@ -4895,8 +4827,7 @@ InputHandler::WHEEL); host_impl_->ScrollUpdate( UpdateState(gfx::Point(), gfx::Vector2d(0, 100), InputHandler::WHEEL) - .get(), - InputHandler::WHEEL); + .get()); host_impl_->ScrollEnd(); // Move the mouse near the thumb in the top position. @@ -4910,8 +4841,7 @@ InputHandler::WHEEL); host_impl_->ScrollUpdate( UpdateState(gfx::Point(), gfx::Vector2d(0, -100), InputHandler::WHEEL) - .get(), - InputHandler::WHEEL); + .get()); host_impl_->ScrollEnd(); // Move the mouse near the thumb in the top position. @@ -5134,8 +5064,7 @@ .thread); host_impl_->ScrollUpdate( UpdateState(gfx::Point(), gfx::Vector2d(0, 10), InputHandler::WHEEL) - .get(), - InputHandler::WHEEL); + .get()); { viz::CompositorFrameMetadata metadata = host_impl_->MakeCompositorFrameMetadata(); @@ -5882,8 +5811,7 @@ // the minimum scale as well. host_impl_->ScrollUpdate(UpdateState(gfx::Point(0, 0), gfx::Vector2dF(0, 25), InputHandler::TOUCHSCREEN) - .get(), - InputHandler::TOUCHSCREEN); + .get()); EXPECT_VIEWPORT_GEOMETRIES(0.5f); host_impl_->ScrollEnd(); @@ -6023,8 +5951,7 @@ .thread); host_impl_->ScrollUpdate(UpdateState(gfx::Point(), gfx::Vector2dF(0, 50), InputHandler::TOUCHSCREEN) - .get(), - InputHandler::TOUCHSCREEN); + .get()); // The entire scroll delta should have been used to hide the browser controls. // The viewport layers should be resized back to their full sizes. @@ -6036,8 +5963,7 @@ // The inner viewport should be scrollable by 50px * page_scale. host_impl_->ScrollUpdate(UpdateState(gfx::Point(), gfx::Vector2dF(0, 100), InputHandler::TOUCHSCREEN) - .get(), - InputHandler::TOUCHSCREEN); + .get()); EXPECT_EQ(50, inner_scroll->CurrentScrollOffset().y()); EXPECT_EQ(0, outer_scroll->CurrentScrollOffset().y()); EXPECT_EQ(gfx::ScrollOffset(), outer_scroll->MaxScrollOffset()); @@ -6056,8 +5982,7 @@ host_impl_->ScrollUpdate(UpdateState(gfx::Point(), gfx::Vector2dF(0, -50), InputHandler::TOUCHSCREEN) - .get(), - InputHandler::TOUCHSCREEN); + .get()); // The entire scroll delta should have been used to show the browser controls. // The outer viewport should be resized to accomodate and scrolled to the @@ -6072,22 +5997,19 @@ // since it wasn't scrollable when the scroll began. host_impl_->ScrollUpdate(UpdateState(gfx::Point(), gfx::Vector2dF(0, -20), InputHandler::TOUCHSCREEN) - .get(), - InputHandler::TOUCHSCREEN); + .get()); EXPECT_EQ(25, outer_scroll->CurrentScrollOffset().y()); EXPECT_EQ(15, inner_scroll->CurrentScrollOffset().y()); host_impl_->ScrollUpdate(UpdateState(gfx::Point(), gfx::Vector2dF(0, -30), InputHandler::TOUCHSCREEN) - .get(), - InputHandler::TOUCHSCREEN); + .get()); EXPECT_EQ(25, outer_scroll->CurrentScrollOffset().y()); EXPECT_EQ(0, inner_scroll->CurrentScrollOffset().y()); host_impl_->ScrollUpdate(UpdateState(gfx::Point(), gfx::Vector2dF(0.f, -50), InputHandler::TOUCHSCREEN) - .get(), - InputHandler::TOUCHSCREEN); + .get()); host_impl_->ScrollEnd(); EXPECT_EQ(0, outer_scroll->CurrentScrollOffset().y()); @@ -6131,6 +6053,14 @@ // Scroll past the maximum extent. The delta shouldn't be greater than the // browser controls height. + EXPECT_EQ( + InputHandler::SCROLL_ON_IMPL_THREAD, + host_impl_ + ->ScrollBegin(BeginState(gfx::Point(), top_controls_scroll_delta, + InputHandler::TOUCHSCREEN) + .get(), + InputHandler::TOUCHSCREEN) + .thread); host_impl_->browser_controls_manager()->ScrollBegin(); host_impl_->browser_controls_manager()->ScrollBy(top_controls_scroll_delta); host_impl_->browser_controls_manager()->ScrollBy(top_controls_scroll_delta); @@ -6141,6 +6071,14 @@ host_impl_->ScrollEnd(); // Scroll in the direction to make the browser controls show. + EXPECT_EQ( + InputHandler::SCROLL_ON_IMPL_THREAD, + host_impl_ + ->ScrollBegin(BeginState(gfx::Point(), -top_controls_scroll_delta, + InputHandler::TOUCHSCREEN) + .get(), + InputHandler::TOUCHSCREEN) + .thread); host_impl_->browser_controls_manager()->ScrollBegin(); host_impl_->browser_controls_manager()->ScrollBy(-top_controls_scroll_delta); EXPECT_EQ(top_controls_scroll_delta.y(), @@ -6149,6 +6087,7 @@ gfx::Vector2dF(0, top_controls_height_ - top_controls_scroll_delta.y()), property_trees->outer_viewport_container_bounds_delta()); host_impl_->browser_controls_manager()->ScrollEnd(); + host_impl_->ScrollEnd(); } // Push a browser controls ratio from the main thread that we didn't send as a @@ -6215,8 +6154,7 @@ InputHandler::TOUCHSCREEN) .thread); host_impl_->ScrollUpdate( - UpdateState(gfx::Point(), scroll_delta, InputHandler::TOUCHSCREEN).get(), - InputHandler::TOUCHSCREEN); + UpdateState(gfx::Point(), scroll_delta, InputHandler::TOUCHSCREEN).get()); host_impl_->ScrollEnd(); // Browser controls should be hidden @@ -6416,8 +6354,7 @@ InputHandler::TOUCHSCREEN) .thread); host_impl_->ScrollUpdate( - UpdateState(gfx::Point(), scroll_delta, InputHandler::TOUCHSCREEN).get(), - InputHandler::TOUCHSCREEN); + UpdateState(gfx::Point(), scroll_delta, InputHandler::TOUCHSCREEN).get()); // scrolling down at the max extents no longer hides the browser controls EXPECT_EQ(1, host_impl_->active_tree()->CurrentTopControlsShownRatio()); @@ -6450,8 +6387,7 @@ InputHandler::TOUCHSCREEN) .thread); host_impl_->ScrollUpdate( - UpdateState(gfx::Point(), scroll_delta, InputHandler::TOUCHSCREEN).get(), - InputHandler::TOUCHSCREEN); + UpdateState(gfx::Point(), scroll_delta, InputHandler::TOUCHSCREEN).get()); host_impl_->ScrollEnd(); // The viewport offset shouldn't have changed. @@ -6484,8 +6420,7 @@ InputHandler::TOUCHSCREEN) .thread); host_impl_->ScrollUpdate( - UpdateState(gfx::Point(), scroll_delta, InputHandler::TOUCHSCREEN).get(), - InputHandler::TOUCHSCREEN); + UpdateState(gfx::Point(), scroll_delta, InputHandler::TOUCHSCREEN).get()); host_impl_->ScrollEnd(); EXPECT_FLOAT_EQ( @@ -6526,8 +6461,7 @@ InputHandler::TOUCHSCREEN) .thread); host_impl_->ScrollUpdate( - UpdateState(gfx::Point(), scroll_delta, InputHandler::TOUCHSCREEN).get(), - InputHandler::TOUCHSCREEN); + UpdateState(gfx::Point(), scroll_delta, InputHandler::TOUCHSCREEN).get()); EXPECT_EQ(OuterViewportScrollLayer()->scroll_tree_index(), host_impl_->CurrentlyScrollingNode()->id); @@ -6547,8 +6481,7 @@ InputHandler::TOUCHSCREEN) .thread); host_impl_->ScrollUpdate( - UpdateState(gfx::Point(), scroll_delta, InputHandler::TOUCHSCREEN).get(), - InputHandler::TOUCHSCREEN); + UpdateState(gfx::Point(), scroll_delta, InputHandler::TOUCHSCREEN).get()); EXPECT_EQ(0, host_impl_->browser_controls_manager()->ContentTopOffset()); EXPECT_EQ(OuterViewportScrollLayer()->scroll_tree_index(), @@ -6570,8 +6503,7 @@ InputHandler::TOUCHSCREEN) .thread); host_impl_->ScrollUpdate( - UpdateState(gfx::Point(), scroll_delta, InputHandler::TOUCHSCREEN).get(), - InputHandler::TOUCHSCREEN); + UpdateState(gfx::Point(), scroll_delta, InputHandler::TOUCHSCREEN).get()); EXPECT_EQ(top_controls_height_, host_impl_->browser_controls_manager()->ContentTopOffset()); @@ -6686,8 +6618,7 @@ InputHandler::TOUCHSCREEN); host_impl_->ScrollUpdate(UpdateState(gfx::Point(), gfx::Vector2d(0, 2000), InputHandler::TOUCHSCREEN) - .get(), - InputHandler::TOUCHSCREEN); + .get()); host_impl_->ScrollEnd(); } @@ -6810,8 +6741,7 @@ .thread); host_impl_->ScrollUpdate( UpdateState(gfx::Point(), gfx::Vector2d(0, 10), InputHandler::WHEEL) - .get(), - InputHandler::WHEEL); + .get()); host_impl_->ScrollEnd(); EXPECT_TRUE(did_request_redraw_); EXPECT_TRUE(did_request_commit_); @@ -6840,8 +6770,7 @@ .thread); host_impl_->ScrollUpdate( UpdateState(gfx::Point(), gfx::Vector2d(0, 10), InputHandler::WHEEL) - .get(), - InputHandler::WHEEL); + .get()); host_impl_->ScrollEnd(); EXPECT_TRUE(did_request_redraw_); EXPECT_TRUE(did_request_commit_); @@ -6942,8 +6871,7 @@ InputHandler::WHEEL) .thread); host_impl_->ScrollUpdate( - UpdateState(gfx::Point(), scroll_delta, InputHandler::WHEEL).get(), - InputHandler::WHEEL); + UpdateState(gfx::Point(), scroll_delta, InputHandler::WHEEL).get()); host_impl_->ScrollEnd(); // Set new page scale from main thread. @@ -6985,8 +6913,7 @@ InputHandler::WHEEL) .thread); host_impl_->ScrollUpdate( - UpdateState(gfx::Point(), scroll_delta, InputHandler::WHEEL).get(), - InputHandler::WHEEL); + UpdateState(gfx::Point(), scroll_delta, InputHandler::WHEEL).get()); host_impl_->ScrollEnd(); // Set new page scale on impl thread by pinching. @@ -7084,8 +7011,7 @@ InputHandler::WHEEL) .thread); host_impl_->ScrollUpdate( - UpdateState(gfx::Point(), scroll_delta, InputHandler::WHEEL).get(), - InputHandler::WHEEL); + UpdateState(gfx::Point(), scroll_delta, InputHandler::WHEEL).get()); host_impl_->ScrollEnd(); float page_scale = 2; @@ -7142,8 +7068,7 @@ InputHandler::WHEEL) .thread); host_impl_->ScrollUpdate( - UpdateState(gfx::Point(), scroll_delta, InputHandler::WHEEL).get(), - InputHandler::WHEEL); + UpdateState(gfx::Point(), scroll_delta, InputHandler::WHEEL).get()); host_impl_->ScrollEnd(); std::unique_ptr<ScrollAndScaleSet> scroll_info = @@ -7200,8 +7125,7 @@ InputHandler::WHEEL) .thread); host_impl_->ScrollUpdate( - AnimatedUpdateState(gfx::Point(), gfx::Vector2d(0, -100)).get(), - InputHandler::WHEEL); + AnimatedUpdateState(gfx::Point(), gfx::Vector2d(0, -100)).get()); begin_frame_args.frame_time = start_time; begin_frame_args.frame_id.sequence_number++; @@ -7226,8 +7150,7 @@ // Second ScrollAnimated should remain latched to the grand_child_layer. host_impl_->ScrollUpdate( - AnimatedUpdateState(gfx::Point(), gfx::Vector2d(0, -100)).get(), - InputHandler::WHEEL); + AnimatedUpdateState(gfx::Point(), gfx::Vector2d(0, -100)).get()); begin_frame_args.frame_time = start_time + base::TimeDelta::FromMilliseconds(250); @@ -7287,8 +7210,7 @@ .thread); host_impl_->ScrollUpdate( UpdateState(gfx::Point(), scroll_delta, InputHandler::TOUCHSCREEN) - .get(), - InputHandler::TOUCHSCREEN); + .get()); host_impl_->ScrollEnd(); std::unique_ptr<ScrollAndScaleSet> scroll_info = @@ -7315,8 +7237,7 @@ child_layer->scroll_tree_index()); host_impl_->ScrollUpdate( UpdateState(gfx::Point(), scroll_delta, InputHandler::TOUCHSCREEN) - .get(), - InputHandler::TOUCHSCREEN); + .get()); EXPECT_EQ(host_impl_->CurrentlyScrollingNode()->id, child_layer->scroll_tree_index()); host_impl_->ScrollEnd(); @@ -7347,8 +7268,7 @@ grand_child_layer->scroll_tree_index()); host_impl_->ScrollUpdate( UpdateState(gfx::Point(), scroll_delta, InputHandler::TOUCHSCREEN) - .get(), - InputHandler::TOUCHSCREEN); + .get()); EXPECT_EQ(host_impl_->CurrentlyScrollingNode()->id, grand_child_layer->scroll_tree_index()); host_impl_->ScrollEnd(); @@ -7381,8 +7301,7 @@ host_impl_->CurrentlyScrollingNode()->id); host_impl_->ScrollUpdate( UpdateState(gfx::Point(), scroll_delta, InputHandler::TOUCHSCREEN) - .get(), - InputHandler::TOUCHSCREEN); + .get()); host_impl_->ScrollEnd(); scroll_info = host_impl_->ProcessScrollDeltas(); @@ -7426,8 +7345,7 @@ host_impl_->ScrollUpdate( UpdateState(gfx::Point(), gfx::ScrollOffsetToVector2dF(scroll_delta), InputHandler::WHEEL) - .get(), - InputHandler::WHEEL); + .get()); host_impl_->ScrollEnd(); std::unique_ptr<ScrollAndScaleSet> scroll_info = @@ -7470,8 +7388,7 @@ host_impl_->ScrollUpdate( UpdateState(gfx::Point(), gfx::ScrollOffsetToVector2dF(scroll_delta), InputHandler::WHEEL) - .get(), - InputHandler::WHEEL); + .get()); host_impl_->ScrollEnd(); std::unique_ptr<ScrollAndScaleSet> scroll_info = @@ -7532,8 +7449,7 @@ .thread); host_impl_->ScrollUpdate( UpdateState(gfx::Point(), gesture_scroll_delta, InputHandler::TOUCHSCREEN) - .get(), - InputHandler::TOUCHSCREEN); + .get()); host_impl_->ScrollEnd(); // The layer should have scrolled down in its local coordinates. @@ -7559,8 +7475,7 @@ UpdateState(gfx::Point(), gfx::ScrollOffsetToVector2dF(wheel_scroll_delta), InputHandler::WHEEL) - .get(), - InputHandler::WHEEL); + .get()); host_impl_->ScrollEnd(); // The layer should have scrolled down in its local coordinates. @@ -7613,8 +7528,7 @@ .thread); host_impl_->ScrollUpdate(UpdateState(gfx::Point(), gesture_scroll_delta, InputHandler::TOUCHSCREEN) - .get(), - InputHandler::TOUCHSCREEN); + .get()); host_impl_->ScrollEnd(); // The child layer should have scrolled down in its local coordinates an @@ -7645,8 +7559,7 @@ .thread); host_impl_->ScrollUpdate(UpdateState(gfx::Point(), gesture_scroll_delta, InputHandler::TOUCHSCREEN) - .get(), - InputHandler::TOUCHSCREEN); + .get()); host_impl_->ScrollEnd(); // The child layer should have scrolled down in its local coordinates an @@ -7731,8 +7644,7 @@ UpdateState(viewport_point, gfx::ScrollOffsetToVector2dF(gesture_scroll_deltas[i]), InputHandler::TOUCHSCREEN) - .get(), - InputHandler::TOUCHSCREEN); + .get()); viewport_point += gfx::ScrollOffsetToFlooredVector2d(gesture_scroll_deltas[i]); host_impl_->ScrollEnd(); @@ -7769,8 +7681,7 @@ InputHandler::TOUCHSCREEN) .thread); host_impl_->ScrollUpdate( - UpdateState(gfx::Point(), scroll_delta, InputHandler::TOUCHSCREEN).get(), - InputHandler::TOUCHSCREEN); + UpdateState(gfx::Point(), scroll_delta, InputHandler::TOUCHSCREEN).get()); host_impl_->ScrollEnd(); // The layer should have scrolled down in its local coordinates, but half the @@ -7797,8 +7708,7 @@ UpdateState(gfx::Point(), gfx::ScrollOffsetToVector2dF(wheel_scroll_delta), InputHandler::WHEEL) - .get(), - InputHandler::WHEEL); + .get()); host_impl_->ScrollEnd(); // It should apply the scale factor to the scroll delta for the wheel event. @@ -7900,16 +7810,14 @@ host_impl_->SetSynchronousInputHandlerRootScrollOffset(current_offset); host_impl_->ScrollUpdate( - UpdateState(gfx::Point(), scroll_delta, InputHandler::TOUCHSCREEN).get(), - InputHandler::TOUCHSCREEN); + UpdateState(gfx::Point(), scroll_delta, InputHandler::TOUCHSCREEN).get()); EXPECT_EQ(ScrollOffsetWithDelta(current_offset, scroll_delta), scroll_watcher.last_set_scroll_offset()); current_offset = gfx::ScrollOffset(42, 41); host_impl_->SetSynchronousInputHandlerRootScrollOffset(current_offset); host_impl_->ScrollUpdate( - UpdateState(gfx::Point(), scroll_delta, InputHandler::TOUCHSCREEN).get(), - InputHandler::TOUCHSCREEN); + UpdateState(gfx::Point(), scroll_delta, InputHandler::TOUCHSCREEN).get()); EXPECT_EQ(current_offset + gfx::ScrollOffset(scroll_delta), scroll_watcher.last_set_scroll_offset()); host_impl_->ScrollEnd(); @@ -8113,8 +8021,7 @@ .thread); scroll_result = host_impl_->ScrollUpdate( UpdateState(gfx::Point(), gfx::Vector2d(0, 10), InputHandler::WHEEL) - .get(), - InputHandler::WHEEL); + .get()); EXPECT_TRUE(scroll_result.did_scroll); EXPECT_FALSE(scroll_result.did_overscroll_root); EXPECT_EQ(gfx::Vector2dF(), scroll_result.unused_scroll_delta); @@ -8123,8 +8030,7 @@ // Overscroll events are reflected immediately. scroll_result = host_impl_->ScrollUpdate( UpdateState(gfx::Point(), gfx::Vector2d(0, 50), InputHandler::WHEEL) - .get(), - InputHandler::WHEEL); + .get()); EXPECT_TRUE(scroll_result.did_scroll); EXPECT_TRUE(scroll_result.did_overscroll_root); EXPECT_EQ(gfx::Vector2dF(0, 10), scroll_result.unused_scroll_delta); @@ -8135,8 +8041,7 @@ // In-bounds scrolling resets accumulated overscroll for the scrolled axes. scroll_result = host_impl_->ScrollUpdate( UpdateState(gfx::Point(), gfx::Vector2d(0, -50), InputHandler::WHEEL) - .get(), - InputHandler::WHEEL); + .get()); EXPECT_TRUE(scroll_result.did_scroll); EXPECT_FALSE(scroll_result.did_overscroll_root); EXPECT_EQ(gfx::Vector2dF(), scroll_result.unused_scroll_delta); @@ -8146,8 +8051,7 @@ scroll_result = host_impl_->ScrollUpdate( UpdateState(gfx::Point(), gfx::Vector2d(0, -10), InputHandler::WHEEL) - .get(), - InputHandler::WHEEL); + .get()); EXPECT_FALSE(scroll_result.did_scroll); EXPECT_TRUE(scroll_result.did_overscroll_root); EXPECT_EQ(gfx::Vector2dF(0, -10), scroll_result.unused_scroll_delta); @@ -8157,8 +8061,7 @@ scroll_result = host_impl_->ScrollUpdate( UpdateState(gfx::Point(), gfx::Vector2d(10, 0), InputHandler::WHEEL) - .get(), - InputHandler::WHEEL); + .get()); EXPECT_TRUE(scroll_result.did_scroll); EXPECT_FALSE(scroll_result.did_overscroll_root); EXPECT_EQ(gfx::Vector2dF(0, 0), scroll_result.unused_scroll_delta); @@ -8168,8 +8071,7 @@ scroll_result = host_impl_->ScrollUpdate( UpdateState(gfx::Point(), gfx::Vector2d(-15, 0), InputHandler::WHEEL) - .get(), - InputHandler::WHEEL); + .get()); EXPECT_TRUE(scroll_result.did_scroll); EXPECT_TRUE(scroll_result.did_overscroll_root); EXPECT_EQ(gfx::Vector2dF(-5, 0), scroll_result.unused_scroll_delta); @@ -8179,8 +8081,7 @@ scroll_result = host_impl_->ScrollUpdate( UpdateState(gfx::Point(), gfx::Vector2d(0, 60), InputHandler::WHEEL) - .get(), - InputHandler::WHEEL); + .get()); EXPECT_TRUE(scroll_result.did_scroll); EXPECT_TRUE(scroll_result.did_overscroll_root); EXPECT_EQ(gfx::Vector2dF(0, 10), scroll_result.unused_scroll_delta); @@ -8190,8 +8091,7 @@ scroll_result = host_impl_->ScrollUpdate( UpdateState(gfx::Point(), gfx::Vector2d(10, -60), InputHandler::WHEEL) - .get(), - InputHandler::WHEEL); + .get()); EXPECT_TRUE(scroll_result.did_scroll); EXPECT_TRUE(scroll_result.did_overscroll_root); EXPECT_EQ(gfx::Vector2dF(0, -10), scroll_result.unused_scroll_delta); @@ -8203,8 +8103,7 @@ // as no scroll occurs. scroll_result = host_impl_->ScrollUpdate( UpdateState(gfx::Point(), gfx::Vector2d(0, -20), InputHandler::WHEEL) - .get(), - InputHandler::WHEEL); + .get()); EXPECT_FALSE(scroll_result.did_scroll); EXPECT_TRUE(scroll_result.did_overscroll_root); EXPECT_EQ(gfx::Vector2dF(0, -20), scroll_result.unused_scroll_delta); @@ -8214,8 +8113,7 @@ scroll_result = host_impl_->ScrollUpdate( UpdateState(gfx::Point(), gfx::Vector2d(0, -20), InputHandler::WHEEL) - .get(), - InputHandler::WHEEL); + .get()); EXPECT_FALSE(scroll_result.did_scroll); EXPECT_TRUE(scroll_result.did_overscroll_root); EXPECT_EQ(gfx::Vector2dF(0, -20), scroll_result.unused_scroll_delta); @@ -8226,8 +8124,7 @@ // Overscroll resets on valid scroll. scroll_result = host_impl_->ScrollUpdate( UpdateState(gfx::Point(), gfx::Vector2d(0, 10), InputHandler::WHEEL) - .get(), - InputHandler::WHEEL); + .get()); EXPECT_TRUE(scroll_result.did_scroll); EXPECT_FALSE(scroll_result.did_overscroll_root); EXPECT_EQ(gfx::Vector2dF(0, 0), scroll_result.unused_scroll_delta); @@ -8237,8 +8134,7 @@ scroll_result = host_impl_->ScrollUpdate( UpdateState(gfx::Point(), gfx::Vector2d(0, -20), InputHandler::WHEEL) - .get(), - InputHandler::WHEEL); + .get()); EXPECT_TRUE(scroll_result.did_scroll); EXPECT_TRUE(scroll_result.did_overscroll_root); EXPECT_EQ(gfx::Vector2dF(0, -10), scroll_result.unused_scroll_delta); @@ -8287,8 +8183,7 @@ .thread); scroll_result = host_impl_->ScrollUpdate( UpdateState(gfx::Point(), scroll_delta, InputHandler::TOUCHSCREEN) - .get(), - InputHandler::TOUCHSCREEN); + .get()); EXPECT_EQ(host_impl_->CurrentlyScrollingNode()->id, grand_child_layer->scroll_tree_index()); EXPECT_TRUE(scroll_result.did_scroll); @@ -8320,8 +8215,7 @@ .thread); scroll_result = host_impl_->ScrollUpdate( UpdateState(gfx::Point(), scroll_delta, InputHandler::TOUCHSCREEN) - .get(), - InputHandler::TOUCHSCREEN); + .get()); EXPECT_TRUE(scroll_result.did_scroll); EXPECT_FALSE(scroll_result.did_overscroll_root); EXPECT_EQ(host_impl_->CurrentlyScrollingNode()->id, @@ -8343,8 +8237,7 @@ grand_child_layer->scroll_tree_index()); scroll_result = host_impl_->ScrollUpdate( UpdateState(gfx::Point(), scroll_delta, InputHandler::TOUCHSCREEN) - .get(), - InputHandler::TOUCHSCREEN); + .get()); EXPECT_TRUE(scroll_result.did_scroll); EXPECT_FALSE(scroll_result.did_overscroll_root); EXPECT_EQ(host_impl_->CurrentlyScrollingNode()->id, @@ -8371,20 +8264,17 @@ InputHandler::WHEEL) .thread); scroll_result = host_impl_->ScrollUpdate( - UpdateState(gfx::Point(), scroll_delta, InputHandler::WHEEL).get(), - InputHandler::WHEEL); + UpdateState(gfx::Point(), scroll_delta, InputHandler::WHEEL).get()); EXPECT_TRUE(scroll_result.did_scroll); EXPECT_FALSE(scroll_result.did_overscroll_root); EXPECT_EQ(gfx::Vector2dF(), host_impl_->accumulated_root_overscroll()); scroll_result = host_impl_->ScrollUpdate( - UpdateState(gfx::Point(), scroll_delta, InputHandler::WHEEL).get(), - InputHandler::WHEEL); + UpdateState(gfx::Point(), scroll_delta, InputHandler::WHEEL).get()); EXPECT_TRUE(scroll_result.did_scroll); EXPECT_TRUE(scroll_result.did_overscroll_root); EXPECT_EQ(gfx::Vector2dF(0, 6), host_impl_->accumulated_root_overscroll()); scroll_result = host_impl_->ScrollUpdate( - UpdateState(gfx::Point(), scroll_delta, InputHandler::WHEEL).get(), - InputHandler::WHEEL); + UpdateState(gfx::Point(), scroll_delta, InputHandler::WHEEL).get()); EXPECT_FALSE(scroll_result.did_scroll); EXPECT_TRUE(scroll_result.did_overscroll_root); EXPECT_EQ(gfx::Vector2dF(0, 14), host_impl_->accumulated_root_overscroll()); @@ -8414,8 +8304,7 @@ .thread); scroll_result = host_impl_->ScrollUpdate( UpdateState(gfx::Point(), gfx::Vector2d(0, 10), InputHandler::WHEEL) - .get(), - InputHandler::WHEEL); + .get()); EXPECT_FALSE(scroll_result.did_scroll); EXPECT_TRUE(scroll_result.did_overscroll_root); EXPECT_EQ(gfx::Vector2dF(0, 10), host_impl_->accumulated_root_overscroll()); @@ -8441,8 +8330,7 @@ .thread); scroll_result = host_impl_->ScrollUpdate( UpdateState(gfx::Point(), gfx::Vector2dF(0, 100), InputHandler::WHEEL) - .get(), - InputHandler::WHEEL); + .get()); EXPECT_TRUE(scroll_result.did_scroll); EXPECT_FALSE(scroll_result.did_overscroll_root); EXPECT_EQ(gfx::Vector2dF().ToString(), @@ -8450,8 +8338,7 @@ scroll_result = host_impl_->ScrollUpdate( UpdateState(gfx::Point(), gfx::Vector2dF(0, -2.30f), InputHandler::WHEEL) - .get(), - InputHandler::WHEEL); + .get()); EXPECT_TRUE(scroll_result.did_scroll); EXPECT_FALSE(scroll_result.did_overscroll_root); EXPECT_EQ(gfx::Vector2dF().ToString(), @@ -8470,8 +8357,7 @@ scroll_result = host_impl_->ScrollUpdate( UpdateState(gfx::Point(), gfx::Vector2dF(0, 20), InputHandler::TOUCHSCREEN) - .get(), - InputHandler::TOUCHSCREEN); + .get()); EXPECT_TRUE(scroll_result.did_scroll); EXPECT_TRUE(scroll_result.did_overscroll_root); EXPECT_VECTOR2DF_EQ(gfx::Vector2dF(0.000000f, 17.699997f), @@ -8480,8 +8366,7 @@ scroll_result = host_impl_->ScrollUpdate( UpdateState(gfx::Point(), gfx::Vector2dF(0.02f, -0.01f), InputHandler::TOUCHSCREEN) - .get(), - InputHandler::TOUCHSCREEN); + .get()); EXPECT_FALSE(scroll_result.did_scroll); EXPECT_FALSE(scroll_result.did_overscroll_root); EXPECT_VECTOR2DF_EQ(gfx::Vector2dF(0.000000f, 17.699997f), @@ -8500,8 +8385,7 @@ scroll_result = host_impl_->ScrollUpdate( UpdateState(gfx::Point(), gfx::Vector2dF(-0.12f, 0.1f), InputHandler::WHEEL) - .get(), - InputHandler::WHEEL); + .get()); EXPECT_FALSE(scroll_result.did_scroll); EXPECT_FALSE(scroll_result.did_overscroll_root); EXPECT_EQ(gfx::Vector2dF().ToString(), @@ -8531,11 +8415,10 @@ InputHandler::TOUCHSCREEN) .get(), InputHandler::TOUCHSCREEN); - host_impl_->ScrollUpdate( - UpdateState(gfx::Point(0, 0), gfx::Vector2dF(100, 100), - InputHandler::TOUCHSCREEN) - .get(), - InputHandler::TOUCHSCREEN); + host_impl_->ScrollUpdate(UpdateState(gfx::Point(0, 0), + gfx::Vector2dF(100, 100), + InputHandler::TOUCHSCREEN) + .get()); EXPECT_VECTOR_EQ(gfx::Vector2dF(100, 100), scroll_layer->CurrentScrollOffset()); @@ -8549,8 +8432,7 @@ InputHandlerScrollResult result = host_impl_->ScrollUpdate( UpdateState(gfx::Point(0, 0), gfx::Vector2dF(120, 140), InputHandler::TOUCHSCREEN) - .get(), - InputHandler::TOUCHSCREEN); + .get()); EXPECT_VECTOR_EQ(gfx::Vector2dF(200, 200), scroll_layer->CurrentScrollOffset()); @@ -8565,8 +8447,7 @@ InputHandlerScrollResult result = host_impl_->ScrollUpdate( UpdateState(gfx::Point(0, 0), gfx::Vector2dF(20, 40), InputHandler::TOUCHSCREEN) - .get(), - InputHandler::TOUCHSCREEN); + .get()); EXPECT_VECTOR_EQ(gfx::Vector2dF(200, 200), scroll_layer->CurrentScrollOffset()); @@ -8651,11 +8532,10 @@ InputHandler::TOUCHSCREEN) .get(), InputHandler::TOUCHSCREEN); - host_impl_->ScrollUpdate( - UpdateState(gfx::Point(0, 0), gfx::Vector2dF(1000, 1000), - InputHandler::TOUCHSCREEN) - .get(), - InputHandler::TOUCHSCREEN); + host_impl_->ScrollUpdate(UpdateState(gfx::Point(0, 0), + gfx::Vector2dF(1000, 1000), + InputHandler::TOUCHSCREEN) + .get()); host_impl_->ScrollEnd(); EXPECT_EQ(1, host_impl_->active_tree()->CurrentTopControlsShownRatio()); @@ -8678,20 +8558,17 @@ InputHandler::TOUCHSCREEN); host_impl_->ScrollUpdate( UpdateState(gfx::Point(), scroll_delta, InputHandler::TOUCHSCREEN) - .get(), - InputHandler::TOUCHSCREEN); + .get()); EXPECT_EQ(0, host_impl_->active_tree()->CurrentTopControlsShownRatio()); EXPECT_VECTOR_EQ(gfx::Vector2dF(), inner_scroll_layer->CurrentScrollOffset()); host_impl_->ScrollUpdate( UpdateState(gfx::Point(), scroll_delta, InputHandler::TOUCHSCREEN) - .get(), - InputHandler::TOUCHSCREEN); + .get()); host_impl_->ScrollUpdate( UpdateState(gfx::Point(), scroll_delta, InputHandler::TOUCHSCREEN) - .get(), - InputHandler::TOUCHSCREEN); + .get()); EXPECT_VECTOR_EQ(gfx::Vector2dF(0, 10), inner_scroll_layer->CurrentScrollOffset()); @@ -8738,11 +8615,10 @@ InputHandler::TOUCHSCREEN) .get(), InputHandler::TOUCHSCREEN); - host_impl_->ScrollUpdate( - UpdateState(gfx::Point(0, 0), gfx::Vector2dF(200, 200), - InputHandler::TOUCHSCREEN) - .get(), - InputHandler::TOUCHSCREEN); + host_impl_->ScrollUpdate(UpdateState(gfx::Point(0, 0), + gfx::Vector2dF(200, 200), + InputHandler::TOUCHSCREEN) + .get()); host_impl_->ScrollEnd(); EXPECT_VECTOR_EQ(gfx::Vector2dF(200, 200), @@ -8753,11 +8629,10 @@ InputHandler::TOUCHSCREEN) .get(), InputHandler::TOUCHSCREEN); - host_impl_->ScrollUpdate( - UpdateState(gfx::Point(0, 0), gfx::Vector2dF(200, 200), - InputHandler::TOUCHSCREEN) - .get(), - InputHandler::TOUCHSCREEN); + host_impl_->ScrollUpdate(UpdateState(gfx::Point(0, 0), + gfx::Vector2dF(200, 200), + InputHandler::TOUCHSCREEN) + .get()); host_impl_->ScrollEnd(); EXPECT_VECTOR_EQ(gfx::Vector2dF(0, 0), @@ -8776,11 +8651,10 @@ InputHandler::TOUCHSCREEN) .get(), InputHandler::TOUCHSCREEN); - host_impl_->ScrollUpdate( - UpdateState(gfx::Point(0, 0), gfx::Vector2dF(100, 100), - InputHandler::TOUCHSCREEN) - .get(), - InputHandler::TOUCHSCREEN); + host_impl_->ScrollUpdate(UpdateState(gfx::Point(0, 0), + gfx::Vector2dF(100, 100), + InputHandler::TOUCHSCREEN) + .get()); host_impl_->ScrollEnd(); EXPECT_VECTOR_EQ(gfx::Vector2dF(), @@ -8808,11 +8682,10 @@ InputHandler::TOUCHSCREEN) .get(), InputHandler::TOUCHSCREEN); - host_impl_->ScrollUpdate( - UpdateState(gfx::Point(0, 0), gfx::Vector2dF(100, 100), - InputHandler::TOUCHSCREEN) - .get(), - InputHandler::TOUCHSCREEN); + host_impl_->ScrollUpdate(UpdateState(gfx::Point(0, 0), + gfx::Vector2dF(100, 100), + InputHandler::TOUCHSCREEN) + .get()); host_impl_->ScrollEnd(); EXPECT_VECTOR_EQ(gfx::Vector2dF(50, 50), @@ -8823,11 +8696,10 @@ InputHandler::TOUCHSCREEN) .get(), InputHandler::TOUCHSCREEN); - host_impl_->ScrollUpdate( - UpdateState(gfx::Point(0, 0), gfx::Vector2dF(100, 100), - InputHandler::TOUCHSCREEN) - .get(), - InputHandler::TOUCHSCREEN); + host_impl_->ScrollUpdate(UpdateState(gfx::Point(0, 0), + gfx::Vector2dF(100, 100), + InputHandler::TOUCHSCREEN) + .get()); host_impl_->ScrollEnd(); EXPECT_VECTOR_EQ(gfx::Vector2dF(0, 0), @@ -8879,11 +8751,10 @@ InputHandler::TOUCHSCREEN) .get(), InputHandler::TOUCHSCREEN); - host_impl_->ScrollUpdate( - UpdateState(gfx::Point(0, 0), gfx::Vector2dF(1000, 1000), - InputHandler::TOUCHSCREEN) - .get(), - InputHandler::TOUCHSCREEN); + host_impl_->ScrollUpdate(UpdateState(gfx::Point(0, 0), + gfx::Vector2dF(1000, 1000), + InputHandler::TOUCHSCREEN) + .get()); host_impl_->ScrollEnd(); EXPECT_VECTOR_EQ(gfx::Vector2dF(600, 600), @@ -8898,11 +8769,10 @@ InputHandler::TOUCHSCREEN) .get(), InputHandler::TOUCHSCREEN); - host_impl_->ScrollUpdate( - UpdateState(gfx::Point(0, 0), gfx::Vector2dF(1000, 1000), - InputHandler::TOUCHSCREEN) - .get(), - InputHandler::TOUCHSCREEN); + host_impl_->ScrollUpdate(UpdateState(gfx::Point(0, 0), + gfx::Vector2dF(1000, 1000), + InputHandler::TOUCHSCREEN) + .get()); host_impl_->ScrollEnd(); EXPECT_VECTOR_EQ(gfx::Vector2dF(600, 600), @@ -8940,8 +8810,8 @@ inner_scroll_layer->CurrentScrollOffset()); host_impl_->ScrollUpdate( - UpdateState(anchor, viewport_size_vec, InputHandler::TOUCHSCREEN).get(), - InputHandler::TOUCHSCREEN); + UpdateState(anchor, viewport_size_vec, InputHandler::TOUCHSCREEN) + .get()); EXPECT_VECTOR_EQ(ScaleVector2d(viewport_size_vec, 1 / page_scale_factor), inner_scroll_layer->CurrentScrollOffset()); @@ -8972,11 +8842,10 @@ InputHandler::TOUCHSCREEN) .get(), InputHandler::TOUCHSCREEN); - host_impl_->ScrollUpdate( - UpdateState(gfx::Point(0, 0), gfx::Vector2dF(2000, 2000), - InputHandler::TOUCHSCREEN) - .get(), - InputHandler::TOUCHSCREEN); + host_impl_->ScrollUpdate(UpdateState(gfx::Point(0, 0), + gfx::Vector2dF(2000, 2000), + InputHandler::TOUCHSCREEN) + .get()); host_impl_->ScrollEnd(); EXPECT_VECTOR_EQ(gfx::Vector2dF(600, 600), @@ -8990,11 +8859,10 @@ InputHandler::TOUCHSCREEN) .get(), InputHandler::TOUCHSCREEN); - host_impl_->ScrollUpdate( - UpdateState(gfx::Point(0, 0), gfx::Vector2dF(2000, 2000), - InputHandler::TOUCHSCREEN) - .get(), - InputHandler::TOUCHSCREEN); + host_impl_->ScrollUpdate(UpdateState(gfx::Point(0, 0), + gfx::Vector2dF(2000, 2000), + InputHandler::TOUCHSCREEN) + .get()); host_impl_->ScrollEnd(); EXPECT_VECTOR_EQ(ScaleVector2d(viewport_size_vec, 1 / page_scale_factor), @@ -9008,11 +8876,10 @@ InputHandler::TOUCHSCREEN) .get(), InputHandler::TOUCHSCREEN); - host_impl_->ScrollUpdate( - UpdateState(gfx::Point(0, 0), gfx::Vector2dF(2000, 2000), - InputHandler::TOUCHSCREEN) - .get(), - InputHandler::TOUCHSCREEN); + host_impl_->ScrollUpdate(UpdateState(gfx::Point(0, 0), + gfx::Vector2dF(2000, 2000), + InputHandler::TOUCHSCREEN) + .get()); host_impl_->ScrollEnd(); EXPECT_VECTOR_EQ(gfx::Vector2dF(), @@ -10746,8 +10613,7 @@ host_impl_ ->ScrollUpdate(UpdateState(gfx::Point(), gfx::Vector2d(0, 10), InputHandler::TOUCHSCREEN) - .get(), - InputHandler::TOUCHSCREEN) + .get()) .did_scroll); host_impl_->ScrollEnd(); @@ -10768,8 +10634,7 @@ host_impl_ ->ScrollUpdate(UpdateState(gfx::Point(), gfx::Vector2d(0, 10), InputHandler::TOUCHSCREEN) - .get(), - InputHandler::TOUCHSCREEN) + .get()) .did_scroll); host_impl_->ScrollEnd(); @@ -10878,11 +10743,10 @@ EXPECT_EQ(gfx::Vector2dF().ToString(), scroll_layer->CurrentScrollOffset().ToString()); - result = host_impl_->ScrollUpdate( - UpdateState(gfx::Point(), gfx::Vector2d(0, offset), - InputHandler::TOUCHSCREEN) - .get(), - InputHandler::TOUCHSCREEN); + result = host_impl_->ScrollUpdate(UpdateState(gfx::Point(), + gfx::Vector2d(0, offset), + InputHandler::TOUCHSCREEN) + .get()); EXPECT_EQ(result.unused_scroll_delta, gfx::Vector2d(0, 0)); EXPECT_TRUE(result.did_scroll); EXPECT_FLOAT_EQ(-offset, @@ -10893,11 +10757,10 @@ // Scroll across the boundary const float content_scroll = 20; offset = residue + content_scroll; - result = host_impl_->ScrollUpdate( - UpdateState(gfx::Point(), gfx::Vector2d(0, offset), - InputHandler::TOUCHSCREEN) - .get(), - InputHandler::TOUCHSCREEN); + result = host_impl_->ScrollUpdate(UpdateState(gfx::Point(), + gfx::Vector2d(0, offset), + InputHandler::TOUCHSCREEN) + .get()); EXPECT_TRUE(result.did_scroll); EXPECT_EQ(result.unused_scroll_delta, gfx::Vector2d(0, 0)); EXPECT_EQ(-top_controls_height_, @@ -10907,11 +10770,10 @@ // Now scroll back to the top of the content offset = -content_scroll; - result = host_impl_->ScrollUpdate( - UpdateState(gfx::Point(), gfx::Vector2d(0, offset), - InputHandler::TOUCHSCREEN) - .get(), - InputHandler::TOUCHSCREEN); + result = host_impl_->ScrollUpdate(UpdateState(gfx::Point(), + gfx::Vector2d(0, offset), + InputHandler::TOUCHSCREEN) + .get()); EXPECT_TRUE(result.did_scroll); EXPECT_EQ(result.unused_scroll_delta, gfx::Vector2d(0, 0)); EXPECT_EQ(-top_controls_height_, @@ -10921,11 +10783,10 @@ // And scroll the browser controls completely into view offset = -top_controls_height_; - result = host_impl_->ScrollUpdate( - UpdateState(gfx::Point(), gfx::Vector2d(0, offset), - InputHandler::TOUCHSCREEN) - .get(), - InputHandler::TOUCHSCREEN); + result = host_impl_->ScrollUpdate(UpdateState(gfx::Point(), + gfx::Vector2d(0, offset), + InputHandler::TOUCHSCREEN) + .get()); EXPECT_TRUE(result.did_scroll); EXPECT_EQ(result.unused_scroll_delta, gfx::Vector2d(0, 0)); EXPECT_EQ(0, host_impl_->browser_controls_manager()->ControlsTopOffset()); @@ -10933,11 +10794,10 @@ scroll_layer->CurrentScrollOffset().ToString()); // And attempt to scroll past the end - result = host_impl_->ScrollUpdate( - UpdateState(gfx::Point(), gfx::Vector2d(0, offset), - InputHandler::TOUCHSCREEN) - .get(), - InputHandler::TOUCHSCREEN); + result = host_impl_->ScrollUpdate(UpdateState(gfx::Point(), + gfx::Vector2d(0, offset), + InputHandler::TOUCHSCREEN) + .get()); EXPECT_FALSE(result.did_scroll); EXPECT_EQ(result.unused_scroll_delta, gfx::Vector2d(0, -50)); EXPECT_EQ(0, host_impl_->browser_controls_manager()->ControlsTopOffset()); @@ -10975,8 +10835,7 @@ host_impl_ ->ScrollUpdate(UpdateState(gfx::Point(), gfx::Vector2d(0, delta), InputHandler::WHEEL) - .get(), - InputHandler::WHEEL) + .get()) .did_scroll); EXPECT_FLOAT_EQ(0, host_impl_->browser_controls_manager()->ControlsTopOffset()); @@ -10987,8 +10846,7 @@ host_impl_ ->ScrollUpdate(UpdateState(gfx::Point(), gfx::Vector2d(0, delta), InputHandler::WHEEL) - .get(), - InputHandler::WHEEL) + .get()) .did_scroll); EXPECT_FLOAT_EQ(0, host_impl_->browser_controls_manager()->ControlsTopOffset()); @@ -11025,8 +10883,7 @@ host_impl_ ->ScrollUpdate(UpdateState(gfx::Point(), gfx::Vector2d(0, offset), InputHandler::TOUCHSCREEN) - .get(), - InputHandler::TOUCHSCREEN) + .get()) .did_scroll); EXPECT_FLOAT_EQ(-offset, host_impl_->browser_controls_manager()->ControlsTopOffset()); @@ -11117,8 +10974,7 @@ host_impl_ ->ScrollUpdate(UpdateState(gfx::Point(), gfx::Vector2d(0, offset), InputHandler::TOUCHSCREEN) - .get(), - InputHandler::TOUCHSCREEN) + .get()) .did_scroll); EXPECT_FLOAT_EQ(-offset, host_impl_->browser_controls_manager()->ControlsTopOffset()); @@ -11193,8 +11049,7 @@ host_impl_ ->ScrollUpdate(UpdateState(gfx::Point(), gfx::Vector2d(0, offset), InputHandler::TOUCHSCREEN) - .get(), - InputHandler::TOUCHSCREEN) + .get()) .did_scroll); EXPECT_EQ(-offset, host_impl_->browser_controls_manager()->ControlsTopOffset()); @@ -11205,8 +11060,7 @@ host_impl_ ->ScrollUpdate(UpdateState(gfx::Point(), gfx::Vector2d(0, offset), InputHandler::TOUCHSCREEN) - .get(), - InputHandler::TOUCHSCREEN) + .get()) .did_scroll); EXPECT_EQ(gfx::Vector2dF(0, offset).ToString(), scroll_layer->CurrentScrollOffset().ToString()); @@ -11215,8 +11069,7 @@ host_impl_ ->ScrollUpdate(UpdateState(gfx::Point(), gfx::Vector2d(0, offset), InputHandler::TOUCHSCREEN) - .get(), - InputHandler::TOUCHSCREEN) + .get()) .did_scroll); // Should have fully scrolled @@ -11228,11 +11081,10 @@ // Overscroll the content EXPECT_FALSE( host_impl_ - ->ScrollUpdate( - UpdateState(gfx::Point(), gfx::Vector2d(0, overscrollamount), - InputHandler::TOUCHSCREEN) - .get(), - InputHandler::TOUCHSCREEN) + ->ScrollUpdate(UpdateState(gfx::Point(), + gfx::Vector2d(0, overscrollamount), + InputHandler::TOUCHSCREEN) + .get()) .did_scroll); EXPECT_EQ(gfx::Vector2dF(0, 2 * offset).ToString(), scroll_layer->CurrentScrollOffset().ToString()); @@ -11240,11 +11092,10 @@ host_impl_->accumulated_root_overscroll().ToString()); EXPECT_TRUE(host_impl_ - ->ScrollUpdate( - UpdateState(gfx::Point(), gfx::Vector2d(0, -2 * offset), - InputHandler::TOUCHSCREEN) - .get(), - InputHandler::TOUCHSCREEN) + ->ScrollUpdate(UpdateState(gfx::Point(), + gfx::Vector2d(0, -2 * offset), + InputHandler::TOUCHSCREEN) + .get()) .did_scroll); EXPECT_EQ(gfx::Vector2dF(0, 0).ToString(), scroll_layer->CurrentScrollOffset().ToString()); @@ -11255,8 +11106,7 @@ host_impl_ ->ScrollUpdate(UpdateState(gfx::Point(), gfx::Vector2d(0, -offset), InputHandler::TOUCHSCREEN) - .get(), - InputHandler::TOUCHSCREEN) + .get()) .did_scroll); EXPECT_EQ(gfx::Vector2dF(0, 0).ToString(), scroll_layer->CurrentScrollOffset().ToString()); @@ -11308,11 +11158,10 @@ InputHandler::TOUCHSCREEN) .get(), InputHandler::TOUCHSCREEN); - host_impl_->ScrollUpdate( - UpdateState(gfx::Point(0, 0), gfx::Vector2dF(100, 100), - InputHandler::TOUCHSCREEN) - .get(), - InputHandler::TOUCHSCREEN); + host_impl_->ScrollUpdate(UpdateState(gfx::Point(0, 0), + gfx::Vector2dF(100, 100), + InputHandler::TOUCHSCREEN) + .get()); host_impl_->ScrollEnd(); EXPECT_VECTOR_EQ(gfx::Vector2dF(), outer_scroll->CurrentScrollOffset()); @@ -11390,8 +11239,7 @@ // Scroll near the edge of the outer viewport. host_impl_->ScrollUpdate( UpdateState(gfx::Point(), scroll_delta, InputHandler::TOUCHSCREEN) - .get(), - InputHandler::TOUCHSCREEN); + .get()); inner_expected += scroll_delta; EXPECT_TRUE(host_impl_->IsCurrentlyScrollingLayerAt(gfx::Point())); @@ -11401,11 +11249,10 @@ // Now diagonal scroll across the outer viewport boundary in a single event. // The entirety of the scroll should be consumed, as bubbling between inner // and outer viewport layers is perfect. - host_impl_->ScrollUpdate( - UpdateState(gfx::Point(), gfx::ScaleVector2d(scroll_delta, 2), - InputHandler::TOUCHSCREEN) - .get(), - InputHandler::TOUCHSCREEN); + host_impl_->ScrollUpdate(UpdateState(gfx::Point(), + gfx::ScaleVector2d(scroll_delta, 2), + InputHandler::TOUCHSCREEN) + .get()); EXPECT_TRUE(host_impl_->IsCurrentlyScrollingLayerAt(gfx::Point())); outer_expected += scroll_delta; inner_expected += scroll_delta; @@ -11483,8 +11330,7 @@ scroll_result = host_impl_->ScrollUpdate(UpdateState(gfx::Point(), gfx::Vector2dF(0, 100), InputHandler::TOUCHSCREEN) - .get(), - InputHandler::TOUCHSCREEN); + .get()); EXPECT_VECTOR_EQ(gfx::Vector2dF(), inner_scroll->CurrentScrollOffset()); // When inner viewport is unscrollable, a fling gives zero overscroll. @@ -11870,8 +11716,7 @@ InputHandler::WHEEL) .thread); host_impl_->ScrollUpdate( - AnimatedUpdateState(gfx::Point(), gfx::Vector2d(0, 50)).get(), - InputHandler::WHEEL); + AnimatedUpdateState(gfx::Point(), gfx::Vector2d(0, 50)).get()); // Ensure the scroll update happens immediately. EXPECT_EQ(scrolling_layer->CurrentScrollOffset().y(), 50); @@ -11909,8 +11754,7 @@ InputHandler::WHEEL) .thread); host_impl_->ScrollUpdate( - AnimatedUpdateState(gfx::Point(), gfx::Vector2d(0, 50)).get(), - InputHandler::WHEEL); + AnimatedUpdateState(gfx::Point(), gfx::Vector2d(0, 50)).get()); EXPECT_EQ(0, set_needs_commit_count); EXPECT_EQ(1, set_needs_redraw_count); @@ -11950,8 +11794,7 @@ &set_needs_redraw_count)); // Update target. host_impl_->ScrollUpdate( - AnimatedUpdateState(gfx::Point(), gfx::Vector2d(0, 50)).get(), - InputHandler::WHEEL); + AnimatedUpdateState(gfx::Point(), gfx::Vector2d(0, 50)).get()); host_impl_->ScrollEnd(); EXPECT_EQ(0, set_needs_commit_count); @@ -12011,7 +11854,7 @@ BeginState(position, gfx::Vector2d(0, 50), InputHandler::WHEEL); host_impl_->ScrollBegin(begin_state.get(), InputHandler::WHEEL); auto update_state = AnimatedUpdateState(position, gfx::Vector2d(0, 50)); - host_impl_->ScrollUpdate(update_state.get(), InputHandler::WHEEL); + host_impl_->ScrollUpdate(update_state.get()); EXPECT_EQ(outer_scroll->scroll_tree_index(), host_impl_->CurrentlyScrollingNode()->id); @@ -12118,11 +11961,9 @@ InputHandler::WHEEL) .thread); host_impl_->ScrollUpdate( - AnimatedUpdateState(gfx::Point(10, 10), gfx::Vector2d(0, 10)).get(), - InputHandler::WHEEL); + AnimatedUpdateState(gfx::Point(10, 10), gfx::Vector2d(0, 10)).get()); host_impl_->ScrollUpdate( - AnimatedUpdateState(gfx::Point(10, 10), gfx::Vector2d(0, 20)).get(), - InputHandler::WHEEL); + AnimatedUpdateState(gfx::Point(10, 10), gfx::Vector2d(0, 20)).get()); // Scrolling the inner viewport happens through the Viewport class which // uses the outer viewport to represent "latched to the viewport". @@ -12302,14 +12143,12 @@ InputHandler::WHEEL) .thread); host_impl_->ScrollUpdate( - AnimatedUpdateState(gfx::Point(), gfx::Vector2d(0, 50)).get(), - InputHandler::WHEEL); + AnimatedUpdateState(gfx::Point(), gfx::Vector2d(0, 50)).get()); // This will call ScrollOffsetAnimationCurve::UpdateTarget while the animation // created above is in state ANIMATION::WAITING_FOR_TARGET_AVAILABILITY and // doesn't have a start time. host_impl_->ScrollUpdate( - AnimatedUpdateState(gfx::Point(), gfx::Vector2d(0, 100)).get(), - InputHandler::WHEEL); + AnimatedUpdateState(gfx::Point(), gfx::Vector2d(0, 100)).get()); begin_frame_args.frame_time = start_time + base::TimeDelta::FromMilliseconds(250); @@ -12358,7 +12197,7 @@ .thread); host_impl_->ScrollUpdate( AnimatedUpdateState(gfx::Point(), gfx::Vector2d(0, 100)).get(), - InputHandler::WHEEL, base::TimeDelta::FromMilliseconds(100)); + base::TimeDelta::FromMilliseconds(100)); LayerImpl* scrolling_layer = OuterViewportScrollLayer(); EXPECT_EQ(scrolling_layer->scroll_tree_index(), @@ -12387,7 +12226,7 @@ // Update target. host_impl_->ScrollUpdate( AnimatedUpdateState(gfx::Point(), gfx::Vector2d(0, 100)).get(), - InputHandler::WHEEL, base::TimeDelta::FromMilliseconds(150)); + base::TimeDelta::FromMilliseconds(150)); // Third tick after 100ms, should be at the target position since update // target was called with a large value of jank. @@ -12423,8 +12262,7 @@ InputHandler::WHEEL) .thread); host_impl_->ScrollUpdate( - AnimatedUpdateState(gfx::Point(), gfx::Vector2d(0, 50)).get(), - InputHandler::WHEEL); + AnimatedUpdateState(gfx::Point(), gfx::Vector2d(0, 50)).get()); LayerImpl* scrolling_layer = OuterViewportScrollLayer(); EXPECT_EQ(scrolling_layer->scroll_tree_index(), @@ -12469,7 +12307,7 @@ // Use "precise pixel" granularity to avoid animating. update_state->data()->delta_granularity = static_cast<double>( ui::input_types::ScrollGranularity::kScrollByPrecisePixel); - host_impl_->ScrollUpdate(update_state.get(), InputHandler::WHEEL); + host_impl_->ScrollUpdate(update_state.get()); EXPECT_TRUE(host_impl_->IsCurrentlyScrollingLayerAt(gfx::Point(0, y + 50))); host_impl_->ScrollEnd(); EXPECT_FALSE(host_impl_->IsCurrentlyScrollingLayerAt(gfx::Point())); @@ -12507,8 +12345,7 @@ InputHandler::WHEEL) .thread); host_impl_->ScrollUpdate( - AnimatedUpdateState(gfx::Point(), gfx::Vector2d(0, 50)).get(), - InputHandler::WHEEL); + AnimatedUpdateState(gfx::Point(), gfx::Vector2d(0, 50)).get()); LayerImpl* scrolling_layer = OuterViewportScrollLayer(); EXPECT_EQ(scrolling_layer->scroll_tree_index(), @@ -12535,8 +12372,7 @@ // Update target. host_impl_->ScrollUpdate( - AnimatedUpdateState(gfx::Point(), gfx::Vector2d(0, 50)).get(), - InputHandler::WHEEL); + AnimatedUpdateState(gfx::Point(), gfx::Vector2d(0, 50)).get()); host_impl_->ScrollEnd(); host_impl_->DidFinishImplFrame(); @@ -12599,8 +12435,7 @@ InputHandler::WHEEL) .thread); host_impl_->ScrollUpdate( - AnimatedUpdateState(gfx::Point(), gfx::Vector2d(10, 20)).get(), - InputHandler::WHEEL); + AnimatedUpdateState(gfx::Point(), gfx::Vector2d(10, 20)).get()); host_impl_->Animate(); host_impl_->UpdateAnimationState(true); EXPECT_EQ(outer_scroll_layer->scroll_tree_index(), @@ -12617,8 +12452,7 @@ // Scroll by the inner viewport's max scroll extent, the remainder // should bubble up to the outer viewport. host_impl_->ScrollUpdate( - AnimatedUpdateState(gfx::Point(), gfx::Vector2d(100, 100)).get(), - InputHandler::WHEEL); + AnimatedUpdateState(gfx::Point(), gfx::Vector2d(100, 100)).get()); host_impl_->Animate(); host_impl_->UpdateAnimationState(true); EXPECT_EQ(outer_scroll_layer->scroll_tree_index(), @@ -12635,8 +12469,7 @@ // Scroll by the outer viewport's max scroll extent, it should all go to the // outer viewport. host_impl_->ScrollUpdate( - AnimatedUpdateState(gfx::Point(), gfx::Vector2d(190, 180)).get(), - InputHandler::WHEEL); + AnimatedUpdateState(gfx::Point(), gfx::Vector2d(190, 180)).get()); host_impl_->Animate(); host_impl_->UpdateAnimationState(true); EXPECT_EQ(outer_scroll_layer->scroll_tree_index(), @@ -12653,8 +12486,7 @@ // Scroll upwards by the max scroll extent. The inner viewport should animate // and the remainder should bubble to the outer viewport. host_impl_->ScrollUpdate( - AnimatedUpdateState(gfx::Point(), gfx::Vector2d(-110, -120)).get(), - InputHandler::WHEEL); + AnimatedUpdateState(gfx::Point(), gfx::Vector2d(-110, -120)).get()); host_impl_->Animate(); host_impl_->UpdateAnimationState(true); EXPECT_EQ(outer_scroll_layer->scroll_tree_index(), @@ -12699,8 +12531,7 @@ InputHandler::WHEEL) .thread); host_impl_->ScrollUpdate( - AnimatedUpdateState(gfx::Point(), gfx::Vector2d(90, 90)).get(), - InputHandler::WHEEL); + AnimatedUpdateState(gfx::Point(), gfx::Vector2d(90, 90)).get()); host_impl_->Animate(); host_impl_->UpdateAnimationState(true); // When either the inner or outer node is being scrolled, the outer node is @@ -12719,8 +12550,7 @@ // Update target. host_impl_->ScrollUpdate( - AnimatedUpdateState(gfx::Point(), gfx::Vector2d(50, 50)).get(), - InputHandler::WHEEL); + AnimatedUpdateState(gfx::Point(), gfx::Vector2d(50, 50)).get()); host_impl_->Animate(); host_impl_->UpdateAnimationState(true); EXPECT_EQ(outer_scroll_layer->scroll_tree_index(), @@ -12765,8 +12595,7 @@ InputHandler::WHEEL) .thread); host_impl_->ScrollUpdate( - AnimatedUpdateState(gfx::Point(), gfx::Vector2d(50, 50)).get(), - InputHandler::WHEEL); + AnimatedUpdateState(gfx::Point(), gfx::Vector2d(50, 50)).get()); EXPECT_EQ(scrolling_layer->scroll_tree_index(), host_impl_->CurrentlyScrollingNode()->id); @@ -12794,8 +12623,7 @@ // Update target. host_impl_->ScrollUpdate( - AnimatedUpdateState(gfx::Point(), gfx::Vector2d(50, 50)).get(), - InputHandler::WHEEL); + AnimatedUpdateState(gfx::Point(), gfx::Vector2d(50, 50)).get()); host_impl_->DidFinishImplFrame(); begin_frame_args.frame_time = @@ -12851,8 +12679,7 @@ .get(), InputHandler::WHEEL); host_impl_->ScrollUpdate( - AnimatedUpdateState(gfx::Point(), gfx::Vector2d(500, 500)).get(), - InputHandler::WHEEL); + AnimatedUpdateState(gfx::Point(), gfx::Vector2d(500, 500)).get()); EXPECT_EQ(scrolling_layer->scroll_tree_index(), host_impl_->CurrentlyScrollingNode()->id); @@ -12986,8 +12813,7 @@ EXPECT_VECTOR_EQ(gfx::Vector2dF(), scroll_layer->CurrentScrollOffset()); host_impl_->ScrollUpdate( - UpdateState(gfx::Point(), scroll_delta, InputHandler::WHEEL).get(), - InputHandler::WHEEL); + UpdateState(gfx::Point(), scroll_delta, InputHandler::WHEEL).get()); host_impl_->ScrollEnd(); EXPECT_VECTOR_EQ(gfx::Vector2dF(0, 2.5), scroll_layer->CurrentScrollOffset()); @@ -13660,9 +13486,7 @@ EXPECT_FALSE( scrollbar_2_animation_controller->MouseIsOverScrollbarThumb(VERTICAL)); - // Capture scrollbar_1, then move mouse to scrollbar_2's layer, should post an - // event to fade out scrollbar_1. - scrollbar_1_animation_controller->DidScrollUpdate(); + // Capture scrollbar_1, then move mouse to scrollbar_2's layer); animation_task_.Reset(); // Only the MouseMove's location will affect the overlay scrollbar. @@ -14033,8 +13857,7 @@ .thread); host_impl_->ScrollUpdate( UpdateState(gfx::Point(), gfx::Vector2d(0, 10), InputHandler::WHEEL) - .get(), - InputHandler::WHEEL); + .get()); { RenderFrameMetadata metadata = StartDrawAndProduceRenderFrameMetadata(); EXPECT_EQ(gfx::Vector2dF(0, 10), metadata.root_scroll_offset); @@ -14257,8 +14080,7 @@ InputHandler::WHEEL); host_impl_->ScrollUpdate( UpdateState(gfx::Point(), test_leg.scroll_delta, InputHandler::WHEEL) - .get(), - InputHandler::WHEEL); + .get()); } // Trigger draw. @@ -14298,7 +14120,7 @@ ScrollNode* scroll_node = scroll_tree.CurrentlyScrollingNode(); EXPECT_TRUE(scroll_node); - host_impl_->ScrollUpdate(scroll_state.get(), InputHandler::TOUCHSCREEN); + host_impl_->ScrollUpdate(scroll_state.get()); // Check to see the scroll tree's currently scrolling node is // still the same. @@ -14308,7 +14130,7 @@ host_impl_->active_tree()->SetCurrentlyScrollingNode(nullptr); EXPECT_FALSE(scroll_tree.CurrentlyScrollingNode()); - host_impl_->ScrollUpdate(scroll_state.get(), InputHandler::TOUCHSCREEN); + host_impl_->ScrollUpdate(scroll_state.get()); EXPECT_EQ(nullptr, scroll_tree.CurrentlyScrollingNode()); }
diff --git a/cc/trees/layer_tree_host_unittest_scroll.cc b/cc/trees/layer_tree_host_unittest_scroll.cc index 39cfa35..612d7df9 100644 --- a/cc/trees/layer_tree_host_unittest_scroll.cc +++ b/cc/trees/layer_tree_host_unittest_scroll.cc
@@ -716,8 +716,7 @@ InputHandler::ScrollStatus status = impl->ScrollBegin( BeginState(scroll_point).get(), InputHandler::TOUCHSCREEN); EXPECT_EQ(InputHandler::SCROLL_ON_IMPL_THREAD, status.thread); - impl->ScrollUpdate(UpdateState(gfx::Point(), scroll_amount_).get(), - InputHandler::TOUCHSCREEN); + impl->ScrollUpdate(UpdateState(gfx::Point(), scroll_amount_).get()); auto* scrolling_node = impl->CurrentlyScrollingNode(); CHECK(scrolling_node); impl->ScrollEnd(); @@ -742,8 +741,7 @@ InputHandler::ScrollStatus status = impl->ScrollBegin( BeginState(scroll_point).get(), InputHandler::WHEEL); EXPECT_EQ(InputHandler::SCROLL_ON_IMPL_THREAD, status.thread); - impl->ScrollUpdate(UpdateState(gfx::Point(), scroll_amount_).get(), - InputHandler::WHEEL); + impl->ScrollUpdate(UpdateState(gfx::Point(), scroll_amount_).get()); impl->ScrollEnd(); // Check the scroll is applied as a delta. @@ -1137,7 +1135,7 @@ update_scroll_state_data.delta_y = offset.y(); std::unique_ptr<ScrollState> update_scroll_state( new ScrollState(update_scroll_state_data)); - host_impl->ScrollUpdate(update_scroll_state.get(), InputHandler::TOUCHSCREEN); + host_impl->ScrollUpdate(update_scroll_state.get()); host_impl->ScrollEnd(true /* should_snap */); }
diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn index 11105d8a..a6d5a70 100644 --- a/chrome/android/BUILD.gn +++ b/chrome/android/BUILD.gn
@@ -464,15 +464,6 @@ if (enable_vr) { deps += [ ":chrome_vr_java_resources" ] } - - if (enable_arcore) { - # AR DFM is disabled, so include the ARCore dependencies here as well. - # They are needed for "java/src/org/chromium/chrome/browser/vr/ArCoreShimImpl.java" - # to compile. - deps += - [ "//third_party/arcore-android-sdk-client:com_google_ar_core_java" ] - } - srcjar_deps += [ ":chrome_vr_android_java_enums_srcjar" ] if (enable_feed_in_chrome) { deps += [ ":chrome_feed_java_resources" ] @@ -2166,8 +2157,10 @@ ] # Include ArCore files directly instead of using bundles. - deps += - [ "//third_party/arcore-android-sdk-client:com_google_ar_core_java" ] + deps += [ + "//chrome/browser/android/vr:ar_java", + "//third_party/arcore-android-sdk-client:com_google_ar_core_java", + ] _libarcore_dir = get_label_info( "//third_party/arcore-android-sdk-client:com_google_ar_core_java($default_toolchain)", @@ -2952,6 +2945,8 @@ "//base/test:test_support_java", "//chrome/android:chrome_java", "//chrome/test/android:chrome_java_test_support", + "//components/payments/content/android:java", + "//content/public/android:content_java", "//content/public/test/android:android_test_message_pump_support_java", "//content/public/test/android:content_java_test_support", "//third_party/blink/public:blink_headers_java", @@ -2966,6 +2961,8 @@ "native_java_unittests/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuPopulatorTest.java", "native_java_unittests/src/org/chromium/chrome/browser/installedapp/InstalledAppProviderTest.java", "native_java_unittests/src/org/chromium/chrome/browser/notifications/NotificationPlatformBridgeUnitTest.java", + "native_java_unittests/src/org/chromium/chrome/browser/partnercustomizations/PartnerBrowserCustomizationsUnitTest.java", + "native_java_unittests/src/org/chromium/chrome/browser/payments/AndroidPaymentAppFinderUnitTest.java", ] annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ] @@ -2979,5 +2976,7 @@ "native_java_unittests/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuPopulatorTest.java", "native_java_unittests/src/org/chromium/chrome/browser/installedapp/InstalledAppProviderTest.java", "native_java_unittests/src/org/chromium/chrome/browser/notifications/NotificationPlatformBridgeUnitTest.java", + "native_java_unittests/src/org/chromium/chrome/browser/partnercustomizations/PartnerBrowserCustomizationsUnitTest.java", + "native_java_unittests/src/org/chromium/chrome/browser/payments/AndroidPaymentAppFinderUnitTest.java", ] }
diff --git a/chrome/android/chrome_junit_test_java_sources.gni b/chrome/android/chrome_junit_test_java_sources.gni index 37061f40..0e1736b 100644 --- a/chrome/android/chrome_junit_test_java_sources.gni +++ b/chrome/android/chrome_junit_test_java_sources.gni
@@ -165,8 +165,6 @@ "junit/src/org/chromium/chrome/browser/omnibox/suggestions/entity/EntitySuggestionProcessorUnitTest.java", "junit/src/org/chromium/chrome/browser/page_info/PermissionParamsListBuilderUnitTest.java", "junit/src/org/chromium/chrome/browser/partnerbookmarks/PartnerBookmarksFaviconThrottleTest.java", - "junit/src/org/chromium/chrome/browser/partnercustomizations/PartnerBrowserCustomizationsUnitTest.java", - "junit/src/org/chromium/chrome/browser/payments/AndroidPaymentAppFinderUnitTest.java", "junit/src/org/chromium/chrome/browser/payments/AutofillContactTest.java", "junit/src/org/chromium/chrome/browser/payments/AutofillContactUnitTest.java", "junit/src/org/chromium/chrome/browser/payments/PaymentManifestVerifierTest.java",
diff --git a/chrome/android/chrome_public_apk_tmpl.gni b/chrome/android/chrome_public_apk_tmpl.gni index 1c2a03a8..12c17b0 100644 --- a/chrome/android/chrome_public_apk_tmpl.gni +++ b/chrome/android/chrome_public_apk_tmpl.gni
@@ -318,12 +318,6 @@ template("monochrome_public_common_apk_or_module_tmpl") { _is_bundle_module = defined(invoker.target_type) && invoker.target_type == "android_app_bundle_module" - if (_is_bundle_module) { - assert( - defined(invoker.is_base_module), - "_is_bundle_module is true but the invoker does not define is_base_module!") - } - if (defined(invoker.enable_multidex)) { _enable_multidex = invoker.enable_multidex } else { @@ -350,30 +344,6 @@ "//components/crash/android:handler_java", ] - if (_is_bundle_module && invoker.is_base_module && enable_arcore) { - # AR DFM is disabled - set the loadable_modules / secondary_abi_loadable_modules - # to what would be brought in by the module. - # This needs to happen for monochrome & trichrome builds of base module if ARCore is enabled. - - _deps += - [ "//third_party/arcore-android-sdk-client:com_google_ar_core_java" ] - - _libarcore_dir = get_label_info( - "//third_party/arcore-android-sdk-client:com_google_ar_core_java($default_toolchain)", - "target_out_dir") + "/com_google_ar_core_java/jni" - - if (android_64bit_target_cpu) { - if (invoker.is_64_bit_browser) { - loadable_modules = [ "$_libarcore_dir/arm64-v8a/libarcore_sdk_c.so" ] - } else { - secondary_abi_loadable_modules = - [ "$_libarcore_dir/armeabi-v7a/libarcore_sdk_c.so" ] - } - } else { - loadable_modules = [ "$_libarcore_dir/armeabi-v7a/libarcore_sdk_c.so" ] - } - } - if (is_monochrome) { product_config_java_packages = [ "org.chromium.chrome.browser",
diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/AndroidManifest.xml index cf90b68..bb3cf14 100644 --- a/chrome/android/java/AndroidManifest.xml +++ b/chrome/android/java/AndroidManifest.xml
@@ -175,6 +175,21 @@ <!-- ARCore APK integration --> <!-- This tag indicates that this application optionally uses ARCore. --> <meta-data android:name="com.google.ar.core" android:value="optional" /> + <!-- This value must match value present in ARCore SDK's .aar --> + <!-- TODO(https://crbug.com/917406): modify build scripts to + automatically pull this value in - the problem exists because in + bundle mode, the ARCore SDK is packaged into AR module and + the module installation will not automatically bring in DFM's + manifest entries. --> + <meta-data android:name="com.google.ar.core.min_apk_version" + android:value="190531000"/> + <activity + android:name="com.google.ar.core.InstallActivity" + android:configChanges="keyboardHidden|orientation|screenSize" + android:excludeFromRecents="true" + android:exported="false" + android:launchMode="singleTop" + android:theme="@android:style/Theme.Material.Light.Dialog.Alert" /> {% endif %} <!-- Cast support -->
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/CompositorSurfaceManagerImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/CompositorSurfaceManagerImpl.java index 0030509..880329e 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/CompositorSurfaceManagerImpl.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/CompositorSurfaceManagerImpl.java
@@ -55,7 +55,7 @@ // Parent ViewGroup, or null. private ViewGroup mParent; - public SurfaceState(Context context, int format, boolean useSurfaceControl, + public SurfaceState(Context context, int format, boolean supportMediaOverlay, SurfaceHolder.Callback2 callback) { surfaceView = new SurfaceView(context); @@ -66,7 +66,7 @@ // stacked on top of the translucent one, the framework doesn't draw any content // underneath it and shows its background instead when it has no content during the // transition. - if (format == PixelFormat.TRANSLUCENT && !useSurfaceControl) { + if (format == PixelFormat.TRANSLUCENT && supportMediaOverlay) { surfaceView.setZOrderMediaOverlay(true); } surfaceView.setVisibility(View.INVISIBLE); @@ -130,15 +130,15 @@ // View to which we'll attach the SurfaceView. private final ViewGroup mParentView; - public CompositorSurfaceManagerImpl( - ViewGroup parentView, SurfaceManagerCallbackTarget client, boolean useSurfaceControl) { + public CompositorSurfaceManagerImpl(ViewGroup parentView, SurfaceManagerCallbackTarget client, + boolean supportMediaOverlay) { mParentView = parentView; mClient = client; mTranslucent = new SurfaceState( - parentView.getContext(), PixelFormat.TRANSLUCENT, useSurfaceControl, this); + parentView.getContext(), PixelFormat.TRANSLUCENT, supportMediaOverlay, this); mOpaque = new SurfaceState( - mParentView.getContext(), PixelFormat.OPAQUE, useSurfaceControl, this); + mParentView.getContext(), PixelFormat.OPAQUE, supportMediaOverlay, this); } /** @@ -254,7 +254,7 @@ mTranslucent.surfaceHolder().removeCallback(this); mTranslucent = - new SurfaceState(mParentView.getContext(), PixelFormat.TRANSLUCENT, true, this); + new SurfaceState(mParentView.getContext(), PixelFormat.TRANSLUCENT, false, this); } @Override
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/CompositorView.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/CompositorView.java index ef28798..cd598a5 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/CompositorView.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/CompositorView.java
@@ -343,6 +343,19 @@ * @param enabled Whether to enter or leave overlay immersive ar mode. */ public void setOverlayImmersiveArMode(boolean enabled) { + if (mIsSurfaceControlEnabled) { + // SurfaceControl doesn't mark the translucent SurfaceView as a media overlay by + // default, but we need that to allow the DOM content drawn by the compositor to show + // above the WebXR content. Replace the surface manager with a customized one + // for the duration of the immersive-ar session. + if (enabled) { + mCompositorSurfaceManager.shutDown(); + createCompositorSurfaceManager(true); + } else { + mCompositorSurfaceManager.shutDown(); + createCompositorSurfaceManager(); + } + } setOverlayVideoMode(enabled); CompositorViewJni.get().setOverlayImmersiveArMode( mNativeCompositorView, CompositorView.this, enabled); @@ -602,14 +615,21 @@ createCompositorSurfaceManager(); } - private void createCompositorSurfaceManager() { + private void createCompositorSurfaceManager(boolean supportMediaOverlay) { mCompositorSurfaceManager = - new CompositorSurfaceManagerImpl(this, this, mIsSurfaceControlEnabled); + new CompositorSurfaceManagerImpl(this, this, supportMediaOverlay); mCompositorSurfaceManager.requestSurface(getSurfacePixelFormat()); CompositorViewJni.get().setNeedsComposite(mNativeCompositorView, CompositorView.this); mCompositorSurfaceManager.setVisibility(getVisibility()); } + private void createCompositorSurfaceManager() { + // If surface control is available, video overlays don't need a translucent media + // overlay view, so disable support for that. This lets other components such + // as ThinWebView use ZOrderMediaOverlay. + createCompositorSurfaceManager(!mIsSurfaceControlEnabled); + } + @NativeMethods interface Natives { long init(CompositorView caller, boolean lowMemDevice, WindowAndroid windowAndroid,
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/status/StatusMediator.java b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/status/StatusMediator.java index 633e2af..20ad351 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/status/StatusMediator.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/status/StatusMediator.java
@@ -110,8 +110,6 @@ // The denominator for the above formula, which will adjust the scale for the alpha. private final float mTextOffsetAdjustedScale; - private Bitmap mCachedSearchEngineLogoBitmap; - StatusMediator(PropertyModel model, Resources resources, Context context, UrlBarEditingTextStateProvider urlBarEditingTextStateProvider) { mModel = model; @@ -427,9 +425,6 @@ */ public void updateSearchEngineStatusIcon(boolean shouldShowSearchEngineLogo, boolean isSearchEngineGoogle, String searchEngineUrl) { - if (!TextUtils.equals(searchEngineUrl, mSearchEngineLogoUrl)) { - mCachedSearchEngineLogoBitmap = null; - } mIsSearchEngineStateSetup = true; mIsSearchEngineGoogle = isSearchEngineGoogle; mSearchEngineLogoUrl = searchEngineUrl; @@ -551,20 +546,13 @@ /** @return The non-Google search engine icon {@link Bitmap}. */ private void getNonGoogleSearchEngineIconBitmap(final Callback<StatusIconResource> callback) { - if (mCachedSearchEngineLogoBitmap != null) { - callback.onResult( - new StatusIconResource(mSearchEngineLogoUrl, mCachedSearchEngineLogoBitmap, 0)); - } - mDelegate.getSearchEngineLogoFavicon(mResources, (favicon) -> { if (favicon == null || mShouldCancelCustomFavicon) { callback.onResult(new StatusIconResource(R.drawable.ic_search, 0)); return; } - mCachedSearchEngineLogoBitmap = favicon; - callback.onResult( - new StatusIconResource(mSearchEngineLogoUrl, mCachedSearchEngineLogoBitmap, 0)); + callback.onResult(new StatusIconResource(mSearchEngineLogoUrl, favicon, 0)); }); }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/DEPS b/chrome/android/java/src/org/chromium/chrome/browser/tab/DEPS index 3a67b20a..ba53974 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/tab/DEPS +++ b/chrome/android/java/src/org/chromium/chrome/browser/tab/DEPS
@@ -6,6 +6,7 @@ "+chrome/android/java/src/org/chromium/chrome/browser/incognito/IncognitoUtils.java", "+chrome/android/java/src/org/chromium/chrome/browser/tab", "+chrome/android/java/src/org/chromium/chrome/browser/webapps/WebDisplayMode.java", + "+chrome/browser/preferences", "+chrome/browser/ui/android/widget", "+components/browser_ui/styles/android", "+content/public/android/java/src/org/chromium/content_public",
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabIdManager.java b/chrome/android/java/src/org/chromium/chrome/browser/tab/TabIdManager.java index 395bdcc1..272f200 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabIdManager.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tab/TabIdManager.java
@@ -6,11 +6,12 @@ import android.annotation.SuppressLint; import android.content.Context; -import android.content.SharedPreferences; import androidx.annotation.VisibleForTesting; import org.chromium.base.ContextUtils; +import org.chromium.chrome.browser.preferences.ChromePreferenceKeys; +import org.chromium.chrome.browser.preferences.SharedPreferencesManager; import org.chromium.chrome.browser.tabmodel.TabModel; import java.util.concurrent.atomic.AtomicInteger; @@ -30,9 +31,6 @@ * started first. Unify the ways the maximum Tab ID is set (crbug.com/502384). */ public class TabIdManager { - @VisibleForTesting - public static final String PREF_NEXT_ID = - "org.chromium.chrome.browser.tab.TabIdManager.NEXT_ID"; private static final Object INSTANCE_LOCK = new Object(); @SuppressLint("StaticFieldLeak") @@ -41,7 +39,7 @@ private final Context mContext; private final AtomicInteger mIdCounter = new AtomicInteger(); - private SharedPreferences mPreferences; + private SharedPreferencesManager mPreferences; /** Returns the Singleton instance of the TabIdManager. */ public static TabIdManager getInstance() { @@ -60,8 +58,8 @@ /** * Validates {@code id} and increments the internal counter to make sure future ids don't * collide. - * @param id The current id. May be {@link #INVALID_TAB_ID}. - * @return A new id if {@code id} was {@link #INVALID_TAB_ID}, or {@code id}. + * @param id The current id. May be {@link Tab#INVALID_TAB_ID}. + * @return A new id if {@code id} was {@link Tab#INVALID_TAB_ID}, or {@code id}. */ public final int generateValidId(int id) { if (id == Tab.INVALID_TAB_ID) id = mIdCounter.getAndIncrement(); @@ -85,7 +83,7 @@ // It's possible idCounter has been incremented between the get and the add but that's OK -- // in the worst case mIdCounter will just be overly incremented. mIdCounter.addAndGet(diff); - mPreferences.edit().putInt(PREF_NEXT_ID, mIdCounter.get()).apply(); + mPreferences.writeInt(ChromePreferenceKeys.TAB_ID_MANAGER_NEXT_ID, mIdCounter.get()); } private TabIdManager(Context context) { @@ -94,7 +92,7 @@ // Read the shared preference. This has to be done on the critical path to ensure that the // myriad Activities that serve as entries into Chrome are all synchronized on the correct // maximum Tab ID. - mPreferences = ContextUtils.getAppSharedPreferences(); - mIdCounter.set(mPreferences.getInt(PREF_NEXT_ID, 0)); + mPreferences = SharedPreferencesManager.getInstance(); + mIdCounter.set(mPreferences.readInt(ChromePreferenceKeys.TAB_ID_MANAGER_NEXT_ID)); } } \ No newline at end of file
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/vr/ArCoreInstallUtils.java b/chrome/android/java/src/org/chromium/chrome/browser/vr/ArCoreInstallUtils.java index a08ab3c3..4548a393 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/vr/ArCoreInstallUtils.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/vr/ArCoreInstallUtils.java
@@ -6,6 +6,7 @@ import android.app.Activity; +import org.chromium.base.BundleUtils; import org.chromium.base.ContextUtils; import org.chromium.base.Log; import org.chromium.base.annotations.CalledByNative; @@ -81,8 +82,7 @@ @CalledByNative private boolean canRequestInstallArModule() { // We can only try to install the AR module if we are in a bundle mode. - // Currently, AR DFM is disabled so we should never have to install it. - return false; + return BundleUtils.isBundle(); } @CalledByNative
diff --git a/chrome/android/java_sources.gni b/chrome/android/java_sources.gni index d8d5e824..04e674ef 100644 --- a/chrome/android/java_sources.gni +++ b/chrome/android/java_sources.gni
@@ -47,9 +47,4 @@ "java/src/org/chromium/chrome/browser/vr/ArDelegateImpl.java", "java/src/org/chromium/chrome/browser/vr/ArImmersiveOverlay.java", ] - - # AR DFM is disabled - include the ArCoreShimImpl.java as well. - # This is not rolled into the above to facilitate re-enabling AR DFM if need arises. - chrome_java_sources += - [ "java/src/org/chromium/chrome/browser/vr/ArCoreShimImpl.java" ] }
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/customtabs/DetachedResourceRequestTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/customtabs/DetachedResourceRequestTest.java index 4e50dd26..9b82f76b 100644 --- a/chrome/android/javatests/src/org/chromium/chrome/browser/customtabs/DetachedResourceRequestTest.java +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/customtabs/DetachedResourceRequestTest.java
@@ -567,10 +567,10 @@ Tab tab = mCustomTabActivityTestRule.getActivity().getActivityTab(); - // TODO(carlosil): For now, we check the presence of an interstitial through the title - // since isShowingInterstitialPage does not work with committed interstitials. Once we - // fully migrate to committed interstitials, this should be changed to a more robust - // check. + // TODO(crbug.com/1039443): For now, we check the presence of an interstitial through + // the title since isShowingInterstitialPage does not work with committed interstitials. + // Once we fully migrate to committed interstitials, this should be changed to a more + // robust check. CriteriaHelper.pollUiThread( () -> tab.getWebContents().getTitle().equals("Security error")); @@ -609,8 +609,11 @@ Tab tab = mCustomTabActivityTestRule.getActivity().getActivityTab(); WebContents webContents = tab.getWebContents(); - // Need to poll as the subresource request is async. - CriteriaHelper.pollUiThread(() -> webContents.isShowingInterstitialPage()); + // TODO(crbug.com/1039443): For now, we check the presence of an interstitial through + // the title since isShowingInterstitialPage does not work with committed interstitials. + // Once we fully migrate to committed interstitials, this should be changed to a more + // robust check. + CriteriaHelper.pollUiThread(() -> webContents.getTitle().equals("Security error")); } finally { MockSafeBrowsingApiHandler.clearMockResponses(); }
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/tab/TabIdManagerTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/tab/TabIdManagerTest.java index 76b08fa..a8c6a6e 100644 --- a/chrome/android/javatests/src/org/chromium/chrome/browser/tab/TabIdManagerTest.java +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/tab/TabIdManagerTest.java
@@ -5,7 +5,6 @@ package org.chromium.chrome.browser.tab; import android.content.Context; -import android.content.SharedPreferences; import android.support.test.InstrumentationRegistry; import android.support.test.annotation.UiThreadTest; import android.support.test.filters.SmallTest; @@ -17,8 +16,9 @@ import org.junit.Test; import org.junit.runner.RunWith; -import org.chromium.base.ContextUtils; import org.chromium.base.test.util.AdvancedMockContext; +import org.chromium.chrome.browser.preferences.ChromePreferenceKeys; +import org.chromium.chrome.browser.preferences.SharedPreferencesManager; import org.chromium.chrome.test.ChromeJUnit4ClassRunner; /** Tests for the TabIdManager. */ @@ -39,17 +39,15 @@ @UiThreadTest @SmallTest public void testBasic() { - SharedPreferences prefs = ContextUtils.getAppSharedPreferences(); - SharedPreferences.Editor editor = prefs.edit(); - editor.putInt(TabIdManager.PREF_NEXT_ID, 11684); - editor.apply(); + SharedPreferencesManager prefs = SharedPreferencesManager.getInstance(); + prefs.writeInt(ChromePreferenceKeys.TAB_ID_MANAGER_NEXT_ID, 11684); TabIdManager manager = TabIdManager.getInstance(mContext); Assert.assertEquals( "Wrong Tab ID was generated", 11684, manager.generateValidId(Tab.INVALID_TAB_ID)); - Assert.assertEquals( - "Wrong next Tab ID", 11685, prefs.getInt(TabIdManager.PREF_NEXT_ID, -1)); + Assert.assertEquals("Wrong next Tab ID", 11685, + prefs.readInt(ChromePreferenceKeys.TAB_ID_MANAGER_NEXT_ID, -1)); } /** Tests that the max ID is updated properly. */ @@ -57,24 +55,22 @@ @UiThreadTest @SmallTest public void testIncrementIdCounterTo() { - SharedPreferences prefs = ContextUtils.getAppSharedPreferences(); - SharedPreferences.Editor editor = prefs.edit(); - editor.putInt(TabIdManager.PREF_NEXT_ID, 11684); - editor.apply(); + SharedPreferencesManager prefs = SharedPreferencesManager.getInstance(); + prefs.writeInt(ChromePreferenceKeys.TAB_ID_MANAGER_NEXT_ID, 11684); TabIdManager manager = TabIdManager.getInstance(mContext); Assert.assertEquals( "Wrong Tab ID was generated", 11684, manager.generateValidId(Tab.INVALID_TAB_ID)); - Assert.assertEquals( - "Wrong next Tab ID", 11685, prefs.getInt(TabIdManager.PREF_NEXT_ID, -1)); + Assert.assertEquals("Wrong next Tab ID", 11685, + prefs.readInt(ChromePreferenceKeys.TAB_ID_MANAGER_NEXT_ID, -1)); manager.incrementIdCounterTo(100); - Assert.assertEquals( - "Didn't stay the same", 11685, prefs.getInt(TabIdManager.PREF_NEXT_ID, -1)); + Assert.assertEquals("Didn't stay the same", 11685, + prefs.readInt(ChromePreferenceKeys.TAB_ID_MANAGER_NEXT_ID, -1)); manager.incrementIdCounterTo(1000000); - Assert.assertEquals( - "Didn't increase", 1000000, prefs.getInt(TabIdManager.PREF_NEXT_ID, -1)); + Assert.assertEquals("Didn't increase", 1000000, + prefs.readInt(ChromePreferenceKeys.TAB_ID_MANAGER_NEXT_ID, -1)); } }
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/webapps/WebappModeTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/webapps/WebappModeTest.java index 1be2a042b..e71c7af 100644 --- a/chrome/android/javatests/src/org/chromium/chrome/browser/webapps/WebappModeTest.java +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/webapps/WebappModeTest.java
@@ -7,7 +7,6 @@ import android.app.Activity; import android.content.Context; import android.content.Intent; -import android.content.SharedPreferences; import android.support.test.InstrumentationRegistry; import android.support.test.filters.MediumTest; import android.view.View; @@ -19,7 +18,6 @@ import org.junit.runner.RunWith; import org.chromium.base.ApplicationStatus; -import org.chromium.base.ContextUtils; import org.chromium.base.test.util.CommandLineFlags; import org.chromium.base.test.util.DisabledTest; import org.chromium.base.test.util.Feature; @@ -31,7 +29,8 @@ import org.chromium.chrome.browser.DeferredStartupHandler; import org.chromium.chrome.browser.ShortcutHelper; import org.chromium.chrome.browser.document.ChromeIntentUtil; -import org.chromium.chrome.browser.tab.TabIdManager; +import org.chromium.chrome.browser.preferences.ChromePreferenceKeys; +import org.chromium.chrome.browser.preferences.SharedPreferencesManager; import org.chromium.chrome.test.ChromeJUnit4ClassRunner; import org.chromium.chrome.test.MultiActivityTestRule; import org.chromium.chrome.test.util.ApplicationTestUtils; @@ -173,10 +172,8 @@ @MediumTest @Feature({"Webapps"}) public void testWebappTabIdsProperlyAssigned() { - SharedPreferences prefs = ContextUtils.getAppSharedPreferences(); - SharedPreferences.Editor editor = prefs.edit(); - editor.putInt(TabIdManager.PREF_NEXT_ID, 11684); - editor.apply(); + SharedPreferencesManager.getInstance().writeInt( + ChromePreferenceKeys.TAB_ID_MANAGER_NEXT_ID, 11684); final WebappActivity webappActivity = startWebappActivity(WEBAPP_1_ID, WEBAPP_1_URL, WEBAPP_1_TITLE, WEBAPP_ICON);
diff --git a/chrome/android/modules/chrome_bundle_tmpl.gni b/chrome/android/modules/chrome_bundle_tmpl.gni index 3429eb66..0a83053 100644 --- a/chrome/android/modules/chrome_bundle_tmpl.gni +++ b/chrome/android/modules/chrome_bundle_tmpl.gni
@@ -76,7 +76,6 @@ "proguard_android_sdk_dep", "proguard_jar_path", "sign_bundle", - "static_library_proguard_disabled", "static_library_provider", "static_library_synchronized_proguard", "verify_proguard_flags",
diff --git a/chrome/android/modules/chrome_feature_modules.gni b/chrome/android/modules/chrome_feature_modules.gni index 016da28e..8b8202a 100644 --- a/chrome/android/modules/chrome_feature_modules.gni +++ b/chrome/android/modules/chrome_feature_modules.gni
@@ -60,7 +60,7 @@ # Modules shipped in Monochrome (Android N+). monochrome_module_descs = chrome_modern_module_descs -if (false) { # AR DFM is currently disabled +if (enable_arcore) { monochrome_module_descs += [ ar_module_desc ] } if (!disable_autofill_assistant_dfm) {
diff --git a/chrome/android/native_java_unittests/DEPS b/chrome/android/native_java_unittests/DEPS index 75b613e..43a6b0eb 100644 --- a/chrome/android/native_java_unittests/DEPS +++ b/chrome/android/native_java_unittests/DEPS
@@ -1,3 +1,7 @@ include_rules = [ + "+components/payments/content/android/java/src/org/chromium/components/payments", "+components/search_engines/android/java/src/org/chromium/components/search_engines", + + "-content/public/android/java", + "+content/public/android/java/src/org/chromium/content_public", ]
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/partnercustomizations/OWNERS b/chrome/android/native_java_unittests/src/org/chromium/chrome/browser/partnercustomizations/OWNERS similarity index 100% rename from chrome/android/junit/src/org/chromium/chrome/browser/partnercustomizations/OWNERS rename to chrome/android/native_java_unittests/src/org/chromium/chrome/browser/partnercustomizations/OWNERS
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/partnercustomizations/PartnerBrowserCustomizationsUnitTest.java b/chrome/android/native_java_unittests/src/org/chromium/chrome/browser/partnercustomizations/PartnerBrowserCustomizationsUnitTest.java similarity index 91% rename from chrome/android/junit/src/org/chromium/chrome/browser/partnercustomizations/PartnerBrowserCustomizationsUnitTest.java rename to chrome/android/native_java_unittests/src/org/chromium/chrome/browser/partnercustomizations/PartnerBrowserCustomizationsUnitTest.java index 1c3bf017..da39669 100644 --- a/chrome/android/junit/src/org/chromium/chrome/browser/partnercustomizations/PartnerBrowserCustomizationsUnitTest.java +++ b/chrome/android/native_java_unittests/src/org/chromium/chrome/browser/partnercustomizations/PartnerBrowserCustomizationsUnitTest.java
@@ -5,21 +5,20 @@ package org.chromium.chrome.browser.partnercustomizations; import org.junit.Assert; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.robolectric.annotation.Config; -import org.chromium.base.test.BaseRobolectricTestRunner; +import org.chromium.base.annotations.CalledByNative; +import org.chromium.base.annotations.CalledByNativeJavaTest; import org.chromium.base.test.util.Feature; /** * Unit tests for {@link PartnerBrowserCustomizations}. */ -@RunWith(BaseRobolectricTestRunner.class) -@Config(manifest = Config.NONE) public class PartnerBrowserCustomizationsUnitTest { - @Test + @CalledByNative + private PartnerBrowserCustomizationsUnitTest() {} + @Feature({"Homepage"}) + @CalledByNativeJavaTest public void testIsValidHomepage() { Assert.assertTrue(PartnerBrowserCustomizations.isValidHomepage( "chrome-native://newtab/path#fragment"));
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/payments/AndroidPaymentAppFinderUnitTest.java b/chrome/android/native_java_unittests/src/org/chromium/chrome/browser/payments/AndroidPaymentAppFinderUnitTest.java similarity index 92% rename from chrome/android/junit/src/org/chromium/chrome/browser/payments/AndroidPaymentAppFinderUnitTest.java rename to chrome/android/native_java_unittests/src/org/chromium/chrome/browser/payments/AndroidPaymentAppFinderUnitTest.java index 638901c4..e0fdac3 100644 --- a/chrome/android/junit/src/org/chromium/chrome/browser/payments/AndroidPaymentAppFinderUnitTest.java +++ b/chrome/android/native_java_unittests/src/org/chromium/chrome/browser/payments/AndroidPaymentAppFinderUnitTest.java
@@ -14,14 +14,12 @@ import android.os.Bundle; import org.junit.Assert; -import org.junit.Test; -import org.junit.runner.RunWith; import org.mockito.ArgumentMatcher; import org.mockito.ArgumentMatchers; import org.mockito.Mockito; -import org.robolectric.RobolectricTestRunner; -import org.robolectric.annotation.Config; +import org.chromium.base.annotations.CalledByNative; +import org.chromium.base.annotations.CalledByNativeJavaTest; import org.chromium.chrome.browser.payments.PaymentAppFactory.PaymentAppCreatedCallback; import org.chromium.components.payments.PaymentManifestDownloader; import org.chromium.components.payments.PaymentManifestParser; @@ -36,13 +34,21 @@ import java.util.Set; /** Tests for the native Android payment app finder. */ -@RunWith(RobolectricTestRunner.class) -@Config(sdk = 21, manifest = Config.NONE) public class AndroidPaymentAppFinderUnitTest { private static final IntentArgumentMatcher sPayIntentArgumentMatcher = new IntentArgumentMatcher(new Intent("org.chromium.intent.action.PAY")); - public AndroidPaymentAppFinderUnitTest() {} + // SHA256("01020304050607080900"): + public static final byte[][] BOB_PAY_SIGNATURE_FINGERPRINTS = {{(byte) 0x9A, (byte) 0x89, + (byte) 0xC6, (byte) 0x8C, (byte) 0x4C, (byte) 0x5E, (byte) 0x28, (byte) 0xB8, + (byte) 0xC4, (byte) 0xA5, (byte) 0x56, (byte) 0x76, (byte) 0x73, (byte) 0xD4, + (byte) 0x62, (byte) 0xFF, (byte) 0xF5, (byte) 0x15, (byte) 0xDB, (byte) 0x46, + (byte) 0x11, (byte) 0x6F, (byte) 0x99, (byte) 0x00, (byte) 0x62, (byte) 0x4D, + (byte) 0x09, (byte) 0xC4, (byte) 0x74, (byte) 0xF5, (byte) 0x93, (byte) 0xFB}}; + public static final Signature BOB_PAY_SIGNATURE = new Signature("01020304050607080900"); + + @CalledByNative + private AndroidPaymentAppFinderUnitTest() {} /** * Argument matcher that matches Intents using |filterEquals| method. @@ -65,7 +71,7 @@ } } - @Test + @CalledByNativeJavaTest public void testNoValidPaymentMethodNames() { Set<String> methodNames = new HashSet<>(); methodNames.add("unknown-payment-method-name"); @@ -84,7 +90,7 @@ Mockito.verify(callback).onAllPaymentAppsCreated(); } - @Test + @CalledByNativeJavaTest public void testQueryWithoutApps() { PackageManagerDelegate packageManagerDelegate = Mockito.mock(PackageManagerDelegate.class); Mockito.when(packageManagerDelegate.getActivitiesThatCanRespondToIntentWithMetaData( @@ -107,7 +113,7 @@ Mockito.verify(callback).onAllPaymentAppsCreated(); } - @Test + @CalledByNativeJavaTest public void testQueryWithoutMetaData() { List<ResolveInfo> activities = new ArrayList<>(); ResolveInfo alicePay = new ResolveInfo(); @@ -138,7 +144,7 @@ Mockito.verify(callback).onAllPaymentAppsCreated(); } - @Test + @CalledByNativeJavaTest public void testQueryWithUnsupportedPaymentMethod() { List<ResolveInfo> activities = new ArrayList<>(); ResolveInfo alicePay = new ResolveInfo(); @@ -174,7 +180,7 @@ Mockito.verify(callback).onAllPaymentAppsCreated(); } - @Test + @CalledByNativeJavaTest public void testQueryBasicCardsWithTwoApps() { List<ResolveInfo> activities = new ArrayList<>(); ResolveInfo alicePay = new ResolveInfo(); @@ -239,7 +245,7 @@ Mockito.verify(callback).onAllPaymentAppsCreated(); } - @Test + @CalledByNativeJavaTest public void testQueryBobPayWithOneAppThatHasIsReadyToPayService() { List<ResolveInfo> activities = new ArrayList<>(); ResolveInfo bobPay = new ResolveInfo(); @@ -274,14 +280,15 @@ isBobPayReadyToPay.serviceInfo.name = "com.bobpay.app.IsReadyToWebPay"; services.add(isBobPayReadyToPay); Intent isReadyToPayIntent = new Intent(AndroidPaymentAppFinder.ACTION_IS_READY_TO_PAY); - Mockito.when(packageManagerDelegate.getServicesThatCanRespondToIntent( + Mockito + .when(packageManagerDelegate.getServicesThatCanRespondToIntent( ArgumentMatchers.argThat(new IntentArgumentMatcher(isReadyToPayIntent)))) .thenReturn(services); PackageInfo bobPayPackageInfo = new PackageInfo(); bobPayPackageInfo.versionCode = 10; bobPayPackageInfo.signatures = new Signature[1]; - bobPayPackageInfo.signatures[0] = PaymentManifestVerifierTest.BOB_PAY_SIGNATURE; + bobPayPackageInfo.signatures[0] = BOB_PAY_SIGNATURE; Mockito.when(packageManagerDelegate.getPackageInfoWithSignatures("com.bobpay.app")) .thenReturn(bobPayPackageInfo); @@ -318,8 +325,8 @@ public void parseWebAppManifest(String content, ManifestParseCallback callback) { WebAppManifestSection[] manifest = new WebAppManifestSection[1]; int minVersion = 10; - manifest[0] = new WebAppManifestSection("com.bobpay.app", minVersion, - PaymentManifestVerifierTest.BOB_PAY_SIGNATURE_FINGERPRINTS); + manifest[0] = new WebAppManifestSection( + "com.bobpay.app", minVersion, BOB_PAY_SIGNATURE_FINGERPRINTS); callback.onWebAppManifestParseSuccess(manifest); }
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn index b524820..9c88ab16 100644 --- a/chrome/browser/BUILD.gn +++ b/chrome/browser/BUILD.gn
@@ -4467,7 +4467,10 @@ } if (enable_kaleidoscope) { - deps += [ "//chrome/browser/media/kaleidoscope/internal" ] + deps += [ + "//chrome/browser/media/kaleidoscope/internal", + "//chrome/browser/media/kaleidoscope/internal/mojom", + ] } if (enable_legacy_desktop_in_product_help) {
diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc index 50448e9..3024ebd 100644 --- a/chrome/browser/about_flags.cc +++ b/chrome/browser/about_flags.cc
@@ -4357,6 +4357,10 @@ kOsWin | kOsMac | kOsLinux, FEATURE_VALUE_TYPE(autofill::features::kAutofillCreditCardUploadFeedback)}, + {"font-access", flag_descriptions::kFontAccessAPIName, + flag_descriptions::kFontAccessAPIDescription, kOsAll, + FEATURE_VALUE_TYPE(blink::features::kFontAccess)}, + {"font-src-local-matching", flag_descriptions::kFontSrcLocalMatchingName, flag_descriptions::kFontSrcLocalMatchingDescription, kOsAll, FEATURE_VALUE_TYPE(features::kFontSrcLocalMatching)},
diff --git a/chrome/browser/android/vr/arcore_device/arcore_consent_prompt.cc b/chrome/browser/android/vr/arcore_device/arcore_consent_prompt.cc index 4331b9c..aa511b1 100644 --- a/chrome/browser/android/vr/arcore_device/arcore_consent_prompt.cc +++ b/chrome/browser/android/vr/arcore_device/arcore_consent_prompt.cc
@@ -66,8 +66,9 @@ ArCoreConsentPrompt::~ArCoreConsentPrompt() = default; -void ArCoreConsentPrompt::OnUserConsentResult(JNIEnv* env, - jboolean is_granted) { +void ArCoreConsentPrompt::OnUserConsentResult( + JNIEnv* env, + jboolean is_granted) { jdelegate_.Reset(); if (!on_user_consent_callback_) @@ -138,8 +139,9 @@ GetTabFromRenderer(render_process_id_, render_frame_id_)); } -void ArCoreConsentPrompt::OnRequestInstallArModuleResult(JNIEnv* env, - bool success) { +void ArCoreConsentPrompt::OnRequestInstallArModuleResult( + JNIEnv* env, + bool success) { DVLOG(1) << __func__; DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); @@ -148,8 +150,9 @@ } } -void ArCoreConsentPrompt::OnRequestInstallSupportedArCoreResult(JNIEnv* env, - bool success) { +void ArCoreConsentPrompt::OnRequestInstallSupportedArCoreResult( + JNIEnv* env, + bool success) { DVLOG(1) << __func__; DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); DCHECK(on_request_arcore_install_or_update_result_callback_); @@ -159,8 +162,17 @@ void ArCoreConsentPrompt::RequestArModule() { DVLOG(1) << __func__; + if (ShouldRequestInstallArModule()) { + if (!CanRequestInstallArModule()) { + OnRequestArModuleResult(false); + return; + } - DCHECK(!ShouldRequestInstallArModule()) << "AR DFM should not be needed!"; + on_request_ar_module_result_callback_ = base::BindOnce( + &ArCoreConsentPrompt::OnRequestArModuleResult, GetWeakPtr()); + RequestInstallArModule(); + return; + } OnRequestArModuleResult(true); }
diff --git a/chrome/browser/android/vr/arcore_device/arcore_java_utils.cc b/chrome/browser/android/vr/arcore_device/arcore_java_utils.cc index 72992c1..dce5c25 100644 --- a/chrome/browser/android/vr/arcore_device/arcore_java_utils.cc +++ b/chrome/browser/android/vr/arcore_device/arcore_java_utils.cc
@@ -19,6 +19,10 @@ namespace vr { +namespace { + +} // namespace + ArCoreJavaUtils::ArCoreJavaUtils() { JNIEnv* env = AttachCurrentThread(); if (!env) @@ -105,21 +109,6 @@ // absolute path. ScopedJavaLocalRef<jstring> java_path = Java_ArCoreJavaUtils_getArCoreShimLibraryPath(env); - - // Crash in debug builds if `java_path` is a null pointer but handle this - // situation in release builds. This is done by design - the `java_path` will - // be null only if there was a regression introduced to our gn/gni files w/o - // causing a build break. In release builds, this approach will result in the - // site not being able to request an AR session. - DCHECK(java_path) - << "Unable to find path to ARCore SDK library - please ensure that " - "loadable_modules and secondary_abi_loadable_modules are set " - "correctly when building"; - if (!java_path) { - LOG(ERROR) << "Unable to find path to ARCore SDK library"; - return false; - } - return LoadArCoreSdk(base::android::ConvertJavaStringToUTF8(env, java_path)); }
diff --git a/chrome/browser/chrome_browser_interface_binders.cc b/chrome/browser/chrome_browser_interface_binders.cc index 9f748ed..cdf909c 100644 --- a/chrome/browser/chrome_browser_interface_binders.cc +++ b/chrome/browser/chrome_browser_interface_binders.cc
@@ -11,6 +11,7 @@ #include "chrome/browser/accessibility/accessibility_labels_service.h" #include "chrome/browser/accessibility/accessibility_labels_service_factory.h" #include "chrome/browser/bad_message.h" +#include "chrome/browser/buildflags.h" #include "chrome/browser/dom_distiller/dom_distiller_service_factory.h" #include "chrome/browser/engagement/site_engagement_details.mojom.h" #include "chrome/browser/language/translate_frame_binder.h" @@ -134,6 +135,11 @@ #include "extensions/common/api/mime_handler.mojom.h" // nogncheck #endif +#if BUILDFLAG(ENABLE_KALEIDOSCOPE) +#include "chrome/browser/media/kaleidoscope/internal/kaleidoscope_ui.h" +#include "chrome/browser/media/kaleidoscope/internal/mojom/kaleidoscope.mojom.h" +#endif // BUILDFLAG(ENABLE_KALEIDOSCOPE) + namespace chrome { namespace internal { @@ -221,16 +227,20 @@ void BindUnhandledTapWebContentsObserver( content::RenderFrameHost* const host, mojo::PendingReceiver<blink::mojom::UnhandledTapNotifier> receiver) { + auto* web_contents = content::WebContents::FromRenderFrameHost(host); + if (!web_contents) + return; + auto* unhandled_tap_notifier_observer = contextual_search::UnhandledTapWebContentsObserver::FromWebContents( - content::WebContents::FromRenderFrameHost(host)); + web_contents); + if (!unhandled_tap_notifier_observer) + return; - if (unhandled_tap_notifier_observer) { - contextual_search::CreateUnhandledTapNotifierImpl( - unhandled_tap_notifier_observer->device_scale_factor(), - unhandled_tap_notifier_observer->unhandled_tap_callback(), - std::move(receiver)); - } + contextual_search::CreateUnhandledTapNotifierImpl( + unhandled_tap_notifier_observer->device_scale_factor(), + unhandled_tap_notifier_observer->unhandled_tap_callback(), + std::move(receiver)); } #endif // BUILDFLAG(ENABLE_UNHANDLED_TAP) @@ -268,9 +278,12 @@ content::RenderFrameHost* const frame_host, mojo::PendingReceiver<dom_distiller::mojom::DistillabilityService> receiver) { + auto* web_contents = content::WebContents::FromRenderFrameHost(frame_host); + if (!web_contents) + return; + dom_distiller::DistillabilityDriver* driver = - dom_distiller::DistillabilityDriver::FromWebContents( - content::WebContents::FromRenderFrameHost(frame_host)); + dom_distiller::DistillabilityDriver::FromWebContents(web_contents); if (!driver) return; driver->CreateDistillabilityService(std::move(receiver)); @@ -280,10 +293,13 @@ content::RenderFrameHost* const frame_host, mojo::PendingReceiver<dom_distiller::mojom::DistillerJavaScriptService> receiver) { + auto* web_contents = content::WebContents::FromRenderFrameHost(frame_host); + if (!web_contents) + return; + dom_distiller::DomDistillerService* dom_distiller_service = dom_distiller::DomDistillerServiceFactory::GetForBrowserContext( - content::WebContents::FromRenderFrameHost(frame_host) - ->GetBrowserContext()); + web_contents->GetBrowserContext()); auto* distiller_ui_handle = dom_distiller_service->GetDistillerUIHandle(); #if defined(OS_ANDROID) static_cast<dom_distiller::android::DistillerUIHandleAndroid*>( @@ -296,8 +312,12 @@ void BindPrerenderCanceler( content::RenderFrameHost* frame_host, mojo::PendingReceiver<mojom::PrerenderCanceler> receiver) { - auto* prerender_contents = prerender::PrerenderContents::FromWebContents( - content::WebContents::FromRenderFrameHost(frame_host)); + auto* web_contents = content::WebContents::FromRenderFrameHost(frame_host); + if (!web_contents) + return; + + auto* prerender_contents = + prerender::PrerenderContents::FromWebContents(web_contents); if (!prerender_contents) return; prerender_contents->OnPrerenderCancelerReceiver(std::move(receiver)); @@ -344,10 +364,12 @@ content::RenderFrameHost* frame_host, mojo::PendingReceiver<extensions::mime_handler::MimeHandlerService> receiver) { - content::WebContents* contents = - content::WebContents::FromRenderFrameHost(frame_host); + auto* web_contents = content::WebContents::FromRenderFrameHost(frame_host); + if (!web_contents) + return; + auto* guest_view = - extensions::MimeHandlerViewGuest::FromWebContents(contents); + extensions::MimeHandlerViewGuest::FromWebContents(web_contents); if (!guest_view) return; extensions::MimeHandlerServiceImpl::Create(guest_view->GetStreamWeakPtr(), @@ -358,10 +380,12 @@ content::RenderFrameHost* frame_host, mojo::PendingReceiver<extensions::mime_handler::BeforeUnloadControl> receiver) { - content::WebContents* contents = - content::WebContents::FromRenderFrameHost(frame_host); + auto* web_contents = content::WebContents::FromRenderFrameHost(frame_host); + if (!web_contents) + return; + auto* guest_view = - extensions::MimeHandlerViewGuest::FromWebContents(contents); + extensions::MimeHandlerViewGuest::FromWebContents(web_contents); if (!guest_view) return; guest_view->FuseBeforeUnloadControl(std::move(receiver)); @@ -544,6 +568,11 @@ RegisterWebUIControllerInterfaceBinder<::mojom::ResetPasswordHandler, ResetPasswordUI>(map); #endif + +#if BUILDFLAG(ENABLE_KALEIDOSCOPE) + RegisterWebUIControllerInterfaceBinder<media::mojom::KaleidoscopeDataProvider, + KaleidoscopeUI>(map); +#endif // BUILDFLAG(ENABLE_KALEIDOSCOPE) } } // namespace internal
diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/chrome_content_browser_client.cc index 5504b42..8d092e7 100644 --- a/chrome/browser/chrome_content_browser_client.cc +++ b/chrome/browser/chrome_content_browser_client.cc
@@ -3575,6 +3575,7 @@ case service_manager::SandboxType::kCdm: case service_manager::SandboxType::kPdfCompositor: case service_manager::SandboxType::kAudio: + case service_manager::SandboxType::kSoda: // Should never reach here. CHECK(0); return base::string16();
diff --git a/chrome/browser/component_updater/soda_component_installer.cc b/chrome/browser/component_updater/soda_component_installer.cc index 8009a6d..59a91105f1 100644 --- a/chrome/browser/component_updater/soda_component_installer.cc +++ b/chrome/browser/component_updater/soda_component_installer.cc
@@ -21,16 +21,15 @@ namespace { -// The SHA256 of the SubjectPublicKeyInfo used to sign the archive. -// TODO(evliu): The SODA library isn't ready to be exposed to the public yet so -// we should not check in the SHA256. +// The SHA256 of the SubjectPublicKeyInfo used to sign the component. +// The component id is: icnkogojpkfjeajonkmlplionaamopkf const uint8_t kSODAPublicKeySHA256[32] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; + 0x82, 0xda, 0xe6, 0xe9, 0xfa, 0x59, 0x40, 0x9e, 0xda, 0xcb, 0xfb, + 0x8e, 0xd0, 0x0c, 0xef, 0xa5, 0xc0, 0x97, 0x00, 0x84, 0x1c, 0x21, + 0xa6, 0xae, 0xc8, 0x1b, 0x87, 0xfb, 0x12, 0x27, 0x28, 0xb1}; const base::FilePath::CharType kSODABinaryFileName[] = - FILE_PATH_LITERAL("SODAFiles/libsoda.experimental.so"); + FILE_PATH_LITERAL("SODAFiles/libsoda.so"); static_assert(base::size(kSODAPublicKeySHA256) == crypto::kSHA256Length, "Wrong hash length"); @@ -120,12 +119,24 @@ return std::vector<std::string>(); } +void UpdateSODAInstallDirPref(PrefService* prefs, + const base::FilePath& install_dir) { + prefs->SetFilePath(prefs::kSODAPath, install_dir.Append(kSODABinaryFileName)); +} + void RegisterSODAComponent(ComponentUpdateService* cus, PrefService* prefs, base::OnceClosure callback) { DCHECK_CURRENTLY_ON(BrowserThread::UI); - // TODO(evliu): The SODA library isn't ready to be exposed to the public yet - // we should not register the component. - NOTIMPLEMENTED(); + + auto installer = base::MakeRefCounted<ComponentInstaller>( + std::make_unique<SODAComponentInstallerPolicy>(base::BindRepeating( + [](PrefService* prefs, const base::FilePath& install_dir) { + base::PostTask( + FROM_HERE, {BrowserThread::UI, base::TaskPriority::BEST_EFFORT}, + base::BindOnce(&UpdateSODAInstallDirPref, prefs, install_dir)); + }, + prefs))); + installer->Register(cus, std::move(callback)); } } // namespace component_updater
diff --git a/chrome/browser/extensions/api/declarative_net_request/declarative_net_request_browsertest.cc b/chrome/browser/extensions/api/declarative_net_request/declarative_net_request_browsertest.cc index 0dfbd3e..15bdb1fa4 100644 --- a/chrome/browser/extensions/api/declarative_net_request/declarative_net_request_browsertest.cc +++ b/chrome/browser/extensions/api/declarative_net_request/declarative_net_request_browsertest.cc
@@ -21,12 +21,15 @@ #include "base/path_service.h" #include "base/rand_util.h" #include "base/run_loop.h" +#include "base/strings/string_number_conversions.h" #include "base/strings/stringprintf.h" #include "base/strings/utf_string_conversions.h" #include "base/synchronization/lock.h" #include "base/task/post_task.h" #include "base/test/metrics/histogram_tester.h" +#include "base/test/simple_test_clock.h" #include "base/threading/thread_restrictions.h" +#include "base/time/time.h" #include "base/values.h" #include "build/build_config.h" #include "chrome/browser/extensions/api/extension_action/test_extension_action_api_observer.h" @@ -62,6 +65,7 @@ #include "content/public/test/simple_url_loader_test_helper.h" #include "content/public/test/test_navigation_observer.h" #include "content/public/test/test_utils.h" +#include "extensions/browser/api/declarative_net_request/action_tracker.h" #include "extensions/browser/api/declarative_net_request/constants.h" #include "extensions/browser/api/declarative_net_request/rules_monitor_service.h" #include "extensions/browser/api/declarative_net_request/ruleset_manager.h" @@ -556,6 +560,32 @@ base::StringPrintf(kGetMatchedRulesScript, tab_id_param.c_str())); } + // Calls getMatchedRules for |extension_id|, |tab_id| and optionally, + // |timestamp|. Returns the matched rule count for the tab specified by + // |tab_id| and are more recent than |timestamp| if specified. + std::string GetMatchedRuleCountForTab(const ExtensionId& extension_id, + int tab_id, + base::Optional<base::Time> timestamp) { + const char kGetMatchedRulesScript[] = R"( + chrome.declarativeNetRequest.getMatchedRules(%s, (rules) => { + var rule_count = rules.rulesMatchedInfo.length; + window.domAutomationController.send(rule_count.toString()); + }); + )"; + + std::string param_string = base::StringPrintf("{tabId: %d}", tab_id); + + if (timestamp) { + double timestamp_in_js = timestamp->ToJsTimeIgnoringNull(); + param_string = base::StringPrintf("{tabId: %d, minTimeStamp: %f}", tab_id, + timestamp_in_js); + } + + return ExecuteScriptInBackgroundPage( + extension_id, + base::StringPrintf(kGetMatchedRulesScript, param_string.c_str())); + } + std::set<GURL> GetAndResetRequestsToServer() { base::AutoLock lock(requests_to_server_lock_); std::set<GURL> results = requests_to_server_; @@ -3566,6 +3596,9 @@ base::Optional<int> tab_id; std::string expected_rule_and_tab_ids; } test_cases[] = { + // No rules should be matched for |extension_1| and the unknown tab ID. + {extension_1_id, extension_misc::kUnknownTabId, ""}, + // No filter is specified for |extension_1|, therefore two MatchedRuleInfo // should be returned: // (abc_id, first_tab_id) and (abc_id, second_tab_id) @@ -3687,6 +3720,98 @@ EXPECT_EQ("", actual_rule_and_tab_ids); } +// Test that getMatchedRules only returns rules more recent than the provided +// timestamp. +IN_PROC_BROWSER_TEST_P(DeclarativeNetRequestBrowserTest, + GetMatchedRulesTimestampFiltering) { + base::Time start_time = base::Time::Now(); + + base::SimpleTestClock clock_; + clock_.SetNow(start_time); + auto* rules_monitor_service = + declarative_net_request::RulesMonitorService::Get(profile()); + rules_monitor_service->action_tracker().SetClockForTests(&clock_); + + // Load the extension with a background script so scripts can be run from its + // generated background page. + set_has_background_script(true); + + const std::string kFrameName1 = "frame1"; + const GURL page_url = embedded_test_server()->GetURL( + "nomatch.com", "/page_with_two_frames.html"); + + const std::string example_host = "example.com"; + const GURL sub_frame_url = embedded_test_server()->GetURL( + example_host, "/pages_with_script/index.html"); + + TestRule rule = CreateGenericRule(); + rule.id = kMinValidID; + rule.condition->url_filter = example_host; + rule.condition->resource_types = std::vector<std::string>({"sub_frame"}); + rule.action->type = "block"; + + ASSERT_NO_FATAL_FAILURE(LoadExtensionWithRules({rule}, "extension_1", {})); + const ExtensionId& extension_id = last_loaded_extension_id(); + ui_test_utils::NavigateToURL(browser(), page_url); + + // Using subframes here to make requests without triggering main-frame + // navigations. This request will match with the block rule for example.com at + // |start_time|. + NavigateFrame(kFrameName1, sub_frame_url); + + const char getMatchedRuleTimestampScript[] = R"( + chrome.declarativeNetRequest.getMatchedRules((rules) => { + var rule_count = rules.rulesMatchedInfo.length; + var timestamp = rule_count === 1 ? + rules.rulesMatchedInfo[0].timeStamp.toString() : ''; + + window.domAutomationController.send(timestamp); + }); + )"; + + std::string timestamp_string = ExecuteScriptInBackgroundPage( + extension_id, getMatchedRuleTimestampScript); + + double matched_rule_timestamp; + ASSERT_TRUE(base::StringToDouble(timestamp_string, &matched_rule_timestamp)); + + // Verify that the rule was matched at |start_time|. + EXPECT_DOUBLE_EQ(start_time.ToJsTimeIgnoringNull(), matched_rule_timestamp); + + // Advance the clock to capture a timestamp after when the first request was + // made. + clock_.Advance(base::TimeDelta::FromMilliseconds(100)); + base::Time timestamp_1 = clock_.Now(); + clock_.Advance(base::TimeDelta::FromMilliseconds(100)); + + // Navigate to example.com again. This should cause |rule| to be matched. + NavigateFrame(kFrameName1, sub_frame_url); + + // Advance the clock to capture a timestamp after when the second request was + // made. + clock_.Advance(base::TimeDelta::FromMilliseconds(100)); + base::Time timestamp_2 = clock_.Now(); + + int first_tab_id = ExtensionTabUtil::GetTabId(web_contents()); + + // Two rules should be matched on |first_tab_id|. + std::string rule_count = + GetMatchedRuleCountForTab(extension_id, first_tab_id, base::nullopt); + EXPECT_EQ("2", rule_count); + + // Only one rule should be matched on |first_tab_id| after |timestamp_1|. + rule_count = + GetMatchedRuleCountForTab(extension_id, first_tab_id, timestamp_1); + EXPECT_EQ("1", rule_count); + + // No rules should be matched on |first_tab_id| after |timestamp_2|. + rule_count = + GetMatchedRuleCountForTab(extension_id, first_tab_id, timestamp_2); + EXPECT_EQ("0", rule_count); + + rules_monitor_service->action_tracker().SetClockForTests(nullptr); +} + // Test fixture to verify that host permissions for the request url and the // request initiator are properly checked when redirecting requests. Loads an // example.com url with four sub-frames named frame_[1..4] from hosts
diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.json index ec1c48e..6a4a4f2 100644 --- a/chrome/browser/flag-metadata.json +++ b/chrome/browser/flag-metadata.json
@@ -2280,6 +2280,11 @@ "expiry_milestone": 82 }, { + "name": "font-access", + "owners": [ "cmp", "oyiptong" ], + "expiry_milestone": 85 + }, + { "name": "font-src-local-matching", "owners": [ "drott", "layout-dev" ], "expiry_milestone": 82
diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc index 7b472a3..0fc4cc16 100644 --- a/chrome/browser/flag_descriptions.cc +++ b/chrome/browser/flag_descriptions.cc
@@ -369,6 +369,11 @@ const char kFocusModeDescription[] = "If enabled, allows the user to switch to Focus Mode"; +const char kFontAccessAPIName[] = "Font Access APIs"; +const char kFontAccessAPIDescription[] = + "Enables the experimental Font Access APIs, giving websites access " + "to enumerate local fonts and access their table data."; + const char kFontSrcLocalMatchingName[] = "Match @font-face { src: local(<name>) } names by PostScript and full font " "name.";
diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h index 01c78e8..b6e50b2e 100644 --- a/chrome/browser/flag_descriptions.h +++ b/chrome/browser/flag_descriptions.h
@@ -243,6 +243,9 @@ extern const char kExperimentalAccessibilityLanguageDetectionDynamicDescription[]; +extern const char kFontAccessAPIName[]; +extern const char kFontAccessAPIDescription[]; + extern const char kFontSrcLocalMatchingName[]; extern const char kFontSrcLocalMatchingDescription[];
diff --git a/chrome/browser/optimization_guide/optimization_guide_hints_manager.cc b/chrome/browser/optimization_guide/optimization_guide_hints_manager.cc index 4e5fc75..8877191 100644 --- a/chrome/browser/optimization_guide/optimization_guide_hints_manager.cc +++ b/chrome/browser/optimization_guide/optimization_guide_hints_manager.cc
@@ -545,6 +545,8 @@ DCHECK_CURRENTLY_ON(content::BrowserThread::UI); LOCAL_HISTOGRAM_BOOLEAN("OptimizationGuide.FetchedHints.Stored", true); + hint_cache_->PurgeExpiredFetchedHints(); + top_hosts_hints_fetch_timer_.Stop(); top_hosts_hints_fetch_timer_.Start( FROM_HERE, hint_cache_->GetFetchedHintsUpdateTime() - clock_->Now(), this,
diff --git a/chrome/browser/partnercustomizations/partner_browser_customizations_unittest.cc b/chrome/browser/partnercustomizations/partner_browser_customizations_unittest.cc new file mode 100644 index 0000000..cea66c1b --- /dev/null +++ b/chrome/browser/partnercustomizations/partner_browser_customizations_unittest.cc
@@ -0,0 +1,25 @@ +// Copyright 2020 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "base/android/jni_android.h" +#include "chrome/android/native_j_unittests_jni_headers/PartnerBrowserCustomizationsUnitTest_jni.h" +#include "testing/gtest/include/gtest/gtest.h" + +using base::android::AttachCurrentThread; + +class PartnerBrowserCustomizationsUnitTest : public ::testing::Test { + public: + PartnerBrowserCustomizationsUnitTest() + : j_test_(Java_PartnerBrowserCustomizationsUnitTest_Constructor( + AttachCurrentThread())) {} + + const base::android::ScopedJavaGlobalRef<jobject>& j_test() { + return j_test_; + } + + private: + base::android::ScopedJavaGlobalRef<jobject> j_test_; +}; + +JAVA_TESTS(PartnerBrowserCustomizationsUnitTest, j_test())
diff --git a/chrome/browser/password_manager/chrome_password_manager_client.cc b/chrome/browser/password_manager/chrome_password_manager_client.cc index 839a8c7..4090321 100644 --- a/chrome/browser/password_manager/chrome_password_manager_client.cc +++ b/chrome/browser/password_manager/chrome_password_manager_client.cc
@@ -1237,6 +1237,9 @@ web_contents(), content_driver, focused_field_type)) return; + if (!content_driver->CanShowAutofillUi()) + return; + if (!PasswordAccessoryController::AllowedForWebContents(web_contents())) return;
diff --git a/chrome/browser/payments/android/android_payment_app_finder_unittest.cc b/chrome/browser/payments/android/android_payment_app_finder_unittest.cc new file mode 100644 index 0000000..e871337 --- /dev/null +++ b/chrome/browser/payments/android/android_payment_app_finder_unittest.cc
@@ -0,0 +1,25 @@ +// Copyright 2020 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "base/android/jni_android.h" +#include "chrome/android/native_j_unittests_jni_headers/AndroidPaymentAppFinderUnitTest_jni.h" +#include "testing/gtest/include/gtest/gtest.h" + +using base::android::AttachCurrentThread; + +class AndroidPaymentAppFinderUnitTest : public ::testing::Test { + public: + AndroidPaymentAppFinderUnitTest() + : j_test_(Java_AndroidPaymentAppFinderUnitTest_Constructor( + AttachCurrentThread())) {} + + const base::android::ScopedJavaGlobalRef<jobject>& j_test() { + return j_test_; + } + + private: + base::android::ScopedJavaGlobalRef<jobject> j_test_; +}; + +JAVA_TESTS(AndroidPaymentAppFinderUnitTest, j_test())
diff --git a/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java b/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java index 575ec07..29af5ad 100644 --- a/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java +++ b/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java
@@ -476,6 +476,9 @@ public static final String SYNC_SESSIONS_UUID = "chromium.sync.sessions.id"; + public static final String TAB_ID_MANAGER_NEXT_ID = + "org.chromium.chrome.browser.tab.TabIdManager.NEXT_ID"; + /** * Keys for deferred recording of the outcomes of showing the clear data dialog after * Trusted Web Activity client apps are uninstalled or have their data cleared. @@ -710,6 +713,7 @@ SNAPSHOT_DATABASE_REMOVED, START_SURFACE_SINGLE_PANE_ENABLED_KEY, SYNC_SESSIONS_UUID, + TAB_ID_MANAGER_NEXT_ID, TWA_DIALOG_NUMBER_OF_DISMISSALS_ON_CLEAR_DATA, TWA_DIALOG_NUMBER_OF_DISMISSALS_ON_UNINSTALL, TWA_DISCLOSURE_ACCEPTED_PACKAGES,
diff --git a/chrome/browser/resources/local_discovery/local_discovery.js b/chrome/browser/resources/local_discovery/local_discovery.js index 1d2a545..068b7ca 100644 --- a/chrome/browser/resources/local_discovery/local_discovery.js +++ b/chrome/browser/resources/local_discovery/local_discovery.js
@@ -28,10 +28,11 @@ let isUserLoggedIn = true; /** - * Whether or not the user is supervised or off the record. + * Whether or not the user's profile is restricted because of being + * supervised, off the record, or limited by an enterprise policy. * @type bool */ - let isUserSupervisedOrOffTheRecord = false; + let isUserProfileRestricted = false; /** * Whether or not the path-based dialog has been shown. @@ -357,7 +358,7 @@ } else { $('no-printers-message').hidden = true; $('register-login-promo').hidden = - isUserLoggedIn || isUserSupervisedOrOffTheRecord; + isUserLoggedIn || isUserProfileRestricted; } if (!($('register-login-promo').hidden) || !($('cloud-devices-login-promo').hidden) || @@ -433,26 +434,31 @@ } /** - * User is not logged in. + * Registers whether the user is logged in. Modifies the UI to display the + * appropriate content based on user log-in status and profile restrictions. + * @param {boolean} userLoggedIn Whether the user is logged in. + * @param {boolean} userProfileRestricted Whether the user profile's access to + * the local discovery page is restricted because of being supervised, off + * the record, or disallowed by policy. */ - function setUserLoggedIn(userLoggedIn, userSupervisedOrOffTheRecord) { + function setUserLoggedIn(userLoggedIn, userProfileRestricted) { isUserLoggedIn = userLoggedIn; - isUserSupervisedOrOffTheRecord = userSupervisedOrOffTheRecord; + isUserProfileRestricted = userProfileRestricted; $('cloud-devices-login-promo').hidden = - isUserLoggedIn || isUserSupervisedOrOffTheRecord; + isUserLoggedIn || isUserProfileRestricted; $('register-overlay-login-promo').hidden = - isUserLoggedIn || isUserSupervisedOrOffTheRecord; + isUserLoggedIn || isUserProfileRestricted; $('register-continue').disabled = - !isUserLoggedIn || isUserSupervisedOrOffTheRecord; + !isUserLoggedIn || isUserProfileRestricted; - $('my-devices-container').hidden = userSupervisedOrOffTheRecord; + $('my-devices-container').hidden = isUserProfileRestricted; - if (isUserSupervisedOrOffTheRecord) { + if (isUserProfileRestricted) { $('cloud-print-connector-section').hidden = true; } - if (isUserLoggedIn && !isUserSupervisedOrOffTheRecord) { + if (isUserLoggedIn && !isUserProfileRestricted) { requestDeviceList(); $('register-login-promo').hidden = true; } else {
diff --git a/chrome/browser/resources/new_tab_page/new_tab_page.html b/chrome/browser/resources/new_tab_page/new_tab_page.html index b0a190e..47486b3 100644 --- a/chrome/browser/resources/new_tab_page/new_tab_page.html +++ b/chrome/browser/resources/new_tab_page/new_tab_page.html
@@ -11,7 +11,7 @@ } body { - background: white; + background: $i18n{backgroundColor}; margin: 0; }
diff --git a/chrome/browser/resources/settings/BUILD.gn b/chrome/browser/resources/settings/BUILD.gn index 2be519c2..34f83ef 100644 --- a/chrome/browser/resources/settings/BUILD.gn +++ b/chrome/browser/resources/settings/BUILD.gn
@@ -105,10 +105,7 @@ } if (is_chromeos) { - deps += [ - "chromeos:closure_compile", - "parental_controls_page:closure_compile", - ] + deps += [ "chromeos:closure_compile" ] } }
diff --git a/chrome/browser/resources/settings/OWNERS b/chrome/browser/resources/settings/OWNERS index 451efc7..586b9103 100644 --- a/chrome/browser/resources/settings/OWNERS +++ b/chrome/browser/resources/settings/OWNERS
@@ -6,6 +6,7 @@ michaelpg@chromium.org stevenjb@chromium.org tommycli@chromium.org +zentaro@chromium.org # Chrome OS Settings per-file *os_settings*=file://chrome/browser/resources/settings/chromeos/OWNERS
diff --git a/chrome/browser/resources/settings/chromeos/BUILD.gn b/chrome/browser/resources/settings/chromeos/BUILD.gn index 494fd16..ee3764e1 100644 --- a/chrome/browser/resources/settings/chromeos/BUILD.gn +++ b/chrome/browser/resources/settings/chromeos/BUILD.gn
@@ -94,6 +94,7 @@ "os_settings_menu:closure_compile", "os_settings_page:closure_compile", "os_settings_ui:closure_compile", + "parental_controls_page:closure_compile", "personalization_page:closure_compile", "plugin_vm_page:closure_compile", ]
diff --git a/chrome/browser/resources/settings/chromeos/os_people_page/BUILD.gn b/chrome/browser/resources/settings/chromeos/os_people_page/BUILD.gn index 1f98481..c510e4a 100644 --- a/chrome/browser/resources/settings/chromeos/os_people_page/BUILD.gn +++ b/chrome/browser/resources/settings/chromeos/os_people_page/BUILD.gn
@@ -21,8 +21,6 @@ ":users_add_user_dialog", ":users_page", "//chrome/browser/resources/settings/people_page:account_manager_browser_proxy", - "//chrome/browser/resources/settings/people_page:change_picture", - "//chrome/browser/resources/settings/people_page:change_picture_browser_proxy", "//chrome/browser/resources/settings/people_page:profile_info_browser_proxy", "//chrome/browser/resources/settings/people_page:signout_dialog", "//chrome/browser/resources/settings/people_page:sync_browser_proxy",
diff --git a/chrome/browser/resources/settings/chromeos/os_people_page/os_people_page.html b/chrome/browser/resources/settings/chromeos/os_people_page/os_people_page.html index f0e16c3..b9d85629 100644 --- a/chrome/browser/resources/settings/chromeos/os_people_page/os_people_page.html +++ b/chrome/browser/resources/settings/chromeos/os_people_page/os_people_page.html
@@ -15,7 +15,7 @@ <link rel="import" href="chrome://resources/polymer/v1_0/iron-flex-layout/iron-flex-layout-classes.html"> <link rel="import" href="../../controls/settings_toggle_button.html"> <link rel="import" href="../../icons.html"> -<link rel="import" href="../../parental_controls_page/parental_controls_page.html"> +<link rel="import" href="../parental_controls_page/parental_controls_page.html"> <link rel="import" href="../../people_page/account_manager_browser_proxy.html"> <link rel="import" href="../../people_page/profile_info_browser_proxy.html"> <link rel="import" href="../../people_page/signout_dialog.html">
diff --git a/chrome/browser/resources/settings/chromeos/os_printing_page/cups_add_printer_dialog.html b/chrome/browser/resources/settings/chromeos/os_printing_page/cups_add_printer_dialog.html index 18b4581..bdd8c736 100644 --- a/chrome/browser/resources/settings/chromeos/os_printing_page/cups_add_printer_dialog.html +++ b/chrome/browser/resources/settings/chromeos/os_printing_page/cups_add_printer_dialog.html
@@ -91,6 +91,10 @@ padding-inline-end: 20px; padding-inline-start: 20px; } + + #make-model-body { + height: 290px; + } </style> <add-printer-dialog> <div slot="dialog-title"> @@ -98,7 +102,7 @@ <printer-dialog-error error-text="[[errorText_]]"> </printer-dialog-error> </div> - <div slot="dialog-body"> + <div id="make-model-body" slot="dialog-body"> <div class="subtext" id="makeModelTextInfo"> <settings-localized-link localized-string= @@ -110,16 +114,14 @@ <cr-searchable-drop-down id="manufacturerDropdown" items="[[manufacturerList]]" label="$i18n{printerManufacturer}" - value="{{activePrinter.ppdManufacturer}}" - invalid="{{isManufacturerInvalid_}}"> + value="{{activePrinter.ppdManufacturer}}"> </cr-searchable-drop-down> </div> <div class="settings-box two-line"> <cr-searchable-drop-down id="modelDropdown" items="[[modelList]]" label="$i18n{printerModel}" - value="{{activePrinter.ppdModel}}" - invalid="{{isModelInvalid_}}"> + value="{{activePrinter.ppdModel}}"> </cr-searchable-drop-down> </div> <div id="ppdLabel" class="cr-form-field-label"> @@ -152,9 +154,7 @@ disabled="[[!canAddPrinter_(activePrinter.ppdManufacturer, activePrinter.ppdModel, activePrinter.printerPPDPath, - addPrinterInProgress_, - isManufacturerInvalid_, - isModelInvalid_)]]" + addPrinterInProgress_)]]" on-click="addPrinter_"> $i18n{addPrinterButtonText} </cr-button>
diff --git a/chrome/browser/resources/settings/chromeos/os_printing_page/cups_add_printer_dialog.js b/chrome/browser/resources/settings/chromeos/os_printing_page/cups_add_printer_dialog.js index 78164217..3148a4b4 100644 --- a/chrome/browser/resources/settings/chromeos/os_printing_page/cups_add_printer_dialog.js +++ b/chrome/browser/resources/settings/chromeos/os_printing_page/cups_add_printer_dialog.js
@@ -264,20 +264,6 @@ type: String, value: '', }, - - /** - * Indicates whether the value in the Manufacturer dropdown is a valid - * printer manufacturer. Set by manufacturerDropdown. - * @private - */ - isManufacturerInvalid_: Boolean, - - /** - * Indicates whether the value in the Model dropdown is a valid printer - * model. Set by modelDropdown. - * @private - */ - isModelInvalid_: Boolean, }, observers: [ @@ -450,8 +436,7 @@ canAddPrinter_: function(ppdManufacturer, ppdModel, printerPPDPath) { return !this.addPrinterInProgress_ && settings.printing.isPPDInfoValid( - ppdManufacturer, ppdModel, printerPPDPath) && - !this.isManufacturerInvalid_ && !this.isModelInvalid_; + ppdManufacturer, ppdModel, printerPPDPath); }, });
diff --git a/chrome/browser/resources/settings/chromeos/os_printing_page/cups_add_printer_dialog_elements.html b/chrome/browser/resources/settings/chromeos/os_printing_page/cups_add_printer_dialog_elements.html index d63d6cd..1ab71e7 100644 --- a/chrome/browser/resources/settings/chromeos/os_printing_page/cups_add_printer_dialog_elements.html +++ b/chrome/browser/resources/settings/chromeos/os_printing_page/cups_add_printer_dialog_elements.html
@@ -15,7 +15,6 @@ --cr-dialog-body-border-bottom: 1px solid var(--paper-grey-300); } #dialog [slot=body] { - height: 350px; padding-inline-end: 0; padding-inline-start: 0; }
diff --git a/chrome/browser/resources/settings/chromeos/os_printing_page/cups_printer_shared_css.html b/chrome/browser/resources/settings/chromeos/os_printing_page/cups_printer_shared_css.html index 60f64ffc..59dc298 100644 --- a/chrome/browser/resources/settings/chromeos/os_printing_page/cups_printer_shared_css.html +++ b/chrome/browser/resources/settings/chromeos/os_printing_page/cups_printer_shared_css.html
@@ -68,6 +68,10 @@ padding-top: 6px; } + [slot='dialog-body'] { + height: 350px; + } + .flex-auto { flex: 1 1 auto; }
diff --git a/chrome/browser/resources/settings/parental_controls_page/BUILD.gn b/chrome/browser/resources/settings/chromeos/parental_controls_page/BUILD.gn similarity index 96% rename from chrome/browser/resources/settings/parental_controls_page/BUILD.gn rename to chrome/browser/resources/settings/chromeos/parental_controls_page/BUILD.gn index bf02be9..6c60c05 100644 --- a/chrome/browser/resources/settings/parental_controls_page/BUILD.gn +++ b/chrome/browser/resources/settings/chromeos/parental_controls_page/BUILD.gn
@@ -19,7 +19,7 @@ js_library("parental_controls_page") { deps = [ ":parental_controls_browser_proxy", - "..:route", + "../..:route", "//ui/webui/resources/js:cr", "//ui/webui/resources/js:i18n_behavior", "//ui/webui/resources/js:web_ui_listener_behavior",
diff --git a/chrome/browser/resources/settings/parental_controls_page/parental_controls_browser_proxy.html b/chrome/browser/resources/settings/chromeos/parental_controls_page/parental_controls_browser_proxy.html similarity index 100% rename from chrome/browser/resources/settings/parental_controls_page/parental_controls_browser_proxy.html rename to chrome/browser/resources/settings/chromeos/parental_controls_page/parental_controls_browser_proxy.html
diff --git a/chrome/browser/resources/settings/parental_controls_page/parental_controls_browser_proxy.js b/chrome/browser/resources/settings/chromeos/parental_controls_page/parental_controls_browser_proxy.js similarity index 100% rename from chrome/browser/resources/settings/parental_controls_page/parental_controls_browser_proxy.js rename to chrome/browser/resources/settings/chromeos/parental_controls_page/parental_controls_browser_proxy.js
diff --git a/chrome/browser/resources/settings/parental_controls_page/parental_controls_page.html b/chrome/browser/resources/settings/chromeos/parental_controls_page/parental_controls_page.html similarity index 83% rename from chrome/browser/resources/settings/parental_controls_page/parental_controls_page.html rename to chrome/browser/resources/settings/chromeos/parental_controls_page/parental_controls_page.html index d933253d..3e84075 100644 --- a/chrome/browser/resources/settings/parental_controls_page/parental_controls_page.html +++ b/chrome/browser/resources/settings/chromeos/parental_controls_page/parental_controls_page.html
@@ -5,12 +5,12 @@ <link rel="import" href="chrome://resources/html/cr.html"> <link rel="import" href="chrome://resources/html/i18n_behavior.html"> <link rel="import" href="parental_controls_browser_proxy.html"> -<link rel="import" href="../i18n_setup.html"> -<link rel="import" href="../icons.html"> -<link rel="import" href="../route.html"> -<link rel="import" href="../settings_page/settings_animated_pages.html"> -<link rel="import" href="../settings_page/settings_subpage.html"> -<link rel="import" href="../settings_shared_css.html"> +<link rel="import" href="../../i18n_setup.html"> +<link rel="import" href="../../icons.html"> +<link rel="import" href="../../route.html"> +<link rel="import" href="../../settings_page/settings_animated_pages.html"> +<link rel="import" href="../../settings_page/settings_subpage.html"> +<link rel="import" href="../../settings_shared_css.html"> <dom-module id="settings-parental-controls-page"> <template>
diff --git a/chrome/browser/resources/settings/parental_controls_page/parental_controls_page.js b/chrome/browser/resources/settings/chromeos/parental_controls_page/parental_controls_page.js similarity index 100% rename from chrome/browser/resources/settings/parental_controls_page/parental_controls_page.js rename to chrome/browser/resources/settings/chromeos/parental_controls_page/parental_controls_page.js
diff --git a/chrome/browser/resources/settings/chromeos/personalization_page/BUILD.gn b/chrome/browser/resources/settings/chromeos/personalization_page/BUILD.gn index 3d81c8d1..f1c8143 100644 --- a/chrome/browser/resources/settings/chromeos/personalization_page/BUILD.gn +++ b/chrome/browser/resources/settings/chromeos/personalization_page/BUILD.gn
@@ -6,10 +6,34 @@ js_type_check("closure_compile") { deps = [ + ":change_picture", + ":change_picture_browser_proxy", ":personalization_page", ] } +js_library("change_picture") { + deps = [ + ":change_picture_browser_proxy", + "../..:route", + "//third_party/polymer/v1_0/components-chromium/iron-selector:iron-selector-extracted", + "//ui/webui/resources/cr_elements/chromeos/cr_picture:cr_picture_list", + "//ui/webui/resources/cr_elements/chromeos/cr_picture:cr_picture_pane", + "//ui/webui/resources/cr_elements/chromeos/cr_picture:cr_picture_types", + "//ui/webui/resources/cr_elements/chromeos/cr_picture:cr_png_behavior", + "//ui/webui/resources/js:i18n_behavior", + "//ui/webui/resources/js:load_time_data", + "//ui/webui/resources/js:util", + "//ui/webui/resources/js:web_ui_listener_behavior", + ] +} + +js_library("change_picture_browser_proxy") { + deps = [ + "//ui/webui/resources/js:cr", + ] +} + js_library("personalization_page") { deps = [ ":wallpaper_browser_proxy",
diff --git a/chrome/browser/resources/settings/people_page/change_picture.html b/chrome/browser/resources/settings/chromeos/personalization_page/change_picture.html similarity index 93% rename from chrome/browser/resources/settings/people_page/change_picture.html rename to chrome/browser/resources/settings/chromeos/personalization_page/change_picture.html index 2a2ca60..3042993 100644 --- a/chrome/browser/resources/settings/people_page/change_picture.html +++ b/chrome/browser/resources/settings/chromeos/personalization_page/change_picture.html
@@ -3,12 +3,13 @@ <link rel="import" href="chrome://resources/cr_elements/chromeos/cr_picture/cr_picture_list.html"> <link rel="import" href="chrome://resources/cr_elements/chromeos/cr_picture/cr_picture_pane.html"> <link rel="import" href="chrome://resources/cr_elements/chromeos/cr_picture/cr_picture_types.html"> +<link rel="import" href="chrome://resources/cr_elements/chromeos/cr_picture/cr_png_behavior.html"> <link rel="import" href="chrome://resources/html/i18n_behavior.html"> <link rel="import" href="chrome://resources/html/util.html"> <link rel="import" href="chrome://resources/html/web_ui_listener_behavior.html"> -<link rel="import" href="../i18n_setup.html"> -<link rel="import" href="../route.html"> -<link rel="import" href="../settings_shared_css.html"> +<link rel="import" href="../../i18n_setup.html"> +<link rel="import" href="../../route.html"> +<link rel="import" href="../../settings_shared_css.html"> <link rel="import" href="change_picture_browser_proxy.html"> <dom-module id="settings-change-picture">
diff --git a/chrome/browser/resources/settings/people_page/change_picture.js b/chrome/browser/resources/settings/chromeos/personalization_page/change_picture.js similarity index 100% rename from chrome/browser/resources/settings/people_page/change_picture.js rename to chrome/browser/resources/settings/chromeos/personalization_page/change_picture.js
diff --git a/chrome/browser/resources/settings/people_page/change_picture_browser_proxy.html b/chrome/browser/resources/settings/chromeos/personalization_page/change_picture_browser_proxy.html similarity index 100% rename from chrome/browser/resources/settings/people_page/change_picture_browser_proxy.html rename to chrome/browser/resources/settings/chromeos/personalization_page/change_picture_browser_proxy.html
diff --git a/chrome/browser/resources/settings/people_page/change_picture_browser_proxy.js b/chrome/browser/resources/settings/chromeos/personalization_page/change_picture_browser_proxy.js similarity index 100% rename from chrome/browser/resources/settings/people_page/change_picture_browser_proxy.js rename to chrome/browser/resources/settings/chromeos/personalization_page/change_picture_browser_proxy.js
diff --git a/chrome/browser/resources/settings/chromeos/personalization_page/personalization_page.html b/chrome/browser/resources/settings/chromeos/personalization_page/personalization_page.html index 4e95594..59fb5dd9 100644 --- a/chrome/browser/resources/settings/chromeos/personalization_page/personalization_page.html +++ b/chrome/browser/resources/settings/chromeos/personalization_page/personalization_page.html
@@ -1,7 +1,7 @@ <link rel="import" href="chrome://resources/html/polymer.html"> <link rel="import" href="chrome://resources/cr_elements/cr_link_row/cr_link_row.html"> -<link rel="import" href="../../people_page/change_picture.html"> +<link rel="import" href="change_picture.html"> <link rel="import" href="../../route.html"> <link rel="import" href="../../settings_page/settings_animated_pages.html"> <link rel="import" href="../../settings_page/settings_subpage.html">
diff --git a/chrome/browser/resources/settings/os_settings_resources.grd b/chrome/browser/resources/settings/os_settings_resources.grd index 519f15f2..60ba615 100644 --- a/chrome/browser/resources/settings/os_settings_resources.grd +++ b/chrome/browser/resources/settings/os_settings_resources.grd
@@ -1061,17 +1061,17 @@ <structure name="IDR_OS_SETTINGS_TETHER_CONNECTION_DIALOG_JS" file="chromeos/internet_page/tether_connection_dialog.js" type="chrome_html" /> - <structure name="IDR_SETTINGS_PARENTAL_CONTROLS_BROWSER_PROXY_HTML" - file="parental_controls_page/parental_controls_browser_proxy.html" + <structure name="IDR_OS_SETTINGS_PARENTAL_CONTROLS_BROWSER_PROXY_HTML" + file="chromeos/parental_controls_page/parental_controls_browser_proxy.html" type="chrome_html" /> - <structure name="IDR_SETTINGS_PARENTAL_CONTROLS_BROWSER_PROXY_JS" - file="parental_controls_page/parental_controls_browser_proxy.js" + <structure name="IDR_OS_SETTINGS_PARENTAL_CONTROLS_BROWSER_PROXY_JS" + file="chromeos/parental_controls_page/parental_controls_browser_proxy.js" type="chrome_html" /> <structure name="IDR_OS_SETTINGS_PARENTAL_CONTROLS_PAGE_HTML" - file="parental_controls_page/parental_controls_page.html" + file="chromeos/parental_controls_page/parental_controls_page.html" type="chrome_html" /> <structure name="IDR_OS_SETTINGS_PARENTAL_CONTROLS_PAGE_JS" - file="parental_controls_page/parental_controls_page.js" + file="chromeos/parental_controls_page/parental_controls_page.js" type="chrome_html" /> <structure name="IDR_OS_SETTINGS_PEOPLE_PAGE_ACCOUNT_MANAGER_HTML" file="chromeos/os_people_page/account_manager.html" @@ -1085,18 +1085,18 @@ <structure name="IDR_OS_SETTINGS_PEOPLE_PAGE_ACCOUNT_MANAGER_BROWSER_PROXY_JS" file="people_page/account_manager_browser_proxy.js" type="chrome_html"/> - <structure name="IDR_OS_SETTINGS_PEOPLE_PAGE_CHANGE_PICTURE_HTML" - file="people_page/change_picture.html" + <structure name="IDR_OS_SETTINGS_PERSONALIZATION_PAGE_CHANGE_PICTURE_HTML" + file="chromeos/personalization_page/change_picture.html" type="chrome_html" preprocess="true" /> - <structure name="IDR_OS_SETTINGS_PEOPLE_PAGE_CHANGE_PICTURE_JS" - file="people_page/change_picture.js" + <structure name="IDR_OS_SETTINGS_PERSONALIZATION_PAGE_CHANGE_PICTURE_JS" + file="chromeos/personalization_page/change_picture.js" type="chrome_html" /> - <structure name="IDR_OS_SETTINGS_PEOPLE_CHANGE_PICTURE_BROWSER_PROXY_JS" - file="people_page/change_picture_browser_proxy.js" + <structure name="IDR_OS_SETTINGS_PERSONALIZATION_PAGE_CHANGE_PICTURE_BROWSER_PROXY_JS" + file="chromeos/personalization_page/change_picture_browser_proxy.js" type="chrome_html" /> - <structure name="IDR_OS_SETTINGS_PEOPLE_CHANGE_PICTURE_BROWSER_PROXY_HTML" - file="people_page/change_picture_browser_proxy.html" + <structure name="IDR_OS_SETTINGS_PERSONALIZATION_PAGE_CHANGE_PICTURE_BROWSER_PROXY_HTML" + file="chromeos/personalization_page/change_picture_browser_proxy.html" type="chrome_html" preprocess="true" /> <structure name="IDR_OS_SETTINGS_PEOPLE_PAGE_KERBEROS_ACCOUNTS_HTML"
diff --git a/chrome/browser/resources/settings/people_page/BUILD.gn b/chrome/browser/resources/settings/people_page/BUILD.gn index a394ab3..78ed0b375 100644 --- a/chrome/browser/resources/settings/people_page/BUILD.gn +++ b/chrome/browser/resources/settings/people_page/BUILD.gn
@@ -24,11 +24,7 @@ } if (is_chromeos) { - deps += [ - ":account_manager_browser_proxy", - ":change_picture", - ":change_picture_browser_proxy", - ] + deps += [ ":account_manager_browser_proxy" ] } } @@ -38,27 +34,6 @@ ] } -js_library("change_picture") { - deps = [ - ":change_picture_browser_proxy", - "..:route", - "//third_party/polymer/v1_0/components-chromium/iron-selector:iron-selector-extracted", - "//ui/webui/resources/cr_elements/chromeos/cr_picture:cr_picture_list", - "//ui/webui/resources/cr_elements/chromeos/cr_picture:cr_picture_pane", - "//ui/webui/resources/cr_elements/chromeos/cr_picture:cr_picture_types", - "//ui/webui/resources/js:i18n_behavior", - "//ui/webui/resources/js:load_time_data", - "//ui/webui/resources/js:util", - "//ui/webui/resources/js:web_ui_listener_behavior", - ] -} - -js_library("change_picture_browser_proxy") { - deps = [ - "//ui/webui/resources/js:cr", - ] -} - js_library("import_data_browser_proxy") { deps = [ "//ui/webui/resources/js:cr",
diff --git a/chrome/browser/resources/settings/people_page/people_page.html b/chrome/browser/resources/settings/people_page/people_page.html index 22d2e8da3..34f9223f 100644 --- a/chrome/browser/resources/settings/people_page/people_page.html +++ b/chrome/browser/resources/settings/people_page/people_page.html
@@ -28,9 +28,7 @@ <if expr="chromeos"> <link rel="import" href="account_manager_browser_proxy.html"> -<link rel="import" href="change_picture.html"> <link rel="import" href="chrome://resources/cr_elements/chromeos/cr_picture/cr_png_behavior.html"> -<link rel="import" href="../parental_controls_page/parental_controls_page.html"> </if> <if expr="not chromeos"> <link rel="import" href="chrome://resources/cr_elements/cr_toast/cr_toast.html"> @@ -218,13 +216,6 @@ </template> </if> -<if expr="chromeos"> - <template is="dom-if" if="[[showParentalControls_]]"> - <settings-parental-controls-page> - </settings-parental-controls-page> - </template> -</if> - <if expr="not chromeos"> <cr-link-row id="importDataDialogTrigger" label="$i18n{importTitle}" @@ -256,15 +247,6 @@ </settings-subpage> </template> -<if expr="chromeos"> - <template is="dom-if" route-path="/changePicture"> - <settings-subpage - associated-control="[[$$('#picture-subpage-trigger')]]" - page-title="$i18n{changePictureTitle}"> - <settings-change-picture></settings-change-picture> - </settings-subpage> - </template> -</if> <if expr="not chromeos"> <template is="dom-if" route-path="/manageProfile"> <settings-subpage
diff --git a/chrome/browser/resources/settings/people_page/people_page.js b/chrome/browser/resources/settings/people_page/people_page.js index 37189497..c923a03 100644 --- a/chrome/browser/resources/settings/people_page/people_page.js +++ b/chrome/browser/resources/settings/people_page/people_page.js
@@ -117,17 +117,6 @@ /** @private */ showSignoutDialog_: Boolean, - // <if expr="chromeos"> - /** @private */ - showParentalControls_: { - type: Boolean, - value: function() { - return loadTimeData.valueExists('showParentalControls') && - loadTimeData.getBoolean('showParentalControls'); - }, - }, - // </if> - /** @private {!Map<string, string>} */ focusConfig_: { type: Object, @@ -145,13 +134,6 @@ '#picture-subpage-trigger .subpage-arrow'); } // </if> - // <if expr="chromeos"> - if (settings.routes.CHANGE_PICTURE) { - map.set( - settings.routes.CHANGE_PICTURE.path, - '#picture-subpage-trigger .subpage-arrow'); - } - // </if> return map; }, },
diff --git a/chrome/browser/resources/settings/settings_resources.grd b/chrome/browser/resources/settings/settings_resources.grd index 152d81e0..14656a2 100644 --- a/chrome/browser/resources/settings/settings_resources.grd +++ b/chrome/browser/resources/settings/settings_resources.grd
@@ -1056,38 +1056,12 @@ file="site_settings/zoom_levels.js" type="chrome_html" /> <if expr="chromeos"> - <structure name="IDR_SETTINGS_PARENTAL_CONTROLS_BROWSER_PROXY_HTML" - file="parental_controls_page/parental_controls_browser_proxy.html" - type="chrome_html" /> - <structure name="IDR_SETTINGS_PARENTAL_CONTROLS_BROWSER_PROXY_JS" - file="parental_controls_page/parental_controls_browser_proxy.js" - type="chrome_html" /> - <structure name="IDR_SETTINGS_PARENTAL_CONTROLS_HTML" - file="parental_controls_page/parental_controls_page.html" - type="chrome_html" /> - <structure name="IDR_SETTINGS_PARENTAL_CONTROLS_PAGE_JS" - file="parental_controls_page/parental_controls_page.js" - type="chrome_html" /> <structure name="IDR_SETTINGS_PEOPLE_PAGE_ACCOUNT_MANAGER_BROWSER_PROXY_HTML" file="people_page/account_manager_browser_proxy.html" type="chrome_html"/> <structure name="IDR_SETTINGS_PEOPLE_PAGE_ACCOUNT_MANAGER_BROWSER_PROXY_JS" file="people_page/account_manager_browser_proxy.js" type="chrome_html"/> - <structure name="IDR_SETTINGS_PEOPLE_PAGE_CHANGE_PICTURE_HTML" - file="people_page/change_picture.html" - type="chrome_html" - preprocess="true" /> - <structure name="IDR_SETTINGS_PEOPLE_PAGE_CHANGE_PICTURE_JS" - file="people_page/change_picture.js" - type="chrome_html" /> - <structure name="IDR_SETTINGS_PEOPLE_CHANGE_PICTURE_BROWSER_PROXY_JS" - file="people_page/change_picture_browser_proxy.js" - type="chrome_html" /> - <structure name="IDR_SETTINGS_PEOPLE_CHANGE_PICTURE_BROWSER_PROXY_HTML" - file="people_page/change_picture_browser_proxy.html" - type="chrome_html" - preprocess="true" /> </if> </structures> </release>
diff --git a/chrome/browser/safe_browsing/safe_browsing_blocking_page_test.cc b/chrome/browser/safe_browsing/safe_browsing_blocking_page_test.cc index a85d4aa..7b5e874 100644 --- a/chrome/browser/safe_browsing/safe_browsing_blocking_page_test.cc +++ b/chrome/browser/safe_browsing/safe_browsing_blocking_page_test.cc
@@ -1882,6 +1882,10 @@ IN_PROC_BROWSER_TEST_P(SafeBrowsingBlockingPageIDNTest, SafeBrowsingBlockingPageDecodesIDN) { + // TODO(crbug.com/1039367): VerifyIDNDecoded does not work with committed + // interstitials, this test should be re-enabled once it is adapted. + if (AreCommittedInterstitialsEnabled()) + return; EXPECT_TRUE(VerifyIDNDecoded()); }
diff --git a/chrome/browser/themes/theme_properties.cc b/chrome/browser/themes/theme_properties.cc index 4aaea7b..66f456ec 100644 --- a/chrome/browser/themes/theme_properties.cc +++ b/chrome/browser/themes/theme_properties.cc
@@ -109,10 +109,6 @@ return SK_ColorWHITE; case ThemeProperties::COLOR_FEATURE_PROMO_BUBBLE_BACKGROUND: return gfx::kGoogleBlue700; - case ThemeProperties::COLOR_OMNIBOX_TEXT: - return gfx::kGoogleGrey900; - case ThemeProperties::COLOR_OMNIBOX_BACKGROUND: - return gfx::kGoogleGrey100; case ThemeProperties::COLOR_FRAME_INCOGNITO: case ThemeProperties::COLOR_FRAME_INCOGNITO_INACTIVE: @@ -172,10 +168,6 @@ return SkColorSetRGB(0x28, 0x28, 0x28); case ThemeProperties::COLOR_NTP_LINK: return gfx::kGoogleBlue300; - case ThemeProperties::COLOR_OMNIBOX_TEXT: - return SK_ColorWHITE; - case ThemeProperties::COLOR_OMNIBOX_BACKGROUND: - return gfx::kGoogleGrey900; default: return base::nullopt; }
diff --git a/chrome/browser/themes/theme_service.cc b/chrome/browser/themes/theme_service.cc index 92bc764..a8f71ec 100644 --- a/chrome/browser/themes/theme_service.cc +++ b/chrome/browser/themes/theme_service.cc
@@ -605,6 +605,23 @@ // For backward compat with older themes, some newer colors are generated from // older ones if they are missing. switch (id) { + case TP::COLOR_OMNIBOX_BACKGROUND: { + constexpr float kMinOmniboxToolbarContrast = 1.3f; + const SkColor toolbar_color = GetColor(TP::COLOR_TOOLBAR, incognito); + const SkColor darkest_color = color_utils::GetDarkestColor(); + const SkColor blend_target = + (color_utils::GetContrastRatio(toolbar_color, darkest_color) >= + kMinOmniboxToolbarContrast) + ? darkest_color + : color_utils::GetColorWithMaxContrast(darkest_color); + return color_utils::BlendForMinContrast(toolbar_color, toolbar_color, + blend_target, + kMinOmniboxToolbarContrast) + .color; + } + case TP::COLOR_OMNIBOX_TEXT: + return color_utils::GetColorWithMaxContrast( + GetColor(TP::COLOR_OMNIBOX_BACKGROUND, incognito)); case TP::COLOR_TOOLBAR_BUTTON_ICON: return color_utils::HSLShift(gfx::kChromeIconGrey, GetTint(TP::TINT_BUTTONS, incognito)); @@ -1147,6 +1164,11 @@ OmniboxColor bg = get_resulting_paint_color( get_base_color(TP::COLOR_OMNIBOX_BACKGROUND), {GetColor(TP::COLOR_TOOLBAR, incognito, nullptr), false}); + // Returning early here avoids an infinite loop in computing |fg|, caused by + // the default color for COLOR_OMNIBOX_TEXT being based on + // COLOR_OMNIBOX_BACKGROUND. + if (id == TP::COLOR_OMNIBOX_BACKGROUND) + return bg; OmniboxColor fg = get_resulting_paint_color(get_base_color(TP::COLOR_OMNIBOX_TEXT), bg); @@ -1235,8 +1257,6 @@ case TP::COLOR_OMNIBOX_TEXT: case TP::COLOR_OMNIBOX_RESULTS_TEXT_SELECTED: return fg; - case TP::COLOR_OMNIBOX_BACKGROUND: - return bg; case TP::COLOR_OMNIBOX_BACKGROUND_HOVERED: return bg_hovered_color(); case TP::COLOR_OMNIBOX_RESULTS_BG:
diff --git a/chrome/browser/ui/color/chrome_color_mixers.cc b/chrome/browser/ui/color/chrome_color_mixers.cc index dd41a85f1..4ac91d26 100644 --- a/chrome/browser/ui/color/chrome_color_mixers.cc +++ b/chrome/browser/ui/color/chrome_color_mixers.cc
@@ -4,18 +4,39 @@ #include "chrome/browser/ui/color/chrome_color_mixers.h" +#include "base/bind.h" #include "chrome/browser/ui/color/chrome_color_id.h" #include "ui/color/color_id.h" #include "ui/color/color_mixer.h" #include "ui/color/color_provider.h" #include "ui/color/color_recipe.h" +namespace { + +constexpr float kMinOmniboxToolbarContrast = 1.3f; + +ui::ColorTransform ChooseOmniboxBgBlendTarget() { + return base::BindRepeating( + [](SkColor input_color, const ui::ColorMixer& mixer) { + const SkColor toolbar_color = mixer.GetResultColor(kColorToolbar); + const SkColor darkest_color = color_utils::GetDarkestColor(); + return (color_utils::GetContrastRatio(toolbar_color, darkest_color) >= + kMinOmniboxToolbarContrast) + ? darkest_color + : color_utils::GetColorWithMaxContrast(darkest_color); + }); +} + +} // namespace + void AddChromeColorMixers(ui::ColorProvider* provider) { ui::ColorMixer& mixer = provider->AddMixer(); mixer[kColorOmniboxBackground] = ui::BlendForMinContrast( - ui::kColorTextfieldBackground, kColorToolbar, base::nullopt, 1.11f); - mixer[kColorOmniboxText] = {ui::kColorTextfieldForeground}; + kColorToolbar, kColorToolbar, ChooseOmniboxBgBlendTarget(), + kMinOmniboxToolbarContrast); + mixer[kColorOmniboxText] = + ui::GetColorWithMaxContrast(kColorOmniboxBackground); // TODO(tluk) Behavior change for dark mode to a darker toolbar color for // better color semantics. Follow up with UX team before landing change. mixer[kColorToolbar] = {ui::kColorPrimaryBackground};
diff --git a/chrome/browser/ui/views/autofill/payments/save_card_bubble_views_browsertest.cc b/chrome/browser/ui/views/autofill/payments/save_card_bubble_views_browsertest.cc index ee9c48de..ef29e53 100644 --- a/chrome/browser/ui/views/autofill/payments/save_card_bubble_views_browsertest.cc +++ b/chrome/browser/ui/views/autofill/payments/save_card_bubble_views_browsertest.cc
@@ -63,7 +63,6 @@ #include "components/sync/test/fake_server/fake_server_network_resources.h" #include "content/public/browser/render_process_host.h" #include "content/public/browser/web_contents_observer.h" -#include "content/public/test/back_forward_cache_util.h" #include "content/public/test/browser_test_utils.h" #include "content/public/test/test_navigation_observer.h" #include "net/test/embedded_test_server/embedded_test_server.h" @@ -190,8 +189,6 @@ browser()->profile(), username, "password", ProfileSyncServiceHarness::SigninType::FAKE_SIGNIN); - content::BackForwardCacheDisabledTester back_forward_cache_disabled_tester; - // Set up the URL loader factory for the payments client so we can intercept // those network requests too. test_shared_loader_factory_ = @@ -204,11 +201,6 @@ ->GetPaymentsClient() ->set_url_loader_factory_for_testing(test_shared_loader_factory_); - EXPECT_TRUE(back_forward_cache_disabled_tester.IsDisabledForFrameWithReason( - GetActiveWebContents()->GetMainFrame()->GetProcess()->GetID(), - GetActiveWebContents()->GetMainFrame()->GetRoutingID(), - "autofill::ContentAutofillDriver")); - // Set up this class as the ObserverForTest implementation. credit_card_save_manager_ = ContentAutofillDriver::GetForRenderFrameHost( GetActiveWebContents()->GetMainFrame())
diff --git a/chrome/browser/ui/views/bookmarks/bookmark_bubble_view.cc b/chrome/browser/ui/views/bookmarks/bookmark_bubble_view.cc index 36bd9c4..8de6874 100644 --- a/chrome/browser/ui/views/bookmarks/bookmark_bubble_view.cc +++ b/chrome/browser/ui/views/bookmarks/bookmark_bubble_view.cc
@@ -197,8 +197,8 @@ void BookmarkBubbleView::Init() { SetLayoutManager(std::make_unique<views::FillLayout>()); - bookmark_contents_view_ = new views::View(); - views::GridLayout* layout = bookmark_contents_view_->SetLayoutManager( + auto bookmark_contents_view = std::make_unique<views::View>(); + views::GridLayout* layout = bookmark_contents_view->SetLayoutManager( std::make_unique<views::GridLayout>()); constexpr int kColumnId = 0; @@ -221,7 +221,7 @@ parent_combobox_->SetAccessibleName( l10n_util::GetStringUTF16(IDS_BOOKMARK_AX_BUBBLE_FOLDER_LABEL)); - AddChildView(bookmark_contents_view_); + bookmark_contents_view_ = AddChildView(std::move(bookmark_contents_view)); } // Private methods -------------------------------------------------------------
diff --git a/chrome/browser/ui/views/hung_renderer_view.cc b/chrome/browser/ui/views/hung_renderer_view.cc index aca4798..def137d 100644 --- a/chrome/browser/ui/views/hung_renderer_view.cc +++ b/chrome/browser/ui/views/hung_renderer_view.cc
@@ -268,8 +268,7 @@ return platform_util::IsWindowActive(window); } -HungRendererDialogView::HungRendererDialogView() - : info_label_(nullptr), hung_pages_table_(nullptr), initialized_(false) { +HungRendererDialogView::HungRendererDialogView() { #if defined(OS_WIN) // Never use the custom frame when Aero Glass is disabled. See // https://crbug.com/323278 @@ -277,6 +276,48 @@ #endif set_margins(ChromeLayoutProvider::Get()->GetDialogInsetsForContentType( views::TEXT, views::CONTROL)); + auto info_label = std::make_unique<views::Label>( + base::string16(), CONTEXT_BODY_TEXT_LARGE, views::style::STYLE_SECONDARY); + info_label->SetMultiLine(true); + info_label->SetHorizontalAlignment(gfx::ALIGN_LEFT); + + hung_pages_table_model_ = std::make_unique<HungPagesTableModel>(this); + const std::vector<ui::TableColumn> columns = {ui::TableColumn()}; + auto hung_pages_table = std::make_unique<views::TableView>( + hung_pages_table_model_.get(), columns, views::ICON_AND_TEXT, true); + hung_pages_table_ = hung_pages_table.get(); + + DialogDelegate::set_button_label( + ui::DIALOG_BUTTON_CANCEL, + l10n_util::GetPluralStringFUTF16(IDS_BROWSER_HANGMONITOR_RENDERER_END, + hung_pages_table_model_->RowCount())); + DialogDelegate::set_button_label( + ui::DIALOG_BUTTON_OK, + l10n_util::GetStringUTF16(IDS_BROWSER_HANGMONITOR_RENDERER_WAIT)); + DialogModelChanged(); + + views::GridLayout* layout = + SetLayoutManager(std::make_unique<views::GridLayout>()); + ChromeLayoutProvider* provider = ChromeLayoutProvider::Get(); + + constexpr int kColumnSetId = 0; + views::ColumnSet* column_set = layout->AddColumnSet(kColumnSetId); + column_set->AddColumn(views::GridLayout::FILL, views::GridLayout::FILL, 1.0, + views::GridLayout::USE_PREF, 0, 0); + + layout->StartRow(views::GridLayout::kFixedSize, kColumnSetId); + info_label_ = layout->AddView(std::move(info_label)); + + layout->AddPaddingRow( + views::GridLayout::kFixedSize, + provider->GetDistanceMetric(views::DISTANCE_UNRELATED_CONTROL_VERTICAL)); + + layout->StartRow(1.0, kColumnSetId); + layout->AddView( + views::TableView::CreateScrollViewWithTable(std::move(hung_pages_table)), + 1, 1, views::GridLayout::FILL, views::GridLayout::FILL, kTableViewWidth, + kTableViewHeight); + chrome::RecordDialogCreation(chrome::DialogIdentifier::HUNG_RENDERER); } @@ -352,9 +393,6 @@ // HungRendererDialogView, views::DialogDelegate implementation: base::string16 HungRendererDialogView::GetWindowTitle() const { - if (!initialized_) - return base::string16(); - return l10n_util::GetPluralStringFUTF16( IDS_BROWSER_HANGMONITOR_RENDERER_TITLE, hung_pages_table_model_->RowCount()); @@ -415,63 +453,9 @@ /////////////////////////////////////////////////////////////////////////////// // HungRendererDialogView, views::View overrides: -void HungRendererDialogView::ViewHierarchyChanged( - const views::ViewHierarchyChangedDetails& details) { - views::DialogDelegateView::ViewHierarchyChanged(details); - if (!initialized_ && details.is_add && details.child == this && GetWidget()) - Init(); -} - /////////////////////////////////////////////////////////////////////////////// // HungRendererDialogView, private: -void HungRendererDialogView::Init() { - auto info_label = std::make_unique<views::Label>( - base::string16(), CONTEXT_BODY_TEXT_LARGE, views::style::STYLE_SECONDARY); - info_label->SetMultiLine(true); - info_label->SetHorizontalAlignment(gfx::ALIGN_LEFT); - - hung_pages_table_model_ = std::make_unique<HungPagesTableModel>(this); - std::vector<ui::TableColumn> columns; - columns.push_back(ui::TableColumn()); - auto hung_pages_table = std::make_unique<views::TableView>( - hung_pages_table_model_.get(), columns, views::ICON_AND_TEXT, true); - hung_pages_table_ = hung_pages_table.get(); - - DialogDelegate::set_button_label( - ui::DIALOG_BUTTON_CANCEL, - l10n_util::GetPluralStringFUTF16(IDS_BROWSER_HANGMONITOR_RENDERER_END, - hung_pages_table_model_->RowCount())); - DialogDelegate::set_button_label( - ui::DIALOG_BUTTON_OK, - l10n_util::GetStringUTF16(IDS_BROWSER_HANGMONITOR_RENDERER_WAIT)); - DialogModelChanged(); - - views::GridLayout* layout = - SetLayoutManager(std::make_unique<views::GridLayout>()); - ChromeLayoutProvider* provider = ChromeLayoutProvider::Get(); - - constexpr int kColumnSetId = 0; - views::ColumnSet* column_set = layout->AddColumnSet(kColumnSetId); - column_set->AddColumn(views::GridLayout::FILL, views::GridLayout::FILL, 1.0, - views::GridLayout::USE_PREF, 0, 0); - - layout->StartRow(views::GridLayout::kFixedSize, kColumnSetId); - info_label_ = layout->AddView(std::move(info_label)); - - layout->AddPaddingRow( - views::GridLayout::kFixedSize, - provider->GetDistanceMetric(views::DISTANCE_UNRELATED_CONTROL_VERTICAL)); - - layout->StartRow(1.0, kColumnSetId); - layout->AddView( - views::TableView::CreateScrollViewWithTable(std::move(hung_pages_table)), - 1, 1, views::GridLayout::FILL, views::GridLayout::FILL, kTableViewWidth, - kTableViewHeight); - - initialized_ = true; -} - void HungRendererDialogView::RestartHangTimer() { // Start waiting again for responsiveness. hung_pages_table_model_->RestartHangMonitorTimeout();
diff --git a/chrome/browser/ui/views/hung_renderer_view.h b/chrome/browser/ui/views/hung_renderer_view.h index 29a7e34..8a6462b0c 100644 --- a/chrome/browser/ui/views/hung_renderer_view.h +++ b/chrome/browser/ui/views/hung_renderer_view.h
@@ -178,18 +178,11 @@ HungRendererDialogView(); ~HungRendererDialogView() override; - // views::View overrides: - void ViewHierarchyChanged( - const views::ViewHierarchyChangedDetails& details) override; - static HungRendererDialogView* g_instance_; private: friend class HungRendererDialogViewBrowserTest; - // Initialize the controls in this dialog. - void Init(); - // Restart the hang timer, giving the page more time. void RestartHangTimer(); @@ -207,9 +200,6 @@ // pages affected by the hang. std::unique_ptr<HungPagesTableModel> hung_pages_table_model_; - // Whether or not we've created controls for ourself. - bool initialized_; - DISALLOW_COPY_AND_ASSIGN(HungRendererDialogView); };
diff --git a/chrome/browser/ui/views/omnibox/omnibox_popup_contents_view.cc b/chrome/browser/ui/views/omnibox/omnibox_popup_contents_view.cc index 0bc6ffa..cbda625 100644 --- a/chrome/browser/ui/views/omnibox/omnibox_popup_contents_view.cc +++ b/chrome/browser/ui/views/omnibox/omnibox_popup_contents_view.cc
@@ -135,10 +135,12 @@ OmniboxPopupContentsView::OmniboxPopupContentsView( OmniboxViewViews* omnibox_view, OmniboxEditModel* edit_model, - LocationBarView* location_bar_view) + LocationBarView* location_bar_view, + const ui::ThemeProvider* theme_provider) : model_(new OmniboxPopupModel(this, edit_model)), omnibox_view_(omnibox_view), - location_bar_view_(location_bar_view) { + location_bar_view_(location_bar_view), + theme_provider_(theme_provider) { // The contents is owned by the LocationBarView. set_owned_by_client(); @@ -243,7 +245,8 @@ // expensive to create due to loading font data, this saves time and memory // during browser startup. if (children().size() == i) { - AddChildView(std::make_unique<OmniboxResultView>(this, i)); + AddChildView( + std::make_unique<OmniboxResultView>(this, i, theme_provider_)); } OmniboxResultView* view = result_view_at(i);
diff --git a/chrome/browser/ui/views/omnibox/omnibox_popup_contents_view.h b/chrome/browser/ui/views/omnibox/omnibox_popup_contents_view.h index 8f59663..29c4ebc7 100644 --- a/chrome/browser/ui/views/omnibox/omnibox_popup_contents_view.h +++ b/chrome/browser/ui/views/omnibox/omnibox_popup_contents_view.h
@@ -30,7 +30,8 @@ public: OmniboxPopupContentsView(OmniboxViewViews* omnibox_view, OmniboxEditModel* edit_model, - LocationBarView* location_bar_view); + LocationBarView* location_bar_view, + const ui::ThemeProvider* theme_provider); ~OmniboxPopupContentsView() override; OmniboxPopupModel* model() const { return model_.get(); } @@ -124,6 +125,8 @@ LocationBarView* location_bar_view_; + const ui::ThemeProvider* theme_provider_; + DISALLOW_COPY_AND_ASSIGN(OmniboxPopupContentsView); };
diff --git a/chrome/browser/ui/views/omnibox/omnibox_result_view.cc b/chrome/browser/ui/views/omnibox/omnibox_result_view.cc index 77c8a50..4215333 100644 --- a/chrome/browser/ui/views/omnibox/omnibox_result_view.cc +++ b/chrome/browser/ui/views/omnibox/omnibox_result_view.cc
@@ -48,10 +48,12 @@ OmniboxResultView::OmniboxResultView( OmniboxPopupContentsView* popup_contents_view, - size_t model_index) + size_t model_index, + const ui::ThemeProvider* theme_provider) : AnimationDelegateViews(this), popup_contents_view_(popup_contents_view), model_index_(model_index), + theme_provider_(theme_provider), animation_(new gfx::SlideAnimation(this)) { CHECK_GE(model_index, 0u); @@ -62,7 +64,7 @@ popup_contents_view_, this, l10n_util::GetStringUTF16(IDS_OMNIBOX_TAB_SUGGEST_HINT), l10n_util::GetStringUTF16(IDS_OMNIBOX_TAB_SUGGEST_SHORT_HINT), - omnibox::kSwitchIcon)); + omnibox::kSwitchIcon, theme_provider_)); // This is intentionally not in the tab order by default, but should be if the // user has full-acessibility mode on. This is because this is a tertiary @@ -72,6 +74,11 @@ remove_suggestion_button_ = AddChildView(views::CreateVectorImageButton(this)); views::InstallCircleHighlightPathGenerator(remove_suggestion_button_); + // TODO(tommycli): We may need to update the color for theme changes. + int icon_size = GetLayoutConstant(LOCATION_BAR_ICON_SIZE); + views::SetImageFromVectorIcon(remove_suggestion_button_, + vector_icons::kCloseRoundedIcon, icon_size, + GetColor(OmniboxPart::RESULTS_ICON)); remove_suggestion_button_->SetTooltipText( l10n_util::GetStringUTF16(IDS_OMNIBOX_REMOVE_SUGGESTION)); remove_suggestion_focus_ring_ = @@ -83,6 +90,9 @@ keyword_view_ = AddChildView(std::make_unique<OmniboxMatchCellView>(this)); keyword_view_->icon()->EnableCanvasFlippingForRTLUI(true); + keyword_view_->icon()->SetImage( + gfx::CreateVectorIcon(omnibox::kKeywordSearchIcon, icon_size, + GetColor(OmniboxPart::RESULTS_ICON))); keyword_view_->icon()->SizeToPreferredSize(); // Calling SetMatch() will result in the child OmniboxMatchCellViews @@ -95,7 +105,7 @@ OmniboxResultView::~OmniboxResultView() {} SkColor OmniboxResultView::GetColor(OmniboxPart part) const { - return GetOmniboxColor(GetThemeProvider(), part, GetThemeState()); + return GetOmniboxColor(theme_provider_, part, GetThemeState()); } void OmniboxResultView::SetMatch(const AutocompleteMatch& match) { @@ -129,12 +139,8 @@ keyword_match->description_class); } - // There is no need to invalidate the views hierarchy in the absence of a - // widget. - if (GetWidget()) { - Invalidate(); - InvalidateLayout(); - } + Invalidate(); + InvalidateLayout(); } void OmniboxResultView::ShowKeyword(bool show_keyword) { @@ -480,10 +486,6 @@ } void OmniboxResultView::OnThemeChanged() { - views::SetImageFromVectorIcon(remove_suggestion_button_, - vector_icons::kCloseRoundedIcon, - GetLayoutConstant(LOCATION_BAR_ICON_SIZE), - GetColor(OmniboxPart::RESULTS_ICON)); Invalidate(true); }
diff --git a/chrome/browser/ui/views/omnibox/omnibox_result_view.h b/chrome/browser/ui/views/omnibox/omnibox_result_view.h index ffa1002..9edb1b54 100644 --- a/chrome/browser/ui/views/omnibox/omnibox_result_view.h +++ b/chrome/browser/ui/views/omnibox/omnibox_result_view.h
@@ -39,12 +39,17 @@ class FocusRing; } // namespace views +namespace ui { +class ThemeProvider; +} + class OmniboxResultView : public views::View, public views::AnimationDelegateViews, public views::ButtonListener { public: OmniboxResultView(OmniboxPopupContentsView* popup_contents_view, - size_t model_index); + size_t model_index, + const ui::ThemeProvider* theme_provider); ~OmniboxResultView() override; // Helper to get the color for |part| using the current state. @@ -146,6 +151,9 @@ // This result's model index. size_t model_index_; + // The theme provider associated with this view. + const ui::ThemeProvider* theme_provider_; + // The data this class is built to display (the "Omnibox Result"). AutocompleteMatch match_;
diff --git a/chrome/browser/ui/views/omnibox/omnibox_result_view_unittest.cc b/chrome/browser/ui/views/omnibox/omnibox_result_view_unittest.cc index 7d86dbb..7222b3b 100644 --- a/chrome/browser/ui/views/omnibox/omnibox_result_view_unittest.cc +++ b/chrome/browser/ui/views/omnibox/omnibox_result_view_unittest.cc
@@ -30,11 +30,13 @@ class TestOmniboxPopupContentsView : public OmniboxPopupContentsView { public: - explicit TestOmniboxPopupContentsView(OmniboxEditModel* edit_model) + explicit TestOmniboxPopupContentsView(OmniboxEditModel* edit_model, + const ui::ThemeProvider* theme_provider) : OmniboxPopupContentsView( /*omnibox_view=*/nullptr, edit_model, - /*location_bar_view=*/nullptr), + /*location_bar_view=*/nullptr, + theme_provider), selected_index_(0) {} void SetSelectedLine(size_t index) override { selected_index_ = index; } @@ -64,12 +66,13 @@ views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET; widget_->Init(std::move(init_params)); + const ui::ThemeProvider* theme_provider = widget_->GetThemeProvider(); edit_model_ = std::make_unique<OmniboxEditModel>( nullptr, nullptr, std::make_unique<TestOmniboxClient>()); - popup_view_ = - std::make_unique<TestOmniboxPopupContentsView>(edit_model_.get()); - result_view_ = - new OmniboxResultView(popup_view_.get(), kTestResultViewIndex); + popup_view_ = std::make_unique<TestOmniboxPopupContentsView>( + edit_model_.get(), theme_provider); + result_view_ = new OmniboxResultView(popup_view_.get(), + kTestResultViewIndex, theme_provider); views::View* root_view = widget_->GetRootView(); root_view->SetBoundsRect(gfx::Rect(0, 0, 500, 500));
diff --git a/chrome/browser/ui/views/omnibox/omnibox_tab_switch_button.cc b/chrome/browser/ui/views/omnibox/omnibox_tab_switch_button.cc index 982b4bc..4826b06 100644 --- a/chrome/browser/ui/views/omnibox/omnibox_tab_switch_button.cc +++ b/chrome/browser/ui/views/omnibox/omnibox_tab_switch_button.cc
@@ -33,13 +33,16 @@ OmniboxResultView* result_view, const base::string16& hint, const base::string16& hint_short, - const gfx::VectorIcon& icon) + const gfx::VectorIcon& icon, + const ui::ThemeProvider* theme_provider) : MdTextButton(result_view, views::style::CONTEXT_BUTTON_MD), popup_contents_view_(popup_contents_view), result_view_(result_view), hint_(hint), - hint_short_(hint_short) { + hint_short_(hint_short), + theme_provider_(theme_provider) { views::InstallPillHighlightPathGenerator(this); + SetBgColorOverride(GetBackgroundColor()); SetImage(STATE_NORMAL, gfx::CreateVectorIcon( icon, GetLayoutConstant(LOCATION_BAR_ICON_SIZE), gfx::kChromeIconGrey)); @@ -96,10 +99,6 @@ SetBgColorOverride(GetBackgroundColor()); } -void OmniboxTabSwitchButton::OnThemeChanged() { - SetBgColorOverride(GetBackgroundColor()); -} - void OmniboxTabSwitchButton::ProvideWidthHint(int parent_width) { base::string16 text; int preferred_width = CalculateGoalWidth(parent_width, &text); @@ -126,14 +125,14 @@ } SkColor OmniboxTabSwitchButton::GetBackgroundColor() const { - return GetOmniboxColor(GetThemeProvider(), OmniboxPart::RESULTS_BACKGROUND, + return GetOmniboxColor(theme_provider_, OmniboxPart::RESULTS_BACKGROUND, state() == STATE_HOVERED ? OmniboxPartState::HOVERED : OmniboxPartState::NORMAL); } void OmniboxTabSwitchButton::SetPressed() { SetBgColorOverride(color_utils::AlphaBlend( - GetOmniboxColor(GetThemeProvider(), OmniboxPart::RESULTS_BACKGROUND, + GetOmniboxColor(theme_provider_, OmniboxPart::RESULTS_BACKGROUND, OmniboxPartState::SELECTED), SK_ColorBLACK, 0.8f)); }
diff --git a/chrome/browser/ui/views/omnibox/omnibox_tab_switch_button.h b/chrome/browser/ui/views/omnibox/omnibox_tab_switch_button.h index 6e9d420..7afcbefd 100644 --- a/chrome/browser/ui/views/omnibox/omnibox_tab_switch_button.h +++ b/chrome/browser/ui/views/omnibox/omnibox_tab_switch_button.h
@@ -16,16 +16,14 @@ OmniboxResultView* result_view, const base::string16& hint, const base::string16& hint_short, - const gfx::VectorIcon& icon); + const gfx::VectorIcon& icon, + const ui::ThemeProvider* theme_provider); ~OmniboxTabSwitchButton() override; // views::MdTextButton: void StateChanged(ButtonState old_state) override; - // views::View: - void OnThemeChanged() override; - // Called by parent views to change background on external (not mouse related) // event (tab key). void UpdateBackground(); @@ -71,6 +69,8 @@ base::string16 hint_; base::string16 hint_short_; + const ui::ThemeProvider* theme_provider_; + DISALLOW_COPY_AND_ASSIGN(OmniboxTabSwitchButton); };
diff --git a/chrome/browser/ui/views/omnibox/omnibox_text_view.cc b/chrome/browser/ui/views/omnibox/omnibox_text_view.cc index ece64f46..8bae7fb 100644 --- a/chrome/browser/ui/views/omnibox/omnibox_text_view.cc +++ b/chrome/browser/ui/views/omnibox/omnibox_text_view.cc
@@ -260,10 +260,7 @@ ACMatchClassification::DIM) { part = OmniboxPart::RESULTS_TEXT_DIMMED; } - - // In the absence of a widget there is no need to update the text color. - if (GetWidget()) - render_text_->ApplyColor(result_view_->GetColor(part), current_range); + render_text_->ApplyColor(result_view_->GetColor(part), current_range); } OnStyleChanged();
diff --git a/chrome/browser/ui/views/omnibox/omnibox_view_views.cc b/chrome/browser/ui/views/omnibox/omnibox_view_views.cc index c8cd918..2ce7149 100644 --- a/chrome/browser/ui/views/omnibox/omnibox_view_views.cc +++ b/chrome/browser/ui/views/omnibox/omnibox_view_views.cc
@@ -232,7 +232,9 @@ if (location_bar_view_) { // Initialize the popup view using the same font. popup_view_.reset( - new OmniboxPopupContentsView(this, model(), location_bar_view_)); + new OmniboxPopupContentsView(this, model(), location_bar_view_, + &ThemeService::GetThemeProviderForProfile( + location_bar_view_->profile()))); } // Override the default FocusableBorder from Textfield, since the
diff --git a/chrome/browser/ui/views/theme_copying_widget.cc b/chrome/browser/ui/views/theme_copying_widget.cc index b5a8044..a9e2d19 100644 --- a/chrome/browser/ui/views/theme_copying_widget.cc +++ b/chrome/browser/ui/views/theme_copying_widget.cc
@@ -12,7 +12,3 @@ const ui::NativeTheme* ThemeCopyingWidget::GetNativeTheme() const { return role_model_->GetNativeTheme(); } - -const ui::ThemeProvider* ThemeCopyingWidget::GetThemeProvider() const { - return role_model_->GetThemeProvider(); -}
diff --git a/chrome/browser/ui/views/theme_copying_widget.h b/chrome/browser/ui/views/theme_copying_widget.h index 2e9aebf3..a868e362 100644 --- a/chrome/browser/ui/views/theme_copying_widget.h +++ b/chrome/browser/ui/views/theme_copying_widget.h
@@ -7,8 +7,8 @@ #include "ui/views/widget/widget.h" -// This widget uses a reference widget to provide its NativeTheme and -// ThemeProvider. The reference widget is assumed to outlive |this|. +// This widget uses a reference widget to provide its NativeTheme. The +// reference widget is assumed to outlive |this|. class ThemeCopyingWidget : public views::Widget { public: explicit ThemeCopyingWidget(views::Widget* role_model); @@ -16,7 +16,6 @@ // views::Widget const ui::NativeTheme* GetNativeTheme() const override; - const ui::ThemeProvider* GetThemeProvider() const override; private: // The widget we'll copy our theme from.
diff --git a/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc b/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc index 79cac9ab..fa641896 100644 --- a/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc +++ b/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc
@@ -685,8 +685,7 @@ } #endif #if BUILDFLAG(ENABLE_SERVICE_DISCOVERY) - if (url.host_piece() == chrome::kChromeUIDevicesHost && - profile->GetPrefs()->GetBoolean(prefs::kLocalDiscoveryEnabled)) { + if (url.host_piece() == chrome::kChromeUIDevicesHost) { return &NewWebUI<LocalDiscoveryUI>; } #endif
diff --git a/chrome/browser/ui/webui/local_discovery/local_discovery_ui_handler.cc b/chrome/browser/ui/webui/local_discovery/local_discovery_ui_handler.cc index 1a90506..2197f9a 100644 --- a/chrome/browser/ui/webui/local_discovery/local_discovery_ui_handler.cc +++ b/chrome/browser/ui/webui/local_discovery/local_discovery_ui_handler.cc
@@ -211,6 +211,11 @@ void LocalDiscoveryUIHandler::HandleRegisterDevice( const base::ListValue* args) { + if (IsUserProfileRestricted()) { + OnSetupError(); + return; + } + std::string device; bool rv = args->GetString(0, &device); DCHECK(rv); @@ -221,15 +226,16 @@ return; } - if (it->second.version < kCloudDevicesPrivetVersion) { - privet_resolution_ = privet_http_factory_->CreatePrivetHTTP(device); - privet_resolution_->Start( - it->second.address, - base::Bind(&LocalDiscoveryUIHandler::StartRegisterHTTP, - base::Unretained(this))); - } else { + if (it->second.version >= kCloudDevicesPrivetVersion) { OnSetupError(); + return; } + + privet_resolution_ = privet_http_factory_->CreatePrivetHTTP(device); + privet_resolution_->Start( + it->second.address, + base::Bind(&LocalDiscoveryUIHandler::StartRegisterHTTP, + base::Unretained(this))); } void LocalDiscoveryUIHandler::HandleCancelRegistration( @@ -255,6 +261,11 @@ void LocalDiscoveryUIHandler::HandleOpenCloudPrintURL( const base::ListValue* args) { + // Opening of the Cloud Print URL should be disabled if the profile is + // restricted. + if (IsUserProfileRestricted()) + return; + std::string id; bool rv = args->GetString(0, &id); DCHECK(rv); @@ -481,9 +492,9 @@ void LocalDiscoveryUIHandler::CheckUserLoggedIn() { base::Value logged_in_value(!GetSyncAccount().empty()); - base::Value is_supervised_value(IsUserSupervisedOrOffTheRecord()); + base::Value is_restricted_value(IsUserProfileRestricted()); web_ui()->CallJavascriptFunctionUnsafe("local_discovery.setUserLoggedIn", - logged_in_value, is_supervised_value); + logged_in_value, is_restricted_value); } void LocalDiscoveryUIHandler::CheckListingDone() { @@ -528,9 +539,10 @@ return GCDApiFlow::Create(url_loader_factory, identity_manager); } -bool LocalDiscoveryUIHandler::IsUserSupervisedOrOffTheRecord() { +bool LocalDiscoveryUIHandler::IsUserProfileRestricted() { Profile* profile = Profile::FromWebUI(web_ui()); - return profile->IsSupervised() || profile->IsOffTheRecord(); + return profile->IsSupervised() || profile->IsOffTheRecord() || + !profile->GetPrefs()->GetBoolean(prefs::kLocalDiscoveryEnabled); } #if defined(CLOUD_PRINT_CONNECTOR_UI_AVAILABLE)
diff --git a/chrome/browser/ui/webui/local_discovery/local_discovery_ui_handler.h b/chrome/browser/ui/webui/local_discovery/local_discovery_ui_handler.h index caf5a5b..952bd62 100644 --- a/chrome/browser/ui/webui/local_discovery/local_discovery_ui_handler.h +++ b/chrome/browser/ui/webui/local_discovery/local_discovery_ui_handler.h
@@ -156,7 +156,7 @@ void CheckListingDone(); - bool IsUserSupervisedOrOffTheRecord(); + bool IsUserProfileRestricted(); #if defined(CLOUD_PRINT_CONNECTOR_UI_AVAILABLE) void StartCloudPrintConnector();
diff --git a/chrome/browser/ui/webui/new_tab_page/new_tab_page_ui.cc b/chrome/browser/ui/webui/new_tab_page/new_tab_page_ui.cc index 1cd72ab..ea9f5cee 100644 --- a/chrome/browser/ui/webui/new_tab_page/new_tab_page_ui.cc +++ b/chrome/browser/ui/webui/new_tab_page/new_tab_page_ui.cc
@@ -5,6 +5,8 @@ #include "chrome/browser/ui/webui/new_tab_page/new_tab_page_ui.h" #include "chrome/browser/profiles/profile.h" +#include "chrome/browser/search/instant_service.h" +#include "chrome/browser/search/instant_service_factory.h" #include "chrome/browser/ui/webui/favicon_source.h" #include "chrome/browser/ui/webui/new_tab_page/new_tab_page_handler.h" #include "chrome/browser/ui/webui/webui_util.h" @@ -85,19 +87,30 @@ } // namespace NewTabPageUI::NewTabPageUI(content::WebUI* web_ui) - : ui::MojoWebUIController(web_ui, true), page_factory_receiver_(this) { - profile_ = Profile::FromWebUI(web_ui); - + : ui::MojoWebUIController(web_ui, true), + page_factory_receiver_(this), + profile_(Profile::FromWebUI(web_ui)), + instant_service_(InstantServiceFactory::GetForProfile(profile_)) { content::WebUIDataSource::Add(profile_, CreateNewTabPageUiHtmlSource()); content::URLDataSource::Add( profile_, std::make_unique<FaviconSource>( profile_, chrome::FaviconUrlFormat::kFavicon2)); + + UpdateBackgroundColor(*instant_service_->GetInitializedNtpTheme()); + instant_service_->AddObserver(this); } WEB_UI_CONTROLLER_TYPE_IMPL(NewTabPageUI) -NewTabPageUI::~NewTabPageUI() = default; +NewTabPageUI::~NewTabPageUI() { + instant_service_->RemoveObserver(this); +} + +// static +bool NewTabPageUI::IsNewTabPageOrigin(const GURL& url) { + return url.GetOrigin() == GURL(chrome::kChromeUINewTabPageURL).GetOrigin(); +} void NewTabPageUI::BindInterface( mojo::PendingReceiver<new_tab_page::mojom::PageHandlerFactory> @@ -118,7 +131,22 @@ std::move(pending_page_handler), std::move(pending_page), profile_); } -// static -bool NewTabPageUI::IsNewTabPageOrigin(const GURL& url) { - return url.GetOrigin() == GURL(chrome::kChromeUINewTabPageURL).GetOrigin(); +void NewTabPageUI::NtpThemeChanged(const NtpTheme& theme) { + // Load time data is cached across page reloads. Update the background color + // here to prevent a white flicker on page reload. + UpdateBackgroundColor(theme); +} + +void NewTabPageUI::MostVisitedInfoChanged(const InstantMostVisitedInfo& info) {} + +void NewTabPageUI::UpdateBackgroundColor(const NtpTheme& theme) { + std::unique_ptr<base::DictionaryValue> update(new base::DictionaryValue); + auto background_color = theme.background_color; + update->SetString( + "backgroundColor", + base::StringPrintf("#%02X%02X%02X", SkColorGetR(background_color), + SkColorGetG(background_color), + SkColorGetB(background_color))); + content::WebUIDataSource::Update(profile_, chrome::kChromeUINewTabPageHost, + std::move(update)); }
diff --git a/chrome/browser/ui/webui/new_tab_page/new_tab_page_ui.h b/chrome/browser/ui/webui/new_tab_page/new_tab_page_ui.h index a99acc7..e065ead 100644 --- a/chrome/browser/ui/webui/new_tab_page/new_tab_page_ui.h +++ b/chrome/browser/ui/webui/new_tab_page/new_tab_page_ui.h
@@ -6,6 +6,7 @@ #define CHROME_BROWSER_UI_WEBUI_NEW_TAB_PAGE_NEW_TAB_PAGE_UI_H_ #include "base/macros.h" +#include "chrome/browser/search/instant_service_observer.h" #include "chrome/browser/ui/webui/new_tab_page/new_tab_page.mojom.h" #include "mojo/public/cpp/bindings/pending_receiver.h" #include "mojo/public/cpp/bindings/pending_remote.h" @@ -16,11 +17,13 @@ class WebUI; } class GURL; +class InstantService; class NewTabPageHandler; class Profile; class NewTabPageUI : public ui::MojoWebUIController, - public new_tab_page::mojom::PageHandlerFactory { + public new_tab_page::mojom::PageHandlerFactory, + public InstantServiceObserver { public: explicit NewTabPageUI(content::WebUI* web_ui); ~NewTabPageUI() override; @@ -40,12 +43,20 @@ mojo::PendingReceiver<new_tab_page::mojom::PageHandler> pending_page_handler) override; - std::unique_ptr<NewTabPageHandler> page_handler_; + // InstantServiceObserver: + void NtpThemeChanged(const NtpTheme& theme) override; + void MostVisitedInfoChanged(const InstantMostVisitedInfo& info) override; + // Updates the load time data with the current theme's background color. That + // way the background color is available as soon as the page loads and we + // prevent a potential white flicker. + void UpdateBackgroundColor(const NtpTheme& theme); + + std::unique_ptr<NewTabPageHandler> page_handler_; mojo::Receiver<new_tab_page::mojom::PageHandlerFactory> page_factory_receiver_; - Profile* profile_; + InstantService* instant_service_; WEB_UI_CONTROLLER_TYPE_DECL();
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 1864519e..3205520d 100644 --- a/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc +++ b/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc
@@ -99,7 +99,6 @@ #include "chrome/common/webui_url_constants.h" #include "chromeos/constants/chromeos_features.h" #include "chromeos/constants/chromeos_switches.h" -#include "chromeos/dbus/power/power_manager_client.h" #include "chromeos/services/assistant/public/features.h" #include "chromeos/services/multidevice_setup/public/cpp/url_provider.h" #include "chromeos/strings/grit/chromeos_strings.h" @@ -1091,10 +1090,8 @@ html_source->AddBoolean("listAllDisplayModes", display::features::IsListAllDisplayModesEnabled()); - const bool ambient_eq_supported = - ash::features::IsAllowAmbientEQEnabled() && - chromeos::PowerManagerClient::Get()->SupportsAmbientColor(); - html_source->AddBoolean("deviceSupportsAmbientColor", ambient_eq_supported); + html_source->AddBoolean("deviceSupportsAmbientColor", + ash::features::IsAllowAmbientEQEnabled()); html_source->AddBoolean( "enableTouchCalibrationSetting",
diff --git a/chrome/browser/ui/webui/settings/settings_ui.cc b/chrome/browser/ui/webui/settings/settings_ui.cc index c2817c4..3f7e5fdb 100644 --- a/chrome/browser/ui/webui/settings/settings_ui.cc +++ b/chrome/browser/ui/webui/settings/settings_ui.cc
@@ -92,7 +92,6 @@ #include "chrome/browser/ui/webui/settings/chromeos/account_manager_handler.h" #include "chrome/browser/ui/webui/settings/chromeos/android_apps_handler.h" #include "chrome/browser/ui/webui/settings/chromeos/multidevice_handler.h" -#include "chrome/browser/ui/webui/settings/chromeos/parental_controls_handler.h" #include "chrome/common/chrome_switches.h" #include "chrome/grit/browser_resources.h" #include "chromeos/components/account_manager/account_manager.h" @@ -240,9 +239,6 @@ base::FeatureList::IsEnabled(features::kSyncSetupFriendlySettings)); #if defined(OS_CHROMEOS) - html_source->AddBoolean( - "showParentalControls", - chromeos::settings::ShouldShowParentalControls(profile)); html_source->AddBoolean("splitSettingsSyncEnabled", chromeos::features::IsSplitSettingsSyncEnabled()); #endif @@ -326,11 +322,6 @@ : nullptr, android_sms_service ? android_sms_service->android_sms_app_manager() : nullptr)); - if (chromeos::settings::ShouldShowParentalControls(profile)) { - web_ui->AddMessageHandler( - std::make_unique<chromeos::settings::ParentalControlsHandler>( - profile)); - } } web_ui->AddMessageHandler(
diff --git a/chrome/common/pref_names.cc b/chrome/common/pref_names.cc index 8f4b178..8aeaf07 100644 --- a/chrome/common/pref_names.cc +++ b/chrome/common/pref_names.cc
@@ -1414,8 +1414,10 @@ // platforms. const char kFullscreenAllowed[] = "fullscreen.allowed"; -// Enable the local discovery UI (chrome://devices) which shows discoverable -// devices near the user as well as cloud devices registered to them. +// Enable controllable features in the local discovery UI (chrome://devices). +// The UI shows discoverable devices near the user and registered cloud devices, +// and allow users to add printers to cloud print when not on Chrome OS +// devices . const char kLocalDiscoveryEnabled[] = "local_discovery.enabled"; // Enable notifications for new devices on the local network that can be
diff --git a/chrome/installer/linux/BUILD.gn b/chrome/installer/linux/BUILD.gn index 223b0e0..46eaeb4 100644 --- a/chrome/installer/linux/BUILD.gn +++ b/chrome/installer/linux/BUILD.gn
@@ -76,6 +76,7 @@ "debian/deb_version.py", "debian/dist_package_versions.json", "debian/package_version_interval.py", + "//third_party/dpkg-shlibdeps/dpkg-shlibdeps.pl", ] outputs = [ "$root_out_dir/deb_{{source_name_part}}.deps",
diff --git a/chrome/installer/linux/debian/calculate_package_deps.py b/chrome/installer/linux/debian/calculate_package_deps.py index 84fdc25..3efcc4c 100755 --- a/chrome/installer/linux/debian/calculate_package_deps.py +++ b/chrome/installer/linux/debian/calculate_package_deps.py
@@ -31,7 +31,11 @@ dep_filename = os.path.abspath(args.dep_filename) distro_check = args.distro_check -cmd = ['dpkg-shlibdeps'] +script_dir = os.path.dirname(os.path.realpath(__file__)) +dpkg_shlibdeps = os.path.join(script_dir, '..', '..', '..', '..', 'third_party', + 'dpkg-shlibdeps', 'dpkg-shlibdeps.pl') + +cmd = [dpkg_shlibdeps, '--ignore-weak-undefined'] if arch == 'x64': cmd.extend(['-l%s/usr/lib/x86_64-linux-gnu' % sysroot, '-l%s/lib/x86_64-linux-gnu' % sysroot])
diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn index 30b0dc4..5b7c4987 100644 --- a/chrome/test/BUILD.gn +++ b/chrome/test/BUILD.gn
@@ -2604,8 +2604,6 @@ "../browser/process_singleton_browsertest.cc", ] - data += [ "//testing/buildbot/filters/mac_window_server_killers.browser_tests.filter" ] - if (safe_browsing_mode == 1) { sources -= [ # single-process mode hangs on Mac sometimes because of multiple UI @@ -3781,6 +3779,7 @@ "../browser/metrics/chrome_android_metrics_provider_unittest.cc", "../browser/notifications/notification_platform_bridge_android_unittest.cc", "../browser/page_load_metrics/observers/android_page_load_metrics_observer_unittest.cc", + "../browser/partnercustomizations/partner_browser_customizations_unittest.cc", "../browser/password_manager/account_chooser_dialog_android_unittest.cc", "../browser/password_manager/auto_signin_first_run_dialog_android_unittest.cc", "../browser/password_manager/credential_leak_controller_android_unittest.cc", @@ -3788,6 +3787,7 @@ "../browser/password_manager/password_generation_controller_impl_unittest.cc", "../browser/password_manager/save_password_infobar_delegate_android_unittest.cc", "../browser/password_manager/update_password_infobar_delegate_android_unittest.cc", + "../browser/payments/android/android_payment_app_finder_unittest.cc", "../browser/permissions/permission_prompt_android_unittest.cc", "../browser/permissions/permission_request_notification_android_unittest.cc", "../browser/permissions/permission_request_notification_handler_unittest.cc",
diff --git a/chrome/test/data/webui/cr_elements/cr_searchable_drop_down_tests.js b/chrome/test/data/webui/cr_elements/cr_searchable_drop_down_tests.js index 54cb893a..40755c7d 100644 --- a/chrome/test/data/webui/cr_elements/cr_searchable_drop_down_tests.js +++ b/chrome/test/data/webui/cr_elements/cr_searchable_drop_down_tests.js
@@ -108,20 +108,17 @@ search('c'); assertEquals(1, getList().length); assertEquals('cat', getList()[0].textContent.trim()); - assertTrue(dropDown.invalid); search('at'); assertEquals(3, getList().length); assertEquals('cat', getList()[0].textContent.trim()); assertEquals('hat', getList()[1].textContent.trim()); assertEquals('rat', getList()[2].textContent.trim()); - assertTrue(dropDown.invalid); search('ra'); assertEquals(2, getList().length); assertEquals('rat', getList()[0].textContent.trim()); assertEquals('rake', getList()[1].textContent.trim()); - assertTrue(dropDown.invalid); }); test('value is set on click', function() { @@ -136,7 +133,6 @@ // Make sure final value does not change while searching. search('ta'); assertEquals('dog', dropDown.value); - assertTrue(dropDown.invalid); }); // If the update-value-on-input flag is passed, final value should be whatever @@ -154,7 +150,6 @@ // Make sure final value does change while searching. search('ta'); assertEquals('ta', dropDown.value); - assertFalse(dropDown.invalid); }); test('click closes dropdown', function() { @@ -358,15 +353,11 @@ getList()[0].click(); assertEquals('dog', searchInput.value); - assertFalse(dropDown.invalid); // Make sure the search box value changes back to dog search('ta'); - assertTrue(dropDown.invalid); - blur(); assertEquals('dog', searchInput.value); - assertFalse(dropDown.invalid); }); // When a user types in the dropdown but does not choose a valid option, the @@ -378,14 +369,10 @@ getList()[0].click(); assertEquals('dog', searchInput.value); - assertFalse(dropDown.invalid); // Make sure the search box value keeps the same text search('ta'); - assertFalse(dropDown.invalid); - blur(); assertEquals('ta', searchInput.value); - assertFalse(dropDown.invalid); }); });
diff --git a/chrome/test/data/webui/settings/chromeos/os_people_page_test.js b/chrome/test/data/webui/settings/chromeos/os_people_page_test.js index 9569b9d..c48f6a7 100644 --- a/chrome/test/data/webui/settings/chromeos/os_people_page_test.js +++ b/chrome/test/data/webui/settings/chromeos/os_people_page_test.js
@@ -144,6 +144,20 @@ assertTrue(peoplePage.$$('#account-manager-subpage-trigger').hidden); }); + test('parental controls page is shown when enabled', () => { + loadTimeData.overrideValues({ + // Simulate parental controls. + showParentalControls: true, + }); + + peoplePage = document.createElement('os-settings-people-page'); + document.body.appendChild(peoplePage); + Polymer.dom.flush(); + + // Setup button is shown and enabled. + assert(peoplePage.$$('settings-parental-controls-page')); + }); + test('GAIA name and picture, account manager enabled', async () => { loadTimeData.overrideValues({ isAccountManagerEnabled: true,
diff --git a/chrome/test/data/webui/settings/chromeos/os_settings_browsertest.js b/chrome/test/data/webui/settings/chromeos/os_settings_browsertest.js index e0e9eff..a9b3f4a 100644 --- a/chrome/test/data/webui/settings/chromeos/os_settings_browsertest.js +++ b/chrome/test/data/webui/settings/chromeos/os_settings_browsertest.js
@@ -579,6 +579,12 @@ // eslint-disable-next-line no-var var OSSettingsMenuTest = class extends OSSettingsBrowserTest { /** @override */ + get browsePreload() { + return super.browsePreload + + 'chromeos/os_settings_menu/os_settings_menu.html'; + } + + /** @override */ get extraLibraries() { return super.extraLibraries.concat([ BROWSER_SETTINGS_PATH + '../test_util.js', @@ -847,6 +853,12 @@ // eslint-disable-next-line no-var var OSSettingsPeoplePageSyncControlsTest = class extends OSSettingsBrowserTest { /** @override */ + get browsePreload() { + return super.browsePreload + + 'chromeos/os_people_page/os_sync_controls.html'; + } + + /** @override */ get featureList() { return {enabled: ['chromeos::features::kSplitSettingsSync']}; } @@ -868,6 +880,11 @@ // eslint-disable-next-line no-var var OSSettingsPeoplePageTest = class extends OSSettingsBrowserTest { /** @override */ + get browsePreload() { + return super.browsePreload + 'chromeos/os_people_page/os_people_page.html'; + } + + /** @override */ get extraLibraries() { return super.extraLibraries.concat([ BROWSER_SETTINGS_PATH + '../test_browser_proxy.js', @@ -883,10 +900,37 @@ mocha.run(); }); +// eslint-disable-next-line no-var +var OSSettingsParentalControlsPageTest = class extends OSSettingsBrowserTest { + /** @override */ + get browsePreload() { + return super.browsePreload + + 'chromeos/parental_controls_page/parental_controls_page.html'; + } + + /** @override */ + get extraLibraries() { + return super.extraLibraries.concat([ + BROWSER_SETTINGS_PATH + '../test_browser_proxy.js', + 'parental_controls_page_test.js', + ]); + } +}; + +TEST_F('OSSettingsParentalControlsPageTest', 'AllJsTests', () => { + mocha.run(); +}); + // Tests for the Personalization section. // eslint-disable-next-line no-var var OSSettingsPersonalizationPageTest = class extends OSSettingsBrowserTest { /** @override */ + get browsePreload() { + return super.browsePreload + + 'chromeos/personalization_page/personalization_page.html'; + } + + /** @override */ get extraLibraries() { return super.extraLibraries.concat([ '//ui/webui/resources/js/promise_resolver.js',
diff --git a/chrome/test/data/webui/settings/chromeos/parental_controls_page_test.js b/chrome/test/data/webui/settings/chromeos/parental_controls_page_test.js new file mode 100644 index 0000000..8ef0d5b --- /dev/null +++ b/chrome/test/data/webui/settings/chromeos/parental_controls_page_test.js
@@ -0,0 +1,144 @@ +// Copyright 2020 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +/** @implements {parental_controls.ParentalControlsBrowserProxy} */ +class TestParentalControlsBrowserProxy extends TestBrowserProxy { + constructor() { + super([ + 'showAddSupervisionDialog', + 'launchFamilyLinkSettings', + ]); + } + + /** @override */ + launchFamilyLinkSettings() { + this.methodCalled('launchFamilyLinkSettings'); + } + + /** @override */ + showAddSupervisionDialog() { + this.methodCalled('showAddSupervisionDialog'); + } +} + +suite('Chrome OS parental controls page setup item tests', function() { + /** @type {ParentalControlsPage} */ + let parentalControlsPage = null; + + /** @type {TestParentalControlsBrowserProxy} */ + let parentalControlsBrowserProxy = null; + + suiteSetup(function() { + loadTimeData.overrideValues({ + // Simulate parental controls. + showParentalControls: true, + }); + }); + + setup(function() { + parentalControlsBrowserProxy = new TestParentalControlsBrowserProxy(); + parental_controls.BrowserProxyImpl.instance_ = parentalControlsBrowserProxy; + + PolymerTest.clearBody(); + parentalControlsPage = + document.createElement('settings-parental-controls-page'); + parentalControlsPage.pageVisibility = settings.pageVisibility; + document.body.appendChild(parentalControlsPage); + Polymer.dom.flush(); + }); + + teardown(function() { + parentalControlsPage.remove(); + }); + + test('parental controls page enabled when online', () => { + // Setup button is shown and enabled. + const setupButton = + assert(parentalControlsPage.$$('#parental-controls-item cr-button')); + + setupButton.click(); + + // Ensure that the request to launch the add supervision flow went + // through. + assertEquals( + parentalControlsBrowserProxy.getCallCount('showAddSupervisionDialog'), + 1); + }); + + test('parental controls page disabled when offline', () => { + // Simulate going offline + window.dispatchEvent(new CustomEvent('offline')); + // Setup button is shown but disabled. + const setupButton = + assert(parentalControlsPage.$$('#parental-controls-item cr-button')); + assertTrue(setupButton.disabled); + + setupButton.click(); + + // Ensure that the request to launch the add supervision flow does not + // go through. + assertEquals( + parentalControlsBrowserProxy.getCallCount('showAddSupervisionDialog'), + 0); + }); + + test('parental controls page re-enabled when it comes back online', () => { + // Simulate going offline + window.dispatchEvent(new CustomEvent('offline')); + // Setup button is shown but disabled. + const setupButton = + assert(parentalControlsPage.$$('#parental-controls-item cr-button')); + assertTrue(setupButton.disabled); + + // Come back online. + window.dispatchEvent(new CustomEvent('online')); + // Setup button is shown and re-enabled. + assertFalse(setupButton.disabled); + }); +}); + +suite('Chrome OS parental controls page child account tests', function() { + /** @type {ParentalControlsPage} */ + let parentalControlsPage = null; + + /** @type {TestParentalControlsBrowserProxy} */ + let parentalControlsBrowserProxy = null; + + suiteSetup(function() { + loadTimeData.overrideValues({ + // Simulate parental controls. + showParentalControls: true, + // Simulate child account. + isChild: true, + }); + }); + + setup(async function() { + parentalControlsBrowserProxy = new TestParentalControlsBrowserProxy(); + parental_controls.BrowserProxyImpl.instance_ = parentalControlsBrowserProxy; + + PolymerTest.clearBody(); + parentalControlsPage = + document.createElement('settings-parental-controls-page'); + parentalControlsPage.pageVisibility = settings.pageVisibility; + document.body.appendChild(parentalControlsPage); + Polymer.dom.flush(); + }); + + teardown(function() { + parentalControlsPage.remove(); + }); + + test('parental controls page child view shown to child account', () => { + // Get the link row. + const linkRow = + assert(parentalControlsPage.$$('#parental-controls-item cr-link-row')); + + linkRow.click(); + // Ensure that the request to launch FLH went through. + assertEquals( + parentalControlsBrowserProxy.getCallCount('launchFamilyLinkSettings'), + 1); + }); +});
diff --git a/chrome/test/data/webui/settings/people_page_test.js b/chrome/test/data/webui/settings/people_page_test.js index ab94040..680f09e08b 100644 --- a/chrome/test/data/webui/settings/people_page_test.js +++ b/chrome/test/data/webui/settings/people_page_test.js
@@ -562,8 +562,6 @@ showOSSettings: false, // Simulate ChromeOSAccountManager (Google Accounts support). isAccountManagerEnabled: true, - // Simulate parental controls. - showParentalControls: true, }); }); @@ -623,12 +621,6 @@ const subpageArrow = assert(peoplePage.$$('#profile-subpage-arrow')); assertFalse(subpageArrow.hidden); }); - - test('parental controls page is shown when enabled', () => { - // Setup button is shown and enabled. - const parentalControlsItem = - assert(peoplePage.$$('settings-parental-controls-page')); - }); }); suite('Chrome OS with account manager disabled', function() { @@ -693,153 +685,5 @@ assertEquals(oldRoute, settings.getCurrentRoute()); }); }); - - /** @implements {parental_controls.ParentalControlsBrowserProxy} */ - class TestParentalControlsBrowserProxy extends TestBrowserProxy { - constructor() { - super([ - 'showAddSupervisionDialog', - 'launchFamilyLinkSettings', - ]); - } - - /** @override */ - launchFamilyLinkSettings() { - this.methodCalled('launchFamilyLinkSettings'); - } - - /** @override */ - showAddSupervisionDialog() { - this.methodCalled('showAddSupervisionDialog'); - } - } - - suite('Chrome OS parental controls page setup item tests', function() { - /** @type {ParentalControlsPage} */ - let parentalControlsPage = null; - - /** @type {TestParentalControlsBrowserProxy} */ - let parentalControlsBrowserProxy = null; - - suiteSetup(function() { - loadTimeData.overrideValues({ - // Simulate parental controls. - showParentalControls: true, - }); - }); - - setup(function() { - parentalControlsBrowserProxy = new TestParentalControlsBrowserProxy(); - parental_controls.BrowserProxyImpl.instance_ = - parentalControlsBrowserProxy; - - PolymerTest.clearBody(); - parentalControlsPage = - document.createElement('settings-parental-controls-page'); - parentalControlsPage.pageVisibility = settings.pageVisibility; - document.body.appendChild(parentalControlsPage); - Polymer.dom.flush(); - }); - - teardown(function() { - parentalControlsPage.remove(); - }); - - test('parental controls page enabled when online', () => { - // Setup button is shown and enabled. - const setupButton = assert( - parentalControlsPage.$$('#parental-controls-item cr-button')); - - setupButton.click(); - - // Ensure that the request to launch the add supervision flow went - // through. - assertEquals( - parentalControlsBrowserProxy.getCallCount( - 'showAddSupervisionDialog'), - 1); - }); - - test('parental controls page disabled when offline', () => { - // Simulate going offline - window.dispatchEvent(new CustomEvent('offline')); - // Setup button is shown but disabled. - const setupButton = assert( - parentalControlsPage.$$('#parental-controls-item cr-button')); - assertTrue(setupButton.disabled); - - setupButton.click(); - - // Ensure that the request to launch the add supervision flow does not - // go through. - assertEquals( - parentalControlsBrowserProxy.getCallCount( - 'showAddSupervisionDialog'), - 0); - }); - - test( - 'parental controls page re-enabled when it comes back online', () => { - // Simulate going offline - window.dispatchEvent(new CustomEvent('offline')); - // Setup button is shown but disabled. - const setupButton = assert( - parentalControlsPage.$$('#parental-controls-item cr-button')); - assertTrue(setupButton.disabled); - - // Come back online. - window.dispatchEvent(new CustomEvent('online')); - // Setup button is shown and re-enabled. - assertFalse(setupButton.disabled); - }); - }); - - - suite('Chrome OS parental controls page child account tests', function() { - /** @type {ParentalControlsPage} */ - let parentalControlsPage = null; - - /** @type {TestParentalControlsBrowserProxy} */ - let parentalControlsBrowserProxy = null; - - suiteSetup(function() { - loadTimeData.overrideValues({ - // Simulate parental controls. - showParentalControls: true, - // Simulate child account. - isChild: true, - }); - }); - - setup(async function() { - parentalControlsBrowserProxy = new TestParentalControlsBrowserProxy(); - parental_controls.BrowserProxyImpl.instance_ = - parentalControlsBrowserProxy; - - PolymerTest.clearBody(); - parentalControlsPage = - document.createElement('settings-parental-controls-page'); - parentalControlsPage.pageVisibility = settings.pageVisibility; - document.body.appendChild(parentalControlsPage); - Polymer.dom.flush(); - }); - - teardown(function() { - parentalControlsPage.remove(); - }); - - test('parental controls page child view shown to child account', () => { - // Get the link row. - const linkRow = assert( - parentalControlsPage.$$('#parental-controls-item cr-link-row')); - - linkRow.click(); - // Ensure that the request to launch FLH went through. - assertEquals( - parentalControlsBrowserProxy.getCallCount( - 'launchFamilyLinkSettings'), - 1); - }); - }); } });
diff --git a/chromecast/public/avsettings.h b/chromecast/public/avsettings.h index 72a7afa..637f5cf 100644 --- a/chromecast/public/avsettings.h +++ b/chromecast/public/avsettings.h
@@ -246,6 +246,10 @@ // This function should only be implemented on HDMI platforms. static CHROMECAST_EXPORT int GetHdmiLatencyUs() __attribute__((weak)); + // Returns true if this is an HDMI platform. + // This function should only be implemented on HDMI platforms. + static CHROMECAST_EXPORT bool IsHdmiPlatform() __attribute__((weak)); + // Returns the type of volume control, i.e. MASTER_VOLUME, FIXED_VOLUME or // ATTENUATION_VOLUME. For example, normal TVs, devices of CEC audio // controls, and audio devices are master volume systems. The counter
diff --git a/components/autofill/content/browser/content_autofill_driver.cc b/components/autofill/content/browser/content_autofill_driver.cc index d37b540..df274c3 100644 --- a/components/autofill/content/browser/content_autofill_driver.cc +++ b/components/autofill/content/browser/content_autofill_driver.cc
@@ -20,6 +20,7 @@ #include "content/public/browser/navigation_controller.h" #include "content/public/browser/navigation_handle.h" #include "content/public/browser/render_frame_host.h" +#include "content/public/browser/render_process_host.h" #include "content/public/browser/render_view_host.h" #include "content/public/browser/render_widget_host.h" #include "content/public/browser/render_widget_host_view.h" @@ -63,14 +64,6 @@ // static ContentAutofillDriver* ContentAutofillDriver::GetForRenderFrameHost( content::RenderFrameHost* render_frame_host) { - // With back-forward cache, the page stays alive and its mojo connections are - // not closed. The page would be frozen and would eventually stop doing work, - // but the messages can still arrive when the frame is not active. Given that - // autofill logic can show popups, it's problematic - prevent pages using - // autofill from entering back-forward cache for now to avoid it. - content::BackForwardCache::DisableForRenderFrameHost( - render_frame_host, "autofill::ContentAutofillDriver"); - ContentAutofillDriverFactory* factory = ContentAutofillDriverFactory::FromWebContents( content::WebContents::FromRenderFrameHost(render_frame_host)); @@ -92,6 +85,14 @@ return render_frame_host_->GetParent() == nullptr; } +bool ContentAutofillDriver::CanShowAutofillUi() const { + // TODO(crbug.com/1041021): Use RenderFrameHost::IsActive here when available. + return !content::BackForwardCache::EvictIfCached( + {render_frame_host_->GetProcess()->GetID(), + render_frame_host_->GetRoutingID()}, + "ContentAutofillDriver::CanShowAutofillUi"); +} + ui::AXTreeID ContentAutofillDriver::GetAxTreeId() const { return render_frame_host_->GetAXTreeID(); }
diff --git a/components/autofill/content/browser/content_autofill_driver.h b/components/autofill/content/browser/content_autofill_driver.h index e5868ce..9597492 100644 --- a/components/autofill/content/browser/content_autofill_driver.h +++ b/components/autofill/content/browser/content_autofill_driver.h
@@ -58,6 +58,7 @@ // AutofillDriver: bool IsIncognito() const override; bool IsInMainFrame() const override; + bool CanShowAutofillUi() const override; ui::AXTreeID GetAxTreeId() const override; scoped_refptr<network::SharedURLLoaderFactory> GetURLLoaderFactory() override; bool RendererIsAvailable() override;
diff --git a/components/autofill/core/browser/autofill_driver.h b/components/autofill/core/browser/autofill_driver.h index 2e663dd..641f0a7 100644 --- a/components/autofill/core/browser/autofill_driver.h +++ b/components/autofill/core/browser/autofill_driver.h
@@ -54,6 +54,10 @@ // Returns whether AutofillDriver instance is associated to the main frame. virtual bool IsInMainFrame() const = 0; + // Returns true iff a popup can be shown on the behalf of the associated + // frame. + virtual bool CanShowAutofillUi() const = 0; + // Returns the ax tree id associated with this driver. virtual ui::AXTreeID GetAxTreeId() const = 0;
diff --git a/components/autofill/core/browser/autofill_external_delegate.cc b/components/autofill/core/browser/autofill_external_delegate.cc index f4f4c248..5dc59ba 100644 --- a/components/autofill/core/browser/autofill_external_delegate.cc +++ b/components/autofill/core/browser/autofill_external_delegate.cc
@@ -155,7 +155,7 @@ } // Send to display. - if (query_field_.is_focusable) { + if (query_field_.is_focusable && GetAutofillDriver()->CanShowAutofillUi()) { manager_->client()->ShowAutofillPopup( element_bounds_, query_field_.text_direction, suggestions, autoselect_first_suggestion, popup_type_, GetWeakPtr());
diff --git a/components/autofill/core/browser/test_autofill_driver.cc b/components/autofill/core/browser/test_autofill_driver.cc index dedc8f2..0c5348dd 100644 --- a/components/autofill/core/browser/test_autofill_driver.cc +++ b/components/autofill/core/browser/test_autofill_driver.cc
@@ -29,6 +29,10 @@ return is_in_main_frame_; } +bool TestAutofillDriver::CanShowAutofillUi() const { + return true; +} + ui::AXTreeID TestAutofillDriver::GetAxTreeId() const { NOTIMPLEMENTED() << "See https://crbug.com/985933"; return ui::AXTreeIDUnknown();
diff --git a/components/autofill/core/browser/test_autofill_driver.h b/components/autofill/core/browser/test_autofill_driver.h index 0e261e7d..aff0ea1 100644 --- a/components/autofill/core/browser/test_autofill_driver.h +++ b/components/autofill/core/browser/test_autofill_driver.h
@@ -24,6 +24,7 @@ // AutofillDriver implementation overrides. bool IsIncognito() const override; bool IsInMainFrame() const override; + bool CanShowAutofillUi() const override; ui::AXTreeID GetAxTreeId() const override; scoped_refptr<network::SharedURLLoaderFactory> GetURLLoaderFactory() override; bool RendererIsAvailable() override;
diff --git a/components/autofill/ios/browser/autofill_driver_ios.h b/components/autofill/ios/browser/autofill_driver_ios.h index 4a67ff5b..262fe21 100644 --- a/components/autofill/ios/browser/autofill_driver_ios.h +++ b/components/autofill/ios/browser/autofill_driver_ios.h
@@ -40,6 +40,7 @@ // AutofillDriver: bool IsIncognito() const override; bool IsInMainFrame() const override; + bool CanShowAutofillUi() const override; ui::AXTreeID GetAxTreeId() const override; scoped_refptr<network::SharedURLLoaderFactory> GetURLLoaderFactory() override; bool RendererIsAvailable() override;
diff --git a/components/autofill/ios/browser/autofill_driver_ios.mm b/components/autofill/ios/browser/autofill_driver_ios.mm index c1bc51a2..810f400 100644 --- a/components/autofill/ios/browser/autofill_driver_ios.mm +++ b/components/autofill/ios/browser/autofill_driver_ios.mm
@@ -71,6 +71,10 @@ return web_frame ? web_frame->IsMainFrame() : true; } +bool AutofillDriverIOS::CanShowAutofillUi() const { + return true; +} + ui::AXTreeID AutofillDriverIOS::GetAxTreeId() const { NOTIMPLEMENTED() << "See https://crbug.com/985933"; return ui::AXTreeIDUnknown();
diff --git a/components/omnibox/browser/omnibox_edit_model.cc b/components/omnibox/browser/omnibox_edit_model.cc index fac4ab6..f55bc8f 100644 --- a/components/omnibox/browser/omnibox_edit_model.cc +++ b/components/omnibox/browser/omnibox_edit_model.cc
@@ -1535,9 +1535,18 @@ } if (!found_match_for_text) { + // For match generation, we use the unelided |url_for_editing_|, unless the + // user input is in progress or Query in Omnibox is active. + LocationBarModel* location_bar_model = controller()->GetLocationBarModel(); + base::string16 text_for_match_generation = url_for_editing_; + if (user_input_in_progress() || + location_bar_model->GetDisplaySearchTerms(nullptr)) { + text_for_match_generation = view_->GetText(); + } + client_->GetAutocompleteClassifier()->Classify( - MaybePrependKeyword(view_->GetText()), is_keyword_selected(), true, - GetPageClassification(), match, alternate_nav_url); + MaybePrependKeyword(text_for_match_generation), is_keyword_selected(), + true, GetPageClassification(), match, alternate_nav_url); } }
diff --git a/components/omnibox/browser/omnibox_edit_model_unittest.cc b/components/omnibox/browser/omnibox_edit_model_unittest.cc index 177305b..6f35911 100644 --- a/components/omnibox/browser/omnibox_edit_model_unittest.cc +++ b/components/omnibox/browser/omnibox_edit_model_unittest.cc
@@ -338,26 +338,58 @@ } TEST_F(OmniboxEditModelTest, CurrentMatch) { - location_bar_model()->set_url(GURL("http://localhost/")); - location_bar_model()->set_url_for_display(base::ASCIIToUTF16("localhost")); - model()->ResetDisplayTexts(); - model()->Revert(); - - // Tests that we use the formatted full URL instead of the elided URL to - // generate matches. + // Test the HTTP case. { + location_bar_model()->set_url(GURL("http://www.example.com/")); + location_bar_model()->set_url_for_display( + base::ASCIIToUTF16("example.com")); + model()->ResetDisplayTexts(); + model()->Revert(); + + // iOS doesn't do elision in the textfield view. +#if defined(OS_IOS) + EXPECT_EQ(base::ASCIIToUTF16("http://www.example.com/"), view()->GetText()); +#else + EXPECT_EQ(base::ASCIIToUTF16("example.com"), view()->GetText()); +#endif + AutocompleteMatch match = model()->CurrentMatch(nullptr); EXPECT_EQ(AutocompleteMatchType::URL_WHAT_YOU_TYPED, match.type); EXPECT_TRUE(model()->CurrentTextIsURL()); + EXPECT_EQ("http://www.example.com/", match.destination_url.spec()); + } + + // Test that generating a match from an elided HTTPS URL doesn't drop the + // secure scheme. + { + location_bar_model()->set_url(GURL("https://www.google.com/")); + location_bar_model()->set_url_for_display(base::ASCIIToUTF16("google.com")); + model()->ResetDisplayTexts(); + model()->Revert(); + + // iOS doesn't do elision in the textfield view. +#if defined(OS_IOS) + EXPECT_EQ(base::ASCIIToUTF16("https://www.google.com/"), view()->GetText()); +#else + EXPECT_EQ(base::ASCIIToUTF16("google.com"), view()->GetText()); +#endif + + AutocompleteMatch match = model()->CurrentMatch(nullptr); + EXPECT_EQ(AutocompleteMatchType::URL_WHAT_YOU_TYPED, match.type); + EXPECT_TRUE(model()->CurrentTextIsURL()); + + // Additionally verify we aren't accidentally dropping the HTTPS scheme. + EXPECT_EQ("https://www.google.com/", match.destination_url.spec()); } // Tests that when there is a Query in Omnibox, generate matches from the // query, instead of the full formatted URL. - location_bar_model()->set_display_search_terms(base::ASCIIToUTF16("foobar")); - model()->ResetDisplayTexts(); - model()->Revert(); - { + location_bar_model()->set_display_search_terms( + base::ASCIIToUTF16("foobar")); + model()->ResetDisplayTexts(); + model()->Revert(); + AutocompleteMatch match = model()->CurrentMatch(nullptr); EXPECT_EQ(AutocompleteMatchType::SEARCH_WHAT_YOU_TYPED, match.type); EXPECT_FALSE(model()->CurrentTextIsURL());
diff --git a/components/optimization_guide/hint_cache.cc b/components/optimization_guide/hint_cache.cc index 1979232..8d3bf54 100644 --- a/components/optimization_guide/hint_cache.cc +++ b/components/optimization_guide/hint_cache.cc
@@ -57,11 +57,10 @@ } std::unique_ptr<StoreUpdateData> HintCache::CreateUpdateDataForFetchedHints( - base::Time update_time, - base::Time expiry_time) const { + base::Time update_time) const { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); return optimization_guide_store_->CreateUpdateDataForFetchedHints( - update_time, expiry_time); + update_time); } void HintCache::UpdateComponentHints( @@ -82,21 +81,21 @@ std::unique_ptr<proto::GetHintsResponse> get_hints_response, base::Time update_time, base::OnceClosure callback) { - base::Time expiry_time = update_time; - if (get_hints_response->has_max_cache_duration()) { - expiry_time += base::TimeDelta().FromSeconds( - get_hints_response->max_cache_duration().seconds()); - } else { - expiry_time += features::StoredFetchedHintsFreshnessDuration(); - } std::unique_ptr<StoreUpdateData> fetched_hints_update_data = - CreateUpdateDataForFetchedHints(update_time, expiry_time); + CreateUpdateDataForFetchedHints(update_time); ProcessAndCacheHints(get_hints_response.get()->mutable_hints(), fetched_hints_update_data.get()); optimization_guide_store_->UpdateFetchedHints( std::move(fetched_hints_update_data), std::move(callback)); } +void HintCache::PurgeExpiredFetchedHints() { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + DCHECK(optimization_guide_store_); + + optimization_guide_store_->PurgeExpiredFetchedHints(); +} + void HintCache::ClearFetchedHints() { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); DCHECK(optimization_guide_store_);
diff --git a/components/optimization_guide/hint_cache.h b/components/optimization_guide/hint_cache.h index e600fa8..1cfe81f 100644 --- a/components/optimization_guide/hint_cache.h +++ b/components/optimization_guide/hint_cache.h
@@ -62,12 +62,9 @@ // processing of the GetHintsResponse, hints are moved into the update data. // After processing is complete, the update data is provided to the backing // store to update hints. |update_time| specifies when the hints within the - // created update data will be scheduled to be updated. |expiry_time| - // specifies when the hints within the created update data will be expired - // from the store. + // created update data will be scheduled to be updated. std::unique_ptr<StoreUpdateData> CreateUpdateDataForFetchedHints( - base::Time update_time, - base::Time expiry_time) const; + base::Time update_time) const; // Updates the store's component data using the provided StoreUpdateData // and asynchronously runs the provided callback after the update finishes. @@ -83,6 +80,10 @@ base::Time update_time, base::OnceClosure callback); + // Purges fetched hints from the owned |optimization_guide_store| that have + // expired. + void PurgeExpiredFetchedHints(); + // Purges fetched hints from the owned |optimization_guide_store_| and resets // the host-keyed cache. void ClearFetchedHints();
diff --git a/components/optimization_guide/hint_cache_unittest.cc b/components/optimization_guide/hint_cache_unittest.cc index 95c61cca..5d70a48 100644 --- a/components/optimization_guide/hint_cache_unittest.cc +++ b/components/optimization_guide/hint_cache_unittest.cc
@@ -142,12 +142,12 @@ RunUntilIdle(); } - private: void RunUntilIdle() { task_environment_.RunUntilIdle(); base::RunLoop().RunUntilIdle(); } + private: void OnStoreInitialized() { is_store_initialized_ = true; } void OnUpdateComponentHints() { are_component_hints_updated_ = true; } void OnLoadHint(const proto::Hint* hint) { @@ -577,12 +577,10 @@ std::make_unique<proto::GetHintsResponse>(); // Set server-provided expiration time. - get_hints_response->mutable_max_cache_duration()->set_seconds( - kFetchedHintExpirationSecs); - proto::Hint* hint = get_hints_response->add_hints(); hint->set_key_representation(proto::HOST_SUFFIX); hint->set_key("host.domain.org"); + hint->mutable_max_cache_duration()->set_seconds(kFetchedHintExpirationSecs); proto::PageHint* page_hint = hint->add_page_hints(); page_hint->set_page_pattern("page pattern"); @@ -635,7 +633,7 @@ CreateAndInitializeHintCache(kMemoryCacheSize); std::unique_ptr<StoreUpdateData> update_data = - hint_cache()->CreateUpdateDataForFetchedHints(base::Time(), base::Time()); + hint_cache()->CreateUpdateDataForFetchedHints(base::Time()); ASSERT_TRUE(update_data); GURL url("https://whatever.com/r/werd"); @@ -655,7 +653,7 @@ CreateAndInitializeHintCache(kMemoryCacheSize); std::unique_ptr<StoreUpdateData> update_data = - hint_cache()->CreateUpdateDataForFetchedHints(base::Time(), base::Time()); + hint_cache()->CreateUpdateDataForFetchedHints(base::Time()); ASSERT_TRUE(update_data); GURL url("https://whatever.com/r/werd"); @@ -674,12 +672,55 @@ EXPECT_FALSE(hint_cache()->GetURLKeyedHint(url)); } +TEST_F(HintCacheTest, PurgeExpiredFetchedHints) { + const int kMemoryCacheSize = 5; + CreateAndInitializeHintCache(kMemoryCacheSize); + + std::unique_ptr<StoreUpdateData> update_data = + hint_cache()->CreateUpdateDataForFetchedHints(base::Time()); + ASSERT_TRUE(update_data); + + int cache_duration_in_secs = 60; + + std::unique_ptr<proto::GetHintsResponse> get_hints_response = + std::make_unique<proto::GetHintsResponse>(); + + std::string host = "shouldpurge.com"; + proto::Hint* hint1 = get_hints_response->add_hints(); + hint1->set_key_representation(proto::HOST_SUFFIX); + hint1->set_key(host); + hint1->mutable_max_cache_duration()->set_seconds(cache_duration_in_secs); + proto::PageHint* page_hint1 = hint1->add_page_hints(); + page_hint1->set_page_pattern("page pattern"); + std::string host2 = "notpurged.com"; + proto::Hint* hint2 = get_hints_response->add_hints(); + hint2->set_key_representation(proto::HOST_SUFFIX); + hint2->set_key(host2); + hint2->mutable_max_cache_duration()->set_seconds(cache_duration_in_secs * 2); + proto::PageHint* page_hint2 = hint2->add_page_hints(); + page_hint2->set_page_pattern("page pattern"); + + base::Time stored_time = base::Time().Now(); + UpdateFetchedHintsAndWait(std::move(get_hints_response), stored_time); + EXPECT_TRUE(are_fetched_hints_updated()); + EXPECT_TRUE(hint_cache()->HasHint("shouldpurge.com")); + EXPECT_TRUE(hint_cache()->HasHint("notpurged.com")); + + MoveClockForwardBy(base::TimeDelta().FromSeconds(cache_duration_in_secs + 1)); + + hint_cache()->PurgeExpiredFetchedHints(); + RunUntilIdle(); + + EXPECT_FALSE(hint_cache()->HasHint("shouldpurge.com")); + EXPECT_TRUE(hint_cache()->HasHint("notpurged.com")); +} + TEST_F(HintCacheTest, ClearFetchedHints) { const int kMemoryCacheSize = 5; CreateAndInitializeHintCache(kMemoryCacheSize); std::unique_ptr<StoreUpdateData> update_data = - hint_cache()->CreateUpdateDataForFetchedHints(base::Time(), base::Time()); + hint_cache()->CreateUpdateDataForFetchedHints(base::Time()); ASSERT_TRUE(update_data); GURL url("https://whatever.com/r/werd"); @@ -720,7 +761,7 @@ CreateAndInitializeHintCache(kMemoryCacheSize); std::unique_ptr<StoreUpdateData> update_data = - hint_cache()->CreateUpdateDataForFetchedHints(base::Time(), base::Time()); + hint_cache()->CreateUpdateDataForFetchedHints(base::Time()); ASSERT_TRUE(update_data); GURL https_url("https://whatever.com/r/werd");
diff --git a/components/optimization_guide/optimization_guide_store.cc b/components/optimization_guide/optimization_guide_store.cc index 7bfc4758..533b59e 100644 --- a/components/optimization_guide/optimization_guide_store.cc +++ b/components/optimization_guide/optimization_guide_store.cc
@@ -165,13 +165,11 @@ std::unique_ptr<StoreUpdateData> OptimizationGuideStore::CreateUpdateDataForFetchedHints( - base::Time update_time, - base::Time expiry_time) const { + base::Time update_time) const { // Create and returns a StoreUpdateData object. This object has has hints // from the GetHintsResponse moved into and organizes them in a format // usable by the store. The object will be store with UpdateFetchedData(). - return StoreUpdateData::CreateFetchedStoreUpdateData(update_time, - expiry_time); + return StoreUpdateData::CreateFetchedStoreUpdateData(update_time); } void OptimizationGuideStore::UpdateComponentHints(
diff --git a/components/optimization_guide/optimization_guide_store.h b/components/optimization_guide/optimization_guide_store.h index 7a82002..42978f6 100644 --- a/components/optimization_guide/optimization_guide_store.h +++ b/components/optimization_guide/optimization_guide_store.h
@@ -127,8 +127,7 @@ // Service so the store can expire old hints, remove hints specified by the // server, and store the fresh hints. std::unique_ptr<StoreUpdateData> CreateUpdateDataForFetchedHints( - base::Time update_time, - base::Time expiry_time) const; + base::Time update_time) const; // Updates the component hints and version contained within the store. When // this is called, all pre-existing component hints within the store is purged
diff --git a/components/optimization_guide/optimization_guide_store_unittest.cc b/components/optimization_guide/optimization_guide_store_unittest.cc index c468415..a632bd16 100644 --- a/components/optimization_guide/optimization_guide_store_unittest.cc +++ b/components/optimization_guide/optimization_guide_store_unittest.cc
@@ -1418,9 +1418,7 @@ InitializeStore(schema_state); std::unique_ptr<StoreUpdateData> update_data = - guide_store()->CreateUpdateDataForFetchedHints( - update_time, update_time + optimization_guide::features:: - StoredFetchedHintsFreshnessDuration()); + guide_store()->CreateUpdateDataForFetchedHints(update_time); ASSERT_TRUE(update_data); SeedFetchedUpdateData(update_data.get(), update_hint_count); UpdateFetchedHints(std::move(update_data)); @@ -1463,10 +1461,7 @@ // Add fetched hints to the store that overlap with the same hosts as the // initial set. - update_data = guide_store()->CreateUpdateDataForFetchedHints( - update_time, - update_time + - optimization_guide::features::StoredFetchedHintsFreshnessDuration()); + update_data = guide_store()->CreateUpdateDataForFetchedHints(update_time); proto::Hint hint; hint.set_key("domain2.org"); @@ -1522,8 +1517,7 @@ // Add fetched hints to the store that overlap with the same hosts as the // initial set. - update_data = guide_store()->CreateUpdateDataForFetchedHints( - update_time, update_time + base::TimeDelta().FromDays(7)); + update_data = guide_store()->CreateUpdateDataForFetchedHints(update_time); proto::Hint fetched_hint1; fetched_hint1.set_key("domain2.org"); @@ -1584,10 +1578,7 @@ host_suffix = "host.domain2.org"; EXPECT_TRUE(guide_store()->FindHintEntryKey(host_suffix, &hint_entry_key)); - update_data = guide_store()->CreateUpdateDataForFetchedHints( - update_time, - update_time + - optimization_guide::features::StoredFetchedHintsFreshnessDuration()); + update_data = guide_store()->CreateUpdateDataForFetchedHints(update_time); proto::Hint new_hint; new_hint.set_key("domain1.org"); new_hint.set_key_representation(proto::HOST_SUFFIX); @@ -1634,31 +1625,37 @@ // Add fetched hints to the store that overlap with the same hosts as the // initial set. - update_data = guide_store()->CreateUpdateDataForFetchedHints( - update_time, update_time + base::TimeDelta().FromDays(7)); + update_data = guide_store()->CreateUpdateDataForFetchedHints(update_time); proto::Hint fetched_hint1; fetched_hint1.set_key("domain2.org"); fetched_hint1.set_key_representation(proto::HOST_SUFFIX); + fetched_hint1.mutable_max_cache_duration()->set_seconds( + base::TimeDelta::FromDays(7).InSeconds()); update_data->MoveHintIntoUpdateData(std::move(fetched_hint1)); proto::Hint fetched_hint2; fetched_hint2.set_key("domain3.org"); fetched_hint2.set_key_representation(proto::HOST_SUFFIX); + fetched_hint1.mutable_max_cache_duration()->set_seconds( + base::TimeDelta::FromDays(7).InSeconds()); update_data->MoveHintIntoUpdateData(std::move(fetched_hint2)); UpdateFetchedHints(std::move(update_data)); // Add expired fetched hints to the store. - update_data = guide_store()->CreateUpdateDataForFetchedHints( - update_time, update_time - base::TimeDelta().FromDays(7)); + update_data = guide_store()->CreateUpdateDataForFetchedHints(update_time); proto::Hint fetched_hint3; fetched_hint1.set_key("domain4.org"); fetched_hint1.set_key_representation(proto::HOST_SUFFIX); + fetched_hint1.mutable_max_cache_duration()->set_seconds( + base::TimeDelta::FromDays(-7).InSeconds()); update_data->MoveHintIntoUpdateData(std::move(fetched_hint1)); proto::Hint fetched_hint4; fetched_hint2.set_key("domain5.org"); fetched_hint2.set_key_representation(proto::HOST_SUFFIX); + fetched_hint2.mutable_max_cache_duration()->set_seconds( + base::TimeDelta::FromDays(-7).InSeconds()); update_data->MoveHintIntoUpdateData(std::move(fetched_hint2)); UpdateFetchedHints(std::move(update_data)); @@ -1699,12 +1696,13 @@ UpdateComponentHints(std::move(update_data)); // Add fetched hints to the store that expired. - update_data = guide_store()->CreateUpdateDataForFetchedHints( - update_time, update_time - base::TimeDelta().FromDays(10)); + update_data = guide_store()->CreateUpdateDataForFetchedHints(update_time); proto::Hint fetched_hint1; fetched_hint1.set_key("domain2.org"); fetched_hint1.set_key_representation(proto::HOST_SUFFIX); + fetched_hint1.mutable_max_cache_duration()->set_seconds( + base::TimeDelta().FromDays(-10).InSeconds()); update_data->MoveHintIntoUpdateData(std::move(fetched_hint1)); proto::Hint fetched_hint2; fetched_hint2.set_key("domain3.org");
diff --git a/components/optimization_guide/store_update_data.cc b/components/optimization_guide/store_update_data.cc index 6bdd5f9..026743d 100644 --- a/components/optimization_guide/store_update_data.cc +++ b/components/optimization_guide/store_update_data.cc
@@ -5,6 +5,7 @@ #include "components/optimization_guide/store_update_data.h" #include "base/strings/string_number_conversions.h" +#include "components/optimization_guide/optimization_guide_features.h" #include "components/optimization_guide/optimization_guide_store.h" #include "components/optimization_guide/proto/hint_cache.pb.h" #include "components/optimization_guide/proto/hints.pb.h" @@ -24,12 +25,11 @@ // static std::unique_ptr<StoreUpdateData> StoreUpdateData::CreateFetchedStoreUpdateData( - base::Time fetch_update_time, - base::Time expiry_time) { + base::Time fetch_update_time) { std::unique_ptr<StoreUpdateData> update_data( new StoreUpdateData(base::Optional<base::Version>(), base::Optional<base::Time>(fetch_update_time), - base::Optional<base::Time>(expiry_time))); + base::Optional<base::Time>())); return update_data; } @@ -146,9 +146,16 @@ entry_proto.set_entry_type(static_cast<proto::StoreEntryType>( OptimizationGuideStore::StoreEntryType::kComponentHint)); } else if (update_time()) { - DCHECK(expiry_time()); - entry_proto.set_expiry_time_secs( - expiry_time_->ToDeltaSinceWindowsEpoch().InSeconds()); + base::TimeDelta expiry_duration; + if (hint.has_max_cache_duration()) { + expiry_duration = + base::TimeDelta().FromSeconds(hint.max_cache_duration().seconds()); + } else { + expiry_duration = features::StoredFetchedHintsFreshnessDuration(); + } + entry_proto.set_expiry_time_secs((base::Time::Now() + expiry_duration) + .ToDeltaSinceWindowsEpoch() + .InSeconds()); entry_proto.set_entry_type(static_cast<proto::StoreEntryType>( OptimizationGuideStore::StoreEntryType::kFetchedHint)); }
diff --git a/components/optimization_guide/store_update_data.h b/components/optimization_guide/store_update_data.h index c175fbbc..e1d948b 100644 --- a/components/optimization_guide/store_update_data.h +++ b/components/optimization_guide/store_update_data.h
@@ -37,8 +37,7 @@ // Creates an update data object for a fetched hint update. static std::unique_ptr<StoreUpdateData> CreateFetchedStoreUpdateData( - base::Time fetch_update_time, - base::Time expiry_time); + base::Time fetch_update_time); // Creates an update data object for a prediction model update. static std::unique_ptr<StoreUpdateData>
diff --git a/components/optimization_guide/store_update_data_unittest.cc b/components/optimization_guide/store_update_data_unittest.cc index 2d2b91f..682209c 100644 --- a/components/optimization_guide/store_update_data_unittest.cc +++ b/components/optimization_guide/store_update_data_unittest.cc
@@ -45,7 +45,7 @@ EXPECT_EQ(3ul, component_update->TakeUpdateEntries()->size()); } -TEST(StoreUpdateDataTest, BuildFetchUpdateData) { +TEST(StoreUpdateDataTest, BuildFetchUpdateDataUsesDefaultCacheDuration) { // Verify creating a Fetched Hint update package. base::Time update_time = base::Time::Now(); proto::Hint hint1; @@ -55,16 +55,64 @@ page_hint1->set_page_pattern("slowpage"); std::unique_ptr<StoreUpdateData> fetch_update = - StoreUpdateData::CreateFetchedStoreUpdateData( - update_time, update_time + optimization_guide::features:: - StoredFetchedHintsFreshnessDuration()); + StoreUpdateData::CreateFetchedStoreUpdateData(update_time); fetch_update->MoveHintIntoUpdateData(std::move(hint1)); EXPECT_FALSE(fetch_update->component_version().has_value()); EXPECT_TRUE(fetch_update->update_time().has_value()); EXPECT_EQ(update_time, *fetch_update->update_time()); // Verify there are 2 store entries: 1 for the metadata entry plus // the 1 added hint entries. - EXPECT_EQ(2ul, fetch_update->TakeUpdateEntries()->size()); + const auto update_entries = fetch_update->TakeUpdateEntries(); + EXPECT_EQ(2ul, update_entries->size()); + // Verify expiry time taken from hint rather than the default expiry time of + // the store update data. + for (const auto& entry : *update_entries) { + proto::StoreEntry store_entry = entry.second; + if (store_entry.entry_type() == proto::FETCHED_HINT) { + base::Time expected_expiry_time = + base::Time::Now() + features::StoredFetchedHintsFreshnessDuration(); + EXPECT_EQ(expected_expiry_time.ToDeltaSinceWindowsEpoch().InSeconds(), + store_entry.expiry_time_secs()); + break; + } + } +} + +TEST(StoreUpdateDataTest, + BuildFetchUpdateDataUsesCacheDurationFromHintIfAvailable) { + // Verify creating a Fetched Hint update package. + int max_cache_duration_secs = 60; + base::Time update_time = base::Time::Now(); + proto::Hint hint1; + hint1.set_key("foo.org"); + hint1.set_key_representation(proto::HOST_SUFFIX); + hint1.mutable_max_cache_duration()->set_seconds(max_cache_duration_secs); + proto::PageHint* page_hint1 = hint1.add_page_hints(); + page_hint1->set_page_pattern("slowpage"); + + std::unique_ptr<StoreUpdateData> fetch_update = + StoreUpdateData::CreateFetchedStoreUpdateData(update_time); + fetch_update->MoveHintIntoUpdateData(std::move(hint1)); + EXPECT_FALSE(fetch_update->component_version().has_value()); + EXPECT_TRUE(fetch_update->update_time().has_value()); + EXPECT_EQ(update_time, *fetch_update->update_time()); + // Verify there are 2 store entries: 1 for the metadata entry plus + // the 1 added hint entries. + const auto update_entries = fetch_update->TakeUpdateEntries(); + EXPECT_EQ(2ul, update_entries->size()); + // Verify expiry time taken from hint rather than the default expiry time of + // the store update data. + for (const auto& entry : *update_entries) { + proto::StoreEntry store_entry = entry.second; + if (store_entry.entry_type() == proto::FETCHED_HINT) { + base::Time expected_expiry_time = + base::Time::Now() + + base::TimeDelta::FromSeconds(max_cache_duration_secs); + EXPECT_EQ(expected_expiry_time.ToDeltaSinceWindowsEpoch().InSeconds(), + store_entry.expiry_time_secs()); + break; + } + } } TEST(StoreUpdateDataTest, BuildPredictionModelUpdateData) {
diff --git a/components/password_manager/content/browser/content_password_manager_driver.cc b/components/password_manager/content/browser/content_password_manager_driver.cc index 0bfbe610..1fbbdda 100644 --- a/components/password_manager/content/browser/content_password_manager_driver.cc +++ b/components/password_manager/content/browser/content_password_manager_driver.cc
@@ -22,6 +22,7 @@ #include "content/public/browser/browser_context.h" #include "content/public/browser/navigation_entry.h" #include "content/public/browser/navigation_handle.h" +#include "content/public/browser/render_process_host.h" #include "content/public/browser/render_widget_host_view.h" #include "content/public/browser/ssl_status.h" #include "content/public/browser/web_contents.h" @@ -87,14 +88,6 @@ ContentPasswordManagerDriver* ContentPasswordManagerDriver::GetForRenderFrameHost( content::RenderFrameHost* render_frame_host) { - // With back-forward cache, the page stays alive and its mojo connections are - // not closed. The page would be frozen and would eventually stop doing work, - // but the messages can still arrive when the frame is not active. Given that - // autofill logic can show popups, it's problematic - prevent pages using - // autofill from entering back-forward cache for now to avoid it. - content::BackForwardCache::DisableForRenderFrameHost( - render_frame_host, "password_manager::ContentPasswordManagerDriver"); - ContentPasswordManagerDriverFactory* factory = ContentPasswordManagerDriverFactory::FromWebContents( content::WebContents::FromRenderFrameHost(render_frame_host)); @@ -198,6 +191,14 @@ return is_main_frame_; } +bool ContentPasswordManagerDriver::CanShowAutofillUi() const { + // TODO(crbug.com/1041021): Use RenderFrameHost::IsActive here when available. + return !content::BackForwardCache::EvictIfCached( + {render_frame_host_->GetProcess()->GetID(), + render_frame_host_->GetRoutingID()}, + "ContentPasswordManagerDriver::CanShowAutofillUi"); +} + const GURL& ContentPasswordManagerDriver::GetLastCommittedURL() const { return render_frame_host_->GetLastCommittedURL(); }
diff --git a/components/password_manager/content/browser/content_password_manager_driver.h b/components/password_manager/content/browser/content_password_manager_driver.h index ed2ab85..e8b2cef 100644 --- a/components/password_manager/content/browser/content_password_manager_driver.h +++ b/components/password_manager/content/browser/content_password_manager_driver.h
@@ -77,6 +77,7 @@ void SendLoggingAvailability() override; autofill::AutofillDriver* GetAutofillDriver() override; bool IsMainFrame() const override; + bool CanShowAutofillUi() const override; const GURL& GetLastCommittedURL() const override; void AnnotateFieldsWithParsingResult( const autofill::ParsingResult& parsing_result) override;
diff --git a/components/password_manager/core/browser/password_autofill_manager.cc b/components/password_manager/core/browser/password_autofill_manager.cc index d53f3e6..06bd330 100644 --- a/components/password_manager/core/browser/password_autofill_manager.cc +++ b/components/password_manager/core/browser/password_autofill_manager.cc
@@ -357,6 +357,9 @@ suggestions.push_back(suggestion); } + if (!password_manager_driver_->CanShowAutofillUi()) + return; + metrics_util::LogPasswordDropdownShown( metrics_util::PasswordDropdownState::kStandard, password_client_->IsIncognito()); @@ -408,6 +411,9 @@ metrics_util::SHOW_ALL_SAVED_PASSWORDS_CONTEXT_PASSWORD); } + if (!password_manager_driver_->CanShowAutofillUi()) + return false; + metrics_util::LogPasswordDropdownShown( metrics_util::PasswordDropdownState::kStandardGenerate, password_client_->IsIncognito());
diff --git a/components/password_manager/core/browser/password_manager_driver.h b/components/password_manager/core/browser/password_manager_driver.h index 74f28d9..e1d81074 100644 --- a/components/password_manager/core/browser/password_manager_driver.h +++ b/components/password_manager/core/browser/password_manager_driver.h
@@ -105,6 +105,10 @@ // Return true iff the driver corresponds to the main frame. virtual bool IsMainFrame() const = 0; + // Returns true iff a popup can be shown on the behalf of the associated + // frame. + virtual bool CanShowAutofillUi() const = 0; + // Returns the last committed URL of the frame. virtual const GURL& GetLastCommittedURL() const = 0;
diff --git a/components/password_manager/core/browser/stub_password_manager_driver.cc b/components/password_manager/core/browser/stub_password_manager_driver.cc index 9ee8b0cc..d0c05db 100644 --- a/components/password_manager/core/browser/stub_password_manager_driver.cc +++ b/components/password_manager/core/browser/stub_password_manager_driver.cc
@@ -55,6 +55,10 @@ return true; } +bool StubPasswordManagerDriver::CanShowAutofillUi() const { + return true; +} + const GURL& StubPasswordManagerDriver::GetLastCommittedURL() const { return GURL::EmptyGURL(); }
diff --git a/components/password_manager/core/browser/stub_password_manager_driver.h b/components/password_manager/core/browser/stub_password_manager_driver.h index 6964f40..5ce5abeb 100644 --- a/components/password_manager/core/browser/stub_password_manager_driver.h +++ b/components/password_manager/core/browser/stub_password_manager_driver.h
@@ -33,6 +33,7 @@ PasswordAutofillManager* GetPasswordAutofillManager() override; autofill::AutofillDriver* GetAutofillDriver() override; bool IsMainFrame() const override; + bool CanShowAutofillUi() const override; const GURL& GetLastCommittedURL() const override; private:
diff --git a/components/safe_browsing/core/browser/safe_browsing_network_context.cc b/components/safe_browsing/core/browser/safe_browsing_network_context.cc index ca31d367..228ab03 100644 --- a/components/safe_browsing/core/browser/safe_browsing_network_context.cc +++ b/components/safe_browsing/core/browser/safe_browsing_network_context.cc
@@ -96,6 +96,7 @@ network::mojom::URLLoaderFactory* GetURLLoaderFactory() { DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); if (!url_loader_factory_ || !url_loader_factory_.is_connected()) { + url_loader_factory_.reset(); network::mojom::URLLoaderFactoryParamsPtr params = network::mojom::URLLoaderFactoryParams::New(); params->process_id = network::mojom::kBrowserProcessId;
diff --git a/components/security_interstitials/core/common/resources/BUILD.gn b/components/security_interstitials/core/common/resources/BUILD.gn index 42e99e6..087b931 100644 --- a/components/security_interstitials/core/common/resources/BUILD.gn +++ b/components/security_interstitials/core/common/resources/BUILD.gn
@@ -13,9 +13,13 @@ js_library("interstitial_common") { deps = [ + "//ui/webui/resources/js:load_time_data", "//ui/webui/resources/js:util", "//ui/webui/resources/js:webui_resource_test", ] + if (is_ios) { + deps += [ "//ui/webui/resources/js/ios:web_ui" ] + } } js_library("interstitial_mobile_nav") {
diff --git a/components/security_interstitials/core/common/resources/interstitial_common.js b/components/security_interstitials/core/common/resources/interstitial_common.js index 240aad20..11f087d 100644 --- a/components/security_interstitials/core/common/resources/interstitial_common.js +++ b/components/security_interstitials/core/common/resources/interstitial_common.js
@@ -98,16 +98,25 @@ } return; } -// <if expr="not is_ios"> + // <if expr="not is_ios"> window.domAutomationController.send(cmd); -// </if> -// <if expr="is_ios"> - // TODO(crbug.com/565877): Revisit message passing for WKWebView. - const iframe = document.createElement('IFRAME'); - iframe.setAttribute('src', 'js-command:' + cmd); - document.documentElement.appendChild(iframe); - iframe.parentNode.removeChild(iframe); -// </if> + // </if> + // <if expr="is_ios"> + // TODO(crbug.com/987407): Used to send commands for non-committed + // interstitials on iOS. Should be deleted after committed interstitials are + // fully launched. + if (!loadTimeData.getBoolean('committed_interstitials_enabled')) { + const iframe = document.createElement('IFRAME'); + iframe.setAttribute('src', 'js-command:' + cmd); + document.documentElement.appendChild(iframe); + iframe.parentNode.removeChild(iframe); + } else { + // Used to send commands for iOS committed interstitials. + /** @suppress {undefinedVars|missingProperties} */ (function() { + __gCrWeb.message.invokeOnHost({'command': 'blockingPage.' + cmd}); + })(); + } + // </if> } /**
diff --git a/components/url_formatter/spoof_checks/top_domains/BUILD.gn b/components/url_formatter/spoof_checks/top_domains/BUILD.gn index 2ba6edf..17db64b 100644 --- a/components/url_formatter/spoof_checks/top_domains/BUILD.gn +++ b/components/url_formatter/spoof_checks/top_domains/BUILD.gn
@@ -94,6 +94,7 @@ ] deps = [ + "//base", "//net", ] }
diff --git a/components/url_formatter/spoof_checks/top_domains/make_top_domain_list_variables.cc b/components/url_formatter/spoof_checks/top_domains/make_top_domain_list_variables.cc index 6e6c393..3a552ae 100644 --- a/components/url_formatter/spoof_checks/top_domains/make_top_domain_list_variables.cc +++ b/components/url_formatter/spoof_checks/top_domains/make_top_domain_list_variables.cc
@@ -130,10 +130,8 @@ } if (keywords.size() < kTopN) { - std::string keywords_for_current_line; - base::TrimString( - url_formatter::top_domains::HostnameWithoutRegistry(line), ".", - &keywords_for_current_line); + std::string keywords_for_current_line = + url_formatter::top_domains::HostnameWithoutRegistry(line); CHECK(keywords_for_current_line.find('.') == std::string::npos); for (const std::string& keyword : base::SplitString(
diff --git a/components/url_formatter/spoof_checks/top_domains/top_domain_util.cc b/components/url_formatter/spoof_checks/top_domains/top_domain_util.cc index 6515bf2..3559e26 100644 --- a/components/url_formatter/spoof_checks/top_domains/top_domain_util.cc +++ b/components/url_formatter/spoof_checks/top_domains/top_domain_util.cc
@@ -3,6 +3,7 @@ // found in the LICENSE file. #include "components/url_formatter/spoof_checks/top_domains/top_domain_util.h" +#include "base/strings/string_util.h" #include "net/base/registry_controlled_domains/registry_controlled_domain.h" namespace url_formatter { @@ -13,9 +14,9 @@ // Minimum length of the e2LD (the registered domain name without the registry) // to be considered for an edit distance comparison, including a trailing dot. -// Thus: 'google.com' has of length 7 ("google.") and is long enough, while -// 'abc.co.uk' has a length of 4 ("abc."), and will not be considered. -const size_t kMinLengthForEditDistance = 6u; +// Thus: 'google.com' has of length 6 ("google") and is long enough, while +// 'abc.co.uk' has a length of 3 ("abc"), and will not be considered. +const size_t kMinLengthForEditDistance = 5u; } // namespace @@ -31,7 +32,9 @@ hostname.c_str(), net::registry_controlled_domains::EXCLUDE_UNKNOWN_REGISTRIES, net::registry_controlled_domains::EXCLUDE_PRIVATE_REGISTRIES); - return hostname.substr(0, hostname.size() - registry_size); + std::string out = hostname.substr(0, hostname.size() - registry_size); + base::TrimString(out, ".", &out); + return out; } } // namespace top_domains
diff --git a/components/url_formatter/spoof_checks/top_domains/top_domain_util.h b/components/url_formatter/spoof_checks/top_domains/top_domain_util.h index 3f47fd0..bff3bd38 100644 --- a/components/url_formatter/spoof_checks/top_domains/top_domain_util.h +++ b/components/url_formatter/spoof_checks/top_domains/top_domain_util.h
@@ -17,10 +17,7 @@ // Returns the portion of hostname without the registry part. // E.g. For hostname = "google.com", the registry is "com", and the return value -// will be "google.". Note that the return value contains a trailing dot. This -// doesn't affect the result when comparing two different domains excluding -// their registries (e.g. when checking google.com.tr and google.com.tw likely -// belong to the same organization). +// will be "google". std::string HostnameWithoutRegistry(const std::string& hostname); } // namespace top_domains
diff --git a/components/url_formatter/spoof_checks/top_domains/top_domain_util_unittest.cc b/components/url_formatter/spoof_checks/top_domains/top_domain_util_unittest.cc index 5def1d5..03ec5ec 100644 --- a/components/url_formatter/spoof_checks/top_domains/top_domain_util_unittest.cc +++ b/components/url_formatter/spoof_checks/top_domains/top_domain_util_unittest.cc
@@ -15,14 +15,18 @@ // Domain label ("abc") is too short, even though the whole string is long // enough. EXPECT_FALSE(IsEditDistanceCandidate("abc.com.tr")); + // Also too short. + EXPECT_FALSE(IsEditDistanceCandidate("abcd.com.tr")); + // Label has 5 characters, which is sufficient. + EXPECT_TRUE(IsEditDistanceCandidate("abcde.com.tr")); } TEST(TopDomainUtilTest, HostnameWithoutRegistry) { EXPECT_EQ("google", HostnameWithoutRegistry("google")); - EXPECT_EQ("google.", HostnameWithoutRegistry("google.")); - EXPECT_EQ("google..", HostnameWithoutRegistry("google..")); - EXPECT_EQ("google.", HostnameWithoutRegistry("google.com")); - EXPECT_EQ("google.", HostnameWithoutRegistry("google.com.tr")); + EXPECT_EQ("google", HostnameWithoutRegistry("google.")); + EXPECT_EQ("google", HostnameWithoutRegistry("google..")); + EXPECT_EQ("google", HostnameWithoutRegistry("google.com")); + EXPECT_EQ("google", HostnameWithoutRegistry("google.com.tr")); // blogspot.com is a private registry. - EXPECT_EQ("blogspot.", HostnameWithoutRegistry("blogspot.com")); + EXPECT_EQ("blogspot", HostnameWithoutRegistry("blogspot.com")); }
diff --git a/components/viz/BUILD.gn b/components/viz/BUILD.gn index e8464da..b71518b 100644 --- a/components/viz/BUILD.gn +++ b/components/viz/BUILD.gn
@@ -27,6 +27,7 @@ ] data_deps = [ + "//testing/buildbot/filters:viz_unittests_filters", "//third_party/mesa_headers", ]
diff --git a/components/viz/service/display/software_renderer.cc b/components/viz/service/display/software_renderer.cc index ae25633..b7709d9 100644 --- a/components/viz/service/display/software_renderer.cc +++ b/components/viz/service/display/software_renderer.cc
@@ -4,6 +4,7 @@ #include "components/viz/service/display/software_renderer.h" +#include "base/process/memory.h" #include "base/trace_event/trace_event.h" #include "cc/base/math_util.h" #include "cc/paint/image_provider.h" @@ -617,9 +618,12 @@ geometry.result_selection.right(), geometry.result_selection.bottom()}); } else /* if (!request->is_scaled()) */ { - bitmap.allocPixels(SkImageInfo::MakeN32Premul( + SkImageInfo info = SkImageInfo::MakeN32Premul( geometry.result_selection.width(), geometry.result_selection.height(), - std::move(color_space))); + std::move(color_space)); + if (!bitmap.tryAllocPixels(info)) + return; + if (!current_canvas_->readPixels(bitmap, geometry.readback_offset.x(), geometry.readback_offset.y())) return; @@ -715,9 +719,12 @@ SkBitmap SoftwareRenderer::GetBackdropBitmap( const gfx::Rect& bounding_rect) const { + SkImageInfo info = + SkImageInfo::MakeN32Premul(bounding_rect.width(), bounding_rect.height()); SkBitmap bitmap; - bitmap.allocPixels(SkImageInfo::MakeN32Premul(bounding_rect.width(), - bounding_rect.height())); + if (!bitmap.tryAllocPixels(info)) + base::TerminateBecauseOutOfMemory(info.computeMinByteSize()); + if (!current_canvas_->readPixels(bitmap, bounding_rect.x(), bounding_rect.y())) bitmap.reset(); @@ -846,7 +853,9 @@ SkImageInfo info = SkImageInfo::MakeN32Premul(backdrop_rect.width(), backdrop_rect.height()); SkBitmap bitmap; - bitmap.allocPixels(info, info.minRowBytes()); + if (!bitmap.tryAllocPixels(info)) + base::TerminateBecauseOutOfMemory(info.computeMinByteSize()); + SkCanvas canvas(bitmap); // Clip the filtered image to the (rounded) bounding box of the element. @@ -922,7 +931,9 @@ SkImageInfo::MakeN32(requirements.size.width(), requirements.size.height(), kPremul_SkAlphaType); SkBitmap bitmap; - bitmap.allocPixels(info); + if (!bitmap.tryAllocPixels(info)) + base::TerminateBecauseOutOfMemory(info.computeMinByteSize()); + render_pass_bitmaps_.emplace(render_pass_id, std::move(bitmap)); }
diff --git a/components/viz/service/display_embedder/image_context_impl.cc b/components/viz/service/display_embedder/image_context_impl.cc index e38ce38b..f4e05e5 100644 --- a/components/viz/service/display_embedder/image_context_impl.cc +++ b/components/viz/service/display_embedder/image_context_impl.cc
@@ -50,7 +50,8 @@ void ImageContextImpl::OnContextLost() { if (representation_) { representation_->OnContextLost(); - representation_ = nullptr; + representation_scoped_read_access_.reset(); + representation_.reset(); } if (fallback_context_state_) {
diff --git a/components/viz/service/frame_sinks/begin_frame_tracker.cc b/components/viz/service/frame_sinks/begin_frame_tracker.cc index 0a8bcf4..9df2df9 100644 --- a/components/viz/service/frame_sinks/begin_frame_tracker.cc +++ b/components/viz/service/frame_sinks/begin_frame_tracker.cc
@@ -6,12 +6,22 @@ namespace viz { +BeginFrameTracker::BeginFrameTracker() = default; + +BeginFrameTracker::~BeginFrameTracker() = default; + void BeginFrameTracker::SentBeginFrame(const BeginFrameArgs& args) { + ++total_begin_frames_sent_; + recent_begin_frames_sent_.SaveToBuffer(args.frame_id); + ++outstanding_begin_frames_; last_frame_id_ = args.frame_id; } void BeginFrameTracker::ReceivedAck(const BeginFrameAck& ack) { + ++total_acks_received_; + recent_acks_received_.SaveToBuffer(ack.frame_id); + if (MatchesLastSent(ack)) { // If the BeginFrameAck matches the last sent BeginFrameArgs then we know // the client has read every message from the pipe. While the client
diff --git a/components/viz/service/frame_sinks/begin_frame_tracker.h b/components/viz/service/frame_sinks/begin_frame_tracker.h index 6b1e77e..1acebd8 100644 --- a/components/viz/service/frame_sinks/begin_frame_tracker.h +++ b/components/viz/service/frame_sinks/begin_frame_tracker.h
@@ -5,6 +5,7 @@ #ifndef COMPONENTS_VIZ_SERVICE_FRAME_SINKS_BEGIN_FRAME_TRACKER_H_ #define COMPONENTS_VIZ_SERVICE_FRAME_SINKS_BEGIN_FRAME_TRACKER_H_ +#include "base/containers/ring_buffer.h" #include "components/viz/common/frame_sinks/begin_frame_args.h" #include "components/viz/service/viz_service_export.h" @@ -23,6 +24,9 @@ static constexpr int kLimitStop = 100; static constexpr int kLimitThrottle = 10; + BeginFrameTracker(); + ~BeginFrameTracker(); + // To be called every time OnBeginFrame() is sent. void SentBeginFrame(const BeginFrameArgs& args); @@ -38,6 +42,15 @@ int outstanding_begin_frames_ = 0; BeginFrameId last_frame_id_; + + // The following variables are keeping track of some information about sent + // and received BeginFrameIds. This information is just being tracked only so + // it's available in crash minidumps to help debug https://crbug.com/1011441. + // TODO(crbug.com/1011441): Remove this before it hits stable channel! + int total_begin_frames_sent_ = 0; + int total_acks_received_ = 0; + base::RingBuffer<BeginFrameId, 10> recent_begin_frames_sent_; + base::RingBuffer<BeginFrameId, 10> recent_acks_received_; }; } // namespace viz
diff --git a/content/browser/BUILD.gn b/content/browser/BUILD.gn index c4bc9e5d..fc5bf567 100644 --- a/content/browser/BUILD.gn +++ b/content/browser/BUILD.gn
@@ -367,6 +367,7 @@ "android/java_interfaces_impl.h", "android/launcher_thread.cc", "android/launcher_thread.h", + "android/message_port_descriptor.cc", "android/scoped_surface_request_manager.cc", "android/scoped_surface_request_manager.h", "android/text_suggestion_host_android.cc",
diff --git a/content/browser/android/message_port_descriptor.cc b/content/browser/android/message_port_descriptor.cc new file mode 100644 index 0000000..2cb32fc --- /dev/null +++ b/content/browser/android/message_port_descriptor.cc
@@ -0,0 +1,182 @@ +// Copyright 2020 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// This file contains the native implementation of MessagePortDescriptor.java, +// which wraps blink::MessagePortDescriptor from +// /third_party/blink/public/common/messaging/message_port_descriptor.h. + +#include "third_party/blink/public/common/messaging/message_port_descriptor.h" + +#include "base/android/jni_android.h" +#include "base/android/jni_array.h" +#include "base/android/scoped_java_ref.h" +#include "base/stl_util.h" +#include "base/unguessable_token.h" +#include "content/public/android/content_jni_headers/AppWebMessagePortDescriptor_jni.h" +#include "mojo/public/cpp/system/message_pipe.h" + +using base::android::JavaRef; +using base::android::ScopedJavaLocalRef; + +namespace blink { + +// Helper that provides access to protected member functions of +// blink::MessagePortDescriptor. +class MessagePortJavaAccess { + public: + static MessagePortDescriptor::InstrumentationDelegate* GetDelegate() { + return MessagePortDescriptor::GetInstrumentationDelegate(); + } + + static mojo::ScopedMessagePipeHandle TakeHandleToEntangleWithEmbedder( + blink::MessagePortDescriptor* message_port_descriptor) { + return message_port_descriptor->TakeHandleToEntangleWithEmbedder(); + } + + static void GiveDisentangledHandle( + blink::MessagePortDescriptor* message_port_descriptor, + mojo::ScopedMessagePipeHandle handle) { + message_port_descriptor->GiveDisentangledHandle(std::move(handle)); + } + + static void Init(blink::MessagePortDescriptor* message_port_descriptor, + mojo::ScopedMessagePipeHandle handle, + const base::UnguessableToken& id, + uint64_t sequence_number) { + message_port_descriptor->Init(std::move(handle), id, sequence_number); + } + + static mojo::ScopedMessagePipeHandle TakeHandle( + blink::MessagePortDescriptor* message_port_descriptor) { + return message_port_descriptor->TakeHandle(); + } + + static base::UnguessableToken TakeId( + blink::MessagePortDescriptor* message_port_descriptor) { + return message_port_descriptor->TakeId(); + } + + static uint64_t TakeSequenceNumber( + blink::MessagePortDescriptor* message_port_descriptor) { + return message_port_descriptor->TakeSequenceNumber(); + } +}; + +} // namespace blink + +namespace { + +mojo::ScopedMessagePipeHandle WrapNativeHandle(jint native_handle) { + MojoHandle raw_handle = static_cast<MojoHandle>(native_handle); + DCHECK_NE(MOJO_HANDLE_INVALID, raw_handle); + return mojo::ScopedMessagePipeHandle(mojo::MessagePipeHandle(raw_handle)); +} + +} // namespace + +JNI_EXPORT ScopedJavaLocalRef<jlongArray> +JNI_AppWebMessagePortDescriptor_CreatePair(JNIEnv* env) { + // Ownership is passed to the Java code. These are cleaned up when + // CloseAndDestroy is called. + blink::MessagePortDescriptor* port0 = new blink::MessagePortDescriptor(); + blink::MessagePortDescriptor* port1 = new blink::MessagePortDescriptor(); + + blink::MessagePortDescriptorPair pipe; + *port0 = pipe.TakePort0(); + *port1 = pipe.TakePort1(); + + uint64_t pointers[2] = {reinterpret_cast<uint64_t>(port0), + reinterpret_cast<uint64_t>(port1)}; + return base::android::ToJavaLongArray( + env, reinterpret_cast<const int64_t*>(pointers), base::size(pointers)); +} + +JNI_EXPORT jlong JNI_AppWebMessagePortDescriptor_Create(JNIEnv* env, + jint native_handle, + jlong id_low, + jlong id_high, + jlong sequence_number) { + base::UnguessableToken id = base::UnguessableToken::Deserialize( + static_cast<uint64_t>(id_high), static_cast<uint64_t>(id_low)); + + // Ownership is passed to the Java code. This is cleaned up when + // CloseAndDestroy is called. + blink::MessagePortDescriptor* port = new blink::MessagePortDescriptor(); + blink::MessagePortJavaAccess::Init(port, WrapNativeHandle(native_handle), id, + sequence_number); + + return reinterpret_cast<jlong>(port); +} + +JNI_EXPORT jint JNI_AppWebMessagePortDescriptor_TakeHandleToEntangle( + JNIEnv* env, + jlong native_message_port_decriptor) { + blink::MessagePortDescriptor* message_port_descriptor = + reinterpret_cast<blink::MessagePortDescriptor*>( + native_message_port_decriptor); + DCHECK(message_port_descriptor->IsValid()); + DCHECK(!message_port_descriptor->IsEntangled()); + + // Ownership of the underlying native handle is passed to Java. It is returned + // before tear-down via GiveDisentangledHandle. + mojo::ScopedMessagePipeHandle handle = + blink::MessagePortJavaAccess::TakeHandleToEntangleWithEmbedder( + message_port_descriptor); + + return static_cast<jint>(handle.release().value()); +} + +JNI_EXPORT void JNI_AppWebMessagePortDescriptor_GiveDisentangledHandle( + JNIEnv* env, + jlong native_message_port_decriptor, + jint native_handle) { + blink::MessagePortDescriptor* message_port_descriptor = + reinterpret_cast<blink::MessagePortDescriptor*>( + native_message_port_decriptor); + DCHECK(message_port_descriptor->IsValid()); + DCHECK(message_port_descriptor->IsEntangled()); + + blink::MessagePortJavaAccess::GiveDisentangledHandle( + message_port_descriptor, WrapNativeHandle(native_handle)); +} + +JNI_EXPORT ScopedJavaLocalRef<jlongArray> +JNI_AppWebMessagePortDescriptor_PassSerialized( + JNIEnv* env, + jlong native_message_port_decriptor) { + blink::MessagePortDescriptor* message_port_descriptor = + reinterpret_cast<blink::MessagePortDescriptor*>( + native_message_port_decriptor); + DCHECK(message_port_descriptor->IsValid()); + DCHECK(!message_port_descriptor->IsEntangled()); + + // Tear down and free the native object. + mojo::ScopedMessagePipeHandle handle = + blink::MessagePortJavaAccess::TakeHandle(message_port_descriptor); + base::UnguessableToken id = + blink::MessagePortJavaAccess::TakeId(message_port_descriptor); + uint64_t sequence_number = + blink::MessagePortJavaAccess::TakeSequenceNumber(message_port_descriptor); + delete message_port_descriptor; + + // Serialize its contents and pass to the Java implementation. + uint64_t serialized[4] = {handle.release().value(), + id.GetLowForSerialization(), + id.GetHighForSerialization(), sequence_number}; + return base::android::ToJavaLongArray( + env, reinterpret_cast<const int64_t*>(serialized), + base::size(serialized)); +} + +JNI_EXPORT void JNI_AppWebMessagePortDescriptor_CloseAndDestroy( + JNIEnv* env, + jlong native_message_port_decriptor) { + blink::MessagePortDescriptor* message_port_descriptor = + reinterpret_cast<blink::MessagePortDescriptor*>( + native_message_port_decriptor); + DCHECK(message_port_descriptor->IsValid()); + DCHECK(!message_port_descriptor->IsEntangled()); + message_port_descriptor->Reset(); + delete message_port_descriptor; +}
diff --git a/content/browser/frame_host/navigation_controller_impl_unittest.cc b/content/browser/frame_host/navigation_controller_impl_unittest.cc index 7ec27de..eebc94c 100644 --- a/content/browser/frame_host/navigation_controller_impl_unittest.cc +++ b/content/browser/frame_host/navigation_controller_impl_unittest.cc
@@ -3018,7 +3018,7 @@ // If something else modifies the contents of the about:blank page, then // we must revert to showing about:blank to avoid a URL spoof. - main_test_rfh()->OnMessageReceived(FrameHostMsg_DidAccessInitialDocument(0)); + main_test_rfh()->DidAccessInitialDocument(); EXPECT_TRUE(contents()->HasAccessedInitialDocument()); EXPECT_FALSE(controller.GetVisibleEntry()); EXPECT_EQ(url, controller.GetPendingEntry()->GetURL()); @@ -3062,7 +3062,7 @@ // If something else later modifies the contents of the about:blank page, then // we must revert to showing about:blank to avoid a URL spoof. - main_test_rfh()->OnMessageReceived(FrameHostMsg_DidAccessInitialDocument(0)); + main_test_rfh()->DidAccessInitialDocument(); EXPECT_TRUE(contents()->HasAccessedInitialDocument()); EXPECT_FALSE(controller.GetVisibleEntry()); EXPECT_FALSE(controller.GetPendingEntry()); @@ -3100,7 +3100,7 @@ // If something else later modifies the contents of the about:blank page, then // we must revert to showing about:blank to avoid a URL spoof. - main_test_rfh()->OnMessageReceived(FrameHostMsg_DidAccessInitialDocument(0)); + main_test_rfh()->DidAccessInitialDocument(); EXPECT_TRUE(contents()->HasAccessedInitialDocument()); EXPECT_FALSE(controller.GetVisibleEntry()); EXPECT_EQ(url, controller.GetPendingEntry()->GetURL()); @@ -3140,7 +3140,7 @@ // we must revert to showing about:blank to avoid a URL spoof. // Pending entry should also be discarded, because renderer doesn't want to // show this page anymore. - main_test_rfh()->OnMessageReceived(FrameHostMsg_DidAccessInitialDocument(0)); + main_test_rfh()->DidAccessInitialDocument(); EXPECT_TRUE(contents()->HasAccessedInitialDocument()); EXPECT_FALSE(controller.GetVisibleEntry()); EXPECT_FALSE(controller.GetPendingEntry());
diff --git a/content/browser/frame_host/navigation_request.cc b/content/browser/frame_host/navigation_request.cc index 8ea8cfe..087edf5 100644 --- a/content/browser/frame_host/navigation_request.cc +++ b/content/browser/frame_host/navigation_request.cc
@@ -296,6 +296,17 @@ headers->SetHeader(net::HttpRequestHeaders::kOrigin, origin_header_value.Serialize()); } + + if (base::FeatureList::IsEnabled(features::kDocumentPolicy)) { + const blink::DocumentPolicy::FeatureState& required_policy = + frame_tree_node->effective_frame_policy().required_document_policy; + if (!required_policy.empty()) { + base::Optional<std::string> policy_header = + blink::DocumentPolicy::Serialize(required_policy); + DCHECK(policy_header); + headers->SetHeader("Sec-Required-Document-Policy", policy_header.value()); + } + } } // Should match the definition of
diff --git a/content/browser/frame_host/render_frame_host_impl.cc b/content/browser/frame_host/render_frame_host_impl.cc index bc110d4..093e7f1 100644 --- a/content/browser/frame_host/render_frame_host_impl.cc +++ b/content/browser/frame_host/render_frame_host_impl.cc
@@ -1675,8 +1675,6 @@ OnRunJavaScriptDialog) IPC_MESSAGE_HANDLER_DELAY_REPLY(FrameHostMsg_RunBeforeUnloadConfirm, OnRunBeforeUnloadConfirm) - IPC_MESSAGE_HANDLER(FrameHostMsg_DidAccessInitialDocument, - OnDidAccessInitialDocument) IPC_MESSAGE_HANDLER(FrameHostMsg_DidChangeOpener, OnDidChangeOpener) IPC_MESSAGE_HANDLER(FrameHostMsg_DidChangeFramePolicy, OnDidChangeFramePolicy) @@ -2096,7 +2094,7 @@ params->widget_params->routing_id = GetLocalRenderWidgetHost()->GetRoutingID(); params->widget_params->visual_properties = - GetLocalRenderWidgetHost()->GetVisualProperties(); + GetLocalRenderWidgetHost()->GetInitialVisualProperties(); } GetProcess()->GetRendererInterface()->CreateFrame(std::move(params)); @@ -3354,7 +3352,7 @@ return frame_tree_node_->HasTransientUserActivation(); } -void RenderFrameHostImpl::OnDidAccessInitialDocument() { +void RenderFrameHostImpl::DidAccessInitialDocument() { delegate_->DidAccessInitialDocument(); }
diff --git a/content/browser/frame_host/render_frame_host_impl.h b/content/browser/frame_host/render_frame_host_impl.h index 2b4cc6c..425f750 100644 --- a/content/browser/frame_host/render_frame_host_impl.h +++ b/content/browser/frame_host/render_frame_host_impl.h
@@ -1299,6 +1299,7 @@ void BubbleLogicalScrollInParentFrame( blink::mojom::ScrollDirection direction, ui::input_types::ScrollGranularity granularity) override; + void DidAccessInitialDocument() override; protected: friend class RenderFrameHostFactory; @@ -1454,7 +1455,6 @@ JavaScriptDialogType dialog_type, IPC::Message* reply_msg); void OnRunBeforeUnloadConfirm(bool is_reload, IPC::Message* reply_msg); - void OnDidAccessInitialDocument(); void OnDidChangeOpener(int32_t opener_routing_id); void OnDidChangeFramePolicy(int32_t frame_routing_id,
diff --git a/content/browser/frame_host/render_frame_host_impl_browsertest.cc b/content/browser/frame_host/render_frame_host_impl_browsertest.cc index bc9bc16..6cd3d42 100644 --- a/content/browser/frame_host/render_frame_host_impl_browsertest.cc +++ b/content/browser/frame_host/render_frame_host_impl_browsertest.cc
@@ -12,6 +12,7 @@ #include "base/path_service.h" #include "base/run_loop.h" #include "base/strings/strcat.h" +#include "base/strings/string_util.h" #include "base/strings/utf_string_conversions.h" #include "base/test/bind_test_util.h" #include "base/test/metrics/histogram_tester.h" @@ -60,9 +61,11 @@ #include "services/network/public/cpp/simple_url_loader.h" #include "services/network/public/mojom/url_loader_factory.mojom.h" #include "services/network/test/test_url_loader_factory.h" +#include "services/service_manager/public/cpp/interface_provider.h" #include "testing/gmock/include/gmock/gmock.h" #include "third_party/blink/public/mojom/browser_interface_broker.mojom-test-utils.h" #include "third_party/blink/public/mojom/choosers/file_chooser.mojom.h" +#include "third_party/blink/public/mojom/remote_objects/remote_objects.mojom.h" #include "url/gurl.h" #include "url/origin.h" @@ -3635,4 +3638,108 @@ EXPECT_TRUE(web_contents->IsDocumentOnLoadCompletedInMainFrame()); } +// TODO(crbug.com/794320): the code below is temporary and will be removed when +// Java Bridge is mojofied. +#if defined(OS_ANDROID) +const int32_t kObjectId = 5; +const char* const kMethods[] = {"b", "c", "d"}; + +class MockObject : public blink::mojom::RemoteObject { + public: + void HasMethod(const std::string& name, HasMethodCallback callback) override { + // TODO(crbug.com/794320): implement this. + } + + void GetMethods(GetMethodsCallback callback) override { + std::move(callback).Run( + std::vector<std::string>(std::begin(kMethods), std::end(kMethods))); + } + void InvokeMethod( + const std::string& name, + std::vector<blink::mojom::RemoteInvocationArgumentPtr> arguments, + InvokeMethodCallback callback) override { + // TODO(crbug.com/794320): implement this. + } +}; + +class MockObjectHost : public blink::mojom::RemoteObjectHost { + public: + void GetObject( + int32_t object_id, + mojo::PendingReceiver<blink::mojom::RemoteObject> receiver) override { + EXPECT_EQ(kObjectId, object_id); + mojo::MakeSelfOwnedReceiver(std::make_unique<MockObject>(), + std::move(receiver)); + } + + void ReleaseObject(int32_t) override { + // TODO(crbug.com/794320): implement this. + } + + mojo::PendingRemote<blink::mojom::RemoteObjectHost> GetRemote() { + return receiver_.BindNewPipeAndPassRemote(); + } + + private: + mojo::Receiver<blink::mojom::RemoteObjectHost> receiver_{this}; +}; + +class RenderFrameHostObserver : public WebContentsObserver { + public: + explicit RenderFrameHostObserver(WebContents* web_contents) + : WebContentsObserver(web_contents) {} + + private: + void RenderFrameCreated(RenderFrameHost* render_frame_host) override { + mojo::Remote<blink::mojom::RemoteObjectGateway> gateway; + mojo::Remote<blink::mojom::RemoteObjectGatewayFactory> factory; + static_cast<RenderFrameHostImpl*>(render_frame_host) + ->GetRemoteInterfaces() + ->GetInterface(factory.BindNewPipeAndPassReceiver()); + factory->CreateRemoteObjectGateway(host_.GetRemote(), + gateway.BindNewPipeAndPassReceiver()); + gateway->AddNamedObject("testObject", kObjectId); + } + + MockObjectHost host_; + + DISALLOW_COPY_AND_ASSIGN(RenderFrameHostObserver); +}; + +// TODO(crbug.com/794320): Remove this when the new Java Bridge code is +// integrated into WebView. +// This test is a temporary way of verifying that the renderer part +// works as expected. +IN_PROC_BROWSER_TEST_F(RenderFrameHostImplBrowserTest, + RemoteObjectEnumerateProperties) { + GURL url1(embedded_test_server()->GetURL("/empty.html")); + + WebContents* web_contents = shell()->web_contents(); + RenderFrameHostObserver rfh_observer(web_contents); + + { + // The first load triggers RenderFrameCreated on |rfh_observer|, where the + // object injection happens. + TestNavigationObserver observer(web_contents); + shell()->LoadURL(url1); + observer.Wait(); + } + + { + // Injected objects become visible only after reload + // (see JavaBridgeBasicsTest#testEnumerateMembers in + // JavaBridgeBasicsTest.java). + TestNavigationObserver observer(web_contents); + web_contents->GetController().Reload(ReloadType::NORMAL, false); + observer.Wait(); + } + + const std::string kScript = "Object.keys(testObject).join(' ');"; + auto result = EvalJs(web_contents, kScript); + EXPECT_EQ(base::JoinString(std::vector<std::string>(std::begin(kMethods), + std::end(kMethods)), + " "), + result.value.GetString()); +} +#endif // OS_ANDROID } // namespace content
diff --git a/content/browser/indexed_db/indexed_db_backing_store.cc b/content/browser/indexed_db/indexed_db_backing_store.cc index 7790292..4a5f6821 100644 --- a/content/browser/indexed_db/indexed_db_backing_store.cc +++ b/content/browser/indexed_db/indexed_db_backing_store.cc
@@ -268,16 +268,16 @@ // (for Files only) fileName [string-with-length] // } // There is no length field; just read until you run out of data. -std::string EncodeBlobInfos(const std::vector<IndexedDBBlobInfo*>& blob_info) { +std::string EncodeBlobInfos(const std::vector<IndexedDBBlobInfo>& blob_info) { std::string ret; - for (const auto* info : blob_info) { - EncodeBool(info->is_file(), &ret); - EncodeVarInt(info->blob_number(), &ret); - EncodeStringWithLength(info->type(), &ret); - if (info->is_file()) - EncodeStringWithLength(info->file_name(), &ret); + for (const auto& info : blob_info) { + EncodeBool(info.is_file(), &ret); + EncodeVarInt(info.blob_number(), &ret); + EncodeStringWithLength(info.type(), &ret); + if (info.is_file()) + EncodeStringWithLength(info.file_name(), &ret); else - EncodeVarInt(info->size(), &ret); + EncodeVarInt(info.size(), &ret); } return ret; } @@ -3005,14 +3005,12 @@ } Status IndexedDBBackingStore::Transaction::HandleBlobPreTransaction( - BlobEntryKeyValuePairVec* new_blob_entries, WriteDescriptorVec* new_files_to_write) { DCHECK_CALLED_ON_VALID_SEQUENCE(idb_sequence_checker_); DCHECK(backing_store_); if (backing_store_->is_incognito()) return Status::OK(); - DCHECK(new_blob_entries->empty()); DCHECK(new_files_to_write->empty()); DCHECK(blobs_to_write_.empty()); @@ -3039,7 +3037,6 @@ } for (auto& iter : blob_change_map_) { - std::vector<IndexedDBBlobInfo*> new_blob_numbers; for (auto& entry : iter.second->mutable_blob_info()) { blobs_to_write_.push_back({database_id_, next_blob_number}); if (entry.is_file() && !entry.file_path().empty()) { @@ -3052,7 +3049,6 @@ entry.last_modified())); } entry.set_blob_number(next_blob_number); - new_blob_numbers.push_back(&entry); ++next_blob_number; result = indexed_db::UpdateBlobNumberGeneratorCurrentNumber( direct_txn.get(), database_id_, next_blob_number); @@ -3065,8 +3061,6 @@ NOTREACHED(); return InternalInconsistencyStatus(); } - new_blob_entries->push_back( - {blob_entry_key, EncodeBlobInfos(new_blob_numbers)}); } AppendBlobsToRecoveryBlobJournal(direct_txn.get(), blobs_to_write_); @@ -3146,9 +3140,8 @@ Status s; - BlobEntryKeyValuePairVec new_blob_entries; WriteDescriptorVec new_files_to_write; - s = HandleBlobPreTransaction(&new_blob_entries, &new_files_to_write); + s = HandleBlobPreTransaction(&new_files_to_write); if (!s.ok()) { INTERNAL_WRITE_ERROR_UNTESTED(TRANSACTION_COMMIT_METHOD); transaction_ = nullptr; @@ -3168,9 +3161,8 @@ if (!new_files_to_write.empty()) { // This kicks off the writes of the new blobs, if any. - // This call will zero out new_blob_entries and new_files_to_write. - return WriteNewBlobs(&new_blob_entries, &new_files_to_write, - std::move(callback)); + // This call will zero out new_files_to_write. + return WriteNewBlobs(&new_files_to_write, std::move(callback)); } else { return std::move(callback).Run( BlobWriteResult::kRunPhaseTwoAndReturnResult); @@ -3191,6 +3183,28 @@ BlobJournalType recovery_journal, active_journal, saved_recovery_journal, inactive_blobs; if (!blob_change_map_.empty()) { + if (!backing_store_->is_incognito()) { + for (auto& iter : blob_change_map_) { + BlobEntryKey blob_entry_key; + StringPiece key_piece(iter.second->object_store_data_key()); + if (!BlobEntryKey::FromObjectStoreDataKey(&key_piece, + &blob_entry_key)) { + NOTREACHED(); + return InternalInconsistencyStatus(); + } + // Add the new blob-table entry for each blob to the main transaction, + // or remove any entry that may exist if there's no new one. + if (iter.second->blob_info().empty()) { + s = transaction_->Remove(blob_entry_key.Encode()); + } else { + std::string tmp = EncodeBlobInfos(iter.second->blob_info()); + s = transaction_->Put(blob_entry_key.Encode(), &tmp); + } + if (!s.ok()) + return s; + } + } + IDB_TRACE("IndexedDBBackingStore::Transaction.BlobJournal"); // Read the persisted states of the recovery/live blob journals, // so that they can be updated correctly by the transaction. @@ -3280,7 +3294,6 @@ } leveldb::Status IndexedDBBackingStore::Transaction::WriteNewBlobs( - BlobEntryKeyValuePairVec* new_blob_entries, WriteDescriptorVec* new_files_to_write, BlobWriteCallback callback) { DCHECK_CALLED_ON_VALID_SEQUENCE(idb_sequence_checker_); @@ -3289,19 +3302,7 @@ DCHECK(backing_store_); DCHECK(!new_files_to_write->empty()); DCHECK_GT(database_id_, 0); - leveldb::Status s; - for (auto& blob_entry_iter : *new_blob_entries) { - // Add the new blob-table entry for each blob to the main transaction, or - // remove any entry that may exist if there's no new one. - if (blob_entry_iter.second.empty()) { - s = transaction_->Remove(blob_entry_iter.first.Encode()); - } else { - s = transaction_->Put(blob_entry_iter.first.Encode(), - &blob_entry_iter.second); - } - if (!s.ok()) - return s; - } + // Creating the writer will start it going asynchronously. The transaction // can be destructed before the callback is triggered.
diff --git a/content/browser/indexed_db/indexed_db_backing_store.h b/content/browser/indexed_db/indexed_db_backing_store.h index 9a5c792c..024215a 100644 --- a/content/browser/indexed_db/indexed_db_backing_store.h +++ b/content/browser/indexed_db/indexed_db_backing_store.h
@@ -149,7 +149,6 @@ // them to the recovery blob journal directly (i.e. not as part of the // transaction). Populates blobs_to_write_. leveldb::Status HandleBlobPreTransaction( - BlobEntryKeyValuePairVec* new_blob_entries, WriteDescriptorVec* new_files_to_write); // Called by CommitPhaseOne: Populates blob_files_to_remove_ by @@ -161,8 +160,7 @@ // Called by CommitPhaseOne: Kicks off the asynchronous writes of blobs // identified in HandleBlobPreTransaction. The callback will be called // eventually on success or failure. - leveldb::Status WriteNewBlobs(BlobEntryKeyValuePairVec* new_blob_entries, - WriteDescriptorVec* new_files_to_write, + leveldb::Status WriteNewBlobs(WriteDescriptorVec* new_files_to_write, BlobWriteCallback callback); // Called by CommitPhaseTwo: Partition blob references in blobs_to_remove_
diff --git a/content/browser/indexed_db/indexed_db_blob_storage.h b/content/browser/indexed_db/indexed_db_blob_storage.h index 9612fb58..2a26794 100644 --- a/content/browser/indexed_db/indexed_db_blob_storage.h +++ b/content/browser/indexed_db/indexed_db_blob_storage.h
@@ -129,11 +129,6 @@ virtual ~ChainedBlobWriter() {} }; -// This holds a BlobEntryKey and the encoded IndexedDBBlobInfo vector stored -// under that key. -typedef std::vector<std::pair<BlobEntryKey, std::string>> - BlobEntryKeyValuePairVec; - // Reports that the recovery and/or active journals have been processed, and // blob files have been deleted. using BlobFilesCleanedCallback = base::RepeatingClosure;
diff --git a/content/browser/renderer_host/mock_render_widget_host.h b/content/browser/renderer_host/mock_render_widget_host.h index 0f22b62..9ca0631 100644 --- a/content/browser/renderer_host/mock_render_widget_host.h +++ b/content/browser/renderer_host/mock_render_widget_host.h
@@ -23,12 +23,12 @@ public: // Allow poking at a few private members. using RenderWidgetHostImpl::frame_token_message_queue_; + using RenderWidgetHostImpl::GetInitialVisualProperties; using RenderWidgetHostImpl::GetVisualProperties; using RenderWidgetHostImpl::input_router_; using RenderWidgetHostImpl::is_hidden_; using RenderWidgetHostImpl::old_visual_properties_; using RenderWidgetHostImpl::RendererExited; - using RenderWidgetHostImpl::SetInitialVisualProperties; using RenderWidgetHostImpl::visual_properties_ack_pending_; ~MockRenderWidgetHost() override;
diff --git a/content/browser/renderer_host/render_view_host_impl.cc b/content/browser/renderer_host/render_view_host_impl.cc index 25fb8b4e..ad39a957 100644 --- a/content/browser/renderer_host/render_view_host_impl.cc +++ b/content/browser/renderer_host/render_view_host_impl.cc
@@ -374,8 +374,7 @@ // TODO(danakj): Make the visual_properties optional in the message. if (proxy_route_id == MSG_ROUTING_NONE) { - params->visual_properties = GetWidget()->GetVisualProperties(); - GetWidget()->SetInitialVisualProperties(params->visual_properties); + params->visual_properties = GetWidget()->GetInitialVisualProperties(); } // The RenderView is owned by this process. This call must be accompanied by a
diff --git a/content/browser/renderer_host/render_widget_host_impl.cc b/content/browser/renderer_host/render_widget_host_impl.cc index c6df5dee..4058979 100644 --- a/content/browser/renderer_host/render_widget_host_impl.cc +++ b/content/browser/renderer_host/render_widget_host_impl.cc
@@ -414,7 +414,9 @@ continue; } - // If the widget is for a main frame, only add if it's not swapped out. + // If the widget is for a main frame, only add if there is a RenderWidget in + // the renderer process. When this is false, there is no main RenderFrame + // and so no RenderWidget for this RenderWidgetHost. if (owner_delegate->IsMainFrameActive()) hosts->Add(widget); } @@ -469,11 +471,6 @@ return frame_sink_id_; } -void RenderWidgetHostImpl::ResetSentVisualProperties() { - visual_properties_ack_pending_ = false; - old_visual_properties_.reset(); -} - void RenderWidgetHostImpl::SendScreenRects() { if (!renderer_initialized_ || waiting_for_screen_rects_ack_) return; @@ -516,12 +513,6 @@ process_->UpdateClientPriority(this); } -void RenderWidgetHostImpl::DidDestroyRenderWidget() { - if (owner_delegate_) - DCHECK(!owner_delegate_->IsMainFrameActive()); - frame_token_message_queue_->Reset(); -} - void RenderWidgetHostImpl::Init() { DCHECK(process_->IsInitializedAndNotDead()); @@ -724,6 +715,17 @@ } #endif +VisualProperties RenderWidgetHostImpl::GetInitialVisualProperties() { + VisualProperties initial_props = GetVisualProperties(); + + old_visual_properties_ = nullptr; + visual_properties_ack_pending_ = + DoesVisualPropertiesNeedAck(old_visual_properties_, initial_props); + old_visual_properties_ = std::make_unique<VisualProperties>(initial_props); + + return initial_props; +} + VisualProperties RenderWidgetHostImpl::GetVisualProperties() { // This is only called while the RenderWidgetHost is attached to a delegate // still. @@ -838,14 +840,6 @@ return visual_properties; } -void RenderWidgetHostImpl::SetInitialVisualProperties( - const VisualProperties& visual_properties) { - visual_properties_ack_pending_ = - DoesVisualPropertiesNeedAck(old_visual_properties_, visual_properties); - old_visual_properties_ = - std::make_unique<VisualProperties>(visual_properties); -} - bool RenderWidgetHostImpl::SynchronizeVisualProperties() { return SynchronizeVisualProperties(false); } @@ -875,13 +869,17 @@ // inactive, so there is no focused node, or anything to scroll and display. if (owner_delegate_ && !owner_delegate_->IsMainFrameActive()) return false; + // This is similar to the above but when the renderer process has crashed, so + // more objects are gone than the RenderWidget. + if (!renderer_initialized_) + return false; - // Skip if the |delegate_| has already been detached because - // it's web contents is being deleted, or if LocalSurfaceIdAllocation is - // suppressed, as we are first updating our internal state from a child's - // request, before subsequently merging ids to send. + // Skip if the |delegate_| has already been detached because it's web contents + // is being deleted, or if LocalSurfaceIdAllocation is suppressed, as we are + // first updating our internal state from a child's request, before + // subsequently merging ids to send. if (visual_properties_ack_pending_ || !process_->IsInitializedAndNotDead() || - !view_ || !view_->HasSize() || !renderer_initialized_ || !delegate_ || + !view_ || !view_->HasSize() || !delegate_ || surface_id_allocation_suppressed_ || !view_->CanSynchronizeVisualProperties()) { return false; @@ -1837,11 +1835,6 @@ waiting_for_screen_rects_ack_ = false; - // Must reset these to ensure that keyboard events work with a new renderer. - suppress_events_until_keydown_ = false; - - // Reset some fields in preparation for recovering from a crash. - ResetSentVisualProperties(); // After the renderer crashes, the view is destroyed and so the // RenderWidgetHost cannot track its visibility anymore. We assume such // RenderWidgetHost to be invisible for the sake of internal accounting - be @@ -1857,21 +1850,33 @@ process_->UpdateClientPriority(this); } - // Reset this to ensure the hung renderer mechanism is working properly. - in_flight_event_count_ = 0; - StopInputEventAckTimeout(); - if (view_) { view_->RenderProcessGone(); - view_.reset(); // The View should be deleted by RenderProcessGone. + SetView(nullptr); // The View should be deleted by RenderProcessGone. } + ResetRenderWidgetState(); +} + +void RenderWidgetHostImpl::DidDestroyRenderWidget() { + if (owner_delegate_) + DCHECK(!owner_delegate_->IsMainFrameActive()); + ResetRenderWidgetState(); +} + +void RenderWidgetHostImpl::ResetRenderWidgetState() { + // Must reset these to ensure that keyboard events work with a new + // RenderWidget. + suppress_events_until_keydown_ = false; + // Reconstruct the input router to ensure that it has fresh state for a new - // renderer. Otherwise it may be stuck waiting for the old renderer to ack an - // event. (In particular, the above call to view_->RenderProcessGone will + // RenderWidget. Otherwise it may be stuck waiting for the old renderer to ack + // an event. (In particular, the above call to view_->RenderProcessGone() will // destroy the aura window, which may dispatch a synthetic mouse move.) + // + // This also stops the event ack timeout to ensure the hung renderer mechanism + // is working properly. SetupInputRouter(); - synthetic_gesture_controller_.reset(); frame_token_message_queue_->Reset(); } @@ -2158,11 +2163,11 @@ Send(new WidgetMsg_SetBounds_ACK(routing_id_)); } -void RenderWidgetHostImpl::DidUpdateVisualProperties( +void RenderWidgetHostImpl::OnLocalSurfaceIdChanged( const cc::RenderFrameMetadata& metadata) { TRACE_EVENT_WITH_FLOW1( "renderer_host,disabled-by-default-viz.surface_id_flow", - "RenderWidgetHostImpl::DidUpdateVisualProperties", + "RenderWidgetHostImpl::OnLocalSurfaceIdChanged", metadata.local_surface_id_allocation && metadata.local_surface_id_allocation->IsValid() ? metadata.local_surface_id_allocation->local_surface_id() @@ -2918,6 +2923,10 @@ // DidDestroyRenderWidget() with data from the destroyed RenderWidget. if (owner_delegate_ && !owner_delegate_->IsMainFrameActive()) return; + // This is similar to the above but when the renderer process has crashed, so + // more objects are gone than the RenderWidget. + if (!renderer_initialized_) + return; frame_token_message_queue_->DidProcessFrame(frame_token); } @@ -3060,11 +3069,6 @@ metadata.new_vertical_scroll_direction); } -void RenderWidgetHostImpl::OnLocalSurfaceIdChanged( - const cc::RenderFrameMetadata& metadata) { - DidUpdateVisualProperties(metadata); -} - std::vector<viz::SurfaceId> RenderWidgetHostImpl::CollectSurfaceIdsForEviction() { RenderViewHostImpl* rvh = RenderViewHostImpl::From(this);
diff --git a/content/browser/renderer_host/render_widget_host_impl.h b/content/browser/renderer_host/render_widget_host_impl.h index f6cda3a..dd9d0ec 100644 --- a/content/browser/renderer_host/render_widget_host_impl.h +++ b/content/browser/renderer_host/render_widget_host_impl.h
@@ -544,10 +544,6 @@ // mode. void GotResponseToKeyboardLockRequest(bool allowed); - // Resets state variables related to tracking pending updates to visual - // properties. - void ResetSentVisualProperties(); - // When the WebContents (which acts as the Delegate) is destroyed, this object // may still outlive it while the renderer is shutting down. In that case the // delegate pointer is removed (since it would be a UAF). @@ -606,13 +602,12 @@ const gfx::Size& min_size, const gfx::Size& max_size); - // Generates a filled in VisualProperties struct representing the current - // properties of this widget. - VisualProperties GetVisualProperties(); - - // Sets the |visual_properties| that were sent to the renderer bundled with - // the request to create a new RenderWidget. - void SetInitialVisualProperties(const VisualProperties& visual_properties); + // Returns the result of GetVisualProperties(), resetting and storing that + // value as what has been sent to the renderer. This should be called when + // getting VisualProperties that will be sent in order to create a + // RenderWidget, since the creation acts as the initial + // SynchronizeVisualProperties(). + VisualProperties GetInitialVisualProperties(); // Pushes updated visual properties to the renderer as well as whether the // focused node should be scrolled into view. @@ -797,34 +792,18 @@ private: FRIEND_TEST_ALL_PREFIXES(RenderWidgetHostTest, DontPostponeInputEventAckTimeout); - FRIEND_TEST_ALL_PREFIXES(RenderWidgetHostTest, HideShowMessages); FRIEND_TEST_ALL_PREFIXES(RenderWidgetHostTest, PendingUserActivationTimeout); FRIEND_TEST_ALL_PREFIXES(RenderWidgetHostTest, RendererExitedNoDrag); FRIEND_TEST_ALL_PREFIXES(RenderWidgetHostTest, StopAndStartInputEventAckTimeout); FRIEND_TEST_ALL_PREFIXES(RenderWidgetHostTest, ShorterDelayInputEventAckTimeout); - FRIEND_TEST_ALL_PREFIXES(RenderWidgetHostTest, SynchronizeVisualProperties); FRIEND_TEST_ALL_PREFIXES(RenderWidgetHostTest, AddAndRemoveInputEventObserver); FRIEND_TEST_ALL_PREFIXES(RenderWidgetHostTest, AddAndRemoveImeInputEventObserver); - FRIEND_TEST_ALL_PREFIXES(RenderWidgetHostViewAuraTest, AutoResizeWithScale); - FRIEND_TEST_ALL_PREFIXES(RenderWidgetHostViewAuraTest, - AutoResizeWithBrowserInitiatedResize); - FRIEND_TEST_ALL_PREFIXES(RenderWidgetHostViewAuraTest, - ChildAllocationAcceptedInParentWhileHidden); - FRIEND_TEST_ALL_PREFIXES(RenderWidgetHostViewAuraTest, Resize); - FRIEND_TEST_ALL_PREFIXES(RenderWidgetHostViewChildFrameTest, - ChildFrameAutoResizeUpdate); FRIEND_TEST_ALL_PREFIXES(DevToolsManagerTest, NoUnresponsiveDialogInInspectedContents); - FRIEND_TEST_ALL_PREFIXES(RenderWidgetHostViewAuraTest, - ChildAllocationAcceptedInParent); - FRIEND_TEST_ALL_PREFIXES(RenderWidgetHostViewAuraTest, - ConflictingAllocationsResolve); - FRIEND_TEST_ALL_PREFIXES(RenderWidgetHostViewMacTest, - ChildAllocationAcceptedInParent); FRIEND_TEST_ALL_PREFIXES(RenderWidgetHostViewMacTest, ConflictingAllocationsResolve); FRIEND_TEST_ALL_PREFIXES(SitePerProcessBrowserTest, @@ -885,8 +864,13 @@ const gfx::Rect& rect_to_zoom); void OnZoomToFindInPageRectInMainFrame(const gfx::Rect& rect_to_zoom); - // Called when visual properties have changed in the renderer. - void DidUpdateVisualProperties(const cc::RenderFrameMetadata& metadata); + // When the RenderWidget is destroyed, this resets states in the browser + // to be ready for a replacement RenderWidget with a clean start. + void ResetRenderWidgetState(); + + // Generates a filled in VisualProperties struct representing the current + // properties of this widget. + VisualProperties GetVisualProperties(); // Returns true if the |new_visual_properties| differs from // |old_page_visual_properties| in a way that indicates a size changed.
diff --git a/content/browser/renderer_host/render_widget_host_unittest.cc b/content/browser/renderer_host/render_widget_host_unittest.cc index 6b9bfa4b..87faeb1 100644 --- a/content/browser/renderer_host/render_widget_host_unittest.cc +++ b/content/browser/renderer_host/render_widget_host_unittest.cc
@@ -92,6 +92,7 @@ using blink::WebTouchPoint; using testing::_; +using testing::Return; namespace content { namespace { @@ -463,6 +464,7 @@ MOCK_METHOD1(SetBackgroundOpaque, void(bool opaque)); MOCK_METHOD1(UpdatePageVisualProperties, void(const VisualProperties& visual_properties)); + MOCK_METHOD0(IsMainFrameActive, bool()); }; // RenderWidgetHostTest -------------------------------------------------------- @@ -508,12 +510,19 @@ process_->GetNextRoutingID())); // Set up the RenderWidgetHost as being for a main frame. host_->set_owner_delegate(&mock_owner_delegate_); - view_.reset(new TestView(host_.get())); + // Act like there is no RenderWidget present in the renderer yet. + EXPECT_CALL(mock_owner_delegate_, IsMainFrameActive()) + .WillRepeatedly(Return(false)); + + view_ = std::make_unique<TestView>(host_.get()); ConfigureView(view_.get()); host_->SetView(view_.get()); - SetInitialVisualProperties(); host_->Init(); host_->DisableGestureDebounce(); + // Act like we've created a RenderWidget. + host_->GetInitialVisualProperties(); + EXPECT_CALL(mock_owner_delegate_, IsMainFrameActive()) + .WillRepeatedly(Return(true)); mojo::PendingRemote<mojom::RenderFrameMetadataObserver> renderer_render_frame_metadata_observer_remote; @@ -556,11 +565,6 @@ base::RunLoop().RunUntilIdle(); } - void SetInitialVisualProperties() { - VisualProperties visual_properties = host_->GetVisualProperties(); - host_->SetInitialVisualProperties(visual_properties); - } - virtual void ConfigureView(TestView* view) { } @@ -803,7 +807,8 @@ cc::RenderFrameMetadata metadata; metadata.viewport_size_in_pixels = original_size.size(); metadata.local_surface_id_allocation = base::nullopt; - host_->DidUpdateVisualProperties(metadata); + static_cast<RenderFrameMetadataProvider::Observer&>(*host_) + .OnLocalSurfaceIdChanged(metadata); EXPECT_FALSE(host_->visual_properties_ack_pending_); EXPECT_EQ(1u, sink_->message_count()); @@ -833,7 +838,8 @@ // immediately send a new resize message for the new size to the renderer. metadata.viewport_size_in_pixels = original_size.size(); metadata.local_surface_id_allocation = base::nullopt; - host_->DidUpdateVisualProperties(metadata); + static_cast<RenderFrameMetadataProvider::Observer&>(*host_) + .OnLocalSurfaceIdChanged(metadata); EXPECT_TRUE(host_->visual_properties_ack_pending_); EXPECT_EQ(third_size.size(), host_->old_visual_properties_->new_size); EXPECT_EQ(1u, sink_->message_count()); @@ -843,7 +849,8 @@ // Send the visual properties ACK for the latest size. metadata.viewport_size_in_pixels = third_size.size(); metadata.local_surface_id_allocation = base::nullopt; - host_->DidUpdateVisualProperties(metadata); + static_cast<RenderFrameMetadataProvider::Observer&>(*host_) + .OnLocalSurfaceIdChanged(metadata); EXPECT_FALSE(host_->visual_properties_ack_pending_); EXPECT_EQ(third_size.size(), host_->old_visual_properties_->new_size); EXPECT_EQ(0u, sink_->message_count()); @@ -951,37 +958,60 @@ EXPECT_FALSE(host_->visual_properties_ack_pending_); } -// Test for crbug.com/25097. If a renderer crashes between a resize and the -// corresponding update message, we must be sure to clear the visual properties -// ACK logic. -TEST_F(RenderWidgetHostTest, ResizeThenCrash) { - sink_->ClearMessages(); - // Setting the bounds to a "real" rect should send out the notification. - view_->SetBounds(gfx::Rect(100, 100)); - host_->SynchronizeVisualProperties(); - // WidgetMsg_UpdateVisualProperties is sent to the renderer. - ASSERT_EQ(1u, sink_->message_count()); - { - const IPC::Message* msg = sink_->GetMessageAt(0); - ASSERT_EQ(WidgetMsg_UpdateVisualProperties::ID, msg->type()); - WidgetMsg_UpdateVisualProperties::Param params; - WidgetMsg_UpdateVisualProperties::Read(msg, ¶ms); - VisualProperties visual_properties = std::get<0>(params); - // Size sent to the renderer. - EXPECT_EQ(gfx::Size(100, 100), visual_properties.new_size); - } - EXPECT_TRUE(host_->visual_properties_ack_pending_); +TEST_F(RenderWidgetHostTest, ReceiveFrameTokenFromCrashedRenderer) { + // The Renderer sends a monotonically increasing frame token. + host_->DidProcessFrame(2); - // Simulate a renderer crash before an ACK for the UpdateVisualProperties - // message arrives. Ensure all the visual properties ACK logic is cleared. - // Must clear the view first so it doesn't get deleted. + // Simulate a renderer crash. host_->SetView(nullptr); host_->RendererExited(); - EXPECT_FALSE(host_->visual_properties_ack_pending_); - EXPECT_EQ(nullptr, host_->old_visual_properties_); - // Reset the view so we can exit the test cleanly. + // Receive an in-flight frame token (it needs to monotonically increase) + // while the RenderWidget is gone. + host_->DidProcessFrame(3); + + // The renderer is recreated. host_->SetView(view_.get()); + // Make a new RenderWidget when the renderer is recreated. This should get + // properties that are intended to be sent to the renderer, obsoleting any + // previous SynchronizeVisualProperties() calls. + VisualProperties props = host_->GetInitialVisualProperties(); + // The RenderWidget is recreated with the initial VisualProperties. + host_->Init(); + + // The new RenderWidget sends a frame token, which is lower than what the + // previous RenderWidget sent. This should be okay, as the expected token has + // been reset. + host_->DidProcessFrame(1); +} + +TEST_F(RenderWidgetHostTest, ReceiveFrameTokenFromDeletedRenderWidget) { + // The RenderWidget sends a monotonically increasing frame token. + host_->DidProcessFrame(2); + + // The RenderWidget is destroyed in the renderer process as the main frame + // is removed from this RenderWidgetHost's RenderWidgetView, but the + // RenderWidgetView is still kept around for another RenderFrame. + EXPECT_CALL(mock_owner_delegate_, IsMainFrameActive()) + .WillRepeatedly(Return(false)); + host_->DidDestroyRenderWidget(); + + // Receive an in-flight frame token (it needs to monotonically increase) + // while the RenderWidget is gone. + host_->DidProcessFrame(3); + + // Make a new RenderWidget for the RenderWidget being recreated. This should + // get properties that are intended to be sent to the renderer, obsoleting any + // previous SynchronizeVisualProperties() calls. + VisualProperties props = host_->GetInitialVisualProperties(); + // The RenderWidget is recreated with the initial VisualProperties. + EXPECT_CALL(mock_owner_delegate_, IsMainFrameActive()) + .WillRepeatedly(Return(true)); + + // The new RenderWidget sends a frame token, which is lower than what the + // previous RenderWidget sent. This should be okay, as the expected token has + // been reset. + host_->DidProcessFrame(1); } // Unable to include render_widget_host_view_mac.h and compile. @@ -1048,7 +1078,8 @@ cc::RenderFrameMetadata metadata; metadata.viewport_size_in_pixels = gfx::Size(100, 100); metadata.local_surface_id_allocation = base::nullopt; - host_->DidUpdateVisualProperties(metadata); + static_cast<RenderFrameMetadataProvider::Observer&>(*host_) + .OnLocalSurfaceIdChanged(metadata); // Now unhide. process_->sink().ClearMessages(); @@ -1579,6 +1610,11 @@ } TEST_F(RenderWidgetHostTest, RendererExitedResetsInputRouter) { + blink::WebMouseWheelEvent event; + event.phase = blink::WebMouseWheelEvent::kPhaseBegan; + host_->input_router()->SendWheelEvent(MouseWheelEventWithLatencyInfo(event)); + ASSERT_TRUE(host_->input_router()->HasPendingEvents()); + // RendererExited will delete the view. host_->SetView(new TestView(host_.get())); host_->RendererExited(); @@ -1587,6 +1623,20 @@ ASSERT_FALSE(host_->input_router()->HasPendingEvents()); } +TEST_F(RenderWidgetHostTest, DestroyingRenderWidgetResetsInputRouter) { + blink::WebMouseWheelEvent event; + event.phase = blink::WebMouseWheelEvent::kPhaseBegan; + host_->input_router()->SendWheelEvent(MouseWheelEventWithLatencyInfo(event)); + ASSERT_TRUE(host_->input_router()->HasPendingEvents()); + + EXPECT_CALL(mock_owner_delegate_, IsMainFrameActive()) + .WillRepeatedly(Return(false)); + host_->DidDestroyRenderWidget(); + + // Make sure the input router is in a fresh state. + ASSERT_FALSE(host_->input_router()->HasPendingEvents()); +} + // Regression test for http://crbug.com/401859 and http://crbug.com/522795. TEST_F(RenderWidgetHostTest, RendererExitedResetsIsHidden) { // RendererExited will delete the view. @@ -1835,52 +1885,6 @@ EXPECT_EQ(2u, host_->processed_frame_messages_count()); } -// Check that if the renderer crashes, we drop all queued messages and allow -// smaller frame tokens to be sent by the renderer. -TEST_F(RenderWidgetHostTest, FrameToken_RendererCrash) { - constexpr uint32_t frame_token1 = 10; - constexpr uint32_t frame_token2 = 1; - constexpr uint32_t frame_token3 = 1; - - std::vector<IPC::Message> messages1; - std::vector<IPC::Message> messages3; - messages1.push_back(WidgetHostMsg_DidFirstVisuallyNonEmptyPaint(5)); - messages3.push_back(WidgetHostMsg_DidFirstVisuallyNonEmptyPaint(6)); - - // If we don't do this, then RWHI destroys the view in RendererExited and - // then a crash occurs when we attempt to destroy it again in TearDown(). - host_->SetView(nullptr); - - host_->OnMessageReceived( - WidgetHostMsg_FrameSwapMessages(0, frame_token1, messages1)); - EXPECT_EQ(1u, host_->frame_token_message_queue_->size()); - EXPECT_EQ(0u, host_->processed_frame_messages_count()); - - host_->RendererExited(); - EXPECT_EQ(0u, host_->frame_token_message_queue_->size()); - EXPECT_EQ(0u, host_->processed_frame_messages_count()); - host_->Init(); - - view_->OnFrameTokenChanged(frame_token2); - EXPECT_EQ(0u, host_->frame_token_message_queue_->size()); - EXPECT_EQ(0u, host_->processed_frame_messages_count()); - - host_->RendererExited(); - EXPECT_EQ(0u, host_->frame_token_message_queue_->size()); - EXPECT_EQ(0u, host_->processed_frame_messages_count()); - host_->SetView(view_.get()); - host_->Init(); - - host_->OnMessageReceived( - WidgetHostMsg_FrameSwapMessages(0, frame_token3, messages3)); - EXPECT_EQ(1u, host_->frame_token_message_queue_->size()); - EXPECT_EQ(0u, host_->processed_frame_messages_count()); - - view_->OnFrameTokenChanged(frame_token3); - EXPECT_EQ(0u, host_->frame_token_message_queue_->size()); - EXPECT_EQ(1u, host_->processed_frame_messages_count()); -} - TEST_F(RenderWidgetHostTest, InflightEventCountResetsAfterRebind) { // Simulate a keyboard event. SimulateKeyboardEvent(WebInputEvent::kRawKeyDown);
diff --git a/content/browser/renderer_host/render_widget_host_view_aura_unittest.cc b/content/browser/renderer_host/render_widget_host_view_aura_unittest.cc index 9afdb76..4f28042 100644 --- a/content/browser/renderer_host/render_widget_host_view_aura_unittest.cc +++ b/content/browser/renderer_host/render_widget_host_view_aura_unittest.cc
@@ -2526,7 +2526,13 @@ visual_properties.compositor_viewport_pixel_rect.size()); } - widget_host_->ResetSentVisualProperties(); + // Get back the UpdateVisualProperties ack. + { + cc::RenderFrameMetadata metadata; + metadata.viewport_size_in_pixels = gfx::Size(100, 100); + static_cast<RenderFrameMetadataProvider::Observer*>(widget_host_) + ->OnLocalSurfaceIdChanged(metadata); + } sink_->ClearMessages(); // Device scale factor changes to 2, so the physical pixel sizes should @@ -2550,7 +2556,13 @@ visual_properties.compositor_viewport_pixel_rect.size()); } - widget_host_->ResetSentVisualProperties(); + // Get back the UpdateVisualProperties ack. + { + cc::RenderFrameMetadata metadata; + metadata.viewport_size_in_pixels = gfx::Size(200, 200); + static_cast<RenderFrameMetadataProvider::Observer*>(widget_host_) + ->OnLocalSurfaceIdChanged(metadata); + } sink_->ClearMessages(); aura_test_helper_->test_screen()->SetDeviceScaleFactor(1.0f); @@ -2623,7 +2635,8 @@ cc::RenderFrameMetadata metadata; metadata.viewport_size_in_pixels = gfx::Size(75, 75); metadata.local_surface_id_allocation = renderer_local_surface_id_allocation; - widget_host_->DidUpdateVisualProperties(metadata); + static_cast<RenderFrameMetadataProvider::Observer*>(widget_host_) + ->OnLocalSurfaceIdChanged(metadata); } // Changing the device scale factor updates the renderer. @@ -2700,7 +2713,8 @@ cc::RenderFrameMetadata metadata; metadata.viewport_size_in_pixels = gfx::Size(75, 75); metadata.local_surface_id_allocation = renderer_local_surface_id_allocation; - widget_host_->DidUpdateVisualProperties(metadata); + static_cast<RenderFrameMetadataProvider::Observer*>(widget_host_) + ->OnLocalSurfaceIdChanged(metadata); } // Do a resize in the browser. It does not apply, but VisualProperties are @@ -2753,7 +2767,8 @@ cc::RenderFrameMetadata metadata; metadata.viewport_size_in_pixels = gfx::Size(75, 75); metadata.local_surface_id_allocation = local_surface_id_allocation2; - widget_host_->DidUpdateVisualProperties(metadata); + static_cast<RenderFrameMetadataProvider::Observer*>(widget_host_) + ->OnLocalSurfaceIdChanged(metadata); } viz::LocalSurfaceIdAllocation local_surface_id_allocation3( @@ -2790,7 +2805,8 @@ cc::RenderFrameMetadata metadata; metadata.viewport_size_in_pixels = gfx::Size(75, 75); metadata.local_surface_id_allocation = local_surface_id_allocation2; - widget_host_->DidUpdateVisualProperties(metadata); + static_cast<RenderFrameMetadataProvider::Observer*>(widget_host_) + ->OnLocalSurfaceIdChanged(metadata); } viz::LocalSurfaceIdAllocation local_surface_id_allocation3( @@ -2825,7 +2841,8 @@ cc::RenderFrameMetadata metadata; metadata.viewport_size_in_pixels = gfx::Size(75, 75); metadata.local_surface_id_allocation = local_surface_id_allocation2; - widget_host_->DidUpdateVisualProperties(metadata); + static_cast<RenderFrameMetadataProvider::Observer*>(widget_host_) + ->OnLocalSurfaceIdChanged(metadata); } // Cause a conflicting viz::LocalSurfaceId allocation @@ -3068,7 +3085,8 @@ { cc::RenderFrameMetadata metadata; metadata.viewport_size_in_pixels = size1; - widget_host_->DidUpdateVisualProperties(metadata); + static_cast<RenderFrameMetadataProvider::Observer*>(widget_host_) + ->OnLocalSurfaceIdChanged(metadata); EXPECT_FALSE(widget_host_->visual_properties_ack_pending_for_testing()); } sink_->ClearMessages(); @@ -3090,7 +3108,8 @@ { cc::RenderFrameMetadata metadata; metadata.viewport_size_in_pixels = size2; - widget_host_->DidUpdateVisualProperties(metadata); + static_cast<RenderFrameMetadataProvider::Observer*>(widget_host_) + ->OnLocalSurfaceIdChanged(metadata); EXPECT_FALSE(widget_host_->visual_properties_ack_pending_for_testing()); } sink_->ClearMessages(); @@ -3370,9 +3389,15 @@ EXPECT_EQ(gfx::Size(100, 100), visual_properties.visible_viewport_size); } - widget_host_->ResetSentVisualProperties(); - + // Get back the UpdateVisualProperties ack. + { + cc::RenderFrameMetadata metadata; + metadata.viewport_size_in_pixels = gfx::Size(100, 100); + static_cast<RenderFrameMetadataProvider::Observer*>(widget_host_) + ->OnLocalSurfaceIdChanged(metadata); + } sink_->ClearMessages(); + view_->SetInsets(gfx::Insets(0, 0, 40, 0)); EXPECT_EQ(60, view_->GetVisibleViewportSize().height());
diff --git a/content/browser/renderer_host/render_widget_host_view_child_frame_browsertest.cc b/content/browser/renderer_host/render_widget_host_view_child_frame_browsertest.cc index c1cdca9..bec58f9b 100644 --- a/content/browser/renderer_host/render_widget_host_view_child_frame_browsertest.cc +++ b/content/browser/renderer_host/render_widget_host_view_child_frame_browsertest.cc
@@ -148,8 +148,9 @@ metadata.viewport_size_in_pixels = gfx::Size(75, 75); metadata.local_surface_id_allocation = viz::LocalSurfaceIdAllocation(local_surface_id, base::TimeTicks::Now()); - root->current_frame_host()->GetRenderWidgetHost()->DidUpdateVisualProperties( - metadata); + RenderFrameMetadataProvider::Observer* metadata_receiver = + root->current_frame_host()->GetRenderWidgetHost(); + metadata_receiver->OnLocalSurfaceIdChanged(metadata); // The child frame's RenderWidgetHostView should now use the auto-resize value // for its visible viewport.
diff --git a/content/browser/renderer_host/render_widget_host_view_mac_unittest.mm b/content/browser/renderer_host/render_widget_host_view_mac_unittest.mm index fd8aea9..42bb1d6 100644 --- a/content/browser/renderer_host/render_widget_host_view_mac_unittest.mm +++ b/content/browser/renderer_host/render_widget_host_view_mac_unittest.mm
@@ -2178,7 +2178,8 @@ metadata.viewport_size_in_pixels = gfx::Size(75, 75); metadata.local_surface_id_allocation = child_allocator.GetCurrentLocalSurfaceIdAllocation(); - host_->DidUpdateVisualProperties(metadata); + static_cast<RenderFrameMetadataProvider::Observer&>(*host_) + .OnLocalSurfaceIdChanged(metadata); viz::LocalSurfaceId local_surface_id3( rwhv_mac_->GetLocalSurfaceIdAllocation().local_surface_id()); @@ -2203,7 +2204,8 @@ metadata.viewport_size_in_pixels = gfx::Size(75, 75); metadata.local_surface_id_allocation = child_allocator.GetCurrentLocalSurfaceIdAllocation(); - host_->DidUpdateVisualProperties(metadata); + static_cast<RenderFrameMetadataProvider::Observer&>(*host_) + .OnLocalSurfaceIdChanged(metadata); // Cause a conflicting viz::LocalSurfaceId allocation BrowserCompositorMac* browser_compositor = rwhv_mac_->BrowserCompositor();
diff --git a/content/browser/sandbox_parameters_mac.mm b/content/browser/sandbox_parameters_mac.mm index d83664e..79d46dc 100644 --- a/content/browser/sandbox_parameters_mac.mm +++ b/content/browser/sandbox_parameters_mac.mm
@@ -219,6 +219,7 @@ sandbox::SeatbeltExecClient* client) { switch (sandbox_type) { case service_manager::SandboxType::kAudio: + case service_manager::SandboxType::kSoda: case service_manager::SandboxType::kNaClLoader: case service_manager::SandboxType::kPdfCompositor: case service_manager::SandboxType::kRenderer:
diff --git a/content/browser/web_contents/web_contents_view_aura.cc b/content/browser/web_contents/web_contents_view_aura.cc index ec0c370..c87d192 100644 --- a/content/browser/web_contents/web_contents_view_aura.cc +++ b/content/browser/web_contents/web_contents_view_aura.cc
@@ -1240,7 +1240,13 @@ // raise-on-click manually, this may override user settings that prevent // focus-stealing. #if !defined(USE_X11) + // It is possible for the web-contents to be destroyed while it is being + // activated. Use a weak-ptr to track whether that happened or not. + // More in https://crbug.com/1040725 + auto weak_this = weak_ptr_factory_.GetWeakPtr(); web_contents_->GetDelegate()->ActivateContents(web_contents_); + if (!weak_this) + return; #endif }
diff --git a/content/browser/web_contents/web_contents_view_aura.h b/content/browser/web_contents/web_contents_view_aura.h index acdba5f..dd0c06b 100644 --- a/content/browser/web_contents/web_contents_view_aura.h +++ b/content/browser/web_contents/web_contents_view_aura.h
@@ -327,8 +327,6 @@ bool init_rwhv_with_null_parent_for_testing_; - // Used to ensure that the drag and drop callbacks bound to this - // object are canceled when this object is destroyed. base::WeakPtrFactory<WebContentsViewAura> weak_ptr_factory_{this}; DISALLOW_COPY_AND_ASSIGN(WebContentsViewAura);
diff --git a/content/browser/web_contents/web_contents_view_aura_unittest.cc b/content/browser/web_contents/web_contents_view_aura_unittest.cc index 209ba74..3c0bf2a 100644 --- a/content/browser/web_contents/web_contents_view_aura_unittest.cc +++ b/content/browser/web_contents/web_contents_view_aura_unittest.cc
@@ -15,6 +15,7 @@ #include "base/test/scoped_feature_list.h" #include "build/build_config.h" #include "content/browser/web_contents/web_contents_impl.h" +#include "content/public/browser/web_contents_delegate.h" #include "content/public/common/content_features.h" #include "content/public/test/test_renderer_host.h" #include "testing/gtest/include/gtest/gtest.h" @@ -26,6 +27,7 @@ #include "ui/base/dragdrop/drop_target_event.h" #include "ui/base/dragdrop/os_exchange_data.h" #include "ui/display/display_switches.h" +#include "ui/events/base_event_utils.h" #include "ui/gfx/geometry/rect.h" #if defined(OS_WIN) @@ -38,6 +40,26 @@ constexpr gfx::Rect kBounds = gfx::Rect(0, 0, 20, 20); constexpr gfx::PointF kClientPt = {5, 10}; constexpr gfx::PointF kScreenPt = {17, 3}; + +// Runs a specified callback when a ui::MouseEvent is received. +class RunCallbackOnActivation : public WebContentsDelegate { + public: + explicit RunCallbackOnActivation(base::OnceClosure closure) + : closure_(std::move(closure)) {} + + ~RunCallbackOnActivation() override = default; + + // WebContentsDelegate: + void ActivateContents(WebContents* contents) override { + std::move(closure_).Run(); + } + + private: + base::OnceClosure closure_; + + DISALLOW_COPY_AND_ASSIGN(RunCallbackOnActivation); +}; + } // namespace class WebContentsViewAuraTest : public RenderViewHostTestHarness { @@ -145,6 +167,26 @@ EXPECT_EQ(web_contents()->GetVisibility(), content::Visibility::VISIBLE); } +TEST_F(WebContentsViewAuraTest, WebContentsDestroyedDuringClick) { + RunCallbackOnActivation delegate(base::BindOnce( + &RenderViewHostTestHarness::DeleteContents, base::Unretained(this))); + web_contents()->SetDelegate(&delegate); + + // Simulates the mouse press. + ui::MouseEvent mouse_event(ui::ET_MOUSE_PRESSED, gfx::Point(), gfx::Point(), + ui::EventTimeForNow(), ui::EF_LEFT_MOUSE_BUTTON, + 0); + ui::EventHandler* event_handler = GetView(); + event_handler->OnMouseEvent(&mouse_event); +#if defined(USE_X11) + // The web-content is not activated during mouse-press on X11. + // See comment in WebContentsViewAura::OnMouseEvent() for more details. + EXPECT_NE(web_contents(), nullptr); +#else + EXPECT_EQ(web_contents(), nullptr); +#endif +} + TEST_F(WebContentsViewAuraTest, OccludeView) { base::test::ScopedFeatureList scoped_feature_list; scoped_feature_list.InitAndEnableFeature(features::kWebContentsOcclusion);
diff --git a/content/common/frame_messages.h b/content/common/frame_messages.h index 1bafaa0..c2c81a00 100644 --- a/content/common/frame_messages.h +++ b/content/common/frame_messages.h
@@ -933,11 +933,6 @@ // Initiates a download based on user actions like 'ALT+click'. IPC_MESSAGE_ROUTED1(FrameHostMsg_DownloadUrl, FrameHostMsg_DownloadUrl_Params) -// Notifies that the initial empty document of a view has been accessed. -// After this, it is no longer safe to show a pending navigation's URL without -// making a URL spoof possible. -IPC_MESSAGE_ROUTED0(FrameHostMsg_DidAccessInitialDocument) - // Sent when the RenderFrame or RenderFrameProxy either updates its opener to // another frame identified by |opener_routing_id|, or, if |opener_routing_id| // is MSG_ROUTING_NONE, the frame disowns its opener for the lifetime of the
diff --git a/content/public/android/BUILD.gn b/content/public/android/BUILD.gn index 7a2d0aad..2f0a1822 100644 --- a/content/public/android/BUILD.gn +++ b/content/public/android/BUILD.gn
@@ -120,6 +120,7 @@ "java/src/org/chromium/content/app/SandboxedProcessService.java", "java/src/org/chromium/content/app/ZygotePreload.java", "java/src/org/chromium/content/browser/AppWebMessagePort.java", + "java/src/org/chromium/content/browser/AppWebMessagePortDescriptor.java", "java/src/org/chromium/content/browser/AudioFocusDelegate.java", "java/src/org/chromium/content/browser/BackgroundSyncNetworkObserver.java", "java/src/org/chromium/content/browser/BindingManager.java", @@ -347,6 +348,7 @@ "java/src/org/chromium/content/app/ContentChildProcessServiceDelegate.java", "java/src/org/chromium/content/app/ContentMain.java", "java/src/org/chromium/content/browser/AppWebMessagePort.java", + "java/src/org/chromium/content/browser/AppWebMessagePortDescriptor.java", "java/src/org/chromium/content/browser/AudioFocusDelegate.java", "java/src/org/chromium/content/browser/BackgroundSyncNetworkObserver.java", "java/src/org/chromium/content/browser/BrowserStartupControllerImpl.java", @@ -444,6 +446,7 @@ ] sources = [ + "javatests/src/org/chromium/content/browser/AppWebMessagePortDescriptorTest.java", "javatests/src/org/chromium/content/browser/BrowserStartupControllerTest.java", "javatests/src/org/chromium/content/browser/ChildProcessLauncherHelperTest.java", "javatests/src/org/chromium/content/browser/ChildProcessLauncherIntegrationTest.java",
diff --git a/content/public/android/java/src/org/chromium/content/browser/AppWebMessagePortDescriptor.java b/content/public/android/java/src/org/chromium/content/browser/AppWebMessagePortDescriptor.java new file mode 100644 index 0000000..6623ac9e0 --- /dev/null +++ b/content/public/android/java/src/org/chromium/content/browser/AppWebMessagePortDescriptor.java
@@ -0,0 +1,262 @@ +// Copyright 2020 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +package org.chromium.content.browser; + +import org.chromium.base.LifetimeAssert; +import org.chromium.base.annotations.NativeMethods; +import org.chromium.blink.mojom.MessagePortDescriptor; +import org.chromium.mojo.system.MessagePipeHandle; +import org.chromium.mojo.system.Pair; +import org.chromium.mojo.system.impl.CoreImpl; +import org.chromium.mojo_base.mojom.UnguessableToken; + +/** + * Java wrapper around a native blink::MessagePortDescriptor, and mojom serialized versions of that + * class (org.chromium.blink.mojom.MessagePortDescriptor). + * + * This object is pure implementation detail for AppWebMessagePort. Care must be taken to use this + * object with something approaching "move" semantics, as under the hood it wraps a Mojo endpoint, + * which itself has move semantics. + * + * The expected usage is as follows: + * + * // Create a pair of descriptors, or rehydrate one from a mojo serialized version. + * Pair<AppWebMessagePortDescriptor, AppWebMessagePortDescriptor> pipe = + * AppWebMessagePortDescriptor.createPair(); + * AppWebMessagePortDescriptor port = new AppWebMessagePortDescriptor( + * mojomSerializedMessagePortDescriptor); + * + * // Take the handle for use. + * MessagePipeHandle handle = port.takeHandleToEntangle(); + * + * // Do stuff with the handle. + * + * // Return the handle. + * port.givenDisentangledHandle(handle); + * + * // Close the port when we're done with it. + * port.close(); + */ +public class AppWebMessagePortDescriptor { + private static final long NATIVE_NULL = 0; + private static final int INVALID_NATIVE_MOJO_HANDLE = 0; // Mirrors CoreImpl.INVALID_HANDLE. + private static final long INVALID_SEQUENCE_NUMBER = 0; + + /** Used to ensure that the object is correctly torn down before being finalized. */ + private final LifetimeAssert mLifetimeAssert = LifetimeAssert.create(this); + + /** Handle to the native blink::MessagePortDescriptor associated with this object. */ + private long mNativeMessagePortDescriptor = NATIVE_NULL; + /** + * The underlying native handle. When a descriptor is bound to an AppWebMessagePort, handle + * ownership passes from the native blink::MessagePortDescriptor to a mojo Connector owned by + * the AppWebMessagePort. Before tearing down, the handle is returned to the native blink + * component and closed. This will be INVALID_NATIVE_MOJO_HANDLE if the handle is currently + * owned by the native counterpart, otherwise it is set to the value of the handle that was + * passed from the native counterpart. + */ + private int mNativeMojoHandle = INVALID_NATIVE_MOJO_HANDLE; + + /** + * @return a newly created pair of connected AppWebMessagePortDescriptors. + */ + static Pair<AppWebMessagePortDescriptor, AppWebMessagePortDescriptor> createPair() { + long[] nativeMessagePortDescriptors = AppWebMessagePortDescriptorJni.get().createPair(); + assert nativeMessagePortDescriptors.length + == 2 : "native createPair returned an invalid value"; + Pair<AppWebMessagePortDescriptor, AppWebMessagePortDescriptor> pair = + new Pair<>(new AppWebMessagePortDescriptor(nativeMessagePortDescriptors[0]), + new AppWebMessagePortDescriptor(nativeMessagePortDescriptors[1])); + return pair; + } + + /** + * Creates an instance of a descriptor from a mojo-serialized version. + */ + AppWebMessagePortDescriptor(MessagePortDescriptor blinkMessagePortDescriptor) { + // If the descriptor is invalid then immediately go to an invalid state, which also means + // we're safe to GC. + if (!isBlinkMessagePortDescriptorValid(blinkMessagePortDescriptor)) { + reset(); + return; + } + mNativeMessagePortDescriptor = AppWebMessagePortDescriptorJni.get().create( + blinkMessagePortDescriptor.pipeHandle.releaseNativeHandle(), + blinkMessagePortDescriptor.id.low, blinkMessagePortDescriptor.id.high, + blinkMessagePortDescriptor.sequenceNumber); + resetBlinkMessagePortDescriptor(blinkMessagePortDescriptor); + } + + /** + * @return true if this descriptor is valid (has an active native counterpart). Safe to call + * anytime. + */ + boolean isValid() { + return mNativeMessagePortDescriptor != NATIVE_NULL; + } + + /** + * @return the MessagePipeHandle corresponding to this descriptors mojo endpoint. This must be + * returned to the descriptor before it is closed, and before it is finalized. It is + * valid to take and return the handle multiple times. This is meant to be called in + * order to entangle the handle with a mojo.system.Connector. + */ + MessagePipeHandle takeHandleToEntangle() { + ensureNativeMessagePortDescriptorExists(); + assert mNativeMojoHandle == INVALID_NATIVE_MOJO_HANDLE : "handle already taken"; + mNativeMojoHandle = AppWebMessagePortDescriptorJni.get().takeHandleToEntangle( + mNativeMessagePortDescriptor); + assert mNativeMojoHandle + != INVALID_NATIVE_MOJO_HANDLE : "native object returned an invalid handle"; + return wrapNativeHandle(mNativeMojoHandle); + } + + /** + * @return true if the port is currently entangled, false otherwise. Safe to call anytime. + */ + boolean isEntangled() { + return mNativeMessagePortDescriptor != NATIVE_NULL + && mNativeMojoHandle != INVALID_NATIVE_MOJO_HANDLE; + } + + /** + * Returns the mojo endpoint to this descriptor, previously vended out by + * "takeHandleToEntangle". If vended out the handle must be returned prior to closing this + * object, which must be done prior to the object being destroyed. It is valid to take and + * return the handle multiple times. + */ + void giveDisentangledHandle(MessagePipeHandle handle) { + ensureNativeMessagePortDescriptorExists(); + assert mNativeMojoHandle != INVALID_NATIVE_MOJO_HANDLE : "handle not currently taken"; + int nativeHandle = handle.releaseNativeHandle(); + assert nativeHandle + == mNativeMojoHandle : "returned handle does not match the taken handle"; + AppWebMessagePortDescriptorJni.get().giveDisentangledHandle( + mNativeMessagePortDescriptor, mNativeMojoHandle); + mNativeMojoHandle = INVALID_NATIVE_MOJO_HANDLE; + } + + /** + * Closes this descriptor. This will cause the native counterpart to be destroyed, and the + * descriptor will no longer be valid after this point. It is safe to call this repeatedly. It + * is illegal to close a descriptor whose handle is presently taken by a corresponding + * AppWebMessagePort. + */ + void close() { + if (mNativeMessagePortDescriptor == NATIVE_NULL) return; + assert mNativeMojoHandle + == INVALID_NATIVE_MOJO_HANDLE : "closing a descriptor whose handle is taken"; + AppWebMessagePortDescriptorJni.get().closeAndDestroy(mNativeMessagePortDescriptor); + reset(); + } + + /** + * Passes ownership of this descriptor into a blink.mojom.MessagePortDescriptor. This allows the + * port to be transferred as part of a TransferableMessage. Invalidates this object in the + * process. + */ + MessagePortDescriptor passAsBlinkMojomMessagePortDescriptor() { + ensureNativeMessagePortDescriptorExists(); + assert mNativeMojoHandle + == INVALID_NATIVE_MOJO_HANDLE : "passing a descriptor whose handle is taken"; + + // This is in the format [nativeHandle, idLow, idHigh, sequenceNumber]. + long[] serialized = + AppWebMessagePortDescriptorJni.get().passSerialized(mNativeMessagePortDescriptor); + assert serialized.length == 4 : "native passSerialized returned an invalid value"; + + int nativeHandle = (int) serialized[0]; + long idLow = serialized[1]; + long idHigh = serialized[2]; + long sequenceNumber = serialized[3]; + + MessagePortDescriptor port = new MessagePortDescriptor(); + port.pipeHandle = wrapNativeHandle(nativeHandle); + port.id = new UnguessableToken(); + port.id.low = idLow; + port.id.high = idHigh; + port.sequenceNumber = sequenceNumber; + + reset(); + + return port; + } + + /** + * Private constructor used in creating a matching pair of descriptors. + */ + private AppWebMessagePortDescriptor(long nativeMessagePortDescriptor) { + assert nativeMessagePortDescriptor != NATIVE_NULL : "invalid nativeMessagePortDescriptor"; + mNativeMessagePortDescriptor = nativeMessagePortDescriptor; + } + + /** + * Helper function that throws an exception if the native counterpart does not exist. + */ + private void ensureNativeMessagePortDescriptorExists() { + assert mNativeMessagePortDescriptor != NATIVE_NULL : "native descriptor does not exist"; + } + + /** + * Resets this object. Assumes the native side has already been appropriately torn down. + */ + private void reset() { + mNativeMessagePortDescriptor = NATIVE_NULL; + mNativeMojoHandle = INVALID_NATIVE_MOJO_HANDLE; + LifetimeAssert.setSafeToGc(mLifetimeAssert, true); + } + + /** + * @return true if the provided blink.mojom.MessagePortDescriptor is valid. + */ + private static boolean isBlinkMessagePortDescriptorValid( + MessagePortDescriptor blinkMessagePortDescriptor) { + if (!blinkMessagePortDescriptor.pipeHandle.isValid()) { + return false; + } + if (blinkMessagePortDescriptor.id == null) { + return false; + } + if (blinkMessagePortDescriptor.id.low == 0 && blinkMessagePortDescriptor.id.high == 0) { + return false; + } + if (blinkMessagePortDescriptor.sequenceNumber == INVALID_SEQUENCE_NUMBER) { + return false; + } + return true; + } + + /** + * Resets the provided blink.mojom.MessagePortDescriptor. + */ + private static void resetBlinkMessagePortDescriptor( + MessagePortDescriptor blinkMessagePortDescriptor) { + blinkMessagePortDescriptor.pipeHandle.close(); + if (blinkMessagePortDescriptor.id != null) { + blinkMessagePortDescriptor.id.low = 0; + blinkMessagePortDescriptor.id.high = 0; + } + blinkMessagePortDescriptor.sequenceNumber = 0; + } + + /** + * Wraps the provided native handle as MessagePipeHandle. + */ + MessagePipeHandle wrapNativeHandle(int nativeHandle) { + return CoreImpl.getInstance().acquireNativeHandle(nativeHandle).toMessagePipeHandle(); + } + + @NativeMethods + interface Native { + long[] createPair(); + long create(int nativeHandle, long idLow, long idHigh, long sequenceNumber); + // Deliberately do not use nativeObjectType naming to avoid automatic typecasting and + // member function dispatch; these need to be routed to static functions. + int takeHandleToEntangle(long blinkMessagePortDescriptor); + void giveDisentangledHandle(long blinkMessagePortDescriptor, int nativeHandle); + long[] passSerialized(long blinkMessagePortDescriptor); + void closeAndDestroy(long blinkMessagePortDescriptor); + } +}
diff --git a/content/public/android/javatests/src/org/chromium/content/browser/AppWebMessagePortDescriptorTest.java b/content/public/android/javatests/src/org/chromium/content/browser/AppWebMessagePortDescriptorTest.java new file mode 100644 index 0000000..15937ea6 --- /dev/null +++ b/content/public/android/javatests/src/org/chromium/content/browser/AppWebMessagePortDescriptorTest.java
@@ -0,0 +1,80 @@ +// Copyright 2020 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +package org.chromium.content.browser; + +import android.support.test.filters.SmallTest; + +import org.junit.Assert; +import org.junit.Rule; +import org.junit.Test; +import org.junit.runner.RunWith; + +import org.chromium.base.test.BaseJUnit4ClassRunner; +import org.chromium.blink.mojom.MessagePortDescriptor; +import org.chromium.mojo.MojoTestRule; +import org.chromium.mojo.system.MessagePipeHandle; +import org.chromium.mojo.system.Pair; + +/** + * Test suite for AppWebMessagePortDescriptor. + */ +@RunWith(BaseJUnit4ClassRunner.class) +public class AppWebMessagePortDescriptorTest { + @Rule + public MojoTestRule mActivityTestRule = new MojoTestRule(MojoTestRule.MojoCore.INITIALIZE); + + @Test + @SmallTest + public void testPassingAndEntangling() throws Throwable { + Pair<AppWebMessagePortDescriptor, AppWebMessagePortDescriptor> pair = + AppWebMessagePortDescriptor.createPair(); + Assert.assertTrue(pair.first.isValid()); + Assert.assertFalse(pair.first.isEntangled()); + Assert.assertTrue(pair.second.isValid()); + Assert.assertFalse(pair.second.isEntangled()); + + AppWebMessagePortDescriptor port0 = pair.first; + Assert.assertTrue(port0.isValid()); + Assert.assertFalse(port0.isEntangled()); + + AppWebMessagePortDescriptor port1 = pair.second; + Assert.assertTrue(port1.isValid()); + Assert.assertFalse(port1.isEntangled()); + + // Do a round trip through entanglement/disentanglement. + + MessagePipeHandle handle = port0.takeHandleToEntangle(); + Assert.assertTrue(port0.isValid()); + Assert.assertTrue(port0.isEntangled()); + + port0.giveDisentangledHandle(handle.pass()); + Assert.assertTrue(port0.isValid()); + Assert.assertFalse(port0.isEntangled()); + + // Do a round trip through serialization as a blink.mojom.MessagePortDescriptor. + + MessagePortDescriptor blinkPort = port0.passAsBlinkMojomMessagePortDescriptor(); + Assert.assertFalse(port0.isValid()); + Assert.assertFalse(port0.isEntangled()); + + port0 = new AppWebMessagePortDescriptor(blinkPort); + Assert.assertTrue(port0.isValid()); + Assert.assertFalse(port0.isEntangled()); + + // Close the ports to satisfy lifetime assertions. + + port0.close(); + Assert.assertFalse(port0.isValid()); + Assert.assertFalse(port0.isEntangled()); + Assert.assertFalse(pair.first.isValid()); + Assert.assertFalse(pair.first.isEntangled()); + + port1.close(); + Assert.assertFalse(port1.isValid()); + Assert.assertFalse(port1.isEntangled()); + Assert.assertFalse(pair.second.isValid()); + Assert.assertFalse(pair.second.isEntangled()); + } +}
diff --git a/content/public/test/browser_test_utils.cc b/content/public/test/browser_test_utils.cc index 835505c1..452f324c 100644 --- a/content/public/test/browser_test_utils.cc +++ b/content/public/test/browser_test_utils.cc
@@ -3395,7 +3395,7 @@ metadata.viewport_size_in_pixels = gfx::Size(75, 75); metadata.local_surface_id_allocation = viz::LocalSurfaceIdAllocation(local_surface_id, base::TimeTicks::Now()); - guest_rwh_impl->DidUpdateVisualProperties(metadata); + guest_rwh_impl->OnLocalSurfaceIdChanged(metadata); // This won't generate a response, as we short-circuit auto-resizes, so cause // an additional update by disabling auto-resize.
diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc index 3f27c51c..532a1ff 100644 --- a/content/renderer/render_frame_impl.cc +++ b/content/renderer/render_frame_impl.cc
@@ -1835,7 +1835,6 @@ pepper_last_mouse_event_target_(nullptr), #endif navigation_client_impl_(nullptr), - has_accessed_initial_document_(false), media_factory_( this, base::BindRepeating(&RenderFrameImpl::RequestOverlayRoutingToken, @@ -4026,19 +4025,6 @@ return GetRemoteAssociatedInterfaces(); } -void RenderFrameImpl::DidAccessInitialDocument() { - DCHECK(!frame_->Parent()); - // NOTE: Do not call back into JavaScript here, since this call is made from a - // V8 security check. - - // Notify the browser process that it is no longer safe to show the pending - // URL of the main frame, since a URL spoof is now possible. - if (!has_accessed_initial_document_) - Send(new FrameHostMsg_DidAccessInitialDocument(routing_id_)); - - has_accessed_initial_document_ = true; -} - blink::WebLocalFrame* RenderFrameImpl::CreateChildFrame( blink::WebLocalFrame* parent, blink::WebTreeScopeType scope, @@ -5982,7 +5968,11 @@ info->navigation_policy == blink::kWebNavigationPolicyCurrentTab && // No need to dispatch beforeunload if the frame has not committed a // navigation and contains an empty initial document. - (has_accessed_initial_document_ || !current_history_item_.IsNull()); + // TODO(dtapuska): crbug.com/1040954 Try to remove the + // HasAccessedInitialDocument interface for this. There shouldn't be a + // beforeunload handler if it hasn't accessed the initial document so it + // should be fine to dispatch in those cases. + (frame_->HasAccessedInitialDocument() || !current_history_item_.IsNull()); if (should_dispatch_before_unload) { // Execute the BeforeUnload event. If asked not to proceed or the frame is
diff --git a/content/renderer/render_frame_impl.h b/content/renderer/render_frame_impl.h index b8bb9be..371c553 100644 --- a/content/renderer/render_frame_impl.h +++ b/content/renderer/render_frame_impl.h
@@ -660,7 +660,6 @@ service_manager::InterfaceProvider* GetInterfaceProvider() override; blink::AssociatedInterfaceProvider* GetRemoteNavigationAssociatedInterfaces() override; - void DidAccessInitialDocument() override; blink::WebLocalFrame* CreateChildFrame( blink::WebLocalFrame* parent, blink::WebTreeScopeType scope, @@ -1572,9 +1571,6 @@ // Only used when PerNavigationMojoInterface is enabled. std::unique_ptr<NavigationClient> navigation_client_impl_; - // Indicates whether |didAccessInitialDocument| was called. - bool has_accessed_initial_document_; - // Creates various media clients. MediaFactory media_factory_;
diff --git a/content/test/gpu/gpu_tests/test_expectations/pixel_expectations.txt b/content/test/gpu/gpu_tests/test_expectations/pixel_expectations.txt index 46f37fe8..41fbe9e 100644 --- a/content/test/gpu/gpu_tests/test_expectations/pixel_expectations.txt +++ b/content/test/gpu/gpu_tests/test_expectations/pixel_expectations.txt
@@ -238,11 +238,4 @@ # VP9 appears to not recover correctly after GPU process crashes on Windows. crbug.com/1033982 [ win nvidia ] Pixel_Video_Context_Loss_VP9 [ RetryOnFailure ] -crbug.com/1037949 [ use-vulkan android android-chromium skia-renderer ] Pixel_Video_MP4 [ Failure ] -crbug.com/1037949 [ use-vulkan android android-chromium skia-renderer ] Pixel_Video_MP4_FourColors_Aspect_4x3 [ Failure ] -crbug.com/1037949 [ use-vulkan android android-chromium skia-renderer ] Pixel_Video_MP4_FourColors_Rot_180 [ Failure ] -crbug.com/1037949 [ use-vulkan android android-chromium skia-renderer ] Pixel_Video_MP4_FourColors_Rot_270 [ Failure ] -crbug.com/1037949 [ use-vulkan android android-chromium skia-renderer ] Pixel_Video_MP4_FourColors_Rot_90 [ Failure ] -crbug.com/1037949 [ use-vulkan android android-chromium skia-renderer ] Pixel_Video_VP9 [ Failure ] - crbug.com/1037654 [ use-vulkan android android-chromium skia-renderer ] Pixel_WebGLCopyImage [ Failure ]
diff --git a/extensions/browser/api/declarative_net_request/action_tracker.cc b/extensions/browser/api/declarative_net_request/action_tracker.cc index e99ce5b..6aca82b 100644 --- a/extensions/browser/api/declarative_net_request/action_tracker.cc +++ b/extensions/browser/api/declarative_net_request/action_tracker.cc
@@ -8,6 +8,7 @@ #include <utility> #include "base/stl_util.h" +#include "base/time/clock.h" #include "base/values.h" #include "extensions/browser/api/declarative_net_request/request_action.h" #include "extensions/browser/api/declarative_net_request/rules_monitor_service.h" @@ -35,6 +36,12 @@ request_info.type == content::ResourceType::kMainFrame; } +const base::Clock* g_test_clock = nullptr; + +base::Time GetNow() { + return g_test_clock ? g_test_clock->Now() : base::Time::Now(); +} + } // namespace ActionTracker::ActionTracker(content::BrowserContext* browser_context) @@ -53,6 +60,11 @@ DCHECK(pending_navigation_actions_.empty()); } +// static +void ActionTracker::SetClockForTests(const base::Clock* clock) { + g_test_clock = clock; +} + void ActionTracker::OnRuleMatched(const RequestAction& request_action, const WebRequestInfo& request_info) { DispatchOnRuleMatchedDebugIfNeeded(request_action, @@ -213,14 +225,19 @@ std::vector<dnr_api::MatchedRuleInfo> ActionTracker::GetMatchedRules( const ExtensionId& extension_id, - base::Optional<int> tab_id) const { + const base::Optional<int>& tab_id, + const base::Time& min_time_stamp) { std::vector<dnr_api::MatchedRuleInfo> matched_rules; - auto add_to_matched_rules = [this, &matched_rules]( + auto add_to_matched_rules = [this, &matched_rules, &min_time_stamp]( const std::list<TrackedRule>& tracked_rules, int tab_id) { - for (const TrackedRule& tracked_rule : tracked_rules) - matched_rules.push_back(CreateMatchedRuleInfo(tracked_rule, tab_id)); + for (const TrackedRule& tracked_rule : tracked_rules) { + // Filter by the provided |min_time_stamp| for both active and non-active + // tabs. + if (tracked_rule.time_stamp >= min_time_stamp) + matched_rules.push_back(CreateMatchedRuleInfo(tracked_rule, tab_id)); + } }; if (tab_id.has_value()) { @@ -290,7 +307,7 @@ ActionTracker::TrackedRule::TrackedRule( int rule_id, api::declarative_net_request::SourceType source_type) - : rule_id(rule_id), source_type(source_type) {} + : rule_id(rule_id), source_type(source_type), time_stamp(GetNow()) {} ActionTracker::TrackedInfo::TrackedInfo() = default; ActionTracker::TrackedInfo::~TrackedInfo() = default; @@ -368,8 +385,8 @@ dnr_api::MatchedRuleInfo matched_rule_info; matched_rule_info.rule = std::move(matched_rule); matched_rule_info.tab_id = tab_id; + matched_rule_info.time_stamp = tracked_rule.time_stamp.ToJsTimeIgnoringNull(); - // TODO(crbug.com/983761): Populate timestamp for |matched_rule_info|. return matched_rule_info; }
diff --git a/extensions/browser/api/declarative_net_request/action_tracker.h b/extensions/browser/api/declarative_net_request/action_tracker.h index 147c669..7451306 100644 --- a/extensions/browser/api/declarative_net_request/action_tracker.h +++ b/extensions/browser/api/declarative_net_request/action_tracker.h
@@ -9,9 +9,14 @@ #include <map> #include <vector> +#include "base/time/time.h" #include "extensions/common/api/declarative_net_request.h" #include "extensions/common/extension_id.h" +namespace base { +class Clock; +} + namespace content { class BrowserContext; } @@ -31,6 +36,10 @@ ActionTracker(const ActionTracker& other) = delete; ActionTracker& operator=(const ActionTracker& other) = delete; + // Sets a custom Clock to use in tests. |clock| should be owned by the caller + // of this function. + static void SetClockForTests(const base::Clock* clock); + // Called whenever a request matches with a rule. void OnRuleMatched(const RequestAction& request_action, const WebRequestInfo& request_info); @@ -60,7 +69,8 @@ // rules matched for |tab_id| will be returned. std::vector<api::declarative_net_request::MatchedRuleInfo> GetMatchedRules( const ExtensionId& extension_id, - base::Optional<int> tab_id) const; + const base::Optional<int>& tab_id, + const base::Time& min_time_stamp); // Returns the number of matched rules in |rules_tracked_| for the given // |extension_id| and |tab_id|. Should only be used for tests. @@ -103,6 +113,10 @@ const int rule_id; const api::declarative_net_request::SourceType source_type; + + // The timestamp for when the rule was matched. This is set in the + // constructor. + const base::Time time_stamp; }; // Info tracked for each ExtensionTabIdKey or ExtensionNavigationIdKey.
diff --git a/extensions/browser/api/declarative_net_request/constants.cc b/extensions/browser/api/declarative_net_request/constants.cc index e0ba6bd6..c53ef42 100644 --- a/extensions/browser/api/declarative_net_request/constants.cc +++ b/extensions/browser/api/declarative_net_request/constants.cc
@@ -53,7 +53,10 @@ const char kErrorRegexSubstitutionWithoutFilter[] = "Rule with id * can't specify the \"*\" key without specifying the \"*\" " "key."; - +const char kErrorInvalidAllowAllRequestsResourceType[] = + "Rule with id * is an \"allowAllRequests\" rule and must specify the " + "\"resourceTypes\" key. It may only include the \"main_frame\" and " + "\"sub_frame\" resource types."; const char kErrorListNotPassed[] = "Rules file must contain a list."; const char kRuleCountExceeded[] =
diff --git a/extensions/browser/api/declarative_net_request/constants.h b/extensions/browser/api/declarative_net_request/constants.h index d99a3a4..3a16fa5 100644 --- a/extensions/browser/api/declarative_net_request/constants.h +++ b/extensions/browser/api/declarative_net_request/constants.h
@@ -50,6 +50,7 @@ ERROR_MULTIPLE_FILTERS_SPECIFIED, ERROR_REGEX_SUBSTITUTION_WITHOUT_FILTER, ERROR_INVALID_REGEX_SUBSTITUTION, + ERROR_INVALID_ALLOW_ALL_REQUESTS_RESOURCE_TYPE, }; // Describes the ways in which updating dynamic rules can fail. @@ -97,6 +98,7 @@ extern const char kErrorJavascriptRedirect[]; extern const char kErrorMultipleFilters[]; extern const char kErrorRegexSubstitutionWithoutFilter[]; +extern const char kErrorInvalidAllowAllRequestsResourceType[]; extern const char kErrorListNotPassed[];
diff --git a/extensions/browser/api/declarative_net_request/declarative_net_request_api.cc b/extensions/browser/api/declarative_net_request/declarative_net_request_api.cc index 6c9c25d..1c65c87 100644 --- a/extensions/browser/api/declarative_net_request/declarative_net_request_api.cc +++ b/extensions/browser/api/declarative_net_request/declarative_net_request_api.cc
@@ -12,6 +12,7 @@ #include "base/strings/stringprintf.h" #include "base/task/post_task.h" #include "base/task_runner_util.h" +#include "base/time/time.h" #include "content/public/browser/browser_task_traits.h" #include "content/public/browser/browser_thread.h" #include "extensions/browser/api/declarative_net_request/action_tracker.h" @@ -282,21 +283,26 @@ EXTENSION_FUNCTION_VALIDATE(error.empty()); base::Optional<int> tab_id; - // TODO(crbug.com/983761): Add timestamp filtering as well. + base::Time min_time_stamp = base::Time::Min(); - if (params->filter && params->filter->tab_id) - tab_id = *params->filter->tab_id; + if (params->filter) { + if (params->filter->tab_id) + tab_id = *params->filter->tab_id; + + if (params->filter->min_time_stamp) + min_time_stamp = base::Time::FromJsTime(*params->filter->min_time_stamp); + } declarative_net_request::RulesMonitorService* rules_monitor_service = declarative_net_request::RulesMonitorService::Get(browser_context()); DCHECK(rules_monitor_service); - const declarative_net_request::ActionTracker& action_tracker = + declarative_net_request::ActionTracker& action_tracker = rules_monitor_service->action_tracker(); dnr_api::RulesMatchedDetails details; details.rules_matched_info = - action_tracker.GetMatchedRules(extension_id(), tab_id); + action_tracker.GetMatchedRules(extension_id(), tab_id, min_time_stamp); return RespondNow( ArgumentList(dnr_api::GetMatchedRules::Results::Create(details)));
diff --git a/extensions/browser/api/declarative_net_request/extension_url_pattern_index_matcher.cc b/extensions/browser/api/declarative_net_request/extension_url_pattern_index_matcher.cc index f7686c8..f173985 100644 --- a/extensions/browser/api/declarative_net_request/extension_url_pattern_index_matcher.cc +++ b/extensions/browser/api/declarative_net_request/extension_url_pattern_index_matcher.cc
@@ -59,7 +59,7 @@ const ExtensionUrlPatternIndexMatcher::UrlPatternIndexList* index_list) { // We only support removing a subset of extra headers currently. If that // changes, the implementation here should change as well. - static_assert(flat::IndexType_count == 4, + static_assert(flat::IndexType_count == 5, "Modify this method to ensure IsExtraHeadersMatcherInternal is " "updated as new actions are added."); static const flat::IndexType extra_header_indices[] = { @@ -93,9 +93,9 @@ base::Optional<RequestAction> ExtensionUrlPatternIndexMatcher::GetBeforeRequestAction( const RequestParams& params) const { - const flat_rule::UrlRule* rule = - GetMatchingRule(params, flat::IndexType_before_request, - FindRuleStrategy::kHighestPriority); + const flat_rule::UrlRule* rule = GetMatchingRule( + params, flat::IndexType_before_request_except_allow_all_requests, + FindRuleStrategy::kHighestPriority); if (!rule) return base::nullopt; @@ -112,6 +112,7 @@ return CreateRedirectActionFromMetadata(params, *rule, *metadata_list_); case flat::ActionType_upgrade_scheme: return CreateUpgradeAction(params, *rule); + case flat::ActionType_allow_all_requests: case flat::ActionType_remove_headers: case flat::ActionType_count: NOTREACHED();
diff --git a/extensions/browser/api/declarative_net_request/flat/extension_ruleset.fbs b/extensions/browser/api/declarative_net_request/flat/extension_ruleset.fbs index 9fa756d..06827743 100644 --- a/extensions/browser/api/declarative_net_request/flat/extension_ruleset.fbs +++ b/extensions/browser/api/declarative_net_request/flat/extension_ruleset.fbs
@@ -18,6 +18,7 @@ redirect, upgrade_scheme, remove_headers, + allow_all_requests, /// Number of actions. Must be the last entry. count } @@ -79,8 +80,12 @@ /// the |index_list| vector. enum IndexType : ubyte { /// Index for rules that are evaluated during the onBeforeRequest stage of a - /// request. - before_request = 0, + /// request, excluding allowAllRequests rules. + before_request_except_allow_all_requests = 0, + + /// Index for allowAllRequests rule. We have a separate index for these rules + /// since they need to be evaluated separately when a navigation commits. + allow_all_requests, remove_cookie_header, remove_referer_header,
diff --git a/extensions/browser/api/declarative_net_request/flat_ruleset_indexer.cc b/extensions/browser/api/declarative_net_request/flat_ruleset_indexer.cc index 509447cd..883158e 100644 --- a/extensions/browser/api/declarative_net_request/flat_ruleset_indexer.cc +++ b/extensions/browser/api/declarative_net_request/flat_ruleset_indexer.cc
@@ -273,7 +273,11 @@ case dnr_api::RULE_ACTION_TYPE_ALLOW: case dnr_api::RULE_ACTION_TYPE_REDIRECT: case dnr_api::RULE_ACTION_TYPE_UPGRADESCHEME: - return {index_builders_[flat::IndexType_before_request].get()}; + return {index_builders_ + [flat::IndexType_before_request_except_allow_all_requests] + .get()}; + case dnr_api::RULE_ACTION_TYPE_ALLOWALLREQUESTS: + return {index_builders_[flat::IndexType_allow_all_requests].get()}; case dnr_api::RULE_ACTION_TYPE_REMOVEHEADERS: return GetRemoveHeaderBuilders(indexed_rule.remove_headers_set); case dnr_api::RULE_ACTION_TYPE_NONE:
diff --git a/extensions/browser/api/declarative_net_request/flat_ruleset_indexer_unittest.cc b/extensions/browser/api/declarative_net_request/flat_ruleset_indexer_unittest.cc index 0711789..cf0ad895 100644 --- a/extensions/browser/api/declarative_net_request/flat_ruleset_indexer_unittest.cc +++ b/extensions/browser/api/declarative_net_request/flat_ruleset_indexer_unittest.cc
@@ -426,16 +426,26 @@ {dnr_api::REMOVE_HEADER_TYPE_SETCOOKIE, dnr_api::REMOVE_HEADER_TYPE_COOKIE, dnr_api::REMOVE_HEADER_TYPE_REFERER}, nullptr, base::nullopt)); + rules_to_index.push_back(CreateIndexedRule( + 22, 3, flat_rule::OptionFlag_NONE, flat_rule::ElementType_SUBDOCUMENT, + flat_rule::ActivationType_NONE, flat_rule::UrlPatternType_SUBSTRING, + flat_rule::AnchorType_NONE, flat_rule::AnchorType_NONE, "example.com", {}, + {}, base::nullopt, dnr_api::RULE_ACTION_TYPE_ALLOWALLREQUESTS, {}, + nullptr, base::nullopt)); // Note: It's unsafe to store/return pointers to a mutable vector since the // vector can resize/reallocate invalidating the existing pointers/iterators. // Hence we build |expected_index_lists| once the vector |rules_to_index| is // finalized. std::vector<const IndexedRule*> expected_index_lists[flat::IndexType_count]; - expected_index_lists[flat::IndexType_before_request] = { - &rules_to_index[0], &rules_to_index[1], &rules_to_index[2], - &rules_to_index[3], &rules_to_index[4], &rules_to_index[5], - &rules_to_index[6], &rules_to_index[7]}; + expected_index_lists + [flat::IndexType_before_request_except_allow_all_requests] = { + &rules_to_index[0], &rules_to_index[1], &rules_to_index[2], + &rules_to_index[3], &rules_to_index[4], &rules_to_index[5], + &rules_to_index[6], &rules_to_index[7]}; + expected_index_lists[flat::IndexType_allow_all_requests] = { + &rules_to_index[10]}; + expected_index_lists[flat::IndexType_remove_cookie_header] = { &rules_to_index[8], &rules_to_index[9]}; expected_index_lists[flat::IndexType_remove_referer_header] = {
diff --git a/extensions/browser/api/declarative_net_request/indexed_rule.cc b/extensions/browser/api/declarative_net_request/indexed_rule.cc index fc1c198..b027552 100644 --- a/extensions/browser/api/declarative_net_request/indexed_rule.cc +++ b/extensions/browser/api/declarative_net_request/indexed_rule.cc
@@ -212,14 +212,15 @@ return mask; } -// Computes the bitmask of flat_rule::ElementType taking into consideration -// the included and excluded resource types for |condition|. -ParseResult ComputeElementTypes(const dnr_api::RuleCondition& condition, +// Computes the bitmask of flat_rule::ElementType taking into consideration the +// included and excluded resource types for |rule| and its associated action +// type. +ParseResult ComputeElementTypes(const dnr_api::Rule& rule, uint16_t* element_types) { uint16_t include_element_type_mask = - GetResourceTypesMask(condition.resource_types.get()); + GetResourceTypesMask(rule.condition.resource_types.get()); uint16_t exclude_element_type_mask = - GetResourceTypesMask(condition.excluded_resource_types.get()); + GetResourceTypesMask(rule.condition.excluded_resource_types.get()); // OBJECT_SUBREQUEST is not used by Extensions. if (exclude_element_type_mask == @@ -231,6 +232,17 @@ if (include_element_type_mask & exclude_element_type_mask) return ParseResult::ERROR_RESOURCE_TYPE_DUPLICATED; + if (rule.action.type == dnr_api::RULE_ACTION_TYPE_ALLOWALLREQUESTS) { + // For allowAllRequests rule, the resourceTypes key must always be specified + // and may only include main_frame and sub_frame types. + const uint16_t frame_element_type_mask = + flat_rule::ElementType_MAIN_FRAME | flat_rule::ElementType_SUBDOCUMENT; + if (include_element_type_mask == flat_rule::ElementType_NONE || + !IsSubset(include_element_type_mask, frame_element_type_mask)) { + return ParseResult::ERROR_INVALID_ALLOW_ALL_REQUESTS_RESOURCE_TYPE; + } + } + if (include_element_type_mask != flat_rule::ElementType_NONE) *element_types = include_element_type_mask; else if (exclude_element_type_mask != flat_rule::ElementType_NONE) @@ -368,6 +380,27 @@ return ParseResult::ERROR_INVALID_REDIRECT; } +bool DoesActionSupportPriority(dnr_api::RuleActionType type) { + switch (type) { + case dnr_api::RULE_ACTION_TYPE_NONE: + break; + case dnr_api::RULE_ACTION_TYPE_BLOCK: + return true; + case dnr_api::RULE_ACTION_TYPE_REDIRECT: + return true; + case dnr_api::RULE_ACTION_TYPE_ALLOW: + return true; + case dnr_api::RULE_ACTION_TYPE_UPGRADESCHEME: + return true; + case dnr_api::RULE_ACTION_TYPE_REMOVEHEADERS: + return false; + case dnr_api::RULE_ACTION_TYPE_ALLOWALLREQUESTS: + return true; + } + NOTREACHED(); + return false; +} + } // namespace IndexedRule::IndexedRule() = default; @@ -384,12 +417,9 @@ if (parsed_rule.id < kMinValidID) return ParseResult::ERROR_INVALID_RULE_ID; - const bool is_before_request_rule = - parsed_rule.action.type == dnr_api::RULE_ACTION_TYPE_BLOCK || - parsed_rule.action.type == dnr_api::RULE_ACTION_TYPE_ALLOW || - parsed_rule.action.type == dnr_api::RULE_ACTION_TYPE_REDIRECT || - parsed_rule.action.type == dnr_api::RULE_ACTION_TYPE_UPGRADESCHEME; - if (is_before_request_rule) { + const bool is_priority_supported = + DoesActionSupportPriority(parsed_rule.action.type); + if (is_priority_supported) { if (!parsed_rule.priority) return ParseResult::ERROR_EMPTY_RULE_PRIORITY; if (*parsed_rule.priority < kMinValidPriority) @@ -464,13 +494,13 @@ indexed_rule->action_type = parsed_rule.action.type; indexed_rule->id = base::checked_cast<uint32_t>(parsed_rule.id); indexed_rule->priority = base::checked_cast<uint32_t>( - is_before_request_rule ? *parsed_rule.priority : kDefaultPriority); + is_priority_supported ? *parsed_rule.priority : kDefaultPriority); indexed_rule->options = GetOptionsMask(parsed_rule); indexed_rule->activation_types = GetActivationTypes(parsed_rule); { - ParseResult result = ComputeElementTypes(parsed_rule.condition, - &indexed_rule->element_types); + ParseResult result = + ComputeElementTypes(parsed_rule, &indexed_rule->element_types); if (result != ParseResult::SUCCESS) return result; }
diff --git a/extensions/browser/api/declarative_net_request/indexed_rule_unittest.cc b/extensions/browser/api/declarative_net_request/indexed_rule_unittest.cc index 8d2bfde3..68cec854 100644 --- a/extensions/browser/api/declarative_net_request/indexed_rule_unittest.cc +++ b/extensions/browser/api/declarative_net_request/indexed_rule_unittest.cc
@@ -777,6 +777,59 @@ EXPECT_EQ("http://google.com", indexed_rule.redirect_url); } +TEST_F(IndexedRuleTest, InvalidAllowAllRequestsResourceType) { + using ResourceTypeVec = std::vector<dnr_api::ResourceType>; + + struct { + ResourceTypeVec resource_types; + ResourceTypeVec excluded_resource_types; + const ParseResult expected_result; + // Only valid if |expected_result| is SUCCESS. + const uint16_t expected_element_types; + } cases[] = { + {{}, {}, ParseResult::ERROR_INVALID_ALLOW_ALL_REQUESTS_RESOURCE_TYPE, 0}, + {{dnr_api::RESOURCE_TYPE_SUB_FRAME}, + {dnr_api::RESOURCE_TYPE_SCRIPT}, + ParseResult::SUCCESS, + flat_rule::ElementType_SUBDOCUMENT}, + {{dnr_api::RESOURCE_TYPE_SCRIPT, dnr_api::RESOURCE_TYPE_MAIN_FRAME}, + {}, + ParseResult::ERROR_INVALID_ALLOW_ALL_REQUESTS_RESOURCE_TYPE, + 0}, + {{dnr_api::RESOURCE_TYPE_MAIN_FRAME, dnr_api::RESOURCE_TYPE_SUB_FRAME}, + {}, + ParseResult::SUCCESS, + flat_rule::ElementType_MAIN_FRAME | flat_rule::ElementType_SUBDOCUMENT}, + {{dnr_api::RESOURCE_TYPE_MAIN_FRAME}, + {}, + ParseResult::SUCCESS, + flat_rule::ElementType_MAIN_FRAME}, + }; + + for (size_t i = 0; i < base::size(cases); ++i) { + SCOPED_TRACE(base::StringPrintf("Testing case[%" PRIuS "]", i)); + dnr_api::Rule rule = CreateGenericParsedRule(); + + if (cases[i].resource_types.empty()) + rule.condition.resource_types = nullptr; + else + rule.condition.resource_types = + std::make_unique<ResourceTypeVec>(cases[i].resource_types); + + rule.condition.excluded_resource_types = + std::make_unique<ResourceTypeVec>(cases[i].excluded_resource_types); + rule.action.type = dnr_api::RULE_ACTION_TYPE_ALLOWALLREQUESTS; + + IndexedRule indexed_rule; + ParseResult result = IndexedRule::CreateIndexedRule( + std::move(rule), GetBaseURL(), &indexed_rule); + + EXPECT_EQ(cases[i].expected_result, result); + if (result == ParseResult::SUCCESS) + EXPECT_EQ(cases[i].expected_element_types, indexed_rule.element_types); + } +} + } // namespace } // namespace declarative_net_request } // namespace extensions
diff --git a/extensions/browser/api/declarative_net_request/indexed_ruleset_format_version_unittest.cc b/extensions/browser/api/declarative_net_request/indexed_ruleset_format_version_unittest.cc index 92b6de8..22981eb 100644 --- a/extensions/browser/api/declarative_net_request/indexed_ruleset_format_version_unittest.cc +++ b/extensions/browser/api/declarative_net_request/indexed_ruleset_format_version_unittest.cc
@@ -26,6 +26,7 @@ redirect, upgrade_scheme, remove_headers, + allow_all_requests, count } table QueryKeyValue { @@ -55,7 +56,8 @@ transform : UrlTransform; } enum IndexType : ubyte { - before_request = 0, + before_request_except_allow_all_requests = 0, + allow_all_requests, remove_cookie_header, remove_referer_header, remove_set_cookie_header, @@ -143,7 +145,7 @@ EXPECT_EQ(StripCommentsAndWhitespace(kFlatbufferSchemaExpected), StripCommentsAndWhitespace(flatbuffer_schema)) << "Schema change detected; update this test and the schema version."; - EXPECT_EQ(14, GetIndexedRulesetFormatVersionForTesting()) + EXPECT_EQ(15, GetIndexedRulesetFormatVersionForTesting()) << "Update this test if you update the schema version."; }
diff --git a/extensions/browser/api/declarative_net_request/parse_info.cc b/extensions/browser/api/declarative_net_request/parse_info.cc index eb08f6c..d23841b 100644 --- a/extensions/browser/api/declarative_net_request/parse_info.cc +++ b/extensions/browser/api/declarative_net_request/parse_info.cc
@@ -177,6 +177,11 @@ base::NumberToString(*rule_id_), kRegexSubstitutionPath); break; + case ParseResult::ERROR_INVALID_ALLOW_ALL_REQUESTS_RESOURCE_TYPE: + error = ErrorUtils::FormatErrorMessage( + kErrorInvalidAllowAllRequestsResourceType, + base::NumberToString(*rule_id_)); + break; } return error; }
diff --git a/extensions/browser/api/declarative_net_request/regex_rules_matcher.cc b/extensions/browser/api/declarative_net_request/regex_rules_matcher.cc index efa29595..353107d 100644 --- a/extensions/browser/api/declarative_net_request/regex_rules_matcher.cc +++ b/extensions/browser/api/declarative_net_request/regex_rules_matcher.cc
@@ -25,7 +25,7 @@ // We only support removing a subset of extra headers currently. If that // changes, the implementation here should change as well. - static_assert(flat::ActionType_count == 5, + static_assert(flat::ActionType_count == 6, "Modify this method to ensure IsExtraHeadersMatcherInternal is " "updated as new actions are added."); @@ -61,6 +61,7 @@ case flat::ActionType_allow: case flat::ActionType_redirect: case flat::ActionType_upgrade_scheme: + case flat::ActionType_allow_all_requests: return true; case flat::ActionType_remove_headers: return false; @@ -124,6 +125,9 @@ *metadata_list_); case flat::ActionType_upgrade_scheme: return CreateUpgradeAction(params, rule); + case flat::ActionType_allow_all_requests: + // TODO(crbug.com/1038831): Handle allowAllRequests case. + break; default: NOTREACHED(); }
diff --git a/extensions/browser/api/declarative_net_request/ruleset_manager.cc b/extensions/browser/api/declarative_net_request/ruleset_manager.cc index 06b5a8b..f3b58de 100644 --- a/extensions/browser/api/declarative_net_request/ruleset_manager.cc +++ b/extensions/browser/api/declarative_net_request/ruleset_manager.cc
@@ -311,7 +311,7 @@ // We only support removing a subset of extra headers currently. If that // changes, the implementation here should change as well. - static_assert(flat::ActionType_count == 5, + static_assert(flat::ActionType_count == 6, "Modify this method to ensure HasExtraHeadersMatcherForRequest " "is updated as new actions are added.");
diff --git a/extensions/browser/api/declarative_net_request/test_utils.cc b/extensions/browser/api/declarative_net_request/test_utils.cc index a33bc4f..f160a5ed 100644 --- a/extensions/browser/api/declarative_net_request/test_utils.cc +++ b/extensions/browser/api/declarative_net_request/test_utils.cc
@@ -37,7 +37,7 @@ // with gtest. This reuses the logic used to test action equality in // TestRequestACtion in test_utils.h. bool operator==(const RequestAction& lhs, const RequestAction& rhs) { - static_assert(flat::IndexType_count == 4, + static_assert(flat::IndexType_count == 5, "Modify this method to ensure it stays updated as new actions " "are added."); @@ -198,6 +198,9 @@ case ParseResult::ERROR_INVALID_REGEX_SUBSTITUTION: output << "ERROR_INVALID_REGEX_SUBSTITUTION"; break; + case ParseResult::ERROR_INVALID_ALLOW_ALL_REQUESTS_RESOURCE_TYPE: + output << "ERROR_INVALID_ALLOW_ALL_REQUESTS_RESOURCE_TYPE"; + break; } return output; }
diff --git a/extensions/browser/api/declarative_net_request/utils.cc b/extensions/browser/api/declarative_net_request/utils.cc index cc6a7bb1..1d00d3a 100644 --- a/extensions/browser/api/declarative_net_request/utils.cc +++ b/extensions/browser/api/declarative_net_request/utils.cc
@@ -37,7 +37,7 @@ // url_pattern_index.fbs. Whenever an extension with an indexed ruleset format // version different from the one currently used by Chrome is loaded, the // extension ruleset will be reindexed. -constexpr int kIndexedRulesetFormatVersion = 14; +constexpr int kIndexedRulesetFormatVersion = 15; // This static assert is meant to catch cases where // url_pattern_index::kUrlPatternIndexFormatVersion is incremented without @@ -250,6 +250,8 @@ return flat::ActionType_remove_headers; case dnr_api::RULE_ACTION_TYPE_UPGRADESCHEME: return flat::ActionType_upgrade_scheme; + case dnr_api::RULE_ACTION_TYPE_ALLOWALLREQUESTS: + return flat::ActionType_allow_all_requests; case dnr_api::RULE_ACTION_TYPE_NONE: break; }
diff --git a/extensions/browser/api/web_request/DEPS b/extensions/browser/api/web_request/DEPS deleted file mode 100644 index 96d3200..0000000 --- a/extensions/browser/api/web_request/DEPS +++ /dev/null
@@ -1,4 +0,0 @@ -include_rules = [ - # TODO(crbug.com/996940): Remove this when done debugging. - "+components/crash", -]
diff --git a/extensions/browser/api/web_request/web_request_proxying_url_loader_factory.cc b/extensions/browser/api/web_request/web_request_proxying_url_loader_factory.cc index 30d776f0..481a45d 100644 --- a/extensions/browser/api/web_request/web_request_proxying_url_loader_factory.cc +++ b/extensions/browser/api/web_request/web_request_proxying_url_loader_factory.cc
@@ -10,10 +10,8 @@ #include "base/bind.h" #include "base/callback_helpers.h" #include "base/feature_list.h" -#include "base/strings/string_number_conversions.h" #include "base/strings/stringprintf.h" #include "base/task/post_task.h" -#include "components/crash/core/common/crash_key.h" #include "components/keyed_service/content/browser_context_keyed_service_shutdown_notifier_factory.h" #include "content/public/browser/browser_context.h" #include "content/public/browser/browser_task_traits.h" @@ -1038,20 +1036,6 @@ request_id_generator_->Generate(routing_id, request_id); if (request_id) { - // TODO(crbug.com/996940): Remove these when done debugging. - static crash_reporter::CrashKeyString<1024> url_key("wr-url"); - crash_reporter::ScopedCrashKeyString url_string( - &url_key, request.url.possibly_invalid_spec()); - - static crash_reporter::CrashKeyString<8> type_key("wr-loader-type"); - crash_reporter::ScopedCrashKeyString type_string( - &type_key, base::NumberToString(int(loader_factory_type_))); - - static crash_reporter::CrashKeyString<32> id_key("wr-request-id"); - crash_reporter::ScopedCrashKeyString id_string( - &id_key, base::NumberToString(render_process_id_) + ":" + - base::NumberToString(request_id)); - // Only requests with a non-zero request ID can have their proxy associated // with said ID. This is necessary to support correlation against any auth // events received by the browser. Requests with a request ID of 0 therefore
diff --git a/extensions/common/api/declarative_net_request.idl b/extensions/common/api/declarative_net_request.idl index 541bc63..047da6f 100644 --- a/extensions/common/api/declarative_net_request.idl +++ b/extensions/common/api/declarative_net_request.idl
@@ -53,7 +53,11 @@ // or ftp. upgradeScheme, // Remove request/response headers from the network request. - removeHeaders + removeHeaders, + // TODO(crbug.com/1038831): Add documentation once the implementation is + // complete. + [nodoc] + allowAllRequests }; // Represents a query key-value pair. @@ -258,7 +262,7 @@ long? tabId; // If specified, only matches rules after the given timestamp. - long? minTimeStamp; + double? minTimeStamp; }; [nodoc]
diff --git a/extensions/common/constants.cc b/extensions/common/constants.cc index 5f57a23..db5a7cf3 100644 --- a/extensions/common/constants.cc +++ b/extensions/common/constants.cc
@@ -20,6 +20,8 @@ FILE_PATH_LITERAL("_locales"); const base::FilePath::CharType kMessagesFilename[] = FILE_PATH_LITERAL("messages.json"); +const base::FilePath::CharType kGzippedMessagesFilename[] = + FILE_PATH_LITERAL("messages.json.gz"); const base::FilePath::CharType kPlatformSpecificFolder[] = FILE_PATH_LITERAL("_platform_specific"); const base::FilePath::CharType kMetadataFolder[] =
diff --git a/extensions/common/constants.h b/extensions/common/constants.h index edbf27c..b859afe3 100644 --- a/extensions/common/constants.h +++ b/extensions/common/constants.h
@@ -29,6 +29,9 @@ // The name of the messages file inside an extension. extern const base::FilePath::CharType kMessagesFilename[]; +// The name of the gzipped messages file inside an extension. +extern const base::FilePath::CharType kGzippedMessagesFilename[]; + // The base directory for subdirectories with platform-specific code. extern const base::FilePath::CharType kPlatformSpecificFolder[];
diff --git a/extensions/common/extension_l10n_util.cc b/extensions/common/extension_l10n_util.cc index 4f1b0a93..c102fc13 100644 --- a/extensions/common/extension_l10n_util.cc +++ b/extensions/common/extension_l10n_util.cc
@@ -163,10 +163,16 @@ GzippedMessagesPermission GetGzippedMessagesPermissionForExtension( const extensions::Extension* extension) { + return extension + ? GetGzippedMessagesPermissionForLocation(extension->location()) + : GzippedMessagesPermission::kDisallow; +} + +GzippedMessagesPermission GetGzippedMessagesPermissionForLocation( + extensions::Manifest::Location location) { // Component extensions are part of the chromium or chromium OS source and // as such are considered a trusted source. - return (extension && - extension->location() == extensions::Manifest::Location::COMPONENT) + return location == extensions::Manifest::COMPONENT ? GzippedMessagesPermission::kAllowForTrustedSource : GzippedMessagesPermission::kDisallow; }
diff --git a/extensions/common/extension_l10n_util.h b/extensions/common/extension_l10n_util.h index b1360898..1971662 100644 --- a/extensions/common/extension_l10n_util.h +++ b/extensions/common/extension_l10n_util.h
@@ -13,6 +13,7 @@ #include "base/auto_reset.h" #include "base/strings/string_piece.h" +#include "extensions/common/manifest.h" namespace base { class DictionaryValue; @@ -39,6 +40,11 @@ GzippedMessagesPermission GetGzippedMessagesPermissionForExtension( const extensions::Extension* extension); +// Returns GzippedMessagesPermission::kAllowForTrustedSource for trusted +// manifest locations, otherwise returns kDisallow. +GzippedMessagesPermission GetGzippedMessagesPermissionForLocation( + extensions::Manifest::Location location); + // Called from tests to temporarily allow loading gzipped messages for non // component test extensions. base::AutoReset<bool> AllowGzippedMessagesAllowedForTest();
diff --git a/extensions/common/file_util.cc b/extensions/common/file_util.cc index 49f30ee..d40f987 100644 --- a/extensions/common/file_util.cc +++ b/extensions/common/file_util.cc
@@ -207,9 +207,12 @@ LoadManifest(extension_path, error); if (!manifest.get()) return nullptr; + if (!extension_l10n_util::LocalizeExtension( extension_path, manifest.get(), - extension_l10n_util::GzippedMessagesPermission::kDisallow, error)) { + extension_l10n_util::GetGzippedMessagesPermissionForLocation( + location), + error)) { return nullptr; }
diff --git a/extensions/common/file_util_unittest.cc b/extensions/common/file_util_unittest.cc index 6f63ba8..f1cfdebd 100644 --- a/extensions/common/file_util_unittest.cc +++ b/extensions/common/file_util_unittest.cc
@@ -195,6 +195,31 @@ EXPECT_EQ("The first extension that I made.", extension->description()); } +TEST_F(FileUtilTest, LoadExtensionWithGzippedLocalesAllowed) { + base::FilePath install_dir; + ASSERT_TRUE(base::PathService::Get(DIR_TEST_DATA, &install_dir)); + install_dir = install_dir.AppendASCII("extension_with_gzipped_locales"); + + std::string error; + scoped_refptr<Extension> extension(file_util::LoadExtension( + install_dir, Manifest::COMPONENT, Extension::NO_FLAGS, &error)); + ASSERT_TRUE(extension.get() != nullptr); + EXPECT_EQ("The first extension that I made.", extension->description()); + ASSERT_TRUE(error.empty()); +} + +TEST_F(FileUtilTest, LoadExtensionWithGzippedLocalesNotAllowed) { + base::FilePath install_dir; + ASSERT_TRUE(base::PathService::Get(DIR_TEST_DATA, &install_dir)); + install_dir = install_dir.AppendASCII("extension_with_gzipped_locales"); + + std::string error; + scoped_refptr<Extension> extension(file_util::LoadExtension( + install_dir, Manifest::UNPACKED, Extension::NO_FLAGS, &error)); + ASSERT_TRUE(extension.get() == nullptr); + EXPECT_EQ("Catalog file is missing for locale en.", error); +} + TEST_F(FileUtilTest, LoadExtensionWithoutLocalesFolder) { base::FilePath install_dir; ASSERT_TRUE(base::PathService::Get(DIR_TEST_DATA, &install_dir));
diff --git a/extensions/common/manifest_handlers/default_locale_handler.cc b/extensions/common/manifest_handlers/default_locale_handler.cc index 83dfdc71..f765516 100644 --- a/extensions/common/manifest_handlers/default_locale_handler.cc +++ b/extensions/common/manifest_handlers/default_locale_handler.cc
@@ -80,6 +80,11 @@ const base::FilePath default_locale_path = path.AppendASCII(default_locale); bool has_default_locale_message_file = false; + bool gzipped_messages_allowed = + extension_l10n_util::GetGzippedMessagesPermissionForLocation( + extension->location()) == + extension_l10n_util::GzippedMessagesPermission::kAllowForTrustedSource; + base::FilePath locale_path; while (!(locale_path = locales.Next()).empty()) { if (extension_l10n_util::ShouldSkipValidation(path, locale_path, @@ -87,8 +92,13 @@ continue; base::FilePath messages_path = locale_path.Append(kMessagesFilename); + base::FilePath gzipped_messages_path = + locale_path.Append(kGzippedMessagesFilename); - if (!base::PathExists(messages_path)) { + // Fail unless plain exists or (gzip allowed and gzip exists) + if (!base::PathExists(messages_path) && + !(gzipped_messages_allowed && + base::PathExists(gzipped_messages_path))) { *error = base::StringPrintf( "%s %s", errors::kLocalesMessagesFileMissing, base::UTF16ToUTF8(messages_path.LossyDisplayName()).c_str());
diff --git a/extensions/test/data/extension_with_gzipped_locales/_locales/en/messages.json.gz b/extensions/test/data/extension_with_gzipped_locales/_locales/en/messages.json.gz new file mode 100644 index 0000000..e3670a8 --- /dev/null +++ b/extensions/test/data/extension_with_gzipped_locales/_locales/en/messages.json.gz Binary files differ
diff --git a/extensions/test/data/extension_with_gzipped_locales/_locales/en_US/messages.json.gz b/extensions/test/data/extension_with_gzipped_locales/_locales/en_US/messages.json.gz new file mode 100644 index 0000000..ef28667 --- /dev/null +++ b/extensions/test/data/extension_with_gzipped_locales/_locales/en_US/messages.json.gz Binary files differ
diff --git a/extensions/test/data/extension_with_gzipped_locales/_locales/sr/messages.json.gz b/extensions/test/data/extension_with_gzipped_locales/_locales/sr/messages.json.gz new file mode 100644 index 0000000..72e5820a --- /dev/null +++ b/extensions/test/data/extension_with_gzipped_locales/_locales/sr/messages.json.gz Binary files differ
diff --git a/extensions/test/data/extension_with_gzipped_locales/manifest.json b/extensions/test/data/extension_with_gzipped_locales/manifest.json new file mode 100644 index 0000000..04da45a --- /dev/null +++ b/extensions/test/data/extension_with_gzipped_locales/manifest.json
@@ -0,0 +1,7 @@ +{ + "version": "1.0.0.0", + "manifest_version": 2, + "name": "__MSG_chrome_extension_name__", + "description": "__MSG_chrome_extension_description__", + "default_locale": "en_US" +}
diff --git a/gpu/command_buffer/service/shared_image_representation.cc b/gpu/command_buffer/service/shared_image_representation.cc index 829083c..3e34acb 100644 --- a/gpu/command_buffer/service/shared_image_representation.cc +++ b/gpu/command_buffer/service/shared_image_representation.cc
@@ -19,6 +19,10 @@ } SharedImageRepresentation::~SharedImageRepresentation() { + // CHECK here as we'll crash later anyway, and this makes it clearer what the + // error is. + CHECK(!has_scoped_access_) << "Destroying a SharedImageRepresentation with " + "outstanding Scoped*Access objects."; manager_->OnRepresentationDestroyed(backing_->mailbox(), this); } @@ -85,10 +89,10 @@ util::PassKey<SharedImageRepresentationSkia> /* pass_key */, SharedImageRepresentationSkia* representation, sk_sp<SkSurface> surface) - : representation_(representation), surface_(std::move(surface)) {} + : ScopedAccessBase(representation), surface_(std::move(surface)) {} SharedImageRepresentationSkia::ScopedWriteAccess::~ScopedWriteAccess() { - representation_->EndWriteAccess(std::move(surface_)); + representation()->EndWriteAccess(std::move(surface_)); } std::unique_ptr<SharedImageRepresentationSkia::ScopedWriteAccess> @@ -127,11 +131,11 @@ util::PassKey<SharedImageRepresentationSkia> /* pass_key */, SharedImageRepresentationSkia* representation, sk_sp<SkPromiseImageTexture> promise_image_texture) - : representation_(representation), + : ScopedAccessBase(representation), promise_image_texture_(std::move(promise_image_texture)) {} SharedImageRepresentationSkia::ScopedReadAccess::~ScopedReadAccess() { - representation_->EndReadAccess(); + representation()->EndReadAccess(); } std::unique_ptr<SharedImageRepresentationSkia::ScopedReadAccess> @@ -153,6 +157,12 @@ std::move(promise_image_texture)); } +SharedImageRepresentationOverlay::ScopedReadAccess::ScopedReadAccess( + util::PassKey<SharedImageRepresentationOverlay> pass_key, + SharedImageRepresentationOverlay* representation, + gl::GLImage* gl_image) + : ScopedAccessBase(representation), gl_image_(gl_image) {} + std::unique_ptr<SharedImageRepresentationOverlay::ScopedReadAccess> SharedImageRepresentationOverlay::BeginScopedReadAccess(bool needs_gl_image) { if (!IsCleared()) { @@ -170,10 +180,10 @@ util::PassKey<SharedImageRepresentationDawn> /* pass_key */, SharedImageRepresentationDawn* representation, WGPUTexture texture) - : representation_(representation), texture_(texture) {} + : ScopedAccessBase(representation), texture_(texture) {} SharedImageRepresentationDawn::ScopedAccess::~ScopedAccess() { - representation_->EndAccess(); + representation()->EndAccess(); } std::unique_ptr<SharedImageRepresentationDawn::ScopedAccess>
diff --git a/gpu/command_buffer/service/shared_image_representation.h b/gpu/command_buffer/service/shared_image_representation.h index e8a699e..065db021 100644 --- a/gpu/command_buffer/service/shared_image_representation.h +++ b/gpu/command_buffer/service/shared_image_representation.h
@@ -78,11 +78,36 @@ SharedImageBacking* backing() const { return backing_; } bool has_context() const { return has_context_; } + // Helper class for derived classes' Scoped*Access objects. Has tracking to + // ensure a Scoped*Access does not outlive the representation it's associated + // with. + template <typename RepresentationClass> + class ScopedAccessBase { + public: + ScopedAccessBase(RepresentationClass* representation) + : representation_(representation) { + DCHECK(!representation_->has_scoped_access_); + representation_->has_scoped_access_ = true; + } + ~ScopedAccessBase() { + DCHECK(representation_->has_scoped_access_); + representation_->has_scoped_access_ = false; + } + + RepresentationClass* representation() { return representation_; } + + private: + RepresentationClass* const representation_; + + DISALLOW_COPY_AND_ASSIGN(ScopedAccessBase); + }; + private: SharedImageManager* const manager_; SharedImageBacking* const backing_; MemoryTypeTracker* const tracker_; bool has_context_ = true; + bool has_scoped_access_ = false; }; class SharedImageRepresentationFactoryRef : public SharedImageRepresentation { @@ -106,20 +131,16 @@ class GPU_GLES2_EXPORT SharedImageRepresentationGLTextureBase : public SharedImageRepresentation { public: - class ScopedAccess { + class ScopedAccess + : public ScopedAccessBase<SharedImageRepresentationGLTextureBase> { public: ScopedAccess(util::PassKey<SharedImageRepresentationGLTextureBase> pass_key, SharedImageRepresentationGLTextureBase* representation) - : representation_(representation) {} + : ScopedAccessBase(representation) {} ~ScopedAccess() { - representation_->UpdateClearedStateOnEndAccess(); - representation_->EndAccess(); + representation()->UpdateClearedStateOnEndAccess(); + representation()->EndAccess(); } - - private: - SharedImageRepresentationGLTextureBase* representation_ = nullptr; - - DISALLOW_COPY_AND_ASSIGN(ScopedAccess); }; SharedImageRepresentationGLTextureBase(SharedImageManager* manager, @@ -183,7 +204,8 @@ class GPU_GLES2_EXPORT SharedImageRepresentationSkia : public SharedImageRepresentation { public: - class GPU_GLES2_EXPORT ScopedWriteAccess { + class GPU_GLES2_EXPORT ScopedWriteAccess + : public ScopedAccessBase<SharedImageRepresentationSkia> { public: ScopedWriteAccess(util::PassKey<SharedImageRepresentationSkia> pass_key, SharedImageRepresentationSkia* representation, @@ -193,13 +215,11 @@ SkSurface* surface() const { return surface_.get(); } private: - SharedImageRepresentationSkia* const representation_; sk_sp<SkSurface> surface_; - - DISALLOW_COPY_AND_ASSIGN(ScopedWriteAccess); }; - class GPU_GLES2_EXPORT ScopedReadAccess { + class GPU_GLES2_EXPORT ScopedReadAccess + : public ScopedAccessBase<SharedImageRepresentationSkia> { public: ScopedReadAccess(util::PassKey<SharedImageRepresentationSkia> pass_key, SharedImageRepresentationSkia* representation, @@ -211,10 +231,7 @@ } private: - SharedImageRepresentationSkia* const representation_; sk_sp<SkPromiseImageTexture> promise_image_texture_; - - DISALLOW_COPY_AND_ASSIGN(ScopedReadAccess); }; SharedImageRepresentationSkia(SharedImageManager* manager, @@ -280,7 +297,8 @@ MemoryTypeTracker* tracker) : SharedImageRepresentation(manager, backing, tracker) {} - class GPU_GLES2_EXPORT ScopedAccess { + class GPU_GLES2_EXPORT ScopedAccess + : public ScopedAccessBase<SharedImageRepresentationDawn> { public: ScopedAccess(util::PassKey<SharedImageRepresentationDawn> pass_key, SharedImageRepresentationDawn* representation, @@ -290,10 +308,7 @@ WGPUTexture texture() const { return texture_; } private: - SharedImageRepresentationDawn* representation_ = nullptr; WGPUTexture texture_ = 0; - - DISALLOW_COPY_AND_ASSIGN(ScopedAccess); }; // Calls BeginAccess and returns a ScopedAccess object which will EndAccess @@ -318,24 +333,19 @@ MemoryTypeTracker* tracker) : SharedImageRepresentation(manager, backing, tracker) {} - class ScopedReadAccess { + class ScopedReadAccess + : public ScopedAccessBase<SharedImageRepresentationOverlay> { public: ScopedReadAccess(util::PassKey<SharedImageRepresentationOverlay> pass_key, SharedImageRepresentationOverlay* representation, - gl::GLImage* gl_image) - : representation_(representation), gl_image_(gl_image) {} - ~ScopedReadAccess() { - if (representation_) - representation_->EndReadAccess(); - } + gl::GLImage* gl_image); + ~ScopedReadAccess() { representation()->EndReadAccess(); } gl::GLImage* gl_image() const { - DCHECK(representation_); return gl_image_; } private: - SharedImageRepresentationOverlay* representation_; gl::GLImage* gl_image_; };
diff --git a/gpu/command_buffer/service/wrapped_sk_image.cc b/gpu/command_buffer/service/wrapped_sk_image.cc index d8c46b23f..bd7256d 100644 --- a/gpu/command_buffer/service/wrapped_sk_image.cc +++ b/gpu/command_buffer/service/wrapped_sk_image.cc
@@ -42,7 +42,8 @@ public: ~WrappedSkImage() override { promise_texture_.reset(); - gpu::DeleteSkImage(context_state_, std::move(image_)); + if (backend_texture_.isValid()) + DeleteGrBackendTexture(context_state_, &backend_texture_); DCHECK(context_state_->context_lost() || context_state_->IsCurrent(nullptr)); @@ -84,7 +85,7 @@ DCHECK(context_state_->IsCurrent(nullptr)); return SkSurface::MakeFromBackendTexture( - context_state_->gr_context(), image_->getBackendTexture(false), + context_state_->gr_context(), backend_texture_, kTopLeft_GrSurfaceOrigin, final_msaa_count, GetSkColorType(), color_space().ToSkColorSpace(), &surface_props); } @@ -138,23 +139,21 @@ if (!data.empty()) { if (format() == viz::ResourceFormat::ETC1) { - auto sk_data = SkData::MakeWithCopy(data.data(), data.size()); - image_ = SkImage::MakeFromCompressed( - context_state_->gr_context(), sk_data, size().width(), - size().height(), SkImage::kETC1_CompressionType); + backend_texture_ = + context_state_->gr_context()->createCompressedBackendTexture( + size().width(), size().height(), SkImage::kETC1_CompressionType, + data.data(), data.size(), GrMipMapped::kNo, is_protected); } else { SkBitmap bitmap; if (!bitmap.installPixels(info, const_cast<uint8_t*>(data.data()), info.minRowBytes())) { return false; } - image_ = SkImage::MakeFromBitmap(bitmap); - // Move image to GPU - if (image_) - image_ = image_->makeTextureImage(context_state_->gr_context()); + backend_texture_ = context_state_->gr_context()->createBackendTexture( + bitmap.pixmap(), GrRenderable::kNo, is_protected); } - if (!image_) + if (!backend_texture_.isValid()) return false; SetCleared(); @@ -165,42 +164,38 @@ // We don't do this on release builds because there is a slight overhead. #if DCHECK_IS_ON() - auto backend_texture = context_state_->gr_context()->createBackendTexture( + backend_texture_ = context_state_->gr_context()->createBackendTexture( size().width(), size().height(), GetSkColorType(), SkColors::kBlue, GrMipMapped::kNo, GrRenderable::kYes, is_protected); #else - auto backend_texture = context_state_->gr_context()->createBackendTexture( + backend_texture_ = context_state_->gr_context()->createBackendTexture( size().width(), size().height(), GetSkColorType(), GrMipMapped::kNo, GrRenderable::kYes, is_protected); #endif - image_ = SkImage::MakeFromAdoptedTexture( - context_state_->gr_context(), backend_texture, - GrSurfaceOrigin::kTopLeft_GrSurfaceOrigin, info.colorType(), - info.alphaType(), color_space().ToSkColorSpace()); } - auto backend_texture = image_->getBackendTexture(true); - DCHECK(backend_texture.isValid()); + if (!backend_texture_.isValid()) + return false; - promise_texture_ = SkPromiseImageTexture::Make(backend_texture); + promise_texture_ = SkPromiseImageTexture::Make(backend_texture_); - switch (backend_texture.backend()) { + switch (backend_texture_.backend()) { case GrBackendApi::kOpenGL: { GrGLTextureInfo tex_info; - if (backend_texture.getGLTextureInfo(&tex_info)) + if (backend_texture_.getGLTextureInfo(&tex_info)) tracing_id_ = tex_info.fID; break; } case GrBackendApi::kVulkan: { GrVkImageInfo image_info; - if (backend_texture.getVkImageInfo(&image_info)) + if (backend_texture_.getVkImageInfo(&image_info)) tracing_id_ = reinterpret_cast<uint64_t>(image_info.fImage); break; } #if BUILDFLAG(SKIA_USE_DAWN) case GrBackendApi::kDawn: { GrDawnTextureInfo tex_info; - if (backend_texture.getDawnTextureInfo(&tex_info)) + if (backend_texture_.getDawnTextureInfo(&tex_info)) tracing_id_ = reinterpret_cast<uint64_t>(tex_info.fTexture.Get()); break; } @@ -215,9 +210,8 @@ SharedContextState* const context_state_; + GrBackendTexture backend_texture_; sk_sp<SkPromiseImageTexture> promise_texture_; - // TODO(penghuang): manage texture directly with GrBackendTexture, - sk_sp<SkImage> image_; uint64_t tracing_id_ = 0;
diff --git a/ios/chrome/browser/infobars/overlays/browser_agent/infobar_banner_overlay_request_callback_installer.h b/ios/chrome/browser/infobars/overlays/browser_agent/infobar_banner_overlay_request_callback_installer.h index 434053f..5051cd2d 100644 --- a/ios/chrome/browser/infobars/overlays/browser_agent/infobar_banner_overlay_request_callback_installer.h +++ b/ios/chrome/browser/infobars/overlays/browser_agent/infobar_banner_overlay_request_callback_installer.h
@@ -24,17 +24,24 @@ ~InfobarBannerOverlayRequestCallbackInstaller() override; private: - // Called as a dispatch callback for |request| when |response| is configured - // with an InfobarBannerMainActionResponse. + // Used as a callback for OverlayResponses dispatched through |request|'s + // callback manager. The OverlayDispatchCallback is created with an + // OverlayResponseSupport that guarantees that |response| is created with an + // InfobarBannerMainActionResponse. void MainActionButtonTapped(OverlayRequest* request, OverlayResponse* response); - // Called as a dispatch callback for |request| when |response| is configured - // with an InfobarBannerShowModalResponse. + // Used as a callback for OverlayResponses dispatched through |request|'s + // callback manager. The OverlayDispatchCallback is created with an + // OverlayResponseSupport that guarantees that |response| is created with an + // InfobarBannerShowModalResponse. void ShowModalButtonTapped(OverlayRequest* request, OverlayResponse* response); - // Called as a completion callback for |request|, where |response| is the - // completion response. - void BannerCompleted(OverlayRequest* request, OverlayResponse* response); + // Used as a callback for OverlayResponses dispatched through |request|'s + // callback manager. The OverlayDispatchCallback is created with an + // OverlayResponseSupport that guarantees that |response| is created with an + // InfobarBannerUserInitiatedDismissalResponse. + void BannerDismissedByUser(OverlayRequest* request, + OverlayResponse* response); // OverlayRequestCallbackInstaller: const OverlayRequestSupport* GetRequestSupport() const override;
diff --git a/ios/chrome/browser/infobars/overlays/browser_agent/infobar_banner_overlay_request_callback_installer.mm b/ios/chrome/browser/infobars/overlays/browser_agent/infobar_banner_overlay_request_callback_installer.mm index a86ff30..87ac0215 100644 --- a/ios/chrome/browser/infobars/overlays/browser_agent/infobar_banner_overlay_request_callback_installer.mm +++ b/ios/chrome/browser/infobars/overlays/browser_agent/infobar_banner_overlay_request_callback_installer.mm
@@ -46,17 +46,11 @@ request->GetQueueWebState()); } -void InfobarBannerOverlayRequestCallbackInstaller::BannerCompleted( +void InfobarBannerOverlayRequestCallbackInstaller::BannerDismissedByUser( OverlayRequest* request, OverlayResponse* response) { - bool user_initiated = false; - if (response) { - InfobarBannerCompletionResponse* banner_completion = - response->GetInfo<InfobarBannerCompletionResponse>(); - user_initiated = banner_completion && banner_completion->user_initiated(); - } - interaction_handler_->BannerCompleted(GetOverlayRequestInfobar(request), - user_initiated); + interaction_handler_->BannerDismissedByUser( + GetOverlayRequestInfobar(request)); } #pragma mark - OverlayRequestCallbackInstaller @@ -79,7 +73,9 @@ &InfobarBannerOverlayRequestCallbackInstaller::ShowModalButtonTapped, weak_factory_.GetWeakPtr(), request), InfobarBannerShowModalResponse::ResponseSupport())); - manager->AddCompletionCallback(base::BindOnce( - &InfobarBannerOverlayRequestCallbackInstaller::BannerCompleted, - weak_factory_.GetWeakPtr(), request)); + manager->AddDispatchCallback(OverlayDispatchCallback( + base::BindRepeating( + &InfobarBannerOverlayRequestCallbackInstaller::BannerDismissedByUser, + weak_factory_.GetWeakPtr(), request), + InfobarBannerUserInitiatedDismissalResponse::ResponseSupport())); }
diff --git a/ios/chrome/browser/infobars/overlays/browser_agent/infobar_banner_overlay_request_callback_installer_unittest.mm b/ios/chrome/browser/infobars/overlays/browser_agent/infobar_banner_overlay_request_callback_installer_unittest.mm index c9a31f0..dd0c8f6d 100644 --- a/ios/chrome/browser/infobars/overlays/browser_agent/infobar_banner_overlay_request_callback_installer_unittest.mm +++ b/ios/chrome/browser/infobars/overlays/browser_agent/infobar_banner_overlay_request_callback_installer_unittest.mm
@@ -68,13 +68,12 @@ OverlayResponse::CreateWithInfo<InfobarBannerShowModalResponse>()); } -// Tests that the request's completion callback calls -// InfobarBannerInteractionHandler::BannerCompleted(). -TEST_F(InfobarBannerOverlayRequestCallbackInstallerTest, Completion) { - bool user_initiated = true; - callback_manager()->SetCompletionResponse( - OverlayResponse::CreateWithInfo<InfobarBannerCompletionResponse>( - user_initiated)); - EXPECT_CALL(mock_handler_, BannerCompleted(&infobar_, user_initiated)); - queue()->CancelAllRequests(); +// Tests that a dispatched InfobarBannerShowModalResponse calls +// InfobarBannerInteractionHandler::BannerDismissedByUser(). +TEST_F(InfobarBannerOverlayRequestCallbackInstallerTest, + UserInitiatedDismissal) { + EXPECT_CALL(mock_handler_, BannerDismissedByUser(&infobar_)); + callback_manager()->DispatchResponse( + OverlayResponse::CreateWithInfo< + InfobarBannerUserInitiatedDismissalResponse>()); }
diff --git a/ios/chrome/browser/infobars/overlays/browser_agent/infobar_overlay_browser_agent_unittest.mm b/ios/chrome/browser/infobars/overlays/browser_agent/infobar_overlay_browser_agent_unittest.mm index 0dc2d7b..dbbaf0d 100644 --- a/ios/chrome/browser/infobars/overlays/browser_agent/infobar_overlay_browser_agent_unittest.mm +++ b/ios/chrome/browser/infobars/overlays/browser_agent/infobar_overlay_browser_agent_unittest.mm
@@ -101,13 +101,6 @@ EXPECT_CALL(mock_banner_handler, BannerVisibilityChanged(&infobar_, /*visible=*/true)); banner_queue()->AddRequest(std::move(added_request)); - // Set up the completion response and expect for the interaction handler to - // receive the BannerCompleted() callback. - bool user_initiated = true; - request->GetCallbackManager()->SetCompletionResponse( - OverlayResponse::CreateWithInfo<InfobarBannerCompletionResponse>( - user_initiated)); - EXPECT_CALL(mock_banner_handler, BannerCompleted(&infobar_, user_initiated)); // Simulate dismissal of the request's UI, expecting // InfobarBannerInteractionHandler::BannerVisibilityChanged() to be called. EXPECT_CALL(mock_banner_handler,
diff --git a/ios/chrome/browser/infobars/overlays/browser_agent/interaction_handlers/infobar_interaction_handler.h b/ios/chrome/browser/infobars/overlays/browser_agent/interaction_handlers/infobar_interaction_handler.h index 4499741..244fcf1 100644 --- a/ios/chrome/browser/infobars/overlays/browser_agent/interaction_handlers/infobar_interaction_handler.h +++ b/ios/chrome/browser/infobars/overlays/browser_agent/interaction_handlers/infobar_interaction_handler.h
@@ -27,11 +27,9 @@ // |web_state| is the WebState associated with |infobar|'s InfoBarManager. virtual void ShowModalButtonTapped(InfoBarIOS* infobar, web::WebState* web_state) = 0; - // Called when the banner overlay for |infobar| is completed. Called when the - // banner UI is dismissed by user interaction or when its request is - // cancelled. |user_initiated| describes whether the banner was dismissed for - // user interaction. - virtual void BannerCompleted(InfoBarIOS* infobar, bool user_initiated) = 0; + // Notifies the model that the upcoming dismissal is user-initiated (i.e. + // a swipe dismissal in the refresh UI). + virtual void BannerDismissedByUser(InfoBarIOS* infobar) = 0; }; // Handler for infobar detail sheet user interaction events.
diff --git a/ios/chrome/browser/infobars/overlays/browser_agent/interaction_handlers/test/mock_infobar_interaction_handler.h b/ios/chrome/browser/infobars/overlays/browser_agent/interaction_handlers/test/mock_infobar_interaction_handler.h index 3ec809f..e740ad37 100644 --- a/ios/chrome/browser/infobars/overlays/browser_agent/interaction_handlers/test/mock_infobar_interaction_handler.h +++ b/ios/chrome/browser/infobars/overlays/browser_agent/interaction_handlers/test/mock_infobar_interaction_handler.h
@@ -20,7 +20,7 @@ MOCK_METHOD1(MainButtonTapped, void(InfoBarIOS* infobar)); MOCK_METHOD2(ShowModalButtonTapped, void(InfoBarIOS* infobar, web::WebState* web_state)); - MOCK_METHOD2(BannerCompleted, void(InfoBarIOS* infobar, bool user_initiated)); + MOCK_METHOD1(BannerDismissedByUser, void(InfoBarIOS* infobar)); }; // Mock version of InfobarDetailSheetInteractionHandler.
diff --git a/ios/chrome/browser/interstitials/BUILD.gn b/ios/chrome/browser/interstitials/BUILD.gn index cb25fb7..2b7deb9 100644 --- a/ios/chrome/browser/interstitials/BUILD.gn +++ b/ios/chrome/browser/interstitials/BUILD.gn
@@ -25,6 +25,7 @@ "//ios/chrome/browser/history", "//ios/chrome/browser/ui/util", "//ios/web", + "//ios/web/common", "//ios/web/public", "//ios/web/public/security", "//ui/base",
diff --git a/ios/chrome/browser/interstitials/ios_security_interstitial_page.h b/ios/chrome/browser/interstitials/ios_security_interstitial_page.h index c3cb7dd..cc718019 100644 --- a/ios/chrome/browser/interstitials/ios_security_interstitial_page.h +++ b/ios/chrome/browser/interstitials/ios_security_interstitial_page.h
@@ -17,6 +17,7 @@ } namespace web { +class WebFrame; class WebInterstitial; class WebState; } @@ -33,6 +34,13 @@ // web::WebInterstitialDelegate implementation. std::string GetHtmlContents() const override; + // Handles JS commands from the interstitial page. Overridden in subclasses + // to handle actions specific to the type of interstitial. + virtual void HandleScriptCommand(const base::DictionaryValue& message, + const GURL& origin_url, + bool user_is_interacting, + web::WebFrame* sender_frame) = 0; + protected: // Returns true if the interstitial should create a new navigation item. virtual bool ShouldCreateNewNavigation() const = 0;
diff --git a/ios/chrome/browser/interstitials/ios_security_interstitial_page.mm b/ios/chrome/browser/interstitials/ios_security_interstitial_page.mm index a723ea5..1d17064 100644 --- a/ios/chrome/browser/interstitials/ios_security_interstitial_page.mm +++ b/ios/chrome/browser/interstitials/ios_security_interstitial_page.mm
@@ -4,6 +4,7 @@ #include "ios/chrome/browser/interstitials/ios_security_interstitial_page.h" +#include "base/feature_list.h" #include "base/logging.h" #include "base/strings/string_number_conversions.h" #include "base/strings/stringprintf.h" @@ -14,6 +15,7 @@ #include "ios/chrome/browser/browser_state/chrome_browser_state.h" #include "ios/chrome/browser/pref_names.h" #include "ios/chrome/browser/ui/util/dynamic_type_util.h" +#include "ios/web/common/features.h" #include "ios/web/public/security/web_interstitial.h" #import "ios/web/public/web_state.h" #include "ui/base/resource/resource_bundle.h" @@ -65,6 +67,9 @@ std::string IOSSecurityInterstitialPage::GetHtmlContents() const { base::DictionaryValue load_time_data; + load_time_data.SetBoolean( + "committed_interstitials_enabled", + base::FeatureList::IsEnabled(web::features::kSSLCommittedInterstitials)); PopulateInterstitialStrings(&load_time_data); webui::SetLoadTimeDataDefaults( GetApplicationContext()->GetApplicationLocale(), &load_time_data);
diff --git a/ios/chrome/browser/net/cookies_egtest.mm b/ios/chrome/browser/net/cookies_egtest.mm index efed73b..5b465b0 100644 --- a/ios/chrome/browser/net/cookies_egtest.mm +++ b/ios/chrome/browser/net/cookies_egtest.mm
@@ -109,13 +109,7 @@ // The goal is to verify that cookies set in incognito tabs are available in // incognito tabs but not available in normal tabs. Cookies set in incognito // tabs are also deleted when all incognito tabs are closed. -// TODO(crbug.com/1019670): This test fails on iOS 12/13 under EG2. -#if defined(CHROME_EARL_GREY_2) -#define MAYBE_testClearIncognitoFromMain DISABLED_testClearIncognitoFromMain -#else -#define MAYBE_testClearIncognitoFromMain testClearIncognitoFromMain -#endif -- (void)MAYBE_testClearIncognitoFromMain { +- (void)testClearIncognitoFromMain { // Loads a dummy page in normal tab. Sets a normal test cookie. Verifies that // the incognito test cookie is not found. [ChromeEarlGrey @@ -162,14 +156,7 @@ // Tests that a cookie set in incognito tab is removed after closing all // incognito tabs and then when new incognito tab is created the cookie will // not reappear. -// TODO(crbug.com/1019670): This test fails on iOS 12/13 under EG2. -#if defined(CHROME_EARL_GREY_2) -#define MAYBE_testClearIncognitoFromIncognito \ - DISABLED_testClearIncognitoFromIncognito -#else -#define MAYBE_testClearIncognitoFromIncognito testClearIncognitoFromIncognito -#endif -- (void)MAYBE_testClearIncognitoFromIncognito { +- (void)testClearIncognitoFromIncognito { // Loads a page in normal tab. [ChromeEarlGrey loadURL:web::test::HttpServer::MakeUrl(kTestUrlNormalBrowsing)]; @@ -210,13 +197,7 @@ } // Tests that a cookie set in normal tab is not available in an incognito tab. -// TODO(crbug.com/1019670): This test fails on iOS 12/13 under EG2. -#if defined(CHROME_EARL_GREY_2) -#define MAYBE_testSwitchToIncognito DISABLED_testSwitchToIncognito -#else -#define MAYBE_testSwitchToIncognito testSwitchToIncognito -#endif -- (void)MAYBE_testSwitchToIncognito { +- (void)testSwitchToIncognito { // Sets cookie in normal tab. [ChromeEarlGrey loadURL:web::test::HttpServer::MakeUrl(kTestUrlNormalSetCookie)]; @@ -250,13 +231,7 @@ // Tests that a cookie set in incognito tab is only available in another // incognito tab. They are not available in a normal tab. -// TODO(crbug.com/1019670): This test fails on iOS 12/13 under EG2. -#if defined(CHROME_EARL_GREY_2) -#define MAYBE_testSwitchToMain DISABLED_testSwitchToMain -#else -#define MAYBE_testSwitchToMain testSwitchToMain -#endif -- (void)MAYBE_testSwitchToMain { +- (void)testSwitchToMain { // Loads a page in normal tab and then switches to a new incognito tab. Sets // cookie in incognito tab. [ChromeEarlGrey @@ -292,13 +267,7 @@ } // Tests that a cookie set in a normal tab can be found in another normal tab. -// TODO(crbug.com/1019670): This test fails on iOS 12/13 under EG2. -#if defined(CHROME_EARL_GREY_2) -#define MAYBE_testShareCookiesBetweenTabs DISABLED_testShareCookiesBetweenTabs -#else -#define MAYBE_testShareCookiesBetweenTabs testShareCookiesBetweenTabs -#endif -- (void)MAYBE_testShareCookiesBetweenTabs { +- (void)testShareCookiesBetweenTabs { // Loads page and sets cookie in first normal tab. [ChromeEarlGrey loadURL:web::test::HttpServer::MakeUrl(kTestUrlNormalSetCookie)];
diff --git a/ios/chrome/browser/overlays/public/infobar_banner/infobar_banner_overlay_responses.cc b/ios/chrome/browser/overlays/public/infobar_banner/infobar_banner_overlay_responses.cc index 75603b2..3149dfa 100644 --- a/ios/chrome/browser/overlays/public/infobar_banner/infobar_banner_overlay_responses.cc +++ b/ios/chrome/browser/overlays/public/infobar_banner/infobar_banner_overlay_responses.cc
@@ -20,12 +20,12 @@ InfobarBannerShowModalResponse::~InfobarBannerShowModalResponse() = default; -#pragma mark - InfobarBannerCompletionResponse +#pragma mark - InfobarBannerUserInitiatedDismissalResponse -OVERLAY_USER_DATA_SETUP_IMPL(InfobarBannerCompletionResponse); +OVERLAY_USER_DATA_SETUP_IMPL(InfobarBannerUserInitiatedDismissalResponse); -InfobarBannerCompletionResponse::InfobarBannerCompletionResponse( - bool user_initiated) - : user_initiated_(user_initiated) {} +InfobarBannerUserInitiatedDismissalResponse:: + InfobarBannerUserInitiatedDismissalResponse() = default; -InfobarBannerCompletionResponse::~InfobarBannerCompletionResponse() = default; +InfobarBannerUserInitiatedDismissalResponse:: + ~InfobarBannerUserInitiatedDismissalResponse() = default;
diff --git a/ios/chrome/browser/overlays/public/infobar_banner/infobar_banner_overlay_responses.h b/ios/chrome/browser/overlays/public/infobar_banner/infobar_banner_overlay_responses.h index 9bf87b8f..f577245 100644 --- a/ios/chrome/browser/overlays/public/infobar_banner/infobar_banner_overlay_responses.h +++ b/ios/chrome/browser/overlays/public/infobar_banner/infobar_banner_overlay_responses.h
@@ -31,22 +31,17 @@ InfobarBannerShowModalResponse(); }; -// Response info used to create completion OverlayResponses for an infobar -// banner OverlayRequest. Executed when the banner is dismissed by the user or -// the request is cancelled. -class InfobarBannerCompletionResponse - : public OverlayResponseInfo<InfobarBannerCompletionResponse> { +// Response info used to create dispatched OverlayResponses that notify the +// model layer that the upcoming dismissal is user-initiated (i.e. swipe up to +// dismiss the banner on the refresh banner UI). +class InfobarBannerUserInitiatedDismissalResponse + : public OverlayResponseInfo<InfobarBannerUserInitiatedDismissalResponse> { public: - ~InfobarBannerCompletionResponse() override; - - // Whether the banner dismissal was user-initiated. - bool user_initiated() const { return user_initiated_; } + ~InfobarBannerUserInitiatedDismissalResponse() override; private: - OVERLAY_USER_DATA_SETUP(InfobarBannerCompletionResponse); - explicit InfobarBannerCompletionResponse(bool user_initiated); - - bool user_initiated_ = false; + OVERLAY_USER_DATA_SETUP(InfobarBannerUserInitiatedDismissalResponse); + InfobarBannerUserInitiatedDismissalResponse(); }; #endif // IOS_CHROME_BROWSER_OVERLAYS_PUBLIC_INFOBAR_BANNER_INFOBAR_BANNER_OVERLAY_RESPONSES_H_
diff --git a/ios/chrome/browser/passwords/ios_chrome_password_manager_driver.h b/ios/chrome/browser/passwords/ios_chrome_password_manager_driver.h index 61ba33f..2d8517c 100644 --- a/ios/chrome/browser/passwords/ios_chrome_password_manager_driver.h +++ b/ios/chrome/browser/passwords/ios_chrome_password_manager_driver.h
@@ -73,6 +73,7 @@ override; autofill::AutofillDriver* GetAutofillDriver() override; bool IsMainFrame() const override; + bool CanShowAutofillUi() const override; const GURL& GetLastCommittedURL() const override; private:
diff --git a/ios/chrome/browser/passwords/ios_chrome_password_manager_driver.mm b/ios/chrome/browser/passwords/ios_chrome_password_manager_driver.mm index 02162d0..84a08fa7 100644 --- a/ios/chrome/browser/passwords/ios_chrome_password_manager_driver.mm +++ b/ios/chrome/browser/passwords/ios_chrome_password_manager_driver.mm
@@ -93,6 +93,10 @@ return true; } +bool IOSChromePasswordManagerDriver::CanShowAutofillUi() const { + return true; +} + const GURL& IOSChromePasswordManagerDriver::GetLastCommittedURL() const { return delegate_.lastCommittedURL; }
diff --git a/ios/chrome/browser/ssl/BUILD.gn b/ios/chrome/browser/ssl/BUILD.gn index 35a37322..74040cc 100644 --- a/ios/chrome/browser/ssl/BUILD.gn +++ b/ios/chrome/browser/ssl/BUILD.gn
@@ -40,6 +40,7 @@ "//ios/web/common", "//ios/web/public", "//ios/web/public/security", + "//ios/web/public/session", "//net", "//ui/base", "//url",
diff --git a/ios/chrome/browser/ssl/ios_captive_portal_blocking_page.h b/ios/chrome/browser/ssl/ios_captive_portal_blocking_page.h index 25b6d48a..d515ab3cd 100644 --- a/ios/chrome/browser/ssl/ios_captive_portal_blocking_page.h +++ b/ios/chrome/browser/ssl/ios_captive_portal_blocking_page.h
@@ -36,6 +36,10 @@ void AfterShow() override; void OnDontProceed() override; void CommandReceived(const std::string& command) override; + void HandleScriptCommand(const base::DictionaryValue& message, + const GURL& origin_url, + bool user_is_interacting, + web::WebFrame* sender_frame) override; // The landing page url for the captive portal network. const GURL landing_url_;
diff --git a/ios/chrome/browser/ssl/ios_captive_portal_blocking_page.mm b/ios/chrome/browser/ssl/ios_captive_portal_blocking_page.mm index 5215a42..62fa6d8 100644 --- a/ios/chrome/browser/ssl/ios_captive_portal_blocking_page.mm +++ b/ios/chrome/browser/ssl/ios_captive_portal_blocking_page.mm
@@ -106,3 +106,24 @@ ->DisplayCaptivePortalLoginPage(landing_url_); } } + +void IOSCaptivePortalBlockingPage::HandleScriptCommand( + const base::DictionaryValue& message, + const GURL& origin_url, + bool user_is_interacting, + web::WebFrame* sender_frame) { + std::string command; + if (!message.GetString("command", &command)) { + LOG(ERROR) << "JS message parameter not found: command"; + return; + } + // Non-proceed commands are handled the same between committed and + // non-committed interstitials, so the CommandReceived method can be used. + // Remove the command prefix since it is ignored when converting the value + // to a SecurityInterstitialCommand. + std::size_t delimiter = command.find("."); + if (delimiter != std::string::npos) { + IOSCaptivePortalBlockingPage::CommandReceived( + command.substr(delimiter + 1)); + } +}
diff --git a/ios/chrome/browser/ssl/ios_ssl_blocking_page.h b/ios/chrome/browser/ssl/ios_ssl_blocking_page.h index f2b03b3..5c699aa 100644 --- a/ios/chrome/browser/ssl/ios_ssl_blocking_page.h +++ b/ios/chrome/browser/ssl/ios_ssl_blocking_page.h
@@ -55,10 +55,15 @@ private: void NotifyDenyCertificate(); + void HandleScriptCommand(const base::DictionaryValue& message, + const GURL& origin_url, + bool user_is_interacting, + web::WebFrame* sender_frame) override; // Returns true if |options_mask| refers to a soft-overridable SSL error. static bool IsOverridable(int options_mask); + web::WebState* web_state_ = nullptr; base::OnceCallback<void(bool)> callback_; const net::SSLInfo ssl_info_; const bool overridable_; // The UI allows the user to override the error.
diff --git a/ios/chrome/browser/ssl/ios_ssl_blocking_page.mm b/ios/chrome/browser/ssl/ios_ssl_blocking_page.mm index f7452b9..1cf37ec 100644 --- a/ios/chrome/browser/ssl/ios_ssl_blocking_page.mm +++ b/ios/chrome/browser/ssl/ios_ssl_blocking_page.mm
@@ -18,7 +18,10 @@ #include "ios/chrome/browser/interstitials/ios_chrome_controller_client.h" #include "ios/chrome/browser/interstitials/ios_chrome_metrics_helper.h" #import "ios/web/public/navigation/navigation_item.h" +#import "ios/web/public/navigation/navigation_manager.h" #include "ios/web/public/security/ssl_status.h" +#include "ios/web/public/session/session_certificate_policy_cache.h" +#import "ios/web/public/web_state.h" #include "net/base/net_errors.h" #include "ui/base/l10n/l10n_util.h" #include "url/gurl.h" @@ -53,6 +56,7 @@ const base::Time& time_triggered, base::OnceCallback<void(bool)> callback) : IOSSecurityInterstitialPage(web_state, request_url), + web_state_(web_state), callback_(std::move(callback)), ssl_info_(ssl_info), overridable_(IsOverridable(options_mask)), @@ -61,6 +65,7 @@ base::WrapUnique(CreateMetricsHelper(web_state, request_url, IsOverridable(options_mask))))) { + DCHECK(web_state_); // Override prefs for the SSLErrorUI. if (overridable_) options_mask |= SSLErrorOptionsMask::SOFT_OVERRIDE_ENABLED; @@ -148,3 +153,40 @@ return (options_mask & SSLErrorOptionsMask::SOFT_OVERRIDE_ENABLED) && !(options_mask & SSLErrorOptionsMask::STRICT_ENFORCEMENT); } + +void IOSSSLBlockingPage::HandleScriptCommand( + const base::DictionaryValue& message, + const GURL& origin_url, + bool user_is_interacting, + web::WebFrame* sender_frame) { + std::string command; + if (!message.GetString("command", &command)) { + LOG(ERROR) << "JS message parameter not found: command"; + return; + } + + // Remove the command prefix so that the string value can be converted to a + // SecurityInterstitialCommand enum value. + std::size_t delimiter = command.find("."); + if (delimiter == std::string::npos) { + return; + } + std::string command_str = command.substr(delimiter + 1); + int command_num = 0; + bool command_is_num = base::StringToInt(command_str, &command_num); + DCHECK(command_is_num) << command_str; + + // If a proceed command is received, allowlist the certificate and reload + // the page to re-initiate the original navigation. + if (command_num == security_interstitials::CMD_PROCEED) { + web_state_->GetSessionCertificatePolicyCache()->RegisterAllowedCertificate( + ssl_info_.cert, origin_url.host(), ssl_info_.cert_status); + web_state_->GetNavigationManager()->Reload(web::ReloadType::NORMAL, + /*check_for_repost=*/true); + return; + } + + // Non-proceed commands are handled the same between committed and + // non-committed interstitials, so the CommandReceived method can be used. + IOSSSLBlockingPage::CommandReceived(command_str); +}
diff --git a/ios/chrome/browser/ssl/ios_ssl_error_tab_helper.h b/ios/chrome/browser/ssl/ios_ssl_error_tab_helper.h index a98e227..404434f 100644 --- a/ios/chrome/browser/ssl/ios_ssl_error_tab_helper.h +++ b/ios/chrome/browser/ssl/ios_ssl_error_tab_helper.h
@@ -36,13 +36,24 @@ void WebStateDestroyed(web::WebState* web_state) override; private: + WEB_STATE_USER_DATA_KEY_DECL(); + explicit IOSSSLErrorTabHelper(web::WebState* web_state); + DISALLOW_COPY_AND_ASSIGN(IOSSSLErrorTabHelper); + friend class web::WebStateUserData<IOSSSLErrorTabHelper>; void SetBlockingPage( int64_t navigation_id, std::unique_ptr<IOSSecurityInterstitialPage> blocking_page); + // Handler for "blockingPage.*" JavaScript command. Dispatch to more specific + // handler. + void OnBlockingPageCommand(const base::DictionaryValue& message, + const GURL& url, + bool user_is_interacting, + web::WebFrame* sender_frame); + // Keeps track of blocking pages for navigations that have encountered // certificate errors in this WebState. When a navigation commits, the // corresponding blocking page is moved out and stored in @@ -59,9 +70,9 @@ // WebStateDestroyed has been called. web::WebState* web_state_ = nullptr; - WEB_STATE_USER_DATA_KEY_DECL(); - - DISALLOW_COPY_AND_ASSIGN(IOSSSLErrorTabHelper); + // Subscription for JS messages. + std::unique_ptr<web::WebState::ScriptCommandSubscription> subscription_; + base::WeakPtrFactory<IOSSSLErrorTabHelper> weak_factory_{this}; }; #endif // IOS_CHROME_BROWSER_SSL_IOS_SSL_ERROR_TAB_HELPER_H_
diff --git a/ios/chrome/browser/ssl/ios_ssl_error_tab_helper.mm b/ios/chrome/browser/ssl/ios_ssl_error_tab_helper.mm index 6ea2150..1b92bc8 100644 --- a/ios/chrome/browser/ssl/ios_ssl_error_tab_helper.mm +++ b/ios/chrome/browser/ssl/ios_ssl_error_tab_helper.mm
@@ -4,6 +4,7 @@ #import "ios/chrome/browser/ssl/ios_ssl_error_tab_helper.h" +#include "base/values.h" #include "ios/chrome/browser/interstitials/ios_security_interstitial_page.h" #import "ios/web/public/navigation/navigation_context.h" #import "ios/web/public/web_state.h" @@ -13,9 +14,18 @@ #error "This file requires ARC support." #endif +namespace { +// Script command prefix. +const char kCommandPrefix[] = "blockingPage"; +} // namespace + IOSSSLErrorTabHelper::IOSSSLErrorTabHelper(web::WebState* web_state) - : web_state_(web_state) { + : web_state_(web_state), subscription_(nullptr), weak_factory_(this) { web_state_->AddObserver(this); + auto command_callback = base::Bind( + &IOSSSLErrorTabHelper::OnBlockingPageCommand, weak_factory_.GetWeakPtr()); + subscription_ = + web_state->AddScriptCommandCallback(command_callback, kCommandPrefix); } IOSSSLErrorTabHelper::~IOSSSLErrorTabHelper() = default; @@ -76,4 +86,18 @@ blocking_pages_for_navigations_[navigation_id] = std::move(blocking_page); } +void IOSSSLErrorTabHelper::OnBlockingPageCommand( + const base::DictionaryValue& message, + const GURL& url, + bool user_is_interacting, + web::WebFrame* sender_frame) { + std::string command; + if (!message.GetString("command", &command)) { + DLOG(WARNING) << "JS message parameter not found: command"; + } else { + blocking_page_for_currently_committed_navigation_->HandleScriptCommand( + message, url, user_is_interacting, sender_frame); + } +} + WEB_STATE_USER_DATA_KEY_IMPL(IOSSSLErrorTabHelper)
diff --git a/ios/chrome/browser/ssl/ios_ssl_error_tab_helper_unittest.mm b/ios/chrome/browser/ssl/ios_ssl_error_tab_helper_unittest.mm index b1efaea..4474309 100644 --- a/ios/chrome/browser/ssl/ios_ssl_error_tab_helper_unittest.mm +++ b/ios/chrome/browser/ssl/ios_ssl_error_tab_helper_unittest.mm
@@ -25,6 +25,11 @@ ~TestInterstitialPage() override { *destroyed_tracker_ = true; } + void HandleScriptCommand(const base::DictionaryValue& message, + const GURL& origin_url, + bool user_is_interacting, + web::WebFrame* sender_frame) override {} + protected: bool ShouldCreateNewNavigation() const override { return false; }
diff --git a/ios/chrome/browser/ui/overlays/infobar_banner/infobar_banner_overlay_mediator.mm b/ios/chrome/browser/ui/overlays/infobar_banner/infobar_banner_overlay_mediator.mm index 720cbbd7..f11c463b 100644 --- a/ios/chrome/browser/ui/overlays/infobar_banner/infobar_banner_overlay_mediator.mm +++ b/ios/chrome/browser/ui/overlays/infobar_banner/infobar_banner_overlay_mediator.mm
@@ -49,15 +49,15 @@ } - (void)dismissInfobarBannerForUserInteraction:(BOOL)userInitiated { - if (self.request) { - // Add a completion response notifying the requesting code of whether the - // dismissal was user-initiated. Provided to the request's completion - // callbacks that are executed when the UI is finished being dismissed. - self.request->GetCallbackManager()->SetCompletionResponse( - OverlayResponse::CreateWithInfo<InfobarBannerCompletionResponse>( - userInitiated)); + if (userInitiated) { + // Notify the model layer of user-initiated banner dismissal before + // dismissing the banner. + [self dispatchResponseAndStopOverlay: + OverlayResponse::CreateWithInfo< + InfobarBannerUserInitiatedDismissalResponse>()]; + } else { + [self.delegate stopOverlayForMediator:self]; } - [self.delegate stopOverlayForMediator:self]; } - (void)presentInfobarModalFromBanner {
diff --git a/ios/chrome/browser/ui/toolbar/toolbar_mediator_unittest.mm b/ios/chrome/browser/ui/toolbar/toolbar_mediator_unittest.mm index 99d5eb9..f4faa82 100644 --- a/ios/chrome/browser/ui/toolbar/toolbar_mediator_unittest.mm +++ b/ios/chrome/browser/ui/toolbar/toolbar_mediator_unittest.mm
@@ -6,6 +6,7 @@ #include <memory> +#include "base/files/scoped_temp_dir.h" #include "base/strings/sys_string_conversions.h" #include "base/strings/utf_string_conversions.h" #include "components/bookmarks/browser/bookmark_model.h" @@ -104,6 +105,11 @@ : scoped_provider_( std::make_unique<TestToolbarMediatorChromeBrowserProvider>()) { TestChromeBrowserState::Builder test_cbs_builder; + + bool success = state_dir_.CreateUniqueTempDir(); + DCHECK(success); + test_cbs_builder.SetPath(state_dir_.GetPath()); + chrome_browser_state_ = test_cbs_builder.Build(); chrome_browser_state_->CreateBookmarkModel(false); bookmark_model_ = ios::BookmarkModelFactory::GetForBrowserState( @@ -128,6 +134,11 @@ ~ToolbarMediatorTest() override { [mediator_ disconnect]; } protected: + // A state directory that outlives |task_environment_| is needed because + // CreateHistoryService/CreateBookmarkModel use the directory to host + // databases. See https://crbug.com/546640 for more details. + base::ScopedTempDir state_dir_; + web::WebTaskEnvironment task_environment_; void SetUpWebStateList() { web_state_list_ = std::make_unique<WebStateList>(&web_state_list_delegate_);
diff --git a/ios/chrome/test/earl_grey/chrome_earl_grey.mm b/ios/chrome/test/earl_grey/chrome_earl_grey.mm index aec609c..91f6c51 100644 --- a/ios/chrome/test/earl_grey/chrome_earl_grey.mm +++ b/ios/chrome/test/earl_grey/chrome_earl_grey.mm
@@ -394,16 +394,13 @@ NSString* const kGetCookiesScript = @"document.cookie ? document.cookie.split(/;\\s*/) : [];"; id result = [self executeJavaScript:kGetCookiesScript]; - EG_TEST_HELPER_ASSERT_TRUE( - [result respondsToSelector:@selector(objectEnumerator)], - @"The script response is not iterable."); - + // TODO(crbug.com/1041000): Assert that |result| is iterable using + // respondToSelector, after the bug is fixed. NSMutableDictionary* cookies = [NSMutableDictionary dictionary]; for (NSString* nameValuePair in result) { NSArray* cookieNameValue = [nameValuePair componentsSeparatedByString:@"="]; EG_TEST_HELPER_ASSERT_TRUE((2 == cookieNameValue.count), @"Cookie has invalid format."); - NSString* cookieName = cookieNameValue[0]; NSString* cookieValue = cookieNameValue[1]; cookies[cookieName] = cookieValue;
diff --git a/ios/web/navigation/session_storage_builder.mm b/ios/web/navigation/session_storage_builder.mm index 1a8066e..5f2c4c8 100644 --- a/ios/web/navigation/session_storage_builder.mm +++ b/ios/web/navigation/session_storage_builder.mm
@@ -99,9 +99,10 @@ SessionCertificatePolicyCacheStorageBuilder cert_builder; std::unique_ptr<SessionCertificatePolicyCacheImpl> cert_policy_cache = cert_builder.BuildSessionCertificatePolicyCache( - storage.certPolicyCacheStorage); + storage.certPolicyCacheStorage, web_state->GetBrowserState()); if (!cert_policy_cache) - cert_policy_cache = std::make_unique<SessionCertificatePolicyCacheImpl>(); + cert_policy_cache = std::make_unique<SessionCertificatePolicyCacheImpl>( + web_state->GetBrowserState()); web_state->certificate_policy_cache_ = std::move(cert_policy_cache); web::SerializableUserDataManager::FromWebState(web_state) ->AddSerializableUserData(storage.userData);
diff --git a/ios/web/public/session/BUILD.gn b/ios/web/public/session/BUILD.gn index a7bdcc3..8490655 100644 --- a/ios/web/public/session/BUILD.gn +++ b/ios/web/public/session/BUILD.gn
@@ -9,6 +9,7 @@ "//ios/web/common:user_agent", "//ios/web/public", "//ios/web/public/navigation", + "//ios/web/public/security", "//net", "//url", ] @@ -18,5 +19,6 @@ "crw_session_storage.h", "serializable_user_data_manager.h", "session_certificate_policy_cache.h", + "session_certificate_policy_cache.mm", ] }
diff --git a/ios/web/public/session/session_certificate_policy_cache.h b/ios/web/public/session/session_certificate_policy_cache.h index e4c5059..97b09bd18 100644 --- a/ios/web/public/session/session_certificate_policy_cache.h +++ b/ios/web/public/session/session_certificate_policy_cache.h
@@ -5,11 +5,18 @@ #ifndef IOS_WEB_PUBLIC_SESSION_SESSION_CERTIFICATE_POLICY_CACHE_H_ #define IOS_WEB_PUBLIC_SESSION_SESSION_CERTIFICATE_POLICY_CACHE_H_ +#import <Foundation/Foundation.h> + #include "base/memory/ref_counted.h" #include "net/cert/cert_status_flags.h" +namespace net { +class X509Certificate; +} + namespace web { +class BrowserState; class CertificatePolicyCache; // Stores certificate policy decisions for a specific session. The certificate @@ -18,12 +25,33 @@ // BrowserState. Must be accessed on the UI thread. class SessionCertificatePolicyCache { public: - SessionCertificatePolicyCache() {} - virtual ~SessionCertificatePolicyCache() {} + // |browser_state| should be non-null. + SessionCertificatePolicyCache(BrowserState* browser_state); + virtual ~SessionCertificatePolicyCache(); // Transfers the allowed certificate information from this session to |cache|. + // + // TODO(crbug.com/1040566): Delete this method since + // RegisterAllowedCertificate already updates the CertificatePolicyCache. virtual void UpdateCertificatePolicyCache( const scoped_refptr<web::CertificatePolicyCache>& cache) const = 0; + + // Stores certificate information that a user has indicated should be allowed + // for this session. The web::CertificatePolicyCache will also be updated + // when this method is called. + virtual void RegisterAllowedCertificate( + const scoped_refptr<net::X509Certificate> certificate, + const std::string& host, + net::CertStatus status) = 0; + + protected: + // Get the web::CertificatePolicyCache for this session's BrowserState. + // Must be called on UI thread. + scoped_refptr<CertificatePolicyCache> GetCertificatePolicyCache() const; + + private: + // The WebState's BrowserState used for retrieving the CertificatePolicyCache. + BrowserState* browser_state_; }; } // namespace web
diff --git a/ios/web/public/session/session_certificate_policy_cache.mm b/ios/web/public/session/session_certificate_policy_cache.mm new file mode 100644 index 0000000..05a71848 --- /dev/null +++ b/ios/web/public/session/session_certificate_policy_cache.mm
@@ -0,0 +1,31 @@ +// Copyright 2020 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#import "ios/web/public/session/session_certificate_policy_cache.h" + +#include "ios/web/public/browser_state.h" +#include "ios/web/public/security/certificate_policy_cache.h" +#include "ios/web/public/thread/web_thread.h" + +#if !defined(__has_feature) || !__has_feature(objc_arc) +#error "This file requires ARC support." +#endif + +namespace web { + +SessionCertificatePolicyCache::SessionCertificatePolicyCache( + BrowserState* browser_state) + : browser_state_(browser_state) { + DCHECK(browser_state_); +} + +SessionCertificatePolicyCache::~SessionCertificatePolicyCache() {} + +scoped_refptr<CertificatePolicyCache> +SessionCertificatePolicyCache::GetCertificatePolicyCache() const { + DCHECK_CURRENTLY_ON(WebThread::UI); + return web::BrowserState::GetCertificatePolicyCache(browser_state_); +} + +} // namespace web
diff --git a/ios/web/session/session_certificate_policy_cache_impl.h b/ios/web/session/session_certificate_policy_cache_impl.h index 55698758..82070e75 100644 --- a/ios/web/session/session_certificate_policy_cache_impl.h +++ b/ios/web/session/session_certificate_policy_cache_impl.h
@@ -18,19 +18,16 @@ // Concrete implementation of SessionCertificatePolicyCache. class SessionCertificatePolicyCacheImpl : public SessionCertificatePolicyCache { public: - SessionCertificatePolicyCacheImpl(); + SessionCertificatePolicyCacheImpl(BrowserState* browser_state); ~SessionCertificatePolicyCacheImpl() override; // SessionCertificatePolicyCache: void UpdateCertificatePolicyCache( const scoped_refptr<web::CertificatePolicyCache>& cache) const override; - - // Stores certificate information that a user has indicated should be allowed - // for this session. void RegisterAllowedCertificate( - const scoped_refptr<net::X509Certificate> certificate, + scoped_refptr<net::X509Certificate> certificate, const std::string& host, - net::CertStatus status); + net::CertStatus status) override; // Allows for batch updating the allowed certificate storages. void SetAllowedCerts(NSSet* allowed_certs);
diff --git a/ios/web/session/session_certificate_policy_cache_impl.mm b/ios/web/session/session_certificate_policy_cache_impl.mm index c04ebfd7..68baeaf 100644 --- a/ios/web/session/session_certificate_policy_cache_impl.mm +++ b/ios/web/session/session_certificate_policy_cache_impl.mm
@@ -6,10 +6,13 @@ #include "base/bind.h" #include "base/task/post_task.h" +#include "ios/web/public/browser_state.h" #include "ios/web/public/security/certificate_policy_cache.h" #import "ios/web/public/session/crw_session_certificate_policy_cache_storage.h" #include "ios/web/public/thread/web_task_traits.h" #include "ios/web/public/thread/web_thread.h" +#include "net/cert/x509_util.h" +#include "net/cert/x509_util_ios.h" #if !defined(__has_feature) || !__has_feature(objc_arc) #error "This file requires ARC support." @@ -46,8 +49,10 @@ namespace web { -SessionCertificatePolicyCacheImpl::SessionCertificatePolicyCacheImpl() - : allowed_certs_([[NSMutableSet alloc] init]) {} +SessionCertificatePolicyCacheImpl::SessionCertificatePolicyCacheImpl( + BrowserState* browser_state) + : SessionCertificatePolicyCache(browser_state), + allowed_certs_([[NSMutableSet alloc] init]) {} SessionCertificatePolicyCacheImpl::~SessionCertificatePolicyCacheImpl() {} @@ -56,8 +61,8 @@ DCHECK_CURRENTLY_ON(WebThread::UI); DCHECK(cache.get()); NSSet* allowed_certs = [NSSet setWithSet:allowed_certs_]; - const scoped_refptr<web::CertificatePolicyCache> cache_copy = cache; - base::PostTask(FROM_HERE, {web::WebThread::IO}, base::BindOnce(^{ + const scoped_refptr<CertificatePolicyCache> cache_copy = cache; + base::PostTask(FROM_HERE, {WebThread::IO}, base::BindOnce(^{ for (CRWSessionCertificateStorage* cert in allowed_certs) { cache_copy->AllowCertForHost(cert.certificate, cert.host, cert.status); @@ -66,14 +71,32 @@ } void SessionCertificatePolicyCacheImpl::RegisterAllowedCertificate( - const scoped_refptr<net::X509Certificate> certificate, + scoped_refptr<net::X509Certificate> certificate, const std::string& host, net::CertStatus status) { DCHECK_CURRENTLY_ON(WebThread::UI); + // Store user decisions with the leaf cert, ignoring any intermediates. + // This is because WKWebView returns the verified certificate chain in + // |webView:didReceiveAuthenticationChallenge:completionHandler:|, + // but the server-supplied chain in + // |webView:didFailProvisionalNavigation:withError:|. + if (!certificate->intermediate_buffers().empty()) { + certificate = net::X509Certificate::CreateFromBuffer( + bssl::UpRef(certificate->cert_buffer()), {}); + DCHECK(certificate); + } + DCHECK(certificate->intermediate_buffers().empty()); + [allowed_certs_ addObject:[[CRWSessionCertificateStorage alloc] initWithCertificate:certificate host:host status:status]]; + const scoped_refptr<CertificatePolicyCache> cache = + GetCertificatePolicyCache(); + base::PostTask( + FROM_HERE, {WebThread::IO}, + base::BindOnce(&CertificatePolicyCache::AllowCertForHost, cache, + base::RetainedRef(certificate.get()), host, status)); } void SessionCertificatePolicyCacheImpl::SetAllowedCerts(NSSet* allowed_certs) {
diff --git a/ios/web/session/session_certificate_policy_cache_impl_unittest.mm b/ios/web/session/session_certificate_policy_cache_impl_unittest.mm index fd84dec..0a86d30 100644 --- a/ios/web/session/session_certificate_policy_cache_impl_unittest.mm +++ b/ios/web/session/session_certificate_policy_cache_impl_unittest.mm
@@ -54,14 +54,22 @@ protected: SessionCertificatePolicyCacheImplTest() : task_environment_(web::WebTaskEnvironment::Options::REAL_IO_THREAD), + cache_(&browser_state_), cert_(net::ImportCertFromFile(net::GetTestCertsDirectory(), "ok_cert.pem")), host_("test.com"), status_(net::CERT_STATUS_REVOKED) { + // Check that the default value for the CertPolicyJudgment in + // web::CertificatePolicyCache is UNKNOWN before registering it. + EXPECT_EQ(web::CertPolicy::Judgment::UNKNOWN, + GetJudgmenet( + web::BrowserState::GetCertificatePolicyCache(&browser_state_), + cert_, host_, status_)); cache_.RegisterAllowedCertificate(cert_, host_, status_); } web::WebTaskEnvironment task_environment_; + web::TestBrowserState browser_state_; web::SessionCertificatePolicyCacheImpl cache_; scoped_refptr<net::X509Certificate> cert_; std::string host_; @@ -78,15 +86,24 @@ EXPECT_EQ(cert_.get(), cert_storage.certificate); EXPECT_EQ(host_, cert_storage.host); EXPECT_EQ(status_, cert_storage.status); + // Verify that the CertificatePolicyCache gets updated. + scoped_refptr<web::CertificatePolicyCache> cache = + web::BrowserState::GetCertificatePolicyCache(&browser_state_); + EXPECT_EQ(web::CertPolicy::Judgment::ALLOWED, + GetJudgmenet(cache, cert_, host_, status_)); } // Tests that UpdateCertificatePolicyCache() successfully transfers the allowed // certificate information to a CertificatePolicyCache. -TEST_F(SessionCertificatePolicyCacheImplTest, UpdateCertificatePolicyCache) { +// +// TODO(crbug.com/1040566): Delete this test when UpdateCertificatePolicyCache +// is deleted. Currently disabled since RegisterAllowedCertificate already +// updates the CertificatePolicyCache. +TEST_F(SessionCertificatePolicyCacheImplTest, + DISABLED_UpdateCertificatePolicyCache) { // Create a CertificatePolicyCache. - web::TestBrowserState browser_state; scoped_refptr<web::CertificatePolicyCache> cache = - web::BrowserState::GetCertificatePolicyCache(&browser_state); + web::BrowserState::GetCertificatePolicyCache(&browser_state_); EXPECT_EQ(web::CertPolicy::Judgment::UNKNOWN, GetJudgmenet(cache, cert_, host_, status_)); // Add allowed certificates to the CertificatePolicyCache and verify that it's
diff --git a/ios/web/session/session_certificate_policy_cache_storage_builder.h b/ios/web/session/session_certificate_policy_cache_storage_builder.h index 1c0c3f9..c5639819 100644 --- a/ios/web/session/session_certificate_policy_cache_storage_builder.h +++ b/ios/web/session/session_certificate_policy_cache_storage_builder.h
@@ -11,6 +11,7 @@ namespace web { +class BrowserState; class SessionCertificatePolicyCacheImpl; // Class that converts between model objects and their serializable versions. @@ -22,7 +23,8 @@ // Creates a SessionCertificatePolicyCache from |cache_storage|. std::unique_ptr<SessionCertificatePolicyCacheImpl> BuildSessionCertificatePolicyCache( - CRWSessionCertificatePolicyCacheStorage* cache_storage) const; + CRWSessionCertificatePolicyCacheStorage* cache_storage, + BrowserState* browser_state) const; }; } // namespace web
diff --git a/ios/web/session/session_certificate_policy_cache_storage_builder.mm b/ios/web/session/session_certificate_policy_cache_storage_builder.mm index a95a159..b76b208 100644 --- a/ios/web/session/session_certificate_policy_cache_storage_builder.mm +++ b/ios/web/session/session_certificate_policy_cache_storage_builder.mm
@@ -26,9 +26,10 @@ std::unique_ptr<SessionCertificatePolicyCacheImpl> SessionCertificatePolicyCacheStorageBuilder::BuildSessionCertificatePolicyCache( - CRWSessionCertificatePolicyCacheStorage* cache_storage) const { + CRWSessionCertificatePolicyCacheStorage* cache_storage, + BrowserState* browser_state) const { std::unique_ptr<SessionCertificatePolicyCacheImpl> cache = - std::make_unique<SessionCertificatePolicyCacheImpl>(); + std::make_unique<SessionCertificatePolicyCacheImpl>(browser_state); cache->SetAllowedCerts(cache_storage.certificateStorages); return cache; }
diff --git a/ios/web/session/session_certificate_policy_cache_storage_builder_unittest.mm b/ios/web/session/session_certificate_policy_cache_storage_builder_unittest.mm index 6301b93..486347a 100644 --- a/ios/web/session/session_certificate_policy_cache_storage_builder_unittest.mm +++ b/ios/web/session/session_certificate_policy_cache_storage_builder_unittest.mm
@@ -5,6 +5,7 @@ #import "ios/web/session/session_certificate_policy_cache_storage_builder.h" #import "ios/web/public/session/crw_session_certificate_policy_cache_storage.h" +#include "ios/web/public/test/fakes/test_browser_state.h" #include "ios/web/public/test/web_task_environment.h" #import "ios/web/session/session_certificate_policy_cache_impl.h" #include "net/cert/x509_certificate.h" @@ -25,7 +26,8 @@ TEST_F(SessionCertificatePolicyCacheStorageBuilderTest, BuildStorage) { // Create a cache and populate it with an allowed cert. web::WebTaskEnvironment task_environment; - web::SessionCertificatePolicyCacheImpl cache; + web::TestBrowserState browser_state; + web::SessionCertificatePolicyCacheImpl cache(&browser_state); scoped_refptr<net::X509Certificate> cert = net::ImportCertFromFile(net::GetTestCertsDirectory(), "ok_cert.pem"); std::string host("test.com"); @@ -61,7 +63,8 @@ [cache_storage setCertificateStorages:[NSSet setWithObject:cert_storage]]; // Build the cert policy cache and verify its contents. web::SessionCertificatePolicyCacheStorageBuilder builder; + web::TestBrowserState browser_state; std::unique_ptr<web::SessionCertificatePolicyCacheImpl> cache = - builder.BuildSessionCertificatePolicyCache(cache_storage); + builder.BuildSessionCertificatePolicyCache(cache_storage, &browser_state); EXPECT_NSEQ([cache_storage certificateStorages], cache -> GetAllowedCerts()); }
diff --git a/ios/web/web_state/web_state_impl.mm b/ios/web/web_state/web_state_impl.mm index 70ef89df..5c5965d2 100644 --- a/ios/web/web_state/web_state_impl.mm +++ b/ios/web/web_state/web_state_impl.mm
@@ -99,7 +99,7 @@ RestoreSessionStorage(session_storage); } else { certificate_policy_cache_ = - std::make_unique<SessionCertificatePolicyCacheImpl>(); + std::make_unique<SessionCertificatePolicyCacheImpl>(GetBrowserState()); } }
diff --git a/ios/web_view/internal/passwords/web_view_password_manager_driver.h b/ios/web_view/internal/passwords/web_view_password_manager_driver.h index 85fe5f54..8ad2ba30 100644 --- a/ios/web_view/internal/passwords/web_view_password_manager_driver.h +++ b/ios/web_view/internal/passwords/web_view_password_manager_driver.h
@@ -62,6 +62,7 @@ override; autofill::AutofillDriver* GetAutofillDriver() override; bool IsMainFrame() const override; + bool CanShowAutofillUi() const override; const GURL& GetLastCommittedURL() const override; private:
diff --git a/ios/web_view/internal/passwords/web_view_password_manager_driver.mm b/ios/web_view/internal/passwords/web_view_password_manager_driver.mm index 55c6ad8..bd576fa 100644 --- a/ios/web_view/internal/passwords/web_view_password_manager_driver.mm +++ b/ios/web_view/internal/passwords/web_view_password_manager_driver.mm
@@ -82,6 +82,10 @@ return true; } +bool WebViewPasswordManagerDriver::CanShowAutofillUi() const { + return true; +} + const GURL& WebViewPasswordManagerDriver::GetLastCommittedURL() const { return delegate_.lastCommittedURL; }
diff --git a/net/base/file_stream_unittest.cc b/net/base/file_stream_unittest.cc index b9a8c86..86b40b3 100644 --- a/net/base/file_stream_unittest.cc +++ b/net/base/file_stream_unittest.cc
@@ -837,7 +837,8 @@ #endif #if defined(OS_ANDROID) -TEST_F(FileStreamTest, ContentUriRead) { +// TODO(https://crbug.com/894599): flaky on both android and cronet bots. +TEST_F(FileStreamTest, DISABLED_ContentUriRead) { base::FilePath test_dir; base::PathService::Get(base::DIR_SOURCE_ROOT, &test_dir); test_dir = test_dir.AppendASCII("net");
diff --git a/net/dns/dns_transaction.cc b/net/dns/dns_transaction.cc index be7700e..a833bc7 100644 --- a/net/dns/dns_transaction.cc +++ b/net/dns/dns_transaction.cc
@@ -833,9 +833,9 @@ 1000, // Increase the delay between consecutive probes by a factor of 1.5. 1.5, - // Fuzz the delay between consecutive probes between 90%-100% of the + // Fuzz the delay between consecutive probes between 80%-100% of the // calculated time. - 0.1, + 0.2, // Cap the maximum delay between consecutive probes at 1 hour. 1000 * 60 * 60, // Never expire entries.
diff --git a/net/dns/host_resolver_manager.cc b/net/dns/host_resolver_manager.cc index 3c128f2..884d3ff 100644 --- a/net/dns/host_resolver_manager.cc +++ b/net/dns/host_resolver_manager.cc
@@ -762,27 +762,45 @@ ~ProbeRequestImpl() override { Cancel(); } void Cancel() override { - if (!needs_cancel_ || !resolver_) - return; - - resolver_->CancelDohProbes(); - needs_cancel_ = false; + runner_.reset(); context_ = nullptr; + + if (resolver_) + resolver_->started_doh_probe_requests_.erase(this); } int Start() override { DCHECK(resolver_); - DCHECK(!needs_cancel_); + DCHECK(context_); + DCHECK_EQ(0u, resolver_->started_doh_probe_requests_.count(this)); - resolver_->ActivateDohProbes(context_, false /* network_change */); - needs_cancel_ = true; + resolver_->started_doh_probe_requests_.insert(this); + + RestartRunner(false /* network_change */); return ERR_IO_PENDING; } + void RestartRunner(bool network_change) { + DCHECK(resolver_); + + // If network change, the current runner can be reused if there is one. + if (!runner_ || !network_change) + runner_ = resolver_->CreateDohProbeRunner(context_); + + if (runner_) { + if (network_change) + runner_->RestartForNetworkChange(); + else + runner_->Start(); + } + } + + void CancelRunner() { runner_.reset(); } + private: URLRequestContext* context_; + std::unique_ptr<DnsProbeRunner> runner_; base::WeakPtr<HostResolverManager> resolver_; - bool needs_cancel_ = false; }; //------------------------------------------------------------------------------ @@ -2886,11 +2904,9 @@ UpdateJobsForChangedConfig(); } - // Restart DoH probes with the new configuration. - if (url_request_context_for_probes_) { - doh_probe_runner_.reset(); - ActivateDohProbes(url_request_context_for_probes_, - false /* network_change */); + // Restart DoH probes for the new configuration. + for (auto* probe_request : started_doh_probe_requests_) { + probe_request->RestartRunner(false /* network_change */); } } } @@ -3726,15 +3742,12 @@ "DnsUnresponsiveDelayMsByConnectionType", ProcTaskParams::kDnsDefaultUnresponsiveDelay, type); - // If there is an active DoH probe runner, it should be cancelled or restarted - // for the new connection. - if (url_request_context_for_probes_) { - if (type == NetworkChangeNotifier::CONNECTION_NONE) { - doh_probe_runner_.reset(); - } else { - ActivateDohProbes(url_request_context_for_probes_, - true /* network_change */); - } + // Restart all DoH probe requests. + for (auto* probe_request : started_doh_probe_requests_) { + if (type == NetworkChangeNotifier::CONNECTION_NONE) + probe_request->CancelRunner(); + else + probe_request->RestartRunner(true /* network_change */); } } @@ -3757,11 +3770,9 @@ if (transactions_allowed_before) UpdateJobsForChangedConfig(); - // Restart DoH probes with the new configuration. - if (url_request_context_for_probes_) { - doh_probe_runner_.reset(); - ActivateDohProbes(url_request_context_for_probes_, - false /* network_change */); + // Restart DoH probes for the new configuration. + for (auto* probe_request : started_doh_probe_requests_) { + probe_request->RestartRunner(false /* network_change */); } } } @@ -3840,45 +3851,16 @@ #endif } -void HostResolverManager::ActivateDohProbes( - URLRequestContext* url_request_context, - bool network_change) { - DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); - DCHECK(dns_client_); - DCHECK(url_request_context); - DCHECK(!url_request_context_for_probes_ || - url_request_context_for_probes_ == url_request_context); - - url_request_context_for_probes_ = url_request_context; - - if (!dns_client_->CanUseSecureDnsTransactions()) - return; - - // Don't bother running probes if there is no network connection. - if (NetworkChangeNotifier::GetConnectionType() == - NetworkChangeNotifier::CONNECTION_NONE) { - return; +std::unique_ptr<DnsProbeRunner> HostResolverManager::CreateDohProbeRunner( + URLRequestContext* url_request_context) { + if (!dns_client_->CanUseSecureDnsTransactions() || + NetworkChangeNotifier::GetConnectionType() == + NetworkChangeNotifier::CONNECTION_NONE) { + return nullptr; } - if (!doh_probe_runner_) { - doh_probe_runner_ = - dns_client_->GetTransactionFactory()->CreateDohProbeRunner( - url_request_context); - } - - if (network_change) - doh_probe_runner_->RestartForNetworkChange(); - else - doh_probe_runner_->Start(); -} - -void HostResolverManager::CancelDohProbes() { - DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); - DCHECK(dns_client_); - DCHECK(url_request_context_for_probes_); - - url_request_context_for_probes_ = nullptr; - doh_probe_runner_.reset(); + return dns_client_->GetTransactionFactory()->CreateDohProbeRunner( + url_request_context); } void HostResolverManager::RequestImpl::Cancel() {
diff --git a/net/dns/host_resolver_manager.h b/net/dns/host_resolver_manager.h index 9b038a2..2bf7c2b 100644 --- a/net/dns/host_resolver_manager.h +++ b/net/dns/host_resolver_manager.h
@@ -453,11 +453,10 @@ void InvalidateCaches(); - // Currently only allows one probe to be started at a time. Must be cancelled - // before starting another. - void ActivateDohProbes(URLRequestContext* url_request_context, - bool network_change); - void CancelDohProbes(); + // Returns |nullptr| if DoH probes are currently not allowed (due to + // configuration or current connection state). + std::unique_ptr<DnsProbeRunner> CreateDohProbeRunner( + URLRequestContext* url_request_context); // Used for multicast DNS tasks. Created on first use using // GetOrCreateMndsClient(). @@ -478,8 +477,7 @@ NetLog* net_log_; - URLRequestContext* url_request_context_for_probes_ = nullptr; - std::unique_ptr<DnsProbeRunner> doh_probe_runner_; + std::set<ProbeRequestImpl*> started_doh_probe_requests_; // If present, used by DnsTask and ServeFromHosts to resolve requests. std::unique_ptr<DnsClient> dns_client_;
diff --git a/net/dns/host_resolver_manager_unittest.cc b/net/dns/host_resolver_manager_unittest.cc index d16dd9a..83bed96 100644 --- a/net/dns/host_resolver_manager_unittest.cc +++ b/net/dns/host_resolver_manager_unittest.cc
@@ -8497,6 +8497,27 @@ EXPECT_FALSE(dns_client_->factory()->doh_probes_running()); } +TEST_F(HostResolverManagerDnsTest, MultipleDohProbeRequests) { + ChangeDnsConfig(CreateValidDnsConfig()); + + EXPECT_FALSE(dns_client_->factory()->doh_probes_running()); + + std::unique_ptr<HostResolverManager::CancellableProbeRequest> request1 = + resolver_->CreateDohProbeRequest(request_context_.get()); + EXPECT_THAT(request1->Start(), IsError(ERR_IO_PENDING)); + std::unique_ptr<HostResolverManager::CancellableProbeRequest> request2 = + resolver_->CreateDohProbeRequest(request_context_.get()); + EXPECT_THAT(request2->Start(), IsError(ERR_IO_PENDING)); + + EXPECT_TRUE(dns_client_->factory()->doh_probes_running()); + + request1.reset(); + EXPECT_TRUE(dns_client_->factory()->doh_probes_running()); + + request2.reset(); + EXPECT_FALSE(dns_client_->factory()->doh_probes_running()); +} + TEST_F(HostResolverManagerDnsTest, EsniQuery) { EsniContent c1, c2, c3; IPAddress a1(1, 2, 3, 4), a2(5, 6, 7, 8);
diff --git a/net/log/file_net_log_observer_unittest.cc b/net/log/file_net_log_observer_unittest.cc index cd97ab89..860a98d 100644 --- a/net/log/file_net_log_observer_unittest.cc +++ b/net/log/file_net_log_observer_unittest.cc
@@ -68,13 +68,13 @@ // The maximum value of base::TimeTicks::Now() will be the maximum value of // int64_t, and if the maximum number of digits are included, the - // |base_entry_size| could be up to 101 characters. Check that the event + // |base_entry_size| could be up to 136 characters. Check that the event // format does not include additional padding. - DCHECK_LE(base_entry_size, 101u); + DCHECK_LE(base_entry_size, 136u); // |entry_size| should be at least as big as the largest possible base // entry. - EXPECT_GE(entry_size, 101u); + EXPECT_GE(entry_size, 136u); // |entry_size| cannot be smaller than the minimum event size. EXPECT_GE(entry_size, base_entry_size);
diff --git a/net/log/net_log_entry.cc b/net/log/net_log_entry.cc index 10c0c98..d889aed4 100644 --- a/net/log/net_log_entry.cc +++ b/net/log/net_log_entry.cc
@@ -33,6 +33,8 @@ base::DictionaryValue source_dict; source_dict.SetInteger("id", source.id); source_dict.SetInteger("type", static_cast<int>(source.type)); + source_dict.SetString("start_time", + NetLog::TickCountToString(source.start_time)); entry_dict.SetKey("source", std::move(source_dict)); // Set the event info.
diff --git a/net/log/net_log_source.cc b/net/log/net_log_source.cc index e9ffa467..ff1e84d4 100644 --- a/net/log/net_log_source.cc +++ b/net/log/net_log_source.cc
@@ -30,10 +30,16 @@ // LoadTimingInfo requires this be 0. const uint32_t NetLogSource::kInvalidId = 0; -NetLogSource::NetLogSource() : type(NetLogSourceType::NONE), id(kInvalidId) {} +NetLogSource::NetLogSource() + : NetLogSource(NetLogSourceType::NONE, kInvalidId) {} NetLogSource::NetLogSource(NetLogSourceType type, uint32_t id) - : type(type), id(id) {} + : NetLogSource(type, id, base::TimeTicks::Now()) {} + +NetLogSource::NetLogSource(NetLogSourceType type, + uint32_t id, + base::TimeTicks start_time) + : type(type), id(id), start_time(start_time) {} bool NetLogSource::IsValid() const { return id != kInvalidId;
diff --git a/net/log/net_log_source.h b/net/log/net_log_source.h index 82fa6daa..01b091b 100644 --- a/net/log/net_log_source.h +++ b/net/log/net_log_source.h
@@ -7,6 +7,7 @@ #include <stdint.h> +#include "base/time/time.h" #include "net/base/net_export.h" #include "net/log/net_log_source_type.h" @@ -25,6 +26,7 @@ NetLogSource(); NetLogSource(NetLogSourceType type, uint32_t id); + NetLogSource(NetLogSourceType type, uint32_t id, base::TimeTicks start_time); bool IsValid() const; // Adds the source to a DictionaryValue containing event parameters, @@ -44,6 +46,7 @@ NetLogSourceType type; uint32_t id; + base::TimeTicks start_time; }; } // namespace net
diff --git a/net/log/net_log_unittest.cc b/net/log/net_log_unittest.cc index fec3bda..2aea603 100644 --- a/net/log/net_log_unittest.cc +++ b/net/log/net_log_unittest.cc
@@ -6,6 +6,7 @@ #include "base/stl_util.h" #include "base/synchronization/waitable_event.h" +#include "base/test/task_environment.h" #include "base/threading/simple_thread.h" #include "base/values.h" #include "net/log/net_log_event_type.h" @@ -35,21 +36,117 @@ return std::move(dict); } -TEST(NetLogTest, Basic) { +TEST(NetLogTest, BasicGlobalEvents) { + base::test::TaskEnvironment task_environment{ + base::test::TaskEnvironment::TimeSource::MOCK_TIME}; RecordingTestNetLog net_log; auto entries = net_log.GetEntries(); EXPECT_EQ(0u, entries.size()); + task_environment.FastForwardBy(base::TimeDelta::FromSeconds(1234)); + base::TimeTicks ticks0 = base::TimeTicks::Now(); + net_log.AddGlobalEntry(NetLogEventType::CANCELLED); + task_environment.FastForwardBy(base::TimeDelta::FromSeconds(5678)); + base::TimeTicks ticks1 = base::TimeTicks::Now(); + EXPECT_LE(ticks0, ticks1); + + net_log.AddGlobalEntry(NetLogEventType::FAILED); + + task_environment.FastForwardBy(base::TimeDelta::FromSeconds(91011)); + EXPECT_LE(ticks1, base::TimeTicks::Now()); + entries = net_log.GetEntries(); - ASSERT_EQ(1u, entries.size()); + ASSERT_EQ(2u, entries.size()); + EXPECT_EQ(NetLogEventType::CANCELLED, entries[0].type); EXPECT_EQ(NetLogSourceType::NONE, entries[0].source.type); EXPECT_NE(NetLogSource::kInvalidId, entries[0].source.id); + EXPECT_EQ(ticks0, entries[0].source.start_time); EXPECT_EQ(NetLogEventPhase::NONE, entries[0].phase); - EXPECT_GE(base::TimeTicks::Now(), entries[0].time); + EXPECT_EQ(ticks0, entries[0].time); EXPECT_FALSE(entries[0].HasParams()); + + EXPECT_EQ(NetLogEventType::FAILED, entries[1].type); + EXPECT_EQ(NetLogSourceType::NONE, entries[1].source.type); + EXPECT_NE(NetLogSource::kInvalidId, entries[1].source.id); + EXPECT_LT(entries[0].source.id, entries[1].source.id); + EXPECT_EQ(ticks1, entries[1].source.start_time); + EXPECT_EQ(NetLogEventPhase::NONE, entries[1].phase); + EXPECT_EQ(ticks1, entries[1].time); + EXPECT_FALSE(entries[1].HasParams()); +} + +TEST(NetLogTest, BasicEventsWithSource) { + base::test::TaskEnvironment task_environment{ + base::test::TaskEnvironment::TimeSource::MOCK_TIME}; + RecordingTestNetLog net_log; + auto entries = net_log.GetEntries(); + EXPECT_EQ(0u, entries.size()); + + task_environment.FastForwardBy(base::TimeDelta::FromSeconds(9876)); + base::TimeTicks source0_start_ticks = base::TimeTicks::Now(); + + NetLogWithSource source0 = + NetLogWithSource::Make(&net_log, NetLogSourceType::URL_REQUEST); + task_environment.FastForwardBy(base::TimeDelta::FromSeconds(1)); + base::TimeTicks source0_event0_ticks = base::TimeTicks::Now(); + source0.BeginEvent(NetLogEventType::REQUEST_ALIVE); + + task_environment.FastForwardBy(base::TimeDelta::FromSeconds(5432)); + base::TimeTicks source1_start_ticks = base::TimeTicks::Now(); + + NetLogWithSource source1 = + NetLogWithSource::Make(&net_log, NetLogSourceType::SOCKET); + task_environment.FastForwardBy(base::TimeDelta::FromSeconds(1)); + base::TimeTicks source1_event0_ticks = base::TimeTicks::Now(); + source1.BeginEvent(NetLogEventType::SOCKET_ALIVE); + task_environment.FastForwardBy(base::TimeDelta::FromSeconds(10)); + base::TimeTicks source1_event1_ticks = base::TimeTicks::Now(); + source1.EndEvent(NetLogEventType::SOCKET_ALIVE); + + task_environment.FastForwardBy(base::TimeDelta::FromSeconds(1)); + base::TimeTicks source0_event1_ticks = base::TimeTicks::Now(); + source0.EndEvent(NetLogEventType::REQUEST_ALIVE); + + task_environment.FastForwardBy(base::TimeDelta::FromSeconds(123)); + + entries = net_log.GetEntries(); + ASSERT_EQ(4u, entries.size()); + + EXPECT_EQ(NetLogEventType::REQUEST_ALIVE, entries[0].type); + EXPECT_EQ(NetLogSourceType::URL_REQUEST, entries[0].source.type); + EXPECT_NE(NetLogSource::kInvalidId, entries[0].source.id); + EXPECT_EQ(source0_start_ticks, entries[0].source.start_time); + EXPECT_EQ(NetLogEventPhase::BEGIN, entries[0].phase); + EXPECT_EQ(source0_event0_ticks, entries[0].time); + EXPECT_FALSE(entries[0].HasParams()); + + EXPECT_EQ(NetLogEventType::SOCKET_ALIVE, entries[1].type); + EXPECT_EQ(NetLogSourceType::SOCKET, entries[1].source.type); + EXPECT_NE(NetLogSource::kInvalidId, entries[1].source.id); + EXPECT_LT(entries[0].source.id, entries[1].source.id); + EXPECT_EQ(source1_start_ticks, entries[1].source.start_time); + EXPECT_EQ(NetLogEventPhase::BEGIN, entries[1].phase); + EXPECT_EQ(source1_event0_ticks, entries[1].time); + EXPECT_FALSE(entries[1].HasParams()); + + EXPECT_EQ(NetLogEventType::SOCKET_ALIVE, entries[2].type); + EXPECT_EQ(NetLogSourceType::SOCKET, entries[2].source.type); + EXPECT_EQ(entries[1].source.id, entries[2].source.id); + EXPECT_EQ(source1_start_ticks, entries[2].source.start_time); + EXPECT_EQ(NetLogEventPhase::END, entries[2].phase); + EXPECT_EQ(source1_event1_ticks, entries[2].time); + EXPECT_FALSE(entries[2].HasParams()); + + EXPECT_EQ(NetLogEventType::REQUEST_ALIVE, entries[3].type); + EXPECT_EQ(NetLogSourceType::URL_REQUEST, entries[3].source.type); + EXPECT_EQ(entries[0].source.id, entries[3].source.id); + EXPECT_EQ(source0_start_ticks, entries[3].source.start_time); + EXPECT_EQ(NetLogEventPhase::END, entries[3].phase); + EXPECT_EQ(source0_event1_ticks, entries[3].time); + EXPECT_FALSE(entries[3].HasParams()); } // Check that the correct CaptureMode is sent to NetLog Value callbacks. @@ -77,6 +174,7 @@ EXPECT_EQ(NetLogEventType::SOCKET_ALIVE, entries[0].type); EXPECT_EQ(NetLogSourceType::NONE, entries[0].source.type); EXPECT_NE(NetLogSource::kInvalidId, entries[0].source.id); + EXPECT_GE(base::TimeTicks::Now(), entries[0].source.start_time); EXPECT_EQ(NetLogEventPhase::NONE, entries[0].phase); EXPECT_GE(base::TimeTicks::Now(), entries[0].time);
diff --git a/remoting/host/mac/permission_utils.mm b/remoting/host/mac/permission_utils.mm index caf8acb..8861dade 100644 --- a/remoting/host/mac/permission_utils.mm +++ b/remoting/host/mac/permission_utils.mm
@@ -118,24 +118,42 @@ } // Heuristic to check screen capture permission. See http://crbug.com/993692 +// Screen capture is considered allowed if the name of at least one normal +// or dock window running on another process is visible. // Copied from // chrome/browser/media/webrtc/system_media_capture_permissions_mac.mm // TODO(garykac) Move webrtc version where it can be shared. bool CanRecordScreen() { if (@available(macOS 10.15, *)) { - base::ScopedCFTypeRef<CFArrayRef> window_list(CGWindowListCopyWindowInfo( - kCGWindowListOptionOnScreenOnly, kCGNullWindowID)); - NSUInteger num_windows = CFArrayGetCount(window_list); - NSUInteger num_windows_with_name = 0; - for (NSDictionary* dict in base::mac::CFToNSCast(window_list.get())) { - if ([dict objectForKey:base::mac::CFToNSCast(kCGWindowName)]) { - num_windows_with_name++; - } else { - // No kCGWindowName detected implies no permission. - break; + base::ScopedCFTypeRef<CFArrayRef> window_list( + CGWindowListCopyWindowInfo(kCGWindowListOptionAll, kCGNullWindowID)); + int current_pid = [[NSProcessInfo processInfo] processIdentifier]; + for (NSDictionary* window in base::mac::CFToNSCast(window_list.get())) { + NSNumber* window_pid = + [window objectForKey:base::mac::CFToNSCast(kCGWindowOwnerPID)]; + if (!window_pid || [window_pid integerValue] == current_pid) + continue; + + NSString* window_name = + [window objectForKey:base::mac::CFToNSCast(kCGWindowName)]; + if (!window_name) + continue; + + NSNumber* layer = + [window objectForKey:base::mac::CFToNSCast(kCGWindowLayer)]; + if (!layer) + continue; + + NSInteger layer_integer = [layer integerValue]; + if (layer_integer == CGWindowLevelForKey(kCGNormalWindowLevelKey) || + layer_integer == CGWindowLevelForKey(kCGDockWindowLevelKey)) { + return true; } + return false; } - return num_windows == num_windows_with_name; + + // Screen capture is always allowed in older macOS versions. + return true; } // Previous to 10.15, screen capture was always allowed.
diff --git a/services/service_manager/sandbox/BUILD.gn b/services/service_manager/sandbox/BUILD.gn index 912c0c26..b6d3e00 100644 --- a/services/service_manager/sandbox/BUILD.gn +++ b/services/service_manager/sandbox/BUILD.gn
@@ -52,6 +52,8 @@ "linux/bpf_ppapi_policy_linux.h", "linux/bpf_renderer_policy_linux.cc", "linux/bpf_renderer_policy_linux.h", + "linux/bpf_soda_policy_linux.cc", + "linux/bpf_soda_policy_linux.h", "linux/bpf_utility_policy_linux.cc", "linux/bpf_utility_policy_linux.h", "linux/sandbox_debug_handling_linux.cc",
diff --git a/services/service_manager/sandbox/linux/bpf_soda_policy_linux.cc b/services/service_manager/sandbox/linux/bpf_soda_policy_linux.cc new file mode 100644 index 0000000..07a9a9da --- /dev/null +++ b/services/service_manager/sandbox/linux/bpf_soda_policy_linux.cc
@@ -0,0 +1,71 @@ +// Copyright 2020 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "services/service_manager/sandbox/linux/bpf_soda_policy_linux.h" + +#include <sys/socket.h> + +#include "sandbox/linux/bpf_dsl/bpf_dsl.h" +#include "sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.h" +#include "sandbox/linux/seccomp-bpf-helpers/syscall_parameters_restrictions.h" +#include "sandbox/linux/syscall_broker/broker_process.h" +#include "sandbox/linux/system_headers/linux_syscalls.h" +#include "services/service_manager/sandbox/linux/sandbox_linux.h" + +using sandbox::bpf_dsl::Allow; +using sandbox::bpf_dsl::Arg; +using sandbox::bpf_dsl::If; +using sandbox::bpf_dsl::ResultExpr; +using sandbox::bpf_dsl::Trap; +using sandbox::syscall_broker::BrokerProcess; + +namespace service_manager { + +SodaProcessPolicy::SodaProcessPolicy() = default; +SodaProcessPolicy::~SodaProcessPolicy() = default; + +ResultExpr SodaProcessPolicy::EvaluateSyscall(int system_call_number) const { + switch (system_call_number) { +#if defined(__NR_uname) + case __NR_uname: +#endif +#if defined(__NR_setitimer) + case __NR_setitimer: +#endif +#if defined(__NR_sigaltstack) + case __NR_sigaltstack: +#endif +#if defined(__NR_eventfd2) + case __NR_eventfd2: +#endif +#if defined(__NR_getitimer) + case __NR_getitimer: +#endif +#if defined(__NR_rseq) + case __NR_rseq: +#endif + return Allow(); +#if defined(__NR_prlimit64) + case __NR_prlimit64: + return sandbox::RestrictPrlimit64(GetPolicyPid()); +#endif +#if defined(__NR_getsockopt) + case __NR_getsockopt: { + const Arg<int> level(1); + const Arg<int> optname(2); + return If(AllOf(level == SOL_SOCKET, optname == SO_PEEK_OFF), Allow()) + .Else(sandbox::CrashSIGSYS()); + } +#endif + default: + auto* broker_process = SandboxLinux::GetInstance()->broker_process(); + if (broker_process->IsSyscallAllowed(system_call_number)) + return Trap(BrokerProcess::SIGSYS_Handler, broker_process); + + // Default on the content baseline policy. + return BPFBasePolicy::EvaluateSyscall(system_call_number); + } +} + +} // namespace service_manager
diff --git a/services/service_manager/sandbox/linux/bpf_soda_policy_linux.h b/services/service_manager/sandbox/linux/bpf_soda_policy_linux.h new file mode 100644 index 0000000..5b1aa319 --- /dev/null +++ b/services/service_manager/sandbox/linux/bpf_soda_policy_linux.h
@@ -0,0 +1,30 @@ +// Copyright 2020 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef SERVICES_SERVICE_MANAGER_SANDBOX_LINUX_BPF_SODA_POLICY_LINUX_H_ +#define SERVICES_SERVICE_MANAGER_SANDBOX_LINUX_BPF_SODA_POLICY_LINUX_H_ + +#include "sandbox/linux/bpf_dsl/bpf_dsl.h" +#include "services/service_manager/sandbox/linux/bpf_base_policy_linux.h" + +namespace service_manager { + +// The process policy for the sandboxed utility process that loads the Speech +// On-Device API (SODA). This policy allows the syscalls used by the libsoda.so +// binary to transcribe audio into text. +class SERVICE_MANAGER_SANDBOX_EXPORT SodaProcessPolicy : public BPFBasePolicy { + public: + SodaProcessPolicy(); + ~SodaProcessPolicy() override; + + sandbox::bpf_dsl::ResultExpr EvaluateSyscall( + int system_call_number) const override; + + private: + DISALLOW_COPY_AND_ASSIGN(SodaProcessPolicy); +}; + +} // namespace service_manager + +#endif // SERVICES_SERVICE_MANAGER_SANDBOX_LINUX_BPF_SODA_POLICY_LINUX_H_
diff --git a/services/service_manager/sandbox/linux/sandbox_seccomp_bpf_linux.cc b/services/service_manager/sandbox/linux/sandbox_seccomp_bpf_linux.cc index c599471..b1bdd799 100644 --- a/services/service_manager/sandbox/linux/sandbox_seccomp_bpf_linux.cc +++ b/services/service_manager/sandbox/linux/sandbox_seccomp_bpf_linux.cc
@@ -43,6 +43,7 @@ #include "services/service_manager/sandbox/linux/bpf_pdf_compositor_policy_linux.h" #include "services/service_manager/sandbox/linux/bpf_ppapi_policy_linux.h" #include "services/service_manager/sandbox/linux/bpf_renderer_policy_linux.h" +#include "services/service_manager/sandbox/linux/bpf_soda_policy_linux.h" #include "services/service_manager/sandbox/linux/bpf_utility_policy_linux.h" #if !defined(OS_NACL_NONSFI) @@ -172,6 +173,8 @@ return std::make_unique<NetworkProcessPolicy>(); case SandboxType::kAudio: return std::make_unique<AudioProcessPolicy>(); + case SandboxType::kSoda: + return std::make_unique<SodaProcessPolicy>(); #if defined(OS_CHROMEOS) case SandboxType::kIme: return std::make_unique<ImeProcessPolicy>(); @@ -219,6 +222,7 @@ case SandboxType::kIme: #endif // defined(OS_CHROMEOS) case SandboxType::kAudio: + case SandboxType::kSoda: case SandboxType::kNetwork: case SandboxType::kUtility: case SandboxType::kNoSandbox:
diff --git a/services/service_manager/sandbox/mac/sandbox_mac.mm b/services/service_manager/sandbox/mac/sandbox_mac.mm index 13f4917..2702bf92 100644 --- a/services/service_manager/sandbox/mac/sandbox_mac.mm +++ b/services/service_manager/sandbox/mac/sandbox_mac.mm
@@ -262,6 +262,7 @@ break; case service_manager::SandboxType::kNoSandbox: case service_manager::SandboxType::kInvalid: + case service_manager::SandboxType::kSoda: CHECK(false); break; }
diff --git a/services/service_manager/sandbox/sandbox_type.cc b/services/service_manager/sandbox/sandbox_type.cc index 4a577a81..8d65b7e 100644 --- a/services/service_manager/sandbox/sandbox_type.cc +++ b/services/service_manager/sandbox/sandbox_type.cc
@@ -45,6 +45,7 @@ #if defined(OS_CHROMEOS) case SandboxType::kIme: #endif + case SandboxType::kSoda: return false; } } @@ -89,6 +90,7 @@ #if defined(OS_CHROMEOS) case SandboxType::kIme: #endif // defined(OS_CHROMEOS) + case SandboxType::kSoda: DCHECK(command_line->GetSwitchValueASCII(switches::kProcessType) == switches::kUtilityProcess); DCHECK(!command_line->HasSwitch(switches::kServiceSandboxType)); @@ -164,6 +166,8 @@ return switches::kUtilitySandbox; case SandboxType::kAudio: return switches::kAudioSandbox; + case SandboxType::kSoda: + return switches::kSodaSandbox; #if defined(OS_WIN) case SandboxType::kXrCompositing: return switches::kXrCompositingSandbox; @@ -214,6 +218,8 @@ #endif if (sandbox_string == switches::kAudioSandbox) return SandboxType::kAudio; + if (sandbox_string == switches::kSodaSandbox) + return SandboxType::kSoda; #if defined(OS_CHROMEOS) if (sandbox_string == switches::kImeSandbox) return SandboxType::kIme;
diff --git a/services/service_manager/sandbox/sandbox_type.h b/services/service_manager/sandbox/sandbox_type.h index f9d8486..4671862 100644 --- a/services/service_manager/sandbox/sandbox_type.h +++ b/services/service_manager/sandbox/sandbox_type.h
@@ -67,6 +67,9 @@ #if defined(OS_CHROMEOS) kIme, #endif // defined(OS_CHROMEOS) + + // The Speech On-Device API service process. + kSoda }; SERVICE_MANAGER_SANDBOX_EXPORT bool IsUnsandboxedSandboxType(
diff --git a/services/service_manager/sandbox/switches.cc b/services/service_manager/sandbox/switches.cc index 0b43b8a..2fba59c 100644 --- a/services/service_manager/sandbox/switches.cc +++ b/services/service_manager/sandbox/switches.cc
@@ -28,6 +28,7 @@ const char kCdmSandbox[] = "cdm"; const char kPdfCompositorSandbox[] = "pdf_compositor"; const char kAudioSandbox[] = "audio"; +const char kSodaSandbox[] = "soda"; #if defined(OS_WIN) const char kXrCompositingSandbox[] = "xr_compositing";
diff --git a/services/service_manager/sandbox/switches.h b/services/service_manager/sandbox/switches.h index 3e08da1..718f749 100644 --- a/services/service_manager/sandbox/switches.h +++ b/services/service_manager/sandbox/switches.h
@@ -27,6 +27,7 @@ SERVICE_MANAGER_SANDBOX_EXPORT extern const char kCdmSandbox[]; SERVICE_MANAGER_SANDBOX_EXPORT extern const char kPdfCompositorSandbox[]; SERVICE_MANAGER_SANDBOX_EXPORT extern const char kAudioSandbox[]; +SERVICE_MANAGER_SANDBOX_EXPORT extern const char kSodaSandbox[]; #if defined(OS_WIN) SERVICE_MANAGER_SANDBOX_EXPORT extern const char kXrCompositingSandbox[];
diff --git a/testing/buildbot/chromium.android.fyi.json b/testing/buildbot/chromium.android.fyi.json index 70bb326..e434b4f 100644 --- a/testing/buildbot/chromium.android.fyi.json +++ b/testing/buildbot/chromium.android.fyi.json
@@ -4594,6 +4594,9 @@ "--recover-devices", "--avd-config=../../tools/android/avd/proto/generic_android23.textpb" ], + "flags": [ + "--test-launcher-filter-file=../../testing/buildbot/filters/android.emulator.viz_unittests.filter" + ], "merge": { "args": [ "--bucket", @@ -8950,6 +8953,9 @@ "--recover-devices", "--avd-config=../../tools/android/avd/proto/generic_android28.textpb" ], + "flags": [ + "--test-launcher-filter-file=../../testing/buildbot/filters/android.emulator.viz_unittests.filter" + ], "merge": { "args": [ "--bucket",
diff --git a/testing/buildbot/chromium.clang.json b/testing/buildbot/chromium.clang.json index f1ff72b..a2f4cbb 100644 --- a/testing/buildbot/chromium.clang.json +++ b/testing/buildbot/chromium.clang.json
@@ -21270,10 +21270,6 @@ "test_target": "//third_party/boringssl:boringssl_ssl_tests" }, { - "args": [ - "--test-launcher-filter-file=../../testing/buildbot/filters/mac_window_server_killers.browser_tests.filter", - "--gtest_shuffle" - ], "merge": { "args": [], "script": "//testing/merge_scripts/standard_gtest_merge.py" @@ -22391,9 +22387,7 @@ }, { "args": [ - "--test-launcher-print-test-stdio=always", - "--test-launcher-filter-file=../../testing/buildbot/filters/mac_window_server_killers.browser_tests.filter", - "--gtest_shuffle" + "--test-launcher-print-test-stdio=always" ], "merge": { "args": [],
diff --git a/testing/buildbot/chromium.mac.json b/testing/buildbot/chromium.mac.json index 77f8f60d..68fb7eb 100644 --- a/testing/buildbot/chromium.mac.json +++ b/testing/buildbot/chromium.mac.json
@@ -1795,10 +1795,6 @@ "test_target": "//third_party/boringssl:boringssl_ssl_tests" }, { - "args": [ - "--test-launcher-filter-file=../../testing/buildbot/filters/mac_window_server_killers.browser_tests.filter", - "--gtest_shuffle" - ], "merge": { "args": [], "script": "//testing/merge_scripts/standard_gtest_merge.py" @@ -3393,10 +3389,6 @@ "test_target": "//third_party/boringssl:boringssl_ssl_tests" }, { - "args": [ - "--test-launcher-filter-file=../../testing/buildbot/filters/mac_window_server_killers.browser_tests.filter", - "--gtest_shuffle" - ], "merge": { "args": [], "script": "//testing/merge_scripts/standard_gtest_merge.py" @@ -5038,10 +5030,6 @@ "test_target": "//third_party/boringssl:boringssl_ssl_tests" }, { - "args": [ - "--test-launcher-filter-file=../../testing/buildbot/filters/mac_window_server_killers.browser_tests.filter", - "--gtest_shuffle" - ], "merge": { "args": [], "script": "//testing/merge_scripts/standard_gtest_merge.py" @@ -6672,10 +6660,6 @@ "test_target": "//third_party/boringssl:boringssl_ssl_tests" }, { - "args": [ - "--test-launcher-filter-file=../../testing/buildbot/filters/mac_window_server_killers.browser_tests.filter", - "--gtest_shuffle" - ], "merge": { "args": [], "script": "//testing/merge_scripts/standard_gtest_merge.py"
diff --git a/testing/buildbot/chromium.memory.json b/testing/buildbot/chromium.memory.json index e1828b65..142198e 100644 --- a/testing/buildbot/chromium.memory.json +++ b/testing/buildbot/chromium.memory.json
@@ -13258,9 +13258,7 @@ }, { "args": [ - "--test-launcher-print-test-stdio=always", - "--test-launcher-filter-file=../../testing/buildbot/filters/mac_window_server_killers.browser_tests.filter", - "--gtest_shuffle" + "--test-launcher-print-test-stdio=always" ], "merge": { "args": [],
diff --git a/testing/buildbot/filters/BUILD.gn b/testing/buildbot/filters/BUILD.gn index 9f1eeb86..dd20ede 100644 --- a/testing/buildbot/filters/BUILD.gn +++ b/testing/buildbot/filters/BUILD.gn
@@ -113,6 +113,14 @@ ] } +source_set("e2e_sync_integration_tests_filters") { + testonly = true + + data = [ + "//testing/buildbot/filters/e2e.sync_integration_tests.filter", + ] +} + source_set("fuchsia_filters") { data = [ "//testing/buildbot/filters/fuchsia.base_perftests.filter", @@ -126,6 +134,21 @@ ] } +source_set("gl_tests_filters") { + testonly = true + + data = [ + "//testing/buildbot/filters/android.emulator.gl_tests.filter", + "//testing/buildbot/filters/android.pie_arm64_rel.gl_tests.filter", + ] +} + +source_set("linux_ozone_views_unittests_filters") { + data = [ + "//testing/buildbot/filters/ozone-linux.x11_views_unittests.filter", + ] +} + source_set("linux_trusty_rel_browser_tests_filters") { data = [ "//testing/buildbot/filters/linux_trusty_rel.browser_tests.filter", @@ -153,12 +176,11 @@ ] } -source_set("gl_tests_filters") { +source_set("viz_unittests_filters") { testonly = true data = [ - "//testing/buildbot/filters/android.emulator.gl_tests.filter", - "//testing/buildbot/filters/android.pie_arm64_rel.gl_tests.filter", + "//testing/buildbot/filters/android.emulator.viz_unittests.filter", ] } @@ -177,17 +199,3 @@ "//testing/buildbot/filters/mojo.fyi.network_webview_instrumentation_test_apk.filter", ] } - -source_set("linux_ozone_views_unittests_filters") { - data = [ - "//testing/buildbot/filters/ozone-linux.x11_views_unittests.filter", - ] -} - -source_set("e2e_sync_integration_tests_filters") { - testonly = true - - data = [ - "//testing/buildbot/filters/e2e.sync_integration_tests.filter", - ] -}
diff --git a/testing/buildbot/filters/android.emulator.viz_unittests.filter b/testing/buildbot/filters/android.emulator.viz_unittests.filter new file mode 100644 index 0000000..4ed15e3 --- /dev/null +++ b/testing/buildbot/filters/android.emulator.viz_unittests.filter
@@ -0,0 +1,41 @@ +# https://crbug.com/1039860 +-All/GLScalerShaderPixelTest.BicubicDownscaleByHalf/0 +-All/GLScalerShaderPixelTest.BicubicDownscaleByHalf/1 +-All/GLScalerShaderPixelTest.BicubicDownscaleByHalf/2 +-All/GLScalerShaderPixelTest.BicubicDownscaleByHalf/3 +-All/GLScalerShaderPixelTest.BicubicUpscale/0 +-All/GLScalerShaderPixelTest.BicubicUpscale/1 +-All/GLScalerShaderPixelTest.BicubicUpscale/2 +-All/GLScalerShaderPixelTest.BicubicUpscale/3 +-All/GLScalerShaderPixelTest.Bilinear/0 +-All/GLScalerShaderPixelTest.Bilinear/1 +-All/GLScalerShaderPixelTest.Bilinear/2 +-All/GLScalerShaderPixelTest.Bilinear/3 +-All/GLScalerShaderPixelTest.Export_Planar/0 +-All/GLScalerShaderPixelTest.Export_Planar/1 +-All/GLScalerShaderPixelTest.Export_Planar/2 +-All/GLScalerShaderPixelTest.Export_Planar/3 +-All/GLScalerShaderPixelTest.FourTapBilinear/0 +-All/GLScalerShaderPixelTest.FourTapBilinear/1 +-All/GLScalerShaderPixelTest.FourTapBilinear/2 +-All/GLScalerShaderPixelTest.FourTapBilinear/3 +-All/GLScalerShaderPixelTest.ThreeTapBilinear/0 +-All/GLScalerShaderPixelTest.ThreeTapBilinear/1 +-All/GLScalerShaderPixelTest.ThreeTapBilinear/2 +-All/GLScalerShaderPixelTest.ThreeTapBilinear/3 +-All/GLScalerShaderPixelTest.TwoByTwoTapBilinear/0 +-All/GLScalerShaderPixelTest.TwoByTwoTapBilinear/1 +-All/GLScalerShaderPixelTest.TwoByTwoTapBilinear/2 +-All/GLScalerShaderPixelTest.TwoByTwoTapBilinear/3 +-All/GLScalerShaderPixelTest.TwoTapBilinear/0 +-All/GLScalerShaderPixelTest.TwoTapBilinear/1 +-All/GLScalerShaderPixelTest.TwoTapBilinear/2 +-All/GLScalerShaderPixelTest.TwoTapBilinear/3 +-All/GLScalerShaderPixelTest.ValidateTestHelpers/1 +-All/GLScalerShaderPixelTest.ValidateTestHelpers/2 +-All/GLScalerShaderPixelTest.ValidateTestHelpers/3 +-GLScalerPixelTest.CopiesByDefault +-GLScalerPixelTest.ExportsTheRedColorChannel +-GLScalerPixelTest.TranslatesVerticallyFlippedSourceWithSourceOffset +-GLScalerPixelTest.TranslatesWithSourceOffset +-GLScalerPixelTest.VerticallyFlipsOutput
diff --git a/testing/buildbot/filters/mac_window_server_killers.browser_tests.filter b/testing/buildbot/filters/mac_window_server_killers.browser_tests.filter deleted file mode 100644 index 53de3f7..0000000 --- a/testing/buildbot/filters/mac_window_server_killers.browser_tests.filter +++ /dev/null
@@ -1,15 +0,0 @@ -# https://crbug.com/828031 - -# Suites implicated in window_server deaths. --ConstrainedWebDialogBrowserTest.* --SSLClientCertificateSelectorMacTest.* - -# Potential 10.13 killers. --DisableExtensionsExceptBrowserTest.* --ExtensionActionRunnerBrowserTest.* --ExtensionFetchTest.* --ExtensionTabUtilBrowserTest.* --NativeBindingsApiTest.* --PasswordManagerBrowserTest.* --PictureInPictureWindowControllerBrowserTest.* --UpdateServiceTest.*
diff --git a/testing/buildbot/test_suite_exceptions.pyl b/testing/buildbot/test_suite_exceptions.pyl index e0fa264..6fb16c5 100644 --- a/testing/buildbot/test_suite_exceptions.pyl +++ b/testing/buildbot/test_suite_exceptions.pyl
@@ -124,64 +124,10 @@ }, }, 'Mac ASan 64 Tests (1)': { - # A subset of tests seem to cause WindowServer deaths on VMs. - # crbug.com/828031 et al. - 'args': [ - '--test-launcher-filter-file=../../testing/buildbot/filters/mac_window_server_killers.browser_tests.filter', - '--gtest_shuffle', - ], 'swarming': { 'shards': 20, }, }, - 'Mac10.11 Tests': { - # A subset of tests seem to cause WindowServer deaths on VMs. - # crbug.com/828031 et al. - 'args': [ - '--test-launcher-filter-file=../../testing/buildbot/filters/mac_window_server_killers.browser_tests.filter', - '--gtest_shuffle', - ], - }, - 'Mac10.12 Tests': { - # A subset of tests seem to cause WindowServer deaths on VMs. - # crbug.com/828031 et al. - 'args': [ - '--test-launcher-filter-file=../../testing/buildbot/filters/mac_window_server_killers.browser_tests.filter', - '--gtest_shuffle', - ], - }, - 'Mac10.13 Tests': { - # A subset of tests seem to cause WindowServer deaths on VMs. - # crbug.com/828031 et al. - 'args': [ - '--test-launcher-filter-file=../../testing/buildbot/filters/mac_window_server_killers.browser_tests.filter', - '--gtest_shuffle', - ], - }, - 'Mac10.13 Tests (dbg)': { - # A subset of tests seem to cause WindowServer deaths on VMs. - # crbug.com/828031 et al. - 'args': [ - '--test-launcher-filter-file=../../testing/buildbot/filters/mac_window_server_killers.browser_tests.filter', - '--gtest_shuffle', - ], - }, - 'ToTMac': { - # A subset of tests seem to cause WindowServer deaths on VMs. - # crbug.com/828031 et al. - 'args': [ - '--test-launcher-filter-file=../../testing/buildbot/filters/mac_window_server_killers.browser_tests.filter', - '--gtest_shuffle', - ], - }, - 'ToTMacASan': { - # A subset of tests seem to cause WindowServer deaths on VMs. - # crbug.com/828031 et al. - 'args': [ - '--test-launcher-filter-file=../../testing/buildbot/filters/mac_window_server_killers.browser_tests.filter', - '--gtest_shuffle', - ], - }, 'ToTWin(dbg)': { 'swarming': { 'shards': 20, @@ -1689,6 +1635,20 @@ 'Win10 FYI x64 Exp Release (Intel HD 630)', ], }, + 'viz_unittests': { + 'modifications': { + 'android-marshmallow-x86-fyi-rel': { + 'flags': [ + '--test-launcher-filter-file=../../testing/buildbot/filters/android.emulator.viz_unittests.filter', + ], + }, + 'android-pie-x86-fyi-rel': { + 'flags': [ + '--test-launcher-filter-file=../../testing/buildbot/filters/android.emulator.viz_unittests.filter', + ], + }, + }, + }, 'vr_android_unittests': { 'remove_from': [ 'android-marshmallow-x86-fyi-rel',
diff --git a/testing/variations/fieldtrial_testing_config.json b/testing/variations/fieldtrial_testing_config.json index c343c30..435041a 100644 --- a/testing/variations/fieldtrial_testing_config.json +++ b/testing/variations/fieldtrial_testing_config.json
@@ -2028,6 +2028,26 @@ ] } ], + "DesktopHats": [ + { + "platforms": [ + "windows" + ], + "experiments": [ + { + "name": "EnabledNTP79", + "params": { + "en_site_id": "ty52vxwjrabfvhusawtrmkmx6m", + "probability": "0.2", + "survey": "satisfaction" + }, + "enable_features": [ + "HappinessTrackingSurveysForDesktop" + ] + } + ] + } + ], "DesktopTabGroups": [ { "platforms": [ @@ -5533,6 +5553,25 @@ ] } ], + "SafeBrowsingCommittedInterstitials": [ + { + "platforms": [ + "android", + "chromeos", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "SafeBrowsingCommittedInterstitials" + ] + } + ] + } + ], "SafeBrowsingPasswordProtectionForSavedPasswords": [ { "platforms": [ @@ -6610,6 +6649,7 @@ { "platforms": [ "android", + "android_webview", "chromeos", "linux", "mac",
diff --git a/third_party/blink/common/feature_policy/document_policy.cc b/third_party/blink/common/feature_policy/document_policy.cc index 25da03e..9a19a27 100644 --- a/third_party/blink/common/feature_policy/document_policy.cc +++ b/third_party/blink/common/feature_policy/document_policy.cc
@@ -13,9 +13,9 @@ namespace blink { // static -std::unique_ptr<DocumentPolicy> DocumentPolicy::CreateWithRequiredPolicy( - const FeatureState& required_policy) { - return CreateWithRequiredPolicy(required_policy, GetFeatureDefaults()); +std::unique_ptr<DocumentPolicy> DocumentPolicy::CreateWithHeaderPolicy( + const FeatureState& header_policy) { + return CreateWithHeaderPolicy(header_policy, GetFeatureDefaults()); } namespace { @@ -302,12 +302,12 @@ } // static -std::unique_ptr<DocumentPolicy> DocumentPolicy::CreateWithRequiredPolicy( - const FeatureState& required_policy, +std::unique_ptr<DocumentPolicy> DocumentPolicy::CreateWithHeaderPolicy( + const FeatureState& header_policy, const DocumentPolicy::FeatureState& defaults) { std::unique_ptr<DocumentPolicy> new_policy = base::WrapUnique(new DocumentPolicy(defaults)); - new_policy->UpdateFeatureState(required_policy); + new_policy->UpdateFeatureState(header_policy); return new_policy; } @@ -323,13 +323,21 @@ return *default_feature_list; } +// static bool DocumentPolicy::IsPolicyCompatible( + const DocumentPolicy::FeatureState& required_policy, const DocumentPolicy::FeatureState& incoming_policy) { - const DocumentPolicy::FeatureState& state = GetFeatureState(); - for (const auto& e : incoming_policy) { - // feature value > threshold => enabled - // value_a > value_b => value_a less strict than value_b - if (state.at(e.first) > e.second) + for (const auto& incoming_entry : incoming_policy) { + // feature value > threshold => enabled, where feature value is the value in + // document policy and threshold is the value to test against. + // The smaller the feature value, the stricter the policy. + // Incoming policy should be at least as strict as the required one. + const auto required_entry = + required_policy.find(incoming_entry.first /* feature */); + + if (required_entry != required_policy.end() && + required_entry->second /* required_value */ < + incoming_entry.second /* incoming_value */) return false; } return true;
diff --git a/third_party/blink/common/feature_policy/feature_policy_mojom_traits.cc b/third_party/blink/common/feature_policy/feature_policy_mojom_traits.cc index 14ed005..eff9e14 100644 --- a/third_party/blink/common/feature_policy/feature_policy_mojom_traits.cc +++ b/third_party/blink/common/feature_policy/feature_policy_mojom_traits.cc
@@ -17,28 +17,4 @@ in.ReadOpaqueValue(&out->opaque_value) && in.ReadValues(&out->values); } -bool UnionTraits<blink::mojom::PolicyValueDataDataView, blink::PolicyValue>:: - Read(blink::mojom::PolicyValueDataDataView in, blink::PolicyValue* out) { - switch (in.tag()) { - case blink::mojom::PolicyValueDataDataView::Tag::BOOL_VALUE: - out->SetType(blink::mojom::PolicyValueType::kBool); - out->SetBoolValue(in.bool_value()); - return true; - case blink::mojom::PolicyValueDataDataView::Tag::DEC_DOUBLE_VALUE: - out->SetType(blink::mojom::PolicyValueType::kDecDouble); - out->SetDoubleValue(in.dec_double_value()); - return true; - case blink::mojom::PolicyValueDataDataView::Tag::NULL_VALUE: - break; - } - NOTREACHED(); - return false; -} - -bool StructTraits<blink::mojom::PolicyValueDataView, blink::PolicyValue>::Read( - blink::mojom::PolicyValueDataView data, - blink::PolicyValue* out) { - return data.ReadData(out); -} - } // namespace mojo
diff --git a/third_party/blink/common/feature_policy/feature_policy_mojom_traits.h b/third_party/blink/common/feature_policy/feature_policy_mojom_traits.h index 70c3c7a..353903c 100644 --- a/third_party/blink/common/feature_policy/feature_policy_mojom_traits.h +++ b/third_party/blink/common/feature_policy/feature_policy_mojom_traits.h
@@ -9,9 +9,9 @@ #include "base/containers/flat_map.h" #include "mojo/public/cpp/bindings/enum_traits.h" +#include "third_party/blink/common/feature_policy/policy_value_mojom_traits.h" #include "third_party/blink/public/common/common_export.h" #include "third_party/blink/public/common/feature_policy/feature_policy.h" -#include "third_party/blink/public/common/feature_policy/policy_value.h" #include "third_party/blink/public/common/frame/sandbox_flags.h" #include "third_party/blink/public/mojom/feature_policy/feature_policy.mojom-shared.h" @@ -76,45 +76,6 @@ }; template <> -struct BLINK_COMMON_EXPORT - UnionTraits<blink::mojom::PolicyValueDataDataView, blink::PolicyValue> { - public: - static blink::mojom::PolicyValueDataDataView::Tag GetTag( - const blink::PolicyValue& value) { - switch (value.Type()) { - case blink::mojom::PolicyValueType::kNull: - return blink::mojom::PolicyValueDataDataView::Tag::NULL_VALUE; - case blink::mojom::PolicyValueType::kBool: - return blink::mojom::PolicyValueDataDataView::Tag::BOOL_VALUE; - case blink::mojom::PolicyValueType::kDecDouble: - return blink::mojom::PolicyValueDataDataView::Tag::DEC_DOUBLE_VALUE; - } - - NOTREACHED(); - return blink::mojom::PolicyValueDataDataView::Tag::NULL_VALUE; - } - static bool null_value(const blink::PolicyValue& value) { return false; } - static bool bool_value(const blink::PolicyValue& value) { - return value.BoolValue(); - } - static double dec_double_value(const blink::PolicyValue& value) { - return value.DoubleValue(); - } - static bool Read(blink::mojom::PolicyValueDataDataView in, - blink::PolicyValue* out); -}; - -template <> -struct BLINK_COMMON_EXPORT - StructTraits<blink::mojom::PolicyValueDataView, blink::PolicyValue> { - static const blink::PolicyValue& data(const blink::PolicyValue& value) { - return value; - } - static bool Read(blink::mojom::PolicyValueDataView data, - blink::PolicyValue* out); -}; - -template <> class BLINK_COMMON_EXPORT StructTraits<blink::mojom::ParsedFeaturePolicyDeclarationDataView, blink::ParsedFeaturePolicyDeclaration> {
diff --git a/third_party/blink/common/feature_policy/policy_value.typemap b/third_party/blink/common/feature_policy/policy_value.typemap new file mode 100644 index 0000000..ada28ca6 --- /dev/null +++ b/third_party/blink/common/feature_policy/policy_value.typemap
@@ -0,0 +1,12 @@ +# Copyright 2020 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +mojom = "//third_party/blink/public/mojom/feature_policy/policy_value.mojom" +public_headers = [] +traits_headers = + [ "//third_party/blink/common/feature_policy/policy_value_mojom_traits.h" ] +sources = [ + "//third_party/blink/common/feature_policy/policy_value_mojom_traits.cc", +] +type_mappings = [ "blink.mojom.PolicyValue=::blink::PolicyValue" ]
diff --git a/third_party/blink/common/feature_policy/policy_value_mojom_traits.cc b/third_party/blink/common/feature_policy/policy_value_mojom_traits.cc new file mode 100644 index 0000000..a1437a3 --- /dev/null +++ b/third_party/blink/common/feature_policy/policy_value_mojom_traits.cc
@@ -0,0 +1,33 @@ +// Copyright 2020 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "third_party/blink/common/feature_policy/policy_value_mojom_traits.h" + +namespace mojo { + +bool UnionTraits<blink::mojom::PolicyValueDataDataView, blink::PolicyValue>:: + Read(blink::mojom::PolicyValueDataDataView in, blink::PolicyValue* out) { + switch (in.tag()) { + case blink::mojom::PolicyValueDataDataView::Tag::BOOL_VALUE: + out->SetType(blink::mojom::PolicyValueType::kBool); + out->SetBoolValue(in.bool_value()); + return true; + case blink::mojom::PolicyValueDataDataView::Tag::DEC_DOUBLE_VALUE: + out->SetType(blink::mojom::PolicyValueType::kDecDouble); + out->SetDoubleValue(in.dec_double_value()); + return true; + case blink::mojom::PolicyValueDataDataView::Tag::NULL_VALUE: + break; + } + NOTREACHED(); + return false; +} + +bool StructTraits<blink::mojom::PolicyValueDataView, blink::PolicyValue>::Read( + blink::mojom::PolicyValueDataView data, + blink::PolicyValue* out) { + return data.ReadData(out); +} + +} // namespace mojo
diff --git a/third_party/blink/common/feature_policy/policy_value_mojom_traits.h b/third_party/blink/common/feature_policy/policy_value_mojom_traits.h new file mode 100644 index 0000000..2da326b --- /dev/null +++ b/third_party/blink/common/feature_policy/policy_value_mojom_traits.h
@@ -0,0 +1,55 @@ +// Copyright 2020 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef THIRD_PARTY_BLINK_COMMON_FEATURE_POLICY_POLICY_VALUE_MOJOM_TRAITS_H_ +#define THIRD_PARTY_BLINK_COMMON_FEATURE_POLICY_POLICY_VALUE_MOJOM_TRAITS_H_ + +#include "third_party/blink/public/common/common_export.h" +#include "third_party/blink/public/common/feature_policy/policy_value.h" +#include "third_party/blink/public/mojom/feature_policy/policy_value.mojom-shared.h" + +namespace mojo { + +template <> +struct BLINK_COMMON_EXPORT + UnionTraits<blink::mojom::PolicyValueDataDataView, blink::PolicyValue> { + public: + static blink::mojom::PolicyValueDataDataView::Tag GetTag( + const blink::PolicyValue& value) { + switch (value.Type()) { + case blink::mojom::PolicyValueType::kNull: + return blink::mojom::PolicyValueDataDataView::Tag::NULL_VALUE; + case blink::mojom::PolicyValueType::kBool: + return blink::mojom::PolicyValueDataDataView::Tag::BOOL_VALUE; + case blink::mojom::PolicyValueType::kDecDouble: + return blink::mojom::PolicyValueDataDataView::Tag::DEC_DOUBLE_VALUE; + } + + NOTREACHED(); + return blink::mojom::PolicyValueDataDataView::Tag::NULL_VALUE; + } + static bool null_value(const blink::PolicyValue& value) { return false; } + static bool bool_value(const blink::PolicyValue& value) { + return value.BoolValue(); + } + static double dec_double_value(const blink::PolicyValue& value) { + return value.DoubleValue(); + } + static bool Read(blink::mojom::PolicyValueDataDataView in, + blink::PolicyValue* out); +}; + +template <> +struct BLINK_COMMON_EXPORT + StructTraits<blink::mojom::PolicyValueDataView, blink::PolicyValue> { + static const blink::PolicyValue& data(const blink::PolicyValue& value) { + return value; + } + static bool Read(blink::mojom::PolicyValueDataView data, + blink::PolicyValue* out); +}; + +} // namespace mojo + +#endif // THIRD_PARTY_BLINK_COMMON_FEATURE_POLICY_POLICY_VALUE_MOJOM_TRAITS_H_
diff --git a/third_party/blink/common/features.cc b/third_party/blink/common/features.cc index c1e581d3..c668600 100644 --- a/third_party/blink/common/features.cc +++ b/third_party/blink/common/features.cc
@@ -232,6 +232,11 @@ const base::Feature kAllowSyncXHRInPageDismissal{ "AllowSyncXHRInPageDismissal", base::FEATURE_DISABLED_BY_DEFAULT}; +// Font enumeration and table access. https://crbug.com/535764 and +// https://crbug.com/982054. +const base::Feature kFontAccess{"FontAccess", + base::FEATURE_DISABLED_BY_DEFAULT}; + // Allows Web Components v0 to be re-enabled. const base::Feature kWebComponentsV0Enabled{"WebComponentsV0Enabled", base::FEATURE_DISABLED_BY_DEFAULT};
diff --git a/third_party/blink/common/messaging/message_port_descriptor.cc b/third_party/blink/common/messaging/message_port_descriptor.cc index 445dce4..5097ab4 100644 --- a/third_party/blink/common/messaging/message_port_descriptor.cc +++ b/third_party/blink/common/messaging/message_port_descriptor.cc
@@ -70,6 +70,12 @@ return *this; } +MojoHandle MessagePortDescriptor::GetMojoHandleForTesting() const { + if (!handle_.get()) + return MOJO_HANDLE_INVALID; + return handle_.get().value(); +} + bool MessagePortDescriptor::IsValid() const { // |handle_| can be valid or invalid, depending on if we're entangled or // not. But everything else should be consistent. @@ -122,7 +128,7 @@ } void MessagePortDescriptor::Init(mojo::ScopedMessagePipeHandle handle, - base::UnguessableToken id, + const base::UnguessableToken& id, uint64_t sequence_number) { // Init is only called by deserialization code and thus should only be called // on a default initialized descriptor. @@ -170,6 +176,13 @@ return std::move(handle_); } +mojo::ScopedMessagePipeHandle +MessagePortDescriptor::TakeHandleToEntangleWithEmbedder() { + DCHECK(handle_.is_valid()); + NotifyAttachedToEmbedder(); + return std::move(handle_); +} + void MessagePortDescriptor::GiveDisentangledHandle( mojo::ScopedMessagePipeHandle handle) { // We should only ever be given back the same handle that was taken from us. @@ -181,6 +194,12 @@ NotifyDetached(); } +// static +MessagePortDescriptor::InstrumentationDelegate* +MessagePortDescriptor::GetInstrumentationDelegate() { + return g_instrumentation_delegate; +} + MessagePortDescriptor::MessagePortDescriptor( mojo::ScopedMessagePipeHandle handle) : handle_(std::move(handle)), @@ -200,6 +219,14 @@ } } +void MessagePortDescriptor::NotifyAttachedToEmbedder() { + DCHECK(!id_.is_empty()); + if (g_instrumentation_delegate) { + g_instrumentation_delegate->NotifyMessagePortAttachedToEmbedder( + id_, sequence_number_++); + } +} + void MessagePortDescriptor::NotifyDetached() { DCHECK(!id_.is_empty()); if (g_instrumentation_delegate) { @@ -223,8 +250,10 @@ // Notify the instrumentation that these ports are newly created and peers of // each other. - if (g_instrumentation_delegate) - g_instrumentation_delegate->NotifyMessagePortPairCreated(*this); + if (g_instrumentation_delegate) { + g_instrumentation_delegate->NotifyMessagePortPairCreated(port0_.id(), + port1_.id()); + } } MessagePortDescriptorPair::~MessagePortDescriptorPair() = default;
diff --git a/third_party/blink/common/messaging/message_port_descriptor_unittest.cc b/third_party/blink/common/messaging/message_port_descriptor_unittest.cc index 02f3d54ed..7446735 100644 --- a/third_party/blink/common/messaging/message_port_descriptor_unittest.cc +++ b/third_party/blink/common/messaging/message_port_descriptor_unittest.cc
@@ -23,14 +23,19 @@ MessagePortDescriptor::SetInstrumentationDelegate(nullptr); } - MOCK_METHOD1(NotifyMessagePortPairCreated, - void(const MessagePortDescriptorPair& pair)); + MOCK_METHOD2(NotifyMessagePortPairCreated, + void(const base::UnguessableToken& port0_id, + const base::UnguessableToken& port1_id)); MOCK_METHOD3(NotifyMessagePortAttached, void(const base::UnguessableToken& port_id, uint64_t sequence_number, const base::UnguessableToken& execution_context_id)); + MOCK_METHOD2(NotifyMessagePortAttachedToEmbedder, + void(const base::UnguessableToken& port_id, + uint64_t sequence_number)); + MOCK_METHOD2(NotifyMessagePortDetached, void(const base::UnguessableToken& port_id, uint64_t sequence_number)); @@ -95,12 +100,11 @@ } created_data; // Create a message handle descriptor pair and expect a notification. - EXPECT_CALL(delegate, NotifyMessagePortPairCreated(_)) - .WillOnce(Invoke([&created_data](const MessagePortDescriptorPair& pair) { - created_data.token0 = pair.port0().id(); - created_data.token1 = pair.port1().id(); - EXPECT_EQ(1u, pair.port0().sequence_number()); - EXPECT_EQ(1u, pair.port1().sequence_number()); + EXPECT_CALL(delegate, NotifyMessagePortPairCreated(_, _)) + .WillOnce(Invoke([&created_data](const base::UnguessableToken& port0_id, + const base::UnguessableToken& port1_id) { + created_data.token0 = port0_id; + created_data.token1 = port1_id; })); MessagePortDescriptorPair pair;
diff --git a/third_party/blink/common/typemaps.gni b/third_party/blink/common/typemaps.gni index b4bbb0de..0c2e2699 100644 --- a/third_party/blink/common/typemaps.gni +++ b/third_party/blink/common/typemaps.gni
@@ -5,6 +5,7 @@ typemaps = [ "//third_party/blink/common/bluetooth/web_bluetooth_device_id.typemap", "//third_party/blink/common/feature_policy/feature_policy.typemap", + "//third_party/blink/common/feature_policy/policy_value.typemap", "//third_party/blink/common/frame/frame_policy.typemap", "//third_party/blink/common/messaging/cloneable_message.typemap", "//third_party/blink/common/messaging/transferable_message.typemap",
diff --git a/third_party/blink/public/common/feature_policy/document_policy.h b/third_party/blink/public/common/feature_policy/document_policy.h index 8c61b31c..8e84cea 100644 --- a/third_party/blink/public/common/feature_policy/document_policy.h +++ b/third_party/blink/public/common/feature_policy/document_policy.h
@@ -68,8 +68,8 @@ public: using FeatureState = std::map<mojom::FeaturePolicyFeature, PolicyValue>; - static std::unique_ptr<DocumentPolicy> CreateWithRequiredPolicy( - const FeatureState& required_policy); + static std::unique_ptr<DocumentPolicy> CreateWithHeaderPolicy( + const FeatureState& header_policy); // Returns true if the feature is unrestricted (has its default value for the // platform) @@ -93,15 +93,18 @@ // (such as sandbox policies). FeatureState GetFeatureState() const; - // Returns true if this document policy is compatible with the incoming - // document policy. - bool IsPolicyCompatible(const FeatureState& incoming_policy); + // Returns true if the incoming policy is compatible with the given required + // policy, i.e. incoming policy is at least as strict as required policy. + static bool IsPolicyCompatible(const FeatureState& required_policy, + const FeatureState& incoming_policy); // Returns the list of features which can be controlled by Document Policy, // and their default values. static const FeatureState& GetFeatureDefaults(); // Serialize document policy according to http_structured_header. + // returns base::nullopt when http structured header serializer encounters + // problems, e.g. double value out of the range supported. static base::Optional<std::string> Serialize(const FeatureState& policy); // Parse document policy header to FeatureState @@ -115,8 +118,8 @@ friend class DocumentPolicyTest; DocumentPolicy(const FeatureState& feature_list); - static std::unique_ptr<DocumentPolicy> CreateWithRequiredPolicy( - const FeatureState& required_policy, + static std::unique_ptr<DocumentPolicy> CreateWithHeaderPolicy( + const FeatureState& header_policy, const FeatureState& defaults); void UpdateFeatureState(const FeatureState& feature_state);
diff --git a/third_party/blink/public/common/features.h b/third_party/blink/public/common/features.h index 5b552305..a9858ed 100644 --- a/third_party/blink/public/common/features.h +++ b/third_party/blink/public/common/features.h
@@ -63,6 +63,7 @@ BLINK_COMMON_EXPORT extern const base::Feature kStorageAccessAPI; BLINK_COMMON_EXPORT extern const base::Feature kTextFragmentAnchor; BLINK_COMMON_EXPORT extern const base::Feature kWasmCodeCache; +BLINK_COMMON_EXPORT extern const base::Feature kFontAccess; BLINK_COMMON_EXPORT extern const base::Feature kNativeFileSystemAPI; BLINK_COMMON_EXPORT extern const base::Feature kFileHandlingAPI; BLINK_COMMON_EXPORT extern const base::Feature kAllowSyncXHRInPageDismissal;
diff --git a/third_party/blink/public/common/messaging/message_port_descriptor.h b/third_party/blink/public/common/messaging/message_port_descriptor.h index 7c238ec..51c067e 100644 --- a/third_party/blink/public/common/messaging/message_port_descriptor.h +++ b/third_party/blink/public/common/messaging/message_port_descriptor.h
@@ -9,6 +9,10 @@ #include "mojo/public/cpp/system/message_pipe.h" #include "third_party/blink/public/common/common_export.h" +namespace content { +class MessagePort; +} + namespace blink { // Defines a message port descriptor, which is a mojo::MessagePipeHandle and @@ -69,6 +73,10 @@ const base::UnguessableToken& id() const { return id_; } uint64_t sequence_number() const { return sequence_number_; } + // Helper accessor for getting the underlying Mojo handle. Makes tests a + // little easier to write. + MojoHandle GetMojoHandleForTesting() const; + // Returns true if this is a valid descriptor. bool IsValid() const; @@ -82,16 +90,18 @@ void Reset(); protected: + friend class content::MessagePort; friend class MessagePort; - friend class MessagePortSerializationAccess; friend class MessagePortDescriptorTestHelper; + friend class MessagePortJavaAccess; + friend class MessagePortSerializationAccess; // These are only meant to be used for serialization, and as such the values // should always be non-default initialized when they are called. Intended for // use via MessagePortSerializationAccess. These should only be called for // descriptors that actually host non-default values. void Init(mojo::ScopedMessagePipeHandle handle, - base::UnguessableToken id, + const base::UnguessableToken& id, uint64_t sequence_number); mojo::ScopedMessagePipeHandle TakeHandle(); base::UnguessableToken TakeId(); @@ -107,8 +117,14 @@ // caller. See MessagePort::Entangle and MessagePort::Disentangle. mojo::ScopedMessagePipeHandle TakeHandleToEntangle( const base::UnguessableToken& execution_context_id); + // Intended for use by Fuchsia's MessagePort integration, or other similar + // embedders. + mojo::ScopedMessagePipeHandle TakeHandleToEntangleWithEmbedder(); void GiveDisentangledHandle(mojo::ScopedMessagePipeHandle handle); + // Exposed for access by the Java MessagePortDescriptor counterpart. + static InstrumentationDelegate* GetInstrumentationDelegate(); + private: // For access to NotifyPeer and the following constructor. friend class MessagePortDescriptorPair; @@ -121,6 +137,7 @@ // Helper functions for forwarding notifications to the // InstrumentationDelegate if it exists. void NotifyAttached(const base::UnguessableToken& execution_context_id); + void NotifyAttachedToEmbedder(); void NotifyDetached(); void NotifyDestroyed(); @@ -194,7 +211,8 @@ // Notifies the instrumentation that a pair of matching ports was created. virtual void NotifyMessagePortPairCreated( - const MessagePortDescriptorPair& pair) = 0; + const base::UnguessableToken& port0_id, + const base::UnguessableToken& port1_id) = 0; // Notifies the instrumentation that a handle has been attached to an // execution context. @@ -203,6 +221,12 @@ uint64_t sequence_number, const base::UnguessableToken& execution_context_id) = 0; + // Notifies the instrumentation that a handle has been attached to an + // embedder. + virtual void NotifyMessagePortAttachedToEmbedder( + const base::UnguessableToken& port_id, + uint64_t sequence_number) = 0; + // Notifies the instrumentation that a handle has been detached from an // execution context. virtual void NotifyMessagePortDetached(const base::UnguessableToken& port_id,
diff --git a/third_party/blink/public/mojom/frame/frame.mojom b/third_party/blink/public/mojom/frame/frame.mojom index 07a928e..a9bbe7b 100644 --- a/third_party/blink/public/mojom/frame/frame.mojom +++ b/third_party/blink/public/mojom/frame/frame.mojom
@@ -121,6 +121,11 @@ // process. BubbleLogicalScrollInParentFrame(ScrollDirection direction, ui.mojom.ScrollGranularity granularity); + + // Indicates that another page has accessed the DOM of the initial empty + // document of a main frame. After this, it is no longer safe to show a + // pending navigation's URL, because a URL spoof is possible. + DidAccessInitialDocument(); }; // Implemented in Blink, this interface defines frame-specific methods that will
diff --git a/third_party/blink/public/web/web_local_frame.h b/third_party/blink/public/web/web_local_frame.h index 15217b2..461e157 100644 --- a/third_party/blink/public/web/web_local_frame.h +++ b/third_party/blink/public/web/web_local_frame.h
@@ -151,6 +151,11 @@ // Runs unload handlers for this frame. virtual void DispatchUnloadEvent() = 0; + // Indicates that the DOM of the initial empty document has been + // accessed via javascript. The BeforeUnload event will not be dispatched + // if the initial document has not been accessed. + virtual bool HasAccessedInitialDocument() = 0; + // Basic properties --------------------------------------------------- // The urls of the given combination types of favicon (if any) specified by
diff --git a/third_party/blink/public/web/web_local_frame_client.h b/third_party/blink/public/web/web_local_frame_client.h index 6da1ddc6..d055ae43 100644 --- a/third_party/blink/public/web/web_local_frame_client.h +++ b/third_party/blink/public/web/web_local_frame_client.h
@@ -216,11 +216,6 @@ // General notifications ----------------------------------------------- - // Indicates that another page has accessed the DOM of the initial empty - // document of a main frame. After this, it is no longer safe to show a - // pending navigation's URL, because a URL spoof is possible. - virtual void DidAccessInitialDocument() {} - // Request the creation of a new child frame. Embedders may return nullptr // to prevent the new child frame from being attached. Otherwise, embedders // should create a new WebLocalFrame, insert it into the frame tree, and
diff --git a/third_party/blink/renderer/core/css/parser/css.proto b/third_party/blink/renderer/core/css/parser/css.proto index 8f3dcbf..49a8a7b 100644 --- a/third_party/blink/renderer/core/css/parser/css.proto +++ b/third_party/blink/renderer/core/css/parser/css.proto
@@ -952,501 +952,496 @@ _WEBKIT_MASK_POSITION_X = 65; _WEBKIT_MASK_POSITION_Y = 66; OUTLINE_STYLE = 67; - _WEBKIT_MARGIN_BOTTOM_COLLAPSE = 68; - COLOR_INTERPOLATION_FILTERS = 69; - FONT_VARIANT = 70; - _WEBKIT_ANIMATION_FILL_MODE = 71; - BORDER_RIGHT = 72; - VISIBILITY = 73; - TRANSFORM_BOX = 74; - FONT_VARIANT_CAPS = 75; - _EPUB_TEXT_EMPHASIS_COLOR = 76; - _WEBKIT_BORDER_BEFORE_STYLE = 77; - RESIZE = 78; - _WEBKIT_RTL_ORDERING = 79; - _WEBKIT_BOX_ORDINAL_GROUP = 80; - PAINT_ORDER = 81; - STROKE_LINECAP = 82; - ANIMATION_DIRECTION = 83; - _WEBKIT_FONT_FEATURE_SETTINGS = 84; - BORDER_TOP_LEFT_RADIUS = 85; - _WEBKIT_COLUMN_WIDTH = 86; - _WEBKIT_BOX_ALIGN = 87; - _WEBKIT_PADDING_AFTER = 88; - COLUMN_WIDTH = 89; - LIST_STYLE = 90; - _WEBKIT_MASK_REPEAT_Y = 91; - _WEBKIT_MARGIN_BEFORE_COLLAPSE = 92; - STROKE = 93; - TEXT_DECORATION_LINE = 94; - _WEBKIT_BACKGROUND_SIZE = 95; - _WEBKIT_MASK_REPEAT_X = 96; - PADDING_BOTTOM = 97; - FONT_STYLE = 98; - _WEBKIT_TRANSITION_DELAY = 99; - BACKGROUND_REPEAT = 100; - FLEX_BASIS = 101; - BORDER_IMAGE_SLICE = 102; - _WEBKIT_TRANSFORM_ORIGIN = 103; - SCROLL_BOUNDARY_BEHAVIOR_X = 104; - SCROLL_BOUNDARY_BEHAVIOR_Y = 105; - VECTOR_EFFECT = 106; - _WEBKIT_ANIMATION_TIMING_FUNCTION = 107; - _WEBKIT_BORDER_AFTER_STYLE = 108; - _WEBKIT_PERSPECTIVE_ORIGIN_X = 109; - _WEBKIT_PERSPECTIVE_ORIGIN_Y = 110; - INLINE_SIZE = 111; - OUTLINE = 112; - FONT_DISPLAY = 113; - _WEBKIT_BORDER_BEFORE = 114; - BORDER_IMAGE_SOURCE = 115; - TRANSITION_DURATION = 116; - SCROLL_PADDING_TOP = 117; - ORDER = 118; - _WEBKIT_BOX_ORIENT = 119; - COUNTER_RESET = 120; - COLOR_RENDERING = 121; - FLEX_DIRECTION = 122; - _WEBKIT_TEXT_STROKE_WIDTH = 123; - FONT_VARIANT_NUMERIC = 124; - SCROLL_MARGIN_BLOCK_END = 125; - MIN_HEIGHT = 126; - SCROLL_PADDING_INLINE_START = 127; - _WEBKIT_MASK_BOX_IMAGE = 128; - LEFT = 129; - _WEBKIT_MASK = 130; - _WEBKIT_BORDER_AFTER_WIDTH = 131; - STROKE_WIDTH = 132; - _WEBKIT_BOX_DECORATION_BREAK = 133; - _WEBKIT_MASK_POSITION = 134; - BACKGROUND_ORIGIN = 135; - _WEBKIT_BORDER_START_COLOR = 136; - FONT_STRETCH = 137; - _WEBKIT_BACKGROUND_CLIP = 138; - SCROLL_MARGIN_TOP = 139; - _WEBKIT_BORDER_HORIZONTAL_SPACING = 140; - BORDER_RADIUS = 141; - FLEX = 142; - TEXT_INDENT = 143; - HYPHENS = 144; - COLUMN_RULE_WIDTH = 145; - _WEBKIT_MARGIN_AFTER = 146; - _EPUB_CAPTION_SIDE = 147; - BREAK_AFTER = 148; - TEXT_TRANSFORM = 149; - TOUCH_ACTION = 150; - FONT_SIZE = 151; - _WEBKIT_ANIMATION_NAME = 152; - SCROLL_PADDING_INLINE = 153; - OFFSET_PATH = 154; - SCROLL_MARGIN = 155; - PADDING_TOP = 156; - SCROLL_SNAP_ALIGN = 157; - _WEBKIT_TEXT_COMBINE = 158; - _WEBKIT_FLEX_SHRINK = 159; - RX = 160; - RY = 161; - CONTENT = 162; - PADDING_RIGHT = 163; - _WEBKIT_TRANSFORM = 164; - MARKER_MID = 165; - _WEBKIT_MIN_LOGICAL_WIDTH = 166; - CLIP_RULE = 167; - FONT_FAMILY = 168; - SCROLL_SNAP_TYPE = 169; - TEXT_DECORATION_SKIP_INK = 170; - TRANSITION = 171; - FILTER = 172; - BORDER_RIGHT_WIDTH = 173; - _WEBKIT_FLEX_DIRECTION = 174; - _WEBKIT_MASK_COMPOSITE = 175; - MIX_BLEND_MODE = 176; - COLOR_INTERPOLATION = 177; - BORDER_TOP_STYLE = 178; - FILL_OPACITY = 179; - MARKER_START = 180; - BORDER_BOTTOM_WIDTH = 181; - _WEBKIT_TEXT_EMPHASIS = 182; - GRID_AREA = 183; - SIZE = 184; - BACKGROUND_CLIP = 185; - _WEBKIT_TEXT_FILL_COLOR = 186; - TOP = 187; - _WEBKIT_BOX_REFLECT = 188; - BORDER_WIDTH = 189; - OFFSET_ANCHOR = 190; - MAX_INLINE_SIZE = 191; - _WEBKIT_COLUMN_RULE_STYLE = 192; - _WEBKIT_COLUMN_COUNT = 193; - ANIMATION_PLAY_STATE = 194; - PADDING = 195; - DOMINANT_BASELINE = 196; - BACKGROUND_ATTACHMENT = 197; - _WEBKIT_BOX_SIZING = 198; - _WEBKIT_BOX_FLEX = 199; - TEXT_ORIENTATION = 200; - BACKGROUND_POSITION = 201; - _WEBKIT_BORDER_START_WIDTH = 202; - _EPUB_TEXT_EMPHASIS_STYLE = 203; - ISOLATION = 204; - _EPUB_TEXT_ORIENTATION = 205; - _WEBKIT_BORDER_BOTTOM_RIGHT_RADIUS = 206; - R = 207; - BORDER_LEFT_WIDTH = 208; - GRID_COLUMN_END = 209; - BACKGROUND_BLEND_MODE = 210; - VERTICAL_ALIGN = 211; - CLIP = 212; - GRID_AUTO_ROWS = 213; - OFFSET_ROTATE = 214; - MARGIN_LEFT = 215; - ANIMATION_NAME = 216; - TEXT_DECORATION = 217; - BORDER = 218; - _WEBKIT_TRANSITION_TIMING_FUNCTION = 219; - MARGIN_BOTTOM = 220; - UNICODE_RANGE = 221; - ANIMATION = 222; - _WEBKIT_SHAPE_MARGIN = 223; - FONT_WEIGHT = 224; - SHAPE_MARGIN = 225; - MASK_TYPE = 226; - SCROLL_PADDING = 227; - MIN_INLINE_SIZE = 228; - OBJECT_POSITION = 229; - PAGE_BREAK_AFTER = 230; - _WEBKIT_MASK_CLIP = 231; - WHITE_SPACE = 232; - _WEBKIT_BORDER_AFTER_COLOR = 233; - _WEBKIT_MAX_LOGICAL_WIDTH = 234; - _WEBKIT_BORDER_BEFORE_COLOR = 235; - FONT_KERNING = 236; - _EPUB_WORD_BREAK = 237; - CLEAR = 238; - ANIMATION_TIMING_FUNCTION = 239; - _WEBKIT_BORDER_RADIUS = 240; - SCROLL_PADDING_RIGHT = 241; - _WEBKIT_TEXT_DECORATIONS_IN_EFFECT = 242; - _WEBKIT_ANIMATION_DIRECTION = 243; - JUSTIFY_SELF = 244; - TRANSITION_TIMING_FUNCTION = 245; - SCROLL_SNAP_STOP = 246; - COUNTER_INCREMENT = 247; - _WEBKIT_TRANSFORM_STYLE = 248; - GRID_AUTO_COLUMNS = 249; - _WEBKIT_ALIGN_CONTENT = 250; - FONT = 251; - FLEX_WRAP = 252; - GRID_ROW_START = 253; - LIST_STYLE_IMAGE = 254; - _WEBKIT_TAP_HIGHLIGHT_COLOR = 255; - _WEBKIT_TEXT_EMPHASIS_COLOR = 256; - BORDER_LEFT = 257; - _WEBKIT_BORDER_END_COLOR = 258; - COLUMNS = 259; - BOX_SHADOW = 260; - _WEBKIT_FLEX_WRAP = 261; - ALIGN_SELF = 262; - BORDER_BOTTOM = 263; - BORDER_SPACING = 264; - _WEBKIT_COLUMN_SPAN = 265; - GRID_ROW_END = 266; - _WEBKIT_BORDER_END = 267; - PERSPECTIVE_ORIGIN = 268; - PAGE_BREAK_INSIDE = 269; - ORPHANS = 270; - _WEBKIT_BORDER_START_STYLE = 271; - SCROLL_BEHAVIOR = 272; - COLUMN_SPAN = 273; - _WEBKIT_HYPHENATE_CHARACTER = 274; - COLUMN_FILL = 275; - TAB_SIZE = 276; - CONTAIN = 277; - X = 278; - GRID_ROW = 279; - BORDER_BOTTOM_RIGHT_RADIUS = 280; - LINE_HEIGHT = 281; - STROKE_LINEJOIN = 282; - TEXT_ALIGN_LAST = 283; - OFFSET_POSITION = 284; - WORD_SPACING = 285; - TRANSFORM_STYLE = 286; - _WEBKIT_APP_REGION = 287; - _WEBKIT_BORDER_END_STYLE = 288; - _WEBKIT_TRANSFORM_ORIGIN_Z = 289; - _WEBKIT_TRANSFORM_ORIGIN_X = 290; - _WEBKIT_TRANSFORM_ORIGIN_Y = 291; - BACKGROUND_REPEAT_X = 292; - BACKGROUND_REPEAT_Y = 293; - BORDER_BOTTOM_COLOR = 294; - _WEBKIT_RUBY_POSITION = 295; - _WEBKIT_LOGICAL_WIDTH = 296; - TEXT_JUSTIFY = 297; - SCROLL_MARGIN_INLINE_START = 298; - CAPTION_SIDE = 299; - MASK_SOURCE_TYPE = 300; - _WEBKIT_MASK_BOX_IMAGE_SLICE = 301; - _WEBKIT_BORDER_IMAGE = 302; - TEXT_SIZE_ADJUST = 303; - _WEBKIT_TEXT_SECURITY = 304; - _EPUB_WRITING_MODE = 305; - GRID_TEMPLATE = 306; - _WEBKIT_MASK_BOX_IMAGE_REPEAT = 307; - _WEBKIT_MASK_REPEAT = 308; - _WEBKIT_JUSTIFY_CONTENT = 309; - BASELINE_SHIFT = 310; - BORDER_IMAGE = 311; - TEXT_DECORATION_COLOR = 312; - COLOR = 313; - SHAPE_IMAGE_THRESHOLD = 314; - SHAPE_RENDERING = 315; - CY = 316; - CX = 317; - _WEBKIT_USER_MODIFY = 318; - OFFSET_DISTANCE = 319; - _WEBKIT_BORDER_BOTTOM_LEFT_RADIUS = 320; - SPEAK = 321; - BORDER_BOTTOM_LEFT_RADIUS = 322; - _WEBKIT_COLUMN_BREAK_AFTER = 323; - _WEBKIT_FONT_SMOOTHING = 324; - _WEBKIT_MAX_LOGICAL_HEIGHT = 325; - _WEBKIT_LINE_BREAK = 326; - FILL_RULE = 327; - _WEBKIT_MARGIN_START = 328; - MIN_WIDTH = 329; - _EPUB_TEXT_COMBINE = 330; - BREAK_BEFORE = 331; - CARET_COLOR = 332; - EMPTY_CELLS = 333; - DIRECTION = 334; - CLIP_PATH = 335; - JUSTIFY_CONTENT = 336; - SCROLL_PADDING_BLOCK_END = 337; - Z_INDEX = 338; - BACKGROUND_POSITION_Y = 339; - TEXT_DECORATION_STYLE = 340; - GRID_TEMPLATE_AREAS = 341; - _WEBKIT_MIN_LOGICAL_HEIGHT = 342; - FONT_SIZE_ADJUST = 343; - SCROLL_PADDING_BLOCK = 344; - OVERFLOW_ANCHOR = 345; - CURSOR = 346; - SCROLL_MARGIN_BLOCK_START = 347; - _WEBKIT_MASK_BOX_IMAGE_SOURCE = 348; - MARGIN = 349; - _WEBKIT_ANIMATION = 350; - LETTER_SPACING = 351; - ORIENTATION = 352; - WILL_CHANGE = 353; - _WEBKIT_HIGHLIGHT = 354; - TRANSFORM_ORIGIN = 355; - FONT_VARIANT_LIGATURES = 356; - _WEBKIT_ANIMATION_DURATION = 357; - _WEBKIT_MASK_ORIGIN = 358; - _WEBKIT_CLIP_PATH = 359; - WORD_BREAK = 360; - TABLE_LAYOUT = 361; - TEXT_OVERFLOW = 362; - _WEBKIT_LOCALE = 363; - _WEBKIT_FLEX = 364; - GRID_AUTO_FLOW = 365; - BORDER_TOP_RIGHT_RADIUS = 366; - BORDER_IMAGE_OUTSET = 367; - PLACE_ITEMS = 368; - BORDER_LEFT_COLOR = 369; - FONT_VARIATION_SETTINGS = 370; - BORDER_RIGHT_COLOR = 371; - MIN_ZOOM = 372; - SCROLL_MARGIN_INLINE = 373; - _WEBKIT_BORDER_BEFORE_WIDTH = 374; - BACKFACE_VISIBILITY = 375; - BACKGROUND_IMAGE = 376; - _WEBKIT_TRANSITION_PROPERTY = 377; - WRITING_MODE = 378; - STROKE_OPACITY = 379; - _WEBKIT_MARGIN_COLLAPSE = 380; - BOX_SIZING = 381; - MARGIN_TOP = 382; - COLUMN_RULE_COLOR = 383; - Y = 384; - POSITION = 385; - SCROLL_MARGIN_BOTTOM = 386; - LIST_STYLE_POSITION = 387; - _WEBKIT_BOX_PACK = 388; - SCROLL_PADDING_INLINE_END = 389; - QUOTES = 390; - BORDER_TOP = 391; - SCROLL_PADDING_LEFT = 392; - _WEBKIT_TRANSITION = 393; - _WEBKIT_COLUMN_BREAK_BEFORE = 394; - LIGHTING_COLOR = 395; - BACKGROUND_SIZE = 396; - _WEBKIT_PADDING_BEFORE = 397; - _WEBKIT_BORDER_TOP_LEFT_RADIUS = 398; - FLOOD_OPACITY = 399; - LINE_HEIGHT_STEP = 400; - _WEBKIT_MASK_SIZE = 401; - TEXT_ALIGN = 402; - _WEBKIT_FILTER = 403; - WORD_WRAP = 404; - MAX_ZOOM = 405; - GRID = 406; - BACKGROUND = 407; - HEIGHT = 408; - GRID_COLUMN_START = 409; - ANIMATION_FILL_MODE = 410; - ROTATE = 411; - MARKER_END = 412; - D = 413; - JUSTIFY_ITEMS = 414; - ZOOM = 415; - SCROLL_PADDING_BLOCK_START = 416; - _WEBKIT_MARGIN_TOP_COLLAPSE = 417; - PAGE = 418; - RIGHT = 419; - USER_SELECT = 420; - MARGIN_RIGHT = 421; - MARKER = 422; - LINE_BREAK = 423; - _WEBKIT_MARGIN_END = 424; - _WEBKIT_TRANSITION_DURATION = 425; - _WEBKIT_WRITING_MODE = 426; - BORDER_TOP_WIDTH = 427; - BOTTOM = 428; - PLACE_CONTENT = 429; - _WEBKIT_SHAPE_IMAGE_THRESHOLD = 430; - _WEBKIT_USER_DRAG = 431; - _WEBKIT_BORDER_VERTICAL_SPACING = 432; - _WEBKIT_COLUMN_GAP = 433; - _WEBKIT_OPACITY = 434; - BACKGROUND_COLOR = 435; - COLUMN_GAP = 436; - SHAPE_OUTSIDE = 437; - _WEBKIT_PADDING_END = 438; - _WEBKIT_BORDER_START = 439; - ANIMATION_DELAY = 440; - UNICODE_BIDI = 441; - TEXT_SHADOW = 442; - _WEBKIT_BOX_DIRECTION = 443; - IMAGE_RENDERING = 444; - SRC = 445; - GAP = 446; - GRID_GAP = 447; - POINTER_EVENTS = 448; - BORDER_IMAGE_WIDTH = 449; - MIN_BLOCK_SIZE = 450; - TRANSITION_PROPERTY = 451; - _WEBKIT_MASK_IMAGE = 452; - FLOAT = 453; - MAX_HEIGHT = 454; - OUTLINE_OFFSET = 455; - _WEBKIT_BOX_SHADOW = 456; - OVERFLOW_WRAP = 457; - BLOCK_SIZE = 458; - TRANSFORM = 459; - PLACE_SELF = 460; - WIDTH = 461; - STROKE_MITERLIMIT = 462; - STOP_OPACITY = 463; - BORDER_TOP_COLOR = 464; - TRANSLATE = 465; - OBJECT_FIT = 466; - _WEBKIT_MASK_BOX_IMAGE_WIDTH = 467; - _WEBKIT_BACKGROUND_ORIGIN = 468; - _WEBKIT_ALIGN_ITEMS = 469; - TRANSITION_DELAY = 470; - SCROLL_MARGIN_LEFT = 471; - BORDER_STYLE = 472; - ANIMATION_ITERATION_COUNT = 473; - _WEBKIT_MARGIN_AFTER_COLLAPSE = 474; + COLOR_INTERPOLATION_FILTERS = 68; + FONT_VARIANT = 69; + _WEBKIT_ANIMATION_FILL_MODE = 70; + BORDER_RIGHT = 71; + VISIBILITY = 72; + TRANSFORM_BOX = 73; + FONT_VARIANT_CAPS = 74; + _EPUB_TEXT_EMPHASIS_COLOR = 75; + _WEBKIT_BORDER_BEFORE_STYLE = 76; + RESIZE = 77; + _WEBKIT_RTL_ORDERING = 78; + _WEBKIT_BOX_ORDINAL_GROUP = 79; + PAINT_ORDER = 80; + STROKE_LINECAP = 81; + ANIMATION_DIRECTION = 82; + _WEBKIT_FONT_FEATURE_SETTINGS = 83; + BORDER_TOP_LEFT_RADIUS = 84; + _WEBKIT_COLUMN_WIDTH = 85; + _WEBKIT_BOX_ALIGN = 86; + _WEBKIT_PADDING_AFTER = 87; + COLUMN_WIDTH = 88; + LIST_STYLE = 89; + _WEBKIT_MASK_REPEAT_Y = 90; + STROKE = 91; + TEXT_DECORATION_LINE = 92; + _WEBKIT_BACKGROUND_SIZE = 93; + _WEBKIT_MASK_REPEAT_X = 94; + PADDING_BOTTOM = 95; + FONT_STYLE = 96; + _WEBKIT_TRANSITION_DELAY = 97; + BACKGROUND_REPEAT = 98; + FLEX_BASIS = 99; + BORDER_IMAGE_SLICE = 100; + _WEBKIT_TRANSFORM_ORIGIN = 101; + SCROLL_BOUNDARY_BEHAVIOR_X = 102; + SCROLL_BOUNDARY_BEHAVIOR_Y = 103; + VECTOR_EFFECT = 104; + _WEBKIT_ANIMATION_TIMING_FUNCTION = 105; + _WEBKIT_BORDER_AFTER_STYLE = 106; + _WEBKIT_PERSPECTIVE_ORIGIN_X = 107; + _WEBKIT_PERSPECTIVE_ORIGIN_Y = 108; + INLINE_SIZE = 109; + OUTLINE = 110; + FONT_DISPLAY = 111; + _WEBKIT_BORDER_BEFORE = 112; + BORDER_IMAGE_SOURCE = 113; + TRANSITION_DURATION = 114; + SCROLL_PADDING_TOP = 115; + ORDER = 116; + _WEBKIT_BOX_ORIENT = 117; + COUNTER_RESET = 118; + COLOR_RENDERING = 119; + FLEX_DIRECTION = 120; + _WEBKIT_TEXT_STROKE_WIDTH = 121; + FONT_VARIANT_NUMERIC = 122; + SCROLL_MARGIN_BLOCK_END = 123; + MIN_HEIGHT = 124; + SCROLL_PADDING_INLINE_START = 125; + _WEBKIT_MASK_BOX_IMAGE = 126; + LEFT = 127; + _WEBKIT_MASK = 128; + _WEBKIT_BORDER_AFTER_WIDTH = 129; + STROKE_WIDTH = 130; + _WEBKIT_BOX_DECORATION_BREAK = 131; + _WEBKIT_MASK_POSITION = 132; + BACKGROUND_ORIGIN = 133; + _WEBKIT_BORDER_START_COLOR = 134; + FONT_STRETCH = 135; + _WEBKIT_BACKGROUND_CLIP = 136; + SCROLL_MARGIN_TOP = 137; + _WEBKIT_BORDER_HORIZONTAL_SPACING = 138; + BORDER_RADIUS = 139; + FLEX = 140; + TEXT_INDENT = 141; + HYPHENS = 142; + COLUMN_RULE_WIDTH = 143; + _WEBKIT_MARGIN_AFTER = 144; + _EPUB_CAPTION_SIDE = 145; + BREAK_AFTER = 146; + TEXT_TRANSFORM = 147; + TOUCH_ACTION = 148; + FONT_SIZE = 149; + _WEBKIT_ANIMATION_NAME = 150; + SCROLL_PADDING_INLINE = 151; + OFFSET_PATH = 152; + SCROLL_MARGIN = 153; + PADDING_TOP = 154; + SCROLL_SNAP_ALIGN = 155; + _WEBKIT_TEXT_COMBINE = 156; + _WEBKIT_FLEX_SHRINK = 157; + RX = 158; + RY = 159; + CONTENT = 160; + PADDING_RIGHT = 161; + _WEBKIT_TRANSFORM = 162; + MARKER_MID = 163; + _WEBKIT_MIN_LOGICAL_WIDTH = 164; + CLIP_RULE = 165; + FONT_FAMILY = 166; + SCROLL_SNAP_TYPE = 167; + TEXT_DECORATION_SKIP_INK = 168; + TRANSITION = 169; + FILTER = 170; + BORDER_RIGHT_WIDTH = 171; + _WEBKIT_FLEX_DIRECTION = 172; + _WEBKIT_MASK_COMPOSITE = 173; + MIX_BLEND_MODE = 174; + COLOR_INTERPOLATION = 175; + BORDER_TOP_STYLE = 176; + FILL_OPACITY = 177; + MARKER_START = 178; + BORDER_BOTTOM_WIDTH = 179; + _WEBKIT_TEXT_EMPHASIS = 180; + GRID_AREA = 181; + SIZE = 182; + BACKGROUND_CLIP = 183; + _WEBKIT_TEXT_FILL_COLOR = 184; + TOP = 185; + _WEBKIT_BOX_REFLECT = 186; + BORDER_WIDTH = 187; + OFFSET_ANCHOR = 188; + MAX_INLINE_SIZE = 189; + _WEBKIT_COLUMN_RULE_STYLE = 190; + _WEBKIT_COLUMN_COUNT = 191; + ANIMATION_PLAY_STATE = 192; + PADDING = 193; + DOMINANT_BASELINE = 194; + BACKGROUND_ATTACHMENT = 195; + _WEBKIT_BOX_SIZING = 196; + _WEBKIT_BOX_FLEX = 197; + TEXT_ORIENTATION = 198; + BACKGROUND_POSITION = 199; + _WEBKIT_BORDER_START_WIDTH = 200; + _EPUB_TEXT_EMPHASIS_STYLE = 201; + ISOLATION = 202; + _EPUB_TEXT_ORIENTATION = 203; + _WEBKIT_BORDER_BOTTOM_RIGHT_RADIUS = 204; + R = 205; + BORDER_LEFT_WIDTH = 206; + GRID_COLUMN_END = 207; + BACKGROUND_BLEND_MODE = 208; + VERTICAL_ALIGN = 209; + CLIP = 210; + GRID_AUTO_ROWS = 211; + OFFSET_ROTATE = 212; + MARGIN_LEFT = 213; + ANIMATION_NAME = 214; + TEXT_DECORATION = 215; + BORDER = 216; + _WEBKIT_TRANSITION_TIMING_FUNCTION = 217; + MARGIN_BOTTOM = 218; + UNICODE_RANGE = 219; + ANIMATION = 220; + _WEBKIT_SHAPE_MARGIN = 221; + FONT_WEIGHT = 222; + SHAPE_MARGIN = 223; + MASK_TYPE = 224; + SCROLL_PADDING = 225; + MIN_INLINE_SIZE = 226; + OBJECT_POSITION = 227; + PAGE_BREAK_AFTER = 228; + _WEBKIT_MASK_CLIP = 229; + WHITE_SPACE = 230; + _WEBKIT_BORDER_AFTER_COLOR = 231; + _WEBKIT_MAX_LOGICAL_WIDTH = 232; + _WEBKIT_BORDER_BEFORE_COLOR = 233; + FONT_KERNING = 234; + _EPUB_WORD_BREAK = 235; + CLEAR = 236; + ANIMATION_TIMING_FUNCTION = 237; + _WEBKIT_BORDER_RADIUS = 238; + SCROLL_PADDING_RIGHT = 239; + _WEBKIT_TEXT_DECORATIONS_IN_EFFECT = 240; + _WEBKIT_ANIMATION_DIRECTION = 241; + JUSTIFY_SELF = 242; + TRANSITION_TIMING_FUNCTION = 243; + SCROLL_SNAP_STOP = 244; + COUNTER_INCREMENT = 245; + _WEBKIT_TRANSFORM_STYLE = 246; + GRID_AUTO_COLUMNS = 247; + _WEBKIT_ALIGN_CONTENT = 248; + FONT = 249; + FLEX_WRAP = 250; + GRID_ROW_START = 251; + LIST_STYLE_IMAGE = 252; + _WEBKIT_TAP_HIGHLIGHT_COLOR = 253; + _WEBKIT_TEXT_EMPHASIS_COLOR = 254; + BORDER_LEFT = 255; + _WEBKIT_BORDER_END_COLOR = 256; + COLUMNS = 257; + BOX_SHADOW = 258; + _WEBKIT_FLEX_WRAP = 259; + ALIGN_SELF = 260; + BORDER_BOTTOM = 261; + BORDER_SPACING = 262; + _WEBKIT_COLUMN_SPAN = 263; + GRID_ROW_END = 264; + _WEBKIT_BORDER_END = 265; + PERSPECTIVE_ORIGIN = 266; + PAGE_BREAK_INSIDE = 267; + ORPHANS = 268; + _WEBKIT_BORDER_START_STYLE = 269; + SCROLL_BEHAVIOR = 270; + COLUMN_SPAN = 271; + _WEBKIT_HYPHENATE_CHARACTER = 272; + COLUMN_FILL = 273; + TAB_SIZE = 274; + CONTAIN = 275; + X = 276; + GRID_ROW = 277; + BORDER_BOTTOM_RIGHT_RADIUS = 278; + LINE_HEIGHT = 279; + STROKE_LINEJOIN = 280; + TEXT_ALIGN_LAST = 281; + OFFSET_POSITION = 282; + WORD_SPACING = 283; + TRANSFORM_STYLE = 284; + _WEBKIT_APP_REGION = 285; + _WEBKIT_BORDER_END_STYLE = 286; + _WEBKIT_TRANSFORM_ORIGIN_Z = 287; + _WEBKIT_TRANSFORM_ORIGIN_X = 288; + _WEBKIT_TRANSFORM_ORIGIN_Y = 289; + BACKGROUND_REPEAT_X = 290; + BACKGROUND_REPEAT_Y = 291; + BORDER_BOTTOM_COLOR = 292; + _WEBKIT_RUBY_POSITION = 293; + _WEBKIT_LOGICAL_WIDTH = 294; + TEXT_JUSTIFY = 295; + SCROLL_MARGIN_INLINE_START = 296; + CAPTION_SIDE = 297; + MASK_SOURCE_TYPE = 298; + _WEBKIT_MASK_BOX_IMAGE_SLICE = 299; + _WEBKIT_BORDER_IMAGE = 300; + TEXT_SIZE_ADJUST = 301; + _WEBKIT_TEXT_SECURITY = 302; + _EPUB_WRITING_MODE = 303; + GRID_TEMPLATE = 304; + _WEBKIT_MASK_BOX_IMAGE_REPEAT = 305; + _WEBKIT_MASK_REPEAT = 306; + _WEBKIT_JUSTIFY_CONTENT = 307; + BASELINE_SHIFT = 308; + BORDER_IMAGE = 309; + TEXT_DECORATION_COLOR = 310; + COLOR = 311; + SHAPE_IMAGE_THRESHOLD = 312; + SHAPE_RENDERING = 313; + CY = 314; + CX = 315; + _WEBKIT_USER_MODIFY = 316; + OFFSET_DISTANCE = 317; + _WEBKIT_BORDER_BOTTOM_LEFT_RADIUS = 318; + SPEAK = 319; + BORDER_BOTTOM_LEFT_RADIUS = 320; + _WEBKIT_COLUMN_BREAK_AFTER = 321; + _WEBKIT_FONT_SMOOTHING = 322; + _WEBKIT_MAX_LOGICAL_HEIGHT = 323; + _WEBKIT_LINE_BREAK = 324; + FILL_RULE = 325; + _WEBKIT_MARGIN_START = 326; + MIN_WIDTH = 327; + _EPUB_TEXT_COMBINE = 328; + BREAK_BEFORE = 329; + CARET_COLOR = 330; + EMPTY_CELLS = 331; + DIRECTION = 332; + CLIP_PATH = 333; + JUSTIFY_CONTENT = 334; + SCROLL_PADDING_BLOCK_END = 335; + Z_INDEX = 336; + BACKGROUND_POSITION_Y = 337; + TEXT_DECORATION_STYLE = 338; + GRID_TEMPLATE_AREAS = 339; + _WEBKIT_MIN_LOGICAL_HEIGHT = 340; + FONT_SIZE_ADJUST = 341; + SCROLL_PADDING_BLOCK = 342; + OVERFLOW_ANCHOR = 343; + CURSOR = 344; + SCROLL_MARGIN_BLOCK_START = 345; + _WEBKIT_MASK_BOX_IMAGE_SOURCE = 346; + MARGIN = 347; + _WEBKIT_ANIMATION = 348; + LETTER_SPACING = 349; + ORIENTATION = 350; + WILL_CHANGE = 351; + _WEBKIT_HIGHLIGHT = 352; + TRANSFORM_ORIGIN = 353; + FONT_VARIANT_LIGATURES = 354; + _WEBKIT_ANIMATION_DURATION = 355; + _WEBKIT_MASK_ORIGIN = 356; + _WEBKIT_CLIP_PATH = 357; + WORD_BREAK = 358; + TABLE_LAYOUT = 359; + TEXT_OVERFLOW = 360; + _WEBKIT_LOCALE = 361; + _WEBKIT_FLEX = 362; + GRID_AUTO_FLOW = 363; + BORDER_TOP_RIGHT_RADIUS = 364; + BORDER_IMAGE_OUTSET = 365; + PLACE_ITEMS = 366; + BORDER_LEFT_COLOR = 367; + FONT_VARIATION_SETTINGS = 368; + BORDER_RIGHT_COLOR = 369; + MIN_ZOOM = 370; + SCROLL_MARGIN_INLINE = 371; + _WEBKIT_BORDER_BEFORE_WIDTH = 372; + BACKFACE_VISIBILITY = 373; + BACKGROUND_IMAGE = 374; + _WEBKIT_TRANSITION_PROPERTY = 375; + WRITING_MODE = 376; + STROKE_OPACITY = 377; + BOX_SIZING = 378; + MARGIN_TOP = 379; + COLUMN_RULE_COLOR = 380; + Y = 381; + POSITION = 382; + SCROLL_MARGIN_BOTTOM = 383; + LIST_STYLE_POSITION = 384; + _WEBKIT_BOX_PACK = 385; + SCROLL_PADDING_INLINE_END = 386; + QUOTES = 387; + BORDER_TOP = 388; + SCROLL_PADDING_LEFT = 389; + _WEBKIT_TRANSITION = 390; + _WEBKIT_COLUMN_BREAK_BEFORE = 391; + LIGHTING_COLOR = 392; + BACKGROUND_SIZE = 393; + _WEBKIT_PADDING_BEFORE = 394; + _WEBKIT_BORDER_TOP_LEFT_RADIUS = 395; + FLOOD_OPACITY = 396; + LINE_HEIGHT_STEP = 397; + _WEBKIT_MASK_SIZE = 398; + TEXT_ALIGN = 399; + _WEBKIT_FILTER = 400; + WORD_WRAP = 401; + MAX_ZOOM = 402; + GRID = 403; + BACKGROUND = 404; + HEIGHT = 405; + GRID_COLUMN_START = 406; + ANIMATION_FILL_MODE = 407; + ROTATE = 408; + MARKER_END = 409; + D = 410; + JUSTIFY_ITEMS = 411; + ZOOM = 412; + SCROLL_PADDING_BLOCK_START = 413; + PAGE = 414; + RIGHT = 415; + USER_SELECT = 416; + MARGIN_RIGHT = 417; + MARKER = 418; + LINE_BREAK = 419; + _WEBKIT_MARGIN_END = 420; + _WEBKIT_TRANSITION_DURATION = 421; + _WEBKIT_WRITING_MODE = 422; + BORDER_TOP_WIDTH = 423; + BOTTOM = 424; + PLACE_CONTENT = 425; + _WEBKIT_SHAPE_IMAGE_THRESHOLD = 426; + _WEBKIT_USER_DRAG = 427; + _WEBKIT_BORDER_VERTICAL_SPACING = 428; + _WEBKIT_COLUMN_GAP = 429; + _WEBKIT_OPACITY = 430; + BACKGROUND_COLOR = 431; + COLUMN_GAP = 432; + SHAPE_OUTSIDE = 433; + _WEBKIT_PADDING_END = 434; + _WEBKIT_BORDER_START = 435; + ANIMATION_DELAY = 436; + UNICODE_BIDI = 437; + TEXT_SHADOW = 438; + _WEBKIT_BOX_DIRECTION = 439; + IMAGE_RENDERING = 440; + SRC = 441; + GAP = 442; + GRID_GAP = 443; + POINTER_EVENTS = 444; + BORDER_IMAGE_WIDTH = 445; + MIN_BLOCK_SIZE = 446; + TRANSITION_PROPERTY = 447; + _WEBKIT_MASK_IMAGE = 448; + FLOAT = 449; + MAX_HEIGHT = 450; + OUTLINE_OFFSET = 451; + _WEBKIT_BOX_SHADOW = 452; + OVERFLOW_WRAP = 453; + BLOCK_SIZE = 454; + TRANSFORM = 455; + PLACE_SELF = 456; + WIDTH = 457; + STROKE_MITERLIMIT = 458; + STOP_OPACITY = 459; + BORDER_TOP_COLOR = 460; + TRANSLATE = 461; + OBJECT_FIT = 462; + _WEBKIT_MASK_BOX_IMAGE_WIDTH = 463; + _WEBKIT_BACKGROUND_ORIGIN = 464; + _WEBKIT_ALIGN_ITEMS = 465; + TRANSITION_DELAY = 466; + SCROLL_MARGIN_LEFT = 467; + BORDER_STYLE = 468; + ANIMATION_ITERATION_COUNT = 469; // Should be named OVERFLOW but can't because a macro uses this. Needs two // underscores for Windows. - __OVERFLOW = 475; - USER_ZOOM = 476; - _WEBKIT_BORDER_TOP_RIGHT_RADIUS = 477; - GRID_TEMPLATE_COLUMNS = 478; - _WEBKIT_ALIGN_SELF = 479; - _WEBKIT_PERSPECTIVE_ORIGIN = 480; - COLUMN_RULE_STYLE = 481; - DISPLAY = 482; - _WEBKIT_COLUMN_RULE_WIDTH = 483; - BORDER_COLOR = 484; - _WEBKIT_FLEX_BASIS = 485; - STROKE_DASHOFFSET = 486; - _WEBKIT_TEXT_SIZE_ADJUST = 487; - SCROLL_BOUNDARY_BEHAVIOR = 488; - _WEBKIT_TEXT_STROKE = 489; - WIDOWS = 490; - FILL = 491; - OVERFLOW_Y = 492; - OVERFLOW_X = 493; - OPACITY = 494; - _WEBKIT_PERSPECTIVE = 495; - _WEBKIT_TEXT_STROKE_COLOR = 496; - SCROLL_MARGIN_INLINE_END = 497; - SCALE = 498; - _WEBKIT_TEXT_ORIENTATION = 499; - _WEBKIT_MASK_BOX_IMAGE_OUTSET = 500; - ALIGN_CONTENT = 501; - _WEBKIT_BORDER_END_WIDTH = 502; - BORDER_BOTTOM_STYLE = 503; - MASK = 504; - BACKGROUND_POSITION_X = 505; - _EPUB_TEXT_TRANSFORM = 506; - STOP_COLOR = 507; - STROKE_DASHARRAY = 508; - _WEBKIT_LINE_CLAMP = 509; - MARGIN_BLOCK_START = 510; - MARGIN_BLOCK_END = 511; - MARGIN_INLINE_START = 512; - MARGIN_INLINE_END = 513; - PADDING_BLOCK_START = 514; - PADDING_BLOCK_END = 515; - PADDING_INLINE_START = 516; - PADDING_INLINE_END = 517; - BORDER_BLOCK_START_WIDTH = 518; - BORDER_BLOCK_START_STYLE = 519; - BORDER_BLOCK_START_COLOR = 520; - BORDER_BLOCK_END_WIDTH = 521; - BORDER_BLOCK_END_STYLE = 522; - BORDER_BLOCK_END_COLOR = 523; - BORDER_INLINE_START_WIDTH = 524; - BORDER_INLINE_START_STYLE = 525; - BORDER_INLINE_START_COLOR = 526; - BORDER_INLINE_END_WIDTH = 527; - BORDER_INLINE_END_STYLE = 528; - BORDER_INLINE_END_COLOR = 529; - BORDER_BLOCK_START = 530; - BORDER_BLOCK_END = 531; - BORDER_INLINE_START = 532; - BORDER_INLINE_END = 533; - MARGIN_BLOCK = 534; - MARGIN_INLINE = 535; - PADDING_BLOCK = 536; - PADDING_INLINE = 537; - BORDER_BLOCK_WIDTH = 538; - BORDER_BLOCK_STYLE = 539; - BORDER_BLOCK_COLOR = 540; - BORDER_INLINE_WIDTH = 541; - BORDER_INLINE_STYLE = 542; - BORDER_INLINE_COLOR = 543; - BORDER_BLOCK = 544; - BORDER_INLINE = 545; - INSET_BLOCK_START = 546; - INSET_BLOCK_END = 547; - INSET_BLOCK = 548; - INSET_INLINE_START = 549; - INSET_INLINE_END = 550; - INSET_INLINE = 551; - INSET = 552; - OVERFLOW_BLOCK = 553; - OVERFLOW_INLINE = 554; - FORCED_COLOR_ADJUST = 555; - OVERSCROLL_BEHAVIOR_INLINE = 556; - OVERSCROLL_BEHAVIOR_BLOCK = 557; - OVERSCROLL_BEHAVIOR_X = 558; - OVERSCROLL_BEHAVIOR_Y = 559; - INVALID_PROPERTY = 560; + __OVERFLOW = 470; + USER_ZOOM = 471; + _WEBKIT_BORDER_TOP_RIGHT_RADIUS = 472; + GRID_TEMPLATE_COLUMNS = 473; + _WEBKIT_ALIGN_SELF = 474; + _WEBKIT_PERSPECTIVE_ORIGIN = 475; + COLUMN_RULE_STYLE = 476; + DISPLAY = 477; + _WEBKIT_COLUMN_RULE_WIDTH = 478; + BORDER_COLOR = 479; + _WEBKIT_FLEX_BASIS = 480; + STROKE_DASHOFFSET = 481; + _WEBKIT_TEXT_SIZE_ADJUST = 482; + SCROLL_BOUNDARY_BEHAVIOR = 483; + _WEBKIT_TEXT_STROKE = 484; + WIDOWS = 485; + FILL = 486; + OVERFLOW_Y = 487; + OVERFLOW_X = 488; + OPACITY = 489; + _WEBKIT_PERSPECTIVE = 490; + _WEBKIT_TEXT_STROKE_COLOR = 491; + SCROLL_MARGIN_INLINE_END = 492; + SCALE = 493; + _WEBKIT_TEXT_ORIENTATION = 494; + _WEBKIT_MASK_BOX_IMAGE_OUTSET = 495; + ALIGN_CONTENT = 496; + _WEBKIT_BORDER_END_WIDTH = 497; + BORDER_BOTTOM_STYLE = 498; + MASK = 499; + BACKGROUND_POSITION_X = 500; + _EPUB_TEXT_TRANSFORM = 501; + STOP_COLOR = 502; + STROKE_DASHARRAY = 503; + _WEBKIT_LINE_CLAMP = 504; + MARGIN_BLOCK_START = 505; + MARGIN_BLOCK_END = 506; + MARGIN_INLINE_START = 507; + MARGIN_INLINE_END = 508; + PADDING_BLOCK_START = 509; + PADDING_BLOCK_END = 510; + PADDING_INLINE_START = 511; + PADDING_INLINE_END = 512; + BORDER_BLOCK_START_WIDTH = 513; + BORDER_BLOCK_START_STYLE = 514; + BORDER_BLOCK_START_COLOR = 515; + BORDER_BLOCK_END_WIDTH = 516; + BORDER_BLOCK_END_STYLE = 517; + BORDER_BLOCK_END_COLOR = 518; + BORDER_INLINE_START_WIDTH = 519; + BORDER_INLINE_START_STYLE = 520; + BORDER_INLINE_START_COLOR = 521; + BORDER_INLINE_END_WIDTH = 522; + BORDER_INLINE_END_STYLE = 523; + BORDER_INLINE_END_COLOR = 524; + BORDER_BLOCK_START = 525; + BORDER_BLOCK_END = 526; + BORDER_INLINE_START = 527; + BORDER_INLINE_END = 528; + MARGIN_BLOCK = 529; + MARGIN_INLINE = 530; + PADDING_BLOCK = 531; + PADDING_INLINE = 532; + BORDER_BLOCK_WIDTH = 533; + BORDER_BLOCK_STYLE = 534; + BORDER_BLOCK_COLOR = 535; + BORDER_INLINE_WIDTH = 536; + BORDER_INLINE_STYLE = 537; + BORDER_INLINE_COLOR = 538; + BORDER_BLOCK = 539; + BORDER_INLINE = 540; + INSET_BLOCK_START = 541; + INSET_BLOCK_END = 542; + INSET_BLOCK = 543; + INSET_INLINE_START = 544; + INSET_INLINE_END = 545; + INSET_INLINE = 546; + INSET = 547; + OVERFLOW_BLOCK = 548; + OVERFLOW_INLINE = 549; + FORCED_COLOR_ADJUST = 550; + OVERSCROLL_BEHAVIOR_INLINE = 551; + OVERSCROLL_BEHAVIOR_BLOCK = 552; + OVERSCROLL_BEHAVIOR_X = 553; + OVERSCROLL_BEHAVIOR_Y = 554; + INVALID_PROPERTY = 555; } required NameId name_id = 1; }
diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink/renderer/core/dom/document.cc index 7ea8d3e..9cf9b6e 100644 --- a/third_party/blink/renderer/core/dom/document.cc +++ b/third_party/blink/renderer/core/dom/document.cc
@@ -639,6 +639,10 @@ // Initialize feature policy, depends on origin trials. InitializeFeaturePolicy(initializer, document_classes); + // Initialize document policy. + document_policy_ = + DocumentPolicy::CreateWithHeaderPolicy(initializer.GetDocumentPolicy()); + // Initialize the agent. Depends on security origin. InitializeAgent(initializer); } @@ -656,6 +660,11 @@ return std::move(feature_policy_); } + std::unique_ptr<DocumentPolicy> TakeDocumentPolicy() { + DCHECK(document_policy_); + return std::move(document_policy_); + } + const Vector<String>& FeaturePolicyParseMessages() const { return feature_policy_parse_messages_; } @@ -1041,6 +1050,7 @@ scoped_refptr<SecurityOrigin> security_origin_; WebSandboxFlags sandbox_flags_ = WebSandboxFlags::kNone; std::unique_ptr<FeaturePolicy> feature_policy_; + std::unique_ptr<DocumentPolicy> document_policy_; Vector<String> feature_policy_parse_messages_; ParsedFeaturePolicy parsed_header_; Member<ContentSecurityPolicy> csp_; @@ -1095,6 +1105,7 @@ security_initializer.GetSecurityOrigin(), security_initializer.GetSandboxFlags(), security_initializer.TakeFeaturePolicy(), + security_initializer.TakeDocumentPolicy(), security_initializer.GetSecureContextMode()), evaluate_media_queries_on_style_recalc_(false), pending_sheet_layout_(kNoLayoutWithPendingSheets),
diff --git a/third_party/blink/renderer/core/dom/document_init.cc b/third_party/blink/renderer/core/dom/document_init.cc index 71bce92..bbc427c 100644 --- a/third_party/blink/renderer/core/dom/document_init.cc +++ b/third_party/blink/renderer/core/dom/document_init.cc
@@ -310,4 +310,10 @@ return *this; } +DocumentInit& DocumentInit::WithDocumentPolicy( + const DocumentPolicy::FeatureState& document_policy) { + document_policy_ = document_policy; + return *this; +} + } // namespace blink
diff --git a/third_party/blink/renderer/core/dom/document_init.h b/third_party/blink/renderer/core/dom/document_init.h index 2a26b3a..8f9fa791 100644 --- a/third_party/blink/renderer/core/dom/document_init.h +++ b/third_party/blink/renderer/core/dom/document_init.h
@@ -145,6 +145,12 @@ return frame_policy_; } + DocumentInit& WithDocumentPolicy( + const DocumentPolicy::FeatureState& document_policy); + const DocumentPolicy::FeatureState& GetDocumentPolicy() const { + return document_policy_; + } + private: DocumentInit(HTMLImportsController*); @@ -215,6 +221,8 @@ // The frame policy snapshot from the beginning of navigation. base::Optional<FramePolicy> frame_policy_ = base::nullopt; + + DocumentPolicy::FeatureState document_policy_; }; } // namespace blink
diff --git a/third_party/blink/renderer/core/dom/document_test.cc b/third_party/blink/renderer/core/dom/document_test.cc index d9c6815..119ec16 100644 --- a/third_party/blink/renderer/core/dom/document_test.cc +++ b/third_party/blink/renderer/core/dom/document_test.cc
@@ -1205,36 +1205,37 @@ blink::mojom::FeaturePolicyFeature::kSyncScript; const auto report_option = blink::ReportOptions::kReportOnFailure; - // When document_policy is not initialized, feature_policy should - // be sufficient to determine the result. - NavigateTo(KURL("https://www.example.com/"), "font-display-late-swap 'none'", - ""); - EXPECT_FALSE(GetDocument().IsFeatureEnabled(test_feature, report_option)); - - NavigateTo(KURL("https://www.example.com/"), "font-display-late-swap *", ""); - EXPECT_TRUE(GetDocument().IsFeatureEnabled(test_feature, report_option)); + // When document_policy is not specified in response header, default values + // are used for document policy. + NavigateTo(KURL("https://www.example.com/"), "", ""); + GetDocument().GetSecurityContext().SetDocumentPolicyForTesting( + DocumentPolicy::CreateWithHeaderPolicy({})); + EXPECT_EQ( + DocumentPolicy::GetFeatureDefaults().at(test_feature), + GetDocument().GetSecurityContext().GetDocumentPolicy()->GetFeatureValue( + test_feature)); // When document_policy is specified, both feature_policy and // document_policy need to return true for the feature to be // enabled. NavigateTo(KURL("https://www.example.com/"), "font-display-late-swap *", ""); GetDocument().GetSecurityContext().SetDocumentPolicyForTesting( - DocumentPolicy::CreateWithRequiredPolicy( + DocumentPolicy::CreateWithHeaderPolicy( {{test_feature, blink::PolicyValue(true)}})); EXPECT_TRUE(GetDocument().IsFeatureEnabled(test_feature, report_option)); GetDocument().GetSecurityContext().SetDocumentPolicyForTesting( - DocumentPolicy::CreateWithRequiredPolicy( + DocumentPolicy::CreateWithHeaderPolicy( {{test_feature, blink::PolicyValue(false)}})); EXPECT_FALSE(GetDocument().IsFeatureEnabled(test_feature, report_option)); NavigateTo(KURL("https://www.example.com/"), "font-display-late-swap 'none'", ""); GetDocument().GetSecurityContext().SetDocumentPolicyForTesting( - DocumentPolicy::CreateWithRequiredPolicy( + DocumentPolicy::CreateWithHeaderPolicy( {{test_feature, blink::PolicyValue(true)}})); EXPECT_FALSE(GetDocument().IsFeatureEnabled(test_feature, report_option)); GetDocument().GetSecurityContext().SetDocumentPolicyForTesting( - DocumentPolicy::CreateWithRequiredPolicy( + DocumentPolicy::CreateWithHeaderPolicy( {{test_feature, blink::PolicyValue(false)}})); EXPECT_FALSE(GetDocument().IsFeatureEnabled(test_feature, report_option)); @@ -1244,7 +1245,7 @@ EXPECT_TRUE( GetDocument().IsFeatureEnabled(unsupported_feature, report_option)); GetDocument().GetSecurityContext().SetDocumentPolicyForTesting( - DocumentPolicy::CreateWithRequiredPolicy( + DocumentPolicy::CreateWithHeaderPolicy( {{test_feature, blink::PolicyValue(true)}})); ASSERT_FALSE(GetDocument() .GetSecurityContext()
diff --git a/third_party/blink/renderer/core/execution_context/execution_context.cc b/third_party/blink/renderer/core/execution_context/execution_context.cc index b6436b9..6367a35b 100644 --- a/third_party/blink/renderer/core/execution_context/execution_context.cc +++ b/third_party/blink/renderer/core/execution_context/execution_context.cc
@@ -59,11 +59,13 @@ scoped_refptr<SecurityOrigin> origin, WebSandboxFlags sandbox_flags, std::unique_ptr<FeaturePolicy> feature_policy, + std::unique_ptr<DocumentPolicy> document_policy, SecureContextMode secure_context_mode) : isolate_(isolate), security_context_(origin, sandbox_flags, std::move(feature_policy), + std::move(document_policy), SecurityContext::kLocal), circular_sequential_id_(0), in_dispatch_error_event_(false),
diff --git a/third_party/blink/renderer/core/execution_context/execution_context.h b/third_party/blink/renderer/core/execution_context/execution_context.h index c95b002..eea36ed7 100644 --- a/third_party/blink/renderer/core/execution_context/execution_context.h +++ b/third_party/blink/renderer/core/execution_context/execution_context.h
@@ -342,6 +342,7 @@ scoped_refptr<SecurityOrigin> origin, WebSandboxFlags sandbox_flags, std::unique_ptr<FeaturePolicy> feature_policy, + std::unique_ptr<DocumentPolicy> document_policy, SecureContextMode secure_context_mode); ~ExecutionContext() override;
diff --git a/third_party/blink/renderer/core/execution_context/remote_security_context.cc b/third_party/blink/renderer/core/execution_context/remote_security_context.cc index f7b286a..841d83a 100644 --- a/third_party/blink/renderer/core/execution_context/remote_security_context.cc +++ b/third_party/blink/renderer/core/execution_context/remote_security_context.cc
@@ -12,7 +12,11 @@ namespace blink { RemoteSecurityContext::RemoteSecurityContext() - : SecurityContext(nullptr, WebSandboxFlags::kNone, nullptr, kRemote) { + : SecurityContext(nullptr /* origin */, + WebSandboxFlags::kNone, + nullptr /* feature_policy */, + nullptr /* document_policy */, + kRemote) { // RemoteSecurityContext's origin is expected to stay uninitialized until // we set it using replicated origin data from the browser process. DCHECK(!GetSecurityOrigin());
diff --git a/third_party/blink/renderer/core/execution_context/security_context.cc b/third_party/blink/renderer/core/execution_context/security_context.cc index 01b1107..b58b008 100644 --- a/third_party/blink/renderer/core/execution_context/security_context.cc +++ b/third_party/blink/renderer/core/execution_context/security_context.cc
@@ -83,13 +83,16 @@ return serialized; } -SecurityContext::SecurityContext(scoped_refptr<SecurityOrigin> origin, - WebSandboxFlags sandbox_flags, - std::unique_ptr<FeaturePolicy> feature_policy, - SecurityContextType context_type) +SecurityContext::SecurityContext( + scoped_refptr<SecurityOrigin> origin, + WebSandboxFlags sandbox_flags, + std::unique_ptr<FeaturePolicy> feature_policy, + std::unique_ptr<DocumentPolicy> document_policy, + SecurityContextType context_type) : sandbox_flags_(sandbox_flags), security_origin_(std::move(origin)), feature_policy_(std::move(feature_policy)), + document_policy_(std::move(document_policy)), address_space_(network::mojom::IPAddressSpace::kUnknown), insecure_request_policy_(kLeaveInsecureRequestsAlone), require_safe_types_(false),
diff --git a/third_party/blink/renderer/core/execution_context/security_context.h b/third_party/blink/renderer/core/execution_context/security_context.h index fd48d67..4d362b6 100644 --- a/third_party/blink/renderer/core/execution_context/security_context.h +++ b/third_party/blink/renderer/core/execution_context/security_context.h
@@ -76,6 +76,7 @@ SecurityContext(scoped_refptr<SecurityOrigin> origin, WebSandboxFlags sandbox_flags, std::unique_ptr<FeaturePolicy> feature_policy, + std::unique_ptr<DocumentPolicy> document_policy, SecurityContextType context_type); virtual ~SecurityContext() = default;
diff --git a/third_party/blink/renderer/core/exported/local_frame_client_impl.cc b/third_party/blink/renderer/core/exported/local_frame_client_impl.cc index 57f0b34..4695265 100644 --- a/third_party/blink/renderer/core/exported/local_frame_client_impl.cc +++ b/third_party/blink/renderer/core/exported/local_frame_client_impl.cc
@@ -651,11 +651,6 @@ return true; } -void LocalFrameClientImpl::DidAccessInitialDocument() { - if (web_frame_->Client()) - web_frame_->Client()->DidAccessInitialDocument(); -} - void LocalFrameClientImpl::DidRunInsecureContent(const SecurityOrigin* origin, const KURL& insecure_url) { if (web_frame_->Client()) {
diff --git a/third_party/blink/renderer/core/exported/local_frame_client_impl.h b/third_party/blink/renderer/core/exported/local_frame_client_impl.h index a910975..0cd319b5 100644 --- a/third_party/blink/renderer/core/exported/local_frame_client_impl.h +++ b/third_party/blink/renderer/core/exported/local_frame_client_impl.h
@@ -140,7 +140,6 @@ void DownloadURL(const ResourceRequest&, network::mojom::RedirectMode) override; bool NavigateBackForward(int offset) const override; - void DidAccessInitialDocument() override; void DidRunInsecureContent(const SecurityOrigin*, const KURL& insecure_url) override; void DidDispatchPingLoader(const KURL&) override;
diff --git a/third_party/blink/renderer/core/exported/web_frame_test.cc b/third_party/blink/renderer/core/exported/web_frame_test.cc index a613412..00910e1b 100644 --- a/third_party/blink/renderer/core/exported/web_frame_test.cc +++ b/third_party/blink/renderer/core/exported/web_frame_test.cc
@@ -6697,13 +6697,12 @@ document->Markers().Markers()[0]->GetType()); } -class TestAccessInitialDocumentWebFrameClient - : public frame_test_helpers::TestWebFrameClient { +class TestAccessInitialDocumentLocalFrameHost : public FakeLocalFrameHost { public: - TestAccessInitialDocumentWebFrameClient() = default; - ~TestAccessInitialDocumentWebFrameClient() override = default; + TestAccessInitialDocumentLocalFrameHost() = default; + ~TestAccessInitialDocumentLocalFrameHost() override = default; - // frame_test_helpers::TestWebFrameClient: + // FakeLocalFrameHost: void DidAccessInitialDocument() override { ++did_access_initial_document_; } // !!!!!!!!!!!!!!!!!! IMPORTANT !!!!!!!!!!!!!!!!!! @@ -6716,153 +6715,169 @@ }; TEST_F(WebFrameTest, DidAccessInitialDocumentBody) { - TestAccessInitialDocumentWebFrameClient web_frame_client; + TestAccessInitialDocumentLocalFrameHost frame_host; + frame_test_helpers::TestWebFrameClient web_frame_client; + frame_host.Init(web_frame_client.GetRemoteNavigationAssociatedInterfaces()); frame_test_helpers::WebViewHelper web_view_helper; web_view_helper.Initialize(&web_frame_client); RunPendingTasks(); - EXPECT_EQ(0, web_frame_client.did_access_initial_document_); + EXPECT_EQ(0, frame_host.did_access_initial_document_); // Create another window that will try to access it. frame_test_helpers::WebViewHelper new_web_view_helper; WebViewImpl* new_view = new_web_view_helper.InitializeWithOpener( web_view_helper.GetWebView()->MainFrame()); RunPendingTasks(); - EXPECT_EQ(0, web_frame_client.did_access_initial_document_); + EXPECT_EQ(0, frame_host.did_access_initial_document_); // Access the initial document by modifying the body. new_view->MainFrameImpl()->ExecuteScript( WebScriptSource("window.opener.document.body.innerHTML += 'Modified';")); RunPendingTasks(); - EXPECT_EQ(1, web_frame_client.did_access_initial_document_); + EXPECT_EQ(1, frame_host.did_access_initial_document_); web_view_helper.Reset(); } TEST_F(WebFrameTest, DidAccessInitialDocumentOpen) { - TestAccessInitialDocumentWebFrameClient web_frame_client; + TestAccessInitialDocumentLocalFrameHost frame_host; + frame_test_helpers::TestWebFrameClient web_frame_client; + frame_host.Init(web_frame_client.GetRemoteNavigationAssociatedInterfaces()); frame_test_helpers::WebViewHelper web_view_helper; web_view_helper.Initialize(&web_frame_client); RunPendingTasks(); - EXPECT_EQ(0, web_frame_client.did_access_initial_document_); + EXPECT_EQ(0, frame_host.did_access_initial_document_); // Create another window that will try to access it. frame_test_helpers::WebViewHelper new_web_view_helper; WebViewImpl* new_view = new_web_view_helper.InitializeWithOpener( web_view_helper.GetWebView()->MainFrame()); RunPendingTasks(); - EXPECT_EQ(0, web_frame_client.did_access_initial_document_); + EXPECT_EQ(0, frame_host.did_access_initial_document_); // Access the initial document by calling document.open(), which allows // arbitrary modification of the initial document. new_view->MainFrameImpl()->ExecuteScript( WebScriptSource("window.opener.document.open();")); RunPendingTasks(); - EXPECT_EQ(1, web_frame_client.did_access_initial_document_); + EXPECT_EQ(1, frame_host.did_access_initial_document_); web_view_helper.Reset(); } TEST_F(WebFrameTest, DidAccessInitialDocumentNavigator) { - TestAccessInitialDocumentWebFrameClient web_frame_client; + TestAccessInitialDocumentLocalFrameHost frame_host; + frame_test_helpers::TestWebFrameClient web_frame_client; + frame_host.Init(web_frame_client.GetRemoteNavigationAssociatedInterfaces()); frame_test_helpers::WebViewHelper web_view_helper; web_view_helper.Initialize(&web_frame_client); RunPendingTasks(); - EXPECT_EQ(0, web_frame_client.did_access_initial_document_); + EXPECT_EQ(0, frame_host.did_access_initial_document_); // Create another window that will try to access it. frame_test_helpers::WebViewHelper new_web_view_helper; WebViewImpl* new_view = new_web_view_helper.InitializeWithOpener( web_view_helper.GetWebView()->MainFrame()); RunPendingTasks(); - EXPECT_EQ(0, web_frame_client.did_access_initial_document_); + EXPECT_EQ(0, frame_host.did_access_initial_document_); // Access the initial document to get to the navigator object. new_view->MainFrameImpl()->ExecuteScript( WebScriptSource("console.log(window.opener.navigator);")); RunPendingTasks(); - EXPECT_EQ(1, web_frame_client.did_access_initial_document_); + EXPECT_EQ(1, frame_host.did_access_initial_document_); web_view_helper.Reset(); } TEST_F(WebFrameTest, DidAccessInitialDocumentViaJavascriptUrl) { - TestAccessInitialDocumentWebFrameClient web_frame_client; + TestAccessInitialDocumentLocalFrameHost frame_host; + frame_test_helpers::TestWebFrameClient web_frame_client; + frame_host.Init(web_frame_client.GetRemoteNavigationAssociatedInterfaces()); frame_test_helpers::WebViewHelper web_view_helper; web_view_helper.Initialize(&web_frame_client); RunPendingTasks(); - EXPECT_EQ(0, web_frame_client.did_access_initial_document_); + EXPECT_EQ(0, frame_host.did_access_initial_document_); // Access the initial document from a javascript: URL. frame_test_helpers::LoadFrame(web_view_helper.GetWebView()->MainFrameImpl(), "javascript:document.body.appendChild(document." "createTextNode('Modified'))"); - EXPECT_EQ(1, web_frame_client.did_access_initial_document_); + EXPECT_EQ(1, frame_host.did_access_initial_document_); web_view_helper.Reset(); } TEST_F(WebFrameTest, DidAccessInitialDocumentBodyBeforeModalDialog) { - TestAccessInitialDocumentWebFrameClient web_frame_client; + TestAccessInitialDocumentLocalFrameHost frame_host; + frame_test_helpers::TestWebFrameClient web_frame_client; + frame_host.Init(web_frame_client.GetRemoteNavigationAssociatedInterfaces()); frame_test_helpers::WebViewHelper web_view_helper; web_view_helper.Initialize(&web_frame_client); RunPendingTasks(); - EXPECT_EQ(0, web_frame_client.did_access_initial_document_); + EXPECT_EQ(0, frame_host.did_access_initial_document_); // Create another window that will try to access it. frame_test_helpers::WebViewHelper new_web_view_helper; WebViewImpl* new_view = new_web_view_helper.InitializeWithOpener( web_view_helper.GetWebView()->MainFrame()); RunPendingTasks(); - EXPECT_EQ(0, web_frame_client.did_access_initial_document_); + EXPECT_EQ(0, frame_host.did_access_initial_document_); // Access the initial document by modifying the body. new_view->MainFrameImpl()->ExecuteScript( WebScriptSource("window.opener.document.body.innerHTML += 'Modified';")); - EXPECT_EQ(1, web_frame_client.did_access_initial_document_); + RunPendingTasks(); + EXPECT_EQ(1, frame_host.did_access_initial_document_); // Run a modal dialog, which used to run a nested run loop and require // a special case for notifying about the access. new_view->MainFrameImpl()->ExecuteScript( WebScriptSource("window.opener.confirm('Modal');")); - EXPECT_EQ(2, web_frame_client.did_access_initial_document_); + RunPendingTasks(); + EXPECT_EQ(1, frame_host.did_access_initial_document_); // Ensure that we don't notify again later. RunPendingTasks(); - EXPECT_EQ(2, web_frame_client.did_access_initial_document_); + EXPECT_EQ(1, frame_host.did_access_initial_document_); web_view_helper.Reset(); } TEST_F(WebFrameTest, DidWriteToInitialDocumentBeforeModalDialog) { - TestAccessInitialDocumentWebFrameClient web_frame_client; + TestAccessInitialDocumentLocalFrameHost frame_host; + frame_test_helpers::TestWebFrameClient web_frame_client; + frame_host.Init(web_frame_client.GetRemoteNavigationAssociatedInterfaces()); frame_test_helpers::WebViewHelper web_view_helper; web_view_helper.Initialize(&web_frame_client); RunPendingTasks(); - EXPECT_EQ(0, web_frame_client.did_access_initial_document_); + EXPECT_EQ(0, frame_host.did_access_initial_document_); // Create another window that will try to access it. frame_test_helpers::WebViewHelper new_web_view_helper; WebViewImpl* new_view = new_web_view_helper.InitializeWithOpener( web_view_helper.GetWebView()->MainFrame()); RunPendingTasks(); - EXPECT_EQ(0, web_frame_client.did_access_initial_document_); + EXPECT_EQ(0, frame_host.did_access_initial_document_); // Access the initial document with document.write, which moves us past the // initial empty document state of the state machine. new_view->MainFrameImpl()->ExecuteScript( WebScriptSource("window.opener.document.write('Modified'); " "window.opener.document.close();")); - EXPECT_EQ(1, web_frame_client.did_access_initial_document_); + RunPendingTasks(); + EXPECT_EQ(1, frame_host.did_access_initial_document_); // Run a modal dialog, which used to run a nested run loop and require // a special case for notifying about the access. new_view->MainFrameImpl()->ExecuteScript( WebScriptSource("window.opener.confirm('Modal');")); - EXPECT_EQ(1, web_frame_client.did_access_initial_document_); + RunPendingTasks(); + EXPECT_EQ(1, frame_host.did_access_initial_document_); // Ensure that we don't notify again later. RunPendingTasks(); - EXPECT_EQ(1, web_frame_client.did_access_initial_document_); + EXPECT_EQ(1, frame_host.did_access_initial_document_); web_view_helper.Reset(); }
diff --git a/third_party/blink/renderer/core/exported/web_image.cc b/third_party/blink/renderer/core/exported/web_image.cc index d616a8d..3b89ae23 100644 --- a/third_party/blink/renderer/core/exported/web_image.cc +++ b/third_party/blink/renderer/core/exported/web_image.cc
@@ -114,7 +114,8 @@ const bool data_complete = true; std::unique_ptr<ImageDecoder> decoder(ImageDecoder::Create( data, data_complete, ImageDecoder::kAlphaPremultiplied, - ImageDecoder::kDefaultBitDepth, ColorBehavior::Ignore())); + ImageDecoder::kDefaultBitDepth, ColorBehavior::Ignore(), + ImageDecoder::OverrideAllowDecodeToYuv::kDeny)); if (!decoder || !decoder->IsSizeAvailable()) return {}; @@ -147,7 +148,8 @@ const bool data_complete = true; std::unique_ptr<ImageDecoder> decoder(ImageDecoder::Create( data, data_complete, ImageDecoder::kAlphaPremultiplied, - ImageDecoder::kDefaultBitDepth, ColorBehavior::Ignore())); + ImageDecoder::kDefaultBitDepth, ColorBehavior::Ignore(), + ImageDecoder::OverrideAllowDecodeToYuv::kDeny)); if (!decoder || !decoder->IsSizeAvailable() || decoder->FrameCount() == 0) return {};
diff --git a/third_party/blink/renderer/core/frame/frame.h b/third_party/blink/renderer/core/frame/frame.h index f28019d..b86853a 100644 --- a/third_party/blink/renderer/core/frame/frame.h +++ b/third_party/blink/renderer/core/frame/frame.h
@@ -31,7 +31,7 @@ #include "base/optional.h" #include "base/unguessable_token.h" -#include "third_party/blink/public/common/feature_policy/feature_policy.h" +#include "third_party/blink/public/common/frame/frame_policy.h" #include "third_party/blink/public/common/frame/user_activation_state.h" #include "third_party/blink/public/common/frame/user_activation_update_source.h" #include "third_party/blink/public/web/web_frame_load_type.h" @@ -234,6 +234,12 @@ opener_feature_state_ = state; } + const FramePolicy& GetFramePolicy() const { return frame_policy_; } + + void SetFramePolicy(const FramePolicy& frame_policy) { + frame_policy_ = frame_policy; + } + WindowAgentFactory& window_agent_factory() const { return *window_agent_factory_; } @@ -300,6 +306,11 @@ // frames. FeaturePolicy::FeatureState opener_feature_state_; + // Frame policy of current frame. This can be different to + // Owner()->GetFramePolicy(), as the document hosted in the frame can also + // further specify frame policy. + FramePolicy frame_policy_; + Member<WindowAgentFactory> window_agent_factory_; // TODO(sashab): Investigate if this can be represented with m_lifecycle.
diff --git a/third_party/blink/renderer/core/frame/local_frame.h b/third_party/blink/renderer/core/frame/local_frame.h index dbade52..c2b9a5bd 100644 --- a/third_party/blink/renderer/core/frame/local_frame.h +++ b/third_party/blink/renderer/core/frame/local_frame.h
@@ -401,7 +401,8 @@ const mojo::Remote<mojom::blink::ReportingServiceProxy>& GetReportingService() const; - // Returns the frame host ptr. + // Returns the frame host ptr. The interface returned is backed by an + // associated interface with the legacy Chrome IPC channel. mojom::blink::LocalFrameHost& GetLocalFrameHostRemote(); // Overlays a color on top of this LocalFrameView if it is associated with
diff --git a/third_party/blink/renderer/core/frame/local_frame_client.h b/third_party/blink/renderer/core/frame/local_frame_client.h index a524842..0e526fb 100644 --- a/third_party/blink/renderer/core/frame/local_frame_client.h +++ b/third_party/blink/renderer/core/frame/local_frame_client.h
@@ -181,11 +181,6 @@ virtual bool NavigateBackForward(int offset) const = 0; - // Another page has accessed the initial empty document of this frame. It is - // no longer safe to display a provisional URL, since a URL spoof is now - // possible. - virtual void DidAccessInitialDocument() {} - // The indicated security origin has run active content (such as a script) // from an insecure source. Note that the insecure content can spread to // other frames in the same origin.
diff --git a/third_party/blink/renderer/core/frame/web_local_frame_impl.cc b/third_party/blink/renderer/core/frame/web_local_frame_impl.cc index 31d40796..68fa0ac 100644 --- a/third_party/blink/renderer/core/frame/web_local_frame_impl.cc +++ b/third_party/blink/renderer/core/frame/web_local_frame_impl.cc
@@ -763,6 +763,11 @@ GetFrame()->Loader().DispatchUnloadEvent(nullptr, nullptr); } +bool WebLocalFrameImpl::HasAccessedInitialDocument() { + DCHECK(GetFrame()); + return GetFrame()->Loader().HasAccessedInitialDocument(); +} + void WebLocalFrameImpl::ExecuteScript(const WebScriptSource& source) { DCHECK(GetFrame()); v8::HandleScope handle_scope(ToIsolate(GetFrame()));
diff --git a/third_party/blink/renderer/core/frame/web_local_frame_impl.h b/third_party/blink/renderer/core/frame/web_local_frame_impl.h index 6990498..8e28c1d 100644 --- a/third_party/blink/renderer/core/frame/web_local_frame_impl.h +++ b/third_party/blink/renderer/core/frame/web_local_frame_impl.h
@@ -112,6 +112,7 @@ void SetContentCaptureClient(WebContentCaptureClient*) override; WebContentCaptureClient* ContentCaptureClient() const override; void DispatchUnloadEvent() override; + bool HasAccessedInitialDocument() override; WebVector<WebIconURL> IconURLs(int icon_types_mask) const override; WebDocument GetDocument() const override; WebString AssignedName() const override;
diff --git a/third_party/blink/renderer/core/html/html_frame_owner_element.cc b/third_party/blink/renderer/core/html/html_frame_owner_element.cc index 0779508..fa5e70c9 100644 --- a/third_party/blink/renderer/core/html/html_frame_owner_element.cc +++ b/third_party/blink/renderer/core/html/html_frame_owner_element.cc
@@ -312,16 +312,10 @@ ConstructRequiredPolicy(); const auto* frame = GetDocument().GetFrame(); DCHECK(frame); - // TODO(chenleihu): unify the logic of getting parent required policy after - // frame policy gets moved from FrameOwner to Frame. - frame_policy_.required_document_policy = - frame->IsMainFrame() - ? self_required_policy - : DocumentPolicy::MergeFeatureState( - self_required_policy, - frame->Owner() - ->GetFramePolicy() - .required_document_policy /* parent required policy */); + frame_policy_.required_document_policy = DocumentPolicy::MergeFeatureState( + self_required_policy, + frame->GetFramePolicy() + .required_document_policy /* parent required policy */); if (ContentFrame()) { frame->Client()->DidChangeFramePolicy(ContentFrame(), frame_policy_); }
diff --git a/third_party/blink/renderer/core/loader/document_loader.cc b/third_party/blink/renderer/core/loader/document_loader.cc index 3b34642..8e575c7 100644 --- a/third_party/blink/renderer/core/loader/document_loader.cc +++ b/third_party/blink/renderer/core/loader/document_loader.cc
@@ -124,6 +124,7 @@ document_load_timing_(*this), service_worker_network_provider_( std::move(params_->service_worker_network_provider)), + was_blocked_by_document_policy_(false), was_blocked_by_csp_(false), state_(kNotStarted), in_commit_data_(false), @@ -173,7 +174,12 @@ ip_address_space_ = params_->ip_address_space; grant_load_local_resources_ = params_->grant_load_local_resources; force_fetch_cache_mode_ = params_->force_fetch_cache_mode; - frame_policy_ = params_->frame_policy; + response_ = params_->response.ToResourceResponse(); + frame_policy_ = params_->frame_policy.value_or(FramePolicy()); + document_policy_ = CreateDocumentPolicy(); + // Initialize |frame_policy_| in frame after the update to + // |frame_policy_.required_document_policy| in CreateDocumentPolicy. + frame_->SetFramePolicy(frame_policy_); WebNavigationTimings& timings = params_->navigation_timings; if (!timings.input_start.is_null()) @@ -232,25 +238,20 @@ // information that is consistent with the final request URL. // Note: We can't use |url_| for the origin calculation because // we need to take into account any redirects that may have occurred. - const auto request_url_origin = blink::SecurityOrigin::Create( - params_->response.ToResourceResponse().CurrentRequestUrl()); + const auto request_url_origin = + blink::SecurityOrigin::Create(response_.CurrentRequestUrl()); origin_to_commit_ = request_url_origin->DeriveNewOpaqueOrigin(); was_blocked_by_csp_ = true; - KURL blocked_url = SecurityOrigin::UrlWithUniqueOpaqueOrigin(); - original_url_ = blocked_url; - url_ = blocked_url; - params_->url = blocked_url; - WebNavigationParams::FillStaticResponse(params_.get(), "text/html", - "UTF-8", ""); } } + if (was_blocked_by_csp_ || was_blocked_by_document_policy_) + ReplaceWithEmptyDocument(); + if (!GetFrameLoader().StateMachine()->CreatingInitialEmptyDocument()) redirect_chain_.push_back(url_); - response_ = params_->response.ToResourceResponse(); - for (auto feature : params_->initiator_origin_trial_features) { // Convert from int to OriginTrialFeature. These values are passed between // blink navigations. OriginTrialFeature isn't visible outside of blink (and @@ -625,7 +626,7 @@ navigation_timing_info_->SetFinalResponse(response_); navigation_timing_info_->AddFinalTransferSize( total_encoded_data_length == -1 ? 0 : total_encoded_data_length); - if (response_.HttpStatusCode() < 400 && report_timing_info_to_parent_) { + if (report_timing_info_to_parent_) { navigation_timing_info_->SetLoadResponseEnd(completion_time); if (state_ >= kCommitted) { // Note that we currently lose timing info for empty documents, @@ -784,6 +785,51 @@ return true; } +void DocumentLoader::ConsoleError(const String& message) { + ConsoleMessage* console_message = ConsoleMessage::CreateForRequest( + mojom::ConsoleMessageSource::kSecurity, + mojom::ConsoleMessageLevel::kError, message, + response_.CurrentRequestUrl(), this, MainResourceIdentifier()); + frame_->GetDocument()->AddConsoleMessage(console_message); +} + +void DocumentLoader::ReplaceWithEmptyDocument() { + DCHECK(params_); + KURL blocked_url = SecurityOrigin::UrlWithUniqueOpaqueOrigin(); + original_url_ = blocked_url; + url_ = blocked_url; + params_->url = blocked_url; + WebNavigationParams::FillStaticResponse(params_.get(), "text/html", "UTF-8", + ""); +} + +DocumentPolicy::FeatureState DocumentLoader::CreateDocumentPolicy() { + if (!RuntimeEnabledFeatures::DocumentPolicyEnabled()) + return DocumentPolicy::FeatureState{}; + + const DocumentPolicy::FeatureState header_policy = + DocumentPolicy::Parse( + response_.HttpHeaderField(http_names::kDocumentPolicy).Ascii()) + .value_or(DocumentPolicy::FeatureState{}); + + const DocumentPolicy::FeatureState header_required_policy = + DocumentPolicy::Parse( + response_.HttpHeaderField(http_names::kRequireDocumentPolicy).Ascii()) + .value_or(DocumentPolicy::FeatureState{}); + + frame_policy_.required_document_policy = DocumentPolicy::MergeFeatureState( + frame_policy_.required_document_policy, header_required_policy); + + if (!DocumentPolicy::IsPolicyCompatible( + frame_policy_.required_document_policy, header_policy)) { + was_blocked_by_document_policy_ = true; + // When header policy is less strict than required policy, use required + // policy to initialize document policy for the document. + return frame_policy_.required_document_policy; + } + return header_policy; +} + void DocumentLoader::HandleResponse() { DCHECK(frame_); application_cache_host_->DidReceiveResponseForMainResource(response_); @@ -1431,6 +1477,7 @@ .WithFramePolicy(frame_policy_) .WithNewRegistrationContext() .WithFeaturePolicyHeader(feature_policy.ToString()) + .WithDocumentPolicy(document_policy_) .WithOriginTrialsHeader( response_.HttpHeaderField(http_names::kOriginTrial)) .WithContentSecurityPolicy(content_security_policy_.Get()); @@ -1535,16 +1582,24 @@ // Log if the document was blocked by CSP checks now that the new Document has // been created and console messages will be properly displayed. if (was_blocked_by_csp_) { - String message = "Refused to display '" + - response_.CurrentRequestUrl().ElidedString() + - "' because it has not opted-into the following policy " - "required by its embedder: '" + - GetFrameLoader().RequiredCSP() + "'."; - ConsoleMessage* console_message = ConsoleMessage::CreateForRequest( - mojom::ConsoleMessageSource::kSecurity, - mojom::ConsoleMessageLevel::kError, message, - response_.CurrentRequestUrl(), this, MainResourceIdentifier()); - frame_->GetDocument()->AddConsoleMessage(console_message); + ConsoleError("Refused to display '" + + response_.CurrentRequestUrl().ElidedString() + + "' because it has not opted into the following policy " + "required by its embedder: '" + + GetFrameLoader().RequiredCSP() + "'."); + } + + if (was_blocked_by_document_policy_) { + // TODO(chenleihu): Add which document policy violated in error string, + // instead of just displaying serialized required document policy. + ConsoleError( + "Refused to display '" + response_.CurrentRequestUrl().ElidedString() + + "' because it violates the following document policy " + "required by its embedder: '" + + DocumentPolicy::Serialize(frame_policy_.required_document_policy) + .value_or("[Serialization Error]") + .c_str() + + "'."); } // Report the ResourceResponse now that the new Document has been created and
diff --git a/third_party/blink/renderer/core/loader/document_loader.h b/third_party/blink/renderer/core/loader/document_loader.h index ad89d6db..ee41ae06 100644 --- a/third_party/blink/renderer/core/loader/document_loader.h +++ b/third_party/blink/renderer/core/loader/document_loader.h
@@ -359,9 +359,17 @@ FrameLoader& GetFrameLoader() const; LocalFrameClient& GetLocalFrameClient() const; + void ConsoleError(const String& message); + + // Replace the current document with a empty one and the URL with a unique + // opaque origin. + void ReplaceWithEmptyDocument(); + ContentSecurityPolicy* CreateCSP( const ResourceResponse&, const base::Optional<WebOriginPolicy>& origin_policy); + DocumentPolicy::FeatureState CreateDocumentPolicy(); + void StartLoadingInternal(); void FinishedLoading(base::TimeTicks finish_time); void CancelLoadAfterCSPDenied(const ResourceResponse&); @@ -423,7 +431,7 @@ network::mojom::IPAddressSpace::kUnknown; bool grant_load_local_resources_ = false; base::Optional<blink::mojom::FetchCacheMode> force_fetch_cache_mode_; - base::Optional<FramePolicy> frame_policy_; + FramePolicy frame_policy_; // Params are saved in constructor and are cleared after StartLoading(). // TODO(dgozman): remove once StartLoading is merged with constructor. @@ -470,6 +478,9 @@ std::unique_ptr<WebServiceWorkerNetworkProvider> service_worker_network_provider_; + bool was_blocked_by_document_policy_; + DocumentPolicy::FeatureState document_policy_; + Member<ContentSecurityPolicy> content_security_policy_; ClientHintsPreferences client_hints_preferences_; InitialScrollState initial_scroll_state_;
diff --git a/third_party/blink/renderer/core/loader/document_loader_test.cc b/third_party/blink/renderer/core/loader/document_loader_test.cc index 1cf18f9..2a896cd6 100644 --- a/third_party/blink/renderer/core/loader/document_loader_test.cc +++ b/third_party/blink/renderer/core/loader/document_loader_test.cc
@@ -14,6 +14,7 @@ #include "third_party/blink/public/platform/web_url_loader_mock_factory.h" #include "third_party/blink/renderer/core/frame/frame_test_helpers.h" #include "third_party/blink/renderer/core/frame/web_local_frame_impl.h" +#include "third_party/blink/renderer/core/inspector/console_message.h" #include "third_party/blink/renderer/core/page/page.h" #include "third_party/blink/renderer/core/testing/scoped_fake_plugin_registry.h" #include "third_party/blink/renderer/core/testing/sim/sim_request.h" @@ -256,6 +257,45 @@ blink::mojom::FeaturePolicyFeature::kPayment)); } +TEST_F(DocumentLoaderSimTest, ReportErrorWhenDocumentPolicyIncompatible) { + blink::ScopedDocumentPolicyForTest sdp(true); + SimRequest::Params params; + params.response_http_headers = { + {"Document-Policy", "unoptimized-lossless-images;bpp=1.1"}}; + + SimRequest main_resource("https://example.com", "text/html"); + SimRequest iframe_resource("https://example.com/foo.html", "text/html", + params); + + LoadURL("https://example.com"); + main_resource.Complete(R"( + <iframe + src="https://example.com/foo.html" + policy="unoptimized-lossless-images;bpp=1.0"> + </iframe> + )"); + + // When blocked by document policy, the document should be filled in with an + // empty response, with Finish called on |navigation_body_loader| already. + // If Finish was not called on the loader, because the document was not + // blocked, this test will fail by crashing here. + iframe_resource.Finish(true /* body_loader_finished */); + + auto* child_frame = To<WebLocalFrameImpl>(MainFrame().FirstChild()); + auto* child_document = child_frame->GetFrame()->GetDocument(); + + // Should console log a error message. + auto& console_messages = static_cast<frame_test_helpers::TestWebFrameClient*>( + child_frame->Client()) + ->ConsoleMessages(); + + ASSERT_EQ(console_messages.size(), 1u); + EXPECT_TRUE(console_messages.front().Contains("document policy")); + + // Should replace the document's origin with an opaque origin. + EXPECT_EQ(child_document->Url(), SecurityOrigin::UrlWithUniqueOpaqueOrigin()); +} + TEST_F(DocumentLoaderTest, CommitsDeferredOnSameOriginNavigation) { const KURL& requestor_url = KURL(NullURL(), "https://www.example.com/foo.html");
diff --git a/third_party/blink/renderer/core/loader/frame_loader.cc b/third_party/blink/renderer/core/loader/frame_loader.cc index aea8f77..8ccc4fbe 100644 --- a/third_party/blink/renderer/core/loader/frame_loader.cc +++ b/third_party/blink/renderer/core/loader/frame_loader.cc
@@ -1032,12 +1032,12 @@ } void FrameLoader::DidAccessInitialDocument() { - if (frame_->IsMainFrame()) { + if (frame_->IsMainFrame() && !has_accessed_initial_document_) { + has_accessed_initial_document_ = true; // Forbid script execution to prevent re-entering V8, since this is called // from a binding security check. ScriptForbiddenScope forbid_scripts; - if (Client()) - Client()->DidAccessInitialDocument(); + frame_->GetLocalFrameHostRemote().DidAccessInitialDocument(); } }
diff --git a/third_party/blink/renderer/core/loader/frame_loader.h b/third_party/blink/renderer/core/loader/frame_loader.h index 59a2994..061f129 100644 --- a/third_party/blink/renderer/core/loader/frame_loader.h +++ b/third_party/blink/renderer/core/loader/frame_loader.h
@@ -238,6 +238,8 @@ bool IsClientNavigationInitialHistoryLoad(); + bool HasAccessedInitialDocument() { return has_accessed_initial_document_; } + static bool NeedsHistoryItemRestore(WebFrameLoadType type); private: @@ -325,6 +327,7 @@ bool dispatching_did_clear_window_object_in_main_world_; bool detached_; bool committing_navigation_ = false; + bool has_accessed_initial_document_ = false; WebScopedVirtualTimePauser virtual_time_pauser_;
diff --git a/third_party/blink/renderer/core/loader/threaded_icon_loader.cc b/third_party/blink/renderer/core/loader/threaded_icon_loader.cc index 355a5542..2240475c 100644 --- a/third_party/blink/renderer/core/loader/threaded_icon_loader.cc +++ b/third_party/blink/renderer/core/loader/threaded_icon_loader.cc
@@ -110,7 +110,8 @@ std::unique_ptr<ImageDecoder> decoder = ImageDecoder::Create( std::move(data), /* data_complete= */ true, ImageDecoder::kAlphaPremultiplied, ImageDecoder::kDefaultBitDepth, - ColorBehavior::TransformToSRGB()); + ColorBehavior::TransformToSRGB(), + ImageDecoder::OverrideAllowDecodeToYuv::kDeny); if (!decoder) { notify_complete(-1.0);
diff --git a/third_party/blink/renderer/core/testing/fake_local_frame_host.cc b/third_party/blink/renderer/core/testing/fake_local_frame_host.cc index baf1860..84d2f93 100644 --- a/third_party/blink/renderer/core/testing/fake_local_frame_host.cc +++ b/third_party/blink/renderer/core/testing/fake_local_frame_host.cc
@@ -70,6 +70,8 @@ blink::mojom::blink::ScrollDirection direction, ui::input_types::ScrollGranularity granularity) {} +void FakeLocalFrameHost::DidAccessInitialDocument() {} + void FakeLocalFrameHost::BindFrameHostReceiver( mojo::ScopedInterfaceEndpointHandle handle) { receiver_.Bind(mojo::PendingAssociatedReceiver<mojom::blink::LocalFrameHost>(
diff --git a/third_party/blink/renderer/core/testing/fake_local_frame_host.h b/third_party/blink/renderer/core/testing/fake_local_frame_host.h index 4d9feaa..6fbceda 100644 --- a/third_party/blink/renderer/core/testing/fake_local_frame_host.h +++ b/third_party/blink/renderer/core/testing/fake_local_frame_host.h
@@ -50,6 +50,7 @@ void BubbleLogicalScrollInParentFrame( blink::mojom::blink::ScrollDirection direction, ui::input_types::ScrollGranularity granularity) override; + void DidAccessInitialDocument() override; private: void BindFrameHostReceiver(mojo::ScopedInterfaceEndpointHandle handle);
diff --git a/third_party/blink/renderer/core/testing/null_execution_context.cc b/third_party/blink/renderer/core/testing/null_execution_context.cc index abd9ec3..7de27c4 100644 --- a/third_party/blink/renderer/core/testing/null_execution_context.cc +++ b/third_party/blink/renderer/core/testing/null_execution_context.cc
@@ -23,9 +23,10 @@ MakeGarbageCollected<Agent>(v8::Isolate::GetCurrent(), base::UnguessableToken::Null()), origin_trial_context, - nullptr, + nullptr /* origin */, WebSandboxFlags::kNone, - nullptr, + nullptr /* feature_policy */, + nullptr /* document_policy */, SecureContextMode::kSecureContext), scheduler_(scheduler::CreateDummyFrameScheduler()) {}
diff --git a/third_party/blink/renderer/core/testing/sim/sim_request.cc b/third_party/blink/renderer/core/testing/sim/sim_request.cc index 1716513f..dd39773 100644 --- a/third_party/blink/renderer/core/testing/sim/sim_request.cc +++ b/third_party/blink/renderer/core/testing/sim/sim_request.cc
@@ -84,7 +84,7 @@ client_->DidReceiveData(data.data(), data.size()); } -void SimRequestBase::Finish() { +void SimRequestBase::Finish(bool body_loader_finished) { if (!started_) ServePending(); DCHECK(started_); @@ -94,7 +94,8 @@ total_encoded_data_length_, total_encoded_data_length_); } else { if (navigation_body_loader_) { - navigation_body_loader_->Finish(); + if (!body_loader_finished) + navigation_body_loader_->Finish(); } else { // TODO(esprehn): Is claiming a request time of 0 okay for tests? client_->DidFinishLoading(base::TimeTicks(), total_encoded_data_length_,
diff --git a/third_party/blink/renderer/core/testing/sim/sim_request.h b/third_party/blink/renderer/core/testing/sim/sim_request.h index cd208356..1400a2a 100644 --- a/third_party/blink/renderer/core/testing/sim/sim_request.h +++ b/third_party/blink/renderer/core/testing/sim/sim_request.h
@@ -46,7 +46,8 @@ void Write(const Vector<char>& data); // Finish the response, this is as if the server closed the connection. - void Finish(); + // If |navigation_body_loader| already finished, skip calling Finish on it. + void Finish(bool body_loader_finished = false); // Shorthand to complete a request (start/write/finish) sequence in order. void Complete(const String& data = String());
diff --git a/third_party/blink/renderer/core/workers/worker_or_worklet_global_scope.cc b/third_party/blink/renderer/core/workers/worker_or_worklet_global_scope.cc index 4a7772ce..edf45d8 100644 --- a/third_party/blink/renderer/core/workers/worker_or_worklet_global_scope.cc +++ b/third_party/blink/renderer/core/workers/worker_or_worklet_global_scope.cc
@@ -183,7 +183,8 @@ MakeGarbageCollected<OriginTrialContext>(), origin, WebSandboxFlags::kNone, - nullptr, + nullptr, /* feature_policy */ + nullptr, /* document_policy */ // Until there are APIs that are available in workers or // or worklets that require a privileged context test // that checks ancestors, just do a simple check here.
diff --git a/third_party/blink/renderer/modules/remote_objects/remote_object.cc b/third_party/blink/renderer/modules/remote_objects/remote_object.cc index 2cffcbd..b604dc5 100644 --- a/third_party/blink/renderer/modules/remote_objects/remote_object.cc +++ b/third_party/blink/renderer/modules/remote_objects/remote_object.cc
@@ -25,8 +25,7 @@ v8::Isolate* isolate, const std::string& property) { // TODO(crbug.com/794320): implement this. - ignore_result(object_id_); - return v8::Local<v8::Value>(); + return gin::StringToSymbol(isolate, property); } std::vector<std::string> RemoteObject::EnumerateNamedProperties(
diff --git a/third_party/blink/renderer/modules/xr/xr.cc b/third_party/blink/renderer/modules/xr/xr.cc index 7f84b3f..478d187 100644 --- a/third_party/blink/renderer/modules/xr/xr.cc +++ b/third_party/blink/renderer/modules/xr/xr.cc
@@ -232,7 +232,6 @@ if (supported) { resolver_->Resolve(); } else { - DVLOG(2) << __func__ << ": session is unsupported - throwing exception"; RejectWithDOMException(DOMExceptionCode::kNotSupportedError, kSessionNotSupported, exception_state); } @@ -648,9 +647,6 @@ if (session_mode == device::mojom::blink::XRSessionMode::kImmersiveAr && !RuntimeEnabledFeatures::WebXRARModuleEnabled(doc)) { - DVLOG(2) << __func__ - << ": Immersive AR session is only supported if WebXRARModule " - "feature is enabled"; query->Resolve(false); return promise; }
diff --git a/third_party/blink/renderer/modules/xr/xr.h b/third_party/blink/renderer/modules/xr/xr.h index 499c568..9680fd53 100644 --- a/third_party/blink/renderer/modules/xr/xr.h +++ b/third_party/blink/renderer/modules/xr/xr.h
@@ -29,6 +29,33 @@ class XRFrameProvider; class XRSessionInit; +// Implementation of the XR interface according to +// https://immersive-web.github.io/webxr/#xr-interface . This is created lazily +// via the NavigatorXR class on first access to the navigator.xr attribute, and +// disposed when the execution context is destroyed or on mojo communication +// errors with the browser/device process. +// +// When the XR object is used for promises, it uses query objects to store state +// including the associated ScriptPromiseResolver. These query objects are owned +// by the XR object and remain alive until the promise is resolved or rejected. +// (See comments below for PendingSupportsSessionQuery and +// PendingRequestSessionQuery.) These query objects are destroyed and any +// outstanding promises rejected when the XR object is disposed. +// +// The XR object owns mojo connections with the Browser process through +// VRService, used for capability queries and session lifetime +// management. The XR object is also the receiver for the VRServiceClient. +// +// The XR object owns mojo connections with the Device process (either a +// separate utility process, or implemented as part of the Browser process, +// depending on the runtime and options) through XRFrameProvider and +// XREnvironmentIntegrationProvider. These are used to transport per-frame data +// such as image data and input poses. These are lazily created when first +// needed for a sensor-backed session (all except sensorless inline sessions), +// and destroyed when the XR object is disposed. +// +// The XR object keeps weak references to XRSession objects after they were +// returned through a successful requestSession promise, but does not own them. class XR final : public EventTargetWithInlineData, public ContextLifecycleObserver, public device::mojom::blink::VRServiceClient, @@ -117,7 +144,8 @@ // Encapsulates blink-side `XR::requestSession()` call. It is a wrapper around // ScriptPromiseResolver that allows us to add additional logic as certain - // things related to promise's life cycle happen. + // things related to promise's life cycle happen. Instances are owned + // by the XR object, see outstanding_request_queries_ below. class PendingRequestSessionQuery final : public GarbageCollected<PendingRequestSessionQuery> { public: @@ -197,9 +225,10 @@ static device::mojom::blink::XRSessionOptionsPtr XRSessionOptionsFromQuery( const PendingRequestSessionQuery& query); - // Encapsulates blink-side `XR::supportsSession()` call. It is a wrapper + // Encapsulates blink-side `XR::isSessionSupported()` call. It is a wrapper // around ScriptPromiseResolver that allows us to add additional logic as - // certain things related to promise's life cycle happen. + // certain things related to promise's life cycle happen. Instances are owned + // by the XR object, see outstanding_support_queries_ below. class PendingSupportsSessionQuery final : public GarbageCollected<PendingSupportsSessionQuery> { public: @@ -312,6 +341,8 @@ const int64_t ukm_source_id_; + // The XR object owns outstanding pending session queries, these live until + // the underlying promise is either resolved or rejected. HeapHashSet<Member<PendingSupportsSessionQuery>> outstanding_support_queries_; HeapHashSet<Member<PendingRequestSessionQuery>> outstanding_request_queries_; bool has_outstanding_immersive_request_ = false;
diff --git a/third_party/blink/renderer/platform/mojo/blink_typemaps.gni b/third_party/blink/renderer/platform/mojo/blink_typemaps.gni index 303e822..3b36f42 100644 --- a/third_party/blink/renderer/platform/mojo/blink_typemaps.gni +++ b/third_party/blink/renderer/platform/mojo/blink_typemaps.gni
@@ -13,6 +13,7 @@ "//services/network/public/cpp/mutable_network_traffic_annotation_tag.typemap", "//services/network/public/cpp/site_for_cookies.typemap", "//services/network/public/cpp/p2p.typemap", + "//third_party/blink/public/common/messaging/message_port_descriptor.typemap", "//third_party/blink/renderer/core/messaging/blink_cloneable_message.typemap", "//third_party/blink/renderer/core/messaging/blink_transferable_message.typemap", "//third_party/blink/renderer/modules/indexeddb/indexed_db_blink.typemap",
diff --git a/third_party/blink/renderer/platform/network/http_names.json5 b/third_party/blink/renderer/platform/network/http_names.json5 index 71e696a..61c1791 100644 --- a/third_party/blink/renderer/platform/network/http_names.json5 +++ b/third_party/blink/renderer/platform/network/http_names.json5
@@ -31,6 +31,7 @@ "Content-Security-Policy", "Content-Security-Policy-Report-Only", "Content-Type", + "Document-Policy", "ETag", "Expires", "Date", @@ -55,6 +56,7 @@ "Referrer-Policy", "Refresh", "Resource-Freshness", + "Require-Document-Policy", "Save-Data", "Sec-CH-Lang", "Sec-Required-CSP",
diff --git a/third_party/blink/renderer/platform/wtf/list_hash_set.h b/third_party/blink/renderer/platform/wtf/list_hash_set.h index 062c6ac..7856b7be 100644 --- a/third_party/blink/renderer/platform/wtf/list_hash_set.h +++ b/third_party/blink/renderer/platform/wtf/list_hash_set.h
@@ -58,7 +58,7 @@ template <typename Set> class ListHashSetConstReverseIterator; -template <typename ValueArg> +template <typename ValueArg, typename Allocator> class ListHashSetNodeBase; template <typename ValueArg, typename Allocator> class ListHashSetNode; @@ -272,9 +272,9 @@ typename Allocator::AllocatorProvider allocator_provider_; }; -template <typename T> +template <typename T, typename Allocator> class ListHashSetNodeBasePointer { - using NodeType = ListHashSetNodeBase<T>; + using NodeType = ListHashSetNodeBase<T, Allocator>; public: ListHashSetNodeBasePointer& operator=( @@ -285,7 +285,7 @@ template <typename U> ListHashSetNodeBasePointer& operator=( - const ListHashSetNodeBasePointer<U>& other) { + const ListHashSetNodeBasePointer<U, Allocator>& other) { SetSafe(other); return *this; } @@ -308,12 +308,23 @@ NodeType& operator*() const { return *Get(); } private: + template <bool = Allocator::kIsGarbageCollected> void SetSafe(NodeType* node) { - return AsAtomicPtr(&node_)->store(node, std::memory_order_relaxed); + AsAtomicPtr(&node_)->store(node, std::memory_order_relaxed); } + template <> + void SetSafe<false>(NodeType* node) { + node_ = node; + } + + template <bool = Allocator::kIsGarbageCollected> NodeType* GetSafe() const { return AsAtomicPtr(&node_)->load(std::memory_order_relaxed); } + template <> + NodeType* GetSafe<false>() const { + return node_; + } NodeType* node_ = nullptr; @@ -324,7 +335,7 @@ // ListHashSetNode has this base class to hold the members because the MSVC // compiler otherwise gets into circular template dependencies when trying to do // sizeof on a node. -template <typename ValueArg> +template <typename ValueArg, typename Allocator> class ListHashSetNodeBase { DISALLOW_NEW(); @@ -334,8 +345,8 @@ public: ValueArg value_; - ListHashSetNodeBasePointer<ValueArg> prev_; - ListHashSetNodeBasePointer<ValueArg> next_; + ListHashSetNodeBasePointer<ValueArg, Allocator> prev_; + ListHashSetNodeBasePointer<ValueArg, Allocator> next_; #if DCHECK_IS_ON() bool is_allocated_ = true; #endif @@ -346,7 +357,7 @@ struct ListHashSetAllocator : public PartitionAllocator { typedef PartitionAllocator TableAllocator; typedef ListHashSetNode<ValueArg, ListHashSetAllocator> Node; - typedef ListHashSetNodeBase<ValueArg> NodeBase; + typedef ListHashSetNodeBase<ValueArg, ListHashSetAllocator> NodeBase; class AllocatorProvider { DISALLOW_NEW(); @@ -451,19 +462,19 @@ }; template <typename ValueArg, typename AllocatorArg> -class ListHashSetNode : public ListHashSetNodeBase<ValueArg> { +class ListHashSetNode : public ListHashSetNodeBase<ValueArg, AllocatorArg> { public: typedef AllocatorArg NodeAllocator; typedef ValueArg Value; template <typename U> ListHashSetNode(U&& value) - : ListHashSetNodeBase<ValueArg>(std::forward<U>(value)) {} + : ListHashSetNodeBase<ValueArg, AllocatorArg>(std::forward<U>(value)) {} void* operator new(size_t, NodeAllocator* allocator) { - static_assert( - sizeof(ListHashSetNode) == sizeof(ListHashSetNodeBase<ValueArg>), - "please add any fields to the base"); + static_assert(sizeof(ListHashSetNode) == + sizeof(ListHashSetNodeBase<ValueArg, AllocatorArg>), + "please add any fields to the base"); return allocator->AllocateNode(); }
diff --git a/third_party/blink/web_tests/TestExpectations b/third_party/blink/web_tests/TestExpectations index 629fa67..e6e994d 100644 --- a/third_party/blink/web_tests/TestExpectations +++ b/third_party/blink/web_tests/TestExpectations
@@ -1786,18 +1786,30 @@ # - # - -# Group 1: -crbug.com/1035582 fast/forms/basic-buttons.html [ Failure Pass ] -crbug.com/1035582 fast/forms/basic-inputs.html [ Failure Pass ] -crbug.com/1035582 fast/forms/button/button-align.html [ Failure Pass ] -crbug.com/1035582 fast/forms/button/button-white-space.html [ Failure Pass ] -crbug.com/1035582 fast/forms/button-sizes.html [ Failure Pass ] -crbug.com/1035582 fast/forms/button-style-color.html [ Failure Pass ] -crbug.com/1035582 fast/forms/button-table-styles.html [ Failure Pass ] -crbug.com/1035582 fast/forms/button-text-transform.html [ Failure Pass ] +# - +# Group 1 Leftovers: +crbug.com/1035582 fast/forms/datetimelocal-multiple-fields/datetimelocal-multiple-fields-mouse-events.html [ Failure Pass ] +crbug.com/1035582 fast/forms/calendar-picker/calendar-picker-datetimelocal.html [ Failure Pass ] +crbug.com/1035582 fast/forms/calendar-picker/calendar-picker-datetimelocal-with-step.html [ Failure Pass ] +crbug.com/1035582 fast/forms/calendar-picker/calendar-picker-should-not-change-datetimelocal-time.html [ Failure Pass ] +crbug.com/1035582 fast/forms/calendar-picker/calendar-picker-with-step.html [ Failure Pass ] +crbug.com/1035582 fast/forms/calendar-picker/datetimelocal-picker-choose-default-value-after-set-value.html [ Failure Pass ] +crbug.com/1035582 fast/forms/calendar-picker/month-picker-choose-default-value-after-set-value.html [ Failure Pass ] +crbug.com/1035582 fast/forms/calendar-picker/month-picker-key-operations.html [ Failure Pass ] +crbug.com/1035582 fast/forms/calendar-picker/month-picker-mouse-operations.html [ Failure Pass ] +crbug.com/1035582 fast/forms/calendar-picker/month-picker-touch-operations.html [ Failure Pass ] +crbug.com/1035582 fast/forms/calendar-picker/week-picker-key-operations.html [ Failure Pass ] +crbug.com/1035582 fast/forms/date-multiple-fields/date-clearbutton-preventdefault-mousecapture-status.html [ Failure Pass ] +crbug.com/1035582 fast/forms/date-multiple-fields/date-multiple-fields-clearbutton-change-and-input-events.html [ Failure Pass ] +crbug.com/1035582 fast/forms/date-multiple-fields/date-multiple-fields-mouse-events.html [ Failure Pass ] +crbug.com/1035582 fast/forms/date-multiple-fields/date-multiple-fields-spinbutton-change-and-input-events.html [ Failure Pass ] +crbug.com/1035582 fast/forms/date-multiple-fields/date-multiple-fields-wheel-event.html [ Failure Pass ] +crbug.com/1035582 fast/forms/datetimelocal-multiple-fields/datetimelocal-multiple-fields-clearbutton-change-and-input-events.html [ Failure Pass ] +crbug.com/1035582 fast/forms/datetimelocal-multiple-fields/datetimelocal-multiple-fields-spinbutton-change-and-input-events.html [ Failure Pass ] +crbug.com/1035582 fast/forms/datetimelocal-multiple-fields/datetimelocal-multiple-fields-wheel-event.html [ Failure Pass ] +# Focus ring: crbug.com/1035582 fast/forms/calendar-picker/calendar-picker-appearance-ar.html [ Failure Pass ] crbug.com/1035582 fast/forms/calendar-picker/calendar-picker-appearance-coarse.html [ Failure Pass ] -crbug.com/1035582 fast/forms/calendar-picker/calendar-picker-appearance.html [ Failure Pass ] crbug.com/1035582 fast/forms/calendar-picker/calendar-picker-appearance-minimum-date.html [ Failure Pass ] crbug.com/1035582 fast/forms/calendar-picker/calendar-picker-appearance-required-ar.html [ Failure Pass ] crbug.com/1035582 fast/forms/calendar-picker/calendar-picker-appearance-required.html [ Failure Pass ] @@ -1805,124 +1817,47 @@ crbug.com/1035582 fast/forms/calendar-picker/calendar-picker-appearance-step.html [ Failure Pass ] crbug.com/1035582 fast/forms/calendar-picker/calendar-picker-appearance-zoom125.html [ Failure Pass ] crbug.com/1035582 fast/forms/calendar-picker/calendar-picker-appearance-zoom200.html [ Failure Pass ] -crbug.com/1035582 fast/forms/calendar-picker/calendar-picker-datetimelocal.html [ Failure Pass ] -crbug.com/1035582 fast/forms/calendar-picker/calendar-picker-datetimelocal-with-step.html [ Failure Pass ] -crbug.com/1035582 fast/forms/calendar-picker/calendar-picker-should-not-change-datetimelocal-time.html [ Failure Pass ] -crbug.com/1035582 fast/forms/calendar-picker/calendar-picker-with-step.html [ Failure Pass ] -crbug.com/1035582 fast/forms/calendar-picker/datetimelocal-picker-choose-default-value-after-set-value.html [ Failure Pass ] -crbug.com/1035582 fast/forms/calendar-picker/month-picker-appearance.html [ Failure Pass ] +crbug.com/1035582 fast/forms/calendar-picker/calendar-picker-appearance.html [ Failure Pass ] crbug.com/1035582 fast/forms/calendar-picker/month-picker-appearance-step.html [ Failure Pass ] -crbug.com/1035582 fast/forms/calendar-picker/month-picker-choose-default-value-after-set-value.html [ Failure Pass ] -crbug.com/1035582 fast/forms/calendar-picker/month-picker-key-operations.html [ Failure Pass ] -crbug.com/1035582 fast/forms/calendar-picker/month-picker-mouse-operations.html [ Failure Pass ] -crbug.com/1035582 fast/forms/calendar-picker/month-picker-touch-operations.html [ Failure Pass ] -crbug.com/1035582 fast/forms/calendar-picker/week-picker-appearance.html [ Failure Pass ] +crbug.com/1035582 fast/forms/calendar-picker/month-picker-appearance.html [ Failure Pass ] crbug.com/1035582 fast/forms/calendar-picker/week-picker-appearance-step.html [ Failure Pass ] -crbug.com/1035582 fast/forms/calendar-picker/week-picker-key-operations.html [ Failure Pass ] -crbug.com/1035582 fast/forms/color/color-suggestion-picker-appearance.html [ Failure Pass ] +crbug.com/1035582 fast/forms/calendar-picker/week-picker-appearance.html [ Failure Pass ] crbug.com/1035582 fast/forms/color/color-suggestion-picker-appearance-zoom125.html [ Failure Pass ] +crbug.com/1035582 fast/forms/color/color-suggestion-picker-appearance.html [ Failure Pass ] crbug.com/1035582 fast/forms/color/color-suggestion-picker-one-row-appearance.html [ Failure Pass ] crbug.com/1035582 fast/forms/color/color-suggestion-picker-two-row-appearance.html [ Failure Pass ] crbug.com/1035582 fast/forms/color/color-suggestion-picker-with-scrollbar-appearance.html [ Failure Pass ] -crbug.com/1035582 fast/forms/color/input-appearance-color.html [ Failure Pass ] -crbug.com/1035582 fast/forms/control-restrict-line-height.html [ Failure Pass ] -crbug.com/1035582 fast/forms/datalist/input-appearance-range-with-datalist.html [ Failure Pass ] -crbug.com/1035582 fast/forms/datalist/input-appearance-range-with-datalist-zoomed.html [ Failure Pass ] -crbug.com/1035582 fast/forms/datalist/input-appearance-range-with-padding-with-datalist.html [ Failure Pass ] crbug.com/1035582 fast/forms/date/date-appearance-basic.html [ Failure Pass ] -crbug.com/1035582 fast/forms/date/date-appearance-l10n.html [ Failure Pass ] -crbug.com/1035582 fast/forms/date-multiple-fields/date-clearbutton-preventdefault-mousecapture-status.html [ Failure Pass ] -crbug.com/1035582 fast/forms/date-multiple-fields/date-multiple-fields-clearbutton-change-and-input-events.html [ Failure Pass ] -crbug.com/1035582 fast/forms/date-multiple-fields/date-multiple-fields-mouse-events.html [ Failure Pass ] -crbug.com/1035582 fast/forms/date-multiple-fields/date-multiple-fields-spinbutton-change-and-input-events.html [ Failure Pass ] -crbug.com/1035582 fast/forms/date-multiple-fields/date-multiple-fields-wheel-event.html [ Failure Pass ] crbug.com/1035582 fast/forms/datetimelocal/datetimelocal-appearance-basic.html [ Failure Pass ] -crbug.com/1035582 fast/forms/datetimelocal/datetimelocal-appearance-l10n.html [ Failure Pass ] -crbug.com/1035582 fast/forms/datetimelocal-multiple-fields/datetimelocal-multiple-fields-clearbutton-change-and-input-events.html [ Failure Pass ] -crbug.com/1035582 fast/forms/datetimelocal-multiple-fields/datetimelocal-multiple-fields-mouse-events.html [ Failure Pass ] -crbug.com/1035582 fast/forms/datetimelocal-multiple-fields/datetimelocal-multiple-fields-spinbutton-change-and-input-events.html [ Failure Pass ] -crbug.com/1035582 fast/forms/datetimelocal-multiple-fields/datetimelocal-multiple-fields-wheel-event.html [ Failure Pass ] -crbug.com/1035582 fast/forms/file/file-input-direction.html [ Failure Pass ] -crbug.com/1035582 fast/forms/form-element-geometry.html [ Failure Pass ] -crbug.com/1035582 fast/forms/input-appearance-height.html [ Failure Pass ] -crbug.com/1035582 fast/forms/input-button-sizes.html [ Failure Pass ] -crbug.com/1035582 fast/forms/input-value.html [ Failure Pass ] + + # - # - # - # - # - -# Group 2 +# Group 2 Leftovers: +crbug.com/1035582 fast/forms/date-multiple-fields/* [ Skip ] +crbug.com/1035582 fast/forms/datetimelocal-multiple-fields/* [ Skip ] +crbug.com/1035582 fast/forms/month-multiple-fields/* [ Skip ] +crbug.com/1035582 fast/forms/week-multiple-fields/* [ Skip ] +crbug.com/1035582 fast/forms/time-multiple-fields/* [ Skip ] +crbug.com/1035582 fast/forms/suggestion-picker/* [ Skip ] +crbug.com/1035582 fast/forms/select/listbox-tap.html [ Failure Pass ] +# Uncomment the one on 5715: +crbug.com/1035582 fast/forms/suggested-value.html [ Failure Pass ] +crbug.com/1035582 virtual/form-controls-refresh-disabled/fast/forms/select/menulist-update-text-popup.html [ Failure Pass ] +# Focus ring: crbug.com/1035582 fast/forms/month/month-appearance-basic.html [ Failure Pass ] -crbug.com/1035582 fast/forms/month/month-appearance-l10n.html [ Failure Pass ] -crbug.com/1035582 fast/forms/month-multiple-fields/month-multiple-fields-clearbutton-change-and-input-events.html [ Failure Pass ] -crbug.com/1035582 fast/forms/month-multiple-fields/month-multiple-fields-mouse-events.html [ Failure Pass ] -crbug.com/1035582 fast/forms/month-multiple-fields/month-multiple-fields-spinbutton-change-and-input-events.html [ Failure Pass ] -crbug.com/1035582 fast/forms/month-multiple-fields/month-multiple-fields-wheel-event.html [ Failure Pass ] crbug.com/1035582 fast/forms/number/number-appearance-datalist.html [ Failure Pass ] crbug.com/1035582 fast/forms/number/number-appearance-spinbutton-disabled-readonly.html [ Failure Pass ] -crbug.com/1035582 fast/forms/placeholder-position.html [ Failure Pass ] crbug.com/1035582 fast/forms/range/input-appearance-range.html [ Failure Pass ] -crbug.com/1035582 fast/forms/range/range-appearance-basic.html [ Failure Pass ] -crbug.com/1035582 fast/forms/range/slider-padding.html [ Failure Pass ] -crbug.com/1035582 fast/forms/search/search-vertical-alignment.html [ Failure Pass ] -crbug.com/1035582 fast/forms/select/basic-selects.html [ Failure Pass ] -crbug.com/1035582 fast/forms/select/disabled-select-change-index.html [ Failure Pass ] -crbug.com/1035582 fast/forms/select/HTMLOptionElement_label02.html [ Failure Pass ] -crbug.com/1035582 fast/forms/select/HTMLOptionElement_label03.html [ Failure Pass ] -crbug.com/1035582 fast/forms/select/HTMLOptionElement_label04.html [ Failure Pass ] crbug.com/1035582 fast/forms/select/listbox-appearance-basic.html [ Failure Pass ] -crbug.com/1035582 fast/forms/select/listbox-bidi-align.html [ Failure Pass ] -crbug.com/1035582 fast/forms/select/listbox-tap.html [ Failure Pass ] -crbug.com/1035582 fast/forms/select/menulist-appearance-basic.html [ Failure Pass ] -crbug.com/1035582 fast/forms/select/menulist-appearance-rtl.html [ Failure Pass ] -crbug.com/1035582 fast/forms/select/menulist-update-text-popup.html [ Failure Pass ] -crbug.com/1035582 fast/forms/select/option-strip-whitespace.html [ Failure Pass ] -crbug.com/1035582 fast/forms/select/select-align.html [ Failure Pass ] -crbug.com/1035582 fast/forms/select/select-disabled-appearance.html [ Failure Pass ] -crbug.com/1035582 fast/forms/select/select-initial-position.html [ Failure Pass ] -crbug.com/1035582 fast/forms/select/select-selected.html [ Failure Pass ] -crbug.com/1035582 fast/forms/select/select-writing-direction-natural.html [ Failure Pass ] -crbug.com/1035582 fast/forms/submit/submit-appearance-basic.html [ Failure Pass ] -# Comment back in the Win7 version of this file at line 5896: -crbug.com/1035582 fast/forms/suggested-value.html [ Failure Pass ] -crbug.com/1035582 fast/forms/suggestion-picker/date-suggestion-picker-appearance.html [ Failure Pass ] -crbug.com/1035582 fast/forms/suggestion-picker/date-suggestion-picker-appearance-rtl.html [ Failure Pass ] -crbug.com/1035582 fast/forms/suggestion-picker/date-suggestion-picker-appearance-with-scroll-bar.html [ Failure Pass ] -crbug.com/1035582 fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance.html [ Failure Pass ] -crbug.com/1035582 fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-locale-hebrew.html [ Failure Pass ] -crbug.com/1035582 fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-rtl.html [ Failure Pass ] -crbug.com/1035582 fast/forms/suggestion-picker/datetimelocal-suggestion-picker-key-operations.html [ Failure Pass ] -crbug.com/1035582 fast/forms/suggestion-picker/month-suggestion-picker-appearance.html [ Failure Pass ] -crbug.com/1035582 fast/forms/suggestion-picker/month-suggestion-picker-appearance-rtl.html [ Failure Pass ] -crbug.com/1035582 fast/forms/suggestion-picker/month-suggestion-picker-appearance-with-scroll-bar.html [ Failure Pass ] -crbug.com/1035582 fast/forms/suggestion-picker/month-suggestion-picker-key-operations.html [ Failure Pass Timeout ] -crbug.com/1035582 fast/forms/suggestion-picker/time-suggestion-picker-appearance.html [ Failure Pass ] -crbug.com/1035582 fast/forms/suggestion-picker/time-suggestion-picker-appearance-rtl.html [ Failure Pass ] -crbug.com/1035582 fast/forms/suggestion-picker/time-suggestion-picker-appearance-with-scroll-bar.html [ Failure Pass ] -crbug.com/1035582 fast/forms/suggestion-picker/time-suggestion-picker-key-operations.html [ Failure Pass ] -crbug.com/1035582 fast/forms/suggestion-picker/time-suggestion-picker-min-max-attribute.html [ Failure Pass ] -crbug.com/1035582 fast/forms/suggestion-picker/time-suggestion-picker-step-attribute.html [ Failure Pass ] -crbug.com/1035582 fast/forms/suggestion-picker/week-suggestion-picker-appearance.html [ Failure Pass ] -crbug.com/1035582 fast/forms/suggestion-picker/week-suggestion-picker-appearance-rtl.html [ Failure Pass ] -crbug.com/1035582 fast/forms/suggestion-picker/week-suggestion-picker-appearance-with-scroll-bar.html [ Failure Pass ] -crbug.com/1035582 fast/forms/textarea/basic-textareas.html [ Failure Pass ] -crbug.com/1035582 fast/forms/textarea/basic-textareas-quirks.html [ Failure Pass ] -crbug.com/1035582 fast/forms/textarea/textarea-appearance-basic.html [ Failure Pass ] -crbug.com/1035582 fast/forms/text/input-disabled-color.html [ Failure Pass ] -crbug.com/1035582 fast/forms/text/text-appearance-basic.html [ Failure Pass ] crbug.com/1035582 fast/forms/text/text-appearance-datalist.html [ Failure Pass ] -crbug.com/1035582 fast/forms/time-multiple-fields/time-multiple-fields-clearbutton-change-and-input-events.html [ Failure Pass ] -crbug.com/1035582 fast/forms/time-multiple-fields/time-multiple-fields-mouse-events.html [ Failure Pass ] -crbug.com/1035582 fast/forms/time-multiple-fields/time-multiple-fields-spinbutton-change-and-input-events.html [ Failure Pass ] -crbug.com/1035582 fast/forms/time-multiple-fields/time-multiple-fields-spinbutton-click-in-iframe.html [ Failure Pass ] -crbug.com/1035582 fast/forms/time-multiple-fields/time-multiple-fields-wheel-event.html [ Failure Pass ] crbug.com/1035582 fast/forms/time/time-appearance-basic.html [ Failure Pass ] -crbug.com/1035582 fast/forms/week-multiple-fields/week-multiple-fields-clearbutton-change-and-input-events.html [ Failure Pass ] -crbug.com/1035582 fast/forms/week-multiple-fields/week-multiple-fields-mouse-events.html [ Failure Pass ] -crbug.com/1035582 fast/forms/week-multiple-fields/week-multiple-fields-spinbutton-change-and-input-events.html [ Failure Pass ] -crbug.com/1035582 fast/forms/week-multiple-fields/week-multiple-fields-wheel-event.html [ Failure Pass ] crbug.com/1035582 fast/forms/week/week-appearance-basic.html [ Failure Pass ] + + # - # - # - @@ -2155,132 +2090,22 @@ # - # - # - -# - -# - -# Group 5 (Win/Linux) -crbug.com/1035582 [ Win ] compositing/overflow/do-not-paint-outline-into-composited-scrolling-contents.html [ Failure Pass ] -crbug.com/1035582 [ Win ] compositing/overflow/theme-affects-visual-overflow.html [ Failure Pass ] -crbug.com/1035582 [ Win ] compositing/overflow/update-widget-positions-on-nested-frames-and-scrollers.html [ Failure Pass ] -crbug.com/1035582 [ Win ] css1/box_properties/acid_test.html [ Failure Pass ] -crbug.com/1035582 [ Win ] css2.1/t09-c5526c-display-00-e.html [ Failure Pass ] -crbug.com/1035582 [ Win ] css3/flexbox/button.html [ Failure Pass ] -crbug.com/1035582 [ Win ] css3/selectors3/html/css3-modsel-161.html [ Failure Pass ] -crbug.com/1035582 [ Win ] css3/selectors3/html/css3-modsel-23.html [ Failure Pass ] -crbug.com/1035582 [ Win ] css3/selectors3/html/css3-modsel-24.html [ Failure Pass ] -crbug.com/1035582 [ Win ] css3/selectors3/html/css3-modsel-25.html [ Failure Pass ] -crbug.com/1035582 [ Win ] css3/selectors3/html/css3-modsel-64.html [ Failure Pass ] -crbug.com/1035582 [ Win ] css3/selectors3/html/css3-modsel-68.html [ Failure Pass ] -crbug.com/1035582 [ Win ] css3/selectors3/html/css3-modsel-69.html [ Failure Pass ] -crbug.com/1035582 [ Win ] css3/selectors3/html/css3-modsel-70.html [ Failure Pass ] -crbug.com/1035582 [ Win ] css3/selectors3/xhtml/css3-modsel-161.xml [ Failure Pass ] -crbug.com/1035582 [ Win ] css3/selectors3/xhtml/css3-modsel-23.xml [ Failure Pass ] -crbug.com/1035582 [ Win ] css3/selectors3/xhtml/css3-modsel-24.xml [ Failure Pass ] -crbug.com/1035582 [ Win ] css3/selectors3/xhtml/css3-modsel-25.xml [ Failure Pass ] -crbug.com/1035582 [ Win ] css3/selectors3/xhtml/css3-modsel-64.xml [ Failure Pass ] -crbug.com/1035582 [ Win ] css3/selectors3/xhtml/css3-modsel-68.xml [ Failure Pass ] -crbug.com/1035582 [ Win ] css3/selectors3/xhtml/css3-modsel-69.xml [ Failure Pass ] -crbug.com/1035582 [ Win ] css3/selectors3/xhtml/css3-modsel-70.xml [ Failure Pass ] -crbug.com/1035582 [ Win ] css3/selectors3/xml/css3-modsel-161.xml [ Failure Pass ] -crbug.com/1035582 [ Win ] css3/selectors3/xml/css3-modsel-23.xml [ Failure Pass ] -crbug.com/1035582 [ Win ] css3/selectors3/xml/css3-modsel-24.xml [ Failure Pass ] -crbug.com/1035582 [ Win ] css3/selectors3/xml/css3-modsel-25.xml [ Failure Pass ] -crbug.com/1035582 [ Win ] css3/selectors3/xml/css3-modsel-64.xml [ Failure Pass ] -crbug.com/1035582 [ Win ] css3/selectors3/xml/css3-modsel-68.xml [ Failure Pass ] -crbug.com/1035582 [ Win ] css3/selectors3/xml/css3-modsel-69.xml [ Failure Pass ] -crbug.com/1035582 [ Win ] css3/selectors3/xml/css3-modsel-70.xml [ Failure Pass ] -crbug.com/1035582 [ Win ] editing/caret/caret-color-001.html [ Failure Pass ] -crbug.com/1035582 [ Win ] editing/caret/caret-color-002.html [ Failure Pass ] -crbug.com/1035582 [ Win ] editing/caret/caret-color-003.html [ Failure Pass ] -crbug.com/1035582 [ Win ] editing/caret/caret-color-004.html [ Failure Pass ] -crbug.com/1035582 [ Win ] editing/caret/caret-color-005.html [ Failure Pass ] -crbug.com/1035582 [ Win ] editing/caret/caret-color-007.html [ Failure Pass ] -crbug.com/1035582 [ Win ] editing/caret/caret-color-010.html [ Failure Pass ] -crbug.com/1035582 [ Win ] editing/caret/caret-color-012.html [ Failure Pass ] -crbug.com/1035582 [ Win ] editing/caret/caret-position.html [ Failure Pass ] -crbug.com/1035582 [ Win ] editing/input/caret-at-the-edge-of-input.html [ Failure Pass ] -crbug.com/1035582 [ Win ] editing/input/reveal-caret-of-multiline-input.html [ Failure Pass ] -crbug.com/1035582 [ Win ] editing/inserting/4960120-1.html [ Failure Pass ] -crbug.com/1035582 [ Win ] editing/pasteboard/4806874.html [ Failure Pass ] -crbug.com/1035582 [ Win ] editing/selection/4975120.html [ Failure Pass ] -crbug.com/1035582 [ Win ] editing/selection/selection-button-text.html [ Failure Pass ] -crbug.com/1035582 [ Win ] fast/block/basic/011.html [ Failure Pass ] -crbug.com/1035582 [ Win ] fast/block/float/032.html [ Failure Pass ] -crbug.com/1035582 [ Win ] fast/block/float/overhanging-tall-block.html [ Failure Pass ] -crbug.com/1035582 [ Win ] fast/block/positioning/inline-block-relposition.html [ Failure Pass ] -crbug.com/1035582 [ Win ] fast/css/input-search-padding.html [ Failure Pass ] -crbug.com/1035582 [ Win ] fast/css/line-height.html [ Failure Pass ] -crbug.com/1035582 [ Win ] fast/css/non-standard-checkbox-size.html [ Failure Pass ] -crbug.com/1035582 [ Win ] fast/css/resize-corner-tracking.html [ Failure Pass ] -crbug.com/1035582 [ Win ] fast/css/rtl-ordering.html [ Failure Pass ] -crbug.com/1035582 [ Win ] fast/dom/HTMLMeterElement/meter-element.html [ Failure Pass ] -crbug.com/1035582 [ Win ] fast/dom/HTMLMeterElement/meter-element-repaint-on-update-value.html [ Failure Pass ] -crbug.com/1035582 [ Win ] fast/dom/HTMLMeterElement/meter-styles-changing-pseudo.html [ Failure Pass ] -crbug.com/1035582 [ Win ] fast/dom/HTMLProgressElement/progress-element.html [ Failure Pass ] -crbug.com/1035582 [ Win ] fast/dynamic/008.html [ Failure Pass ] -crbug.com/1035582 [ Win ] fast/files/file-in-input-display.html [ Failure Pass ] - -crbug.com/1035582 [ Linux ] compositing/overflow/do-not-paint-outline-into-composited-scrolling-contents.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] compositing/overflow/theme-affects-visual-overflow.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] compositing/overflow/update-widget-positions-on-nested-frames-and-scrollers.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] css1/box_properties/acid_test.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] css2.1/t09-c5526c-display-00-e.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] css3/flexbox/button.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] css3/selectors3/html/css3-modsel-161.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] css3/selectors3/html/css3-modsel-23.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] css3/selectors3/html/css3-modsel-24.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] css3/selectors3/html/css3-modsel-25.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] css3/selectors3/html/css3-modsel-64.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] css3/selectors3/html/css3-modsel-68.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] css3/selectors3/html/css3-modsel-69.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] css3/selectors3/html/css3-modsel-70.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] css3/selectors3/xhtml/css3-modsel-161.xml [ Failure Pass ] -crbug.com/1035582 [ Linux ] css3/selectors3/xhtml/css3-modsel-23.xml [ Failure Pass ] -crbug.com/1035582 [ Linux ] css3/selectors3/xhtml/css3-modsel-24.xml [ Failure Pass ] -crbug.com/1035582 [ Linux ] css3/selectors3/xhtml/css3-modsel-25.xml [ Failure Pass ] -crbug.com/1035582 [ Linux ] css3/selectors3/xhtml/css3-modsel-64.xml [ Failure Pass ] -crbug.com/1035582 [ Linux ] css3/selectors3/xhtml/css3-modsel-68.xml [ Failure Pass ] -crbug.com/1035582 [ Linux ] css3/selectors3/xhtml/css3-modsel-69.xml [ Failure Pass ] -crbug.com/1035582 [ Linux ] css3/selectors3/xhtml/css3-modsel-70.xml [ Failure Pass ] -crbug.com/1035582 [ Linux ] css3/selectors3/xml/css3-modsel-161.xml [ Failure Pass ] -crbug.com/1035582 [ Linux ] css3/selectors3/xml/css3-modsel-23.xml [ Failure Pass ] -crbug.com/1035582 [ Linux ] css3/selectors3/xml/css3-modsel-24.xml [ Failure Pass ] -crbug.com/1035582 [ Linux ] css3/selectors3/xml/css3-modsel-25.xml [ Failure Pass ] -crbug.com/1035582 [ Linux ] css3/selectors3/xml/css3-modsel-64.xml [ Failure Pass ] -crbug.com/1035582 [ Linux ] css3/selectors3/xml/css3-modsel-68.xml [ Failure Pass ] -crbug.com/1035582 [ Linux ] css3/selectors3/xml/css3-modsel-69.xml [ Failure Pass ] -crbug.com/1035582 [ Linux ] css3/selectors3/xml/css3-modsel-70.xml [ Failure Pass ] -crbug.com/1035582 [ Linux ] editing/caret/caret-color-001.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] editing/caret/caret-color-002.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] editing/caret/caret-color-003.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] editing/caret/caret-color-004.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] editing/caret/caret-color-005.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] editing/caret/caret-color-007.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] editing/caret/caret-color-010.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] editing/caret/caret-color-012.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] editing/caret/caret-position.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] editing/input/caret-at-the-edge-of-input.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] editing/input/reveal-caret-of-multiline-input.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] editing/inserting/4960120-1.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] editing/pasteboard/4806874.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] editing/selection/4975120.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] editing/selection/selection-button-text.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] fast/block/basic/011.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] fast/block/float/032.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] fast/block/float/overhanging-tall-block.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] fast/block/positioning/inline-block-relposition.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] fast/css/input-search-padding.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] fast/css/line-height.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] fast/css/non-standard-checkbox-size.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] fast/css/resize-corner-tracking.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] fast/css/rtl-ordering.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] fast/dom/HTMLMeterElement/meter-element.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] fast/dom/HTMLMeterElement/meter-element-repaint-on-update-value.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] fast/dom/HTMLMeterElement/meter-styles-changing-pseudo.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] fast/dom/HTMLProgressElement/progress-element.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] fast/dynamic/008.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] fast/files/file-in-input-display.html [ Failure Pass ] -# - -# - +# Group 5 Leftovers (all focus rings) +crbug.com/1035582 compositing/overflow/do-not-paint-outline-into-composited-scrolling-contents.html [ Failure Pass ] +crbug.com/1035582 compositing/overflow/update-widget-positions-on-nested-frames-and-scrollers.html [ Failure Pass ] +crbug.com/1035582 editing/caret/caret-color-001.html [ Failure Pass ] +crbug.com/1035582 editing/caret/caret-color-002.html [ Failure Pass ] +crbug.com/1035582 editing/caret/caret-color-003.html [ Failure Pass ] +crbug.com/1035582 editing/caret/caret-color-004.html [ Failure Pass ] +crbug.com/1035582 editing/caret/caret-color-005.html [ Failure Pass ] +crbug.com/1035582 editing/caret/caret-color-007.html [ Failure Pass ] +crbug.com/1035582 editing/caret/caret-color-010.html [ Failure Pass ] +crbug.com/1035582 editing/caret/caret-color-012.html [ Failure Pass ] +crbug.com/1035582 editing/caret/caret-position.html [ Failure Pass ] +crbug.com/1035582 editing/input/caret-at-the-edge-of-input.html [ Failure Pass ] +crbug.com/1035582 editing/input/reveal-caret-of-multiline-input.html [ Failure Pass ] +crbug.com/1035582 editing/inserting/4960120-1.html [ Failure Pass ] +crbug.com/1035582 editing/pasteboard/4806874.html [ Failure Pass ] # - # - # - @@ -2376,241 +2201,31 @@ # - # - # - -# - -# Group 7 (Win/Linux) -crbug.com/1035582 [ Win ] fast/hidpi/resize-corner-hidpi.html [ Failure Pass ] -crbug.com/1035582 [ Win ] fast/inline/positionedLifetime.html [ Failure Pass ] -crbug.com/1035582 [ Win ] fast/invalid/014.html [ Failure Pass ] -crbug.com/1035582 [ Win ] fast/lists/dynamic-marker-crash.html [ Failure Pass ] -crbug.com/1035582 [ Win ] fast/multicol/input-with-overflow-second-column.html [ Failure Pass ] -crbug.com/1035582 [ Win ] fast/multicol/multicol-with-child-renderLayer-for-input.html [ Failure Pass ] -crbug.com/1035582 [ Win ] fast/overflow/overflow-x-y.html [ Failure Pass ] -crbug.com/1035582 [ Win ] fast/overflow/scroll-nested-positioned-layer-in-overflow.html [ Failure Pass ] -crbug.com/1035582 [ Win ] fast/overflow/scrollRevealButton.html [ Failure Pass ] -crbug.com/1035582 [ Win ] fast/parser/bad-xml-slash.html [ Failure Pass ] -crbug.com/1035582 [ Win ] fast/parser/entity-comment-in-textarea.html [ Failure Pass ] -crbug.com/1035582 [ Win ] fast/parser/open-comment-in-textarea.html [ Failure Pass ] -crbug.com/1035582 [ Win ] fast/replaced/replaced-breaking-mixture.html [ Failure Pass ] -crbug.com/1035582 [ Win ] fast/replaced/three-selects-break.html [ Failure Pass ] -crbug.com/1035582 [ Win ] fast/replaced/width100percent-checkbox.html [ Failure Pass ] -crbug.com/1035582 [ Win ] fast/replaced/width100percent-menulist.html [ Failure Pass ] -crbug.com/1035582 [ Win ] fast/replaced/width100percent-radio.html [ Failure Pass ] -crbug.com/1035582 [ Win ] fast/replaced/width100percent-searchfield.html [ Failure Pass ] -crbug.com/1035582 [ Win ] fast/replaced/width100percent-textarea.html [ Failure Pass ] -crbug.com/1035582 [ Win ] fast/replaced/width100percent-textfield.html [ Failure Pass ] -crbug.com/1035582 [ Win ] fast/selectors/064.html [ Failure Pass ] -crbug.com/1035582 [ Win ] fast/spatial-navigation/snav-multiple-select-focusring.html [ Failure Pass ] -crbug.com/1035582 [ Win ] fast/table/003.html [ Failure Pass ] -crbug.com/1035582 [ Win ] fast/table/append-cells2.html [ Failure Pass ] -crbug.com/1035582 [ Win ] fast/table/colspanMinWidth.html [ Failure Pass ] -crbug.com/1035582 [ Win ] fast/table/colspanMinWidth-vertical.html [ Failure Pass ] -crbug.com/1035582 [ Win ] fast/table/remove-td-display-none.html [ Failure Pass ] -crbug.com/1035582 [ Win ] fast/table/spanOverlapRepaint.html [ Failure Pass ] -crbug.com/1035582 [ Win ] fast/table/text-field-baseline.html [ Failure Pass ] -crbug.com/1035582 [ Win ] fragmentation/outline-crossing-columns.html [ Failure Pass ] -crbug.com/1035582 [ Win ] html/details_summary/details-no-summary4.html [ Failure Pass ] -crbug.com/1035582 [ Win ] html/details_summary/details-open2.html [ Failure Pass ] -crbug.com/1035582 [ Win ] html/details_summary/details-open4.html [ Failure Pass ] -crbug.com/1035582 [ Win ] html/details_summary/details-open-javascript.html [ Failure Pass ] -crbug.com/1035582 [ Win ] html/details_summary/details-replace-summary-child.html [ Failure Pass ] -crbug.com/1035582 [ Win ] html/details_summary/details-replace-text.html [ Failure Pass ] -crbug.com/1035582 [ Win ] http/tests/filesystem/input-display.html [ Failure Pass ] -crbug.com/1035582 [ Win ] http/tests/webfont/popup-menu-load-webfont-after-open.html [ Failure Pass ] -crbug.com/1035582 [ Win ] images/12-55.html [ Failure Pass ] -crbug.com/1035582 [ Win ] images/182.html [ Failure Pass ] -crbug.com/1035582 [ Win ] images/23-55.html [ Failure Pass ] -crbug.com/1035582 [ Win ] images/2-dht.html [ Failure Pass ] -crbug.com/1035582 [ Win ] images/55.html [ Failure Pass ] -crbug.com/1035582 [ Win ] paint/invalidation/caret-subpixel.html [ Failure Pass ] -crbug.com/1035582 [ Win ] paint/invalidation/forms/button-reset-focus-by-mouse-then-keydown.html [ Failure Pass ] -crbug.com/1035582 [ Win ] paint/invalidation/forms/checkbox-focus-by-mouse-then-keydown.html [ Failure Pass ] -crbug.com/1035582 [ Win ] paint/invalidation/forms/radio-focus-by-mouse-then-keydown.html [ Failure Pass ] -crbug.com/1035582 [ Win ] paint/invalidation/forms/slider-thumb-drag-release.html [ Failure Pass ] -crbug.com/1035582 [ Win ] paint/invalidation/forms/textarea-caret.html [ Failure Pass ] -crbug.com/1035582 [ Win ] paint/invalidation/renderer-destruction-by-invalidateSelection-crash.html [ Failure Pass ] -crbug.com/1035582 [ Win ] paint/invalidation/scroll/caret-invalidation-in-overflow-scroll.html [ Failure Pass ] -crbug.com/1035582 [ Win ] paint/invalidation/scroll/caret-with-composited-scroll.html [ Failure Pass ] -crbug.com/1035582 [ Win ] paint/invalidation/selection/selection-in-composited-scrolling-container.html [ Failure Pass ] -crbug.com/1035582 [ Win ] paint/invalidation/selection/selection-in-non-composited-scrolling-container.html [ Failure Pass ] -crbug.com/1035582 [ Win ] paint/invalidation/subtree-root-skipped.html [ Failure Pass ] -crbug.com/1035582 [ Win ] paint/roundedrects/input-with-rounded-rect-and-shadow.html [ Failure Pass ] -crbug.com/1035582 [ Win ] paint/selection/text-selection-with-composition.html [ Failure Pass ] -crbug.com/1035582 [ Win ] paint/theme/adjust-progress-bar-size.html [ Failure Pass ] -crbug.com/1035582 [ Win ] scrollbars/listbox-scrollbar-combinations.html [ Failure Pass ] -crbug.com/1035582 [ Win ] svg/custom/inline-svg-in-xhtml.xml [ Failure Pass ] -crbug.com/1035582 [ Win ] svg/hixie/mixed/003.xml [ Failure Pass ] -crbug.com/1035582 [ Win ] tables/mozilla/bugs/45621.html [ Failure Pass ] -crbug.com/1035582 [ Win ] tables/mozilla/bugs/bug1188.html [ Failure Pass ] -crbug.com/1035582 [ Win ] tables/mozilla/bugs/bug12384.html [ Failure Pass ] -crbug.com/1035582 [ Win ] tables/mozilla/bugs/bug1318.html [ Failure Pass ] -crbug.com/1035582 [ Win ] tables/mozilla/bugs/bug138725.html [ Failure Pass ] -crbug.com/1035582 [ Win ] tables/mozilla/bugs/bug24200.html [ Failure Pass ] -crbug.com/1035582 [ Win ] tables/mozilla/bugs/bug2479-2.html [ Failure Pass ] -crbug.com/1035582 [ Win ] tables/mozilla/bugs/bug26178.html [ Failure Pass ] -crbug.com/1035582 [ Win ] tables/mozilla/bugs/bug28928.html [ Failure Pass ] -crbug.com/1035582 [ Win ] tables/mozilla/bugs/bug29326.html [ Failure Pass ] -crbug.com/1035582 [ Win ] tables/mozilla/bugs/bug30559.html [ Failure Pass ] -crbug.com/1035582 [ Win ] tables/mozilla/bugs/bug30692.html [ Failure Pass ] -crbug.com/1035582 [ Win ] tables/mozilla/bugs/bug39209.html [ Failure Pass ] -crbug.com/1035582 [ Win ] tables/mozilla/bugs/bug4429.html [ Failure Pass ] -crbug.com/1035582 [ Win ] tables/mozilla/bugs/bug4527.html [ Failure Pass ] -crbug.com/1035582 [ Win ] tables/mozilla/bugs/bug46368-1.html [ Failure Pass ] -crbug.com/1035582 [ Win ] tables/mozilla/bugs/bug46368-2.html [ Failure Pass ] -crbug.com/1035582 [ Win ] tables/mozilla/bugs/bug51037.html [ Failure Pass ] -crbug.com/1035582 [ Win ] tables/mozilla/bugs/bug55545.html [ Failure Pass ] -crbug.com/1035582 [ Win ] tables/mozilla/bugs/bug59354.html [ Failure Pass ] -crbug.com/1035582 [ Win ] tables/mozilla/bugs/bug68912.html [ Failure Pass ] -crbug.com/1035582 [ Win ] tables/mozilla/bugs/bug7342.html [ Failure Pass ] -crbug.com/1035582 [ Win ] tables/mozilla/bugs/bug92647-2.html [ Failure Pass ] -crbug.com/1035582 [ Win ] tables/mozilla/bugs/bug96334.html [ Failure Pass ] -crbug.com/1035582 [ Win ] tables/mozilla/bugs/bug99948.html [ Failure Pass ] -crbug.com/1035582 [ Win ] tables/mozilla/collapsing_borders/bug41262-4.html [ Failure Pass ] -crbug.com/1035582 [ Win ] tables/mozilla/core/margins.html [ Failure Pass ] -crbug.com/1035582 [ Win ] tables/mozilla/dom/tableDom.html [ Failure Pass ] -crbug.com/1035582 [ Win ] tables/mozilla_expected_failures/bugs/bug1725.html [ Failure Pass ] -crbug.com/1035582 [ Win ] tables/mozilla_expected_failures/bugs/bug58402-2.html [ Failure Pass ] -crbug.com/1035582 [ Win ] tables/mozilla_expected_failures/bugs/bug92647-1.html [ Failure Pass ] -crbug.com/1035582 [ Win ] tables/mozilla_expected_failures/core/captions1.html [ Failure Pass ] -crbug.com/1035582 [ Win ] tables/mozilla_expected_failures/core/captions2.html [ Failure Pass ] -crbug.com/1035582 [ Win ] tables/mozilla/other/move_row.html [ Failure Pass ] -crbug.com/1035582 [ Win ] transforms/3d/general/perspective-non-layer.html [ Failure Pass ] -crbug.com/1035582 [ Win ] transforms/transformed-focused-text-input.html [ Failure Pass ] -crbug.com/1035582 [ Win ] virtual/cascade/fast/forms/001.html [ Failure Pass ] -crbug.com/1035582 [ Win ] virtual/cascade/fast/forms/fieldset/fieldset-align.html [ Failure Pass ] -crbug.com/1035582 [ Win ] virtual/cascade/fast/forms/select/select-autofilled.html [ Failure Pass ] -crbug.com/1035582 [ Win ] virtual/dark-mode-native-theme-off/text-input-elements.html [ Failure Pass ] -crbug.com/1035582 [ Win ] virtual/dark-mode-native-theme-on/text-input-elements.html [ Failure Pass ] -crbug.com/1035582 [ Win ] virtual/exotic-color-space/images/12-55.html [ Failure Pass ] -crbug.com/1035582 [ Win ] virtual/exotic-color-space/images/182.html [ Failure Pass ] -crbug.com/1035582 [ Win ] virtual/exotic-color-space/images/23-55.html [ Failure Pass ] -crbug.com/1035582 [ Win ] virtual/exotic-color-space/images/2-dht.html [ Failure Pass ] -crbug.com/1035582 [ Win ] virtual/exotic-color-space/images/55.html [ Failure Pass ] -crbug.com/1035582 [ Win ] virtual/gpu-rasterization/images/12-55.html [ Failure Pass ] -crbug.com/1035582 [ Win ] virtual/gpu-rasterization/images/182.html [ Failure Pass ] -crbug.com/1035582 [ Win ] virtual/gpu-rasterization/images/23-55.html [ Failure Pass ] -crbug.com/1035582 [ Win ] virtual/gpu-rasterization/images/2-dht.html [ Failure Pass ] -crbug.com/1035582 [ Win ] virtual/gpu-rasterization/images/55.html [ Failure Pass ] -crbug.com/1035582 [ Win ] virtual/layout_ng_block_frag/fast/multicol/input-with-overflow-second-column.html [ Failure Pass ] -crbug.com/1035582 [ Win ] virtual/layout_ng_block_frag/fast/multicol/multicol-with-child-renderLayer-for-input.html [ Failure Pass ] -crbug.com/1035582 [ Win ] virtual/layout_ng_block_frag/fragmentation/outline-crossing-columns.html [ Failure Pass ] -crbug.com/1035582 [ Win ] external/wpt/css/css-pseudo/spelling-error-002-manual.html [ Failure Pass ] +# Group 7 leftovers: +crbug.com/1035582 virtual/gpu-rasterization/images/12-55.html [ Skip ] +crbug.com/1035582 virtual/gpu-rasterization/images/182.html [ Skip ] +# Focus rings: +crbug.com/1035582 fast/multicol/multicol-with-child-renderLayer-for-input.html [ Failure Pass ] +crbug.com/1035582 fast/overflow/scroll-nested-positioned-layer-in-overflow.html [ Failure Pass ] +crbug.com/1035582 fast/overflow/scrollRevealButton.html [ Failure Pass ] +crbug.com/1035582 fast/spatial-navigation/snav-multiple-select-focusring.html [ Failure Pass ] +crbug.com/1035582 http/tests/webfont/popup-menu-load-webfont-after-open.html [ Failure Pass ] +crbug.com/1035582 paint/invalidation/renderer-destruction-by-invalidateSelection-crash.html [ Failure Pass ] +crbug.com/1035582 paint/invalidation/forms/button-reset-focus-by-mouse-then-keydown.html [ Failure Pass ] +crbug.com/1035582 paint/invalidation/forms/checkbox-focus-by-mouse-then-keydown.html [ Failure Pass ] +crbug.com/1035582 paint/invalidation/forms/radio-focus-by-mouse-then-keydown.html [ Failure Pass ] +crbug.com/1035582 paint/invalidation/forms/textarea-caret.html [ Failure Pass ] +crbug.com/1035582 paint/invalidation/scroll/caret-invalidation-in-overflow-scroll.html [ Failure Pass ] +crbug.com/1035582 paint/invalidation/scroll/caret-with-composited-scroll.html [ Failure Pass ] +crbug.com/1035582 paint/invalidation/selection/selection-in-composited-scrolling-container.html [ Failure Pass ] +crbug.com/1035582 paint/invalidation/selection/selection-in-non-composited-scrolling-container.html [ Failure Pass ] +crbug.com/1035582 paint/selection/text-selection-with-composition.html [ Failure Pass ] +crbug.com/1035582 transforms/transformed-focused-text-input.html [ Failure Pass ] +crbug.com/1035582 virtual/layout_ng_block_frag/fast/multicol/multicol-with-child-renderLayer-for-input.html [ Failure Pass ] +# Dark mode, flagged by schenney, looks wrong: +crbug.com/1035582 virtual/dark-mode-native-theme-on/text-input-elements.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] fast/hidpi/resize-corner-hidpi.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] fast/inline/positionedLifetime.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] fast/invalid/014.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] fast/lists/dynamic-marker-crash.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] fast/multicol/input-with-overflow-second-column.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] fast/multicol/multicol-with-child-renderLayer-for-input.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] fast/overflow/overflow-x-y.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] fast/overflow/scroll-nested-positioned-layer-in-overflow.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] fast/overflow/scrollRevealButton.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] fast/parser/bad-xml-slash.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] fast/parser/entity-comment-in-textarea.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] fast/parser/open-comment-in-textarea.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] fast/replaced/replaced-breaking-mixture.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] fast/replaced/three-selects-break.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] fast/replaced/width100percent-checkbox.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] fast/replaced/width100percent-menulist.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] fast/replaced/width100percent-radio.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] fast/replaced/width100percent-searchfield.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] fast/replaced/width100percent-textarea.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] fast/replaced/width100percent-textfield.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] fast/selectors/064.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] fast/spatial-navigation/snav-multiple-select-focusring.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] fast/table/003.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] fast/table/append-cells2.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] fast/table/colspanMinWidth.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] fast/table/colspanMinWidth-vertical.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] fast/table/remove-td-display-none.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] fast/table/spanOverlapRepaint.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] fast/table/text-field-baseline.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] fragmentation/outline-crossing-columns.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] html/details_summary/details-no-summary4.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] html/details_summary/details-open2.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] html/details_summary/details-open4.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] html/details_summary/details-open-javascript.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] html/details_summary/details-replace-summary-child.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] html/details_summary/details-replace-text.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] http/tests/filesystem/input-display.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] http/tests/webfont/popup-menu-load-webfont-after-open.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] images/12-55.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] images/182.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] images/23-55.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] images/2-dht.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] images/55.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] paint/invalidation/caret-subpixel.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] paint/invalidation/forms/button-reset-focus-by-mouse-then-keydown.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] paint/invalidation/forms/checkbox-focus-by-mouse-then-keydown.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] paint/invalidation/forms/radio-focus-by-mouse-then-keydown.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] paint/invalidation/forms/slider-thumb-drag-release.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] paint/invalidation/forms/textarea-caret.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] paint/invalidation/renderer-destruction-by-invalidateSelection-crash.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] paint/invalidation/scroll/caret-invalidation-in-overflow-scroll.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] paint/invalidation/scroll/caret-with-composited-scroll.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] paint/invalidation/selection/selection-in-composited-scrolling-container.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] paint/invalidation/selection/selection-in-non-composited-scrolling-container.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] paint/invalidation/subtree-root-skipped.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] paint/roundedrects/input-with-rounded-rect-and-shadow.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] paint/selection/text-selection-with-composition.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] paint/theme/adjust-progress-bar-size.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] scrollbars/listbox-scrollbar-combinations.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] svg/custom/inline-svg-in-xhtml.xml [ Failure Pass ] -crbug.com/1035582 [ Linux ] svg/hixie/mixed/003.xml [ Failure Pass ] -crbug.com/1035582 [ Linux ] tables/mozilla/bugs/45621.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] tables/mozilla/bugs/bug1188.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] tables/mozilla/bugs/bug12384.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] tables/mozilla/bugs/bug1318.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] tables/mozilla/bugs/bug138725.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] tables/mozilla/bugs/bug24200.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] tables/mozilla/bugs/bug2479-2.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] tables/mozilla/bugs/bug26178.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] tables/mozilla/bugs/bug28928.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] tables/mozilla/bugs/bug29326.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] tables/mozilla/bugs/bug30559.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] tables/mozilla/bugs/bug30692.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] tables/mozilla/bugs/bug39209.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] tables/mozilla/bugs/bug4429.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] tables/mozilla/bugs/bug4527.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] tables/mozilla/bugs/bug46368-1.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] tables/mozilla/bugs/bug46368-2.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] tables/mozilla/bugs/bug51037.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] tables/mozilla/bugs/bug55545.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] tables/mozilla/bugs/bug59354.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] tables/mozilla/bugs/bug68912.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] tables/mozilla/bugs/bug7342.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] tables/mozilla/bugs/bug92647-2.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] tables/mozilla/bugs/bug96334.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] tables/mozilla/bugs/bug99948.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] tables/mozilla/collapsing_borders/bug41262-4.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] tables/mozilla/core/margins.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] tables/mozilla/dom/tableDom.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] tables/mozilla_expected_failures/bugs/bug1725.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] tables/mozilla_expected_failures/bugs/bug58402-2.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] tables/mozilla_expected_failures/bugs/bug92647-1.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] tables/mozilla_expected_failures/core/captions1.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] tables/mozilla_expected_failures/core/captions2.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] tables/mozilla/other/move_row.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] transforms/3d/general/perspective-non-layer.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] transforms/transformed-focused-text-input.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] virtual/cascade/fast/forms/001.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] virtual/cascade/fast/forms/fieldset/fieldset-align.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] virtual/cascade/fast/forms/select/select-autofilled.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] virtual/dark-mode-native-theme-off/text-input-elements.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] virtual/dark-mode-native-theme-on/text-input-elements.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] virtual/exotic-color-space/images/12-55.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] virtual/exotic-color-space/images/182.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] virtual/exotic-color-space/images/23-55.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] virtual/exotic-color-space/images/2-dht.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] virtual/exotic-color-space/images/55.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] virtual/gpu-rasterization/images/12-55.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] virtual/gpu-rasterization/images/182.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] virtual/gpu-rasterization/images/23-55.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] virtual/gpu-rasterization/images/2-dht.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] virtual/gpu-rasterization/images/55.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] virtual/layout_ng_block_frag/fast/multicol/input-with-overflow-second-column.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] virtual/layout_ng_block_frag/fast/multicol/multicol-with-child-renderLayer-for-input.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] virtual/layout_ng_block_frag/fragmentation/outline-crossing-columns.html [ Failure Pass ] -crbug.com/1035582 [ Linux ] external/wpt/css/css-pseudo/spelling-error-002-manual.html [ Failure Pass ] +# - # - # - # - @@ -2625,9 +2240,6 @@ crbug.com/1035582 external/wpt/css/selectors/focus-visible-003-manual.html [ Skip ] crbug.com/1035582 external/wpt/css/selectors/focus-visible-004-manual.html [ Skip ] -# I don't know why this one is failing: -crbug.com/1035582 [ Win ] wpt_internal/storage/estimate-usage-details-filesystem.https.tentative.any-expected.txt [ Skip ] - # Failed in https://chromium-review.googlesource.com/c/chromium/src/+/1987072 crbug.com/1035582 fast/forms/calendar-picker/calendar-picker-key-operations.html [ Skip ] # Comment back in at line 3002: @@ -5686,7 +5298,7 @@ crbug.com/767469 virtual/stable/http/tests/navigation/start-load-during-provisional-loader-detach.html [ Pass Failure ] # Sheriff failures 2017-10-02 -# crbug.com/770971 [ Win7 ] fast/forms/suggested-value.html [ Pass Failure ] +##crbug.com/770971 [ Win7 ] fast/forms/suggested-value.html [ Pass Failure ] crbug.com/771492 [ Win ] external/wpt/css/css-tables/table-model-fixup-2.html [ Failure ] crbug.com/771492 [ Linux ] external/wpt/css/css-tables/table-model-fixup-2.html [ Failure ] crbug.com/771492 [ Mac ] external/wpt/css/css-tables/table-model-fixup-2.html [ Failure ] @@ -6495,6 +6107,7 @@ # speculative navigation in the browser, and committing the navigation in the # renderer. crbug.com/838348 external/wpt/portals/csp/frame-src.sub.html [ Pass Crash ] +crbug.com/838348 virtual/out-of-blink-frame-ancestors-disabled/external/wpt/portals/csp/frame-src.sub.html [ Pass Crash ] # Sheriff 2019-04-17 crbug.com/953591 [ Win ] css3/masking/mask-repeat-space-padding.html [ Pass Failure ] @@ -7054,10 +6667,6 @@ crbug.com/993790 external/wpt/document-policy/required-policy/no-document-policy.html [ Failure ] crbug.com/993790 external/wpt/document-policy/required-policy/required-document-policy-nested.html [ Failure ] crbug.com/993790 external/wpt/document-policy/required-policy/required-document-policy.html [ Failure ] -crbug.com/993790 virtual/document-policy/external/wpt/document-policy/required-policy/document-policy.html [ Failure ] -crbug.com/993790 virtual/document-policy/external/wpt/document-policy/required-policy/no-document-policy.html [ Failure ] -crbug.com/993790 virtual/document-policy/external/wpt/document-policy/required-policy/required-document-policy-nested.html [ Failure ] -crbug.com/993790 virtual/document-policy/external/wpt/document-policy/required-policy/required-document-policy.html [ Failure ] # Temporary suppression to allow devtools-frontend changes crbug.com/1029489 http/tests/devtools/elements/elements-linkify-attributes.js [ Pass Failure ] @@ -7233,8 +6842,12 @@ # Sheriff 2020-01-09 crbug.com/1040270 http/tests/devtools/elements/styles-1/disable-property-workingcopy-update.js [ Pass Timeout ] +# Sheriff 2020-01-10 +crbug.com/1041052 external/wpt/offscreen-canvas/filter/offscreencanvas.filter.w.html [ Pass Failure ] +crbug.com/1041052 external/wpt/2dcontext/fill-and-stroke-styles/canvas_colorsandstyles_createlineargradient_001.htm [ Pass Failure ] + # Temporarily disabled to land Animations accessibility changes in DevTools crbug.com/963183 http/tests/devtools/animation/animation-timeline.js [ Pass Failure ] # Broken in https://chromium-review.googlesource.com/c/chromium/src/+/1636716 -crbug.com/963183 http/tests/devtools/sources/debugger-breakpoints/disable-breakpoints.js [ Pass Failure ] \ No newline at end of file +crbug.com/963183 http/tests/devtools/sources/debugger-breakpoints/disable-breakpoints.js [ Pass Failure ]
diff --git a/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_7.json b/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_7.json index e33352b..459a17f9c 100644 --- a/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_7.json +++ b/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_7.json
@@ -62263,6 +62263,18 @@ {} ] ], + "css/css-overflow/overflow-recalc-001.html": [ + [ + "css/css-overflow/overflow-recalc-001.html", + [ + [ + "/css/css-overflow/reference/overflow-recalc-001-ref.html", + "==" + ] + ], + {} + ] + ], "css/css-overflow/webkit-line-clamp-001.html": [ [ "css/css-overflow/webkit-line-clamp-001.html", @@ -145035,6 +145047,9 @@ "css/css-overflow/reference/overflow-body-propagation-ref.html": [ [] ], + "css/css-overflow/reference/overflow-recalc-001-ref.html": [ + [] + ], "css/css-overflow/reference/webkit-line-clamp-001-ref.html": [ [] ], @@ -156879,6 +156894,9 @@ "element-timing/resources/circle.svg": [ [] ], + "element-timing/resources/circle.svg.headers": [ + [] + ], "element-timing/resources/element-timing-helpers.js": [ [] ], @@ -160917,6 +160935,9 @@ "html/browsers/windows/resources/window-opener.html": [ [] ], + "html/cross-origin-embedder-policy/META.yml": [ + [] + ], "html/cross-origin-embedder-policy/README.md": [ [] ], @@ -160995,6 +161016,9 @@ "html/cross-origin-embedder-policy/srcdoc.https.html.headers": [ [] ], + "html/cross-origin-opener-policy/META.yml": [ + [] + ], "html/cross-origin-opener-policy/README.md": [ [] ], @@ -230642,6 +230666,12 @@ {} ] ], + "dom/collections/HTMLCollection-live-mutations.window.js": [ + [ + "dom/collections/HTMLCollection-live-mutations.window.html", + {} + ] + ], "dom/collections/HTMLCollection-own-props.html": [ [ "dom/collections/HTMLCollection-own-props.html", @@ -232149,6 +232179,12 @@ {} ] ], + "dom/nodes/NodeList-live-mutations.window.js": [ + [ + "dom/nodes/NodeList-live-mutations.window.html", + {} + ] + ], "dom/nodes/ParentNode-append.html": [ [ "dom/nodes/ParentNode-append.html", @@ -265175,6 +265211,12 @@ {} ] ], + "largest-contentful-paint/multi-redirects-TAO.html": [ + [ + "largest-contentful-paint/multi-redirects-TAO.html", + {} + ] + ], "largest-contentful-paint/observe-after-untrusted-scroll.html": [ [ "largest-contentful-paint/observe-after-untrusted-scroll.html", @@ -399837,6 +399879,10 @@ "963192f6f431cd073f5d8fddc2294259ad62962b", "testharness" ], + "css/css-overflow/overflow-recalc-001.html": [ + "9c5919a5044bdbac0e782fbb662f1ff3b81857fc", + "reftest" + ], "css/css-overflow/overflow-shorthand-001.html": [ "f425636c3bb4297e4e6564d1c2629dc10dde5607", "testharness" @@ -399949,6 +399995,10 @@ "340bda9de92352fe1ef6633610da31e867013299", "support" ], + "css/css-overflow/reference/overflow-recalc-001-ref.html": [ + "b18dee8caf1864dc30fe656750fe81a8863f1e90", + "support" + ], "css/css-overflow/reference/webkit-line-clamp-001-ref.html": [ "ef28e01dac0223c9a2768d3fd1415fb9ef2f1c6b", "support" @@ -443701,6 +443751,10 @@ "4fc34db7f5f245933013a76335f71e9f4cffe115", "testharness" ], + "dom/collections/HTMLCollection-live-mutations.window.js": [ + "7dbfc6ccf67d37d7272b3490665e218d0549e79e", + "testharness" + ], "dom/collections/HTMLCollection-own-props-expected.txt": [ "8e6f69310f05283ed334427325624371f765279e", "support" @@ -444989,6 +445043,10 @@ "fcbee175cb3e07235fcd759e866feb488e31e91f", "testharness" ], + "dom/nodes/NodeList-live-mutations.window.js": [ + "a11fed1e38efe88e634310d64db1bafe4d34fa1a", + "testharness" + ], "dom/nodes/ParentNode-append.html": [ "dcc398f3f586d1d627d0ffa0c689f3b1f67ece16", "testharness" @@ -446598,7 +446656,7 @@ "testharness" ], "element-timing/multi-redirect-image.html": [ - "c2f570f20df7989617ea37beaee266562cbf7756", + "2a12c5f03c42c6f45c3c975d3deba0c01b8db084", "testharness" ], "element-timing/multiple-background-images.html": [ @@ -446661,6 +446719,10 @@ "209b9f4e5b5d55b45b5ec80dac25873d06dfb593", "support" ], + "element-timing/resources/circle.svg.headers": [ + "7296361df3d1c5755acdb825661dbd9a1807b64f", + "support" + ], "element-timing/resources/element-timing-helpers.js": [ "b7f2eef5978ac5d559865dd34848f15ef0abba10", "support" @@ -457005,6 +457067,10 @@ "7407248ffe9fe3da977275c2192e31e3db9fc8a9", "testharness" ], + "html/cross-origin-embedder-policy/META.yml": [ + "103217d38892308541fbc0dbc8d39acfb47d4e80", + "support" + ], "html/cross-origin-embedder-policy/README.md": [ "16179eb0133a9e14667e127da05f3dc796975875", "support" @@ -457173,6 +457239,10 @@ "6604450991a122e3e241e40b1b9e0516c525389d", "support" ], + "html/cross-origin-opener-policy/META.yml": [ + "6c6d26211861f5af94cebae7a687b70d10ffe1b4", + "support" + ], "html/cross-origin-opener-policy/README.md": [ "3f080c82d25de71d899d3b3011afcc3c553fb2a2", "support" @@ -457238,7 +457308,7 @@ "support" ], "html/cross-origin-opener-policy/coop-sandbox.https.html": [ - "fc16c186cadf44bd1639d0eacf610e7781bc02bd", + "5fd11643d5720f54e0b5112e96a9cfea5cafdf9d", "testharness" ], "html/cross-origin-opener-policy/coop-sandbox.https.html.headers": [ @@ -458666,15 +458736,15 @@ "testharness" ], "html/dom/idlharness.https_exclude=(Document_Window_HTML._)-expected.txt": [ - "e64f9bafa704efec2616061e72635bfb26517efa", + "66d22bb9cdb638008aabf9b7fbbf5b6c2cbe0582", "support" ], "html/dom/idlharness.https_include=(Document_Window)-expected.txt": [ - "dc7ef25a1b2b646088fa01b69023aa9d05c125f3", + "cae5ab4d3a7685ab6c82e8ddcd3bc0eaee93abfe", "support" ], "html/dom/idlharness.https_include=HTML._-expected.txt": [ - "b62838183a2251db9f078d63da742529fbaa20ba", + "a590e36fc57c60fa74a813d7cb828491584be1da", "support" ], "html/dom/idlharness.worker-expected.txt": [ @@ -474458,7 +474528,7 @@ "manual" ], "html/webappapis/scripting/events/event-handler-all-global-events-expected.txt": [ - "3ae75ce4a8ba76b185dffc8ba3bf07b56ad0bb47", + "ecf299baccef3442e58eeaf0e20dc2e2762d15cd", "support" ], "html/webappapis/scripting/events/event-handler-all-global-events.html": [ @@ -474466,7 +474536,7 @@ "testharness" ], "html/webappapis/scripting/events/event-handler-attributes-body-window-expected.txt": [ - "caef6028d9d1bdc3d444463152fc6375b6c69fbf", + "69c88f095d8b50b60680d7523bac058d1b64233e", "support" ], "html/webappapis/scripting/events/event-handler-attributes-body-window.html": [ @@ -474474,7 +474544,7 @@ "testharness" ], "html/webappapis/scripting/events/event-handler-attributes-frameset-window-expected.txt": [ - "4dcaee309fd1f12e83f6d67eb4e655212624ea53", + "d0258b802be5d06fa3480277a2392e7a9caf6159", "support" ], "html/webappapis/scripting/events/event-handler-attributes-frameset-window.html": [ @@ -474486,7 +474556,7 @@ "support" ], "html/webappapis/scripting/events/event-handler-attributes-windowless-body-expected.txt": [ - "14bbc1ec4479e7f72ff845bab53de33da156fa7d", + "d69136c7d99429eab349fec3e29d4cc32d6a56fc", "support" ], "html/webappapis/scripting/events/event-handler-attributes-windowless-body.html": [ @@ -476798,7 +476868,7 @@ "support" ], "interfaces/html.idl": [ - "266574de63e8f2aac4a782ba836a277bb5a2997d", + "2c0c489315c96b6980181236b8602df60929c3f9", "support" ], "interfaces/image-capture.idl": [ @@ -477058,7 +477128,7 @@ "support" ], "interfaces/web-nfc.idl": [ - "12ea9d58bc055ee57efb65ae1495ebf4301427a5", + "f2e31b7352867d39edc9c43a4f1fffb3a02cb985", "support" ], "interfaces/web-share.idl": [ @@ -477645,6 +477715,10 @@ "0e40127b57683fa76392827003b15c2bb9c8d558", "testharness" ], + "largest-contentful-paint/multi-redirects-TAO.html": [ + "4e462c729aace01d40b9255465af7fc79f8fdb3c", + "testharness" + ], "largest-contentful-paint/observe-after-untrusted-scroll.html": [ "1b2cd1d25b5bb9da740e5127526fed41dcebfae7", "testharness" @@ -479298,7 +479372,7 @@ "testharness" ], "mathml/relations/html5-tree/math-global-event-handlers.tentative-expected.txt": [ - "64d81e59c5d128e31fc419f812f20937269bc795", + "b5ee241d57167a54bda79ff1bfe2b905c153d72f", "support" ], "mathml/relations/html5-tree/math-global-event-handlers.tentative.html": [ @@ -516062,7 +516136,7 @@ "support" ], "tools/lint/lint.py": [ - "a050cfa8a8e4e2699db44ce9e52f8f230a34a869", + "4090f2628a6fea12a0ed4957c55b925b14882f33", "support" ], "tools/lint/rules.py": [ @@ -526642,7 +526716,7 @@ "support" ], "web-nfc/idlharness.https.window-expected.txt": [ - "3a817f268b3ecb00d79cb4f623bc69ffff395470", + "28c57a9ddcbd8d2e153c229484d6ff3f085db13c", "support" ], "web-nfc/idlharness.https.window.js": [
diff --git a/third_party/blink/web_tests/external/wpt/document-policy/required-policy/document-policy.html b/third_party/blink/web_tests/external/wpt/document-policy/required-policy/document-policy.html index d6bf3e9..1935be3d 100644 --- a/third_party/blink/web_tests/external/wpt/document-policy/required-policy/document-policy.html +++ b/third_party/blink/web_tests/external/wpt/document-policy/required-policy/document-policy.html
@@ -45,7 +45,7 @@ iframe.src = "/document-policy/echo-policy.py?id=3"; iframe.policy = "unoptimized-lossless-images;bpp=4"; callbacks["3"] = t.step_func_done(result => { - assert_equals(result, "unoptimized-lossless-images;bpp=4"); + assert_equals(result, "unoptimized-lossless-images;bpp=4.0"); }); document.body.appendChild(iframe); }, "Child frame can have a required policy which is less strict than the parent document's policy.");
diff --git a/third_party/blink/web_tests/external/wpt/document-policy/required-policy/required-document-policy.html.headers b/third_party/blink/web_tests/external/wpt/document-policy/required-policy/required-document-policy.html.headers index 066c0f83..1b671daf 100644 --- a/third_party/blink/web_tests/external/wpt/document-policy/required-policy/required-document-policy.html.headers +++ b/third_party/blink/web_tests/external/wpt/document-policy/required-policy/required-document-policy.html.headers
@@ -1 +1 @@ -Required-Document-Policy: unoptimized-lossless-images;bpp=1.1 +Require-Document-Policy: unoptimized-lossless-images;bpp=1.1
diff --git a/third_party/blink/web_tests/external/wpt/dom/collections/HTMLCollection-live-mutations.window.js b/third_party/blink/web_tests/external/wpt/dom/collections/HTMLCollection-live-mutations.window.js new file mode 100644 index 0000000..7dbfc6c --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/dom/collections/HTMLCollection-live-mutations.window.js
@@ -0,0 +1,93 @@ +function testHTMLCollection(name, hooks) { + test(() => { + const nodes = { + root: document.createElement("div"), + div1: document.createElement("div"), + div2: document.createElement("div"), + p: document.createElement("p") + }; + + nodes.div1.id = "div1"; + nodes.div2.id = "div2"; + + const list = nodes.root.getElementsByTagName("div"); + + hooks.initial(list, nodes); + + nodes.root.appendChild(nodes.div1); + nodes.root.appendChild(nodes.p); + nodes.root.appendChild(nodes.div2); + + hooks.afterInsertion(list, nodes); + + nodes.root.removeChild(nodes.div1); + + hooks.afterRemoval(list, nodes); + }, `HTMLCollection live mutations: ${name}`); +} + +testHTMLCollection("HTMLCollection.length", { + initial(list) { + assert_equals(list.length, 0); + }, + afterInsertion(list) { + assert_equals(list.length, 2); + }, + afterRemoval(list) { + assert_equals(list.length, 1); + } +}); + +testHTMLCollection("HTMLCollection.item(index)", { + initial(list) { + assert_equals(list.item(0), null); + }, + afterInsertion(list, nodes) { + assert_equals(list.item(0), nodes.div1); + assert_equals(list.item(1), nodes.div2); + }, + afterRemoval(list, nodes) { + assert_equals(list.item(0), nodes.div2); + } +}); + +testHTMLCollection("HTMLCollection[index]", { + initial(list) { + assert_equals(list[0], undefined); + }, + afterInsertion(list, nodes) { + assert_equals(list[0], nodes.div1); + assert_equals(list[1], nodes.div2); + }, + afterRemoval(list, nodes) { + assert_equals(list[0], nodes.div2); + } +}); + +testHTMLCollection("HTMLCollection.namedItem(index)", { + initial(list) { + assert_equals(list.namedItem("div1"), null); + assert_equals(list.namedItem("div2"), null); + }, + afterInsertion(list, nodes) { + assert_equals(list.namedItem("div1"), nodes.div1); + assert_equals(list.namedItem("div2"), nodes.div2); + }, + afterRemoval(list, nodes) { + assert_equals(list.namedItem("div1"), null); + assert_equals(list.namedItem("div2"), nodes.div2); + } +}); + +testHTMLCollection("HTMLCollection ownPropertyNames", { + initial(list) { + assert_object_equals(Object.getOwnPropertyNames(list), []); + }, + afterInsertion(list) { + assert_object_equals(Object.getOwnPropertyNames(list), ["0", "1", "div1", "div2"]); + }, + afterRemoval(list) { + assert_object_equals(Object.getOwnPropertyNames(list), ["0", "div2"]); + } +}); +
diff --git a/third_party/blink/web_tests/external/wpt/dom/nodes/NodeList-live-mutations.window.js b/third_party/blink/web_tests/external/wpt/dom/nodes/NodeList-live-mutations.window.js new file mode 100644 index 0000000..a11fed1e --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/dom/nodes/NodeList-live-mutations.window.js
@@ -0,0 +1,79 @@ +function testNodeList(name, hooks) { + test(() => { + const nodes = { + root: document.createElement("div"), + div1: document.createElement("div"), + div2: document.createElement("div"), + p: document.createElement("p") + }; + + const list = nodes.root.childNodes; + + hooks.initial(list, nodes); + + nodes.root.appendChild(nodes.div1); + nodes.root.appendChild(nodes.p); + nodes.root.appendChild(nodes.div2); + + hooks.afterInsertion(list, nodes); + + nodes.root.removeChild(nodes.div1); + + hooks.afterRemoval(list, nodes); + }, `NodeList live mutations: ${name}`); +} + +testNodeList("NodeList.length", { + initial(list) { + assert_equals(list.length, 0); + }, + afterInsertion(list) { + assert_equals(list.length, 3); + }, + afterRemoval(list) { + assert_equals(list.length, 2); + } +}); + +testNodeList("NodeList.item(index)", { + initial(list) { + assert_equals(list.item(0), null); + }, + afterInsertion(list, nodes) { + assert_equals(list.item(0), nodes.div1); + assert_equals(list.item(1), nodes.p); + assert_equals(list.item(2), nodes.div2); + }, + afterRemoval(list, nodes) { + assert_equals(list.item(0), nodes.p); + assert_equals(list.item(1), nodes.div2); + } +}); + +testNodeList("NodeList[index]", { + initial(list) { + assert_equals(list[0], undefined); + }, + afterInsertion(list, nodes) { + assert_equals(list[0], nodes.div1); + assert_equals(list[1], nodes.p); + assert_equals(list[2], nodes.div2); + }, + afterRemoval(list, nodes) { + assert_equals(list[0], nodes.p); + assert_equals(list[1], nodes.div2); + } +}); + +testNodeList("NodeList ownPropertyNames", { + initial(list) { + assert_object_equals(Object.getOwnPropertyNames(list), []); + }, + afterInsertion(list) { + assert_object_equals(Object.getOwnPropertyNames(list), ["0", "1", "2"]); + }, + afterRemoval(list) { + assert_object_equals(Object.getOwnPropertyNames(list), ["0", "1"]); + } +}); +
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-embedder-policy/META.yml b/third_party/blink/web_tests/external/wpt/html/cross-origin-embedder-policy/META.yml new file mode 100644 index 0000000..103217d --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/html/cross-origin-embedder-policy/META.yml
@@ -0,0 +1,9 @@ +spec: https://mikewest.github.io/corpp/ +suggested_reviewers: + - mikewest + - jugglinmike + - arturjanc + - lweichselbaum + - hemeryar + - ParisMeuleman + - valenting
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/META.yml b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/META.yml new file mode 100644 index 0000000..6c6d262 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/META.yml
@@ -0,0 +1,9 @@ +spec: https://gist.github.com/annevk/6f2dd8c79c77123f39797f6bdac43f3e +suggested_reviewers: + - mikewest + - jugglinmike + - arturjanc + - lweichselbaum + - hemeryar + - ParisMeuleman + - valenting
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/coop-sandbox.https.html b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/coop-sandbox.https.html index fc16c18..5fd1164 100644 --- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/coop-sandbox.https.html +++ b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/coop-sandbox.https.html
@@ -5,20 +5,25 @@ <script src="/common/utils.js"></script> <!-- Use token() to allow running tests in parallel --> <div id=log> <script> -async_test(t => { - const frame = document.createElement("iframe"); - const channel = new BroadcastChannel(token()); - channel.onmessage = t.unreached_func("A COOP popup was created from a sandboxed frame"); - t.add_cleanup(() => frame.remove()); - frame.sandbox = "allow-popups allow-scripts allow-same-origin"; - frame.srcdoc = `<script> -const popup = window.open("resources/coop-coep.py?coop=same-origin&coep=&channel=${channel.name}"); -<\/script>`; - document.body.append(frame); - window.onload = t.step_func(() => { - t.step_timeout(() => { - t.done() - }, 1500); - }); +[ + "allow-popups allow-scripts allow-same-origin", + "allow-popups allow-scripts", +].forEach(sandboxValue => { + async_test(t => { + const frame = document.createElement("iframe"); + const channel = new BroadcastChannel(token()); + channel.onmessage = t.unreached_func("A COOP popup was created from a sandboxed frame"); + t.add_cleanup(() => frame.remove()); + frame.sandbox = sandboxValue; + frame.srcdoc = `<script> + const popup = window.open("resources/coop-coep.py?coop=same-origin&coep=&channel=${channel.name}"); + <\/script>`; + document.body.append(frame); + addEventListener('load', t.step_func(() => { + t.step_timeout(() => { + t.done() + }, 1500); + })); + }, `<iframe sandbox="${sandboxValue}"> ${document.title}`); }); </script>
diff --git "a/third_party/blink/web_tests/external/wpt/html/dom/idlharness.https_exclude=\050Document_Window_HTML._\051-expected.txt" "b/third_party/blink/web_tests/external/wpt/html/dom/idlharness.https_exclude=\050Document_Window_HTML._\051-expected.txt" index e64f9ba..66d22bb 100644 --- "a/third_party/blink/web_tests/external/wpt/html/dom/idlharness.https_exclude=\050Document_Window_HTML._\051-expected.txt" +++ "b/third_party/blink/web_tests/external/wpt/html/dom/idlharness.https_exclude=\050Document_Window_HTML._\051-expected.txt"
@@ -1,5 +1,5 @@ This is a testharness.js-based test. -Found 1397 tests; 1356 PASS, 41 FAIL, 0 TIMEOUT, 0 NOTRUN. +Found 1401 tests; 1356 PASS, 45 FAIL, 0 TIMEOUT, 0 NOTRUN. PASS idl_test setup PASS idl_test validation PASS Partial interface Document: original interface defined @@ -1371,6 +1371,10 @@ PASS SVGElement interface: attribute ontoggle PASS SVGElement interface: attribute onvolumechange PASS SVGElement interface: attribute onwaiting +FAIL SVGElement interface: attribute onwebkitanimationend assert_true: The prototype object must have a property "onwebkitanimationend" expected true got false +FAIL SVGElement interface: attribute onwebkitanimationiteration assert_true: The prototype object must have a property "onwebkitanimationiteration" expected true got false +FAIL SVGElement interface: attribute onwebkitanimationstart assert_true: The prototype object must have a property "onwebkitanimationstart" expected true got false +FAIL SVGElement interface: attribute onwebkittransitionend assert_true: The prototype object must have a property "onwebkittransitionend" expected true got false PASS SVGElement interface: attribute oncopy PASS SVGElement interface: attribute oncut PASS SVGElement interface: attribute onpaste
diff --git "a/third_party/blink/web_tests/external/wpt/html/dom/idlharness.https_include=\050Document_Window\051-expected.txt" "b/third_party/blink/web_tests/external/wpt/html/dom/idlharness.https_include=\050Document_Window\051-expected.txt" index dc7ef25..cae5ab4 100644 --- "a/third_party/blink/web_tests/external/wpt/html/dom/idlharness.https_include=\050Document_Window\051-expected.txt" +++ "b/third_party/blink/web_tests/external/wpt/html/dom/idlharness.https_include=\050Document_Window\051-expected.txt"
@@ -1,5 +1,5 @@ This is a testharness.js-based test. -Found 939 tests; 912 PASS, 27 FAIL, 0 TIMEOUT, 0 NOTRUN. +Found 963 tests; 920 PASS, 43 FAIL, 0 TIMEOUT, 0 NOTRUN. PASS idl_test setup PASS idl_test validation PASS Partial interface Document: original interface defined @@ -277,6 +277,10 @@ PASS Window interface: attribute ontoggle PASS Window interface: attribute onvolumechange PASS Window interface: attribute onwaiting +PASS Window interface: attribute onwebkitanimationend +PASS Window interface: attribute onwebkitanimationiteration +PASS Window interface: attribute onwebkitanimationstart +PASS Window interface: attribute onwebkittransitionend PASS Window interface: attribute onafterprint PASS Window interface: attribute onbeforeprint PASS Window interface: attribute onbeforeunload @@ -422,6 +426,10 @@ PASS Window interface: window must inherit property "ontoggle" with the proper type PASS Window interface: window must inherit property "onvolumechange" with the proper type PASS Window interface: window must inherit property "onwaiting" with the proper type +PASS Window interface: window must inherit property "onwebkitanimationend" with the proper type +PASS Window interface: window must inherit property "onwebkitanimationiteration" with the proper type +PASS Window interface: window must inherit property "onwebkitanimationstart" with the proper type +PASS Window interface: window must inherit property "onwebkittransitionend" with the proper type PASS Window interface: window must inherit property "onafterprint" with the proper type PASS Window interface: window must inherit property "onbeforeprint" with the proper type PASS Window interface: window must inherit property "onbeforeunload" with the proper type @@ -569,6 +577,10 @@ PASS Document interface: attribute ontoggle PASS Document interface: attribute onvolumechange PASS Document interface: attribute onwaiting +FAIL Document interface: attribute onwebkitanimationend assert_true: The prototype object must have a property "onwebkitanimationend" expected true got false +FAIL Document interface: attribute onwebkitanimationiteration assert_true: The prototype object must have a property "onwebkitanimationiteration" expected true got false +FAIL Document interface: attribute onwebkitanimationstart assert_true: The prototype object must have a property "onwebkitanimationstart" expected true got false +FAIL Document interface: attribute onwebkittransitionend assert_true: The prototype object must have a property "onwebkittransitionend" expected true got false PASS Document interface: attribute oncopy PASS Document interface: attribute oncut PASS Document interface: attribute onpaste @@ -691,6 +703,10 @@ PASS Document interface: iframe.contentDocument must inherit property "ontoggle" with the proper type PASS Document interface: iframe.contentDocument must inherit property "onvolumechange" with the proper type PASS Document interface: iframe.contentDocument must inherit property "onwaiting" with the proper type +FAIL Document interface: iframe.contentDocument must inherit property "onwebkitanimationend" with the proper type assert_inherits: property "onwebkitanimationend" not found in prototype chain +FAIL Document interface: iframe.contentDocument must inherit property "onwebkitanimationiteration" with the proper type assert_inherits: property "onwebkitanimationiteration" not found in prototype chain +FAIL Document interface: iframe.contentDocument must inherit property "onwebkitanimationstart" with the proper type assert_inherits: property "onwebkitanimationstart" not found in prototype chain +FAIL Document interface: iframe.contentDocument must inherit property "onwebkittransitionend" with the proper type assert_inherits: property "onwebkittransitionend" not found in prototype chain PASS Document interface: iframe.contentDocument must inherit property "oncopy" with the proper type PASS Document interface: iframe.contentDocument must inherit property "oncut" with the proper type PASS Document interface: iframe.contentDocument must inherit property "onpaste" with the proper type @@ -813,6 +829,10 @@ PASS Document interface: new Document() must inherit property "ontoggle" with the proper type PASS Document interface: new Document() must inherit property "onvolumechange" with the proper type PASS Document interface: new Document() must inherit property "onwaiting" with the proper type +FAIL Document interface: new Document() must inherit property "onwebkitanimationend" with the proper type assert_inherits: property "onwebkitanimationend" not found in prototype chain +FAIL Document interface: new Document() must inherit property "onwebkitanimationiteration" with the proper type assert_inherits: property "onwebkitanimationiteration" not found in prototype chain +FAIL Document interface: new Document() must inherit property "onwebkitanimationstart" with the proper type assert_inherits: property "onwebkitanimationstart" not found in prototype chain +FAIL Document interface: new Document() must inherit property "onwebkittransitionend" with the proper type assert_inherits: property "onwebkittransitionend" not found in prototype chain PASS Document interface: new Document() must inherit property "oncopy" with the proper type PASS Document interface: new Document() must inherit property "oncut" with the proper type PASS Document interface: new Document() must inherit property "onpaste" with the proper type @@ -935,6 +955,10 @@ PASS Document interface: documentWithHandlers must inherit property "ontoggle" with the proper type PASS Document interface: documentWithHandlers must inherit property "onvolumechange" with the proper type PASS Document interface: documentWithHandlers must inherit property "onwaiting" with the proper type +FAIL Document interface: documentWithHandlers must inherit property "onwebkitanimationend" with the proper type assert_inherits: property "onwebkitanimationend" found on object expected in prototype chain +FAIL Document interface: documentWithHandlers must inherit property "onwebkitanimationiteration" with the proper type assert_inherits: property "onwebkitanimationiteration" found on object expected in prototype chain +FAIL Document interface: documentWithHandlers must inherit property "onwebkitanimationstart" with the proper type assert_inherits: property "onwebkitanimationstart" found on object expected in prototype chain +FAIL Document interface: documentWithHandlers must inherit property "onwebkittransitionend" with the proper type assert_inherits: property "onwebkittransitionend" found on object expected in prototype chain PASS Document interface: documentWithHandlers must inherit property "oncopy" with the proper type PASS Document interface: documentWithHandlers must inherit property "oncut" with the proper type PASS Document interface: documentWithHandlers must inherit property "onpaste" with the proper type
diff --git a/third_party/blink/web_tests/external/wpt/html/dom/idlharness.https_include=HTML._-expected.txt b/third_party/blink/web_tests/external/wpt/html/dom/idlharness.https_include=HTML._-expected.txt index b628381..a590e36 100644 --- a/third_party/blink/web_tests/external/wpt/html/dom/idlharness.https_include=HTML._-expected.txt +++ b/third_party/blink/web_tests/external/wpt/html/dom/idlharness.https_include=HTML._-expected.txt
@@ -1,5 +1,5 @@ This is a testharness.js-based test. -Found 3721 tests; 3680 PASS, 41 FAIL, 0 TIMEOUT, 0 NOTRUN. +Found 3729 tests; 3680 PASS, 49 FAIL, 0 TIMEOUT, 0 NOTRUN. PASS idl_test setup PASS idl_test validation PASS Partial interface Document: original interface defined @@ -295,6 +295,10 @@ PASS HTMLElement interface: attribute ontoggle PASS HTMLElement interface: attribute onvolumechange PASS HTMLElement interface: attribute onwaiting +FAIL HTMLElement interface: attribute onwebkitanimationend assert_true: The prototype object must have a property "onwebkitanimationend" expected true got false +FAIL HTMLElement interface: attribute onwebkitanimationiteration assert_true: The prototype object must have a property "onwebkitanimationiteration" expected true got false +FAIL HTMLElement interface: attribute onwebkitanimationstart assert_true: The prototype object must have a property "onwebkitanimationstart" expected true got false +FAIL HTMLElement interface: attribute onwebkittransitionend assert_true: The prototype object must have a property "onwebkittransitionend" expected true got false PASS HTMLElement interface: attribute oncopy PASS HTMLElement interface: attribute oncut PASS HTMLElement interface: attribute onpaste @@ -386,6 +390,10 @@ PASS HTMLElement interface: document.createElement("noscript") must inherit property "ontoggle" with the proper type PASS HTMLElement interface: document.createElement("noscript") must inherit property "onvolumechange" with the proper type PASS HTMLElement interface: document.createElement("noscript") must inherit property "onwaiting" with the proper type +FAIL HTMLElement interface: document.createElement("noscript") must inherit property "onwebkitanimationend" with the proper type assert_inherits: property "onwebkitanimationend" not found in prototype chain +FAIL HTMLElement interface: document.createElement("noscript") must inherit property "onwebkitanimationiteration" with the proper type assert_inherits: property "onwebkitanimationiteration" not found in prototype chain +FAIL HTMLElement interface: document.createElement("noscript") must inherit property "onwebkitanimationstart" with the proper type assert_inherits: property "onwebkitanimationstart" not found in prototype chain +FAIL HTMLElement interface: document.createElement("noscript") must inherit property "onwebkittransitionend" with the proper type assert_inherits: property "onwebkittransitionend" not found in prototype chain PASS HTMLElement interface: document.createElement("noscript") must inherit property "oncopy" with the proper type PASS HTMLElement interface: document.createElement("noscript") must inherit property "oncut" with the proper type PASS HTMLElement interface: document.createElement("noscript") must inherit property "onpaste" with the proper type
diff --git a/third_party/blink/web_tests/external/wpt/html/webappapis/scripting/events/event-handler-all-global-events-expected.txt b/third_party/blink/web_tests/external/wpt/html/webappapis/scripting/events/event-handler-all-global-events-expected.txt index 3ae75ce4..ecf299b 100644 --- a/third_party/blink/web_tests/external/wpt/html/webappapis/scripting/events/event-handler-all-global-events-expected.txt +++ b/third_party/blink/web_tests/external/wpt/html/webappapis/scripting/events/event-handler-all-global-events-expected.txt
@@ -1,5 +1,5 @@ This is a testharness.js-based test. -Found 310 tests; 298 PASS, 12 FAIL, 0 TIMEOUT, 0 NOTRUN. +Found 330 tests; 302 PASS, 28 FAIL, 0 TIMEOUT, 0 NOTRUN. PASS onabort: must be on the appropriate locations for GlobalEventHandlers PASS onabort: the default value must be null PASS onabort: the content attribute must be compiled into a function as the corresponding property @@ -310,5 +310,25 @@ PASS onwaiting: the content attribute must be compiled into a function as the corresponding property PASS onwaiting: the content attribute must execute when an event is dispatched PASS onwaiting: dispatching an Event at a <meta> element must trigger element.onwaiting +FAIL onwebkitanimationend: must be on the appropriate locations for GlobalEventHandlers assert_true: HTMLElement has an own property named "onwebkitanimationend" expected true got false +FAIL onwebkitanimationend: the default value must be null assert_equals: The default value of the property is null for a HTMLSpanElement instance expected (object) null but got (undefined) undefined +FAIL onwebkitanimationend: the content attribute must be compiled into a function as the corresponding property assert_equals: The onwebkitanimationend property must be a function expected "function" but got "undefined" +FAIL onwebkitanimationend: the content attribute must execute when an event is dispatched assert_true: Dispatching an event must run the code expected true got undefined +PASS onwebkitanimationend: dispatching an Event at a <meta> element must trigger element.onwebkitanimationend +FAIL onwebkitanimationiteration: must be on the appropriate locations for GlobalEventHandlers assert_true: HTMLElement has an own property named "onwebkitanimationiteration" expected true got false +FAIL onwebkitanimationiteration: the default value must be null assert_equals: The default value of the property is null for a HTMLSpanElement instance expected (object) null but got (undefined) undefined +FAIL onwebkitanimationiteration: the content attribute must be compiled into a function as the corresponding property assert_equals: The onwebkitanimationiteration property must be a function expected "function" but got "undefined" +FAIL onwebkitanimationiteration: the content attribute must execute when an event is dispatched assert_true: Dispatching an event must run the code expected true got undefined +PASS onwebkitanimationiteration: dispatching an Event at a <meta> element must trigger element.onwebkitanimationiteration +FAIL onwebkitanimationstart: must be on the appropriate locations for GlobalEventHandlers assert_true: HTMLElement has an own property named "onwebkitanimationstart" expected true got false +FAIL onwebkitanimationstart: the default value must be null assert_equals: The default value of the property is null for a HTMLSpanElement instance expected (object) null but got (undefined) undefined +FAIL onwebkitanimationstart: the content attribute must be compiled into a function as the corresponding property assert_equals: The onwebkitanimationstart property must be a function expected "function" but got "undefined" +FAIL onwebkitanimationstart: the content attribute must execute when an event is dispatched assert_true: Dispatching an event must run the code expected true got undefined +PASS onwebkitanimationstart: dispatching an Event at a <meta> element must trigger element.onwebkitanimationstart +FAIL onwebkittransitionend: must be on the appropriate locations for GlobalEventHandlers assert_true: HTMLElement has an own property named "onwebkittransitionend" expected true got false +FAIL onwebkittransitionend: the default value must be null assert_equals: The default value of the property is null for a HTMLSpanElement instance expected (object) null but got (undefined) undefined +FAIL onwebkittransitionend: the content attribute must be compiled into a function as the corresponding property assert_equals: The onwebkittransitionend property must be a function expected "function" but got "undefined" +FAIL onwebkittransitionend: the content attribute must execute when an event is dispatched assert_true: Dispatching an event must run the code expected true got undefined +PASS onwebkittransitionend: dispatching an Event at a <meta> element must trigger element.onwebkittransitionend Harness: the test ran to completion.
diff --git a/third_party/blink/web_tests/external/wpt/html/webappapis/scripting/events/event-handler-attributes-body-window-expected.txt b/third_party/blink/web_tests/external/wpt/html/webappapis/scripting/events/event-handler-attributes-body-window-expected.txt index caef602..69c88f09 100644 --- a/third_party/blink/web_tests/external/wpt/html/webappapis/scripting/events/event-handler-attributes-body-window-expected.txt +++ b/third_party/blink/web_tests/external/wpt/html/webappapis/scripting/events/event-handler-attributes-body-window-expected.txt
@@ -1,5 +1,5 @@ This is a testharness.js-based test. -Found 312 tests; 297 PASS, 15 FAIL, 0 TIMEOUT, 0 NOTRUN. +Found 324 tests; 297 PASS, 27 FAIL, 0 TIMEOUT, 0 NOTRUN. PASS shadowed blur (document.body) PASS shadowed error (document.body) PASS shadowed focus (document.body) @@ -79,6 +79,10 @@ PASS not shadowed toggle (document.body) PASS not shadowed volumechange (document.body) PASS not shadowed waiting (document.body) +FAIL not shadowed webkitanimationend (document.body) assert_equals: alternative body should reflect expected (object) null but got (undefined) undefined +FAIL not shadowed webkitanimationiteration (document.body) assert_equals: alternative body should reflect expected (object) null but got (undefined) undefined +FAIL not shadowed webkitanimationstart (document.body) assert_equals: alternative body should reflect expected (object) null but got (undefined) undefined +FAIL not shadowed webkittransitionend (document.body) assert_equals: alternative body should reflect expected (object) null but got (undefined) undefined FAIL not shadowed copy (document.body) assert_equals: window should reflect expected (object) null but got (undefined) undefined FAIL not shadowed cut (document.body) assert_equals: window should reflect expected (object) null but got (undefined) undefined FAIL not shadowed paste (document.body) assert_equals: window should reflect expected (object) null but got (undefined) undefined @@ -183,6 +187,10 @@ PASS not shadowed toggle (document.createElement("body")) PASS not shadowed volumechange (document.createElement("body")) PASS not shadowed waiting (document.createElement("body")) +FAIL not shadowed webkitanimationend (document.createElement("body")) assert_equals: body should reflect expected (object) null but got (undefined) undefined +FAIL not shadowed webkitanimationiteration (document.createElement("body")) assert_equals: body should reflect expected (object) null but got (undefined) undefined +FAIL not shadowed webkitanimationstart (document.createElement("body")) assert_equals: body should reflect expected (object) null but got (undefined) undefined +FAIL not shadowed webkittransitionend (document.createElement("body")) assert_equals: body should reflect expected (object) null but got (undefined) undefined FAIL not shadowed copy (document.createElement("body")) assert_equals: window should reflect expected (object) null but got (undefined) undefined FAIL not shadowed cut (document.createElement("body")) assert_equals: window should reflect expected (object) null but got (undefined) undefined FAIL not shadowed paste (document.createElement("body")) assert_equals: window should reflect expected (object) null but got (undefined) undefined @@ -287,6 +295,10 @@ PASS not shadowed toggle (window) PASS not shadowed volumechange (window) PASS not shadowed waiting (window) +FAIL not shadowed webkitanimationend (window) assert_equals: body should reflect expected (object) null but got (undefined) undefined +FAIL not shadowed webkitanimationiteration (window) assert_equals: body should reflect expected (object) null but got (undefined) undefined +FAIL not shadowed webkitanimationstart (window) assert_equals: body should reflect expected (object) null but got (undefined) undefined +FAIL not shadowed webkittransitionend (window) assert_equals: body should reflect expected (object) null but got (undefined) undefined PASS not shadowed copy (window) PASS not shadowed cut (window) PASS not shadowed paste (window)
diff --git a/third_party/blink/web_tests/external/wpt/html/webappapis/scripting/events/event-handler-attributes-frameset-window-expected.txt b/third_party/blink/web_tests/external/wpt/html/webappapis/scripting/events/event-handler-attributes-frameset-window-expected.txt index 4dcaee30..d0258b8 100644 --- a/third_party/blink/web_tests/external/wpt/html/webappapis/scripting/events/event-handler-attributes-frameset-window-expected.txt +++ b/third_party/blink/web_tests/external/wpt/html/webappapis/scripting/events/event-handler-attributes-frameset-window-expected.txt
@@ -1,5 +1,5 @@ This is a testharness.js-based test. -Found 312 tests; 297 PASS, 15 FAIL, 0 TIMEOUT, 0 NOTRUN. +Found 324 tests; 297 PASS, 27 FAIL, 0 TIMEOUT, 0 NOTRUN. PASS shadowed blur (document.body) PASS shadowed error (document.body) PASS shadowed focus (document.body) @@ -79,6 +79,10 @@ PASS not shadowed toggle (document.body) PASS not shadowed volumechange (document.body) PASS not shadowed waiting (document.body) +FAIL not shadowed webkitanimationend (document.body) assert_equals: alternative body should reflect expected (object) null but got (undefined) undefined +FAIL not shadowed webkitanimationiteration (document.body) assert_equals: alternative body should reflect expected (object) null but got (undefined) undefined +FAIL not shadowed webkitanimationstart (document.body) assert_equals: alternative body should reflect expected (object) null but got (undefined) undefined +FAIL not shadowed webkittransitionend (document.body) assert_equals: alternative body should reflect expected (object) null but got (undefined) undefined FAIL not shadowed copy (document.body) assert_equals: window should reflect expected (object) null but got (undefined) undefined FAIL not shadowed cut (document.body) assert_equals: window should reflect expected (object) null but got (undefined) undefined FAIL not shadowed paste (document.body) assert_equals: window should reflect expected (object) null but got (undefined) undefined @@ -183,6 +187,10 @@ PASS not shadowed toggle (document.createElement("frameset")) PASS not shadowed volumechange (document.createElement("frameset")) PASS not shadowed waiting (document.createElement("frameset")) +FAIL not shadowed webkitanimationend (document.createElement("frameset")) assert_equals: body should reflect expected (object) null but got (undefined) undefined +FAIL not shadowed webkitanimationiteration (document.createElement("frameset")) assert_equals: body should reflect expected (object) null but got (undefined) undefined +FAIL not shadowed webkitanimationstart (document.createElement("frameset")) assert_equals: body should reflect expected (object) null but got (undefined) undefined +FAIL not shadowed webkittransitionend (document.createElement("frameset")) assert_equals: body should reflect expected (object) null but got (undefined) undefined FAIL not shadowed copy (document.createElement("frameset")) assert_equals: window should reflect expected (object) null but got (undefined) undefined FAIL not shadowed cut (document.createElement("frameset")) assert_equals: window should reflect expected (object) null but got (undefined) undefined FAIL not shadowed paste (document.createElement("frameset")) assert_equals: window should reflect expected (object) null but got (undefined) undefined @@ -287,6 +295,10 @@ PASS not shadowed toggle (window) PASS not shadowed volumechange (window) PASS not shadowed waiting (window) +FAIL not shadowed webkitanimationend (window) assert_equals: body should reflect expected (object) null but got (undefined) undefined +FAIL not shadowed webkitanimationiteration (window) assert_equals: body should reflect expected (object) null but got (undefined) undefined +FAIL not shadowed webkitanimationstart (window) assert_equals: body should reflect expected (object) null but got (undefined) undefined +FAIL not shadowed webkittransitionend (window) assert_equals: body should reflect expected (object) null but got (undefined) undefined PASS not shadowed copy (window) PASS not shadowed cut (window) PASS not shadowed paste (window)
diff --git a/third_party/blink/web_tests/external/wpt/html/webappapis/scripting/events/event-handler-attributes-windowless-body-expected.txt b/third_party/blink/web_tests/external/wpt/html/webappapis/scripting/events/event-handler-attributes-windowless-body-expected.txt index 14bbc1e..d69136c 100644 --- a/third_party/blink/web_tests/external/wpt/html/webappapis/scripting/events/event-handler-attributes-windowless-body-expected.txt +++ b/third_party/blink/web_tests/external/wpt/html/webappapis/scripting/events/event-handler-attributes-windowless-body-expected.txt
@@ -1,5 +1,5 @@ This is a testharness.js-based test. -Found 208 tests; 202 PASS, 6 FAIL, 0 TIMEOUT, 0 NOTRUN. +Found 216 tests; 202 PASS, 14 FAIL, 0 TIMEOUT, 0 NOTRUN. PASS Return null when getting the blur event handler of a windowless body PASS Ignore setting of blur window event handlers on windowless body PASS Return null when getting the error event handler of a windowless body @@ -101,6 +101,10 @@ PASS toggle is unaffected on a windowless body PASS volumechange is unaffected on a windowless body PASS waiting is unaffected on a windowless body +FAIL webkitanimationend is unaffected on a windowless body assert_equals: expected (object) null but got (undefined) undefined +FAIL webkitanimationiteration is unaffected on a windowless body assert_equals: expected (object) null but got (undefined) undefined +FAIL webkitanimationstart is unaffected on a windowless body assert_equals: expected (object) null but got (undefined) undefined +FAIL webkittransitionend is unaffected on a windowless body assert_equals: expected (object) null but got (undefined) undefined PASS copy is unaffected on a windowless body PASS cut is unaffected on a windowless body PASS paste is unaffected on a windowless body @@ -205,6 +209,10 @@ PASS toggle is unaffected on a windowless frameset PASS volumechange is unaffected on a windowless frameset PASS waiting is unaffected on a windowless frameset +FAIL webkitanimationend is unaffected on a windowless frameset assert_equals: expected (object) null but got (undefined) undefined +FAIL webkitanimationiteration is unaffected on a windowless frameset assert_equals: expected (object) null but got (undefined) undefined +FAIL webkitanimationstart is unaffected on a windowless frameset assert_equals: expected (object) null but got (undefined) undefined +FAIL webkittransitionend is unaffected on a windowless frameset assert_equals: expected (object) null but got (undefined) undefined PASS copy is unaffected on a windowless frameset PASS cut is unaffected on a windowless frameset PASS paste is unaffected on a windowless frameset
diff --git a/third_party/blink/web_tests/external/wpt/interfaces/html.idl b/third_party/blink/web_tests/external/wpt/interfaces/html.idl index 266574de..2c0c489 100644 --- a/third_party/blink/web_tests/external/wpt/interfaces/html.idl +++ b/third_party/blink/web_tests/external/wpt/interfaces/html.idl
@@ -1925,6 +1925,10 @@ attribute EventHandler ontoggle; attribute EventHandler onvolumechange; attribute EventHandler onwaiting; + attribute EventHandler onwebkitanimationend; + attribute EventHandler onwebkitanimationiteration; + attribute EventHandler onwebkitanimationstart; + attribute EventHandler onwebkittransitionend; }; interface mixin WindowEventHandlers {
diff --git a/third_party/blink/web_tests/external/wpt/interfaces/web-nfc.idl b/third_party/blink/web_tests/external/wpt/interfaces/web-nfc.idl index 12ea9d5..f2e31b73 100644 --- a/third_party/blink/web_tests/external/wpt/interfaces/web-nfc.idl +++ b/third_party/blink/web_tests/external/wpt/interfaces/web-nfc.idl
@@ -47,7 +47,7 @@ interface NDEFWriter { constructor(); - Promise<void> push(NDEFMessageSource message, optional NDEFPushOptions options={}); + Promise<void> write(NDEFMessageSource message, optional NDEFWriteOptions options={}); }; [SecureContext, Exposed=Window] @@ -73,19 +73,12 @@ required NDEFMessageInit message; }; -dictionary NDEFPushOptions { - NDEFPushTarget target = "any"; +dictionary NDEFWriteOptions { boolean ignoreRead = true; boolean overwrite = true; AbortSignal? signal; }; -enum NDEFPushTarget { - "tag", - "peer", - "any" -}; - dictionary NDEFScanOptions { USVString id; USVString recordType;
diff --git a/third_party/blink/web_tests/external/wpt/mathml/relations/html5-tree/math-global-event-handlers.tentative-expected.txt b/third_party/blink/web_tests/external/wpt/mathml/relations/html5-tree/math-global-event-handlers.tentative-expected.txt index 64d81e59..b5ee241 100644 --- a/third_party/blink/web_tests/external/wpt/mathml/relations/html5-tree/math-global-event-handlers.tentative-expected.txt +++ b/third_party/blink/web_tests/external/wpt/mathml/relations/html5-tree/math-global-event-handlers.tentative-expected.txt
@@ -1,5 +1,5 @@ This is a testharness.js-based test. -Found 310 tests; 295 PASS, 15 FAIL, 0 TIMEOUT, 0 NOTRUN. +Found 330 tests; 295 PASS, 35 FAIL, 0 TIMEOUT, 0 NOTRUN. PASS onabort: must be on the appropriate locations for GlobalEventHandlers PASS onabort: the default value must be null PASS onabort: the content attribute must be compiled into a function as the corresponding property @@ -310,5 +310,25 @@ PASS onwaiting: the content attribute must be compiled into a function as the corresponding property PASS onwaiting: dynamic changes on the attribute PASS onwaiting: dispatching an Event at a <math> element must trigger element.onwaiting +FAIL onwebkitanimationend: must be on the appropriate locations for GlobalEventHandlers assert_true: MathMLElement has an own property named "onwebkitanimationend" expected true got false +FAIL onwebkitanimationend: the default value must be null assert_equals: The default value of the property is null for a MathMLElement instance expected (object) null but got (undefined) undefined +FAIL onwebkitanimationend: the content attribute must be compiled into a function as the corresponding property assert_equals: The onwebkitanimationend property must be a function expected "function" but got "undefined" +FAIL onwebkitanimationend: dynamic changes on the attribute assert_equals: The onwebkitanimationend property must be null (no attribute) expected (object) null but got (undefined) undefined +FAIL onwebkitanimationend: dispatching an Event at a <math> element must trigger element.onwebkitanimationend assert_equals: The event must be fired at the <math> element expected (object) Element node <math></math> but got (undefined) undefined +FAIL onwebkitanimationiteration: must be on the appropriate locations for GlobalEventHandlers assert_true: MathMLElement has an own property named "onwebkitanimationiteration" expected true got false +FAIL onwebkitanimationiteration: the default value must be null assert_equals: The default value of the property is null for a MathMLElement instance expected (object) null but got (undefined) undefined +FAIL onwebkitanimationiteration: the content attribute must be compiled into a function as the corresponding property assert_equals: The onwebkitanimationiteration property must be a function expected "function" but got "undefined" +FAIL onwebkitanimationiteration: dynamic changes on the attribute assert_equals: The onwebkitanimationiteration property must be null (no attribute) expected (object) null but got (undefined) undefined +FAIL onwebkitanimationiteration: dispatching an Event at a <math> element must trigger element.onwebkitanimationiteration assert_equals: The event must be fired at the <math> element expected (object) Element node <math></math> but got (undefined) undefined +FAIL onwebkitanimationstart: must be on the appropriate locations for GlobalEventHandlers assert_true: MathMLElement has an own property named "onwebkitanimationstart" expected true got false +FAIL onwebkitanimationstart: the default value must be null assert_equals: The default value of the property is null for a MathMLElement instance expected (object) null but got (undefined) undefined +FAIL onwebkitanimationstart: the content attribute must be compiled into a function as the corresponding property assert_equals: The onwebkitanimationstart property must be a function expected "function" but got "undefined" +FAIL onwebkitanimationstart: dynamic changes on the attribute assert_equals: The onwebkitanimationstart property must be null (no attribute) expected (object) null but got (undefined) undefined +FAIL onwebkitanimationstart: dispatching an Event at a <math> element must trigger element.onwebkitanimationstart assert_equals: The event must be fired at the <math> element expected (object) Element node <math></math> but got (undefined) undefined +FAIL onwebkittransitionend: must be on the appropriate locations for GlobalEventHandlers assert_true: MathMLElement has an own property named "onwebkittransitionend" expected true got false +FAIL onwebkittransitionend: the default value must be null assert_equals: The default value of the property is null for a MathMLElement instance expected (object) null but got (undefined) undefined +FAIL onwebkittransitionend: the content attribute must be compiled into a function as the corresponding property assert_equals: The onwebkittransitionend property must be a function expected "function" but got "undefined" +FAIL onwebkittransitionend: dynamic changes on the attribute assert_equals: The onwebkittransitionend property must be null (no attribute) expected (object) null but got (undefined) undefined +FAIL onwebkittransitionend: dispatching an Event at a <math> element must trigger element.onwebkittransitionend assert_equals: The event must be fired at the <math> element expected (object) Element node <math></math> but got (undefined) undefined Harness: the test ran to completion.
diff --git a/third_party/blink/web_tests/external/wpt/resource-timing/object-not-found-adds-entry.html b/third_party/blink/web_tests/external/wpt/resource-timing/object-not-found-adds-entry.html new file mode 100644 index 0000000..22ee95e --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/resource-timing/object-not-found-adds-entry.html
@@ -0,0 +1,43 @@ +<!doctype html> +<html> +<head> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +</head> +<body> +<script> +const test_object_entry = (url, type, test_name) => { + promise_test(t => { + return new Promise((resolve, reject) => { + performance.clearResourceTimings(); + const el = document.createElement("object"); + const po = new PerformanceObserver(t.step_func(e => { + const entries = e.getEntriesByType("resource"); + assert_greater_than(entries.length, 0, "Got a performance entry"); + + assert_true(entries[0].name.includes(url), "Performance resource timing entry has the right name"); + po.disconnect(); + resolve(); + })); + po.observe({type: "resource"}); + el.data = url; + if (type) { + el.type = type; + } + el.style = "width: 0px; height: 0px;"; + document.body.appendChild(el); + + el.onload = el.onerror = t.step_timeout(() => { + assert_unreached("No performance entry was observed"); + reject(); + }, 500); + }); + }, test_name); + +}; + +test_object_entry("resources/status-code.py?status=404&type=none", null, "Test that an navigation object with a 404 response displays an entry"); +test_object_entry("resources/status-code.py?status=200&type=none", null, "Test that an navigation object with a 200 response displays an entry"); +test_object_entry("resources/status-code.py?status=404&type=img", "image/png", "Test that an image object with a 404 response displays an entry"); + +</script>
diff --git a/third_party/blink/web_tests/external/wpt/tools/lint/lint.py b/third_party/blink/web_tests/external/wpt/tools/lint/lint.py index a050cfa8..4090f26 100644 --- a/third_party/blink/web_tests/external/wpt/tools/lint/lint.py +++ b/third_party/blink/web_tests/external/wpt/tools/lint/lint.py
@@ -843,7 +843,7 @@ help="Output machine-readable JSON format") parser.add_argument("--markdown", action="store_true", help="Output markdown") - parser.add_argument("--repo-root", help="The WPT directory. Use this" + parser.add_argument("--repo-root", help="The WPT directory. Use this " "option if the lint script exists outside the repository") parser.add_argument("--ignore-glob", help="Additional file glob to ignore.") parser.add_argument("--all", action="store_true", help="If no paths are passed, try to lint the whole "
diff --git a/third_party/blink/web_tests/external/wpt/web-nfc/idlharness.https.window-expected.txt b/third_party/blink/web_tests/external/wpt/web-nfc/idlharness.https.window-expected.txt index 3a817f26..28c57a9d 100644 --- a/third_party/blink/web_tests/external/wpt/web-nfc/idlharness.https.window-expected.txt +++ b/third_party/blink/web_tests/external/wpt/web-nfc/idlharness.https.window-expected.txt
@@ -1,5 +1,5 @@ This is a testharness.js-based test. -Found 72 tests; 71 PASS, 1 FAIL, 0 TIMEOUT, 0 NOTRUN. +Found 72 tests; 68 PASS, 4 FAIL, 0 TIMEOUT, 0 NOTRUN. PASS idl_test setup PASS idl_test validation PASS NDEFMessage interface: existence and properties of interface object @@ -40,11 +40,11 @@ PASS NDEFWriter interface: existence and properties of interface prototype object PASS NDEFWriter interface: existence and properties of interface prototype object's "constructor" property PASS NDEFWriter interface: existence and properties of interface prototype object's @@unscopables property -PASS NDEFWriter interface: operation push(NDEFMessageSource, NDEFPushOptions) +FAIL NDEFWriter interface: operation write(NDEFMessageSource, NDEFWriteOptions) assert_own_property: interface prototype object missing non-static operation expected property "write" missing PASS NDEFWriter must be primary interface of new NDEFWriter(); PASS Stringification of new NDEFWriter(); -PASS NDEFWriter interface: new NDEFWriter(); must inherit property "push(NDEFMessageSource, NDEFPushOptions)" with the proper type -PASS NDEFWriter interface: calling push(NDEFMessageSource, NDEFPushOptions) on new NDEFWriter(); with too few arguments must throw TypeError +FAIL NDEFWriter interface: new NDEFWriter(); must inherit property "write(NDEFMessageSource, NDEFWriteOptions)" with the proper type assert_inherits: property "write" not found in prototype chain +FAIL NDEFWriter interface: calling write(NDEFMessageSource, NDEFWriteOptions) on new NDEFWriter(); with too few arguments must throw TypeError assert_inherits: property "write" not found in prototype chain PASS NDEFReader interface: existence and properties of interface object PASS NDEFReader interface object length PASS NDEFReader interface object name
diff --git a/third_party/blink/web_tests/fast/xsl/resources/xslt-enc-cyr.xsl b/third_party/blink/web_tests/fast/xsl/resources/xslt-enc-cyr.xsl index fec7f48..6cbaef6d1 100644 --- a/third_party/blink/web_tests/fast/xsl/resources/xslt-enc-cyr.xsl +++ b/third_party/blink/web_tests/fast/xsl/resources/xslt-enc-cyr.xsl
@@ -8,9 +8,4 @@ </body> </html> </xsl:template> - -<xsl:template > - <xsl:value-of select="." /> -</xsl:template> - </xsl:stylesheet> \ No newline at end of file
diff --git a/third_party/blink/web_tests/fast/xsl/resources/xslt-enc.xsl b/third_party/blink/web_tests/fast/xsl/resources/xslt-enc.xsl index c0ec33b..710ba48 100644 --- a/third_party/blink/web_tests/fast/xsl/resources/xslt-enc.xsl +++ b/third_party/blink/web_tests/fast/xsl/resources/xslt-enc.xsl
@@ -11,9 +11,4 @@ </body> </html> </xsl:template> - -<xsl:template > - <xsl:value-of select="." /> -</xsl:template> - </xsl:stylesheet> \ No newline at end of file
diff --git a/third_party/blink/web_tests/fast/xsl/resources/xslt-enc16.xsl b/third_party/blink/web_tests/fast/xsl/resources/xslt-enc16.xsl index fbce796..6626c8b 100644 --- a/third_party/blink/web_tests/fast/xsl/resources/xslt-enc16.xsl +++ b/third_party/blink/web_tests/fast/xsl/resources/xslt-enc16.xsl
@@ -8,9 +8,4 @@ </body> </html> </xsl:template> - -<xsl:template > - <xsl:value-of select="." /> -</xsl:template> - </xsl:stylesheet> \ No newline at end of file
diff --git a/third_party/blink/web_tests/fast/xsl/resources/xslt-text.xsl b/third_party/blink/web_tests/fast/xsl/resources/xslt-text.xsl index 1796937b..0362415 100644 --- a/third_party/blink/web_tests/fast/xsl/resources/xslt-text.xsl +++ b/third_party/blink/web_tests/fast/xsl/resources/xslt-text.xsl
@@ -5,8 +5,4 @@ <xsl:template match="TEST">CHARACTERS IN XSLT: <<<&тест&>>> <xsl:apply-templates/><xsl:text> </xsl:text></xsl:template> -<xsl:template > - <xsl:value-of select="." /> -</xsl:template> - </xsl:stylesheet>
diff --git a/third_party/blink/web_tests/fast/xsl/xslt-processor-expected.txt b/third_party/blink/web_tests/fast/xsl/xslt-processor-expected.txt index 8142c7d..51e98455 100644 --- a/third_party/blink/web_tests/fast/xsl/xslt-processor-expected.txt +++ b/third_party/blink/web_tests/fast/xsl/xslt-processor-expected.txt
@@ -9,10 +9,6 @@ <xsl:apply-templates/><xsl:text> </xsl:text></xsl:template> -<xsl:template> - <xsl:value-of select="."/> -</xsl:template> - </xsl:stylesheet> 0.3 xsl2: <?xml version="1.0" encoding="UTF-8"?><xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> @@ -27,11 +23,6 @@ </body> </html> </xsl:template> - -<xsl:template> - <xsl:value-of select="."/> -</xsl:template> - </xsl:stylesheet> 1.0 void importStylesheet(in DOMNode style):
diff --git a/third_party/blink/web_tests/platform/fuchsia/paint/invalidation/selection/selection-in-composited-scrolling-container-expected.png b/third_party/blink/web_tests/platform/fuchsia/paint/invalidation/selection/selection-in-composited-scrolling-container-expected.png new file mode 100644 index 0000000..40c9d435 --- /dev/null +++ b/third_party/blink/web_tests/platform/fuchsia/paint/invalidation/selection/selection-in-composited-scrolling-container-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/fuchsia/tables/mozilla/bugs/bug59354-expected.png b/third_party/blink/web_tests/platform/fuchsia/tables/mozilla/bugs/bug59354-expected.png new file mode 100644 index 0000000..8f10876 --- /dev/null +++ b/third_party/blink/web_tests/platform/fuchsia/tables/mozilla/bugs/bug59354-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/fuchsia/tables/mozilla/bugs/bug7342-expected.png b/third_party/blink/web_tests/platform/fuchsia/tables/mozilla/bugs/bug7342-expected.png new file mode 100644 index 0000000..1e30c6a --- /dev/null +++ b/third_party/blink/web_tests/platform/fuchsia/tables/mozilla/bugs/bug7342-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/compositing/overflow/do-not-paint-outline-into-composited-scrolling-contents-expected.png b/third_party/blink/web_tests/platform/linux/compositing/overflow/do-not-paint-outline-into-composited-scrolling-contents-expected.png index 24ea3c6..5682c73 100644 --- a/third_party/blink/web_tests/platform/linux/compositing/overflow/do-not-paint-outline-into-composited-scrolling-contents-expected.png +++ b/third_party/blink/web_tests/platform/linux/compositing/overflow/do-not-paint-outline-into-composited-scrolling-contents-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/compositing/overflow/update-widget-positions-on-nested-frames-and-scrollers-expected.png b/third_party/blink/web_tests/platform/linux/compositing/overflow/update-widget-positions-on-nested-frames-and-scrollers-expected.png index 6b84ae45..206c123 100644 --- a/third_party/blink/web_tests/platform/linux/compositing/overflow/update-widget-positions-on-nested-frames-and-scrollers-expected.png +++ b/third_party/blink/web_tests/platform/linux/compositing/overflow/update-widget-positions-on-nested-frames-and-scrollers-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/css1/box_properties/acid_test-expected.png b/third_party/blink/web_tests/platform/linux/css1/box_properties/acid_test-expected.png index ac51c72c..8e74a7a 100644 --- a/third_party/blink/web_tests/platform/linux/css1/box_properties/acid_test-expected.png +++ b/third_party/blink/web_tests/platform/linux/css1/box_properties/acid_test-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/css2.1/t09-c5526c-display-00-e-expected.png b/third_party/blink/web_tests/platform/linux/css2.1/t09-c5526c-display-00-e-expected.png index 2d53c00..e9f00b98 100644 --- a/third_party/blink/web_tests/platform/linux/css2.1/t09-c5526c-display-00-e-expected.png +++ b/third_party/blink/web_tests/platform/linux/css2.1/t09-c5526c-display-00-e-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/css3/flexbox/button-expected.png b/third_party/blink/web_tests/platform/linux/css3/flexbox/button-expected.png index 160ea2d..d0efbff 100644 --- a/third_party/blink/web_tests/platform/linux/css3/flexbox/button-expected.png +++ b/third_party/blink/web_tests/platform/linux/css3/flexbox/button-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/css3/selectors3/html/css3-modsel-161-expected.png b/third_party/blink/web_tests/platform/linux/css3/selectors3/html/css3-modsel-161-expected.png index cb20443..09557b96 100644 --- a/third_party/blink/web_tests/platform/linux/css3/selectors3/html/css3-modsel-161-expected.png +++ b/third_party/blink/web_tests/platform/linux/css3/selectors3/html/css3-modsel-161-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/css3/selectors3/html/css3-modsel-23-expected.png b/third_party/blink/web_tests/platform/linux/css3/selectors3/html/css3-modsel-23-expected.png index 89838aa..d5b32ae3 100644 --- a/third_party/blink/web_tests/platform/linux/css3/selectors3/html/css3-modsel-23-expected.png +++ b/third_party/blink/web_tests/platform/linux/css3/selectors3/html/css3-modsel-23-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/css3/selectors3/html/css3-modsel-24-expected.png b/third_party/blink/web_tests/platform/linux/css3/selectors3/html/css3-modsel-24-expected.png index 2a06a24..ef81a0a 100644 --- a/third_party/blink/web_tests/platform/linux/css3/selectors3/html/css3-modsel-24-expected.png +++ b/third_party/blink/web_tests/platform/linux/css3/selectors3/html/css3-modsel-24-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/css3/selectors3/html/css3-modsel-25-expected.png b/third_party/blink/web_tests/platform/linux/css3/selectors3/html/css3-modsel-25-expected.png index 2b40542..b6102ee 100644 --- a/third_party/blink/web_tests/platform/linux/css3/selectors3/html/css3-modsel-25-expected.png +++ b/third_party/blink/web_tests/platform/linux/css3/selectors3/html/css3-modsel-25-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/css3/selectors3/html/css3-modsel-64-expected.png b/third_party/blink/web_tests/platform/linux/css3/selectors3/html/css3-modsel-64-expected.png index a018c5c..ad92d71 100644 --- a/third_party/blink/web_tests/platform/linux/css3/selectors3/html/css3-modsel-64-expected.png +++ b/third_party/blink/web_tests/platform/linux/css3/selectors3/html/css3-modsel-64-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/css3/selectors3/html/css3-modsel-68-expected.png b/third_party/blink/web_tests/platform/linux/css3/selectors3/html/css3-modsel-68-expected.png index 2a06a24..ef81a0a 100644 --- a/third_party/blink/web_tests/platform/linux/css3/selectors3/html/css3-modsel-68-expected.png +++ b/third_party/blink/web_tests/platform/linux/css3/selectors3/html/css3-modsel-68-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/css3/selectors3/html/css3-modsel-69-expected.png b/third_party/blink/web_tests/platform/linux/css3/selectors3/html/css3-modsel-69-expected.png index 89838aa..d5b32ae3 100644 --- a/third_party/blink/web_tests/platform/linux/css3/selectors3/html/css3-modsel-69-expected.png +++ b/third_party/blink/web_tests/platform/linux/css3/selectors3/html/css3-modsel-69-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/css3/selectors3/html/css3-modsel-70-expected.png b/third_party/blink/web_tests/platform/linux/css3/selectors3/html/css3-modsel-70-expected.png index c13fa4e9..9071ed410 100644 --- a/third_party/blink/web_tests/platform/linux/css3/selectors3/html/css3-modsel-70-expected.png +++ b/third_party/blink/web_tests/platform/linux/css3/selectors3/html/css3-modsel-70-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/css3/selectors3/xhtml/css3-modsel-161-expected.png b/third_party/blink/web_tests/platform/linux/css3/selectors3/xhtml/css3-modsel-161-expected.png index cb20443..09557b96 100644 --- a/third_party/blink/web_tests/platform/linux/css3/selectors3/xhtml/css3-modsel-161-expected.png +++ b/third_party/blink/web_tests/platform/linux/css3/selectors3/xhtml/css3-modsel-161-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/css3/selectors3/xhtml/css3-modsel-23-expected.png b/third_party/blink/web_tests/platform/linux/css3/selectors3/xhtml/css3-modsel-23-expected.png index 89838aa..d5b32ae3 100644 --- a/third_party/blink/web_tests/platform/linux/css3/selectors3/xhtml/css3-modsel-23-expected.png +++ b/third_party/blink/web_tests/platform/linux/css3/selectors3/xhtml/css3-modsel-23-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/css3/selectors3/xhtml/css3-modsel-24-expected.png b/third_party/blink/web_tests/platform/linux/css3/selectors3/xhtml/css3-modsel-24-expected.png index 2a06a24..ef81a0a 100644 --- a/third_party/blink/web_tests/platform/linux/css3/selectors3/xhtml/css3-modsel-24-expected.png +++ b/third_party/blink/web_tests/platform/linux/css3/selectors3/xhtml/css3-modsel-24-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/css3/selectors3/xhtml/css3-modsel-25-expected.png b/third_party/blink/web_tests/platform/linux/css3/selectors3/xhtml/css3-modsel-25-expected.png index 2b40542..b6102ee 100644 --- a/third_party/blink/web_tests/platform/linux/css3/selectors3/xhtml/css3-modsel-25-expected.png +++ b/third_party/blink/web_tests/platform/linux/css3/selectors3/xhtml/css3-modsel-25-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/css3/selectors3/xhtml/css3-modsel-64-expected.png b/third_party/blink/web_tests/platform/linux/css3/selectors3/xhtml/css3-modsel-64-expected.png index a018c5c..ad92d71 100644 --- a/third_party/blink/web_tests/platform/linux/css3/selectors3/xhtml/css3-modsel-64-expected.png +++ b/third_party/blink/web_tests/platform/linux/css3/selectors3/xhtml/css3-modsel-64-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/css3/selectors3/xhtml/css3-modsel-68-expected.png b/third_party/blink/web_tests/platform/linux/css3/selectors3/xhtml/css3-modsel-68-expected.png index 2a06a24..ef81a0a 100644 --- a/third_party/blink/web_tests/platform/linux/css3/selectors3/xhtml/css3-modsel-68-expected.png +++ b/third_party/blink/web_tests/platform/linux/css3/selectors3/xhtml/css3-modsel-68-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/css3/selectors3/xhtml/css3-modsel-69-expected.png b/third_party/blink/web_tests/platform/linux/css3/selectors3/xhtml/css3-modsel-69-expected.png index 89838aa..d5b32ae3 100644 --- a/third_party/blink/web_tests/platform/linux/css3/selectors3/xhtml/css3-modsel-69-expected.png +++ b/third_party/blink/web_tests/platform/linux/css3/selectors3/xhtml/css3-modsel-69-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/css3/selectors3/xhtml/css3-modsel-70-expected.png b/third_party/blink/web_tests/platform/linux/css3/selectors3/xhtml/css3-modsel-70-expected.png index c13fa4e9..9071ed410 100644 --- a/third_party/blink/web_tests/platform/linux/css3/selectors3/xhtml/css3-modsel-70-expected.png +++ b/third_party/blink/web_tests/platform/linux/css3/selectors3/xhtml/css3-modsel-70-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/css3/selectors3/xml/css3-modsel-161-expected.png b/third_party/blink/web_tests/platform/linux/css3/selectors3/xml/css3-modsel-161-expected.png index 4bffa96..99073ba 100644 --- a/third_party/blink/web_tests/platform/linux/css3/selectors3/xml/css3-modsel-161-expected.png +++ b/third_party/blink/web_tests/platform/linux/css3/selectors3/xml/css3-modsel-161-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/css3/selectors3/xml/css3-modsel-23-expected.png b/third_party/blink/web_tests/platform/linux/css3/selectors3/xml/css3-modsel-23-expected.png index 74f9657..4a62a6d0 100644 --- a/third_party/blink/web_tests/platform/linux/css3/selectors3/xml/css3-modsel-23-expected.png +++ b/third_party/blink/web_tests/platform/linux/css3/selectors3/xml/css3-modsel-23-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/css3/selectors3/xml/css3-modsel-24-expected.png b/third_party/blink/web_tests/platform/linux/css3/selectors3/xml/css3-modsel-24-expected.png index 836a506..3995100 100644 --- a/third_party/blink/web_tests/platform/linux/css3/selectors3/xml/css3-modsel-24-expected.png +++ b/third_party/blink/web_tests/platform/linux/css3/selectors3/xml/css3-modsel-24-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/css3/selectors3/xml/css3-modsel-25-expected.png b/third_party/blink/web_tests/platform/linux/css3/selectors3/xml/css3-modsel-25-expected.png index 9e1ca23..1b7a0c0f 100644 --- a/third_party/blink/web_tests/platform/linux/css3/selectors3/xml/css3-modsel-25-expected.png +++ b/third_party/blink/web_tests/platform/linux/css3/selectors3/xml/css3-modsel-25-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/css3/selectors3/xml/css3-modsel-64-expected.png b/third_party/blink/web_tests/platform/linux/css3/selectors3/xml/css3-modsel-64-expected.png index 8d787a8b..6733767 100644 --- a/third_party/blink/web_tests/platform/linux/css3/selectors3/xml/css3-modsel-64-expected.png +++ b/third_party/blink/web_tests/platform/linux/css3/selectors3/xml/css3-modsel-64-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/css3/selectors3/xml/css3-modsel-68-expected.png b/third_party/blink/web_tests/platform/linux/css3/selectors3/xml/css3-modsel-68-expected.png index 836a506..3995100 100644 --- a/third_party/blink/web_tests/platform/linux/css3/selectors3/xml/css3-modsel-68-expected.png +++ b/third_party/blink/web_tests/platform/linux/css3/selectors3/xml/css3-modsel-68-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/css3/selectors3/xml/css3-modsel-69-expected.png b/third_party/blink/web_tests/platform/linux/css3/selectors3/xml/css3-modsel-69-expected.png index 74f9657..4a62a6d0 100644 --- a/third_party/blink/web_tests/platform/linux/css3/selectors3/xml/css3-modsel-69-expected.png +++ b/third_party/blink/web_tests/platform/linux/css3/selectors3/xml/css3-modsel-69-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/css3/selectors3/xml/css3-modsel-70-expected.png b/third_party/blink/web_tests/platform/linux/css3/selectors3/xml/css3-modsel-70-expected.png index b7ec511..cd0d565 100644 --- a/third_party/blink/web_tests/platform/linux/css3/selectors3/xml/css3-modsel-70-expected.png +++ b/third_party/blink/web_tests/platform/linux/css3/selectors3/xml/css3-modsel-70-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/editing/caret/caret-color-001-expected.png b/third_party/blink/web_tests/platform/linux/editing/caret/caret-color-001-expected.png index 461adda9..ed158f2 100644 --- a/third_party/blink/web_tests/platform/linux/editing/caret/caret-color-001-expected.png +++ b/third_party/blink/web_tests/platform/linux/editing/caret/caret-color-001-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/editing/caret/caret-color-002-expected.png b/third_party/blink/web_tests/platform/linux/editing/caret/caret-color-002-expected.png index 461adda9..ed158f2 100644 --- a/third_party/blink/web_tests/platform/linux/editing/caret/caret-color-002-expected.png +++ b/third_party/blink/web_tests/platform/linux/editing/caret/caret-color-002-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/editing/caret/caret-color-003-expected.png b/third_party/blink/web_tests/platform/linux/editing/caret/caret-color-003-expected.png index e4793c06..0014f94 100644 --- a/third_party/blink/web_tests/platform/linux/editing/caret/caret-color-003-expected.png +++ b/third_party/blink/web_tests/platform/linux/editing/caret/caret-color-003-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/editing/caret/caret-color-004-expected.png b/third_party/blink/web_tests/platform/linux/editing/caret/caret-color-004-expected.png index 9489019..a045a74 100644 --- a/third_party/blink/web_tests/platform/linux/editing/caret/caret-color-004-expected.png +++ b/third_party/blink/web_tests/platform/linux/editing/caret/caret-color-004-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/editing/caret/caret-color-005-expected.png b/third_party/blink/web_tests/platform/linux/editing/caret/caret-color-005-expected.png index faf359f..640ac00c 100644 --- a/third_party/blink/web_tests/platform/linux/editing/caret/caret-color-005-expected.png +++ b/third_party/blink/web_tests/platform/linux/editing/caret/caret-color-005-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/editing/caret/caret-color-007-expected.png b/third_party/blink/web_tests/platform/linux/editing/caret/caret-color-007-expected.png index 5b0ec5f..3dfc2ed2 100644 --- a/third_party/blink/web_tests/platform/linux/editing/caret/caret-color-007-expected.png +++ b/third_party/blink/web_tests/platform/linux/editing/caret/caret-color-007-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/editing/caret/caret-color-010-expected.png b/third_party/blink/web_tests/platform/linux/editing/caret/caret-color-010-expected.png index 4c3f2a1..3da5415 100644 --- a/third_party/blink/web_tests/platform/linux/editing/caret/caret-color-010-expected.png +++ b/third_party/blink/web_tests/platform/linux/editing/caret/caret-color-010-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/editing/caret/caret-color-012-expected.png b/third_party/blink/web_tests/platform/linux/editing/caret/caret-color-012-expected.png index 461adda9..ed158f2 100644 --- a/third_party/blink/web_tests/platform/linux/editing/caret/caret-color-012-expected.png +++ b/third_party/blink/web_tests/platform/linux/editing/caret/caret-color-012-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/editing/caret/caret-position-expected.png b/third_party/blink/web_tests/platform/linux/editing/caret/caret-position-expected.png index 421abde65..bf9a4d9a 100644 --- a/third_party/blink/web_tests/platform/linux/editing/caret/caret-position-expected.png +++ b/third_party/blink/web_tests/platform/linux/editing/caret/caret-position-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/editing/input/caret-at-the-edge-of-input-expected.png b/third_party/blink/web_tests/platform/linux/editing/input/caret-at-the-edge-of-input-expected.png index e5c0090..962aaca 100644 --- a/third_party/blink/web_tests/platform/linux/editing/input/caret-at-the-edge-of-input-expected.png +++ b/third_party/blink/web_tests/platform/linux/editing/input/caret-at-the-edge-of-input-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/editing/input/reveal-caret-of-multiline-input-expected.png b/third_party/blink/web_tests/platform/linux/editing/input/reveal-caret-of-multiline-input-expected.png index 89bad9a1..eb79e1c6 100644 --- a/third_party/blink/web_tests/platform/linux/editing/input/reveal-caret-of-multiline-input-expected.png +++ b/third_party/blink/web_tests/platform/linux/editing/input/reveal-caret-of-multiline-input-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/editing/inserting/4960120-1-expected.png b/third_party/blink/web_tests/platform/linux/editing/inserting/4960120-1-expected.png index 37964b87..7a3018b 100644 --- a/third_party/blink/web_tests/platform/linux/editing/inserting/4960120-1-expected.png +++ b/third_party/blink/web_tests/platform/linux/editing/inserting/4960120-1-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/editing/pasteboard/4806874-expected.png b/third_party/blink/web_tests/platform/linux/editing/pasteboard/4806874-expected.png index 82629ea..71b652c 100644 --- a/third_party/blink/web_tests/platform/linux/editing/pasteboard/4806874-expected.png +++ b/third_party/blink/web_tests/platform/linux/editing/pasteboard/4806874-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/editing/selection/4975120-expected.png b/third_party/blink/web_tests/platform/linux/editing/selection/4975120-expected.png index 2b3fff3..05fd734 100644 --- a/third_party/blink/web_tests/platform/linux/editing/selection/4975120-expected.png +++ b/third_party/blink/web_tests/platform/linux/editing/selection/4975120-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/editing/selection/selection-button-text-expected.png b/third_party/blink/web_tests/platform/linux/editing/selection/selection-button-text-expected.png index 84c4a51..8bd56fa8 100644 --- a/third_party/blink/web_tests/platform/linux/editing/selection/selection-button-text-expected.png +++ b/third_party/blink/web_tests/platform/linux/editing/selection/selection-button-text-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/external/wpt/css/css-pseudo/spelling-error-002-manual-expected.png b/third_party/blink/web_tests/platform/linux/external/wpt/css/css-pseudo/spelling-error-002-manual-expected.png index c970547..2fba0aa 100644 --- a/third_party/blink/web_tests/platform/linux/external/wpt/css/css-pseudo/spelling-error-002-manual-expected.png +++ b/third_party/blink/web_tests/platform/linux/external/wpt/css/css-pseudo/spelling-error-002-manual-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/block/basic/011-expected.png b/third_party/blink/web_tests/platform/linux/fast/block/basic/011-expected.png index ac51c72c..8e74a7a 100644 --- a/third_party/blink/web_tests/platform/linux/fast/block/basic/011-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/block/basic/011-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/block/positioning/inline-block-relposition-expected.png b/third_party/blink/web_tests/platform/linux/fast/block/positioning/inline-block-relposition-expected.png index af347fd..599dfbf 100644 --- a/third_party/blink/web_tests/platform/linux/fast/block/positioning/inline-block-relposition-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/block/positioning/inline-block-relposition-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/css/input-search-padding-expected.png b/third_party/blink/web_tests/platform/linux/fast/css/input-search-padding-expected.png index 4b303da02..d6020a8 100644 --- a/third_party/blink/web_tests/platform/linux/fast/css/input-search-padding-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/css/input-search-padding-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/css/line-height-expected.png b/third_party/blink/web_tests/platform/linux/fast/css/line-height-expected.png index 0f46666..5abfc28 100644 --- a/third_party/blink/web_tests/platform/linux/fast/css/line-height-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/css/line-height-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/css/non-standard-checkbox-size-expected.png b/third_party/blink/web_tests/platform/linux/fast/css/non-standard-checkbox-size-expected.png index 29167e9..67209f9 100644 --- a/third_party/blink/web_tests/platform/linux/fast/css/non-standard-checkbox-size-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/css/non-standard-checkbox-size-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/css/resize-corner-tracking-expected.png b/third_party/blink/web_tests/platform/linux/fast/css/resize-corner-tracking-expected.png index 5eee11d5..dd5a67cd 100644 --- a/third_party/blink/web_tests/platform/linux/fast/css/resize-corner-tracking-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/css/resize-corner-tracking-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/css/rtl-ordering-expected.png b/third_party/blink/web_tests/platform/linux/fast/css/rtl-ordering-expected.png index 0cdf3e0..a40b56ea 100644 --- a/third_party/blink/web_tests/platform/linux/fast/css/rtl-ordering-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/css/rtl-ordering-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/dom/HTMLMeterElement/meter-styles-changing-pseudo-expected.png b/third_party/blink/web_tests/platform/linux/fast/dom/HTMLMeterElement/meter-styles-changing-pseudo-expected.png index 2fd51c52..7d479d7 100644 --- a/third_party/blink/web_tests/platform/linux/fast/dom/HTMLMeterElement/meter-styles-changing-pseudo-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/dom/HTMLMeterElement/meter-styles-changing-pseudo-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/dynamic/008-expected.png b/third_party/blink/web_tests/platform/linux/fast/dynamic/008-expected.png index 75ea05b..e861eea 100644 --- a/third_party/blink/web_tests/platform/linux/fast/dynamic/008-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/dynamic/008-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/files/file-in-input-display-expected.png b/third_party/blink/web_tests/platform/linux/fast/files/file-in-input-display-expected.png index 9455260cf..ab7f3ede 100644 --- a/third_party/blink/web_tests/platform/linux/fast/files/file-in-input-display-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/files/file-in-input-display-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/forms/basic-buttons-expected.png b/third_party/blink/web_tests/platform/linux/fast/forms/basic-buttons-expected.png index aa9553ef..079f21e2 100644 --- a/third_party/blink/web_tests/platform/linux/fast/forms/basic-buttons-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/forms/basic-buttons-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/forms/basic-inputs-expected.png b/third_party/blink/web_tests/platform/linux/fast/forms/basic-inputs-expected.png index 1bc93a2d..4469aeb 100644 --- a/third_party/blink/web_tests/platform/linux/fast/forms/basic-inputs-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/forms/basic-inputs-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/forms/button-sizes-expected.png b/third_party/blink/web_tests/platform/linux/fast/forms/button-sizes-expected.png index cb47731f..cdb9668 100644 --- a/third_party/blink/web_tests/platform/linux/fast/forms/button-sizes-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/forms/button-sizes-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/forms/button-style-color-expected.png b/third_party/blink/web_tests/platform/linux/fast/forms/button-style-color-expected.png index d35546ae..462c844 100644 --- a/third_party/blink/web_tests/platform/linux/fast/forms/button-style-color-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/forms/button-style-color-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/forms/button-table-styles-expected.png b/third_party/blink/web_tests/platform/linux/fast/forms/button-table-styles-expected.png index 4187406..8aa4d0b 100644 --- a/third_party/blink/web_tests/platform/linux/fast/forms/button-table-styles-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/forms/button-table-styles-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/forms/button-text-transform-expected.png b/third_party/blink/web_tests/platform/linux/fast/forms/button-text-transform-expected.png index 3139340..6c3fda9 100644 --- a/third_party/blink/web_tests/platform/linux/fast/forms/button-text-transform-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/forms/button-text-transform-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/forms/button/button-align-expected.png b/third_party/blink/web_tests/platform/linux/fast/forms/button/button-align-expected.png index 6aa044b..4613a221 100644 --- a/third_party/blink/web_tests/platform/linux/fast/forms/button/button-align-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/forms/button/button-align-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/forms/button/button-white-space-expected.png b/third_party/blink/web_tests/platform/linux/fast/forms/button/button-white-space-expected.png index e61c1c0..fd3b1f4 100644 --- a/third_party/blink/web_tests/platform/linux/fast/forms/button/button-white-space-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/forms/button/button-white-space-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/forms/calendar-picker/calendar-picker-appearance-ar-expected.png b/third_party/blink/web_tests/platform/linux/fast/forms/calendar-picker/calendar-picker-appearance-ar-expected.png index da73f86..df60748a 100644 --- a/third_party/blink/web_tests/platform/linux/fast/forms/calendar-picker/calendar-picker-appearance-ar-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/forms/calendar-picker/calendar-picker-appearance-ar-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/forms/calendar-picker/calendar-picker-appearance-coarse-expected.png b/third_party/blink/web_tests/platform/linux/fast/forms/calendar-picker/calendar-picker-appearance-coarse-expected.png index ec49d5f..ec83ea4 100644 --- a/third_party/blink/web_tests/platform/linux/fast/forms/calendar-picker/calendar-picker-appearance-coarse-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/forms/calendar-picker/calendar-picker-appearance-coarse-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/forms/calendar-picker/calendar-picker-appearance-expected.png b/third_party/blink/web_tests/platform/linux/fast/forms/calendar-picker/calendar-picker-appearance-expected.png index 5d5a39be..ec83ea4 100644 --- a/third_party/blink/web_tests/platform/linux/fast/forms/calendar-picker/calendar-picker-appearance-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/forms/calendar-picker/calendar-picker-appearance-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/forms/calendar-picker/calendar-picker-appearance-minimum-date-expected.png b/third_party/blink/web_tests/platform/linux/fast/forms/calendar-picker/calendar-picker-appearance-minimum-date-expected.png index 89be398..27ca78cd 100644 --- a/third_party/blink/web_tests/platform/linux/fast/forms/calendar-picker/calendar-picker-appearance-minimum-date-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/forms/calendar-picker/calendar-picker-appearance-minimum-date-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/forms/calendar-picker/calendar-picker-appearance-required-ar-expected.png b/third_party/blink/web_tests/platform/linux/fast/forms/calendar-picker/calendar-picker-appearance-required-ar-expected.png index 115f0012..a2f6f2c7 100644 --- a/third_party/blink/web_tests/platform/linux/fast/forms/calendar-picker/calendar-picker-appearance-required-ar-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/forms/calendar-picker/calendar-picker-appearance-required-ar-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/forms/calendar-picker/calendar-picker-appearance-required-expected.png b/third_party/blink/web_tests/platform/linux/fast/forms/calendar-picker/calendar-picker-appearance-required-expected.png index 6a2fa4a..21dea2f 100644 --- a/third_party/blink/web_tests/platform/linux/fast/forms/calendar-picker/calendar-picker-appearance-required-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/forms/calendar-picker/calendar-picker-appearance-required-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/forms/calendar-picker/calendar-picker-appearance-ru-expected.png b/third_party/blink/web_tests/platform/linux/fast/forms/calendar-picker/calendar-picker-appearance-ru-expected.png index 2ce875e2..6bd0482 100644 --- a/third_party/blink/web_tests/platform/linux/fast/forms/calendar-picker/calendar-picker-appearance-ru-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/forms/calendar-picker/calendar-picker-appearance-ru-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/forms/calendar-picker/calendar-picker-appearance-step-expected.png b/third_party/blink/web_tests/platform/linux/fast/forms/calendar-picker/calendar-picker-appearance-step-expected.png index 1d31db6e..45bfe648 100644 --- a/third_party/blink/web_tests/platform/linux/fast/forms/calendar-picker/calendar-picker-appearance-step-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/forms/calendar-picker/calendar-picker-appearance-step-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/forms/calendar-picker/calendar-picker-appearance-zoom125-expected.png b/third_party/blink/web_tests/platform/linux/fast/forms/calendar-picker/calendar-picker-appearance-zoom125-expected.png index 30269dbf..ccfe425 100644 --- a/third_party/blink/web_tests/platform/linux/fast/forms/calendar-picker/calendar-picker-appearance-zoom125-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/forms/calendar-picker/calendar-picker-appearance-zoom125-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/forms/calendar-picker/calendar-picker-appearance-zoom200-expected.png b/third_party/blink/web_tests/platform/linux/fast/forms/calendar-picker/calendar-picker-appearance-zoom200-expected.png index 7006028..3aca173 100644 --- a/third_party/blink/web_tests/platform/linux/fast/forms/calendar-picker/calendar-picker-appearance-zoom200-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/forms/calendar-picker/calendar-picker-appearance-zoom200-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/forms/calendar-picker/month-picker-appearance-expected.png b/third_party/blink/web_tests/platform/linux/fast/forms/calendar-picker/month-picker-appearance-expected.png index 41b3861..3d5fd63f 100644 --- a/third_party/blink/web_tests/platform/linux/fast/forms/calendar-picker/month-picker-appearance-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/forms/calendar-picker/month-picker-appearance-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/forms/calendar-picker/month-picker-appearance-step-expected.png b/third_party/blink/web_tests/platform/linux/fast/forms/calendar-picker/month-picker-appearance-step-expected.png index 213bd56..1871117 100644 --- a/third_party/blink/web_tests/platform/linux/fast/forms/calendar-picker/month-picker-appearance-step-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/forms/calendar-picker/month-picker-appearance-step-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/forms/calendar-picker/week-picker-appearance-expected.png b/third_party/blink/web_tests/platform/linux/fast/forms/calendar-picker/week-picker-appearance-expected.png index c921136..6407c55 100644 --- a/third_party/blink/web_tests/platform/linux/fast/forms/calendar-picker/week-picker-appearance-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/forms/calendar-picker/week-picker-appearance-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/forms/calendar-picker/week-picker-appearance-step-expected.png b/third_party/blink/web_tests/platform/linux/fast/forms/calendar-picker/week-picker-appearance-step-expected.png index eb3f1e38..946fa0a1 100644 --- a/third_party/blink/web_tests/platform/linux/fast/forms/calendar-picker/week-picker-appearance-step-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/forms/calendar-picker/week-picker-appearance-step-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/forms/color/color-suggestion-picker-appearance-expected.png b/third_party/blink/web_tests/platform/linux/fast/forms/color/color-suggestion-picker-appearance-expected.png index ead5a0af..0502a01b 100644 --- a/third_party/blink/web_tests/platform/linux/fast/forms/color/color-suggestion-picker-appearance-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/forms/color/color-suggestion-picker-appearance-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/forms/color/color-suggestion-picker-appearance-zoom125-expected.png b/third_party/blink/web_tests/platform/linux/fast/forms/color/color-suggestion-picker-appearance-zoom125-expected.png index 8f4646b8..785d6154 100644 --- a/third_party/blink/web_tests/platform/linux/fast/forms/color/color-suggestion-picker-appearance-zoom125-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/forms/color/color-suggestion-picker-appearance-zoom125-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/forms/color/color-suggestion-picker-one-row-appearance-expected.png b/third_party/blink/web_tests/platform/linux/fast/forms/color/color-suggestion-picker-one-row-appearance-expected.png index f9bafd7..df4db332 100644 --- a/third_party/blink/web_tests/platform/linux/fast/forms/color/color-suggestion-picker-one-row-appearance-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/forms/color/color-suggestion-picker-one-row-appearance-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/forms/color/color-suggestion-picker-two-row-appearance-expected.png b/third_party/blink/web_tests/platform/linux/fast/forms/color/color-suggestion-picker-two-row-appearance-expected.png index d55a429e..20c9c4d 100644 --- a/third_party/blink/web_tests/platform/linux/fast/forms/color/color-suggestion-picker-two-row-appearance-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/forms/color/color-suggestion-picker-two-row-appearance-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/forms/color/color-suggestion-picker-with-scrollbar-appearance-expected.png b/third_party/blink/web_tests/platform/linux/fast/forms/color/color-suggestion-picker-with-scrollbar-appearance-expected.png index b9ea3e7..ae8c53a8 100644 --- a/third_party/blink/web_tests/platform/linux/fast/forms/color/color-suggestion-picker-with-scrollbar-appearance-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/forms/color/color-suggestion-picker-with-scrollbar-appearance-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/forms/color/input-appearance-color-expected.png b/third_party/blink/web_tests/platform/linux/fast/forms/color/input-appearance-color-expected.png index 24b2c90..2489d44 100644 --- a/third_party/blink/web_tests/platform/linux/fast/forms/color/input-appearance-color-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/forms/color/input-appearance-color-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/forms/control-restrict-line-height-expected.png b/third_party/blink/web_tests/platform/linux/fast/forms/control-restrict-line-height-expected.png index f935f545..60fc8d3 100644 --- a/third_party/blink/web_tests/platform/linux/fast/forms/control-restrict-line-height-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/forms/control-restrict-line-height-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/forms/datalist/input-appearance-range-with-datalist-expected.png b/third_party/blink/web_tests/platform/linux/fast/forms/datalist/input-appearance-range-with-datalist-expected.png index 1f1e22d5..bbb70404 100644 --- a/third_party/blink/web_tests/platform/linux/fast/forms/datalist/input-appearance-range-with-datalist-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/forms/datalist/input-appearance-range-with-datalist-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/forms/datalist/input-appearance-range-with-datalist-zoomed-expected.png b/third_party/blink/web_tests/platform/linux/fast/forms/datalist/input-appearance-range-with-datalist-zoomed-expected.png index fc5d95d..b67b81e 100644 --- a/third_party/blink/web_tests/platform/linux/fast/forms/datalist/input-appearance-range-with-datalist-zoomed-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/forms/datalist/input-appearance-range-with-datalist-zoomed-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/forms/datalist/input-appearance-range-with-padding-with-datalist-expected.png b/third_party/blink/web_tests/platform/linux/fast/forms/datalist/input-appearance-range-with-padding-with-datalist-expected.png index fd5070bc..478c24a 100644 --- a/third_party/blink/web_tests/platform/linux/fast/forms/datalist/input-appearance-range-with-padding-with-datalist-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/forms/datalist/input-appearance-range-with-padding-with-datalist-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/forms/date/date-appearance-basic-expected.png b/third_party/blink/web_tests/platform/linux/fast/forms/date/date-appearance-basic-expected.png index b169c147..5855a36 100644 --- a/third_party/blink/web_tests/platform/linux/fast/forms/date/date-appearance-basic-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/forms/date/date-appearance-basic-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/forms/date/date-appearance-l10n-expected.png b/third_party/blink/web_tests/platform/linux/fast/forms/date/date-appearance-l10n-expected.png index 2dc52f2..9b8b7bd 100644 --- a/third_party/blink/web_tests/platform/linux/fast/forms/date/date-appearance-l10n-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/forms/date/date-appearance-l10n-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/forms/datetimelocal/datetimelocal-appearance-basic-expected.png b/third_party/blink/web_tests/platform/linux/fast/forms/datetimelocal/datetimelocal-appearance-basic-expected.png index ff2bc77..64fe9ab 100644 --- a/third_party/blink/web_tests/platform/linux/fast/forms/datetimelocal/datetimelocal-appearance-basic-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/forms/datetimelocal/datetimelocal-appearance-basic-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/forms/datetimelocal/datetimelocal-appearance-l10n-expected.png b/third_party/blink/web_tests/platform/linux/fast/forms/datetimelocal/datetimelocal-appearance-l10n-expected.png index 33c0994..e35c7c9 100644 --- a/third_party/blink/web_tests/platform/linux/fast/forms/datetimelocal/datetimelocal-appearance-l10n-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/forms/datetimelocal/datetimelocal-appearance-l10n-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/forms/file/file-input-direction-expected.png b/third_party/blink/web_tests/platform/linux/fast/forms/file/file-input-direction-expected.png index c243b530..46652a8 100644 --- a/third_party/blink/web_tests/platform/linux/fast/forms/file/file-input-direction-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/forms/file/file-input-direction-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/forms/form-element-geometry-expected.png b/third_party/blink/web_tests/platform/linux/fast/forms/form-element-geometry-expected.png index 521f5e3..7a2f109 100644 --- a/third_party/blink/web_tests/platform/linux/fast/forms/form-element-geometry-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/forms/form-element-geometry-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/forms/input-appearance-height-expected.png b/third_party/blink/web_tests/platform/linux/fast/forms/input-appearance-height-expected.png index 318c7f0..39b3c326 100644 --- a/third_party/blink/web_tests/platform/linux/fast/forms/input-appearance-height-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/forms/input-appearance-height-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/forms/input-button-sizes-expected.png b/third_party/blink/web_tests/platform/linux/fast/forms/input-button-sizes-expected.png index e37cfac5..f4064de 100644 --- a/third_party/blink/web_tests/platform/linux/fast/forms/input-button-sizes-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/forms/input-button-sizes-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/forms/input-value-expected.png b/third_party/blink/web_tests/platform/linux/fast/forms/input-value-expected.png index 5c8e44a..10e7295 100644 --- a/third_party/blink/web_tests/platform/linux/fast/forms/input-value-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/forms/input-value-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/forms/month/month-appearance-basic-expected.png b/third_party/blink/web_tests/platform/linux/fast/forms/month/month-appearance-basic-expected.png index 36ed333..a4304e8 100644 --- a/third_party/blink/web_tests/platform/linux/fast/forms/month/month-appearance-basic-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/forms/month/month-appearance-basic-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/forms/month/month-appearance-l10n-expected.png b/third_party/blink/web_tests/platform/linux/fast/forms/month/month-appearance-l10n-expected.png index 7d810b3..d633f41 100644 --- a/third_party/blink/web_tests/platform/linux/fast/forms/month/month-appearance-l10n-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/forms/month/month-appearance-l10n-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/forms/number/number-appearance-datalist-expected.png b/third_party/blink/web_tests/platform/linux/fast/forms/number/number-appearance-datalist-expected.png index c6ff932..2edff533 100644 --- a/third_party/blink/web_tests/platform/linux/fast/forms/number/number-appearance-datalist-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/forms/number/number-appearance-datalist-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/forms/number/number-appearance-spinbutton-disabled-readonly-expected.png b/third_party/blink/web_tests/platform/linux/fast/forms/number/number-appearance-spinbutton-disabled-readonly-expected.png index 3fcf495d..64b0ea5b 100644 --- a/third_party/blink/web_tests/platform/linux/fast/forms/number/number-appearance-spinbutton-disabled-readonly-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/forms/number/number-appearance-spinbutton-disabled-readonly-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/forms/placeholder-position-expected.png b/third_party/blink/web_tests/platform/linux/fast/forms/placeholder-position-expected.png index daf2706..c791e33 100644 --- a/third_party/blink/web_tests/platform/linux/fast/forms/placeholder-position-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/forms/placeholder-position-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/forms/range/slider-padding-expected.png b/third_party/blink/web_tests/platform/linux/fast/forms/range/slider-padding-expected.png index 4e71fce..57ad5b11 100644 --- a/third_party/blink/web_tests/platform/linux/fast/forms/range/slider-padding-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/forms/range/slider-padding-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/forms/search/search-vertical-alignment-expected.png b/third_party/blink/web_tests/platform/linux/fast/forms/search/search-vertical-alignment-expected.png index 787ee90..f96396a0 100644 --- a/third_party/blink/web_tests/platform/linux/fast/forms/search/search-vertical-alignment-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/forms/search/search-vertical-alignment-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/forms/select/HTMLOptionElement_label02-expected.png b/third_party/blink/web_tests/platform/linux/fast/forms/select/HTMLOptionElement_label02-expected.png index 3edc4ce..4bd70b3 100644 --- a/third_party/blink/web_tests/platform/linux/fast/forms/select/HTMLOptionElement_label02-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/forms/select/HTMLOptionElement_label02-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/forms/select/HTMLOptionElement_label03-expected.png b/third_party/blink/web_tests/platform/linux/fast/forms/select/HTMLOptionElement_label03-expected.png index 7187b3c..be97b85 100644 --- a/third_party/blink/web_tests/platform/linux/fast/forms/select/HTMLOptionElement_label03-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/forms/select/HTMLOptionElement_label03-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/forms/select/HTMLOptionElement_label04-expected.png b/third_party/blink/web_tests/platform/linux/fast/forms/select/HTMLOptionElement_label04-expected.png index 601e81b..8ef6948 100644 --- a/third_party/blink/web_tests/platform/linux/fast/forms/select/HTMLOptionElement_label04-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/forms/select/HTMLOptionElement_label04-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/forms/select/basic-selects-expected.png b/third_party/blink/web_tests/platform/linux/fast/forms/select/basic-selects-expected.png index 03e7513..8d192ef4 100644 --- a/third_party/blink/web_tests/platform/linux/fast/forms/select/basic-selects-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/forms/select/basic-selects-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/forms/select/disabled-select-change-index-expected.png b/third_party/blink/web_tests/platform/linux/fast/forms/select/disabled-select-change-index-expected.png index d6fb59d..1708e60 100644 --- a/third_party/blink/web_tests/platform/linux/fast/forms/select/disabled-select-change-index-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/forms/select/disabled-select-change-index-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/forms/select/listbox-appearance-basic-expected.png b/third_party/blink/web_tests/platform/linux/fast/forms/select/listbox-appearance-basic-expected.png index 1120bbf..5393534 100644 --- a/third_party/blink/web_tests/platform/linux/fast/forms/select/listbox-appearance-basic-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/forms/select/listbox-appearance-basic-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/forms/select/listbox-bidi-align-expected.png b/third_party/blink/web_tests/platform/linux/fast/forms/select/listbox-bidi-align-expected.png index ec5dbe68..153176e 100644 --- a/third_party/blink/web_tests/platform/linux/fast/forms/select/listbox-bidi-align-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/forms/select/listbox-bidi-align-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/forms/select/menulist-appearance-basic-expected.png b/third_party/blink/web_tests/platform/linux/fast/forms/select/menulist-appearance-basic-expected.png index ca356a1..23ae77c 100644 --- a/third_party/blink/web_tests/platform/linux/fast/forms/select/menulist-appearance-basic-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/forms/select/menulist-appearance-basic-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/forms/select/menulist-appearance-rtl-expected.png b/third_party/blink/web_tests/platform/linux/fast/forms/select/menulist-appearance-rtl-expected.png index 2e3177f..1fbba75f 100644 --- a/third_party/blink/web_tests/platform/linux/fast/forms/select/menulist-appearance-rtl-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/forms/select/menulist-appearance-rtl-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/forms/select/menulist-update-text-popup-expected.txt b/third_party/blink/web_tests/platform/linux/fast/forms/select/menulist-update-text-popup-expected.txt index f947450..0961fd2 100644 --- a/third_party/blink/web_tests/platform/linux/fast/forms/select/menulist-update-text-popup-expected.txt +++ b/third_party/blink/web_tests/platform/linux/fast/forms/select/menulist-update-text-popup-expected.txt
@@ -6,7 +6,7 @@ C layer at (0,0) size 31x20 LayoutNGBlockFlow (positioned) {DIV} at (8,50) size 31x20 - LayoutMenuList {SELECT} at (0,0) size 31x20 [bgcolor=#DDDDDD] [border: (1px solid #A9A9A9)] + LayoutMenuList {SELECT} at (0,0) size 31x20 [bgcolor=#DDDDDD] [border: (1px solid #767676)] LayoutBlockFlow (anonymous) at (1,1) size 29x18 LayoutText (anonymous) at (4,1) size 9x16 text run at (4,1) width 9: "C"
diff --git a/third_party/blink/web_tests/platform/linux/fast/forms/select/option-strip-whitespace-expected.png b/third_party/blink/web_tests/platform/linux/fast/forms/select/option-strip-whitespace-expected.png index 5c875122..72de36d 100644 --- a/third_party/blink/web_tests/platform/linux/fast/forms/select/option-strip-whitespace-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/forms/select/option-strip-whitespace-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/forms/select/select-align-expected.png b/third_party/blink/web_tests/platform/linux/fast/forms/select/select-align-expected.png index 7066a0a2..8c437f24 100644 --- a/third_party/blink/web_tests/platform/linux/fast/forms/select/select-align-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/forms/select/select-align-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/forms/select/select-disabled-appearance-expected.png b/third_party/blink/web_tests/platform/linux/fast/forms/select/select-disabled-appearance-expected.png index 2ed656a..95ac2c2a 100644 --- a/third_party/blink/web_tests/platform/linux/fast/forms/select/select-disabled-appearance-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/forms/select/select-disabled-appearance-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/forms/select/select-initial-position-expected.png b/third_party/blink/web_tests/platform/linux/fast/forms/select/select-initial-position-expected.png index 8e460fd6..f3812e0 100644 --- a/third_party/blink/web_tests/platform/linux/fast/forms/select/select-initial-position-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/forms/select/select-initial-position-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/forms/select/select-selected-expected.png b/third_party/blink/web_tests/platform/linux/fast/forms/select/select-selected-expected.png index 12d32c9..6feaca9 100644 --- a/third_party/blink/web_tests/platform/linux/fast/forms/select/select-selected-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/forms/select/select-selected-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/forms/select/select-writing-direction-natural-expected.png b/third_party/blink/web_tests/platform/linux/fast/forms/select/select-writing-direction-natural-expected.png index ee1bcf1..419234d 100644 --- a/third_party/blink/web_tests/platform/linux/fast/forms/select/select-writing-direction-natural-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/forms/select/select-writing-direction-natural-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/forms/submit/submit-appearance-basic-expected.png b/third_party/blink/web_tests/platform/linux/fast/forms/submit/submit-appearance-basic-expected.png index d6dad6e..347d511 100644 --- a/third_party/blink/web_tests/platform/linux/fast/forms/submit/submit-appearance-basic-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/forms/submit/submit-appearance-basic-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/forms/suggestion-picker/date-suggestion-picker-appearance-expected.png b/third_party/blink/web_tests/platform/linux/fast/forms/suggestion-picker/date-suggestion-picker-appearance-expected.png index de3782e..4ad4c35 100644 --- a/third_party/blink/web_tests/platform/linux/fast/forms/suggestion-picker/date-suggestion-picker-appearance-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/forms/suggestion-picker/date-suggestion-picker-appearance-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/forms/suggestion-picker/date-suggestion-picker-appearance-rtl-expected.png b/third_party/blink/web_tests/platform/linux/fast/forms/suggestion-picker/date-suggestion-picker-appearance-rtl-expected.png index 52dd3946..a2136c7e 100644 --- a/third_party/blink/web_tests/platform/linux/fast/forms/suggestion-picker/date-suggestion-picker-appearance-rtl-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/forms/suggestion-picker/date-suggestion-picker-appearance-rtl-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/forms/suggestion-picker/date-suggestion-picker-appearance-with-scroll-bar-expected.png b/third_party/blink/web_tests/platform/linux/fast/forms/suggestion-picker/date-suggestion-picker-appearance-with-scroll-bar-expected.png index 2209697..693fb4a2 100644 --- a/third_party/blink/web_tests/platform/linux/fast/forms/suggestion-picker/date-suggestion-picker-appearance-with-scroll-bar-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/forms/suggestion-picker/date-suggestion-picker-appearance-with-scroll-bar-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-expected.png b/third_party/blink/web_tests/platform/linux/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-expected.png index 8256c93..fe8c896 100644 --- a/third_party/blink/web_tests/platform/linux/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-locale-hebrew-expected.png b/third_party/blink/web_tests/platform/linux/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-locale-hebrew-expected.png index 2b57203..905959f 100644 --- a/third_party/blink/web_tests/platform/linux/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-locale-hebrew-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-locale-hebrew-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-rtl-expected.png b/third_party/blink/web_tests/platform/linux/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-rtl-expected.png index 145ecce..a8d72ac0 100644 --- a/third_party/blink/web_tests/platform/linux/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-rtl-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-rtl-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/forms/suggestion-picker/month-suggestion-picker-appearance-expected.png b/third_party/blink/web_tests/platform/linux/fast/forms/suggestion-picker/month-suggestion-picker-appearance-expected.png index 480fffa..aa5b4185 100644 --- a/third_party/blink/web_tests/platform/linux/fast/forms/suggestion-picker/month-suggestion-picker-appearance-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/forms/suggestion-picker/month-suggestion-picker-appearance-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/forms/suggestion-picker/month-suggestion-picker-appearance-rtl-expected.png b/third_party/blink/web_tests/platform/linux/fast/forms/suggestion-picker/month-suggestion-picker-appearance-rtl-expected.png index 877e8e6..d0940d2 100644 --- a/third_party/blink/web_tests/platform/linux/fast/forms/suggestion-picker/month-suggestion-picker-appearance-rtl-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/forms/suggestion-picker/month-suggestion-picker-appearance-rtl-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/forms/suggestion-picker/month-suggestion-picker-appearance-with-scroll-bar-expected.png b/third_party/blink/web_tests/platform/linux/fast/forms/suggestion-picker/month-suggestion-picker-appearance-with-scroll-bar-expected.png index 53155bd..24a260e 100644 --- a/third_party/blink/web_tests/platform/linux/fast/forms/suggestion-picker/month-suggestion-picker-appearance-with-scroll-bar-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/forms/suggestion-picker/month-suggestion-picker-appearance-with-scroll-bar-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/forms/suggestion-picker/time-suggestion-picker-appearance-expected.png b/third_party/blink/web_tests/platform/linux/fast/forms/suggestion-picker/time-suggestion-picker-appearance-expected.png index 2cef4c3..1d8cda9 100644 --- a/third_party/blink/web_tests/platform/linux/fast/forms/suggestion-picker/time-suggestion-picker-appearance-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/forms/suggestion-picker/time-suggestion-picker-appearance-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/forms/suggestion-picker/time-suggestion-picker-appearance-rtl-expected.png b/third_party/blink/web_tests/platform/linux/fast/forms/suggestion-picker/time-suggestion-picker-appearance-rtl-expected.png index e0b83a9c..5b3a042 100644 --- a/third_party/blink/web_tests/platform/linux/fast/forms/suggestion-picker/time-suggestion-picker-appearance-rtl-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/forms/suggestion-picker/time-suggestion-picker-appearance-rtl-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/forms/suggestion-picker/time-suggestion-picker-appearance-with-scroll-bar-expected.png b/third_party/blink/web_tests/platform/linux/fast/forms/suggestion-picker/time-suggestion-picker-appearance-with-scroll-bar-expected.png index b21baa1..b94a2ff3 100644 --- a/third_party/blink/web_tests/platform/linux/fast/forms/suggestion-picker/time-suggestion-picker-appearance-with-scroll-bar-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/forms/suggestion-picker/time-suggestion-picker-appearance-with-scroll-bar-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/forms/suggestion-picker/week-suggestion-picker-appearance-expected.png b/third_party/blink/web_tests/platform/linux/fast/forms/suggestion-picker/week-suggestion-picker-appearance-expected.png index d42a0b2..04035069 100644 --- a/third_party/blink/web_tests/platform/linux/fast/forms/suggestion-picker/week-suggestion-picker-appearance-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/forms/suggestion-picker/week-suggestion-picker-appearance-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/forms/suggestion-picker/week-suggestion-picker-appearance-rtl-expected.png b/third_party/blink/web_tests/platform/linux/fast/forms/suggestion-picker/week-suggestion-picker-appearance-rtl-expected.png index 55defa2..f2f522fe 100644 --- a/third_party/blink/web_tests/platform/linux/fast/forms/suggestion-picker/week-suggestion-picker-appearance-rtl-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/forms/suggestion-picker/week-suggestion-picker-appearance-rtl-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/forms/suggestion-picker/week-suggestion-picker-appearance-with-scroll-bar-expected.png b/third_party/blink/web_tests/platform/linux/fast/forms/suggestion-picker/week-suggestion-picker-appearance-with-scroll-bar-expected.png index 6035191..89c489f5 100644 --- a/third_party/blink/web_tests/platform/linux/fast/forms/suggestion-picker/week-suggestion-picker-appearance-with-scroll-bar-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/forms/suggestion-picker/week-suggestion-picker-appearance-with-scroll-bar-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/forms/text/input-disabled-color-expected.png b/third_party/blink/web_tests/platform/linux/fast/forms/text/input-disabled-color-expected.png index d25916e..2aa57d7 100644 --- a/third_party/blink/web_tests/platform/linux/fast/forms/text/input-disabled-color-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/forms/text/input-disabled-color-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/forms/text/text-appearance-basic-expected.png b/third_party/blink/web_tests/platform/linux/fast/forms/text/text-appearance-basic-expected.png index 881a676..57589ae 100644 --- a/third_party/blink/web_tests/platform/linux/fast/forms/text/text-appearance-basic-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/forms/text/text-appearance-basic-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/forms/text/text-appearance-datalist-expected.png b/third_party/blink/web_tests/platform/linux/fast/forms/text/text-appearance-datalist-expected.png index f2054aa..c508d1d 100644 --- a/third_party/blink/web_tests/platform/linux/fast/forms/text/text-appearance-datalist-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/forms/text/text-appearance-datalist-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/forms/textarea/basic-textareas-expected.png b/third_party/blink/web_tests/platform/linux/fast/forms/textarea/basic-textareas-expected.png index 88fcedce..db84572 100644 --- a/third_party/blink/web_tests/platform/linux/fast/forms/textarea/basic-textareas-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/forms/textarea/basic-textareas-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/forms/textarea/basic-textareas-quirks-expected.png b/third_party/blink/web_tests/platform/linux/fast/forms/textarea/basic-textareas-quirks-expected.png index 17bac48b2..927a8480 100644 --- a/third_party/blink/web_tests/platform/linux/fast/forms/textarea/basic-textareas-quirks-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/forms/textarea/basic-textareas-quirks-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/forms/textarea/textarea-appearance-basic-expected.png b/third_party/blink/web_tests/platform/linux/fast/forms/textarea/textarea-appearance-basic-expected.png index a2ae028..e126e63 100644 --- a/third_party/blink/web_tests/platform/linux/fast/forms/textarea/textarea-appearance-basic-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/forms/textarea/textarea-appearance-basic-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/forms/time/time-appearance-basic-expected.png b/third_party/blink/web_tests/platform/linux/fast/forms/time/time-appearance-basic-expected.png index ac3d618c..80098f9 100644 --- a/third_party/blink/web_tests/platform/linux/fast/forms/time/time-appearance-basic-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/forms/time/time-appearance-basic-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/forms/week/week-appearance-basic-expected.png b/third_party/blink/web_tests/platform/linux/fast/forms/week/week-appearance-basic-expected.png index feb881a..de840705 100644 --- a/third_party/blink/web_tests/platform/linux/fast/forms/week/week-appearance-basic-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/forms/week/week-appearance-basic-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/hidpi/resize-corner-hidpi-expected.png b/third_party/blink/web_tests/platform/linux/fast/hidpi/resize-corner-hidpi-expected.png index d51e7f3..5f6ef45 100644 --- a/third_party/blink/web_tests/platform/linux/fast/hidpi/resize-corner-hidpi-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/hidpi/resize-corner-hidpi-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/invalid/014-expected.png b/third_party/blink/web_tests/platform/linux/fast/invalid/014-expected.png index 1397a89..72522306 100644 --- a/third_party/blink/web_tests/platform/linux/fast/invalid/014-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/invalid/014-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/lists/dynamic-marker-crash-expected.png b/third_party/blink/web_tests/platform/linux/fast/lists/dynamic-marker-crash-expected.png index 581ff60..ce2b53e7 100644 --- a/third_party/blink/web_tests/platform/linux/fast/lists/dynamic-marker-crash-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/lists/dynamic-marker-crash-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/multicol/input-with-overflow-second-column-expected.png b/third_party/blink/web_tests/platform/linux/fast/multicol/input-with-overflow-second-column-expected.png index d771d84a..b6a3b06 100644 --- a/third_party/blink/web_tests/platform/linux/fast/multicol/input-with-overflow-second-column-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/multicol/input-with-overflow-second-column-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/multicol/multicol-with-child-renderLayer-for-input-expected.png b/third_party/blink/web_tests/platform/linux/fast/multicol/multicol-with-child-renderLayer-for-input-expected.png index f47e9408..b0d5fb47 100644 --- a/third_party/blink/web_tests/platform/linux/fast/multicol/multicol-with-child-renderLayer-for-input-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/multicol/multicol-with-child-renderLayer-for-input-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/overflow/overflow-x-y-expected.png b/third_party/blink/web_tests/platform/linux/fast/overflow/overflow-x-y-expected.png index 1268e77..1ec88cb3 100644 --- a/third_party/blink/web_tests/platform/linux/fast/overflow/overflow-x-y-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/overflow/overflow-x-y-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/overflow/scroll-nested-positioned-layer-in-overflow-expected.png b/third_party/blink/web_tests/platform/linux/fast/overflow/scroll-nested-positioned-layer-in-overflow-expected.png index 6f7e513..28c9363 100644 --- a/third_party/blink/web_tests/platform/linux/fast/overflow/scroll-nested-positioned-layer-in-overflow-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/overflow/scroll-nested-positioned-layer-in-overflow-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/overflow/scrollRevealButton-expected.png b/third_party/blink/web_tests/platform/linux/fast/overflow/scrollRevealButton-expected.png index 2076833..fc366c3 100644 --- a/third_party/blink/web_tests/platform/linux/fast/overflow/scrollRevealButton-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/overflow/scrollRevealButton-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/parser/bad-xml-slash-expected.png b/third_party/blink/web_tests/platform/linux/fast/parser/bad-xml-slash-expected.png index cb033d3b..0e12fae0 100644 --- a/third_party/blink/web_tests/platform/linux/fast/parser/bad-xml-slash-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/parser/bad-xml-slash-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/parser/entity-comment-in-textarea-expected.png b/third_party/blink/web_tests/platform/linux/fast/parser/entity-comment-in-textarea-expected.png index ec14dce6..ddf3ae17 100644 --- a/third_party/blink/web_tests/platform/linux/fast/parser/entity-comment-in-textarea-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/parser/entity-comment-in-textarea-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/parser/open-comment-in-textarea-expected.png b/third_party/blink/web_tests/platform/linux/fast/parser/open-comment-in-textarea-expected.png index 9506af8b..b342357 100644 --- a/third_party/blink/web_tests/platform/linux/fast/parser/open-comment-in-textarea-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/parser/open-comment-in-textarea-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/replaced/replaced-breaking-mixture-expected.png b/third_party/blink/web_tests/platform/linux/fast/replaced/replaced-breaking-mixture-expected.png index de85195..0dcaec5 100644 --- a/third_party/blink/web_tests/platform/linux/fast/replaced/replaced-breaking-mixture-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/replaced/replaced-breaking-mixture-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/replaced/three-selects-break-expected.png b/third_party/blink/web_tests/platform/linux/fast/replaced/three-selects-break-expected.png index cb596c80..fcd9f4e 100644 --- a/third_party/blink/web_tests/platform/linux/fast/replaced/three-selects-break-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/replaced/three-selects-break-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/replaced/width100percent-checkbox-expected.png b/third_party/blink/web_tests/platform/linux/fast/replaced/width100percent-checkbox-expected.png index f3abc35..10a5c9b 100644 --- a/third_party/blink/web_tests/platform/linux/fast/replaced/width100percent-checkbox-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/replaced/width100percent-checkbox-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/replaced/width100percent-menulist-expected.png b/third_party/blink/web_tests/platform/linux/fast/replaced/width100percent-menulist-expected.png index ad6913e..81702515 100644 --- a/third_party/blink/web_tests/platform/linux/fast/replaced/width100percent-menulist-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/replaced/width100percent-menulist-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/replaced/width100percent-radio-expected.png b/third_party/blink/web_tests/platform/linux/fast/replaced/width100percent-radio-expected.png index a068891..9d15721b 100644 --- a/third_party/blink/web_tests/platform/linux/fast/replaced/width100percent-radio-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/replaced/width100percent-radio-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/replaced/width100percent-searchfield-expected.png b/third_party/blink/web_tests/platform/linux/fast/replaced/width100percent-searchfield-expected.png index 918fa2c..d55c2f8 100644 --- a/third_party/blink/web_tests/platform/linux/fast/replaced/width100percent-searchfield-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/replaced/width100percent-searchfield-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/replaced/width100percent-textarea-expected.png b/third_party/blink/web_tests/platform/linux/fast/replaced/width100percent-textarea-expected.png index 8d62374..b040822 100644 --- a/third_party/blink/web_tests/platform/linux/fast/replaced/width100percent-textarea-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/replaced/width100percent-textarea-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/replaced/width100percent-textfield-expected.png b/third_party/blink/web_tests/platform/linux/fast/replaced/width100percent-textfield-expected.png index 11631cd..04d046e 100644 --- a/third_party/blink/web_tests/platform/linux/fast/replaced/width100percent-textfield-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/replaced/width100percent-textfield-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/selectors/064-expected.png b/third_party/blink/web_tests/platform/linux/fast/selectors/064-expected.png index a018c5c..ad92d71 100644 --- a/third_party/blink/web_tests/platform/linux/fast/selectors/064-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/selectors/064-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/spatial-navigation/snav-multiple-select-focusring-expected.png b/third_party/blink/web_tests/platform/linux/fast/spatial-navigation/snav-multiple-select-focusring-expected.png index a8d8530..ca5d951 100644 --- a/third_party/blink/web_tests/platform/linux/fast/spatial-navigation/snav-multiple-select-focusring-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/spatial-navigation/snav-multiple-select-focusring-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/table/003-expected.png b/third_party/blink/web_tests/platform/linux/fast/table/003-expected.png index 5fb6486..5b45d8b 100644 --- a/third_party/blink/web_tests/platform/linux/fast/table/003-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/table/003-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/table/append-cells2-expected.png b/third_party/blink/web_tests/platform/linux/fast/table/append-cells2-expected.png index 1ba81894f..cefed4b 100644 --- a/third_party/blink/web_tests/platform/linux/fast/table/append-cells2-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/table/append-cells2-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/table/colspanMinWidth-expected.png b/third_party/blink/web_tests/platform/linux/fast/table/colspanMinWidth-expected.png index a45848d..cbac883 100644 --- a/third_party/blink/web_tests/platform/linux/fast/table/colspanMinWidth-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/table/colspanMinWidth-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/table/colspanMinWidth-vertical-expected.png b/third_party/blink/web_tests/platform/linux/fast/table/colspanMinWidth-vertical-expected.png index 57d92703..f9eb22f 100644 --- a/third_party/blink/web_tests/platform/linux/fast/table/colspanMinWidth-vertical-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/table/colspanMinWidth-vertical-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/table/remove-td-display-none-expected.png b/third_party/blink/web_tests/platform/linux/fast/table/remove-td-display-none-expected.png index f147479..3f0da88e 100644 --- a/third_party/blink/web_tests/platform/linux/fast/table/remove-td-display-none-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/table/remove-td-display-none-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/table/spanOverlapRepaint-expected.png b/third_party/blink/web_tests/platform/linux/fast/table/spanOverlapRepaint-expected.png index 32f865f..71ad222 100644 --- a/third_party/blink/web_tests/platform/linux/fast/table/spanOverlapRepaint-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/table/spanOverlapRepaint-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/table/text-field-baseline-expected.png b/third_party/blink/web_tests/platform/linux/fast/table/text-field-baseline-expected.png index 594b44b..2a3e5c0c 100644 --- a/third_party/blink/web_tests/platform/linux/fast/table/text-field-baseline-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/table/text-field-baseline-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fragmentation/outline-crossing-columns-expected.png b/third_party/blink/web_tests/platform/linux/fragmentation/outline-crossing-columns-expected.png index 37342ad..f58f1aca 100644 --- a/third_party/blink/web_tests/platform/linux/fragmentation/outline-crossing-columns-expected.png +++ b/third_party/blink/web_tests/platform/linux/fragmentation/outline-crossing-columns-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/html/details_summary/details-no-summary4-expected.png b/third_party/blink/web_tests/platform/linux/html/details_summary/details-no-summary4-expected.png index 0912f25..3dc24da 100644 --- a/third_party/blink/web_tests/platform/linux/html/details_summary/details-no-summary4-expected.png +++ b/third_party/blink/web_tests/platform/linux/html/details_summary/details-no-summary4-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/html/details_summary/details-open-javascript-expected.png b/third_party/blink/web_tests/platform/linux/html/details_summary/details-open-javascript-expected.png index ec5bbec..062c160 100644 --- a/third_party/blink/web_tests/platform/linux/html/details_summary/details-open-javascript-expected.png +++ b/third_party/blink/web_tests/platform/linux/html/details_summary/details-open-javascript-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/html/details_summary/details-open2-expected.png b/third_party/blink/web_tests/platform/linux/html/details_summary/details-open2-expected.png index 592b929..17a4393 100644 --- a/third_party/blink/web_tests/platform/linux/html/details_summary/details-open2-expected.png +++ b/third_party/blink/web_tests/platform/linux/html/details_summary/details-open2-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/html/details_summary/details-open4-expected.png b/third_party/blink/web_tests/platform/linux/html/details_summary/details-open4-expected.png index 592b929..17a4393 100644 --- a/third_party/blink/web_tests/platform/linux/html/details_summary/details-open4-expected.png +++ b/third_party/blink/web_tests/platform/linux/html/details_summary/details-open4-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/html/details_summary/details-replace-summary-child-expected.png b/third_party/blink/web_tests/platform/linux/html/details_summary/details-replace-summary-child-expected.png index b2e330f..d235912b 100644 --- a/third_party/blink/web_tests/platform/linux/html/details_summary/details-replace-summary-child-expected.png +++ b/third_party/blink/web_tests/platform/linux/html/details_summary/details-replace-summary-child-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/html/details_summary/details-replace-text-expected.png b/third_party/blink/web_tests/platform/linux/html/details_summary/details-replace-text-expected.png index b28407f3..64203ed7 100644 --- a/third_party/blink/web_tests/platform/linux/html/details_summary/details-replace-text-expected.png +++ b/third_party/blink/web_tests/platform/linux/html/details_summary/details-replace-text-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/http/tests/filesystem/input-display-expected.png b/third_party/blink/web_tests/platform/linux/http/tests/filesystem/input-display-expected.png index 9455260cf..ab7f3ede 100644 --- a/third_party/blink/web_tests/platform/linux/http/tests/filesystem/input-display-expected.png +++ b/third_party/blink/web_tests/platform/linux/http/tests/filesystem/input-display-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/http/tests/webfont/popup-menu-load-webfont-after-open-expected.png b/third_party/blink/web_tests/platform/linux/http/tests/webfont/popup-menu-load-webfont-after-open-expected.png index 59a5175..81f18931f 100644 --- a/third_party/blink/web_tests/platform/linux/http/tests/webfont/popup-menu-load-webfont-after-open-expected.png +++ b/third_party/blink/web_tests/platform/linux/http/tests/webfont/popup-menu-load-webfont-after-open-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/images/12-55-expected.png b/third_party/blink/web_tests/platform/linux/images/12-55-expected.png index c3400fe..a4aa71f 100644 --- a/third_party/blink/web_tests/platform/linux/images/12-55-expected.png +++ b/third_party/blink/web_tests/platform/linux/images/12-55-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/images/182-expected.png b/third_party/blink/web_tests/platform/linux/images/182-expected.png index d1a9d50..2feeeb3 100644 --- a/third_party/blink/web_tests/platform/linux/images/182-expected.png +++ b/third_party/blink/web_tests/platform/linux/images/182-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/images/2-dht-expected.png b/third_party/blink/web_tests/platform/linux/images/2-dht-expected.png index 8239671..b50519d0 100644 --- a/third_party/blink/web_tests/platform/linux/images/2-dht-expected.png +++ b/third_party/blink/web_tests/platform/linux/images/2-dht-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/images/23-55-expected.png b/third_party/blink/web_tests/platform/linux/images/23-55-expected.png index fc22825..fcfa5f7 100644 --- a/third_party/blink/web_tests/platform/linux/images/23-55-expected.png +++ b/third_party/blink/web_tests/platform/linux/images/23-55-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/images/55-expected.png b/third_party/blink/web_tests/platform/linux/images/55-expected.png index 80aedd4b..4b445a7 100644 --- a/third_party/blink/web_tests/platform/linux/images/55-expected.png +++ b/third_party/blink/web_tests/platform/linux/images/55-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/paint/invalidation/forms/button-reset-focus-by-mouse-then-keydown-expected.png b/third_party/blink/web_tests/platform/linux/paint/invalidation/forms/button-reset-focus-by-mouse-then-keydown-expected.png index fc327dca..61082dd2 100644 --- a/third_party/blink/web_tests/platform/linux/paint/invalidation/forms/button-reset-focus-by-mouse-then-keydown-expected.png +++ b/third_party/blink/web_tests/platform/linux/paint/invalidation/forms/button-reset-focus-by-mouse-then-keydown-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/paint/invalidation/forms/textarea-caret-expected.png b/third_party/blink/web_tests/platform/linux/paint/invalidation/forms/textarea-caret-expected.png index acaa154e..1b8a8550 100644 --- a/third_party/blink/web_tests/platform/linux/paint/invalidation/forms/textarea-caret-expected.png +++ b/third_party/blink/web_tests/platform/linux/paint/invalidation/forms/textarea-caret-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/paint/invalidation/renderer-destruction-by-invalidateSelection-crash-expected.png b/third_party/blink/web_tests/platform/linux/paint/invalidation/renderer-destruction-by-invalidateSelection-crash-expected.png index e74b2c58..32a0884 100644 --- a/third_party/blink/web_tests/platform/linux/paint/invalidation/renderer-destruction-by-invalidateSelection-crash-expected.png +++ b/third_party/blink/web_tests/platform/linux/paint/invalidation/renderer-destruction-by-invalidateSelection-crash-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/paint/invalidation/scroll/caret-invalidation-in-overflow-scroll-expected.png b/third_party/blink/web_tests/platform/linux/paint/invalidation/scroll/caret-invalidation-in-overflow-scroll-expected.png index ca4a8388..e03b89f2 100644 --- a/third_party/blink/web_tests/platform/linux/paint/invalidation/scroll/caret-invalidation-in-overflow-scroll-expected.png +++ b/third_party/blink/web_tests/platform/linux/paint/invalidation/scroll/caret-invalidation-in-overflow-scroll-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/paint/invalidation/scroll/caret-with-composited-scroll-expected.png b/third_party/blink/web_tests/platform/linux/paint/invalidation/scroll/caret-with-composited-scroll-expected.png index 22b277f..a3f6a3a 100644 --- a/third_party/blink/web_tests/platform/linux/paint/invalidation/scroll/caret-with-composited-scroll-expected.png +++ b/third_party/blink/web_tests/platform/linux/paint/invalidation/scroll/caret-with-composited-scroll-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/paint/invalidation/selection/selection-in-composited-scrolling-container-expected.png b/third_party/blink/web_tests/platform/linux/paint/invalidation/selection/selection-in-composited-scrolling-container-expected.png index 40c9d435..490f5840 100644 --- a/third_party/blink/web_tests/platform/linux/paint/invalidation/selection/selection-in-composited-scrolling-container-expected.png +++ b/third_party/blink/web_tests/platform/linux/paint/invalidation/selection/selection-in-composited-scrolling-container-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/paint/invalidation/selection/selection-in-non-composited-scrolling-container-expected.png b/third_party/blink/web_tests/platform/linux/paint/invalidation/selection/selection-in-non-composited-scrolling-container-expected.png index 67cf5b0..fb8f70cf 100644 --- a/third_party/blink/web_tests/platform/linux/paint/invalidation/selection/selection-in-non-composited-scrolling-container-expected.png +++ b/third_party/blink/web_tests/platform/linux/paint/invalidation/selection/selection-in-non-composited-scrolling-container-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/paint/invalidation/subtree-root-skipped-expected.png b/third_party/blink/web_tests/platform/linux/paint/invalidation/subtree-root-skipped-expected.png index 35f97012..79d08ee0 100644 --- a/third_party/blink/web_tests/platform/linux/paint/invalidation/subtree-root-skipped-expected.png +++ b/third_party/blink/web_tests/platform/linux/paint/invalidation/subtree-root-skipped-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/paint/roundedrects/input-with-rounded-rect-and-shadow-expected.png b/third_party/blink/web_tests/platform/linux/paint/roundedrects/input-with-rounded-rect-and-shadow-expected.png index 2a34951..15cd5be 100644 --- a/third_party/blink/web_tests/platform/linux/paint/roundedrects/input-with-rounded-rect-and-shadow-expected.png +++ b/third_party/blink/web_tests/platform/linux/paint/roundedrects/input-with-rounded-rect-and-shadow-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/paint/selection/text-selection-with-composition-expected.png b/third_party/blink/web_tests/platform/linux/paint/selection/text-selection-with-composition-expected.png index 49df978d..add7e7f 100644 --- a/third_party/blink/web_tests/platform/linux/paint/selection/text-selection-with-composition-expected.png +++ b/third_party/blink/web_tests/platform/linux/paint/selection/text-selection-with-composition-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/scrollbars/listbox-scrollbar-combinations-expected.png b/third_party/blink/web_tests/platform/linux/scrollbars/listbox-scrollbar-combinations-expected.png index 8eff760b..6af37c0 100644 --- a/third_party/blink/web_tests/platform/linux/scrollbars/listbox-scrollbar-combinations-expected.png +++ b/third_party/blink/web_tests/platform/linux/scrollbars/listbox-scrollbar-combinations-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/custom/inline-svg-in-xhtml-expected.png b/third_party/blink/web_tests/platform/linux/svg/custom/inline-svg-in-xhtml-expected.png index 498dfa5..6c427ad 100644 --- a/third_party/blink/web_tests/platform/linux/svg/custom/inline-svg-in-xhtml-expected.png +++ b/third_party/blink/web_tests/platform/linux/svg/custom/inline-svg-in-xhtml-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/hixie/mixed/003-expected.png b/third_party/blink/web_tests/platform/linux/svg/hixie/mixed/003-expected.png index 4fad073..64f46c2 100644 --- a/third_party/blink/web_tests/platform/linux/svg/hixie/mixed/003-expected.png +++ b/third_party/blink/web_tests/platform/linux/svg/hixie/mixed/003-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/45621-expected.png b/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/45621-expected.png index 08fd354b..d4bcb86 100644 --- a/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/45621-expected.png +++ b/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/45621-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug1188-expected.png b/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug1188-expected.png index e31860f9..c072cd6 100644 --- a/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug1188-expected.png +++ b/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug1188-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug12384-expected.png b/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug12384-expected.png index b78a9f0..be57e15b 100644 --- a/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug12384-expected.png +++ b/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug12384-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug1318-expected.png b/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug1318-expected.png index 4d5295e..b96f5efa 100644 --- a/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug1318-expected.png +++ b/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug1318-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug138725-expected.png b/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug138725-expected.png index 349fec8..d1438011 100644 --- a/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug138725-expected.png +++ b/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug138725-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug24200-expected.png b/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug24200-expected.png index 3995b096..04f58e3 100644 --- a/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug24200-expected.png +++ b/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug24200-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug2479-2-expected.png b/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug2479-2-expected.png index 7ea72f7..8625446 100644 --- a/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug2479-2-expected.png +++ b/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug2479-2-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug26178-expected.png b/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug26178-expected.png index 911ee1ab..2378fff 100644 --- a/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug26178-expected.png +++ b/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug26178-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug28928-expected.png b/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug28928-expected.png index 01c41a8..c1bf0828 100644 --- a/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug28928-expected.png +++ b/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug28928-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug29326-expected.png b/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug29326-expected.png index 118b12a21..ae39713a 100644 --- a/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug29326-expected.png +++ b/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug29326-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug30559-expected.png b/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug30559-expected.png index a9abeb6..0d40938 100644 --- a/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug30559-expected.png +++ b/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug30559-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug30692-expected.png b/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug30692-expected.png index e488285e..a9160150 100644 --- a/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug30692-expected.png +++ b/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug30692-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug39209-expected.png b/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug39209-expected.png index 4cb977d8..1f235ee 100644 --- a/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug39209-expected.png +++ b/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug39209-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug4429-expected.png b/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug4429-expected.png index 545464e8..040524d 100644 --- a/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug4429-expected.png +++ b/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug4429-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug4527-expected.png b/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug4527-expected.png index bbe303e2..8a06f176 100644 --- a/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug4527-expected.png +++ b/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug4527-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug46368-1-expected.png b/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug46368-1-expected.png index 9f73300..53feb43 100644 --- a/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug46368-1-expected.png +++ b/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug46368-1-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug46368-2-expected.png b/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug46368-2-expected.png index d80d563..a1dcec1e 100644 --- a/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug46368-2-expected.png +++ b/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug46368-2-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug51037-expected.png b/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug51037-expected.png index 6d9148b..09ee9f3 100644 --- a/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug51037-expected.png +++ b/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug51037-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug55545-expected.png b/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug55545-expected.png index c2a6ba0..a7c04dc2 100644 --- a/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug55545-expected.png +++ b/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug55545-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug59354-expected.png b/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug59354-expected.png index 8f10876..d9f2a80 100644 --- a/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug59354-expected.png +++ b/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug59354-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug68912-expected.png b/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug68912-expected.png index 5102aad5..8a536fc2 100644 --- a/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug68912-expected.png +++ b/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug68912-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug7342-expected.png b/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug7342-expected.png index 1e30c6a..10d2697 100644 --- a/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug7342-expected.png +++ b/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug7342-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug96334-expected.png b/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug96334-expected.png index 043b2e9f..8233243 100644 --- a/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug96334-expected.png +++ b/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug96334-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug99948-expected.png b/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug99948-expected.png index 79a55f4d..3415fc20 100644 --- a/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug99948-expected.png +++ b/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug99948-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/tables/mozilla/collapsing_borders/bug41262-4-expected.png b/third_party/blink/web_tests/platform/linux/tables/mozilla/collapsing_borders/bug41262-4-expected.png index 183c686..d743f62 100644 --- a/third_party/blink/web_tests/platform/linux/tables/mozilla/collapsing_borders/bug41262-4-expected.png +++ b/third_party/blink/web_tests/platform/linux/tables/mozilla/collapsing_borders/bug41262-4-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/tables/mozilla/core/margins-expected.png b/third_party/blink/web_tests/platform/linux/tables/mozilla/core/margins-expected.png index ae15e8f..5349a0f 100644 --- a/third_party/blink/web_tests/platform/linux/tables/mozilla/core/margins-expected.png +++ b/third_party/blink/web_tests/platform/linux/tables/mozilla/core/margins-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/tables/mozilla/dom/tableDom-expected.png b/third_party/blink/web_tests/platform/linux/tables/mozilla/dom/tableDom-expected.png index 8a728a9..627f4ed2 100644 --- a/third_party/blink/web_tests/platform/linux/tables/mozilla/dom/tableDom-expected.png +++ b/third_party/blink/web_tests/platform/linux/tables/mozilla/dom/tableDom-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/tables/mozilla/other/move_row-expected.png b/third_party/blink/web_tests/platform/linux/tables/mozilla/other/move_row-expected.png index 384285f..9789913 100644 --- a/third_party/blink/web_tests/platform/linux/tables/mozilla/other/move_row-expected.png +++ b/third_party/blink/web_tests/platform/linux/tables/mozilla/other/move_row-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/tables/mozilla_expected_failures/bugs/bug1725-expected.png b/third_party/blink/web_tests/platform/linux/tables/mozilla_expected_failures/bugs/bug1725-expected.png index db06965..a66af11 100644 --- a/third_party/blink/web_tests/platform/linux/tables/mozilla_expected_failures/bugs/bug1725-expected.png +++ b/third_party/blink/web_tests/platform/linux/tables/mozilla_expected_failures/bugs/bug1725-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/tables/mozilla_expected_failures/bugs/bug58402-2-expected.png b/third_party/blink/web_tests/platform/linux/tables/mozilla_expected_failures/bugs/bug58402-2-expected.png index 60b9f9c..bdf52132 100644 --- a/third_party/blink/web_tests/platform/linux/tables/mozilla_expected_failures/bugs/bug58402-2-expected.png +++ b/third_party/blink/web_tests/platform/linux/tables/mozilla_expected_failures/bugs/bug58402-2-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/tables/mozilla_expected_failures/bugs/bug92647-1-expected.png b/third_party/blink/web_tests/platform/linux/tables/mozilla_expected_failures/bugs/bug92647-1-expected.png index 7f5c9a3..b7bb1dc 100644 --- a/third_party/blink/web_tests/platform/linux/tables/mozilla_expected_failures/bugs/bug92647-1-expected.png +++ b/third_party/blink/web_tests/platform/linux/tables/mozilla_expected_failures/bugs/bug92647-1-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/tables/mozilla_expected_failures/core/captions1-expected.png b/third_party/blink/web_tests/platform/linux/tables/mozilla_expected_failures/core/captions1-expected.png index 1c805f77..1dc2172 100644 --- a/third_party/blink/web_tests/platform/linux/tables/mozilla_expected_failures/core/captions1-expected.png +++ b/third_party/blink/web_tests/platform/linux/tables/mozilla_expected_failures/core/captions1-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/tables/mozilla_expected_failures/core/captions2-expected.png b/third_party/blink/web_tests/platform/linux/tables/mozilla_expected_failures/core/captions2-expected.png index cbddd94..ca835564 100644 --- a/third_party/blink/web_tests/platform/linux/tables/mozilla_expected_failures/core/captions2-expected.png +++ b/third_party/blink/web_tests/platform/linux/tables/mozilla_expected_failures/core/captions2-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/transforms/3d/general/perspective-non-layer-expected.png b/third_party/blink/web_tests/platform/linux/transforms/3d/general/perspective-non-layer-expected.png index 90dd058..6c4b722 100644 --- a/third_party/blink/web_tests/platform/linux/transforms/3d/general/perspective-non-layer-expected.png +++ b/third_party/blink/web_tests/platform/linux/transforms/3d/general/perspective-non-layer-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/transforms/transformed-focused-text-input-expected.png b/third_party/blink/web_tests/platform/linux/transforms/transformed-focused-text-input-expected.png index c81d31bd..365b2c5 100644 --- a/third_party/blink/web_tests/platform/linux/transforms/transformed-focused-text-input-expected.png +++ b/third_party/blink/web_tests/platform/linux/transforms/transformed-focused-text-input-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/cascade/fast/forms/001-expected.png b/third_party/blink/web_tests/platform/linux/virtual/cascade/fast/forms/001-expected.png new file mode 100644 index 0000000..8f0277e0 --- /dev/null +++ b/third_party/blink/web_tests/platform/linux/virtual/cascade/fast/forms/001-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/cascade/fast/forms/fieldset/fieldset-align-expected.png b/third_party/blink/web_tests/platform/linux/virtual/cascade/fast/forms/fieldset/fieldset-align-expected.png new file mode 100644 index 0000000..f8031af --- /dev/null +++ b/third_party/blink/web_tests/platform/linux/virtual/cascade/fast/forms/fieldset/fieldset-align-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/cascade/fast/forms/select/select-autofilled-expected.png b/third_party/blink/web_tests/platform/linux/virtual/cascade/fast/forms/select/select-autofilled-expected.png new file mode 100644 index 0000000..6946dd80 --- /dev/null +++ b/third_party/blink/web_tests/platform/linux/virtual/cascade/fast/forms/select/select-autofilled-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/dark-mode-native-theme-off/text-input-elements-expected.png b/third_party/blink/web_tests/platform/linux/virtual/dark-mode-native-theme-off/text-input-elements-expected.png index 0e3e22f0..6327779f 100644 --- a/third_party/blink/web_tests/platform/linux/virtual/dark-mode-native-theme-off/text-input-elements-expected.png +++ b/third_party/blink/web_tests/platform/linux/virtual/dark-mode-native-theme-off/text-input-elements-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/dark-mode-native-theme-on/text-input-elements-expected.png b/third_party/blink/web_tests/platform/linux/virtual/dark-mode-native-theme-on/text-input-elements-expected.png index 310a6f2..eeafe6fc 100644 --- a/third_party/blink/web_tests/platform/linux/virtual/dark-mode-native-theme-on/text-input-elements-expected.png +++ b/third_party/blink/web_tests/platform/linux/virtual/dark-mode-native-theme-on/text-input-elements-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/exotic-color-space/images/12-55-expected.png b/third_party/blink/web_tests/platform/linux/virtual/exotic-color-space/images/12-55-expected.png index 814d3b9a..602ea54 100644 --- a/third_party/blink/web_tests/platform/linux/virtual/exotic-color-space/images/12-55-expected.png +++ b/third_party/blink/web_tests/platform/linux/virtual/exotic-color-space/images/12-55-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/exotic-color-space/images/182-expected.png b/third_party/blink/web_tests/platform/linux/virtual/exotic-color-space/images/182-expected.png index 779f7d9bd..6b068e51 100644 --- a/third_party/blink/web_tests/platform/linux/virtual/exotic-color-space/images/182-expected.png +++ b/third_party/blink/web_tests/platform/linux/virtual/exotic-color-space/images/182-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/exotic-color-space/images/2-dht-expected.png b/third_party/blink/web_tests/platform/linux/virtual/exotic-color-space/images/2-dht-expected.png index ecdc6ff..88c3b54 100644 --- a/third_party/blink/web_tests/platform/linux/virtual/exotic-color-space/images/2-dht-expected.png +++ b/third_party/blink/web_tests/platform/linux/virtual/exotic-color-space/images/2-dht-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/exotic-color-space/images/23-55-expected.png b/third_party/blink/web_tests/platform/linux/virtual/exotic-color-space/images/23-55-expected.png index 9045f85..49a286d 100644 --- a/third_party/blink/web_tests/platform/linux/virtual/exotic-color-space/images/23-55-expected.png +++ b/third_party/blink/web_tests/platform/linux/virtual/exotic-color-space/images/23-55-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/exotic-color-space/images/55-expected.png b/third_party/blink/web_tests/platform/linux/virtual/exotic-color-space/images/55-expected.png index dc8e9fa0..f1f232d 100644 --- a/third_party/blink/web_tests/platform/linux/virtual/exotic-color-space/images/55-expected.png +++ b/third_party/blink/web_tests/platform/linux/virtual/exotic-color-space/images/55-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/basic-buttons-expected.png b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/basic-buttons-expected.png new file mode 100644 index 0000000..aa9553ef --- /dev/null +++ b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/basic-buttons-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/basic-inputs-expected.png b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/basic-inputs-expected.png new file mode 100644 index 0000000..1bc93a2d --- /dev/null +++ b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/basic-inputs-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/button-sizes-expected.png b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/button-sizes-expected.png new file mode 100644 index 0000000..cb47731f --- /dev/null +++ b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/button-sizes-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/button-style-color-expected.png b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/button-style-color-expected.png new file mode 100644 index 0000000..d35546ae --- /dev/null +++ b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/button-style-color-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/button-table-styles-expected.png b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/button-table-styles-expected.png new file mode 100644 index 0000000..4187406 --- /dev/null +++ b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/button-table-styles-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/button-text-transform-expected.png b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/button-text-transform-expected.png new file mode 100644 index 0000000..3139340 --- /dev/null +++ b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/button-text-transform-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/button/button-align-expected.png b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/button/button-align-expected.png new file mode 100644 index 0000000..6aa044b --- /dev/null +++ b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/button/button-align-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/button/button-white-space-expected.png b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/button/button-white-space-expected.png new file mode 100644 index 0000000..e61c1c0 --- /dev/null +++ b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/button/button-white-space-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/calendar-picker-appearance-ar-expected.png b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/calendar-picker-appearance-ar-expected.png new file mode 100644 index 0000000..da73f86 --- /dev/null +++ b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/calendar-picker-appearance-ar-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/calendar-picker-appearance-coarse-expected.png b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/calendar-picker-appearance-coarse-expected.png new file mode 100644 index 0000000..ec49d5f --- /dev/null +++ b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/calendar-picker-appearance-coarse-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/calendar-picker-appearance-expected.png b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/calendar-picker-appearance-expected.png new file mode 100644 index 0000000..5d5a39be --- /dev/null +++ b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/calendar-picker-appearance-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/calendar-picker-appearance-minimum-date-expected.png b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/calendar-picker-appearance-minimum-date-expected.png new file mode 100644 index 0000000..89be398 --- /dev/null +++ b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/calendar-picker-appearance-minimum-date-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/calendar-picker-appearance-required-ar-expected.png b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/calendar-picker-appearance-required-ar-expected.png new file mode 100644 index 0000000..115f0012 --- /dev/null +++ b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/calendar-picker-appearance-required-ar-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/calendar-picker-appearance-required-expected.png b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/calendar-picker-appearance-required-expected.png new file mode 100644 index 0000000..6a2fa4a --- /dev/null +++ b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/calendar-picker-appearance-required-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/calendar-picker-appearance-ru-expected.png b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/calendar-picker-appearance-ru-expected.png new file mode 100644 index 0000000..2ce875e2 --- /dev/null +++ b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/calendar-picker-appearance-ru-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/calendar-picker-appearance-step-expected.png b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/calendar-picker-appearance-step-expected.png new file mode 100644 index 0000000..1d31db6e --- /dev/null +++ b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/calendar-picker-appearance-step-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/calendar-picker-appearance-zoom125-expected.png b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/calendar-picker-appearance-zoom125-expected.png new file mode 100644 index 0000000..30269dbf --- /dev/null +++ b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/calendar-picker-appearance-zoom125-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/calendar-picker-appearance-zoom200-expected.png b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/calendar-picker-appearance-zoom200-expected.png new file mode 100644 index 0000000..7006028 --- /dev/null +++ b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/calendar-picker-appearance-zoom200-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/month-picker-appearance-expected.png b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/month-picker-appearance-expected.png new file mode 100644 index 0000000..41b3861 --- /dev/null +++ b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/month-picker-appearance-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/month-picker-appearance-step-expected.png b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/month-picker-appearance-step-expected.png new file mode 100644 index 0000000..213bd56 --- /dev/null +++ b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/month-picker-appearance-step-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/week-picker-appearance-expected.png b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/week-picker-appearance-expected.png new file mode 100644 index 0000000..c921136 --- /dev/null +++ b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/week-picker-appearance-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/week-picker-appearance-step-expected.png b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/week-picker-appearance-step-expected.png new file mode 100644 index 0000000..eb3f1e38 --- /dev/null +++ b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/week-picker-appearance-step-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/color/color-suggestion-picker-appearance-expected.png b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/color/color-suggestion-picker-appearance-expected.png new file mode 100644 index 0000000..ead5a0af --- /dev/null +++ b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/color/color-suggestion-picker-appearance-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/color/color-suggestion-picker-appearance-zoom125-expected.png b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/color/color-suggestion-picker-appearance-zoom125-expected.png new file mode 100644 index 0000000..8f4646b8 --- /dev/null +++ b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/color/color-suggestion-picker-appearance-zoom125-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/color/color-suggestion-picker-one-row-appearance-expected.png b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/color/color-suggestion-picker-one-row-appearance-expected.png new file mode 100644 index 0000000..f9bafd7 --- /dev/null +++ b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/color/color-suggestion-picker-one-row-appearance-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/color/color-suggestion-picker-two-row-appearance-expected.png b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/color/color-suggestion-picker-two-row-appearance-expected.png new file mode 100644 index 0000000..d55a429e --- /dev/null +++ b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/color/color-suggestion-picker-two-row-appearance-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/color/color-suggestion-picker-with-scrollbar-appearance-expected.png b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/color/color-suggestion-picker-with-scrollbar-appearance-expected.png new file mode 100644 index 0000000..b9ea3e7 --- /dev/null +++ b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/color/color-suggestion-picker-with-scrollbar-appearance-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/color/input-appearance-color-expected.png b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/color/input-appearance-color-expected.png new file mode 100644 index 0000000..24b2c90 --- /dev/null +++ b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/color/input-appearance-color-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/control-restrict-line-height-expected.png b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/control-restrict-line-height-expected.png new file mode 100644 index 0000000..f935f545 --- /dev/null +++ b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/control-restrict-line-height-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/datalist/input-appearance-range-with-datalist-expected.png b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/datalist/input-appearance-range-with-datalist-expected.png new file mode 100644 index 0000000..1f1e22d5 --- /dev/null +++ b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/datalist/input-appearance-range-with-datalist-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/datalist/input-appearance-range-with-datalist-zoomed-expected.png b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/datalist/input-appearance-range-with-datalist-zoomed-expected.png new file mode 100644 index 0000000..fc5d95d --- /dev/null +++ b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/datalist/input-appearance-range-with-datalist-zoomed-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/datalist/input-appearance-range-with-padding-with-datalist-expected.png b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/datalist/input-appearance-range-with-padding-with-datalist-expected.png new file mode 100644 index 0000000..fd5070bc --- /dev/null +++ b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/datalist/input-appearance-range-with-padding-with-datalist-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/date/date-appearance-basic-expected.png b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/date/date-appearance-basic-expected.png new file mode 100644 index 0000000..b169c147 --- /dev/null +++ b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/date/date-appearance-basic-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/date/date-appearance-l10n-expected.png b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/date/date-appearance-l10n-expected.png new file mode 100644 index 0000000..2dc52f2 --- /dev/null +++ b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/date/date-appearance-l10n-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/datetimelocal/datetimelocal-appearance-basic-expected.png b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/datetimelocal/datetimelocal-appearance-basic-expected.png new file mode 100644 index 0000000..ff2bc77 --- /dev/null +++ b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/datetimelocal/datetimelocal-appearance-basic-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/datetimelocal/datetimelocal-appearance-l10n-expected.png b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/datetimelocal/datetimelocal-appearance-l10n-expected.png new file mode 100644 index 0000000..33c0994 --- /dev/null +++ b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/datetimelocal/datetimelocal-appearance-l10n-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/file/file-input-direction-expected.png b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/file/file-input-direction-expected.png new file mode 100644 index 0000000..c243b530 --- /dev/null +++ b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/file/file-input-direction-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/form-element-geometry-expected.png b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/form-element-geometry-expected.png new file mode 100644 index 0000000..521f5e3 --- /dev/null +++ b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/form-element-geometry-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/input-appearance-height-expected.png b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/input-appearance-height-expected.png new file mode 100644 index 0000000..318c7f0 --- /dev/null +++ b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/input-appearance-height-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/input-button-sizes-expected.png b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/input-button-sizes-expected.png new file mode 100644 index 0000000..e37cfac5 --- /dev/null +++ b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/input-button-sizes-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/input-value-expected.png b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/input-value-expected.png new file mode 100644 index 0000000..5c8e44a --- /dev/null +++ b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/input-value-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/month/month-appearance-basic-expected.png b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/month/month-appearance-basic-expected.png new file mode 100644 index 0000000..36ed333 --- /dev/null +++ b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/month/month-appearance-basic-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/month/month-appearance-l10n-expected.png b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/month/month-appearance-l10n-expected.png new file mode 100644 index 0000000..7d810b3 --- /dev/null +++ b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/month/month-appearance-l10n-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/number/number-appearance-datalist-expected.png b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/number/number-appearance-datalist-expected.png new file mode 100644 index 0000000..c6ff932 --- /dev/null +++ b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/number/number-appearance-datalist-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/number/number-appearance-spinbutton-disabled-readonly-expected.png b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/number/number-appearance-spinbutton-disabled-readonly-expected.png new file mode 100644 index 0000000..3fcf495d --- /dev/null +++ b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/number/number-appearance-spinbutton-disabled-readonly-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/placeholder-position-expected.png b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/placeholder-position-expected.png new file mode 100644 index 0000000..daf2706 --- /dev/null +++ b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/placeholder-position-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/range/slider-padding-expected.png b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/range/slider-padding-expected.png new file mode 100644 index 0000000..4e71fce --- /dev/null +++ b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/range/slider-padding-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/search/search-vertical-alignment-expected.png b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/search/search-vertical-alignment-expected.png new file mode 100644 index 0000000..787ee90 --- /dev/null +++ b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/search/search-vertical-alignment-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/select/HTMLOptionElement_label02-expected.png b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/select/HTMLOptionElement_label02-expected.png new file mode 100644 index 0000000..3edc4ce --- /dev/null +++ b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/select/HTMLOptionElement_label02-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/select/HTMLOptionElement_label03-expected.png b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/select/HTMLOptionElement_label03-expected.png new file mode 100644 index 0000000..7187b3c --- /dev/null +++ b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/select/HTMLOptionElement_label03-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/select/HTMLOptionElement_label04-expected.png b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/select/HTMLOptionElement_label04-expected.png new file mode 100644 index 0000000..601e81b --- /dev/null +++ b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/select/HTMLOptionElement_label04-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/select/basic-selects-expected.png b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/select/basic-selects-expected.png new file mode 100644 index 0000000..03e7513 --- /dev/null +++ b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/select/basic-selects-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/select/disabled-select-change-index-expected.png b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/select/disabled-select-change-index-expected.png new file mode 100644 index 0000000..d6fb59d --- /dev/null +++ b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/select/disabled-select-change-index-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/select/listbox-appearance-basic-expected.png b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/select/listbox-appearance-basic-expected.png new file mode 100644 index 0000000..1120bbf --- /dev/null +++ b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/select/listbox-appearance-basic-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/select/listbox-bidi-align-expected.png b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/select/listbox-bidi-align-expected.png new file mode 100644 index 0000000..ec5dbe68 --- /dev/null +++ b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/select/listbox-bidi-align-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/select/menulist-appearance-basic-expected.png b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/select/menulist-appearance-basic-expected.png new file mode 100644 index 0000000..ca356a1 --- /dev/null +++ b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/select/menulist-appearance-basic-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/select/menulist-appearance-rtl-expected.png b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/select/menulist-appearance-rtl-expected.png new file mode 100644 index 0000000..2e3177f --- /dev/null +++ b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/select/menulist-appearance-rtl-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/select/option-strip-whitespace-expected.png b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/select/option-strip-whitespace-expected.png new file mode 100644 index 0000000..5c875122 --- /dev/null +++ b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/select/option-strip-whitespace-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/select/select-align-expected.png b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/select/select-align-expected.png new file mode 100644 index 0000000..7066a0a2 --- /dev/null +++ b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/select/select-align-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/select/select-disabled-appearance-expected.png b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/select/select-disabled-appearance-expected.png new file mode 100644 index 0000000..2ed656a --- /dev/null +++ b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/select/select-disabled-appearance-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/select/select-initial-position-expected.png b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/select/select-initial-position-expected.png new file mode 100644 index 0000000..8e460fd6 --- /dev/null +++ b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/select/select-initial-position-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/select/select-selected-expected.png b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/select/select-selected-expected.png new file mode 100644 index 0000000..12d32c9 --- /dev/null +++ b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/select/select-selected-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/select/select-writing-direction-natural-expected.png b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/select/select-writing-direction-natural-expected.png new file mode 100644 index 0000000..ee1bcf1 --- /dev/null +++ b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/select/select-writing-direction-natural-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/submit/submit-appearance-basic-expected.png b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/submit/submit-appearance-basic-expected.png new file mode 100644 index 0000000..d6dad6e --- /dev/null +++ b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/submit/submit-appearance-basic-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/suggestion-picker/date-suggestion-picker-appearance-expected.png b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/suggestion-picker/date-suggestion-picker-appearance-expected.png new file mode 100644 index 0000000..de3782e --- /dev/null +++ b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/suggestion-picker/date-suggestion-picker-appearance-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/suggestion-picker/date-suggestion-picker-appearance-rtl-expected.png b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/suggestion-picker/date-suggestion-picker-appearance-rtl-expected.png new file mode 100644 index 0000000..52dd3946 --- /dev/null +++ b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/suggestion-picker/date-suggestion-picker-appearance-rtl-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/suggestion-picker/date-suggestion-picker-appearance-with-scroll-bar-expected.png b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/suggestion-picker/date-suggestion-picker-appearance-with-scroll-bar-expected.png new file mode 100644 index 0000000..2209697 --- /dev/null +++ b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/suggestion-picker/date-suggestion-picker-appearance-with-scroll-bar-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-expected.png b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-expected.png new file mode 100644 index 0000000..8256c93 --- /dev/null +++ b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-locale-hebrew-expected.png b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-locale-hebrew-expected.png new file mode 100644 index 0000000..2b57203 --- /dev/null +++ b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-locale-hebrew-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-rtl-expected.png b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-rtl-expected.png new file mode 100644 index 0000000..145ecce --- /dev/null +++ b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-rtl-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/suggestion-picker/month-suggestion-picker-appearance-expected.png b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/suggestion-picker/month-suggestion-picker-appearance-expected.png new file mode 100644 index 0000000..480fffa --- /dev/null +++ b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/suggestion-picker/month-suggestion-picker-appearance-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/suggestion-picker/month-suggestion-picker-appearance-rtl-expected.png b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/suggestion-picker/month-suggestion-picker-appearance-rtl-expected.png new file mode 100644 index 0000000..877e8e6 --- /dev/null +++ b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/suggestion-picker/month-suggestion-picker-appearance-rtl-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/suggestion-picker/month-suggestion-picker-appearance-with-scroll-bar-expected.png b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/suggestion-picker/month-suggestion-picker-appearance-with-scroll-bar-expected.png new file mode 100644 index 0000000..53155bd --- /dev/null +++ b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/suggestion-picker/month-suggestion-picker-appearance-with-scroll-bar-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/suggestion-picker/time-suggestion-picker-appearance-expected.png b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/suggestion-picker/time-suggestion-picker-appearance-expected.png new file mode 100644 index 0000000..2cef4c3 --- /dev/null +++ b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/suggestion-picker/time-suggestion-picker-appearance-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/suggestion-picker/time-suggestion-picker-appearance-rtl-expected.png b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/suggestion-picker/time-suggestion-picker-appearance-rtl-expected.png new file mode 100644 index 0000000..e0b83a9c --- /dev/null +++ b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/suggestion-picker/time-suggestion-picker-appearance-rtl-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/suggestion-picker/time-suggestion-picker-appearance-with-scroll-bar-expected.png b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/suggestion-picker/time-suggestion-picker-appearance-with-scroll-bar-expected.png new file mode 100644 index 0000000..b21baa1 --- /dev/null +++ b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/suggestion-picker/time-suggestion-picker-appearance-with-scroll-bar-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/suggestion-picker/week-suggestion-picker-appearance-expected.png b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/suggestion-picker/week-suggestion-picker-appearance-expected.png new file mode 100644 index 0000000..d42a0b2 --- /dev/null +++ b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/suggestion-picker/week-suggestion-picker-appearance-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/suggestion-picker/week-suggestion-picker-appearance-rtl-expected.png b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/suggestion-picker/week-suggestion-picker-appearance-rtl-expected.png new file mode 100644 index 0000000..55defa2 --- /dev/null +++ b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/suggestion-picker/week-suggestion-picker-appearance-rtl-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/suggestion-picker/week-suggestion-picker-appearance-with-scroll-bar-expected.png b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/suggestion-picker/week-suggestion-picker-appearance-with-scroll-bar-expected.png new file mode 100644 index 0000000..6035191 --- /dev/null +++ b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/suggestion-picker/week-suggestion-picker-appearance-with-scroll-bar-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/text/input-disabled-color-expected.png b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/text/input-disabled-color-expected.png new file mode 100644 index 0000000..d25916e --- /dev/null +++ b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/text/input-disabled-color-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/text/text-appearance-basic-expected.png b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/text/text-appearance-basic-expected.png new file mode 100644 index 0000000..881a676 --- /dev/null +++ b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/text/text-appearance-basic-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/text/text-appearance-datalist-expected.png b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/text/text-appearance-datalist-expected.png new file mode 100644 index 0000000..f2054aa --- /dev/null +++ b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/text/text-appearance-datalist-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/textarea/basic-textareas-expected.png b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/textarea/basic-textareas-expected.png new file mode 100644 index 0000000..88fcedce --- /dev/null +++ b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/textarea/basic-textareas-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/textarea/basic-textareas-quirks-expected.png b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/textarea/basic-textareas-quirks-expected.png new file mode 100644 index 0000000..17bac48b2 --- /dev/null +++ b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/textarea/basic-textareas-quirks-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/textarea/textarea-appearance-basic-expected.png b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/textarea/textarea-appearance-basic-expected.png new file mode 100644 index 0000000..a2ae028 --- /dev/null +++ b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/textarea/textarea-appearance-basic-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/time/time-appearance-basic-expected.png b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/time/time-appearance-basic-expected.png new file mode 100644 index 0000000..ac3d618c --- /dev/null +++ b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/time/time-appearance-basic-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/week/week-appearance-basic-expected.png b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/week/week-appearance-basic-expected.png new file mode 100644 index 0000000..feb881a --- /dev/null +++ b/third_party/blink/web_tests/platform/linux/virtual/form-controls-refresh-disabled/fast/forms/week/week-appearance-basic-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/gpu-rasterization/images/12-55-expected.png b/third_party/blink/web_tests/platform/linux/virtual/gpu-rasterization/images/12-55-expected.png index 05301fe..6c593c0 100644 --- a/third_party/blink/web_tests/platform/linux/virtual/gpu-rasterization/images/12-55-expected.png +++ b/third_party/blink/web_tests/platform/linux/virtual/gpu-rasterization/images/12-55-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/gpu-rasterization/images/182-expected.png b/third_party/blink/web_tests/platform/linux/virtual/gpu-rasterization/images/182-expected.png index e54cd9405..d76f71a 100644 --- a/third_party/blink/web_tests/platform/linux/virtual/gpu-rasterization/images/182-expected.png +++ b/third_party/blink/web_tests/platform/linux/virtual/gpu-rasterization/images/182-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/gpu-rasterization/images/2-dht-expected.png b/third_party/blink/web_tests/platform/linux/virtual/gpu-rasterization/images/2-dht-expected.png index 879d3a7..413ba93 100644 --- a/third_party/blink/web_tests/platform/linux/virtual/gpu-rasterization/images/2-dht-expected.png +++ b/third_party/blink/web_tests/platform/linux/virtual/gpu-rasterization/images/2-dht-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/gpu-rasterization/images/23-55-expected.png b/third_party/blink/web_tests/platform/linux/virtual/gpu-rasterization/images/23-55-expected.png index 2f61225..210e889 100644 --- a/third_party/blink/web_tests/platform/linux/virtual/gpu-rasterization/images/23-55-expected.png +++ b/third_party/blink/web_tests/platform/linux/virtual/gpu-rasterization/images/23-55-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/gpu-rasterization/images/55-expected.png b/third_party/blink/web_tests/platform/linux/virtual/gpu-rasterization/images/55-expected.png index 3318c278..b0cebffc 100644 --- a/third_party/blink/web_tests/platform/linux/virtual/gpu-rasterization/images/55-expected.png +++ b/third_party/blink/web_tests/platform/linux/virtual/gpu-rasterization/images/55-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_block_frag/fast/multicol/input-with-overflow-second-column-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_block_frag/fast/multicol/input-with-overflow-second-column-expected.png index d771d84a..b6a3b06 100644 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_block_frag/fast/multicol/input-with-overflow-second-column-expected.png +++ b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_block_frag/fast/multicol/input-with-overflow-second-column-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_block_frag/fast/multicol/multicol-with-child-renderLayer-for-input-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_block_frag/fast/multicol/multicol-with-child-renderLayer-for-input-expected.png index f47e9408..b0d5fb47 100644 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_block_frag/fast/multicol/multicol-with-child-renderLayer-for-input-expected.png +++ b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_block_frag/fast/multicol/multicol-with-child-renderLayer-for-input-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_block_frag/fragmentation/outline-crossing-columns-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_block_frag/fragmentation/outline-crossing-columns-expected.png index 37342ad..f58f1aca 100644 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_block_frag/fragmentation/outline-crossing-columns-expected.png +++ b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_block_frag/fragmentation/outline-crossing-columns-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/dark-mode-native-theme-off/text-input-elements-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/dark-mode-native-theme-off/text-input-elements-expected.png deleted file mode 100644 index 8dd35947..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/dark-mode-native-theme-off/text-input-elements-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/dark-mode-native-theme-on/text-input-elements-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/dark-mode-native-theme-on/text-input-elements-expected.png deleted file mode 100644 index e133a9e9..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/dark-mode-native-theme-on/text-input-elements-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/dark-mode-native-theme-off/text-input-elements-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/dark-mode-native-theme-off/text-input-elements-expected.png deleted file mode 100644 index 8dd35947..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/dark-mode-native-theme-off/text-input-elements-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/dark-mode-native-theme-on/text-input-elements-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/dark-mode-native-theme-on/text-input-elements-expected.png deleted file mode 100644 index e133a9e9..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/dark-mode-native-theme-on/text-input-elements-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/dark-mode-native-theme-off/text-input-elements-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/dark-mode-native-theme-off/text-input-elements-expected.png deleted file mode 100644 index 8dd35947..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/dark-mode-native-theme-off/text-input-elements-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/dark-mode-native-theme-on/text-input-elements-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/dark-mode-native-theme-on/text-input-elements-expected.png deleted file mode 100644 index e133a9e9..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/dark-mode-native-theme-on/text-input-elements-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-retina/virtual/dark-mode-native-theme-off/text-input-elements-expected.png b/third_party/blink/web_tests/platform/mac-retina/virtual/dark-mode-native-theme-off/text-input-elements-expected.png deleted file mode 100644 index 8dd35947..0000000 --- a/third_party/blink/web_tests/platform/mac-retina/virtual/dark-mode-native-theme-off/text-input-elements-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-retina/virtual/dark-mode-native-theme-on/text-input-elements-expected.png b/third_party/blink/web_tests/platform/mac-retina/virtual/dark-mode-native-theme-on/text-input-elements-expected.png deleted file mode 100644 index e133a9e9..0000000 --- a/third_party/blink/web_tests/platform/mac-retina/virtual/dark-mode-native-theme-on/text-input-elements-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/compositing/overflow/do-not-paint-outline-into-composited-scrolling-contents-expected.png b/third_party/blink/web_tests/platform/win/compositing/overflow/do-not-paint-outline-into-composited-scrolling-contents-expected.png index b4272dc..c8ddef9 100644 --- a/third_party/blink/web_tests/platform/win/compositing/overflow/do-not-paint-outline-into-composited-scrolling-contents-expected.png +++ b/third_party/blink/web_tests/platform/win/compositing/overflow/do-not-paint-outline-into-composited-scrolling-contents-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/compositing/overflow/theme-affects-visual-overflow-expected.png b/third_party/blink/web_tests/platform/win/compositing/overflow/theme-affects-visual-overflow-expected.png index 3b8aefce..8e15644 100644 --- a/third_party/blink/web_tests/platform/win/compositing/overflow/theme-affects-visual-overflow-expected.png +++ b/third_party/blink/web_tests/platform/win/compositing/overflow/theme-affects-visual-overflow-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/compositing/overflow/update-widget-positions-on-nested-frames-and-scrollers-expected.png b/third_party/blink/web_tests/platform/win/compositing/overflow/update-widget-positions-on-nested-frames-and-scrollers-expected.png index 408337ae..fb11c48 100644 --- a/third_party/blink/web_tests/platform/win/compositing/overflow/update-widget-positions-on-nested-frames-and-scrollers-expected.png +++ b/third_party/blink/web_tests/platform/win/compositing/overflow/update-widget-positions-on-nested-frames-and-scrollers-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/css1/box_properties/acid_test-expected.png b/third_party/blink/web_tests/platform/win/css1/box_properties/acid_test-expected.png index 180122d10..7d80dbd1 100644 --- a/third_party/blink/web_tests/platform/win/css1/box_properties/acid_test-expected.png +++ b/third_party/blink/web_tests/platform/win/css1/box_properties/acid_test-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/css2.1/t09-c5526c-display-00-e-expected.png b/third_party/blink/web_tests/platform/win/css2.1/t09-c5526c-display-00-e-expected.png index d9808df..f39cd16b 100644 --- a/third_party/blink/web_tests/platform/win/css2.1/t09-c5526c-display-00-e-expected.png +++ b/third_party/blink/web_tests/platform/win/css2.1/t09-c5526c-display-00-e-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/css3/flexbox/button-expected.png b/third_party/blink/web_tests/platform/win/css3/flexbox/button-expected.png index 1151921a..c083387 100644 --- a/third_party/blink/web_tests/platform/win/css3/flexbox/button-expected.png +++ b/third_party/blink/web_tests/platform/win/css3/flexbox/button-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/css3/selectors3/html/css3-modsel-161-expected.png b/third_party/blink/web_tests/platform/win/css3/selectors3/html/css3-modsel-161-expected.png index 7c7fed86..22d65ee5 100644 --- a/third_party/blink/web_tests/platform/win/css3/selectors3/html/css3-modsel-161-expected.png +++ b/third_party/blink/web_tests/platform/win/css3/selectors3/html/css3-modsel-161-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/css3/selectors3/html/css3-modsel-23-expected.png b/third_party/blink/web_tests/platform/win/css3/selectors3/html/css3-modsel-23-expected.png index b588e80..cdfc1ae 100644 --- a/third_party/blink/web_tests/platform/win/css3/selectors3/html/css3-modsel-23-expected.png +++ b/third_party/blink/web_tests/platform/win/css3/selectors3/html/css3-modsel-23-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/css3/selectors3/html/css3-modsel-24-expected.png b/third_party/blink/web_tests/platform/win/css3/selectors3/html/css3-modsel-24-expected.png index aabf317..8fba9bf 100644 --- a/third_party/blink/web_tests/platform/win/css3/selectors3/html/css3-modsel-24-expected.png +++ b/third_party/blink/web_tests/platform/win/css3/selectors3/html/css3-modsel-24-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/css3/selectors3/html/css3-modsel-25-expected.png b/third_party/blink/web_tests/platform/win/css3/selectors3/html/css3-modsel-25-expected.png index d286998..29fbc310 100644 --- a/third_party/blink/web_tests/platform/win/css3/selectors3/html/css3-modsel-25-expected.png +++ b/third_party/blink/web_tests/platform/win/css3/selectors3/html/css3-modsel-25-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/css3/selectors3/html/css3-modsel-64-expected.png b/third_party/blink/web_tests/platform/win/css3/selectors3/html/css3-modsel-64-expected.png index 832908c..65fea31 100644 --- a/third_party/blink/web_tests/platform/win/css3/selectors3/html/css3-modsel-64-expected.png +++ b/third_party/blink/web_tests/platform/win/css3/selectors3/html/css3-modsel-64-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/css3/selectors3/html/css3-modsel-68-expected.png b/third_party/blink/web_tests/platform/win/css3/selectors3/html/css3-modsel-68-expected.png index aabf317..8fba9bf 100644 --- a/third_party/blink/web_tests/platform/win/css3/selectors3/html/css3-modsel-68-expected.png +++ b/third_party/blink/web_tests/platform/win/css3/selectors3/html/css3-modsel-68-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/css3/selectors3/html/css3-modsel-69-expected.png b/third_party/blink/web_tests/platform/win/css3/selectors3/html/css3-modsel-69-expected.png index b588e80..cdfc1ae 100644 --- a/third_party/blink/web_tests/platform/win/css3/selectors3/html/css3-modsel-69-expected.png +++ b/third_party/blink/web_tests/platform/win/css3/selectors3/html/css3-modsel-69-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/css3/selectors3/html/css3-modsel-70-expected.png b/third_party/blink/web_tests/platform/win/css3/selectors3/html/css3-modsel-70-expected.png index 449c4a8..09ab2b2 100644 --- a/third_party/blink/web_tests/platform/win/css3/selectors3/html/css3-modsel-70-expected.png +++ b/third_party/blink/web_tests/platform/win/css3/selectors3/html/css3-modsel-70-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/css3/selectors3/xhtml/css3-modsel-161-expected.png b/third_party/blink/web_tests/platform/win/css3/selectors3/xhtml/css3-modsel-161-expected.png index 7c7fed86..22d65ee5 100644 --- a/third_party/blink/web_tests/platform/win/css3/selectors3/xhtml/css3-modsel-161-expected.png +++ b/third_party/blink/web_tests/platform/win/css3/selectors3/xhtml/css3-modsel-161-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/css3/selectors3/xhtml/css3-modsel-23-expected.png b/third_party/blink/web_tests/platform/win/css3/selectors3/xhtml/css3-modsel-23-expected.png index b588e80..cdfc1ae 100644 --- a/third_party/blink/web_tests/platform/win/css3/selectors3/xhtml/css3-modsel-23-expected.png +++ b/third_party/blink/web_tests/platform/win/css3/selectors3/xhtml/css3-modsel-23-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/css3/selectors3/xhtml/css3-modsel-24-expected.png b/third_party/blink/web_tests/platform/win/css3/selectors3/xhtml/css3-modsel-24-expected.png index aabf317..8fba9bf 100644 --- a/third_party/blink/web_tests/platform/win/css3/selectors3/xhtml/css3-modsel-24-expected.png +++ b/third_party/blink/web_tests/platform/win/css3/selectors3/xhtml/css3-modsel-24-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/css3/selectors3/xhtml/css3-modsel-25-expected.png b/third_party/blink/web_tests/platform/win/css3/selectors3/xhtml/css3-modsel-25-expected.png index d286998..29fbc310 100644 --- a/third_party/blink/web_tests/platform/win/css3/selectors3/xhtml/css3-modsel-25-expected.png +++ b/third_party/blink/web_tests/platform/win/css3/selectors3/xhtml/css3-modsel-25-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/css3/selectors3/xhtml/css3-modsel-64-expected.png b/third_party/blink/web_tests/platform/win/css3/selectors3/xhtml/css3-modsel-64-expected.png index 832908c..65fea31 100644 --- a/third_party/blink/web_tests/platform/win/css3/selectors3/xhtml/css3-modsel-64-expected.png +++ b/third_party/blink/web_tests/platform/win/css3/selectors3/xhtml/css3-modsel-64-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/css3/selectors3/xhtml/css3-modsel-68-expected.png b/third_party/blink/web_tests/platform/win/css3/selectors3/xhtml/css3-modsel-68-expected.png index aabf317..8fba9bf 100644 --- a/third_party/blink/web_tests/platform/win/css3/selectors3/xhtml/css3-modsel-68-expected.png +++ b/third_party/blink/web_tests/platform/win/css3/selectors3/xhtml/css3-modsel-68-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/css3/selectors3/xhtml/css3-modsel-69-expected.png b/third_party/blink/web_tests/platform/win/css3/selectors3/xhtml/css3-modsel-69-expected.png index b588e80..cdfc1ae 100644 --- a/third_party/blink/web_tests/platform/win/css3/selectors3/xhtml/css3-modsel-69-expected.png +++ b/third_party/blink/web_tests/platform/win/css3/selectors3/xhtml/css3-modsel-69-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/css3/selectors3/xhtml/css3-modsel-70-expected.png b/third_party/blink/web_tests/platform/win/css3/selectors3/xhtml/css3-modsel-70-expected.png index 449c4a8..09ab2b2 100644 --- a/third_party/blink/web_tests/platform/win/css3/selectors3/xhtml/css3-modsel-70-expected.png +++ b/third_party/blink/web_tests/platform/win/css3/selectors3/xhtml/css3-modsel-70-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/css3/selectors3/xml/css3-modsel-161-expected.png b/third_party/blink/web_tests/platform/win/css3/selectors3/xml/css3-modsel-161-expected.png index de2219b..a9b6c05 100644 --- a/third_party/blink/web_tests/platform/win/css3/selectors3/xml/css3-modsel-161-expected.png +++ b/third_party/blink/web_tests/platform/win/css3/selectors3/xml/css3-modsel-161-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/css3/selectors3/xml/css3-modsel-23-expected.png b/third_party/blink/web_tests/platform/win/css3/selectors3/xml/css3-modsel-23-expected.png index a2d16cf8..5154d9c0 100644 --- a/third_party/blink/web_tests/platform/win/css3/selectors3/xml/css3-modsel-23-expected.png +++ b/third_party/blink/web_tests/platform/win/css3/selectors3/xml/css3-modsel-23-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/css3/selectors3/xml/css3-modsel-24-expected.png b/third_party/blink/web_tests/platform/win/css3/selectors3/xml/css3-modsel-24-expected.png index 9eaa5b9..aa46237 100644 --- a/third_party/blink/web_tests/platform/win/css3/selectors3/xml/css3-modsel-24-expected.png +++ b/third_party/blink/web_tests/platform/win/css3/selectors3/xml/css3-modsel-24-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/css3/selectors3/xml/css3-modsel-25-expected.png b/third_party/blink/web_tests/platform/win/css3/selectors3/xml/css3-modsel-25-expected.png index d09b197..560316d6 100644 --- a/third_party/blink/web_tests/platform/win/css3/selectors3/xml/css3-modsel-25-expected.png +++ b/third_party/blink/web_tests/platform/win/css3/selectors3/xml/css3-modsel-25-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/css3/selectors3/xml/css3-modsel-64-expected.png b/third_party/blink/web_tests/platform/win/css3/selectors3/xml/css3-modsel-64-expected.png index 3001dded..d4b30e4 100644 --- a/third_party/blink/web_tests/platform/win/css3/selectors3/xml/css3-modsel-64-expected.png +++ b/third_party/blink/web_tests/platform/win/css3/selectors3/xml/css3-modsel-64-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/css3/selectors3/xml/css3-modsel-68-expected.png b/third_party/blink/web_tests/platform/win/css3/selectors3/xml/css3-modsel-68-expected.png index 9eaa5b9..aa46237 100644 --- a/third_party/blink/web_tests/platform/win/css3/selectors3/xml/css3-modsel-68-expected.png +++ b/third_party/blink/web_tests/platform/win/css3/selectors3/xml/css3-modsel-68-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/css3/selectors3/xml/css3-modsel-69-expected.png b/third_party/blink/web_tests/platform/win/css3/selectors3/xml/css3-modsel-69-expected.png index a2d16cf8..5154d9c0 100644 --- a/third_party/blink/web_tests/platform/win/css3/selectors3/xml/css3-modsel-69-expected.png +++ b/third_party/blink/web_tests/platform/win/css3/selectors3/xml/css3-modsel-69-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/css3/selectors3/xml/css3-modsel-70-expected.png b/third_party/blink/web_tests/platform/win/css3/selectors3/xml/css3-modsel-70-expected.png index 9cb56aec..0b070db8 100644 --- a/third_party/blink/web_tests/platform/win/css3/selectors3/xml/css3-modsel-70-expected.png +++ b/third_party/blink/web_tests/platform/win/css3/selectors3/xml/css3-modsel-70-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/editing/caret/caret-color-001-expected.png b/third_party/blink/web_tests/platform/win/editing/caret/caret-color-001-expected.png index 1a0bd83..2cca4148 100644 --- a/third_party/blink/web_tests/platform/win/editing/caret/caret-color-001-expected.png +++ b/third_party/blink/web_tests/platform/win/editing/caret/caret-color-001-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/editing/caret/caret-color-002-expected.png b/third_party/blink/web_tests/platform/win/editing/caret/caret-color-002-expected.png index 1a0bd83..2cca4148 100644 --- a/third_party/blink/web_tests/platform/win/editing/caret/caret-color-002-expected.png +++ b/third_party/blink/web_tests/platform/win/editing/caret/caret-color-002-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/editing/caret/caret-color-003-expected.png b/third_party/blink/web_tests/platform/win/editing/caret/caret-color-003-expected.png index a8df94f7..c08e282e 100644 --- a/third_party/blink/web_tests/platform/win/editing/caret/caret-color-003-expected.png +++ b/third_party/blink/web_tests/platform/win/editing/caret/caret-color-003-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/editing/caret/caret-color-004-expected.png b/third_party/blink/web_tests/platform/win/editing/caret/caret-color-004-expected.png index 76b1f9f..17feb758 100644 --- a/third_party/blink/web_tests/platform/win/editing/caret/caret-color-004-expected.png +++ b/third_party/blink/web_tests/platform/win/editing/caret/caret-color-004-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/editing/caret/caret-color-005-expected.png b/third_party/blink/web_tests/platform/win/editing/caret/caret-color-005-expected.png index 6a56731..1c9d7fd 100644 --- a/third_party/blink/web_tests/platform/win/editing/caret/caret-color-005-expected.png +++ b/third_party/blink/web_tests/platform/win/editing/caret/caret-color-005-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/editing/caret/caret-color-007-expected.png b/third_party/blink/web_tests/platform/win/editing/caret/caret-color-007-expected.png index ac898f54..f4334c5e 100644 --- a/third_party/blink/web_tests/platform/win/editing/caret/caret-color-007-expected.png +++ b/third_party/blink/web_tests/platform/win/editing/caret/caret-color-007-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/editing/caret/caret-color-010-expected.png b/third_party/blink/web_tests/platform/win/editing/caret/caret-color-010-expected.png index 4ab27a7..bf0d432 100644 --- a/third_party/blink/web_tests/platform/win/editing/caret/caret-color-010-expected.png +++ b/third_party/blink/web_tests/platform/win/editing/caret/caret-color-010-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/editing/caret/caret-color-012-expected.png b/third_party/blink/web_tests/platform/win/editing/caret/caret-color-012-expected.png index 1a0bd83..2cca4148 100644 --- a/third_party/blink/web_tests/platform/win/editing/caret/caret-color-012-expected.png +++ b/third_party/blink/web_tests/platform/win/editing/caret/caret-color-012-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/editing/caret/caret-position-expected.png b/third_party/blink/web_tests/platform/win/editing/caret/caret-position-expected.png index f768b1c0..216560d8 100644 --- a/third_party/blink/web_tests/platform/win/editing/caret/caret-position-expected.png +++ b/third_party/blink/web_tests/platform/win/editing/caret/caret-position-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/editing/input/caret-at-the-edge-of-input-expected.png b/third_party/blink/web_tests/platform/win/editing/input/caret-at-the-edge-of-input-expected.png index b0c8b3c1d..0a8b8d3 100644 --- a/third_party/blink/web_tests/platform/win/editing/input/caret-at-the-edge-of-input-expected.png +++ b/third_party/blink/web_tests/platform/win/editing/input/caret-at-the-edge-of-input-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/editing/input/reveal-caret-of-multiline-input-expected.png b/third_party/blink/web_tests/platform/win/editing/input/reveal-caret-of-multiline-input-expected.png index fecdb61..88587f1 100644 --- a/third_party/blink/web_tests/platform/win/editing/input/reveal-caret-of-multiline-input-expected.png +++ b/third_party/blink/web_tests/platform/win/editing/input/reveal-caret-of-multiline-input-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/editing/inserting/4960120-1-expected.png b/third_party/blink/web_tests/platform/win/editing/inserting/4960120-1-expected.png index a310639..42cdcf0c 100644 --- a/third_party/blink/web_tests/platform/win/editing/inserting/4960120-1-expected.png +++ b/third_party/blink/web_tests/platform/win/editing/inserting/4960120-1-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/editing/pasteboard/4806874-expected.png b/third_party/blink/web_tests/platform/win/editing/pasteboard/4806874-expected.png index aa4d3b3..a295680 100644 --- a/third_party/blink/web_tests/platform/win/editing/pasteboard/4806874-expected.png +++ b/third_party/blink/web_tests/platform/win/editing/pasteboard/4806874-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/editing/selection/4975120-expected.png b/third_party/blink/web_tests/platform/win/editing/selection/4975120-expected.png index d672340..7c8e0f0 100644 --- a/third_party/blink/web_tests/platform/win/editing/selection/4975120-expected.png +++ b/third_party/blink/web_tests/platform/win/editing/selection/4975120-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/editing/selection/selection-button-text-expected.png b/third_party/blink/web_tests/platform/win/editing/selection/selection-button-text-expected.png index 0851088..16b50f59 100644 --- a/third_party/blink/web_tests/platform/win/editing/selection/selection-button-text-expected.png +++ b/third_party/blink/web_tests/platform/win/editing/selection/selection-button-text-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/external/wpt/css/css-pseudo/spelling-error-002-manual-expected.png b/third_party/blink/web_tests/platform/win/external/wpt/css/css-pseudo/spelling-error-002-manual-expected.png index 1fc9f34..bcef6d56 100644 --- a/third_party/blink/web_tests/platform/win/external/wpt/css/css-pseudo/spelling-error-002-manual-expected.png +++ b/third_party/blink/web_tests/platform/win/external/wpt/css/css-pseudo/spelling-error-002-manual-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/block/basic/011-expected.png b/third_party/blink/web_tests/platform/win/fast/block/basic/011-expected.png index 180122d10..7d80dbd1 100644 --- a/third_party/blink/web_tests/platform/win/fast/block/basic/011-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/block/basic/011-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/block/float/032-expected.png b/third_party/blink/web_tests/platform/win/fast/block/float/032-expected.png index fa3ddb5..308d01f 100644 --- a/third_party/blink/web_tests/platform/win/fast/block/float/032-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/block/float/032-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/block/float/overhanging-tall-block-expected.png b/third_party/blink/web_tests/platform/win/fast/block/float/overhanging-tall-block-expected.png index 208ec010..5039419 100644 --- a/third_party/blink/web_tests/platform/win/fast/block/float/overhanging-tall-block-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/block/float/overhanging-tall-block-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/block/positioning/inline-block-relposition-expected.png b/third_party/blink/web_tests/platform/win/fast/block/positioning/inline-block-relposition-expected.png index a762a8fa..ae46c1f 100644 --- a/third_party/blink/web_tests/platform/win/fast/block/positioning/inline-block-relposition-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/block/positioning/inline-block-relposition-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/css/input-search-padding-expected.png b/third_party/blink/web_tests/platform/win/fast/css/input-search-padding-expected.png index 03aa721..b667787 100644 --- a/third_party/blink/web_tests/platform/win/fast/css/input-search-padding-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/css/input-search-padding-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/css/line-height-expected.png b/third_party/blink/web_tests/platform/win/fast/css/line-height-expected.png index 0a4fdb3..38d08c0 100644 --- a/third_party/blink/web_tests/platform/win/fast/css/line-height-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/css/line-height-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/css/non-standard-checkbox-size-expected.png b/third_party/blink/web_tests/platform/win/fast/css/non-standard-checkbox-size-expected.png index c2e05bd..4824da3 100644 --- a/third_party/blink/web_tests/platform/win/fast/css/non-standard-checkbox-size-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/css/non-standard-checkbox-size-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/css/resize-corner-tracking-expected.png b/third_party/blink/web_tests/platform/win/fast/css/resize-corner-tracking-expected.png index db4fed8..b444e0b 100644 --- a/third_party/blink/web_tests/platform/win/fast/css/resize-corner-tracking-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/css/resize-corner-tracking-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/css/rtl-ordering-expected.png b/third_party/blink/web_tests/platform/win/fast/css/rtl-ordering-expected.png index 97cb832..f72a75fb 100644 --- a/third_party/blink/web_tests/platform/win/fast/css/rtl-ordering-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/css/rtl-ordering-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/dom/HTMLMeterElement/meter-element-expected.png b/third_party/blink/web_tests/platform/win/fast/dom/HTMLMeterElement/meter-element-expected.png new file mode 100644 index 0000000..95b569f --- /dev/null +++ b/third_party/blink/web_tests/platform/win/fast/dom/HTMLMeterElement/meter-element-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/dom/HTMLMeterElement/meter-element-repaint-on-update-value-expected.png b/third_party/blink/web_tests/platform/win/fast/dom/HTMLMeterElement/meter-element-repaint-on-update-value-expected.png new file mode 100644 index 0000000..4ad508f8 --- /dev/null +++ b/third_party/blink/web_tests/platform/win/fast/dom/HTMLMeterElement/meter-element-repaint-on-update-value-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/dom/HTMLMeterElement/meter-styles-changing-pseudo-expected.png b/third_party/blink/web_tests/platform/win/fast/dom/HTMLMeterElement/meter-styles-changing-pseudo-expected.png index 20293df..4529d58 100644 --- a/third_party/blink/web_tests/platform/win/fast/dom/HTMLMeterElement/meter-styles-changing-pseudo-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/dom/HTMLMeterElement/meter-styles-changing-pseudo-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/dom/HTMLProgressElement/progress-element-expected.png b/third_party/blink/web_tests/platform/win/fast/dom/HTMLProgressElement/progress-element-expected.png index bdcae9f9..4edca46 100644 --- a/third_party/blink/web_tests/platform/win/fast/dom/HTMLProgressElement/progress-element-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/dom/HTMLProgressElement/progress-element-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/dynamic/008-expected.png b/third_party/blink/web_tests/platform/win/fast/dynamic/008-expected.png index eb08d4e..b3a3b638 100644 --- a/third_party/blink/web_tests/platform/win/fast/dynamic/008-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/dynamic/008-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/files/file-in-input-display-expected.png b/third_party/blink/web_tests/platform/win/fast/files/file-in-input-display-expected.png index 2637248..5c0c019f 100644 --- a/third_party/blink/web_tests/platform/win/fast/files/file-in-input-display-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/files/file-in-input-display-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/basic-buttons-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/basic-buttons-expected.png index 33c16ef..aa123c0 100644 --- a/third_party/blink/web_tests/platform/win/fast/forms/basic-buttons-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/basic-buttons-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/basic-inputs-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/basic-inputs-expected.png index faf5e37..a92e7a4c 100644 --- a/third_party/blink/web_tests/platform/win/fast/forms/basic-inputs-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/basic-inputs-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/button-sizes-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/button-sizes-expected.png index 8d6b683..ed1c0a8e 100644 --- a/third_party/blink/web_tests/platform/win/fast/forms/button-sizes-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/button-sizes-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/button-style-color-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/button-style-color-expected.png index f8ef9c4..bea8447 100644 --- a/third_party/blink/web_tests/platform/win/fast/forms/button-style-color-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/button-style-color-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/button-table-styles-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/button-table-styles-expected.png index 94ba820..11ffaaa4 100644 --- a/third_party/blink/web_tests/platform/win/fast/forms/button-table-styles-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/button-table-styles-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/button-text-transform-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/button-text-transform-expected.png index e2699bf..6eaafb37 100644 --- a/third_party/blink/web_tests/platform/win/fast/forms/button-text-transform-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/button-text-transform-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/button/button-align-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/button/button-align-expected.png index bd2920c..3bc7dc0 100644 --- a/third_party/blink/web_tests/platform/win/fast/forms/button/button-align-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/button/button-align-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/button/button-white-space-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/button/button-white-space-expected.png index 6211ac7..d76d6bf 100644 --- a/third_party/blink/web_tests/platform/win/fast/forms/button/button-white-space-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/button/button-white-space-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/calendar-picker/calendar-picker-appearance-ar-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/calendar-picker/calendar-picker-appearance-ar-expected.png index 2f5edca..589c8a3 100644 --- a/third_party/blink/web_tests/platform/win/fast/forms/calendar-picker/calendar-picker-appearance-ar-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/calendar-picker/calendar-picker-appearance-ar-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/calendar-picker/calendar-picker-appearance-coarse-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/calendar-picker/calendar-picker-appearance-coarse-expected.png index 6e1ff66..6dfaa5a 100644 --- a/third_party/blink/web_tests/platform/win/fast/forms/calendar-picker/calendar-picker-appearance-coarse-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/calendar-picker/calendar-picker-appearance-coarse-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/calendar-picker/calendar-picker-appearance-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/calendar-picker/calendar-picker-appearance-expected.png index c43f5bd..6dfaa5a 100644 --- a/third_party/blink/web_tests/platform/win/fast/forms/calendar-picker/calendar-picker-appearance-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/calendar-picker/calendar-picker-appearance-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/calendar-picker/calendar-picker-appearance-minimum-date-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/calendar-picker/calendar-picker-appearance-minimum-date-expected.png index a151009..1401ad42 100644 --- a/third_party/blink/web_tests/platform/win/fast/forms/calendar-picker/calendar-picker-appearance-minimum-date-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/calendar-picker/calendar-picker-appearance-minimum-date-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/calendar-picker/calendar-picker-appearance-required-ar-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/calendar-picker/calendar-picker-appearance-required-ar-expected.png index 3b54691..25fa22d 100644 --- a/third_party/blink/web_tests/platform/win/fast/forms/calendar-picker/calendar-picker-appearance-required-ar-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/calendar-picker/calendar-picker-appearance-required-ar-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/calendar-picker/calendar-picker-appearance-required-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/calendar-picker/calendar-picker-appearance-required-expected.png index 626b2f49..8f46bc3 100644 --- a/third_party/blink/web_tests/platform/win/fast/forms/calendar-picker/calendar-picker-appearance-required-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/calendar-picker/calendar-picker-appearance-required-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/calendar-picker/calendar-picker-appearance-ru-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/calendar-picker/calendar-picker-appearance-ru-expected.png index 2aee3a6..54aa571 100644 --- a/third_party/blink/web_tests/platform/win/fast/forms/calendar-picker/calendar-picker-appearance-ru-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/calendar-picker/calendar-picker-appearance-ru-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/calendar-picker/calendar-picker-appearance-step-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/calendar-picker/calendar-picker-appearance-step-expected.png index 18f89e4c..942da54 100644 --- a/third_party/blink/web_tests/platform/win/fast/forms/calendar-picker/calendar-picker-appearance-step-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/calendar-picker/calendar-picker-appearance-step-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/calendar-picker/calendar-picker-appearance-zoom125-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/calendar-picker/calendar-picker-appearance-zoom125-expected.png index 1993423..caa729f 100644 --- a/third_party/blink/web_tests/platform/win/fast/forms/calendar-picker/calendar-picker-appearance-zoom125-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/calendar-picker/calendar-picker-appearance-zoom125-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/calendar-picker/calendar-picker-appearance-zoom200-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/calendar-picker/calendar-picker-appearance-zoom200-expected.png index 6858e670..05fa2a5 100644 --- a/third_party/blink/web_tests/platform/win/fast/forms/calendar-picker/calendar-picker-appearance-zoom200-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/calendar-picker/calendar-picker-appearance-zoom200-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/calendar-picker/month-picker-appearance-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/calendar-picker/month-picker-appearance-expected.png index ffec41e..08107e5 100644 --- a/third_party/blink/web_tests/platform/win/fast/forms/calendar-picker/month-picker-appearance-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/calendar-picker/month-picker-appearance-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/calendar-picker/month-picker-appearance-step-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/calendar-picker/month-picker-appearance-step-expected.png index f088793..75bd2c73 100644 --- a/third_party/blink/web_tests/platform/win/fast/forms/calendar-picker/month-picker-appearance-step-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/calendar-picker/month-picker-appearance-step-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/calendar-picker/week-picker-appearance-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/calendar-picker/week-picker-appearance-expected.png index 91a39c4..f016bf0 100644 --- a/third_party/blink/web_tests/platform/win/fast/forms/calendar-picker/week-picker-appearance-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/calendar-picker/week-picker-appearance-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/calendar-picker/week-picker-appearance-step-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/calendar-picker/week-picker-appearance-step-expected.png index 463045ab..62f2cb9 100644 --- a/third_party/blink/web_tests/platform/win/fast/forms/calendar-picker/week-picker-appearance-step-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/calendar-picker/week-picker-appearance-step-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/color/color-suggestion-picker-appearance-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/color/color-suggestion-picker-appearance-expected.png index fada8ae..93536ba2 100644 --- a/third_party/blink/web_tests/platform/win/fast/forms/color/color-suggestion-picker-appearance-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/color/color-suggestion-picker-appearance-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/color/color-suggestion-picker-appearance-zoom125-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/color/color-suggestion-picker-appearance-zoom125-expected.png index fdea495..21da6fe 100644 --- a/third_party/blink/web_tests/platform/win/fast/forms/color/color-suggestion-picker-appearance-zoom125-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/color/color-suggestion-picker-appearance-zoom125-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/color/color-suggestion-picker-one-row-appearance-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/color/color-suggestion-picker-one-row-appearance-expected.png index 582ba47..82fab5a 100644 --- a/third_party/blink/web_tests/platform/win/fast/forms/color/color-suggestion-picker-one-row-appearance-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/color/color-suggestion-picker-one-row-appearance-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/color/color-suggestion-picker-two-row-appearance-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/color/color-suggestion-picker-two-row-appearance-expected.png index b008419a..819e269f 100644 --- a/third_party/blink/web_tests/platform/win/fast/forms/color/color-suggestion-picker-two-row-appearance-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/color/color-suggestion-picker-two-row-appearance-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/color/color-suggestion-picker-with-scrollbar-appearance-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/color/color-suggestion-picker-with-scrollbar-appearance-expected.png index 0057ae8df..dcebf18 100644 --- a/third_party/blink/web_tests/platform/win/fast/forms/color/color-suggestion-picker-with-scrollbar-appearance-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/color/color-suggestion-picker-with-scrollbar-appearance-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/color/input-appearance-color-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/color/input-appearance-color-expected.png index 54d39b6..ea6f12f 100644 --- a/third_party/blink/web_tests/platform/win/fast/forms/color/input-appearance-color-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/color/input-appearance-color-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/control-restrict-line-height-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/control-restrict-line-height-expected.png index b055e8f..3af791ca 100644 --- a/third_party/blink/web_tests/platform/win/fast/forms/control-restrict-line-height-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/control-restrict-line-height-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/datalist/input-appearance-range-with-datalist-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/datalist/input-appearance-range-with-datalist-expected.png index 508fdcd..19832a6e 100644 --- a/third_party/blink/web_tests/platform/win/fast/forms/datalist/input-appearance-range-with-datalist-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/datalist/input-appearance-range-with-datalist-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/datalist/input-appearance-range-with-datalist-zoomed-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/datalist/input-appearance-range-with-datalist-zoomed-expected.png index 9545bfb..63c4ac7 100644 --- a/third_party/blink/web_tests/platform/win/fast/forms/datalist/input-appearance-range-with-datalist-zoomed-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/datalist/input-appearance-range-with-datalist-zoomed-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/datalist/input-appearance-range-with-padding-with-datalist-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/datalist/input-appearance-range-with-padding-with-datalist-expected.png index c9e997c..d0c1afac 100644 --- a/third_party/blink/web_tests/platform/win/fast/forms/datalist/input-appearance-range-with-padding-with-datalist-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/datalist/input-appearance-range-with-padding-with-datalist-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/date/date-appearance-basic-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/date/date-appearance-basic-expected.png index 344ab83..4e5957c 100644 --- a/third_party/blink/web_tests/platform/win/fast/forms/date/date-appearance-basic-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/date/date-appearance-basic-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/date/date-appearance-l10n-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/date/date-appearance-l10n-expected.png index 3464ea7..2e575c11 100644 --- a/third_party/blink/web_tests/platform/win/fast/forms/date/date-appearance-l10n-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/date/date-appearance-l10n-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/datetimelocal/datetimelocal-appearance-basic-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/datetimelocal/datetimelocal-appearance-basic-expected.png index d4f670ef..4f3f951 100644 --- a/third_party/blink/web_tests/platform/win/fast/forms/datetimelocal/datetimelocal-appearance-basic-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/datetimelocal/datetimelocal-appearance-basic-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/datetimelocal/datetimelocal-appearance-l10n-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/datetimelocal/datetimelocal-appearance-l10n-expected.png index c8411f0..d230dc1 100644 --- a/third_party/blink/web_tests/platform/win/fast/forms/datetimelocal/datetimelocal-appearance-l10n-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/datetimelocal/datetimelocal-appearance-l10n-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/file/file-input-direction-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/file/file-input-direction-expected.png index bcbebe48..79dc20d5 100644 --- a/third_party/blink/web_tests/platform/win/fast/forms/file/file-input-direction-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/file/file-input-direction-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/form-element-geometry-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/form-element-geometry-expected.png index ee239e6..12345d9 100644 --- a/third_party/blink/web_tests/platform/win/fast/forms/form-element-geometry-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/form-element-geometry-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/input-appearance-height-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/input-appearance-height-expected.png index 7c85197..9c911aa8 100644 --- a/third_party/blink/web_tests/platform/win/fast/forms/input-appearance-height-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/input-appearance-height-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/input-button-sizes-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/input-button-sizes-expected.png index dc77672..b9d8510d 100644 --- a/third_party/blink/web_tests/platform/win/fast/forms/input-button-sizes-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/input-button-sizes-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/input-value-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/input-value-expected.png index 721c9162..ba0f011 100644 --- a/third_party/blink/web_tests/platform/win/fast/forms/input-value-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/input-value-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/month/month-appearance-basic-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/month/month-appearance-basic-expected.png index a478503..7f735f4 100644 --- a/third_party/blink/web_tests/platform/win/fast/forms/month/month-appearance-basic-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/month/month-appearance-basic-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/month/month-appearance-l10n-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/month/month-appearance-l10n-expected.png index 07d19d0..2be1038 100644 --- a/third_party/blink/web_tests/platform/win/fast/forms/month/month-appearance-l10n-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/month/month-appearance-l10n-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/number/number-appearance-datalist-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/number/number-appearance-datalist-expected.png index f3553da..209b5e9b 100644 --- a/third_party/blink/web_tests/platform/win/fast/forms/number/number-appearance-datalist-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/number/number-appearance-datalist-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/number/number-appearance-spinbutton-disabled-readonly-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/number/number-appearance-spinbutton-disabled-readonly-expected.png index 6a39c9a..30e0f1f 100644 --- a/third_party/blink/web_tests/platform/win/fast/forms/number/number-appearance-spinbutton-disabled-readonly-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/number/number-appearance-spinbutton-disabled-readonly-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/placeholder-position-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/placeholder-position-expected.png index 592ed80..ac038e65 100644 --- a/third_party/blink/web_tests/platform/win/fast/forms/placeholder-position-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/placeholder-position-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/range/input-appearance-range-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/range/input-appearance-range-expected.png index 4cd8333..626258ca 100644 --- a/third_party/blink/web_tests/platform/win/fast/forms/range/input-appearance-range-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/range/input-appearance-range-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/range/range-appearance-basic-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/range/range-appearance-basic-expected.png index 5779d77f..5fbded7f 100644 --- a/third_party/blink/web_tests/platform/win/fast/forms/range/range-appearance-basic-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/range/range-appearance-basic-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/range/slider-padding-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/range/slider-padding-expected.png index 589a880..964850a 100644 --- a/third_party/blink/web_tests/platform/win/fast/forms/range/slider-padding-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/range/slider-padding-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/search/search-vertical-alignment-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/search/search-vertical-alignment-expected.png index 4e8e9e9..e935cb7 100644 --- a/third_party/blink/web_tests/platform/win/fast/forms/search/search-vertical-alignment-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/search/search-vertical-alignment-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/select/HTMLOptionElement_label02-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/select/HTMLOptionElement_label02-expected.png index c357c1ac..325ae0f 100644 --- a/third_party/blink/web_tests/platform/win/fast/forms/select/HTMLOptionElement_label02-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/select/HTMLOptionElement_label02-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/select/HTMLOptionElement_label03-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/select/HTMLOptionElement_label03-expected.png index 1a81d4d..d8cd614 100644 --- a/third_party/blink/web_tests/platform/win/fast/forms/select/HTMLOptionElement_label03-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/select/HTMLOptionElement_label03-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/select/HTMLOptionElement_label04-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/select/HTMLOptionElement_label04-expected.png index eebbf45..cffd5c6c 100644 --- a/third_party/blink/web_tests/platform/win/fast/forms/select/HTMLOptionElement_label04-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/select/HTMLOptionElement_label04-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/select/basic-selects-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/select/basic-selects-expected.png index 681031a..7022d4f 100644 --- a/third_party/blink/web_tests/platform/win/fast/forms/select/basic-selects-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/select/basic-selects-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/select/disabled-select-change-index-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/select/disabled-select-change-index-expected.png index 78ba710..9bc666db 100644 --- a/third_party/blink/web_tests/platform/win/fast/forms/select/disabled-select-change-index-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/select/disabled-select-change-index-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/select/listbox-appearance-basic-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/select/listbox-appearance-basic-expected.png index 2527aab..634c21cd 100644 --- a/third_party/blink/web_tests/platform/win/fast/forms/select/listbox-appearance-basic-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/select/listbox-appearance-basic-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/select/listbox-bidi-align-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/select/listbox-bidi-align-expected.png index c4cab64..39596c7 100644 --- a/third_party/blink/web_tests/platform/win/fast/forms/select/listbox-bidi-align-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/select/listbox-bidi-align-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/select/menulist-appearance-basic-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/select/menulist-appearance-basic-expected.png index 4fbe1fed..bdd7af3 100644 --- a/third_party/blink/web_tests/platform/win/fast/forms/select/menulist-appearance-basic-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/select/menulist-appearance-basic-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/select/menulist-appearance-rtl-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/select/menulist-appearance-rtl-expected.png index 7e8ab9d1..6220f5c 100644 --- a/third_party/blink/web_tests/platform/win/fast/forms/select/menulist-appearance-rtl-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/select/menulist-appearance-rtl-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/select/menulist-update-text-popup-expected.txt b/third_party/blink/web_tests/platform/win/fast/forms/select/menulist-update-text-popup-expected.txt index c1b38931..f30ab54 100644 --- a/third_party/blink/web_tests/platform/win/fast/forms/select/menulist-update-text-popup-expected.txt +++ b/third_party/blink/web_tests/platform/win/fast/forms/select/menulist-update-text-popup-expected.txt
@@ -6,7 +6,7 @@ C layer at (0,0) size 33x20 LayoutNGBlockFlow (positioned) {DIV} at (8,50) size 33x20 - LayoutMenuList {SELECT} at (0,0) size 33x20 [bgcolor=#FFFFFF] [border: (1px solid #A9A9A9)] + LayoutMenuList {SELECT} at (0,0) size 33x20 [bgcolor=#FFFFFF] [border: (1px solid #767676)] LayoutBlockFlow (anonymous) at (1,1) size 31x18 LayoutText (anonymous) at (4,1) size 9x16 text run at (4,1) width 9: "C"
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/select/option-strip-whitespace-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/select/option-strip-whitespace-expected.png index f9a2c75..4b5c1b4 100644 --- a/third_party/blink/web_tests/platform/win/fast/forms/select/option-strip-whitespace-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/select/option-strip-whitespace-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/select/select-align-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/select/select-align-expected.png index 266c3a5ae..373372c3 100644 --- a/third_party/blink/web_tests/platform/win/fast/forms/select/select-align-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/select/select-align-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/select/select-disabled-appearance-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/select/select-disabled-appearance-expected.png index 548dfc7..ab738af 100644 --- a/third_party/blink/web_tests/platform/win/fast/forms/select/select-disabled-appearance-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/select/select-disabled-appearance-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/select/select-initial-position-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/select/select-initial-position-expected.png index ef52ed3b3..92dc661e 100644 --- a/third_party/blink/web_tests/platform/win/fast/forms/select/select-initial-position-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/select/select-initial-position-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/select/select-selected-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/select/select-selected-expected.png index a3a6efa..ffa74b3 100644 --- a/third_party/blink/web_tests/platform/win/fast/forms/select/select-selected-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/select/select-selected-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/select/select-writing-direction-natural-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/select/select-writing-direction-natural-expected.png index 7458ccf..4db8f4d 100644 --- a/third_party/blink/web_tests/platform/win/fast/forms/select/select-writing-direction-natural-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/select/select-writing-direction-natural-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/submit/submit-appearance-basic-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/submit/submit-appearance-basic-expected.png index 8422839..35a66bd 100644 --- a/third_party/blink/web_tests/platform/win/fast/forms/submit/submit-appearance-basic-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/submit/submit-appearance-basic-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/suggestion-picker/date-suggestion-picker-appearance-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/suggestion-picker/date-suggestion-picker-appearance-expected.png index b4fc4645..fa76163 100644 --- a/third_party/blink/web_tests/platform/win/fast/forms/suggestion-picker/date-suggestion-picker-appearance-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/suggestion-picker/date-suggestion-picker-appearance-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/suggestion-picker/date-suggestion-picker-appearance-rtl-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/suggestion-picker/date-suggestion-picker-appearance-rtl-expected.png index 8d4e05cf..10676f5 100644 --- a/third_party/blink/web_tests/platform/win/fast/forms/suggestion-picker/date-suggestion-picker-appearance-rtl-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/suggestion-picker/date-suggestion-picker-appearance-rtl-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/suggestion-picker/date-suggestion-picker-appearance-with-scroll-bar-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/suggestion-picker/date-suggestion-picker-appearance-with-scroll-bar-expected.png index 3e56de92..d03fbe6 100644 --- a/third_party/blink/web_tests/platform/win/fast/forms/suggestion-picker/date-suggestion-picker-appearance-with-scroll-bar-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/suggestion-picker/date-suggestion-picker-appearance-with-scroll-bar-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-expected.png index 66c01d1..150fe31b 100644 --- a/third_party/blink/web_tests/platform/win/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-locale-hebrew-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-locale-hebrew-expected.png index d540103..c424a33a 100644 --- a/third_party/blink/web_tests/platform/win/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-locale-hebrew-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-locale-hebrew-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-rtl-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-rtl-expected.png index 1ad4dc3..b88a432 100644 --- a/third_party/blink/web_tests/platform/win/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-rtl-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-rtl-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/suggestion-picker/month-suggestion-picker-appearance-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/suggestion-picker/month-suggestion-picker-appearance-expected.png index 4cb8ad2..66a4e4f0 100644 --- a/third_party/blink/web_tests/platform/win/fast/forms/suggestion-picker/month-suggestion-picker-appearance-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/suggestion-picker/month-suggestion-picker-appearance-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/suggestion-picker/month-suggestion-picker-appearance-rtl-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/suggestion-picker/month-suggestion-picker-appearance-rtl-expected.png index 6c71e8b..85995c3 100644 --- a/third_party/blink/web_tests/platform/win/fast/forms/suggestion-picker/month-suggestion-picker-appearance-rtl-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/suggestion-picker/month-suggestion-picker-appearance-rtl-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/suggestion-picker/month-suggestion-picker-appearance-with-scroll-bar-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/suggestion-picker/month-suggestion-picker-appearance-with-scroll-bar-expected.png index 24afbdac..e963830 100644 --- a/third_party/blink/web_tests/platform/win/fast/forms/suggestion-picker/month-suggestion-picker-appearance-with-scroll-bar-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/suggestion-picker/month-suggestion-picker-appearance-with-scroll-bar-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/suggestion-picker/time-suggestion-picker-appearance-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/suggestion-picker/time-suggestion-picker-appearance-expected.png index 2dcc7a9..16ab55ba 100644 --- a/third_party/blink/web_tests/platform/win/fast/forms/suggestion-picker/time-suggestion-picker-appearance-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/suggestion-picker/time-suggestion-picker-appearance-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/suggestion-picker/time-suggestion-picker-appearance-rtl-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/suggestion-picker/time-suggestion-picker-appearance-rtl-expected.png index 9b755186..9239fe7 100644 --- a/third_party/blink/web_tests/platform/win/fast/forms/suggestion-picker/time-suggestion-picker-appearance-rtl-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/suggestion-picker/time-suggestion-picker-appearance-rtl-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/suggestion-picker/time-suggestion-picker-appearance-with-scroll-bar-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/suggestion-picker/time-suggestion-picker-appearance-with-scroll-bar-expected.png index 005c9bba..7c5758d 100644 --- a/third_party/blink/web_tests/platform/win/fast/forms/suggestion-picker/time-suggestion-picker-appearance-with-scroll-bar-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/suggestion-picker/time-suggestion-picker-appearance-with-scroll-bar-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/suggestion-picker/week-suggestion-picker-appearance-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/suggestion-picker/week-suggestion-picker-appearance-expected.png index 02e8ca0..a135fb6 100644 --- a/third_party/blink/web_tests/platform/win/fast/forms/suggestion-picker/week-suggestion-picker-appearance-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/suggestion-picker/week-suggestion-picker-appearance-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/suggestion-picker/week-suggestion-picker-appearance-rtl-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/suggestion-picker/week-suggestion-picker-appearance-rtl-expected.png index 7824a7c..68cdca4 100644 --- a/third_party/blink/web_tests/platform/win/fast/forms/suggestion-picker/week-suggestion-picker-appearance-rtl-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/suggestion-picker/week-suggestion-picker-appearance-rtl-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/suggestion-picker/week-suggestion-picker-appearance-with-scroll-bar-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/suggestion-picker/week-suggestion-picker-appearance-with-scroll-bar-expected.png index 4b21b50..ea6efdc 100644 --- a/third_party/blink/web_tests/platform/win/fast/forms/suggestion-picker/week-suggestion-picker-appearance-with-scroll-bar-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/suggestion-picker/week-suggestion-picker-appearance-with-scroll-bar-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/text/input-disabled-color-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/text/input-disabled-color-expected.png index 12f0615a..b56bddc 100644 --- a/third_party/blink/web_tests/platform/win/fast/forms/text/input-disabled-color-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/text/input-disabled-color-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/text/text-appearance-basic-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/text/text-appearance-basic-expected.png index 0d8f43d..7ea41360 100644 --- a/third_party/blink/web_tests/platform/win/fast/forms/text/text-appearance-basic-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/text/text-appearance-basic-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/text/text-appearance-datalist-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/text/text-appearance-datalist-expected.png index ad6241b..8f4603a 100644 --- a/third_party/blink/web_tests/platform/win/fast/forms/text/text-appearance-datalist-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/text/text-appearance-datalist-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/textarea/basic-textareas-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/textarea/basic-textareas-expected.png index c041028..02cb31f 100644 --- a/third_party/blink/web_tests/platform/win/fast/forms/textarea/basic-textareas-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/textarea/basic-textareas-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/textarea/basic-textareas-quirks-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/textarea/basic-textareas-quirks-expected.png index e4ecaa7..74cc335e 100644 --- a/third_party/blink/web_tests/platform/win/fast/forms/textarea/basic-textareas-quirks-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/textarea/basic-textareas-quirks-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/textarea/textarea-appearance-basic-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/textarea/textarea-appearance-basic-expected.png index a3fd5ce..cefac39 100644 --- a/third_party/blink/web_tests/platform/win/fast/forms/textarea/textarea-appearance-basic-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/textarea/textarea-appearance-basic-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/time/time-appearance-basic-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/time/time-appearance-basic-expected.png index 40cbb90c..1c1c3fd8 100644 --- a/third_party/blink/web_tests/platform/win/fast/forms/time/time-appearance-basic-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/time/time-appearance-basic-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/week/week-appearance-basic-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/week/week-appearance-basic-expected.png index 1b4e015..7e8690c 100644 --- a/third_party/blink/web_tests/platform/win/fast/forms/week/week-appearance-basic-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/week/week-appearance-basic-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/hidpi/resize-corner-hidpi-expected.png b/third_party/blink/web_tests/platform/win/fast/hidpi/resize-corner-hidpi-expected.png index 21a89bf2..eb1e83e 100644 --- a/third_party/blink/web_tests/platform/win/fast/hidpi/resize-corner-hidpi-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/hidpi/resize-corner-hidpi-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/inline/positionedLifetime-expected.png b/third_party/blink/web_tests/platform/win/fast/inline/positionedLifetime-expected.png index 9ad0451b8..9ec1293 100644 --- a/third_party/blink/web_tests/platform/win/fast/inline/positionedLifetime-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/inline/positionedLifetime-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/invalid/014-expected.png b/third_party/blink/web_tests/platform/win/fast/invalid/014-expected.png index 76bfc14..5e28ea3 100644 --- a/third_party/blink/web_tests/platform/win/fast/invalid/014-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/invalid/014-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/lists/dynamic-marker-crash-expected.png b/third_party/blink/web_tests/platform/win/fast/lists/dynamic-marker-crash-expected.png index f4387ff5..c2c2d5c 100644 --- a/third_party/blink/web_tests/platform/win/fast/lists/dynamic-marker-crash-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/lists/dynamic-marker-crash-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/multicol/input-with-overflow-second-column-expected.png b/third_party/blink/web_tests/platform/win/fast/multicol/input-with-overflow-second-column-expected.png index 9c4b3c3..a2ce852 100644 --- a/third_party/blink/web_tests/platform/win/fast/multicol/input-with-overflow-second-column-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/multicol/input-with-overflow-second-column-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/multicol/multicol-with-child-renderLayer-for-input-expected.png b/third_party/blink/web_tests/platform/win/fast/multicol/multicol-with-child-renderLayer-for-input-expected.png index deb702a..be939a58 100644 --- a/third_party/blink/web_tests/platform/win/fast/multicol/multicol-with-child-renderLayer-for-input-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/multicol/multicol-with-child-renderLayer-for-input-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/overflow/overflow-x-y-expected.png b/third_party/blink/web_tests/platform/win/fast/overflow/overflow-x-y-expected.png index 2e8d2a9..85c35136 100644 --- a/third_party/blink/web_tests/platform/win/fast/overflow/overflow-x-y-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/overflow/overflow-x-y-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/overflow/scroll-nested-positioned-layer-in-overflow-expected.png b/third_party/blink/web_tests/platform/win/fast/overflow/scroll-nested-positioned-layer-in-overflow-expected.png index 4ab2e37..5cc3969 100644 --- a/third_party/blink/web_tests/platform/win/fast/overflow/scroll-nested-positioned-layer-in-overflow-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/overflow/scroll-nested-positioned-layer-in-overflow-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/overflow/scrollRevealButton-expected.png b/third_party/blink/web_tests/platform/win/fast/overflow/scrollRevealButton-expected.png index 498354b..797a0a31 100644 --- a/third_party/blink/web_tests/platform/win/fast/overflow/scrollRevealButton-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/overflow/scrollRevealButton-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/parser/bad-xml-slash-expected.png b/third_party/blink/web_tests/platform/win/fast/parser/bad-xml-slash-expected.png index 1f67ca6..df7330b 100644 --- a/third_party/blink/web_tests/platform/win/fast/parser/bad-xml-slash-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/parser/bad-xml-slash-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/parser/entity-comment-in-textarea-expected.png b/third_party/blink/web_tests/platform/win/fast/parser/entity-comment-in-textarea-expected.png index d36ce40..d3a52946 100644 --- a/third_party/blink/web_tests/platform/win/fast/parser/entity-comment-in-textarea-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/parser/entity-comment-in-textarea-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/parser/open-comment-in-textarea-expected.png b/third_party/blink/web_tests/platform/win/fast/parser/open-comment-in-textarea-expected.png index 9249670..4c28784 100644 --- a/third_party/blink/web_tests/platform/win/fast/parser/open-comment-in-textarea-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/parser/open-comment-in-textarea-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/replaced/replaced-breaking-mixture-expected.png b/third_party/blink/web_tests/platform/win/fast/replaced/replaced-breaking-mixture-expected.png index b209257..8de7794 100644 --- a/third_party/blink/web_tests/platform/win/fast/replaced/replaced-breaking-mixture-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/replaced/replaced-breaking-mixture-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/replaced/three-selects-break-expected.png b/third_party/blink/web_tests/platform/win/fast/replaced/three-selects-break-expected.png index 966c907..7e1fb27 100644 --- a/third_party/blink/web_tests/platform/win/fast/replaced/three-selects-break-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/replaced/three-selects-break-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/replaced/width100percent-checkbox-expected.png b/third_party/blink/web_tests/platform/win/fast/replaced/width100percent-checkbox-expected.png index 408cbc2..55ad739b 100644 --- a/third_party/blink/web_tests/platform/win/fast/replaced/width100percent-checkbox-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/replaced/width100percent-checkbox-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/replaced/width100percent-menulist-expected.png b/third_party/blink/web_tests/platform/win/fast/replaced/width100percent-menulist-expected.png index a4aa009..d20151c 100644 --- a/third_party/blink/web_tests/platform/win/fast/replaced/width100percent-menulist-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/replaced/width100percent-menulist-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/replaced/width100percent-radio-expected.png b/third_party/blink/web_tests/platform/win/fast/replaced/width100percent-radio-expected.png index a3abbb3c..c588c8d 100644 --- a/third_party/blink/web_tests/platform/win/fast/replaced/width100percent-radio-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/replaced/width100percent-radio-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/replaced/width100percent-searchfield-expected.png b/third_party/blink/web_tests/platform/win/fast/replaced/width100percent-searchfield-expected.png index 6ec363a..d272a1d 100644 --- a/third_party/blink/web_tests/platform/win/fast/replaced/width100percent-searchfield-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/replaced/width100percent-searchfield-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/replaced/width100percent-textarea-expected.png b/third_party/blink/web_tests/platform/win/fast/replaced/width100percent-textarea-expected.png index 912076f..8a4f68a 100644 --- a/third_party/blink/web_tests/platform/win/fast/replaced/width100percent-textarea-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/replaced/width100percent-textarea-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/replaced/width100percent-textfield-expected.png b/third_party/blink/web_tests/platform/win/fast/replaced/width100percent-textfield-expected.png index e077fb01..381231e 100644 --- a/third_party/blink/web_tests/platform/win/fast/replaced/width100percent-textfield-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/replaced/width100percent-textfield-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/selectors/064-expected.png b/third_party/blink/web_tests/platform/win/fast/selectors/064-expected.png index 832908c..65fea31 100644 --- a/third_party/blink/web_tests/platform/win/fast/selectors/064-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/selectors/064-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/spatial-navigation/snav-multiple-select-focusring-expected.png b/third_party/blink/web_tests/platform/win/fast/spatial-navigation/snav-multiple-select-focusring-expected.png index b172d61..6e0879f 100644 --- a/third_party/blink/web_tests/platform/win/fast/spatial-navigation/snav-multiple-select-focusring-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/spatial-navigation/snav-multiple-select-focusring-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/table/003-expected.png b/third_party/blink/web_tests/platform/win/fast/table/003-expected.png index 9982e14..e12e5b7 100644 --- a/third_party/blink/web_tests/platform/win/fast/table/003-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/table/003-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/table/append-cells2-expected.png b/third_party/blink/web_tests/platform/win/fast/table/append-cells2-expected.png index ee7c93b..cee59311 100644 --- a/third_party/blink/web_tests/platform/win/fast/table/append-cells2-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/table/append-cells2-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/table/colspanMinWidth-expected.png b/third_party/blink/web_tests/platform/win/fast/table/colspanMinWidth-expected.png index 02ee59b..17d8536 100644 --- a/third_party/blink/web_tests/platform/win/fast/table/colspanMinWidth-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/table/colspanMinWidth-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/table/colspanMinWidth-vertical-expected.png b/third_party/blink/web_tests/platform/win/fast/table/colspanMinWidth-vertical-expected.png index 64f2650..d6dc9028 100644 --- a/third_party/blink/web_tests/platform/win/fast/table/colspanMinWidth-vertical-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/table/colspanMinWidth-vertical-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/table/remove-td-display-none-expected.png b/third_party/blink/web_tests/platform/win/fast/table/remove-td-display-none-expected.png index edb8db8..7033631 100644 --- a/third_party/blink/web_tests/platform/win/fast/table/remove-td-display-none-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/table/remove-td-display-none-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/table/spanOverlapRepaint-expected.png b/third_party/blink/web_tests/platform/win/fast/table/spanOverlapRepaint-expected.png index b92e03e..10d8634 100644 --- a/third_party/blink/web_tests/platform/win/fast/table/spanOverlapRepaint-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/table/spanOverlapRepaint-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/table/text-field-baseline-expected.png b/third_party/blink/web_tests/platform/win/fast/table/text-field-baseline-expected.png index b00e7ca..dabb1a2f 100644 --- a/third_party/blink/web_tests/platform/win/fast/table/text-field-baseline-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/table/text-field-baseline-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fragmentation/outline-crossing-columns-expected.png b/third_party/blink/web_tests/platform/win/fragmentation/outline-crossing-columns-expected.png index eba9d78..323cf91 100644 --- a/third_party/blink/web_tests/platform/win/fragmentation/outline-crossing-columns-expected.png +++ b/third_party/blink/web_tests/platform/win/fragmentation/outline-crossing-columns-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/html/details_summary/details-no-summary4-expected.png b/third_party/blink/web_tests/platform/win/html/details_summary/details-no-summary4-expected.png index 081d3bbd..7ec5c84 100644 --- a/third_party/blink/web_tests/platform/win/html/details_summary/details-no-summary4-expected.png +++ b/third_party/blink/web_tests/platform/win/html/details_summary/details-no-summary4-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/html/details_summary/details-open-javascript-expected.png b/third_party/blink/web_tests/platform/win/html/details_summary/details-open-javascript-expected.png index af16622d..c941480 100644 --- a/third_party/blink/web_tests/platform/win/html/details_summary/details-open-javascript-expected.png +++ b/third_party/blink/web_tests/platform/win/html/details_summary/details-open-javascript-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/html/details_summary/details-open2-expected.png b/third_party/blink/web_tests/platform/win/html/details_summary/details-open2-expected.png index f5c9022..9bb660e 100644 --- a/third_party/blink/web_tests/platform/win/html/details_summary/details-open2-expected.png +++ b/third_party/blink/web_tests/platform/win/html/details_summary/details-open2-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/html/details_summary/details-open4-expected.png b/third_party/blink/web_tests/platform/win/html/details_summary/details-open4-expected.png index f5c9022..9bb660e 100644 --- a/third_party/blink/web_tests/platform/win/html/details_summary/details-open4-expected.png +++ b/third_party/blink/web_tests/platform/win/html/details_summary/details-open4-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/html/details_summary/details-replace-summary-child-expected.png b/third_party/blink/web_tests/platform/win/html/details_summary/details-replace-summary-child-expected.png index a2ba64ce..fa58b375 100644 --- a/third_party/blink/web_tests/platform/win/html/details_summary/details-replace-summary-child-expected.png +++ b/third_party/blink/web_tests/platform/win/html/details_summary/details-replace-summary-child-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/html/details_summary/details-replace-text-expected.png b/third_party/blink/web_tests/platform/win/html/details_summary/details-replace-text-expected.png index 0f19091..1ac5844 100644 --- a/third_party/blink/web_tests/platform/win/html/details_summary/details-replace-text-expected.png +++ b/third_party/blink/web_tests/platform/win/html/details_summary/details-replace-text-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/http/tests/filesystem/input-display-expected.png b/third_party/blink/web_tests/platform/win/http/tests/filesystem/input-display-expected.png index 2637248..5c0c019f 100644 --- a/third_party/blink/web_tests/platform/win/http/tests/filesystem/input-display-expected.png +++ b/third_party/blink/web_tests/platform/win/http/tests/filesystem/input-display-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/http/tests/webfont/popup-menu-load-webfont-after-open-expected.png b/third_party/blink/web_tests/platform/win/http/tests/webfont/popup-menu-load-webfont-after-open-expected.png index e6f3b22..30d2f36f 100644 --- a/third_party/blink/web_tests/platform/win/http/tests/webfont/popup-menu-load-webfont-after-open-expected.png +++ b/third_party/blink/web_tests/platform/win/http/tests/webfont/popup-menu-load-webfont-after-open-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/images/12-55-expected.png b/third_party/blink/web_tests/platform/win/images/12-55-expected.png index 6ab20f5..e944094 100644 --- a/third_party/blink/web_tests/platform/win/images/12-55-expected.png +++ b/third_party/blink/web_tests/platform/win/images/12-55-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/images/182-expected.png b/third_party/blink/web_tests/platform/win/images/182-expected.png index 1e8c443..255c9b0 100644 --- a/third_party/blink/web_tests/platform/win/images/182-expected.png +++ b/third_party/blink/web_tests/platform/win/images/182-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/images/2-dht-expected.png b/third_party/blink/web_tests/platform/win/images/2-dht-expected.png index 49a398f..194c1e9 100644 --- a/third_party/blink/web_tests/platform/win/images/2-dht-expected.png +++ b/third_party/blink/web_tests/platform/win/images/2-dht-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/images/23-55-expected.png b/third_party/blink/web_tests/platform/win/images/23-55-expected.png index c9f1bbd..d5c8568b 100644 --- a/third_party/blink/web_tests/platform/win/images/23-55-expected.png +++ b/third_party/blink/web_tests/platform/win/images/23-55-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/images/55-expected.png b/third_party/blink/web_tests/platform/win/images/55-expected.png index 9eaec3d..7977361 100644 --- a/third_party/blink/web_tests/platform/win/images/55-expected.png +++ b/third_party/blink/web_tests/platform/win/images/55-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/paint/invalidation/caret-subpixel-expected.png b/third_party/blink/web_tests/platform/win/paint/invalidation/caret-subpixel-expected.png index 489425d..4b553fc8 100644 --- a/third_party/blink/web_tests/platform/win/paint/invalidation/caret-subpixel-expected.png +++ b/third_party/blink/web_tests/platform/win/paint/invalidation/caret-subpixel-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/paint/invalidation/forms/button-reset-focus-by-mouse-then-keydown-expected.png b/third_party/blink/web_tests/platform/win/paint/invalidation/forms/button-reset-focus-by-mouse-then-keydown-expected.png index 80936462..24564960 100644 --- a/third_party/blink/web_tests/platform/win/paint/invalidation/forms/button-reset-focus-by-mouse-then-keydown-expected.png +++ b/third_party/blink/web_tests/platform/win/paint/invalidation/forms/button-reset-focus-by-mouse-then-keydown-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/paint/invalidation/forms/checkbox-focus-by-mouse-then-keydown-expected.png b/third_party/blink/web_tests/platform/win/paint/invalidation/forms/checkbox-focus-by-mouse-then-keydown-expected.png index 22c0aa5f..182ad485 100644 --- a/third_party/blink/web_tests/platform/win/paint/invalidation/forms/checkbox-focus-by-mouse-then-keydown-expected.png +++ b/third_party/blink/web_tests/platform/win/paint/invalidation/forms/checkbox-focus-by-mouse-then-keydown-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/paint/invalidation/forms/radio-focus-by-mouse-then-keydown-expected.png b/third_party/blink/web_tests/platform/win/paint/invalidation/forms/radio-focus-by-mouse-then-keydown-expected.png index f8eda322..a5e69ff 100644 --- a/third_party/blink/web_tests/platform/win/paint/invalidation/forms/radio-focus-by-mouse-then-keydown-expected.png +++ b/third_party/blink/web_tests/platform/win/paint/invalidation/forms/radio-focus-by-mouse-then-keydown-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/paint/invalidation/forms/slider-thumb-drag-release-expected.png b/third_party/blink/web_tests/platform/win/paint/invalidation/forms/slider-thumb-drag-release-expected.png index f6051db7..5da4a0c 100644 --- a/third_party/blink/web_tests/platform/win/paint/invalidation/forms/slider-thumb-drag-release-expected.png +++ b/third_party/blink/web_tests/platform/win/paint/invalidation/forms/slider-thumb-drag-release-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/paint/invalidation/forms/textarea-caret-expected.png b/third_party/blink/web_tests/platform/win/paint/invalidation/forms/textarea-caret-expected.png index 170eaf7..29bbc8c1 100644 --- a/third_party/blink/web_tests/platform/win/paint/invalidation/forms/textarea-caret-expected.png +++ b/third_party/blink/web_tests/platform/win/paint/invalidation/forms/textarea-caret-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/paint/invalidation/renderer-destruction-by-invalidateSelection-crash-expected.png b/third_party/blink/web_tests/platform/win/paint/invalidation/renderer-destruction-by-invalidateSelection-crash-expected.png index fee7d48..0f04f67 100644 --- a/third_party/blink/web_tests/platform/win/paint/invalidation/renderer-destruction-by-invalidateSelection-crash-expected.png +++ b/third_party/blink/web_tests/platform/win/paint/invalidation/renderer-destruction-by-invalidateSelection-crash-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/paint/invalidation/scroll/caret-invalidation-in-overflow-scroll-expected.png b/third_party/blink/web_tests/platform/win/paint/invalidation/scroll/caret-invalidation-in-overflow-scroll-expected.png index 44743af..a0d55c17 100644 --- a/third_party/blink/web_tests/platform/win/paint/invalidation/scroll/caret-invalidation-in-overflow-scroll-expected.png +++ b/third_party/blink/web_tests/platform/win/paint/invalidation/scroll/caret-invalidation-in-overflow-scroll-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/paint/invalidation/scroll/caret-with-composited-scroll-expected.png b/third_party/blink/web_tests/platform/win/paint/invalidation/scroll/caret-with-composited-scroll-expected.png index 6642435c..6dab1e37 100644 --- a/third_party/blink/web_tests/platform/win/paint/invalidation/scroll/caret-with-composited-scroll-expected.png +++ b/third_party/blink/web_tests/platform/win/paint/invalidation/scroll/caret-with-composited-scroll-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/paint/invalidation/selection/selection-in-composited-scrolling-container-expected.png b/third_party/blink/web_tests/platform/win/paint/invalidation/selection/selection-in-composited-scrolling-container-expected.png index 28a82b2b..c2a5851 100644 --- a/third_party/blink/web_tests/platform/win/paint/invalidation/selection/selection-in-composited-scrolling-container-expected.png +++ b/third_party/blink/web_tests/platform/win/paint/invalidation/selection/selection-in-composited-scrolling-container-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/paint/invalidation/selection/selection-in-non-composited-scrolling-container-expected.png b/third_party/blink/web_tests/platform/win/paint/invalidation/selection/selection-in-non-composited-scrolling-container-expected.png index 6007150..a8fec20e 100644 --- a/third_party/blink/web_tests/platform/win/paint/invalidation/selection/selection-in-non-composited-scrolling-container-expected.png +++ b/third_party/blink/web_tests/platform/win/paint/invalidation/selection/selection-in-non-composited-scrolling-container-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/paint/invalidation/subtree-root-skipped-expected.png b/third_party/blink/web_tests/platform/win/paint/invalidation/subtree-root-skipped-expected.png index a2c1111..5820f52 100644 --- a/third_party/blink/web_tests/platform/win/paint/invalidation/subtree-root-skipped-expected.png +++ b/third_party/blink/web_tests/platform/win/paint/invalidation/subtree-root-skipped-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/paint/roundedrects/input-with-rounded-rect-and-shadow-expected.png b/third_party/blink/web_tests/platform/win/paint/roundedrects/input-with-rounded-rect-and-shadow-expected.png index 17757aea..2473fce 100644 --- a/third_party/blink/web_tests/platform/win/paint/roundedrects/input-with-rounded-rect-and-shadow-expected.png +++ b/third_party/blink/web_tests/platform/win/paint/roundedrects/input-with-rounded-rect-and-shadow-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/paint/selection/text-selection-with-composition-expected.png b/third_party/blink/web_tests/platform/win/paint/selection/text-selection-with-composition-expected.png index 9c8b9af..5a5ce00 100644 --- a/third_party/blink/web_tests/platform/win/paint/selection/text-selection-with-composition-expected.png +++ b/third_party/blink/web_tests/platform/win/paint/selection/text-selection-with-composition-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/paint/theme/adjust-progress-bar-size-expected.png b/third_party/blink/web_tests/platform/win/paint/theme/adjust-progress-bar-size-expected.png index 40b82506..20e43de 100644 --- a/third_party/blink/web_tests/platform/win/paint/theme/adjust-progress-bar-size-expected.png +++ b/third_party/blink/web_tests/platform/win/paint/theme/adjust-progress-bar-size-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/scrollbars/listbox-scrollbar-combinations-expected.png b/third_party/blink/web_tests/platform/win/scrollbars/listbox-scrollbar-combinations-expected.png index 7b8e71d..932f5931 100644 --- a/third_party/blink/web_tests/platform/win/scrollbars/listbox-scrollbar-combinations-expected.png +++ b/third_party/blink/web_tests/platform/win/scrollbars/listbox-scrollbar-combinations-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/custom/inline-svg-in-xhtml-expected.png b/third_party/blink/web_tests/platform/win/svg/custom/inline-svg-in-xhtml-expected.png index 8bbf476eb..a4d1a10 100644 --- a/third_party/blink/web_tests/platform/win/svg/custom/inline-svg-in-xhtml-expected.png +++ b/third_party/blink/web_tests/platform/win/svg/custom/inline-svg-in-xhtml-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/hixie/mixed/003-expected.png b/third_party/blink/web_tests/platform/win/svg/hixie/mixed/003-expected.png index 80f5a5ab..02e3bc2 100644 --- a/third_party/blink/web_tests/platform/win/svg/hixie/mixed/003-expected.png +++ b/third_party/blink/web_tests/platform/win/svg/hixie/mixed/003-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/45621-expected.png b/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/45621-expected.png index 2311b293..d3e9f2e 100644 --- a/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/45621-expected.png +++ b/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/45621-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug1188-expected.png b/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug1188-expected.png index b77e5db..573ab638 100644 --- a/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug1188-expected.png +++ b/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug1188-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug12384-expected.png b/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug12384-expected.png index 98d929e..c14b831 100644 --- a/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug12384-expected.png +++ b/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug12384-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug1318-expected.png b/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug1318-expected.png index b886b4d..fc80f2a 100644 --- a/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug1318-expected.png +++ b/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug1318-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug138725-expected.png b/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug138725-expected.png index 75485592..cb9a1e1 100644 --- a/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug138725-expected.png +++ b/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug138725-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug24200-expected.png b/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug24200-expected.png index 77534bd..2bee20754 100644 --- a/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug24200-expected.png +++ b/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug24200-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug2479-2-expected.png b/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug2479-2-expected.png index 30f6551..ddd9507d 100644 --- a/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug2479-2-expected.png +++ b/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug2479-2-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug26178-expected.png b/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug26178-expected.png index 67361f7..b11716d 100644 --- a/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug26178-expected.png +++ b/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug26178-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug28928-expected.png b/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug28928-expected.png index 4b22998..fb8b978 100644 --- a/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug28928-expected.png +++ b/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug28928-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug29326-expected.png b/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug29326-expected.png index 1a8e8e6..6521b7c 100644 --- a/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug29326-expected.png +++ b/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug29326-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug30559-expected.png b/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug30559-expected.png index edf4a0b..76931b1 100644 --- a/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug30559-expected.png +++ b/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug30559-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug30692-expected.png b/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug30692-expected.png index ddd07de..d0e60d6 100644 --- a/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug30692-expected.png +++ b/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug30692-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug39209-expected.png b/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug39209-expected.png index d909b95f..2dec41ca 100644 --- a/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug39209-expected.png +++ b/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug39209-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug4429-expected.png b/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug4429-expected.png index 6f965f9..7186751 100644 --- a/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug4429-expected.png +++ b/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug4429-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug4527-expected.png b/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug4527-expected.png index bf30d79..37f705e 100644 --- a/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug4527-expected.png +++ b/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug4527-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug46368-1-expected.png b/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug46368-1-expected.png index e210602..1faf14a 100644 --- a/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug46368-1-expected.png +++ b/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug46368-1-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug46368-2-expected.png b/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug46368-2-expected.png index 06fb6183..b49405f 100644 --- a/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug46368-2-expected.png +++ b/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug46368-2-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug51037-expected.png b/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug51037-expected.png index b6f32a28..47cba64 100644 --- a/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug51037-expected.png +++ b/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug51037-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug55545-expected.png b/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug55545-expected.png index 89f89ab..02e5802 100644 --- a/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug55545-expected.png +++ b/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug55545-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug59354-expected.png b/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug59354-expected.png index e89ad2e..d0d9973 100644 --- a/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug59354-expected.png +++ b/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug59354-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug68912-expected.png b/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug68912-expected.png index 7d0621c..c2ccf92 100644 --- a/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug68912-expected.png +++ b/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug68912-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug7342-expected.png b/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug7342-expected.png index 216ad58..091519f 100644 --- a/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug7342-expected.png +++ b/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug7342-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug92647-2-expected.png b/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug92647-2-expected.png index fd2874d..3ff2b94 100644 --- a/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug92647-2-expected.png +++ b/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug92647-2-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug96334-expected.png b/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug96334-expected.png index 6a202ec..eac86f52 100644 --- a/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug96334-expected.png +++ b/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug96334-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug99948-expected.png b/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug99948-expected.png index e53ea62..b2137c22 100644 --- a/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug99948-expected.png +++ b/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug99948-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/tables/mozilla/collapsing_borders/bug41262-4-expected.png b/third_party/blink/web_tests/platform/win/tables/mozilla/collapsing_borders/bug41262-4-expected.png index dca3712..8659e36 100644 --- a/third_party/blink/web_tests/platform/win/tables/mozilla/collapsing_borders/bug41262-4-expected.png +++ b/third_party/blink/web_tests/platform/win/tables/mozilla/collapsing_borders/bug41262-4-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/tables/mozilla/core/margins-expected.png b/third_party/blink/web_tests/platform/win/tables/mozilla/core/margins-expected.png index 18af8f6..b480521 100644 --- a/third_party/blink/web_tests/platform/win/tables/mozilla/core/margins-expected.png +++ b/third_party/blink/web_tests/platform/win/tables/mozilla/core/margins-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/tables/mozilla/dom/tableDom-expected.png b/third_party/blink/web_tests/platform/win/tables/mozilla/dom/tableDom-expected.png index 2812c6b..99427081 100644 --- a/third_party/blink/web_tests/platform/win/tables/mozilla/dom/tableDom-expected.png +++ b/third_party/blink/web_tests/platform/win/tables/mozilla/dom/tableDom-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/tables/mozilla/other/move_row-expected.png b/third_party/blink/web_tests/platform/win/tables/mozilla/other/move_row-expected.png index 8e7ebc1..dfeb0f0 100644 --- a/third_party/blink/web_tests/platform/win/tables/mozilla/other/move_row-expected.png +++ b/third_party/blink/web_tests/platform/win/tables/mozilla/other/move_row-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/tables/mozilla_expected_failures/bugs/bug1725-expected.png b/third_party/blink/web_tests/platform/win/tables/mozilla_expected_failures/bugs/bug1725-expected.png index e1f2773..3a5d1eca 100644 --- a/third_party/blink/web_tests/platform/win/tables/mozilla_expected_failures/bugs/bug1725-expected.png +++ b/third_party/blink/web_tests/platform/win/tables/mozilla_expected_failures/bugs/bug1725-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/tables/mozilla_expected_failures/bugs/bug58402-2-expected.png b/third_party/blink/web_tests/platform/win/tables/mozilla_expected_failures/bugs/bug58402-2-expected.png index bf57365..584753e 100644 --- a/third_party/blink/web_tests/platform/win/tables/mozilla_expected_failures/bugs/bug58402-2-expected.png +++ b/third_party/blink/web_tests/platform/win/tables/mozilla_expected_failures/bugs/bug58402-2-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/tables/mozilla_expected_failures/bugs/bug92647-1-expected.png b/third_party/blink/web_tests/platform/win/tables/mozilla_expected_failures/bugs/bug92647-1-expected.png index 7d04dffa..2a70812 100644 --- a/third_party/blink/web_tests/platform/win/tables/mozilla_expected_failures/bugs/bug92647-1-expected.png +++ b/third_party/blink/web_tests/platform/win/tables/mozilla_expected_failures/bugs/bug92647-1-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/tables/mozilla_expected_failures/core/captions1-expected.png b/third_party/blink/web_tests/platform/win/tables/mozilla_expected_failures/core/captions1-expected.png index 5697f8f..717e0a8 100644 --- a/third_party/blink/web_tests/platform/win/tables/mozilla_expected_failures/core/captions1-expected.png +++ b/third_party/blink/web_tests/platform/win/tables/mozilla_expected_failures/core/captions1-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/tables/mozilla_expected_failures/core/captions2-expected.png b/third_party/blink/web_tests/platform/win/tables/mozilla_expected_failures/core/captions2-expected.png index f5a566d5..57525359 100644 --- a/third_party/blink/web_tests/platform/win/tables/mozilla_expected_failures/core/captions2-expected.png +++ b/third_party/blink/web_tests/platform/win/tables/mozilla_expected_failures/core/captions2-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/transforms/3d/general/perspective-non-layer-expected.png b/third_party/blink/web_tests/platform/win/transforms/3d/general/perspective-non-layer-expected.png index ab07942..73b7058ac 100644 --- a/third_party/blink/web_tests/platform/win/transforms/3d/general/perspective-non-layer-expected.png +++ b/third_party/blink/web_tests/platform/win/transforms/3d/general/perspective-non-layer-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/transforms/transformed-focused-text-input-expected.png b/third_party/blink/web_tests/platform/win/transforms/transformed-focused-text-input-expected.png index 063da1c..5717bdc2 100644 --- a/third_party/blink/web_tests/platform/win/transforms/transformed-focused-text-input-expected.png +++ b/third_party/blink/web_tests/platform/win/transforms/transformed-focused-text-input-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/cascade/fast/forms/001-expected.png b/third_party/blink/web_tests/platform/win/virtual/cascade/fast/forms/001-expected.png new file mode 100644 index 0000000..05c1caf --- /dev/null +++ b/third_party/blink/web_tests/platform/win/virtual/cascade/fast/forms/001-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/cascade/fast/forms/fieldset/fieldset-align-expected.png b/third_party/blink/web_tests/platform/win/virtual/cascade/fast/forms/fieldset/fieldset-align-expected.png new file mode 100644 index 0000000..67d356dd --- /dev/null +++ b/third_party/blink/web_tests/platform/win/virtual/cascade/fast/forms/fieldset/fieldset-align-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/cascade/fast/forms/select/select-autofilled-expected.png b/third_party/blink/web_tests/platform/win/virtual/cascade/fast/forms/select/select-autofilled-expected.png new file mode 100644 index 0000000..31119ed9 --- /dev/null +++ b/third_party/blink/web_tests/platform/win/virtual/cascade/fast/forms/select/select-autofilled-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/dark-mode-native-theme-off/text-input-elements-expected.png b/third_party/blink/web_tests/platform/win/virtual/dark-mode-native-theme-off/text-input-elements-expected.png index 5b4aadf..c6c3abf5 100644 --- a/third_party/blink/web_tests/platform/win/virtual/dark-mode-native-theme-off/text-input-elements-expected.png +++ b/third_party/blink/web_tests/platform/win/virtual/dark-mode-native-theme-off/text-input-elements-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/dark-mode-native-theme-on/text-input-elements-expected.png b/third_party/blink/web_tests/platform/win/virtual/dark-mode-native-theme-on/text-input-elements-expected.png index 8257781..bbb847a 100644 --- a/third_party/blink/web_tests/platform/win/virtual/dark-mode-native-theme-on/text-input-elements-expected.png +++ b/third_party/blink/web_tests/platform/win/virtual/dark-mode-native-theme-on/text-input-elements-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/exotic-color-space/images/12-55-expected.png b/third_party/blink/web_tests/platform/win/virtual/exotic-color-space/images/12-55-expected.png index 27e0e52..cb9db157 100644 --- a/third_party/blink/web_tests/platform/win/virtual/exotic-color-space/images/12-55-expected.png +++ b/third_party/blink/web_tests/platform/win/virtual/exotic-color-space/images/12-55-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/exotic-color-space/images/182-expected.png b/third_party/blink/web_tests/platform/win/virtual/exotic-color-space/images/182-expected.png index c237d57..275f787 100644 --- a/third_party/blink/web_tests/platform/win/virtual/exotic-color-space/images/182-expected.png +++ b/third_party/blink/web_tests/platform/win/virtual/exotic-color-space/images/182-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/exotic-color-space/images/2-dht-expected.png b/third_party/blink/web_tests/platform/win/virtual/exotic-color-space/images/2-dht-expected.png index e5d7e24..02ce6e0 100644 --- a/third_party/blink/web_tests/platform/win/virtual/exotic-color-space/images/2-dht-expected.png +++ b/third_party/blink/web_tests/platform/win/virtual/exotic-color-space/images/2-dht-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/exotic-color-space/images/23-55-expected.png b/third_party/blink/web_tests/platform/win/virtual/exotic-color-space/images/23-55-expected.png index 4f419c0..30c3bdf8 100644 --- a/third_party/blink/web_tests/platform/win/virtual/exotic-color-space/images/23-55-expected.png +++ b/third_party/blink/web_tests/platform/win/virtual/exotic-color-space/images/23-55-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/exotic-color-space/images/55-expected.png b/third_party/blink/web_tests/platform/win/virtual/exotic-color-space/images/55-expected.png index 57b46d8a..df323026 100644 --- a/third_party/blink/web_tests/platform/win/virtual/exotic-color-space/images/55-expected.png +++ b/third_party/blink/web_tests/platform/win/virtual/exotic-color-space/images/55-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/basic-buttons-expected.png b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/basic-buttons-expected.png new file mode 100644 index 0000000..33c16ef --- /dev/null +++ b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/basic-buttons-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/basic-inputs-expected.png b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/basic-inputs-expected.png new file mode 100644 index 0000000..faf5e37 --- /dev/null +++ b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/basic-inputs-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/button-sizes-expected.png b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/button-sizes-expected.png new file mode 100644 index 0000000..8d6b683 --- /dev/null +++ b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/button-sizes-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/button-style-color-expected.png b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/button-style-color-expected.png new file mode 100644 index 0000000..f8ef9c4 --- /dev/null +++ b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/button-style-color-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/button-table-styles-expected.png b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/button-table-styles-expected.png new file mode 100644 index 0000000..94ba820 --- /dev/null +++ b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/button-table-styles-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/button-text-transform-expected.png b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/button-text-transform-expected.png new file mode 100644 index 0000000..e2699bf --- /dev/null +++ b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/button-text-transform-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/button/button-align-expected.png b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/button/button-align-expected.png new file mode 100644 index 0000000..bd2920c --- /dev/null +++ b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/button/button-align-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/button/button-white-space-expected.png b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/button/button-white-space-expected.png new file mode 100644 index 0000000..6211ac7 --- /dev/null +++ b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/button/button-white-space-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/calendar-picker-appearance-ar-expected.png b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/calendar-picker-appearance-ar-expected.png new file mode 100644 index 0000000..2f5edca --- /dev/null +++ b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/calendar-picker-appearance-ar-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/calendar-picker-appearance-coarse-expected.png b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/calendar-picker-appearance-coarse-expected.png new file mode 100644 index 0000000..6e1ff66 --- /dev/null +++ b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/calendar-picker-appearance-coarse-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/calendar-picker-appearance-expected.png b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/calendar-picker-appearance-expected.png new file mode 100644 index 0000000..c43f5bd --- /dev/null +++ b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/calendar-picker-appearance-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/calendar-picker-appearance-minimum-date-expected.png b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/calendar-picker-appearance-minimum-date-expected.png new file mode 100644 index 0000000..a151009 --- /dev/null +++ b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/calendar-picker-appearance-minimum-date-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/calendar-picker-appearance-required-ar-expected.png b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/calendar-picker-appearance-required-ar-expected.png new file mode 100644 index 0000000..3b54691 --- /dev/null +++ b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/calendar-picker-appearance-required-ar-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/calendar-picker-appearance-required-expected.png b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/calendar-picker-appearance-required-expected.png new file mode 100644 index 0000000..626b2f49 --- /dev/null +++ b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/calendar-picker-appearance-required-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/calendar-picker-appearance-ru-expected.png b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/calendar-picker-appearance-ru-expected.png new file mode 100644 index 0000000..2aee3a6 --- /dev/null +++ b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/calendar-picker-appearance-ru-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/calendar-picker-appearance-step-expected.png b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/calendar-picker-appearance-step-expected.png new file mode 100644 index 0000000..18f89e4c --- /dev/null +++ b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/calendar-picker-appearance-step-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/calendar-picker-appearance-zoom125-expected.png b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/calendar-picker-appearance-zoom125-expected.png new file mode 100644 index 0000000..1993423 --- /dev/null +++ b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/calendar-picker-appearance-zoom125-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/calendar-picker-appearance-zoom200-expected.png b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/calendar-picker-appearance-zoom200-expected.png new file mode 100644 index 0000000..6858e670 --- /dev/null +++ b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/calendar-picker-appearance-zoom200-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/month-picker-appearance-expected.png b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/month-picker-appearance-expected.png new file mode 100644 index 0000000..ffec41e --- /dev/null +++ b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/month-picker-appearance-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/month-picker-appearance-step-expected.png b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/month-picker-appearance-step-expected.png new file mode 100644 index 0000000..f088793 --- /dev/null +++ b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/month-picker-appearance-step-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/week-picker-appearance-expected.png b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/week-picker-appearance-expected.png new file mode 100644 index 0000000..91a39c4 --- /dev/null +++ b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/week-picker-appearance-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/week-picker-appearance-step-expected.png b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/week-picker-appearance-step-expected.png new file mode 100644 index 0000000..463045ab --- /dev/null +++ b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/week-picker-appearance-step-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/color/color-suggestion-picker-appearance-expected.png b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/color/color-suggestion-picker-appearance-expected.png new file mode 100644 index 0000000..fada8ae --- /dev/null +++ b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/color/color-suggestion-picker-appearance-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/color/color-suggestion-picker-appearance-zoom125-expected.png b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/color/color-suggestion-picker-appearance-zoom125-expected.png new file mode 100644 index 0000000..fdea495 --- /dev/null +++ b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/color/color-suggestion-picker-appearance-zoom125-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/color/color-suggestion-picker-one-row-appearance-expected.png b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/color/color-suggestion-picker-one-row-appearance-expected.png new file mode 100644 index 0000000..582ba47 --- /dev/null +++ b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/color/color-suggestion-picker-one-row-appearance-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/color/color-suggestion-picker-two-row-appearance-expected.png b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/color/color-suggestion-picker-two-row-appearance-expected.png new file mode 100644 index 0000000..b008419a --- /dev/null +++ b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/color/color-suggestion-picker-two-row-appearance-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/color/color-suggestion-picker-with-scrollbar-appearance-expected.png b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/color/color-suggestion-picker-with-scrollbar-appearance-expected.png new file mode 100644 index 0000000..0057ae8df --- /dev/null +++ b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/color/color-suggestion-picker-with-scrollbar-appearance-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/color/input-appearance-color-expected.png b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/color/input-appearance-color-expected.png new file mode 100644 index 0000000..54d39b6 --- /dev/null +++ b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/color/input-appearance-color-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/control-restrict-line-height-expected.png b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/control-restrict-line-height-expected.png new file mode 100644 index 0000000..b055e8f --- /dev/null +++ b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/control-restrict-line-height-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/datalist/input-appearance-range-with-datalist-expected.png b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/datalist/input-appearance-range-with-datalist-expected.png new file mode 100644 index 0000000..508fdcd --- /dev/null +++ b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/datalist/input-appearance-range-with-datalist-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/datalist/input-appearance-range-with-datalist-zoomed-expected.png b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/datalist/input-appearance-range-with-datalist-zoomed-expected.png new file mode 100644 index 0000000..9545bfb --- /dev/null +++ b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/datalist/input-appearance-range-with-datalist-zoomed-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/datalist/input-appearance-range-with-padding-with-datalist-expected.png b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/datalist/input-appearance-range-with-padding-with-datalist-expected.png new file mode 100644 index 0000000..c9e997c --- /dev/null +++ b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/datalist/input-appearance-range-with-padding-with-datalist-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/date/date-appearance-basic-expected.png b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/date/date-appearance-basic-expected.png new file mode 100644 index 0000000..344ab83 --- /dev/null +++ b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/date/date-appearance-basic-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/date/date-appearance-l10n-expected.png b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/date/date-appearance-l10n-expected.png new file mode 100644 index 0000000..3464ea7 --- /dev/null +++ b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/date/date-appearance-l10n-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/datetimelocal/datetimelocal-appearance-basic-expected.png b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/datetimelocal/datetimelocal-appearance-basic-expected.png new file mode 100644 index 0000000..d4f670ef --- /dev/null +++ b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/datetimelocal/datetimelocal-appearance-basic-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/datetimelocal/datetimelocal-appearance-l10n-expected.png b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/datetimelocal/datetimelocal-appearance-l10n-expected.png new file mode 100644 index 0000000..c8411f0 --- /dev/null +++ b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/datetimelocal/datetimelocal-appearance-l10n-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/file/file-input-direction-expected.png b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/file/file-input-direction-expected.png new file mode 100644 index 0000000..bcbebe48 --- /dev/null +++ b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/file/file-input-direction-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/form-element-geometry-expected.png b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/form-element-geometry-expected.png new file mode 100644 index 0000000..ee239e6 --- /dev/null +++ b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/form-element-geometry-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/input-appearance-height-expected.png b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/input-appearance-height-expected.png new file mode 100644 index 0000000..7c85197 --- /dev/null +++ b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/input-appearance-height-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/input-button-sizes-expected.png b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/input-button-sizes-expected.png new file mode 100644 index 0000000..dc77672 --- /dev/null +++ b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/input-button-sizes-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/input-value-expected.png b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/input-value-expected.png new file mode 100644 index 0000000..721c9162 --- /dev/null +++ b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/input-value-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/month/month-appearance-basic-expected.png b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/month/month-appearance-basic-expected.png new file mode 100644 index 0000000..a478503 --- /dev/null +++ b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/month/month-appearance-basic-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/month/month-appearance-l10n-expected.png b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/month/month-appearance-l10n-expected.png new file mode 100644 index 0000000..07d19d0 --- /dev/null +++ b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/month/month-appearance-l10n-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/number/number-appearance-datalist-expected.png b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/number/number-appearance-datalist-expected.png new file mode 100644 index 0000000..f3553da --- /dev/null +++ b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/number/number-appearance-datalist-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/number/number-appearance-spinbutton-disabled-readonly-expected.png b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/number/number-appearance-spinbutton-disabled-readonly-expected.png new file mode 100644 index 0000000..6a39c9a --- /dev/null +++ b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/number/number-appearance-spinbutton-disabled-readonly-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/placeholder-position-expected.png b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/placeholder-position-expected.png new file mode 100644 index 0000000..592ed80 --- /dev/null +++ b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/placeholder-position-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/range/input-appearance-range-expected.png b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/range/input-appearance-range-expected.png new file mode 100644 index 0000000..4cd8333 --- /dev/null +++ b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/range/input-appearance-range-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/range/range-appearance-basic-expected.png b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/range/range-appearance-basic-expected.png new file mode 100644 index 0000000..5779d77f --- /dev/null +++ b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/range/range-appearance-basic-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/range/slider-padding-expected.png b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/range/slider-padding-expected.png new file mode 100644 index 0000000..589a880 --- /dev/null +++ b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/range/slider-padding-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/search/search-vertical-alignment-expected.png b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/search/search-vertical-alignment-expected.png new file mode 100644 index 0000000..4e8e9e9 --- /dev/null +++ b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/search/search-vertical-alignment-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/select/HTMLOptionElement_label02-expected.png b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/select/HTMLOptionElement_label02-expected.png new file mode 100644 index 0000000..c357c1ac --- /dev/null +++ b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/select/HTMLOptionElement_label02-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/select/HTMLOptionElement_label03-expected.png b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/select/HTMLOptionElement_label03-expected.png new file mode 100644 index 0000000..1a81d4d --- /dev/null +++ b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/select/HTMLOptionElement_label03-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/select/HTMLOptionElement_label04-expected.png b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/select/HTMLOptionElement_label04-expected.png new file mode 100644 index 0000000..eebbf45 --- /dev/null +++ b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/select/HTMLOptionElement_label04-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/select/basic-selects-expected.png b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/select/basic-selects-expected.png new file mode 100644 index 0000000..681031a --- /dev/null +++ b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/select/basic-selects-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/select/disabled-select-change-index-expected.png b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/select/disabled-select-change-index-expected.png new file mode 100644 index 0000000..78ba710 --- /dev/null +++ b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/select/disabled-select-change-index-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/select/listbox-appearance-basic-expected.png b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/select/listbox-appearance-basic-expected.png new file mode 100644 index 0000000..2527aab --- /dev/null +++ b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/select/listbox-appearance-basic-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/select/listbox-bidi-align-expected.png b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/select/listbox-bidi-align-expected.png new file mode 100644 index 0000000..c4cab64 --- /dev/null +++ b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/select/listbox-bidi-align-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/select/menulist-appearance-basic-expected.png b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/select/menulist-appearance-basic-expected.png new file mode 100644 index 0000000..4fbe1fed --- /dev/null +++ b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/select/menulist-appearance-basic-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/select/menulist-appearance-rtl-expected.png b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/select/menulist-appearance-rtl-expected.png new file mode 100644 index 0000000..7e8ab9d1 --- /dev/null +++ b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/select/menulist-appearance-rtl-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/select/option-strip-whitespace-expected.png b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/select/option-strip-whitespace-expected.png new file mode 100644 index 0000000..f9a2c75 --- /dev/null +++ b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/select/option-strip-whitespace-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/select/select-align-expected.png b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/select/select-align-expected.png new file mode 100644 index 0000000..266c3a5ae --- /dev/null +++ b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/select/select-align-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/select/select-disabled-appearance-expected.png b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/select/select-disabled-appearance-expected.png new file mode 100644 index 0000000..548dfc7 --- /dev/null +++ b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/select/select-disabled-appearance-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/select/select-initial-position-expected.png b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/select/select-initial-position-expected.png new file mode 100644 index 0000000..ef52ed3b3 --- /dev/null +++ b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/select/select-initial-position-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/select/select-selected-expected.png b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/select/select-selected-expected.png new file mode 100644 index 0000000..a3a6efa --- /dev/null +++ b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/select/select-selected-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/select/select-writing-direction-natural-expected.png b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/select/select-writing-direction-natural-expected.png new file mode 100644 index 0000000..7458ccf --- /dev/null +++ b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/select/select-writing-direction-natural-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/submit/submit-appearance-basic-expected.png b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/submit/submit-appearance-basic-expected.png new file mode 100644 index 0000000..8422839 --- /dev/null +++ b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/submit/submit-appearance-basic-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/suggestion-picker/date-suggestion-picker-appearance-expected.png b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/suggestion-picker/date-suggestion-picker-appearance-expected.png new file mode 100644 index 0000000..b4fc4645 --- /dev/null +++ b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/suggestion-picker/date-suggestion-picker-appearance-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/suggestion-picker/date-suggestion-picker-appearance-rtl-expected.png b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/suggestion-picker/date-suggestion-picker-appearance-rtl-expected.png new file mode 100644 index 0000000..8d4e05cf --- /dev/null +++ b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/suggestion-picker/date-suggestion-picker-appearance-rtl-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/suggestion-picker/date-suggestion-picker-appearance-with-scroll-bar-expected.png b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/suggestion-picker/date-suggestion-picker-appearance-with-scroll-bar-expected.png new file mode 100644 index 0000000..3e56de92 --- /dev/null +++ b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/suggestion-picker/date-suggestion-picker-appearance-with-scroll-bar-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-expected.png b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-expected.png new file mode 100644 index 0000000..66c01d1 --- /dev/null +++ b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-locale-hebrew-expected.png b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-locale-hebrew-expected.png new file mode 100644 index 0000000..d540103 --- /dev/null +++ b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-locale-hebrew-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-rtl-expected.png b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-rtl-expected.png new file mode 100644 index 0000000..1ad4dc3 --- /dev/null +++ b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-rtl-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/suggestion-picker/month-suggestion-picker-appearance-expected.png b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/suggestion-picker/month-suggestion-picker-appearance-expected.png new file mode 100644 index 0000000..4cb8ad2 --- /dev/null +++ b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/suggestion-picker/month-suggestion-picker-appearance-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/suggestion-picker/month-suggestion-picker-appearance-rtl-expected.png b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/suggestion-picker/month-suggestion-picker-appearance-rtl-expected.png new file mode 100644 index 0000000..6c71e8b --- /dev/null +++ b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/suggestion-picker/month-suggestion-picker-appearance-rtl-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/suggestion-picker/month-suggestion-picker-appearance-with-scroll-bar-expected.png b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/suggestion-picker/month-suggestion-picker-appearance-with-scroll-bar-expected.png new file mode 100644 index 0000000..24afbdac --- /dev/null +++ b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/suggestion-picker/month-suggestion-picker-appearance-with-scroll-bar-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/suggestion-picker/time-suggestion-picker-appearance-expected.png b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/suggestion-picker/time-suggestion-picker-appearance-expected.png new file mode 100644 index 0000000..2dcc7a9 --- /dev/null +++ b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/suggestion-picker/time-suggestion-picker-appearance-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/suggestion-picker/time-suggestion-picker-appearance-rtl-expected.png b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/suggestion-picker/time-suggestion-picker-appearance-rtl-expected.png new file mode 100644 index 0000000..9b755186 --- /dev/null +++ b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/suggestion-picker/time-suggestion-picker-appearance-rtl-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/suggestion-picker/time-suggestion-picker-appearance-with-scroll-bar-expected.png b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/suggestion-picker/time-suggestion-picker-appearance-with-scroll-bar-expected.png new file mode 100644 index 0000000..005c9bba --- /dev/null +++ b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/suggestion-picker/time-suggestion-picker-appearance-with-scroll-bar-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/suggestion-picker/week-suggestion-picker-appearance-expected.png b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/suggestion-picker/week-suggestion-picker-appearance-expected.png new file mode 100644 index 0000000..02e8ca0 --- /dev/null +++ b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/suggestion-picker/week-suggestion-picker-appearance-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/suggestion-picker/week-suggestion-picker-appearance-rtl-expected.png b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/suggestion-picker/week-suggestion-picker-appearance-rtl-expected.png new file mode 100644 index 0000000..7824a7c --- /dev/null +++ b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/suggestion-picker/week-suggestion-picker-appearance-rtl-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/suggestion-picker/week-suggestion-picker-appearance-with-scroll-bar-expected.png b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/suggestion-picker/week-suggestion-picker-appearance-with-scroll-bar-expected.png new file mode 100644 index 0000000..4b21b50 --- /dev/null +++ b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/suggestion-picker/week-suggestion-picker-appearance-with-scroll-bar-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/text/input-disabled-color-expected.png b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/text/input-disabled-color-expected.png new file mode 100644 index 0000000..12f0615a --- /dev/null +++ b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/text/input-disabled-color-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/text/text-appearance-basic-expected.png b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/text/text-appearance-basic-expected.png new file mode 100644 index 0000000..0d8f43d --- /dev/null +++ b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/text/text-appearance-basic-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/text/text-appearance-datalist-expected.png b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/text/text-appearance-datalist-expected.png new file mode 100644 index 0000000..ad6241b --- /dev/null +++ b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/text/text-appearance-datalist-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/textarea/basic-textareas-expected.png b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/textarea/basic-textareas-expected.png new file mode 100644 index 0000000..c041028 --- /dev/null +++ b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/textarea/basic-textareas-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/textarea/basic-textareas-quirks-expected.png b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/textarea/basic-textareas-quirks-expected.png new file mode 100644 index 0000000..e4ecaa7 --- /dev/null +++ b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/textarea/basic-textareas-quirks-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/textarea/textarea-appearance-basic-expected.png b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/textarea/textarea-appearance-basic-expected.png new file mode 100644 index 0000000..a3fd5ce --- /dev/null +++ b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/textarea/textarea-appearance-basic-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/time/time-appearance-basic-expected.png b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/time/time-appearance-basic-expected.png new file mode 100644 index 0000000..40cbb90c --- /dev/null +++ b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/time/time-appearance-basic-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/week/week-appearance-basic-expected.png b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/week/week-appearance-basic-expected.png new file mode 100644 index 0000000..1b4e015 --- /dev/null +++ b/third_party/blink/web_tests/platform/win/virtual/form-controls-refresh-disabled/fast/forms/week/week-appearance-basic-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/gpu-rasterization/images/12-55-expected.png b/third_party/blink/web_tests/platform/win/virtual/gpu-rasterization/images/12-55-expected.png index 8cc327dd..3ac93c70 100644 --- a/third_party/blink/web_tests/platform/win/virtual/gpu-rasterization/images/12-55-expected.png +++ b/third_party/blink/web_tests/platform/win/virtual/gpu-rasterization/images/12-55-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/gpu-rasterization/images/182-expected.png b/third_party/blink/web_tests/platform/win/virtual/gpu-rasterization/images/182-expected.png index 6692850..6f80e6b 100644 --- a/third_party/blink/web_tests/platform/win/virtual/gpu-rasterization/images/182-expected.png +++ b/third_party/blink/web_tests/platform/win/virtual/gpu-rasterization/images/182-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/gpu-rasterization/images/2-dht-expected.png b/third_party/blink/web_tests/platform/win/virtual/gpu-rasterization/images/2-dht-expected.png index b90f0d95..62d5e98 100644 --- a/third_party/blink/web_tests/platform/win/virtual/gpu-rasterization/images/2-dht-expected.png +++ b/third_party/blink/web_tests/platform/win/virtual/gpu-rasterization/images/2-dht-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/gpu-rasterization/images/23-55-expected.png b/third_party/blink/web_tests/platform/win/virtual/gpu-rasterization/images/23-55-expected.png index 96262c161..9ab3f2fb 100644 --- a/third_party/blink/web_tests/platform/win/virtual/gpu-rasterization/images/23-55-expected.png +++ b/third_party/blink/web_tests/platform/win/virtual/gpu-rasterization/images/23-55-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/gpu-rasterization/images/55-expected.png b/third_party/blink/web_tests/platform/win/virtual/gpu-rasterization/images/55-expected.png index 60aedbe..a729cfc 100644 --- a/third_party/blink/web_tests/platform/win/virtual/gpu-rasterization/images/55-expected.png +++ b/third_party/blink/web_tests/platform/win/virtual/gpu-rasterization/images/55-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/fast/forms/calendar-picker/calendar-picker-appearance-ar-expected.png b/third_party/blink/web_tests/platform/win7/fast/forms/calendar-picker/calendar-picker-appearance-ar-expected.png index e08e836..a2c4ab71 100644 --- a/third_party/blink/web_tests/platform/win7/fast/forms/calendar-picker/calendar-picker-appearance-ar-expected.png +++ b/third_party/blink/web_tests/platform/win7/fast/forms/calendar-picker/calendar-picker-appearance-ar-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/fast/forms/calendar-picker/calendar-picker-appearance-coarse-expected.png b/third_party/blink/web_tests/platform/win7/fast/forms/calendar-picker/calendar-picker-appearance-coarse-expected.png index a7f4280..9043cdb 100644 --- a/third_party/blink/web_tests/platform/win7/fast/forms/calendar-picker/calendar-picker-appearance-coarse-expected.png +++ b/third_party/blink/web_tests/platform/win7/fast/forms/calendar-picker/calendar-picker-appearance-coarse-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/fast/forms/calendar-picker/calendar-picker-appearance-expected.png b/third_party/blink/web_tests/platform/win7/fast/forms/calendar-picker/calendar-picker-appearance-expected.png index 8f8552ae..9043cdb 100644 --- a/third_party/blink/web_tests/platform/win7/fast/forms/calendar-picker/calendar-picker-appearance-expected.png +++ b/third_party/blink/web_tests/platform/win7/fast/forms/calendar-picker/calendar-picker-appearance-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/fast/forms/calendar-picker/calendar-picker-appearance-minimum-date-expected.png b/third_party/blink/web_tests/platform/win7/fast/forms/calendar-picker/calendar-picker-appearance-minimum-date-expected.png index 38ca6574..fc2b5bb 100644 --- a/third_party/blink/web_tests/platform/win7/fast/forms/calendar-picker/calendar-picker-appearance-minimum-date-expected.png +++ b/third_party/blink/web_tests/platform/win7/fast/forms/calendar-picker/calendar-picker-appearance-minimum-date-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/fast/forms/calendar-picker/calendar-picker-appearance-required-ar-expected.png b/third_party/blink/web_tests/platform/win7/fast/forms/calendar-picker/calendar-picker-appearance-required-ar-expected.png index de58e887..25fb19b2 100644 --- a/third_party/blink/web_tests/platform/win7/fast/forms/calendar-picker/calendar-picker-appearance-required-ar-expected.png +++ b/third_party/blink/web_tests/platform/win7/fast/forms/calendar-picker/calendar-picker-appearance-required-ar-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/fast/forms/calendar-picker/calendar-picker-appearance-required-expected.png b/third_party/blink/web_tests/platform/win7/fast/forms/calendar-picker/calendar-picker-appearance-required-expected.png index f2c9ce4..87efeebb8 100644 --- a/third_party/blink/web_tests/platform/win7/fast/forms/calendar-picker/calendar-picker-appearance-required-expected.png +++ b/third_party/blink/web_tests/platform/win7/fast/forms/calendar-picker/calendar-picker-appearance-required-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/fast/forms/calendar-picker/calendar-picker-appearance-step-expected.png b/third_party/blink/web_tests/platform/win7/fast/forms/calendar-picker/calendar-picker-appearance-step-expected.png index 83a807c..c869120 100644 --- a/third_party/blink/web_tests/platform/win7/fast/forms/calendar-picker/calendar-picker-appearance-step-expected.png +++ b/third_party/blink/web_tests/platform/win7/fast/forms/calendar-picker/calendar-picker-appearance-step-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/fast/forms/calendar-picker/calendar-picker-appearance-zoom125-expected.png b/third_party/blink/web_tests/platform/win7/fast/forms/calendar-picker/calendar-picker-appearance-zoom125-expected.png index cbe09d6..869fd52 100644 --- a/third_party/blink/web_tests/platform/win7/fast/forms/calendar-picker/calendar-picker-appearance-zoom125-expected.png +++ b/third_party/blink/web_tests/platform/win7/fast/forms/calendar-picker/calendar-picker-appearance-zoom125-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/fast/forms/calendar-picker/calendar-picker-appearance-zoom200-expected.png b/third_party/blink/web_tests/platform/win7/fast/forms/calendar-picker/calendar-picker-appearance-zoom200-expected.png index 822d2c3..126baed9 100644 --- a/third_party/blink/web_tests/platform/win7/fast/forms/calendar-picker/calendar-picker-appearance-zoom200-expected.png +++ b/third_party/blink/web_tests/platform/win7/fast/forms/calendar-picker/calendar-picker-appearance-zoom200-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/fast/forms/calendar-picker/month-picker-appearance-expected.png b/third_party/blink/web_tests/platform/win7/fast/forms/calendar-picker/month-picker-appearance-expected.png index 7462941..bf5394e 100644 --- a/third_party/blink/web_tests/platform/win7/fast/forms/calendar-picker/month-picker-appearance-expected.png +++ b/third_party/blink/web_tests/platform/win7/fast/forms/calendar-picker/month-picker-appearance-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/fast/forms/calendar-picker/month-picker-appearance-step-expected.png b/third_party/blink/web_tests/platform/win7/fast/forms/calendar-picker/month-picker-appearance-step-expected.png index 613ee2f..d89d19a 100644 --- a/third_party/blink/web_tests/platform/win7/fast/forms/calendar-picker/month-picker-appearance-step-expected.png +++ b/third_party/blink/web_tests/platform/win7/fast/forms/calendar-picker/month-picker-appearance-step-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/fast/forms/calendar-picker/week-picker-appearance-expected.png b/third_party/blink/web_tests/platform/win7/fast/forms/calendar-picker/week-picker-appearance-expected.png index 969d84e..3f73a65 100644 --- a/third_party/blink/web_tests/platform/win7/fast/forms/calendar-picker/week-picker-appearance-expected.png +++ b/third_party/blink/web_tests/platform/win7/fast/forms/calendar-picker/week-picker-appearance-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/fast/forms/calendar-picker/week-picker-appearance-step-expected.png b/third_party/blink/web_tests/platform/win7/fast/forms/calendar-picker/week-picker-appearance-step-expected.png index 0e53db2..d8ea212 100644 --- a/third_party/blink/web_tests/platform/win7/fast/forms/calendar-picker/week-picker-appearance-step-expected.png +++ b/third_party/blink/web_tests/platform/win7/fast/forms/calendar-picker/week-picker-appearance-step-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/fast/forms/datetimelocal/datetimelocal-appearance-l10n-expected.png b/third_party/blink/web_tests/platform/win7/fast/forms/datetimelocal/datetimelocal-appearance-l10n-expected.png index 1b8eda27d..40087551 100644 --- a/third_party/blink/web_tests/platform/win7/fast/forms/datetimelocal/datetimelocal-appearance-l10n-expected.png +++ b/third_party/blink/web_tests/platform/win7/fast/forms/datetimelocal/datetimelocal-appearance-l10n-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/fast/forms/month/month-appearance-basic-expected.png b/third_party/blink/web_tests/platform/win7/fast/forms/month/month-appearance-basic-expected.png index de69484..b835a870b 100644 --- a/third_party/blink/web_tests/platform/win7/fast/forms/month/month-appearance-basic-expected.png +++ b/third_party/blink/web_tests/platform/win7/fast/forms/month/month-appearance-basic-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/fast/forms/month/month-appearance-l10n-expected.png b/third_party/blink/web_tests/platform/win7/fast/forms/month/month-appearance-l10n-expected.png index aa418a5..97e8e63 100644 --- a/third_party/blink/web_tests/platform/win7/fast/forms/month/month-appearance-l10n-expected.png +++ b/third_party/blink/web_tests/platform/win7/fast/forms/month/month-appearance-l10n-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/fast/forms/select/menulist-appearance-rtl-expected.png b/third_party/blink/web_tests/platform/win7/fast/forms/select/menulist-appearance-rtl-expected.png index b5bdb69..24287df 100644 --- a/third_party/blink/web_tests/platform/win7/fast/forms/select/menulist-appearance-rtl-expected.png +++ b/third_party/blink/web_tests/platform/win7/fast/forms/select/menulist-appearance-rtl-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/fast/forms/suggestion-picker/month-suggestion-picker-appearance-expected.png b/third_party/blink/web_tests/platform/win7/fast/forms/suggestion-picker/month-suggestion-picker-appearance-expected.png index 4d006c1..ec52ecb 100644 --- a/third_party/blink/web_tests/platform/win7/fast/forms/suggestion-picker/month-suggestion-picker-appearance-expected.png +++ b/third_party/blink/web_tests/platform/win7/fast/forms/suggestion-picker/month-suggestion-picker-appearance-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/fast/forms/suggestion-picker/month-suggestion-picker-appearance-rtl-expected.png b/third_party/blink/web_tests/platform/win7/fast/forms/suggestion-picker/month-suggestion-picker-appearance-rtl-expected.png index 61751f5..a9defb6 100644 --- a/third_party/blink/web_tests/platform/win7/fast/forms/suggestion-picker/month-suggestion-picker-appearance-rtl-expected.png +++ b/third_party/blink/web_tests/platform/win7/fast/forms/suggestion-picker/month-suggestion-picker-appearance-rtl-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/fast/forms/suggestion-picker/month-suggestion-picker-appearance-with-scroll-bar-expected.png b/third_party/blink/web_tests/platform/win7/fast/forms/suggestion-picker/month-suggestion-picker-appearance-with-scroll-bar-expected.png index d2a3dec..6e62d5e5 100644 --- a/third_party/blink/web_tests/platform/win7/fast/forms/suggestion-picker/month-suggestion-picker-appearance-with-scroll-bar-expected.png +++ b/third_party/blink/web_tests/platform/win7/fast/forms/suggestion-picker/month-suggestion-picker-appearance-with-scroll-bar-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/scrollbars/listbox-scrollbar-combinations-expected.png b/third_party/blink/web_tests/platform/win7/scrollbars/listbox-scrollbar-combinations-expected.png index 0188c46..fcf5ad4d 100644 --- a/third_party/blink/web_tests/platform/win7/scrollbars/listbox-scrollbar-combinations-expected.png +++ b/third_party/blink/web_tests/platform/win7/scrollbars/listbox-scrollbar-combinations-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/tables/mozilla/bugs/bug2479-2-expected.png b/third_party/blink/web_tests/platform/win7/tables/mozilla/bugs/bug2479-2-expected.png index 42ec6d1..a5560b5 100644 --- a/third_party/blink/web_tests/platform/win7/tables/mozilla/bugs/bug2479-2-expected.png +++ b/third_party/blink/web_tests/platform/win7/tables/mozilla/bugs/bug2479-2-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/dark-mode-native-theme-off/text-input-elements-expected.png b/third_party/blink/web_tests/platform/win7/virtual/dark-mode-native-theme-off/text-input-elements-expected.png deleted file mode 100644 index 5b4aadf..0000000 --- a/third_party/blink/web_tests/platform/win7/virtual/dark-mode-native-theme-off/text-input-elements-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/dark-mode-native-theme-on/text-input-elements-expected.png b/third_party/blink/web_tests/platform/win7/virtual/dark-mode-native-theme-on/text-input-elements-expected.png deleted file mode 100644 index 8257781..0000000 --- a/third_party/blink/web_tests/platform/win7/virtual/dark-mode-native-theme-on/text-input-elements-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/calendar-picker-appearance-ar-expected.png b/third_party/blink/web_tests/platform/win7/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/calendar-picker-appearance-ar-expected.png new file mode 100644 index 0000000..e08e836 --- /dev/null +++ b/third_party/blink/web_tests/platform/win7/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/calendar-picker-appearance-ar-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/calendar-picker-appearance-coarse-expected.png b/third_party/blink/web_tests/platform/win7/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/calendar-picker-appearance-coarse-expected.png new file mode 100644 index 0000000..a7f4280 --- /dev/null +++ b/third_party/blink/web_tests/platform/win7/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/calendar-picker-appearance-coarse-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/calendar-picker-appearance-expected.png b/third_party/blink/web_tests/platform/win7/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/calendar-picker-appearance-expected.png new file mode 100644 index 0000000..8f8552ae --- /dev/null +++ b/third_party/blink/web_tests/platform/win7/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/calendar-picker-appearance-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/calendar-picker-appearance-minimum-date-expected.png b/third_party/blink/web_tests/platform/win7/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/calendar-picker-appearance-minimum-date-expected.png new file mode 100644 index 0000000..38ca6574 --- /dev/null +++ b/third_party/blink/web_tests/platform/win7/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/calendar-picker-appearance-minimum-date-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/calendar-picker-appearance-required-ar-expected.png b/third_party/blink/web_tests/platform/win7/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/calendar-picker-appearance-required-ar-expected.png new file mode 100644 index 0000000..de58e887 --- /dev/null +++ b/third_party/blink/web_tests/platform/win7/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/calendar-picker-appearance-required-ar-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/calendar-picker-appearance-required-expected.png b/third_party/blink/web_tests/platform/win7/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/calendar-picker-appearance-required-expected.png new file mode 100644 index 0000000..f2c9ce4 --- /dev/null +++ b/third_party/blink/web_tests/platform/win7/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/calendar-picker-appearance-required-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/calendar-picker-appearance-step-expected.png b/third_party/blink/web_tests/platform/win7/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/calendar-picker-appearance-step-expected.png new file mode 100644 index 0000000..83a807c --- /dev/null +++ b/third_party/blink/web_tests/platform/win7/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/calendar-picker-appearance-step-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/calendar-picker-appearance-zoom125-expected.png b/third_party/blink/web_tests/platform/win7/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/calendar-picker-appearance-zoom125-expected.png new file mode 100644 index 0000000..cbe09d6 --- /dev/null +++ b/third_party/blink/web_tests/platform/win7/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/calendar-picker-appearance-zoom125-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/calendar-picker-appearance-zoom200-expected.png b/third_party/blink/web_tests/platform/win7/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/calendar-picker-appearance-zoom200-expected.png new file mode 100644 index 0000000..822d2c3 --- /dev/null +++ b/third_party/blink/web_tests/platform/win7/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/calendar-picker-appearance-zoom200-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/month-picker-appearance-expected.png b/third_party/blink/web_tests/platform/win7/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/month-picker-appearance-expected.png new file mode 100644 index 0000000..7462941 --- /dev/null +++ b/third_party/blink/web_tests/platform/win7/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/month-picker-appearance-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/month-picker-appearance-step-expected.png b/third_party/blink/web_tests/platform/win7/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/month-picker-appearance-step-expected.png new file mode 100644 index 0000000..613ee2f --- /dev/null +++ b/third_party/blink/web_tests/platform/win7/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/month-picker-appearance-step-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/week-picker-appearance-expected.png b/third_party/blink/web_tests/platform/win7/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/week-picker-appearance-expected.png new file mode 100644 index 0000000..969d84e --- /dev/null +++ b/third_party/blink/web_tests/platform/win7/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/week-picker-appearance-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/week-picker-appearance-step-expected.png b/third_party/blink/web_tests/platform/win7/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/week-picker-appearance-step-expected.png new file mode 100644 index 0000000..0e53db2 --- /dev/null +++ b/third_party/blink/web_tests/platform/win7/virtual/form-controls-refresh-disabled/fast/forms/calendar-picker/week-picker-appearance-step-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/form-controls-refresh-disabled/fast/forms/datetimelocal/datetimelocal-appearance-l10n-expected.png b/third_party/blink/web_tests/platform/win7/virtual/form-controls-refresh-disabled/fast/forms/datetimelocal/datetimelocal-appearance-l10n-expected.png new file mode 100644 index 0000000..1b8eda27d --- /dev/null +++ b/third_party/blink/web_tests/platform/win7/virtual/form-controls-refresh-disabled/fast/forms/datetimelocal/datetimelocal-appearance-l10n-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/form-controls-refresh-disabled/fast/forms/month/month-appearance-basic-expected.png b/third_party/blink/web_tests/platform/win7/virtual/form-controls-refresh-disabled/fast/forms/month/month-appearance-basic-expected.png new file mode 100644 index 0000000..de69484 --- /dev/null +++ b/third_party/blink/web_tests/platform/win7/virtual/form-controls-refresh-disabled/fast/forms/month/month-appearance-basic-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/form-controls-refresh-disabled/fast/forms/month/month-appearance-l10n-expected.png b/third_party/blink/web_tests/platform/win7/virtual/form-controls-refresh-disabled/fast/forms/month/month-appearance-l10n-expected.png new file mode 100644 index 0000000..aa418a5 --- /dev/null +++ b/third_party/blink/web_tests/platform/win7/virtual/form-controls-refresh-disabled/fast/forms/month/month-appearance-l10n-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/form-controls-refresh-disabled/fast/forms/select/menulist-appearance-rtl-expected.png b/third_party/blink/web_tests/platform/win7/virtual/form-controls-refresh-disabled/fast/forms/select/menulist-appearance-rtl-expected.png new file mode 100644 index 0000000..b5bdb69 --- /dev/null +++ b/third_party/blink/web_tests/platform/win7/virtual/form-controls-refresh-disabled/fast/forms/select/menulist-appearance-rtl-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/form-controls-refresh-disabled/fast/forms/suggestion-picker/month-suggestion-picker-appearance-expected.png b/third_party/blink/web_tests/platform/win7/virtual/form-controls-refresh-disabled/fast/forms/suggestion-picker/month-suggestion-picker-appearance-expected.png new file mode 100644 index 0000000..4d006c1 --- /dev/null +++ b/third_party/blink/web_tests/platform/win7/virtual/form-controls-refresh-disabled/fast/forms/suggestion-picker/month-suggestion-picker-appearance-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/form-controls-refresh-disabled/fast/forms/suggestion-picker/month-suggestion-picker-appearance-rtl-expected.png b/third_party/blink/web_tests/platform/win7/virtual/form-controls-refresh-disabled/fast/forms/suggestion-picker/month-suggestion-picker-appearance-rtl-expected.png new file mode 100644 index 0000000..61751f5 --- /dev/null +++ b/third_party/blink/web_tests/platform/win7/virtual/form-controls-refresh-disabled/fast/forms/suggestion-picker/month-suggestion-picker-appearance-rtl-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/form-controls-refresh-disabled/fast/forms/suggestion-picker/month-suggestion-picker-appearance-with-scroll-bar-expected.png b/third_party/blink/web_tests/platform/win7/virtual/form-controls-refresh-disabled/fast/forms/suggestion-picker/month-suggestion-picker-appearance-with-scroll-bar-expected.png new file mode 100644 index 0000000..d2a3dec --- /dev/null +++ b/third_party/blink/web_tests/platform/win7/virtual/form-controls-refresh-disabled/fast/forms/suggestion-picker/month-suggestion-picker-appearance-with-scroll-bar-expected.png Binary files differ
diff --git a/third_party/dpkg-shlibdeps/LICENSE b/third_party/dpkg-shlibdeps/LICENSE new file mode 100644 index 0000000..d511905 --- /dev/null +++ b/third_party/dpkg-shlibdeps/LICENSE
@@ -0,0 +1,339 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + <one line to give the program's name and a brief idea of what it does.> + Copyright (C) <year> <name of author> + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + <signature of Ty Coon>, 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License.
diff --git a/third_party/dpkg-shlibdeps/METADATA b/third_party/dpkg-shlibdeps/METADATA new file mode 100644 index 0000000..e20aab9 --- /dev/null +++ b/third_party/dpkg-shlibdeps/METADATA
@@ -0,0 +1,17 @@ +name: "dpkg" +description: + "package manager for Debian" + +third_party { + url { + type: HOMEPAGE + value: "https://wiki.debian.org/Teams/Dpkg" + } + url { + type: GIT + value: "https://git.dpkg.org/git/dpkg/dpkg.git" + } + version: "a0828e04289639f875cb924f8d1a65a634683b19" + last_upgrade_date { year: 2020 month: 1 day: 9 } + license_type: RESTRICTED +}
diff --git a/third_party/dpkg-shlibdeps/OWNERS b/third_party/dpkg-shlibdeps/OWNERS new file mode 100644 index 0000000..65ca995 --- /dev/null +++ b/third_party/dpkg-shlibdeps/OWNERS
@@ -0,0 +1,4 @@ +thestig@chromium.org +thomasanderson@chromium.org + +# COMPONENT: Tools
diff --git a/third_party/dpkg-shlibdeps/README.chromium b/third_party/dpkg-shlibdeps/README.chromium new file mode 100644 index 0000000..937b252 --- /dev/null +++ b/third_party/dpkg-shlibdeps/README.chromium
@@ -0,0 +1,29 @@ +Name: dpkg-shlibdeps +URL: http://anonscm.debian.org/cgit/dpkg/dpkg.git +Version: a0828e04289639f875cb924f8d1a65a634683b19 +License: GPL v2 +License File: NOT_SHIPPED +Security Critical: no + +Description: +Generate shared library substvar dependencies. This directory can be removed +if/when the --ignore-weak-undefined option becomes available on the buildbots. + +Updating: +Copy dpkg/COPYING and dpkg/scripts/dpkg-shlibdeps.pl to +third_party/dpkg-shlibdeps/. + +Patches: +- 0001-dkpg-shlibdeps-add-option-to-ignore-weak-undefined-symbols.patch + Prevents weak undefined symbols from introducing hard dependencies. Upstream + merge request: + https://salsa.debian.org/thomasanderson-guest/dpkg/merge_requests/1 +- 0002-fix-compatibility-for-chromium.patch + dpkg-shlibdeps.pl comes from dpkg-dev, which depends on libdpkg-perl that + provides perl modules for eg. locating shared libraries and getting a list of + symbols from them. The API of libdpkg-perl is not stable (but changes very + infrequently), so in some cases dpkg-shlibdeps.pl will be expecting APIs that + do not exist on the system. This patch is a minimal set of changes that fixes + compatibility for supported build environments (Ubuntu Xenial and later). + Specifically, provide the debug() function, and don't expect exec_abi to be a + member of Dpkg::Shlibs::Objdump::Object.
diff --git a/third_party/dpkg-shlibdeps/dpkg-shlibdeps.pl b/third_party/dpkg-shlibdeps/dpkg-shlibdeps.pl new file mode 100755 index 0000000..b40667f --- /dev/null +++ b/third_party/dpkg-shlibdeps/dpkg-shlibdeps.pl
@@ -0,0 +1,938 @@ +#!/usr/bin/perl +# +# dpkg-shlibdeps +# +# Copyright © 1996 Ian Jackson +# Copyright © 2000 Wichert Akkerman +# Copyright © 2006 Frank Lichtenheld +# Copyright © 2006-2010,2012-2015 Guillem Jover <guillem@debian.org> +# Copyright © 2007, 2016 Raphaël Hertzog <hertzog@debian.org> +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <https://www.gnu.org/licenses/>. + +use warnings; +use feature qw(state); + +use List::Util qw(any none); +use Cwd qw(realpath); +use File::Basename qw(dirname); + +use Dpkg (); +use Dpkg::Gettext; +use Dpkg::ErrorHandling; +use Dpkg::Path qw(relative_to_pkg_root guess_pkg_root_dir + check_files_are_the_same get_control_path); +use Dpkg::Version; +use Dpkg::Shlibs qw(find_library get_library_paths); +use Dpkg::Shlibs::Objdump; +use Dpkg::Shlibs::SymbolFile; +use Dpkg::Substvars; +use Dpkg::Arch qw(get_host_arch); +use Dpkg::Deps; +use Dpkg::Control::Info; +use Dpkg::Control::Fields; + + +use constant { + WARN_SYM_NOT_FOUND => 1, + WARN_DEP_AVOIDABLE => 2, + WARN_NOT_NEEDED => 4, +}; + +# By increasing importance +my @depfields = qw(Suggests Recommends Depends Pre-Depends); +my $i = 0; my %depstrength = map { $_ => $i++ } @depfields; + +textdomain('dpkg-dev'); + +my $admindir = $Dpkg::ADMINDIR; +my $shlibsoverride = "$Dpkg::CONFDIR/shlibs.override"; +my $shlibsdefault = "$Dpkg::CONFDIR/shlibs.default"; +my $shlibslocal = 'debian/shlibs.local'; +my $packagetype = 'deb'; +my $dependencyfield = 'Depends'; +my $varlistfile = 'debian/substvars'; +my $varlistfilenew; +my $varnameprefix = 'shlibs'; +my $ignore_missing_info = 0; +my $ignore_weak_undefined = 0; +my $warnings = WARN_SYM_NOT_FOUND | WARN_DEP_AVOIDABLE; +my $debug = 0; +my @exclude = (); +my @pkg_dir_to_search = (); +my @pkg_dir_to_ignore = (); +my $host_arch = get_host_arch(); + +my (@pkg_shlibs, @pkg_symbols, @pkg_root_dirs); + +my ($stdout, %exec); +foreach (@ARGV) { + if (m/^-T(.*)$/) { + $varlistfile = $1; + } elsif (m/^-p(\w[-:0-9A-Za-z]*)$/) { + $varnameprefix = $1; + } elsif (m/^-L(.*)$/) { + $shlibslocal = $1; + } elsif (m/^-l(.*)$/) { + Dpkg::Shlibs::add_library_dir($1); + } elsif (m/^-S(.*)$/) { + push @pkg_dir_to_search, $1; + } elsif (m/^-I(.*)$/) { + push @pkg_dir_to_ignore, $1; + } elsif (m/^-O$/) { + $stdout = 1; + } elsif (m/^-O(.+)$/) { + $varlistfile = $1; + } elsif (m/^-(?:\?|-help)$/) { + usage(); exit(0); + } elsif (m/^--version$/) { + version(); exit(0); + } elsif (m/^--admindir=(.*)$/) { + $admindir = $1; + if (not -d $admindir) { + error(g_("administrative directory '%s' does not exist"), $admindir); + } + $ENV{DPKG_ADMINDIR} = $admindir; + } elsif (m/^-d(.*)$/) { + $dependencyfield = field_capitalize($1); + if (not defined $depstrength{$dependencyfield}) { + warning(g_("unrecognized dependency field '%s'"), $dependencyfield); + } + } elsif (m/^-e(.*)$/) { + if (exists $exec{$1}) { + # Affect the binary to the most important field + if ($depstrength{$dependencyfield} > $depstrength{$exec{$1}}) { + $exec{$1} = $dependencyfield; + } + } else { + $exec{$1} = $dependencyfield; + } + } elsif (m/^--ignore-missing-info$/) { + $ignore_missing_info = 1; + } elsif (m/^--ignore-weak-undefined$/) { + $ignore_weak_undefined = 1; + } elsif (m/^--warnings=(\d+)$/) { + $warnings = $1; + } elsif (m/^-t(.*)$/) { + $packagetype = $1; + } elsif (m/^-v$/) { + $debug++; + } elsif (m/^-x(.*)$/) { + push @exclude, $1; + } elsif (m/^-/) { + usageerr(g_("unknown option '%s'"), $_); + } else { + if (exists $exec{$_}) { + # Affect the binary to the most important field + if ($depstrength{$dependencyfield} > $depstrength{$exec{$_}}) { + $exec{$_} = $dependencyfield; + } + } else { + $exec{$_} = $dependencyfield; + } + } +} +usageerr(g_('need at least one executable')) unless scalar keys %exec; + +report_options(debug_level => $debug); + +sub ignore_pkgdir { + my $path = shift; + return any { $path =~ /^\Q$_\E/ } @pkg_dir_to_ignore; +} + +sub debug { + my $level = shift; + print @_ if $level <= $debug; +} + +if (-d 'debian') { + push @pkg_symbols, grep { !ignore_pkgdir($_) } glob 'debian/*/DEBIAN/symbols'; + push @pkg_shlibs, grep { !ignore_pkgdir($_) } glob 'debian/*/DEBIAN/shlibs'; + my %uniq = map { guess_pkg_root_dir($_) => 1 } (@pkg_symbols, @pkg_shlibs); + push @pkg_root_dirs, keys %uniq; +} + +my $control = Dpkg::Control::Info->new(); +my $fields = $control->get_source(); +my $bd_value = deps_concat($fields->{'Build-Depends'}, $fields->{'Build-Depends-Arch'}); +my $build_deps = deps_parse($bd_value, build_dep => 1, reduce_restrictions => 1); +error(g_('error occurred while parsing %s'), 'Build-Depends/Build-Depends-Arch') + unless defined $build_deps; + +my %dependencies; + +# Statistics on soname seen in the whole run (with multiple analysis of +# binaries) +my %global_soname_notfound; +my %global_soname_used; +my %global_soname_needed; + +# Symfile and objdump caches +my %symfile_cache; +my %objdump_cache; +my %symfile_has_soname_cache; + +# Used to count errors due to missing libraries +my $error_count = 0; + +my $cur_field; +foreach my $file (keys %exec) { + $cur_field = $exec{$file}; + debug(1, ">> Scanning $file (for $cur_field field)"); + + my $obj = Dpkg::Shlibs::Objdump::Object->new($file); + my @sonames = $obj->get_needed_libraries; + + # Load symbols files for all needed libraries (identified by SONAME) + my %libfiles; + my %altlibfiles; + my %soname_libs; + my %soname_notfound; + my %alt_soname; + foreach my $soname (@sonames) { + my @libs = my_find_library($soname, $obj->{RPATH}, $obj->{exec_abi} || $obj->{format}, $file); + unless (scalar @libs) { + $soname_notfound{$soname} = 1; + $global_soname_notfound{$soname} = 1; + my $msg = g_('cannot find library %s needed by %s (ELF ' . + "format: '%s' abi: '%s'; RPATH: '%s')"); + if (scalar(split_soname($soname))) { + errormsg($msg, $soname, $file, $obj->{format}, join(':', @{$obj->{RPATH}})); + $error_count++; + } else { + warning($msg, $soname, $file, $obj->{format}, join(':', @{$obj->{RPATH}})); + } + next; + } + + # Track shared libraries for a given SONAME. + push @{$soname_libs{$soname}}, @libs; + + # Track shared libraries for package mapping. + foreach my $lib (@libs) { + $libfiles{$lib} = $soname; + my $reallib = realpath($lib); + if ($reallib ne $lib) { + $altlibfiles{$reallib} = $soname; + } + debug(1, "Library $soname found in $lib"); + } + } + my $file2pkg = find_packages(keys %libfiles, keys %altlibfiles); + my $symfile = Dpkg::Shlibs::SymbolFile->new(); + my $dumplibs_wo_symfile = Dpkg::Shlibs::Objdump->new(); + SONAME: foreach my $soname (@sonames) { + # Select the first good entry from the ordered list that we got from + # find_library(), and skip to the next SONAME. + + foreach my $lib (@{$soname_libs{$soname}}) { + if (none { $_ ne '' } @{$file2pkg->{$lib}}) { + # The path of the library as calculated is not the + # official path of a packaged file, try to fallback on + # the realpath() first, maybe this one is part of a package + my $reallib = realpath($lib); + if (exists $file2pkg->{$reallib}) { + $file2pkg->{$lib} = $file2pkg->{$reallib}; + } + } + if (none { $_ ne '' } @{$file2pkg->{$lib}}) { + # If the library is really not available in an installed package, + # it's because it's in the process of being built + # Empty package name will lead to consideration of symbols + # file from the package being built only + $file2pkg->{$lib} = ['']; + debug(1, "No associated package found for $lib"); + } + + # Load symbols/shlibs files from packages providing libraries + my $missing_wanted_shlibs_info = 0; + foreach my $pkg (@{$file2pkg->{$lib}}) { + my $symfile_path; + my $haslocaldep = 0; + if (-e $shlibslocal and + defined(extract_from_shlibs($soname, $shlibslocal))) + { + $haslocaldep = 1; + } + if ($packagetype eq 'deb' and not $haslocaldep) { + # Use fine-grained dependencies only on real deb + # and only if the dependency is not provided by shlibs.local + $symfile_path = find_symbols_file($pkg, $soname, $lib); + } + if (defined($symfile_path)) { + # Load symbol information + debug(1, "Using symbols file $symfile_path for $soname"); + $symfile_cache{$symfile_path} //= + Dpkg::Shlibs::SymbolFile->new(file => $symfile_path); + $symfile->merge_object_from_symfile($symfile_cache{$symfile_path}, $soname); + } + if (defined($symfile_path) && $symfile->has_object($soname)) { + # Initialize dependencies with the smallest minimal version + # of all symbols (unversioned dependency is not ok as the + # library might not have always been available in the + # package and we really need it) + my $dep = $symfile->get_dependency($soname); + my $minver = $symfile->get_smallest_version($soname) || ''; + update_dependency_version($dep, $minver); + debug(2, " Minimal version of ($dep) initialized with ($minver)"); + + # Found a symbols file for the SONAME. + next SONAME; + } else { + # No symbol file found, fall back to standard shlibs + debug(1, "Using shlibs+objdump for $soname (file $lib)"); + $objdump_cache{$lib} //= Dpkg::Shlibs::Objdump::Object->new($lib); + my $libobj = $objdump_cache{$lib}; + my $id = $dumplibs_wo_symfile->add_object($libobj); + if (($id ne $soname) and ($id ne $lib)) { + warning(g_('%s has an unexpected SONAME (%s)'), $lib, $id); + $alt_soname{$id} = $soname; + } + + # Only try to generate a dependency for libraries with a SONAME + if (not $libobj->is_public_library()) { + debug(1, "Skipping shlibs+objdump info for private library $lib"); + next; + } + + # If we found a shlibs file for the SONAME, skip to the next. + next SONAME if add_shlibs_dep($soname, $pkg, $lib); + + $missing_wanted_shlibs_info = 1; + + debug(1, "No shlibs+objdump info available, trying next package for $lib"); + } + } + + next if not $missing_wanted_shlibs_info; + + # We will only reach this point, if we have found no symbols nor + # shlibs files for the given SONAME. + + # This failure is fairly new, try to be kind by + # ignoring as many cases that can be safely ignored + my $ignore = 0; + # 1/ when the lib and the binary are in the same + # package + my $root_file = guess_pkg_root_dir($file); + my $root_lib = guess_pkg_root_dir($lib); + $ignore++ if defined $root_file and defined $root_lib + and check_files_are_the_same($root_file, $root_lib); + # 2/ when the lib is not versioned and can't be + # handled by shlibs + $ignore++ unless scalar split_soname($soname); + # 3/ when we have been asked to do so + $ignore++ if $ignore_missing_info; + error(g_('no dependency information found for %s ' . + "(used by %s)\n" . + 'Hint: check if the library actually comes ' . + 'from a package.'), $lib, $file) + unless $ignore; + } + } + + # Scan all undefined symbols of the binary and resolve to a + # dependency + my %soname_used; + foreach my $soname (@sonames) { + # Initialize statistics + $soname_used{$soname} = 0; + $global_soname_used{$soname} //= 0; + if (exists $global_soname_needed{$soname}) { + push @{$global_soname_needed{$soname}}, $file; + } else { + $global_soname_needed{$soname} = [ $file ]; + } + } + my $nb_warnings = 0; + my $nb_skipped_warnings = 0; + # Disable warnings about missing symbols when we have not been able to + # find all libs + my $disable_warnings = scalar(keys(%soname_notfound)); + my $in_public_dir = 1; + if (my $relname = relative_to_pkg_root($file)) { + my $parent_dir = '/' . dirname($relname); + $in_public_dir = any { $parent_dir eq $_ } get_library_paths(); + } else { + warning(g_('binaries to analyze should already be ' . + "installed in their package's directory")); + } + debug(2, 'Analyzing all undefined symbols'); + foreach my $sym ($obj->get_undefined_dynamic_symbols()) { + next if $ignore_weak_undefined && $sym->{weak}; + my $name = $sym->{name}; + if ($sym->{version}) { + $name .= '@' . "$sym->{version}"; + } else { + $name .= '@' . 'Base'; + } + debug(2, " Looking up symbol $name"); + my %symdep = $symfile->lookup_symbol($name, \@sonames); + if (keys %symdep) { + my $depends = $symfile->get_dependency($symdep{soname}, + $symdep{symbol}{dep_id}); + debug(2, " Found in symbols file of $symdep{soname} (minver: " . + "$symdep{symbol}{minver}, dep: $depends)"); + $soname_used{$symdep{soname}}++; + $global_soname_used{$symdep{soname}}++; + if (exists $alt_soname{$symdep{soname}}) { + # Also count usage on alternate soname + $soname_used{$alt_soname{$symdep{soname}}}++; + $global_soname_used{$alt_soname{$symdep{soname}}}++; + } + update_dependency_version($depends, $symdep{symbol}{minver}); + } else { + my $syminfo = $dumplibs_wo_symfile->locate_symbol($name); + if (not defined($syminfo)) { + debug(2, ' Not found'); + next unless ($warnings & WARN_SYM_NOT_FOUND); + next if $disable_warnings; + # Complain about missing symbols only for executables + # and public libraries + if ($obj->is_executable() or $obj->is_public_library()) { + my $print_name = $name; + # Drop the default suffix for readability + $print_name =~ s/\@Base$//; + unless ($sym->{weak}) { + if ($debug or ($in_public_dir and $nb_warnings < 10) + or (not $in_public_dir and $nb_warnings < 1)) + { + if ($in_public_dir) { + warning(g_('symbol %s used by %s found in none of the ' . + 'libraries'), $print_name, $file); + } else { + warning(g_('%s contains an unresolvable reference to ' . + "symbol %s: it's probably a plugin"), + $file, $print_name); + } + $nb_warnings++; + } else { + $nb_skipped_warnings++; + } + } + } + } else { + debug(2, " Found in $syminfo->{soname} ($syminfo->{objid})"); + if (exists $alt_soname{$syminfo->{soname}}) { + # Also count usage on alternate soname + $soname_used{$alt_soname{$syminfo->{soname}}}++; + $global_soname_used{$alt_soname{$syminfo->{soname}}}++; + } + $soname_used{$syminfo->{soname}}++; + $global_soname_used{$syminfo->{soname}}++; + } + } + } + warning(P_('%d similar warning has been skipped (use -v to see it)', + '%d other similar warnings have been skipped (use -v to see ' . + 'them all)', $nb_skipped_warnings), $nb_skipped_warnings) + if $nb_skipped_warnings; + foreach my $soname (@sonames) { + # Adjust minimal version of dependencies with information + # extracted from build-dependencies + my $dev_pkgs = $symfile->get_field($soname, 'Build-Depends-Packages') // + $symfile->get_field($soname, 'Build-Depends-Package'); + foreach my $dev_pkg (split /[,\s]+/, $dev_pkgs // '') { + debug(1, "Updating dependencies of $soname with build-dependencies"); + my $minver = get_min_version_from_deps($build_deps, $dev_pkg); + if (defined $minver) { + foreach my $dep ($symfile->get_dependencies($soname)) { + update_dependency_version($dep, $minver, 1); + debug(1, " Minimal version of $dep updated with $minver"); + } + } else { + debug(1, " No minimal version found in $dev_pkg build-dependency"); + } + } + + # Warn about un-NEEDED libraries + unless ($soname_notfound{$soname} or $soname_used{$soname}) { + # Ignore warning for libm.so.6 if also linked against libstdc++ + next if ($soname =~ /^libm\.so\.\d+$/ and + any { m/^libstdc\+\+\.so\.\d+/ } @sonames); + next unless ($warnings & WARN_NOT_NEEDED); + warning(g_('%s should not be linked against %s (it uses none of ' . + "the library's symbols)"), $file, $soname); + } + } +} + +# Warn of unneeded libraries at the "package" level (i.e. over all +# binaries that we have inspected) +foreach my $soname (keys %global_soname_needed) { + unless ($global_soname_notfound{$soname} or $global_soname_used{$soname}) { + next if ($soname =~ /^libm\.so\.\d+$/ and + any { m/^libstdc\+\+\.so\.\d+/ } keys %global_soname_needed); + next unless ($warnings & WARN_DEP_AVOIDABLE); + warning(P_('package could avoid a useless dependency if %s was not ' . + "linked against %s (it uses none of the library's symbols)", + 'package could avoid a useless dependency if %s were not ' . + "linked against %s (they use none of the library's symbols)", + scalar @{$global_soname_needed{$soname}}), + join(' ', @{$global_soname_needed{$soname}}), $soname); + } +} + +# Quit now if any missing libraries +if ($error_count >= 1) { + my $note = g_('Note: libraries are not searched in other binary packages ' . + "that do not have any shlibs or symbols file.\n" . + 'To help dpkg-shlibdeps find private libraries, you might ' . + 'need to use -l.'); + error(P_('cannot continue due to the error above', + 'cannot continue due to the errors listed above', + $error_count) . "\n" . $note); +} + +# Open substvars file + +my $substvars = Dpkg::Substvars->new(); +if ($stdout) { + $varlistfilenew = '-'; +} else { + $substvars->load($varlistfile) if -e $varlistfile; + $substvars->filter(remove => sub { $_[0] =~ m/^\Q$varnameprefix\E:/ }); + + $varlistfilenew = "$varlistfile.new"; +} + +# Write out the shlibs substvars +my %depseen; + +sub filter_deps { + my ($dep, $field) = @_; + # Skip dependencies on excluded packages + foreach my $exc (@exclude) { + return 0 if $dep =~ /^\s*\Q$exc\E\b/; + } + # Don't include dependencies if they are already + # mentioned in a higher priority field + if (not exists($depseen{$dep})) { + $depseen{$dep} = $dependencies{$field}{$dep}; + return 1; + } else { + # Since dependencies can be versioned, we have to + # verify if the dependency is stronger than the + # previously seen one + my $stronger; + if ($depseen{$dep} eq $dependencies{$field}{$dep}) { + # If both versions are the same (possibly unversioned) + $stronger = 0; + } elsif ($dependencies{$field}{$dep} eq '') { + $stronger = 0; # If the dep is unversioned + } elsif ($depseen{$dep} eq '') { + $stronger = 1; # If the dep seen is unversioned + } elsif (version_compare_relation($depseen{$dep}, REL_GT, + $dependencies{$field}{$dep})) { + # The version of the dep seen is stronger... + $stronger = 0; + } else { + $stronger = 1; + } + $depseen{$dep} = $dependencies{$field}{$dep} if $stronger; + return $stronger; + } +} + +foreach my $field (reverse @depfields) { + my $dep = ''; + if (exists $dependencies{$field} and scalar keys %{$dependencies{$field}}) { + $dep = join ', ', + map { + # Translate dependency templates into real dependencies + my $templ = $_; + if ($dependencies{$field}{$templ}->is_valid() and + $dependencies{$field}{$templ}->as_string()) { + $templ =~ s/#MINVER#/(>= $dependencies{$field}{$templ})/g; + } else { + $templ =~ s/#MINVER#//g; + } + $templ =~ s/\s+/ /g; + $templ; + } grep { + filter_deps($_, $field) + } keys %{$dependencies{$field}}; + } + if ($dep) { + my $obj = deps_parse($dep); + error(g_('invalid dependency got generated: %s'), $dep) unless defined $obj; + $obj->sort(); + $substvars->set_as_used("$varnameprefix:$field", "$obj"); + } +} + +$substvars->save($varlistfilenew); + +# Replace old file by new one +if (!$stdout) { + rename $varlistfilenew, $varlistfile + or syserr(g_("install new varlist file '%s'"), $varlistfile); +} + +## +## Functions +## + +sub version { + printf g_("Debian %s version %s.\n"), $Dpkg::PROGNAME, $Dpkg::PROGVERSION; + + printf g_(' +This is free software; see the GNU General Public License version 2 or +later for copying conditions. There is NO warranty. +'); +} + +sub usage { + printf g_( +'Usage: %s [<option>...] <executable>|-e<executable> [<option>...]') + . "\n\n" . g_( +"Positional options (order is significant): + <executable> include dependencies for <executable>, + -e<executable> (use -e if <executable> starts with '-') + -d<dependency-field> next executable(s) set shlibs:<dependency-field>.") + . "\n\n" . g_( +"Options: + -l<library-dir> add directory to private shared library search list. + -p<varname-prefix> set <varname-prefix>:* instead of shlibs:*. + -O[<file>] write variable settings to stdout (or <file>). + -L<local-shlibs-file> shlibs override file, not debian/shlibs.local. + -T<substvars-file> update variables here, not debian/substvars. + -t<type> set package type (default is deb). + -x<package> exclude package from the generated dependencies. + -S<package-build-dir> search needed libraries in the given + package build directory first. + -I<package-build-dir> ignore needed libraries, shlibs and symbols files + in the given build directory. + -v enable verbose mode (can be used multiple times). + --ignore-missing-info don't fail if dependency information can't be found. + --ignore-weak-undefined only allow strong undefined symbols to introduce + dependencies. + --warnings=<value> define set of active warnings (see manual page). + --admindir=<directory> change the administrative directory. + -?, --help show this help message. + --version show the version.") + . "\n\n" . g_( +'Dependency fields recognized are: + %s +'), $Dpkg::PROGNAME, join('/', @depfields); +} + +sub get_min_version_from_deps { + my ($dep, $pkg) = @_; + if ($dep->isa('Dpkg::Deps::Simple')) { + if (($dep->{package} eq $pkg) && + defined($dep->{relation}) && + (($dep->{relation} eq REL_GE) || + ($dep->{relation} eq REL_GT))) + { + return $dep->{version}; + } + return; + } else { + my $res; + foreach my $subdep ($dep->get_deps()) { + my $minver = get_min_version_from_deps($subdep, $pkg); + next if not defined $minver; + if (defined $res) { + if (version_compare_relation($minver, REL_GT, $res)) { + $res = $minver; + } + } else { + $res = $minver; + } + } + return $res; + } +} + +sub update_dependency_version { + my ($dep, $minver, $existing_only) = @_; + return if not defined($minver); + $minver = Dpkg::Version->new($minver); + foreach my $subdep (split /\s*,\s*/, $dep) { + if (exists $dependencies{$cur_field}{$subdep} and + defined($dependencies{$cur_field}{$subdep})) + { + if ($dependencies{$cur_field}{$subdep} eq '' or $minver ne '' and + version_compare_relation($minver, REL_GT, + $dependencies{$cur_field}{$subdep})) + { + $dependencies{$cur_field}{$subdep} = $minver; + } + } elsif (!$existing_only) { + $dependencies{$cur_field}{$subdep} = $minver; + } + } +} + +sub add_shlibs_dep { + my ($soname, $pkg, $libfile) = @_; + my @shlibs = ($shlibslocal, $shlibsoverride); + if ($pkg eq '') { + # If the file is not packaged, try to find out the shlibs file in + # the package being built where the lib has been found + my $pkg_root = guess_pkg_root_dir($libfile); + if (defined $pkg_root) { + push @shlibs, "$pkg_root/DEBIAN/shlibs"; + } + # Fallback to other shlibs files but it shouldn't be necessary + push @shlibs, @pkg_shlibs; + } else { + my $control_file = get_control_path($pkg, 'shlibs'); + push @shlibs, $control_file if defined $control_file; + } + push @shlibs, $shlibsdefault; + debug(1, " Looking up shlibs dependency of $soname provided by '$pkg'"); + foreach my $file (@shlibs) { + next if not -e $file; + my $dep = extract_from_shlibs($soname, $file); + if (defined($dep)) { + debug(1, " Found $dep in $file"); + foreach (split(/,\s*/, $dep)) { + # Note: the value is empty for shlibs based dependency + # symbol based dependency will put a valid version as value + $dependencies{$cur_field}{$_} = Dpkg::Version->new(''); + } + return 1; + } + } + debug(1, ' Found nothing'); + return 0; +} + +sub split_soname { + my $soname = shift; + + if ($soname =~ /^(.*)\.so\.(.*)$/) { + # Shared library with stable <name>.so.<version> format. + return wantarray ? ($1, $2) : 1; + } elsif ($soname =~ /^(.*)-(\d.*)\.so$/) { + # Shared library/module with unstable <name>-<version>.so format. + return wantarray ? ($1, $2) : 1; + } else { + # Something else. + return wantarray ? () : 0; + } +} + +sub extract_from_shlibs { + my ($soname, $shlibfile) = @_; + + my $shlibs_re = qr{ + ^\s* + (?:(\S+):\s+)? # Optional type + (\S+)\s+ # Library + (\S+) # Version + (?: + \s+ + (\S.*\S) # Dependencies + )? + \s*$ + }x; + + # Split soname in name/version + my ($libname, $libversion) = split_soname($soname); + unless (defined $libname) { + warning(g_("can't extract name and version from library name '%s'"), + $soname); + return; + } + # Open shlibs file + open(my $shlibs_fh, '<', $shlibfile) + or syserr(g_("unable to open shared libs info file '%s'"), $shlibfile); + my $dep; + while (<$shlibs_fh>) { + s/\s*\n$//; + next if m/^\#/; + if (!m/$shlibs_re/) { + warning(g_("shared libs info file '%s' line %d: bad line '%s'"), + $shlibfile, $., $_); + next; + } + my $depread = $4 // ''; + if (($libname eq $2) && ($libversion eq $3)) { + # Define dep and end here if the package type explicitly + # matches. Otherwise if the packagetype is not specified, use + # the dep only as a default that can be overridden by a later + # line + if (defined($1)) { + if ($1 eq $packagetype) { + $dep = $depread; + last; + } + } else { + $dep //= $depread; + } + } + } + close($shlibs_fh); + return $dep; +} + +sub find_symbols_file { + my ($pkg, $soname, $libfile) = @_; + my @files; + if ($pkg eq '') { + # If the file is not packaged, try to find out the symbols file in + # the package being built where the lib has been found + my $pkg_root = guess_pkg_root_dir($libfile); + if (defined $pkg_root) { + push @files, "$pkg_root/DEBIAN/symbols"; + } + # Fallback to other symbols files but it shouldn't be necessary + push @files, @pkg_symbols; + } else { + push @files, "$Dpkg::CONFDIR/symbols/$pkg.symbols.$host_arch", + "$Dpkg::CONFDIR/symbols/$pkg.symbols"; + + state %control_file_cache; + if (not exists $control_file_cache{$pkg}) { + $control_file_cache{$pkg} = get_control_path($pkg, 'symbols'); + } + my $control_file = $control_file_cache{$pkg}; + push @files, $control_file if defined $control_file; + } + + foreach my $file (@files) { + if (-e $file and symfile_has_soname($file, $soname)) { + return $file; + } + } + return; +} + +sub symfile_has_soname { + my ($file, $soname) = @_; + + if (exists $symfile_has_soname_cache{$file}{$soname}) { + return $symfile_has_soname_cache{$file}{$soname}; + } + + open(my $symfile_fh, '<', $file) + or syserr(g_('cannot open file %s'), $file); + my $result = 0; + while (<$symfile_fh>) { + if (/^\Q$soname\E /) { + $result = 1; + last; + } + } + close($symfile_fh); + $symfile_has_soname_cache{$file}{$soname} = $result; + return $result; +} + +# find_library ($soname, \@rpath, $format) +sub my_find_library { + my ($lib, $rpath, $format, $execfile) = @_; + + # Create real RPATH in case $ORIGIN is used + # Note: ld.so also supports $PLATFORM and $LIB but they are + # used in real case (yet) + my $libdir = relative_to_pkg_root($execfile); + my $origin; + if (defined $libdir) { + $origin = "/$libdir"; + $origin =~ s{/+[^/]*$}{}; + } + my @RPATH = (); + foreach my $path (@{$rpath}) { + if ($path =~ /\$ORIGIN|\$\{ORIGIN\}/) { + if (defined $origin) { + $path =~ s/\$ORIGIN/$origin/g; + $path =~ s/\$\{ORIGIN\}/$origin/g; + } else { + warning(g_('$ORIGIN is used in RPATH of %s and the corresponding ' . + 'directory could not be identified due to lack of DEBIAN ' . + "sub-directory in the root of package's build tree"), $execfile); + } + } + push @RPATH, $path; + } + + # Look into the packages we're currently building in the following + # order: + # - package build tree of the binary which is analyzed + # - package build tree given on the command line (option -S) + # - other package build trees that contain either a shlibs or a + # symbols file + # But ignore: + # - package build tree given on the command line (option -I) + + my @builddirs; + my $pkg_root = guess_pkg_root_dir($execfile); + push @builddirs, $pkg_root if defined $pkg_root; + push @builddirs, @pkg_dir_to_search; + push @builddirs, @pkg_root_dirs; + my %dir_checked; + foreach my $builddir (@builddirs) { + next if defined($dir_checked{$builddir}); + next if ignore_pkgdir($builddir); + my @libs = find_library($lib, \@RPATH, $format, $builddir); + return @libs if scalar @libs; + $dir_checked{$builddir} = 1; + } + + # Fallback in the root directory if we have not found what we were + # looking for in the packages + return find_library($lib, \@RPATH, $format, ''); +} + +my %cached_pkgmatch = (); + +sub find_packages { + my @files; + my $pkgmatch = {}; + + foreach my $path (@_) { + if (exists $cached_pkgmatch{$path}) { + $pkgmatch->{$path} = $cached_pkgmatch{$path}; + } else { + push @files, $path; + $cached_pkgmatch{$path} = ['']; # placeholder to cache misses too. + $pkgmatch->{$path} = ['']; # might be replaced later on + } + } + return $pkgmatch unless scalar(@files); + + my $pid = open(my $dpkg_fh, '-|'); + syserr(g_('cannot fork for %s'), 'dpkg-query --search') unless defined $pid; + if (!$pid) { + # Child process running dpkg --search and discarding errors + close STDERR; + open STDERR, '>', '/dev/null' + or syserr(g_('cannot open file %s'), '/dev/null'); + $ENV{LC_ALL} = 'C'; + exec 'dpkg-query', '--search', '--', @files + or syserr(g_('unable to execute %s'), 'dpkg'); + } + while (<$dpkg_fh>) { + chomp; + if (m/^local diversion |^diversion by/) { + warning(g_('diversions involved - output may be incorrect')); + print { *STDERR } " $_\n" + or syserr(g_('write diversion info to stderr')); + } elsif (m/^([-a-z0-9+.:, ]+): (\/.*)$/) { + my ($pkgs, $path) = ($1, $2); + my $realpath = realpath($path); + $cached_pkgmatch{$path} = $pkgmatch->{$path} = [ split /, /, $pkgs ]; + $cached_pkgmatch{$realpath} = $pkgmatch->{$realpath} = [ split /, /, $pkgs ]; + } else { + warning(g_("unknown output from dpkg --search: '%s'"), $_); + } + } + close($dpkg_fh); + return $pkgmatch; +}
diff --git a/third_party/dpkg-shlibdeps/patches/0001-dkpg-shlibdeps-add-option-to-ignore-weak-undefined-symbols.patch b/third_party/dpkg-shlibdeps/patches/0001-dkpg-shlibdeps-add-option-to-ignore-weak-undefined-symbols.patch new file mode 100644 index 0000000..e01331f --- /dev/null +++ b/third_party/dpkg-shlibdeps/patches/0001-dkpg-shlibdeps-add-option-to-ignore-weak-undefined-symbols.patch
@@ -0,0 +1,71 @@ +From 59477dae6f2c68f0ebd9ccca18e737b67408bc11 Mon Sep 17 00:00:00 2001 +From: Tom Anderson <thomasanderson@chromium.org> +Date: Wed, 8 Jan 2020 10:55:20 -0800 +Subject: [PATCH 1/2] dkpg-shlibdeps: Add option to ignore weak undefined + symbols + +Weak undefined symbols can be used to test feature support. For example: + +__attribute__((weak)) uint64_t gbm_bo_get_modifier(struct gbm_bo* bo); +void foo(gbm_bo* bo) { + // gbm_create_device is a strong undefined symbol. The dynamic linker will + // fail if this is not available. + gbm_create_device(1234); + // gbm_bo_get_modifier is a weak undefined symbol. It will be NULL if it's + // not available. + if (gbm_bo_get_modifier) + gbm_bo_get_modifier(bo); +} + +However currently, dpkg-shlibdeps would consider gbm_bo_get_modifier in the +example to be a required symbol (and would increase the minimum required library +version), even though the intention is to use it only if it is available. + +To address this, this change skips weak undefined symbols when checking for +dependencies. Out of an abundance of caution, this behavior is guarded behind a +new flag: --ignore-weak-undefined. +--- + scripts/dpkg-shlibdeps.pl | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/scripts/dpkg-shlibdeps.pl b/scripts/dpkg-shlibdeps.pl +index 8142c85b4..e3d8c7200 100755 +--- a/scripts/dpkg-shlibdeps.pl ++++ b/scripts/dpkg-shlibdeps.pl +@@ -67,6 +67,7 @@ my $varlistfile = 'debian/substvars'; + my $varlistfilenew; + my $varnameprefix = 'shlibs'; + my $ignore_missing_info = 0; ++my $ignore_weak_undefined = 0; + my $warnings = WARN_SYM_NOT_FOUND | WARN_DEP_AVOIDABLE; + my $debug = 0; + my @exclude = (); +@@ -120,6 +121,8 @@ foreach (@ARGV) { + } + } elsif (m/^--ignore-missing-info$/) { + $ignore_missing_info = 1; ++ } elsif (m/^--ignore-weak-undefined$/) { ++ $ignore_weak_undefined = 1; + } elsif (m/^--warnings=(\d+)$/) { + $warnings = $1; + } elsif (m/^-t(.*)$/) { +@@ -365,6 +368,7 @@ foreach my $file (keys %exec) { + } + debug(2, 'Analyzing all undefined symbols'); + foreach my $sym ($obj->get_undefined_dynamic_symbols()) { ++ next if $ignore_weak_undefined && $sym->{weak}; + my $name = $sym->{name}; + if ($sym->{version}) { + $name .= '@' . "$sym->{version}"; +@@ -610,6 +614,8 @@ sub usage { + in the given build directory. + -v enable verbose mode (can be used multiple times). + --ignore-missing-info don't fail if dependency information can't be found. ++ --ignore-weak-undefined only allow strong undefined symbols to introduce ++ dependencies. + --warnings=<value> define set of active warnings (see manual page). + --admindir=<directory> change the administrative directory. + -?, --help show this help message. +-- +2.24.1.735.g03f4e72817-goog +
diff --git a/third_party/dpkg-shlibdeps/patches/0002-fix-compatibility-for-chromium.patch b/third_party/dpkg-shlibdeps/patches/0002-fix-compatibility-for-chromium.patch new file mode 100644 index 0000000..2b782a3 --- /dev/null +++ b/third_party/dpkg-shlibdeps/patches/0002-fix-compatibility-for-chromium.patch
@@ -0,0 +1,59 @@ +From 9f31bd9e8a69ee2821664e576d9fc7a957205230 Mon Sep 17 00:00:00 2001 +From: Tom Anderson <thomasanderson@chromium.org> +Date: Wed, 8 Jan 2020 12:11:56 -0800 +Subject: [PATCH 2/2] Fix compatibility for Chromium + +Add debug() function in case the system dpkg doesn't have it. +--- + scripts/dpkg-shlibdeps.pl | 13 ++++++++----- + 1 file changed, 8 insertions(+), 5 deletions(-) + +diff --git a/scripts/dpkg-shlibdeps.pl b/scripts/dpkg-shlibdeps.pl +index e3d8c7200..b40667f5a 100755 +--- a/scripts/dpkg-shlibdeps.pl ++++ b/scripts/dpkg-shlibdeps.pl +@@ -21,7 +21,6 @@ + # You should have received a copy of the GNU General Public License + # along with this program. If not, see <https://www.gnu.org/licenses/>. + +-use strict; + use warnings; + use feature qw(state); + +@@ -153,6 +152,11 @@ sub ignore_pkgdir { + return any { $path =~ /^\Q$_\E/ } @pkg_dir_to_ignore; + } + ++sub debug { ++ my $level = shift; ++ print @_ if $level <= $debug; ++} ++ + if (-d 'debian') { + push @pkg_symbols, grep { !ignore_pkgdir($_) } glob 'debian/*/DEBIAN/symbols'; + push @pkg_shlibs, grep { !ignore_pkgdir($_) } glob 'debian/*/DEBIAN/shlibs'; +@@ -198,18 +202,17 @@ foreach my $file (keys %exec) { + my %soname_notfound; + my %alt_soname; + foreach my $soname (@sonames) { +- my @libs = my_find_library($soname, $obj->{RPATH}, $obj->{exec_abi}, $file); ++ my @libs = my_find_library($soname, $obj->{RPATH}, $obj->{exec_abi} || $obj->{format}, $file); + unless (scalar @libs) { + $soname_notfound{$soname} = 1; + $global_soname_notfound{$soname} = 1; + my $msg = g_('cannot find library %s needed by %s (ELF ' . + "format: '%s' abi: '%s'; RPATH: '%s')"); +- my $exec_abi = unpack 'H*', $obj->{exec_abi}; + if (scalar(split_soname($soname))) { +- errormsg($msg, $soname, $file, $obj->{format}, $exec_abi, join(':', @{$obj->{RPATH}})); ++ errormsg($msg, $soname, $file, $obj->{format}, join(':', @{$obj->{RPATH}})); + $error_count++; + } else { +- warning($msg, $soname, $file, $obj->{format}, $exec_abi, join(':', @{$obj->{RPATH}})); ++ warning($msg, $soname, $file, $obj->{format}, join(':', @{$obj->{RPATH}})); + } + next; + } +-- +2.24.1.735.g03f4e72817-goog +
diff --git a/third_party/libwebp/README.chromium b/third_party/libwebp/README.chromium index 9f98e97..0a911d0 100644 --- a/third_party/libwebp/README.chromium +++ b/third_party/libwebp/README.chromium
@@ -1,14 +1,14 @@ Name: WebP image encoder/decoder Short Name: libwebp URL: http://developers.google.com/speed/webp -Version: v1.0.3 +Version: v1.1.0 License: BSD License File: LICENSE Security Critical: Yes Description: Source archive: - https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-1.0.3.tar.gz + https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-1.1.0.tar.gz WebP is an image format that does both lossy and lossless compression of digital photographic images. WebP consists of a codec based on VP8, that Google @@ -23,6 +23,3 @@ (crbug.com/654974) * Pulled in fuzzers from OSS-Fuzz https://github.com/google/oss-fuzz/tree/master/projects/libwebp - * cherry-pick af650c0b Fix a Wxor-used-as-pow false positive - * cherry-pick 0e48d889 bugfix: last alpha rows were incorrectly decoded - * cherry-pick b0e09e34 dec_neon: Fix build failure under some toolchains
diff --git a/third_party/libwebp/examples/cwebp.c b/third_party/libwebp/examples/cwebp.c index 30e7ec1e..aa96caf 100644 --- a/third_party/libwebp/examples/cwebp.c +++ b/third_party/libwebp/examples/cwebp.c
@@ -128,7 +128,8 @@ static void AllocExtraInfo(WebPPicture* const pic) { const int mb_w = (pic->width + 15) / 16; const int mb_h = (pic->height + 15) / 16; - pic->extra_info = (uint8_t*)malloc(mb_w * mb_h * sizeof(*pic->extra_info)); + pic->extra_info = + (uint8_t*)WebPMalloc(mb_w * mb_h * sizeof(*pic->extra_info)); } static void PrintByteCount(const int bytes[4], int total_size, @@ -640,10 +641,10 @@ //------------------------------------------------------------------------------ -int main(int argc, const char *argv[]) { +int main(int argc, const char* argv[]) { int return_value = -1; - const char *in_file = NULL, *out_file = NULL, *dump_file = NULL; - FILE *out = NULL; + const char* in_file = NULL, *out_file = NULL, *dump_file = NULL; + FILE* out = NULL; int c; int short_output = 0; int quiet = 0; @@ -1168,7 +1169,7 @@ Error: WebPMemoryWriterClear(&memory_writer); - free(picture.extra_info); + WebPFree(picture.extra_info); MetadataFree(&metadata); WebPPictureFree(&picture); WebPPictureFree(&original_picture);
diff --git a/third_party/libwebp/examples/dwebp.c b/third_party/libwebp/examples/dwebp.c index 7284f30..cc75cb77 100644 --- a/third_party/libwebp/examples/dwebp.c +++ b/third_party/libwebp/examples/dwebp.c
@@ -132,7 +132,7 @@ format == RGB_565) ? 2 : 4; uint32_t stride = bpp * w + 7; // <- just for exercising - external_buffer = (uint8_t*)malloc(stride * h); + external_buffer = (uint8_t*)WebPMalloc(stride * h); if (external_buffer == NULL) return NULL; output_buffer->u.RGBA.stride = stride; output_buffer->u.RGBA.size = stride * h; @@ -145,7 +145,7 @@ uint32_t total_size = stride * h * (has_alpha ? 2 : 1) + 2 * uv_stride * (h + 1) / 2; assert(format >= YUV && format <= YUVA); - external_buffer = (uint8_t*)malloc(total_size); + external_buffer = (uint8_t*)WebPMalloc(total_size); if (external_buffer == NULL) return NULL; tmp = external_buffer; output_buffer->u.YUVA.y = tmp; @@ -176,10 +176,10 @@ return external_buffer; } -int main(int argc, const char *argv[]) { +int main(int argc, const char* argv[]) { int ok = 0; - const char *in_file = NULL; - const char *out_file = NULL; + const char* in_file = NULL; + const char* out_file = NULL; WebPDecoderConfig config; WebPDecBuffer* const output_buffer = &config.output; @@ -412,8 +412,8 @@ } Exit: WebPFreeDecBuffer(output_buffer); - free((void*)external_buffer); - free((void*)data); + WebPFree((void*)external_buffer); + WebPFree((void*)data); FREE_WARGV_AND_RETURN(ok ? 0 : -1); }
diff --git a/third_party/libwebp/examples/example_util.c b/third_party/libwebp/examples/example_util.c index a1c84988..b0436541 100644 --- a/third_party/libwebp/examples/example_util.c +++ b/third_party/libwebp/examples/example_util.c
@@ -75,7 +75,7 @@ void ExUtilDeleteCommandLineArguments(CommandLineArguments* const args) { if (args != NULL) { if (args->own_argv_) { - free((void*)args->argv_); + WebPFree((void*)args->argv_); WebPDataClear(&args->argv_data_); } ResetCommandLineArguments(0, NULL, args); @@ -102,7 +102,7 @@ return 0; } args->own_argv_ = 1; - args->argv_ = (const char**)malloc(MAX_ARGC * sizeof(*args->argv_)); + args->argv_ = (const char**)WebPMalloc(MAX_ARGC * sizeof(*args->argv_)); if (args->argv_ == NULL) return 0; argc = 0;
diff --git a/third_party/libwebp/imageio/pnmdec.c b/third_party/libwebp/imageio/pnmdec.c index 8f5a4a00..208c2cf 100644 --- a/third_party/libwebp/imageio/pnmdec.c +++ b/third_party/libwebp/imageio/pnmdec.c
@@ -26,7 +26,7 @@ DEPTH_FLAG = 1 << 2, MAXVAL_FLAG = 1 << 3, TUPLE_FLAG = 1 << 4, - ALL_NEEDED_FLAGS = 0x1f + ALL_NEEDED_FLAGS = WIDTH_FLAG | HEIGHT_FLAG | DEPTH_FLAG | MAXVAL_FLAG } PNMFlags; typedef struct { @@ -74,6 +74,7 @@ char out[MAX_LINE_SIZE + 1]; size_t out_size; int tmp; + int expected_depth = -1; assert(info != NULL); while (1) { off = ReadLine(info->data, off, info->data_size, out, &out_size); @@ -95,13 +96,13 @@ info->seen_flags |= MAXVAL_FLAG; info->max_value = tmp; } else if (!strcmp(out, "TUPLTYPE RGB_ALPHA")) { - info->bytes_per_px = 4; + expected_depth = 4; info->seen_flags |= TUPLE_FLAG; } else if (!strcmp(out, "TUPLTYPE RGB")) { - info->bytes_per_px = 3; + expected_depth = 3; info->seen_flags |= TUPLE_FLAG; } else if (!strcmp(out, "TUPLTYPE GRAYSCALE")) { - info->bytes_per_px = 1; + expected_depth = 1; info->seen_flags |= TUPLE_FLAG; } else if (!strcmp(out, "ENDHDR")) { break; @@ -110,23 +111,24 @@ int i; if (out_size > 20) sprintf(out + 20 - strlen(kEllipsis), kEllipsis); for (i = 0; i < (int)strlen(out); ++i) { - if (!isprint(out[i])) out[i] = ' '; + // isprint() might trigger a "char-subscripts" warning if given a char. + if (!isprint((int)out[i])) out[i] = ' '; } fprintf(stderr, "PAM header error: unrecognized entry [%s]\n", out); return 0; } } - if (!(info->seen_flags & TUPLE_FLAG)) { - if (info->depth > 0 && info->depth <= 4 && info->depth != 2) { - info->seen_flags |= TUPLE_FLAG; - info->bytes_per_px = info->depth * (info->max_value > 255 ? 2 : 1); - } else { - fprintf(stderr, "PAM: invalid bitdepth (%d).\n", info->depth); - return 0; - } + if (!(info->seen_flags & ALL_NEEDED_FLAGS)) { + fprintf(stderr, "PAM header error: missing tags%s%s%s%s\n", + (info->seen_flags & WIDTH_FLAG) ? "" : " WIDTH", + (info->seen_flags & HEIGHT_FLAG) ? "" : " HEIGHT", + (info->seen_flags & DEPTH_FLAG) ? "" : " DEPTH", + (info->seen_flags & MAXVAL_FLAG) ? "" : " MAXVAL"); + return 0; } - if (info->seen_flags != ALL_NEEDED_FLAGS) { - fprintf(stderr, "PAM: incomplete header.\n"); + if (expected_depth != -1 && info->depth != expected_depth) { + fprintf(stderr, "PAM header error: expected DEPTH %d but got DEPTH %d\n", + expected_depth, info->depth); return 0; } return off; @@ -160,16 +162,15 @@ // finish initializing missing fields info->depth = (info->type == 5) ? 1 : 3; - info->bytes_per_px = info->depth * (info->max_value > 255 ? 2 : 1); } // perform some basic numerical validation if (info->width <= 0 || info->height <= 0 || info->type <= 0 || info->type >= 9 || info->depth <= 0 || info->depth == 2 || info->depth > 4 || - info->bytes_per_px < info->depth || info->max_value <= 0 || info->max_value >= 65536) { return 0; } + info->bytes_per_px = info->depth * (info->max_value > 255 ? 2 : 1); return off; }
diff --git a/third_party/libwebp/imageio/tiffdec.c b/third_party/libwebp/imageio/tiffdec.c index 5fd8b7fd..89819d4 100644 --- a/third_party/libwebp/imageio/tiffdec.c +++ b/third_party/libwebp/imageio/tiffdec.c
@@ -156,7 +156,7 @@ Metadata* const metadata) { MyData my_data = { data, (toff_t)data_size, 0 }; TIFF* tif; - uint32_t width, height; + uint32_t image_width, image_height, tile_width, tile_height; uint16_t samples_per_px = 0; uint16_t extra_samples = 0; uint16_t* extra_samples_ptr = NULL; @@ -189,15 +189,25 @@ } if (samples_per_px < 3 || samples_per_px > 4) goto End; // not supported - if (!(TIFFGetField(tif, TIFFTAG_IMAGEWIDTH, &width) && - TIFFGetField(tif, TIFFTAG_IMAGELENGTH, &height))) { + if (!(TIFFGetField(tif, TIFFTAG_IMAGEWIDTH, &image_width) && + TIFFGetField(tif, TIFFTAG_IMAGELENGTH, &image_height))) { fprintf(stderr, "Error! Cannot retrieve TIFF image dimensions.\n"); goto End; } - if (!ImgIoUtilCheckSizeArgumentsOverflow((uint64_t)width * height, + if (!ImgIoUtilCheckSizeArgumentsOverflow((uint64_t)image_width * image_height, sizeof(*raster))) { goto End; } + // According to spec, a tile can be bigger than the image. However it should + // be a multiple of 16 and not way too large, so check that it's not more than + // twice the image size, for dimensions above some arbitrary minimum 32. + if ((TIFFGetField(tif, TIFFTAG_TILEWIDTH, &tile_width) && + tile_width > 32 && tile_width / 2 > image_width) || + (TIFFGetField(tif, TIFFTAG_TILELENGTH, &tile_height) && + tile_height > 32 && tile_height / 2 > image_height)) { + fprintf(stderr, "Error! TIFF tile dimensions are too big.\n"); + goto End; + } if (samples_per_px > 3 && !TIFFGetField(tif, TIFFTAG_EXTRASAMPLES, &extra_samples, &extra_samples_ptr)) { fprintf(stderr, "Error! Cannot retrieve TIFF ExtraSamples info.\n"); @@ -205,27 +215,28 @@ } // _Tiffmalloc uses a signed type for size. - alloc_size = (int64_t)((uint64_t)width * height * sizeof(*raster)); + alloc_size = + (int64_t)((uint64_t)image_width * image_height * sizeof(*raster)); if (alloc_size < 0 || alloc_size != (tsize_t)alloc_size) goto End; raster = (uint32*)_TIFFmalloc((tsize_t)alloc_size); if (raster != NULL) { - if (TIFFReadRGBAImageOriented(tif, width, height, raster, + if (TIFFReadRGBAImageOriented(tif, image_width, image_height, raster, ORIENTATION_TOPLEFT, 1)) { - const int stride = width * sizeof(*raster); - pic->width = width; - pic->height = height; + const int stride = image_width * sizeof(*raster); + pic->width = image_width; + pic->height = image_height; // TIFF data is ABGR #ifdef WORDS_BIGENDIAN - TIFFSwabArrayOfLong(raster, width * height); + TIFFSwabArrayOfLong(raster, image_width * image_height); #endif // if we have an alpha channel, we must un-multiply from rgbA to RGBA if (extra_samples == 1 && extra_samples_ptr != NULL && extra_samples_ptr[0] == EXTRASAMPLE_ASSOCALPHA) { uint32_t y; uint8_t* tmp = (uint8_t*)raster; - for (y = 0; y < height; ++y) { - MultARGBRow(tmp, width); + for (y = 0; y < image_height; ++y) { + MultARGBRow(tmp, image_width); tmp += stride; } }
diff --git a/third_party/libwebp/src/dec/frame_dec.c b/third_party/libwebp/src/dec/frame_dec.c index bda9e1a..04609a8e 100644 --- a/third_party/libwebp/src/dec/frame_dec.c +++ b/third_party/libwebp/src/dec/frame_dec.c
@@ -732,7 +732,7 @@ mem += f_info_size; dec->thread_ctx_.id_ = 0; dec->thread_ctx_.f_info_ = dec->f_info_; - if (dec->mt_method_ > 0) { + if (dec->filter_type_ > 0 && dec->mt_method_ > 0) { // secondary cache line. The deblocking process need to make use of the // filtering strength from previous macroblock row, while the new ones // are being decoded in parallel. We'll just swap the pointers.
diff --git a/third_party/libwebp/src/dec/idec_dec.c b/third_party/libwebp/src/dec/idec_dec.c index 9bc91668..9035df5 100644 --- a/third_party/libwebp/src/dec/idec_dec.c +++ b/third_party/libwebp/src/dec/idec_dec.c
@@ -166,9 +166,11 @@ VP8Decoder* const dec = (VP8Decoder*)idec->dec_; MemBuffer* const mem = &idec->mem_; const int need_compressed_alpha = NeedCompressedAlpha(idec); - const uint8_t* const old_start = mem->buf_ + mem->start_; + const uint8_t* const old_start = + (mem->buf_ == NULL) ? NULL : mem->buf_ + mem->start_; const uint8_t* const old_base = need_compressed_alpha ? dec->alpha_data_ : old_start; + assert(mem->buf_ != NULL || mem->start_ == 0); assert(mem->mode_ == MEM_MODE_APPEND); if (data_size > MAX_CHUNK_PAYLOAD) { // security safeguard: trying to allocate more than what the format @@ -184,7 +186,7 @@ uint8_t* const new_buf = (uint8_t*)WebPSafeMalloc(extra_size, sizeof(*new_buf)); if (new_buf == NULL) return 0; - memcpy(new_buf, old_base, current_size); + if (old_base != NULL) memcpy(new_buf, old_base, current_size); WebPSafeFree(mem->buf_); mem->buf_ = new_buf; mem->buf_size_ = (size_t)extra_size; @@ -192,6 +194,7 @@ mem->end_ = current_size; } + assert(mem->buf_ != NULL); memcpy(mem->buf_ + mem->end_, data, data_size); mem->end_ += data_size; assert(mem->end_ <= mem->buf_size_); @@ -204,7 +207,9 @@ const uint8_t* const data, size_t data_size) { MemBuffer* const mem = &idec->mem_; const uint8_t* const old_buf = mem->buf_; - const uint8_t* const old_start = old_buf + mem->start_; + const uint8_t* const old_start = + (old_buf == NULL) ? NULL : old_buf + mem->start_; + assert(old_buf != NULL || mem->start_ == 0); assert(mem->mode_ == MEM_MODE_MAP); if (data_size < mem->buf_size_) return 0; // can't remap to a shorter buffer!
diff --git a/third_party/libwebp/src/dec/vp8i_dec.h b/third_party/libwebp/src/dec/vp8i_dec.h index 3de8d86f..600a6844 100644 --- a/third_party/libwebp/src/dec/vp8i_dec.h +++ b/third_party/libwebp/src/dec/vp8i_dec.h
@@ -31,8 +31,8 @@ // version numbers #define DEC_MAJ_VERSION 1 -#define DEC_MIN_VERSION 0 -#define DEC_REV_VERSION 3 +#define DEC_MIN_VERSION 1 +#define DEC_REV_VERSION 0 // YUV-cache parameters. Cache is 32-bytes wide (= one cacheline). // Constraints are: We need to store one 16x16 block of luma samples (y),
diff --git a/third_party/libwebp/src/dec/vp8li_dec.h b/third_party/libwebp/src/dec/vp8li_dec.h index 0a4d613..72b2e86 100644 --- a/third_party/libwebp/src/dec/vp8li_dec.h +++ b/third_party/libwebp/src/dec/vp8li_dec.h
@@ -37,7 +37,7 @@ int bits_; // subsampling bits defining transform window. int xsize_; // transform window X index. int ysize_; // transform window Y index. - uint32_t *data_; // transform data. + uint32_t* data_; // transform data. }; typedef struct { @@ -48,23 +48,23 @@ int huffman_mask_; int huffman_subsample_bits_; int huffman_xsize_; - uint32_t *huffman_image_; + uint32_t* huffman_image_; int num_htree_groups_; - HTreeGroup *htree_groups_; - HuffmanCode *huffman_tables_; + HTreeGroup* htree_groups_; + HuffmanCode* huffman_tables_; } VP8LMetadata; typedef struct VP8LDecoder VP8LDecoder; struct VP8LDecoder { VP8StatusCode status_; VP8LDecodeState state_; - VP8Io *io_; + VP8Io* io_; - const WebPDecBuffer *output_; // shortcut to io->opaque->output + const WebPDecBuffer* output_; // shortcut to io->opaque->output - uint32_t *pixels_; // Internal data: either uint8_t* for alpha + uint32_t* pixels_; // Internal data: either uint8_t* for alpha // or uint32_t* for BGRA. - uint32_t *argb_cache_; // Scratch buffer for temporary BGRA storage. + uint32_t* argb_cache_; // Scratch buffer for temporary BGRA storage. VP8LBitReader br_; int incremental_; // if true, incremental decoding is expected @@ -86,8 +86,8 @@ // or'd bitset storing the transforms types. uint32_t transforms_seen_; - uint8_t *rescaler_memory; // Working memory for rescaling work. - WebPRescaler *rescaler; // Common rescaler for all channels. + uint8_t* rescaler_memory; // Working memory for rescaling work. + WebPRescaler* rescaler; // Common rescaler for all channels. }; //------------------------------------------------------------------------------
diff --git a/third_party/libwebp/src/demux/demux.c b/third_party/libwebp/src/demux/demux.c index ab6433e..1b3cc2e 100644 --- a/third_party/libwebp/src/demux/demux.c +++ b/third_party/libwebp/src/demux/demux.c
@@ -24,8 +24,8 @@ #include "src/webp/format_constants.h" #define DMUX_MAJ_VERSION 1 -#define DMUX_MIN_VERSION 0 -#define DMUX_REV_VERSION 3 +#define DMUX_MIN_VERSION 1 +#define DMUX_REV_VERSION 0 typedef struct { size_t start_; // start location of the data
diff --git a/third_party/libwebp/src/dsp/dec_neon.c b/third_party/libwebp/src/dsp/dec_neon.c index 7d132afd..239ec41 100644 --- a/third_party/libwebp/src/dsp/dec_neon.c +++ b/third_party/libwebp/src/dsp/dec_neon.c
@@ -1428,10 +1428,16 @@ if (do_top) { const uint8x8_t A = vld1_u8(dst - BPS); // top row +#if defined(__aarch64__) + const uint16x8_t B = vmovl_u8(A); + const uint16_t p2 = vaddvq_u16(B); + sum_top = vdupq_n_u16(p2); +#else const uint16x4_t p0 = vpaddl_u8(A); // cascading summation of the top const uint16x4_t p1 = vpadd_u16(p0, p0); const uint16x4_t p2 = vpadd_u16(p1, p1); sum_top = vcombine_u16(p2, p2); +#endif } if (do_left) {
diff --git a/third_party/libwebp/src/dsp/dsp.h b/third_party/libwebp/src/dsp/dsp.h index fafc2d0..a784de33 100644 --- a/third_party/libwebp/src/dsp/dsp.h +++ b/third_party/libwebp/src/dsp/dsp.h
@@ -246,9 +246,9 @@ extern VP8WHT VP8FTransformWHT; // Predictions // *dst is the destination block. *top and *left can be NULL. -typedef void (*VP8IntraPreds)(uint8_t *dst, const uint8_t* left, +typedef void (*VP8IntraPreds)(uint8_t* dst, const uint8_t* left, const uint8_t* top); -typedef void (*VP8Intra4Preds)(uint8_t *dst, const uint8_t* top); +typedef void (*VP8Intra4Preds)(uint8_t* dst, const uint8_t* top); extern VP8Intra4Preds VP8EncPredLuma4; extern VP8IntraPreds VP8EncPredLuma16; extern VP8IntraPreds VP8EncPredChroma8;
diff --git a/third_party/libwebp/src/dsp/lossless.c b/third_party/libwebp/src/dsp/lossless.c index d05af84e..aad5f43 100644 --- a/third_party/libwebp/src/dsp/lossless.c +++ b/third_party/libwebp/src/dsp/lossless.c
@@ -81,7 +81,7 @@ // gcc <= 4.9 on ARM generates incorrect code in Select() when Sub3() is // inlined. -#if defined(__arm__) && LOCAL_GCC_VERSION <= 0x409 +#if defined(__arm__) && defined(__GNUC__) && LOCAL_GCC_VERSION <= 0x409 # define LOCAL_INLINE __attribute__ ((noinline)) #else # define LOCAL_INLINE WEBP_INLINE @@ -167,15 +167,20 @@ return pred; } -GENERATE_PREDICTOR_ADD(Predictor0_C, PredictorAdd0_C) +static void PredictorAdd0_C(const uint32_t* in, const uint32_t* upper, + int num_pixels, uint32_t* out) { + int x; + (void)upper; + for (x = 0; x < num_pixels; ++x) out[x] = VP8LAddPixels(in[x], ARGB_BLACK); +} static void PredictorAdd1_C(const uint32_t* in, const uint32_t* upper, int num_pixels, uint32_t* out) { int i; uint32_t left = out[-1]; + (void)upper; for (i = 0; i < num_pixels; ++i) { out[i] = left = VP8LAddPixels(in[i], left); } - (void)upper; } GENERATE_PREDICTOR_ADD(Predictor2_C, PredictorAdd2_C) GENERATE_PREDICTOR_ADD(Predictor3_C, PredictorAdd3_C)
diff --git a/third_party/libwebp/src/dsp/lossless_common.h b/third_party/libwebp/src/dsp/lossless_common.h index a2648d17..9c2ebe6 100644 --- a/third_party/libwebp/src/dsp/lossless_common.h +++ b/third_party/libwebp/src/dsp/lossless_common.h
@@ -177,6 +177,7 @@ static void PREDICTOR_ADD(const uint32_t* in, const uint32_t* upper, \ int num_pixels, uint32_t* out) { \ int x; \ + assert(upper != NULL); \ for (x = 0; x < num_pixels; ++x) { \ const uint32_t pred = (PREDICTOR)(out[x - 1], upper + x); \ out[x] = VP8LAddPixels(in[x], pred); \ @@ -189,6 +190,7 @@ static void PREDICTOR_SUB(const uint32_t* in, const uint32_t* upper, \ int num_pixels, uint32_t* out) { \ int x; \ + assert(upper != NULL); \ for (x = 0; x < num_pixels; ++x) { \ const uint32_t pred = (PREDICTOR)(in[x - 1], upper + x); \ out[x] = VP8LSubPixels(in[x], pred); \
diff --git a/third_party/libwebp/src/dsp/lossless_enc_sse2.c b/third_party/libwebp/src/dsp/lossless_enc_sse2.c index 8adc521..e676f6f 100644 --- a/third_party/libwebp/src/dsp/lossless_enc_sse2.c +++ b/third_party/libwebp/src/dsp/lossless_enc_sse2.c
@@ -455,8 +455,9 @@ _mm_storeu_si128((__m128i*)&out[i], res); } if (i != num_pixels) { - VP8LPredictorsSub_C[0](in + i, upper + i, num_pixels - i, out + i); + VP8LPredictorsSub_C[0](in + i, NULL, num_pixels - i, out + i); } + (void)upper; } #define GENERATE_PREDICTOR_1(X, IN) \
diff --git a/third_party/libwebp/src/dsp/lossless_sse2.c b/third_party/libwebp/src/dsp/lossless_sse2.c index 17d7576..aef0cee1 100644 --- a/third_party/libwebp/src/dsp/lossless_sse2.c +++ b/third_party/libwebp/src/dsp/lossless_sse2.c
@@ -191,8 +191,9 @@ _mm_storeu_si128((__m128i*)&out[i], res); } if (i != num_pixels) { - VP8LPredictorsAdd_C[0](in + i, upper + i, num_pixels - i, out + i); + VP8LPredictorsAdd_C[0](in + i, NULL, num_pixels - i, out + i); } + (void)upper; } // Predictor1: left.
diff --git a/third_party/libwebp/src/dsp/upsampling_msa.c b/third_party/libwebp/src/dsp/upsampling_msa.c index 99eea70..f2e03e85 100644 --- a/third_party/libwebp/src/dsp/upsampling_msa.c +++ b/third_party/libwebp/src/dsp/upsampling_msa.c
@@ -576,9 +576,9 @@ const uint32_t l_uv = ((cur_u[0]) | ((cur_v[0]) << 16)); \ const uint32_t uv0 = (3 * tl_uv + l_uv + 0x00020002u) >> 2; \ const uint8_t* ptop_y = &top_y[1]; \ - uint8_t *ptop_dst = top_dst + XSTEP; \ + uint8_t* ptop_dst = top_dst + XSTEP; \ const uint8_t* pbot_y = &bot_y[1]; \ - uint8_t *pbot_dst = bot_dst + XSTEP; \ + uint8_t* pbot_dst = bot_dst + XSTEP; \ \ FUNC(top_y[0], uv0 & 0xff, (uv0 >> 16), top_dst); \ if (bot_y != NULL) { \
diff --git a/third_party/libwebp/src/dsp/upsampling_neon.c b/third_party/libwebp/src/dsp/upsampling_neon.c index 17cbc9f..6ba71a7 100644 --- a/third_party/libwebp/src/dsp/upsampling_neon.c +++ b/third_party/libwebp/src/dsp/upsampling_neon.c
@@ -58,8 +58,8 @@ } while (0) // Turn the macro into a function for reducing code-size when non-critical -static void Upsample16Pixels_NEON(const uint8_t *r1, const uint8_t *r2, - uint8_t *out) { +static void Upsample16Pixels_NEON(const uint8_t* r1, const uint8_t* r2, + uint8_t* out) { UPSAMPLE_16PIXELS(r1, r2, out); } @@ -190,14 +190,14 @@ } #define NEON_UPSAMPLE_FUNC(FUNC_NAME, FMT, XSTEP) \ -static void FUNC_NAME(const uint8_t *top_y, const uint8_t *bottom_y, \ - const uint8_t *top_u, const uint8_t *top_v, \ - const uint8_t *cur_u, const uint8_t *cur_v, \ - uint8_t *top_dst, uint8_t *bottom_dst, int len) { \ +static void FUNC_NAME(const uint8_t* top_y, const uint8_t* bottom_y, \ + const uint8_t* top_u, const uint8_t* top_v, \ + const uint8_t* cur_u, const uint8_t* cur_v, \ + uint8_t* top_dst, uint8_t* bottom_dst, int len) { \ int block; \ /* 16 byte aligned array to cache reconstructed u and v */ \ uint8_t uv_buf[2 * 32 + 15]; \ - uint8_t *const r_uv = (uint8_t*)((uintptr_t)(uv_buf + 15) & ~15); \ + uint8_t* const r_uv = (uint8_t*)((uintptr_t)(uv_buf + 15) & ~15); \ const int uv_len = (len + 1) >> 1; \ /* 9 pixels must be read-able for each block */ \ const int num_blocks = (uv_len - 1) >> 3; \
diff --git a/third_party/libwebp/src/enc/histogram_enc.c b/third_party/libwebp/src/enc/histogram_enc.c index d89b985..a4e6bf3 100644 --- a/third_party/libwebp/src/enc/histogram_enc.c +++ b/third_party/libwebp/src/enc/histogram_enc.c
@@ -641,7 +641,7 @@ // Merges some histograms with same bin_id together if it's advantageous. // Sets the remaining histograms to NULL. static void HistogramCombineEntropyBin(VP8LHistogramSet* const image_histo, - int *num_used, + int* num_used, const uint16_t* const clusters, uint16_t* const cluster_mappings, VP8LHistogram* cur_combo,
diff --git a/third_party/libwebp/src/enc/picture_csp_enc.c b/third_party/libwebp/src/enc/picture_csp_enc.c index 105718f..718e014e 100644 --- a/third_party/libwebp/src/enc/picture_csp_enc.c +++ b/third_party/libwebp/src/enc/picture_csp_enc.c
@@ -1054,7 +1054,7 @@ const int height = picture->height; const int argb_stride = 4 * picture->argb_stride; uint8_t* dst = (uint8_t*)picture->argb; - const uint8_t *cur_u = picture->u, *cur_v = picture->v, *cur_y = picture->y; + const uint8_t* cur_u = picture->u, *cur_v = picture->v, *cur_y = picture->y; WebPUpsampleLinePairFunc upsample = WebPGetLinePairConverter(ALPHA_OFFSET > 0);
diff --git a/third_party/libwebp/src/enc/vp8i_enc.h b/third_party/libwebp/src/enc/vp8i_enc.h index 24e1944..fedcaeea2 100644 --- a/third_party/libwebp/src/enc/vp8i_enc.h +++ b/third_party/libwebp/src/enc/vp8i_enc.h
@@ -31,8 +31,8 @@ // version numbers #define ENC_MAJ_VERSION 1 -#define ENC_MIN_VERSION 0 -#define ENC_REV_VERSION 3 +#define ENC_MIN_VERSION 1 +#define ENC_REV_VERSION 0 enum { MAX_LF_LEVELS = 64, // Maximum loop filter level MAX_VARIABLE_LEVEL = 67, // last (inclusive) level with variable cost @@ -249,7 +249,7 @@ int percent0_; // saved initial progress percent DError left_derr_; // left error diffusion (u/v) - DError *top_derr_; // top diffusion error - NULL if disabled + DError* top_derr_; // top diffusion error - NULL if disabled uint8_t* y_left_; // left luma samples (addressable from index -1 to 15). uint8_t* u_left_; // left u samples (addressable from index -1 to 7)
diff --git a/third_party/libwebp/src/mux/muxi.h b/third_party/libwebp/src/mux/muxi.h index 7bc0b07..ad3e1bd 100644 --- a/third_party/libwebp/src/mux/muxi.h +++ b/third_party/libwebp/src/mux/muxi.h
@@ -28,8 +28,8 @@ // Defines and constants. #define MUX_MAJ_VERSION 1 -#define MUX_MIN_VERSION 0 -#define MUX_REV_VERSION 3 +#define MUX_MIN_VERSION 1 +#define MUX_REV_VERSION 0 // Chunk object. typedef struct WebPChunk WebPChunk;
diff --git a/third_party/libwebp/src/mux/muxread.c b/third_party/libwebp/src/mux/muxread.c index 268f6acb..ae3b876b 100644 --- a/third_party/libwebp/src/mux/muxread.c +++ b/third_party/libwebp/src/mux/muxread.c
@@ -100,7 +100,7 @@ WebPMuxImage* const wpi) { const uint8_t* bytes = chunk->data_.bytes; size_t size = chunk->data_.size; - const uint8_t* const last = bytes + size; + const uint8_t* const last = (bytes == NULL) ? NULL : bytes + size; WebPChunk subchunk; size_t subchunk_size; WebPChunk** unknown_chunk_list = &wpi->unknown_;
diff --git a/third_party/libwebp/src/utils/color_cache_utils.h b/third_party/libwebp/src/utils/color_cache_utils.h index ec21d51..b45d47c 100644 --- a/third_party/libwebp/src/utils/color_cache_utils.h +++ b/third_party/libwebp/src/utils/color_cache_utils.h
@@ -26,7 +26,7 @@ // Main color cache struct. typedef struct { - uint32_t *colors_; // color entries + uint32_t* colors_; // color entries int hash_shift_; // Hash shift: 32 - hash_bits_. int hash_bits_; } VP8LColorCache;
diff --git a/third_party/libwebp/src/utils/thread_utils.c b/third_party/libwebp/src/utils/thread_utils.c index 438296b..4e470e1 100644 --- a/third_party/libwebp/src/utils/thread_utils.c +++ b/third_party/libwebp/src/utils/thread_utils.c
@@ -73,7 +73,7 @@ #endif static int pthread_create(pthread_t* const thread, const void* attr, - unsigned int (__stdcall *start)(void*), void* arg) { + unsigned int (__stdcall* start)(void*), void* arg) { (void)attr; #ifdef USE_CREATE_THREAD *thread = CreateThread(NULL, /* lpThreadAttributes */
diff --git a/third_party/libwebp/src/utils/utils.c b/third_party/libwebp/src/utils/utils.c index 44d5c14..764f752 100644 --- a/third_party/libwebp/src/utils/utils.c +++ b/third_party/libwebp/src/utils/utils.c
@@ -216,9 +216,14 @@ free(ptr); } -// Public API function. +// Public API functions. + +void* WebPMalloc(size_t size) { + return WebPSafeMalloc(1, size); +} + void WebPFree(void* ptr) { - free(ptr); + WebPSafeFree(ptr); } //------------------------------------------------------------------------------
diff --git a/third_party/libwebp/src/webp/decode.h b/third_party/libwebp/src/webp/decode.h index ae8bfe840..80dd0ef 100644 --- a/third_party/libwebp/src/webp/decode.h +++ b/third_party/libwebp/src/webp/decode.h
@@ -20,7 +20,7 @@ extern "C" { #endif -#define WEBP_DECODER_ABI_VERSION 0x0208 // MAJOR(8b) + MINOR(8b) +#define WEBP_DECODER_ABI_VERSION 0x0209 // MAJOR(8b) + MINOR(8b) // Note: forward declaring enumerations is not allowed in (strict) C and C++, // the types are left here for reference. @@ -91,9 +91,6 @@ uint8_t** u, uint8_t** v, int* stride, int* uv_stride); -// Releases memory returned by the WebPDecode*() functions above. -WEBP_EXTERN void WebPFree(void* ptr); - // These five functions are variants of the above ones, that decode the image // directly into a pre-allocated buffer 'output_buffer'. The maximum storage // available in this buffer is indicated by 'output_buffer_size'. If this
diff --git a/third_party/libwebp/src/webp/encode.h b/third_party/libwebp/src/webp/encode.h index 339f881..655166e 100644 --- a/third_party/libwebp/src/webp/encode.h +++ b/third_party/libwebp/src/webp/encode.h
@@ -20,7 +20,7 @@ extern "C" { #endif -#define WEBP_ENCODER_ABI_VERSION 0x020e // MAJOR(8b) + MINOR(8b) +#define WEBP_ENCODER_ABI_VERSION 0x020f // MAJOR(8b) + MINOR(8b) // Note: forward declaring enumerations is not allowed in (strict) C and C++, // the types are left here for reference. @@ -79,9 +79,6 @@ int width, int height, int stride, uint8_t** output); -// Releases memory returned by the WebPEncode*() functions above. -WEBP_EXTERN void WebPFree(void* ptr); - //------------------------------------------------------------------------------ // Coding parameters @@ -306,7 +303,7 @@ // YUV input (mostly used for input to lossy compression) WebPEncCSP colorspace; // colorspace: should be YUV420 for now (=Y'CbCr). int width, height; // dimensions (less or equal to WEBP_MAX_DIMENSION) - uint8_t *y, *u, *v; // pointers to luma/chroma planes. + uint8_t* y, *u, *v; // pointers to luma/chroma planes. int y_stride, uv_stride; // luma/chroma strides. uint8_t* a; // pointer to the alpha plane int a_stride; // stride of the alpha plane @@ -350,7 +347,7 @@ uint32_t pad3[3]; // padding for later use // Unused for now - uint8_t *pad4, *pad5; + uint8_t* pad4, *pad5; uint32_t pad6[8]; // padding for later use // PRIVATE FIELDS
diff --git a/third_party/libwebp/src/webp/mux.h b/third_party/libwebp/src/webp/mux.h index 66096a9..7d27489 100644 --- a/third_party/libwebp/src/webp/mux.h +++ b/third_party/libwebp/src/webp/mux.h
@@ -57,7 +57,7 @@ WebPMuxGetChunk(mux, "ICCP", &icc_profile); // ... (Consume icc_data). WebPMuxDelete(mux); - free(data); + WebPFree(data); */ // Note: forward declaring enumerations is not allowed in (strict) C and C++, @@ -245,7 +245,7 @@ WebPMux* mux, const WebPMuxFrameInfo* frame, int copy_data); // Gets the nth frame from the mux object. -// The content of 'frame->bitstream' is allocated using malloc(), and NOT +// The content of 'frame->bitstream' is allocated using WebPMalloc(), and NOT // owned by the 'mux' object. It MUST be deallocated by the caller by calling // WebPDataClear(). // nth=0 has a special meaning - last position. @@ -376,10 +376,10 @@ // Assembles all chunks in WebP RIFF format and returns in 'assembled_data'. // This function also validates the mux object. // Note: The content of 'assembled_data' will be ignored and overwritten. -// Also, the content of 'assembled_data' is allocated using malloc(), and NOT -// owned by the 'mux' object. It MUST be deallocated by the caller by calling -// WebPDataClear(). It's always safe to call WebPDataClear() upon return, -// even in case of error. +// Also, the content of 'assembled_data' is allocated using WebPMalloc(), and +// NOT owned by the 'mux' object. It MUST be deallocated by the caller by +// calling WebPDataClear(). It's always safe to call WebPDataClear() upon +// return, even in case of error. // Parameters: // mux - (in/out) object whose chunks are to be assembled // assembled_data - (out) assembled WebP data
diff --git a/third_party/libwebp/src/webp/mux_types.h b/third_party/libwebp/src/webp/mux_types.h index ceea77d..2fe8195 100644 --- a/third_party/libwebp/src/webp/mux_types.h +++ b/third_party/libwebp/src/webp/mux_types.h
@@ -14,7 +14,6 @@ #ifndef WEBP_WEBP_MUX_TYPES_H_ #define WEBP_WEBP_MUX_TYPES_H_ -#include <stdlib.h> // free() #include <string.h> // memset() #include "./types.h" @@ -56,6 +55,7 @@ // Data type used to describe 'raw' data, e.g., chunk data // (ICC profile, metadata) and WebP compressed image data. +// 'bytes' memory must be allocated using WebPMalloc() and such. struct WebPData { const uint8_t* bytes; size_t size; @@ -68,11 +68,11 @@ } } -// Clears the contents of the 'webp_data' object by calling free(). Does not -// deallocate the object itself. +// Clears the contents of the 'webp_data' object by calling WebPFree(). +// Does not deallocate the object itself. static WEBP_INLINE void WebPDataClear(WebPData* webp_data) { if (webp_data != NULL) { - free((void*)webp_data->bytes); + WebPFree((void*)webp_data->bytes); WebPDataInit(webp_data); } } @@ -83,7 +83,7 @@ if (src == NULL || dst == NULL) return 0; WebPDataInit(dst); if (src->bytes != NULL && src->size != 0) { - dst->bytes = (uint8_t*)malloc(src->size); + dst->bytes = (uint8_t*)WebPMalloc(src->size); if (dst->bytes == NULL) return 0; memcpy((void*)dst->bytes, src->bytes, src->size); dst->size = src->size;
diff --git a/third_party/libwebp/src/webp/types.h b/third_party/libwebp/src/webp/types.h index 0ce2622..47f7f2b 100644 --- a/third_party/libwebp/src/webp/types.h +++ b/third_party/libwebp/src/webp/types.h
@@ -7,7 +7,7 @@ // be found in the AUTHORS file in the root of the source tree. // ----------------------------------------------------------------------------- // -// Common types +// Common types + memory wrappers // // Author: Skal (pascal.massimino@gmail.com) @@ -49,4 +49,20 @@ // Macro to check ABI compatibility (same major revision number) #define WEBP_ABI_IS_INCOMPATIBLE(a, b) (((a) >> 8) != ((b) >> 8)) +#ifdef __cplusplus +extern "C" { +#endif + +// Allocates 'size' bytes of memory. Returns NULL upon error. Memory +// must be deallocated by calling WebPFree(). This function is made available +// by the core 'libwebp' library. +WEBP_EXTERN void* WebPMalloc(size_t size); + +// Releases memory returned by the WebPDecode*() functions (from decode.h). +WEBP_EXTERN void WebPFree(void* ptr); + +#ifdef __cplusplus +} // extern "C" +#endif + #endif // WEBP_WEBP_TYPES_H_
diff --git a/third_party/libxml/README.chromium b/third_party/libxml/README.chromium index cc11cbb..2aa8772 100644 --- a/third_party/libxml/README.chromium +++ b/third_party/libxml/README.chromium
@@ -1,6 +1,6 @@ Name: libxml URL: http://xmlsoft.org -Version: 6a6fb8560e75c3b9c15744ef20df9fce9fcd8c6e +Version: a7fe7ee45938c53a8dd028dd40baa461191a2fd2 License: MIT License File: src/Copyright Security Critical: yes
diff --git a/third_party/libxml/src/libxml2.spec b/third_party/libxml/src/libxml2.spec index 52cbeb83..e43a371 100644 --- a/third_party/libxml/src/libxml2.spec +++ b/third_party/libxml/src/libxml2.spec
@@ -203,6 +203,6 @@ %endif # with_python3 %changelog -* Tue Feb 19 2019 Daniel Veillard <veillard@redhat.com> +* Fri Nov 8 2019 Daniel Veillard <veillard@redhat.com> - upstream release 2.9.9 see http://xmlsoft.org/news.html
diff --git a/third_party/libxml/src/parser.c b/third_party/libxml/src/parser.c index 4e76709..3a8a0d7 100644 --- a/third_party/libxml/src/parser.c +++ b/third_party/libxml/src/parser.c
@@ -2081,8 +2081,8 @@ xmlGROW (ctxt); static void xmlGROW (xmlParserCtxtPtr ctxt) { - ptrdiff_t curEnd = ctxt->input->end - ctxt->input->cur; - ptrdiff_t curBase = ctxt->input->cur - ctxt->input->base; + unsigned long curEnd = ctxt->input->end - ctxt->input->cur; + unsigned long curBase = ctxt->input->cur - ctxt->input->base; if (((curEnd > (unsigned long) XML_MAX_LOOKUP_LIMIT) || (curBase > (unsigned long) XML_MAX_LOOKUP_LIMIT)) && @@ -8857,18 +8857,6 @@ * caller if it was copied, this can be detected by val[*len] == 0. */ -#define GROW_PARSE_ATT_VALUE_INTERNAL(ctxt, in, start, end) \ - const xmlChar *oldbase = ctxt->input->base;\ - GROW;\ - if (ctxt->instate == XML_PARSER_EOF)\ - return(NULL);\ - if (oldbase != ctxt->input->base) {\ - ptrdiff_t delta = ctxt->input->base - oldbase;\ - start = start + delta;\ - in = in + delta;\ - }\ - end = ctxt->input->end; - static xmlChar * xmlParseAttValueInternal(xmlParserCtxtPtr ctxt, int *len, int *alloc, int normalize) @@ -8898,7 +8886,14 @@ end = ctxt->input->end; start = in; if (in >= end) { - GROW_PARSE_ATT_VALUE_INTERNAL(ctxt, in, start, end) + const xmlChar *oldbase = ctxt->input->base; + GROW; + if (oldbase != ctxt->input->base) { + long delta = ctxt->input->base - oldbase; + start = start + delta; + in = in + delta; + } + end = ctxt->input->end; } if (normalize) { /* @@ -8915,7 +8910,16 @@ in++; start = in; if (in >= end) { - GROW_PARSE_ATT_VALUE_INTERNAL(ctxt, in, start, end) + const xmlChar *oldbase = ctxt->input->base; + GROW; + if (ctxt->instate == XML_PARSER_EOF) + return(NULL); + if (oldbase != ctxt->input->base) { + long delta = ctxt->input->base - oldbase; + start = start + delta; + in = in + delta; + } + end = ctxt->input->end; if (((in - start) > XML_MAX_TEXT_LENGTH) && ((ctxt->options & XML_PARSE_HUGE) == 0)) { xmlFatalErrMsg(ctxt, XML_ERR_ATTRIBUTE_NOT_FINISHED, @@ -8929,7 +8933,16 @@ col++; if ((*in++ == 0x20) && (*in == 0x20)) break; if (in >= end) { - GROW_PARSE_ATT_VALUE_INTERNAL(ctxt, in, start, end) + const xmlChar *oldbase = ctxt->input->base; + GROW; + if (ctxt->instate == XML_PARSER_EOF) + return(NULL); + if (oldbase != ctxt->input->base) { + long delta = ctxt->input->base - oldbase; + start = start + delta; + in = in + delta; + } + end = ctxt->input->end; if (((in - start) > XML_MAX_TEXT_LENGTH) && ((ctxt->options & XML_PARSE_HUGE) == 0)) { xmlFatalErrMsg(ctxt, XML_ERR_ATTRIBUTE_NOT_FINISHED, @@ -8958,7 +8971,7 @@ if (ctxt->instate == XML_PARSER_EOF) return(NULL); if (oldbase != ctxt->input->base) { - ptrdiff_t delta = ctxt->input->base - oldbase; + long delta = ctxt->input->base - oldbase; start = start + delta; in = in + delta; last = last + delta; @@ -8985,7 +8998,16 @@ in++; col++; if (in >= end) { - GROW_PARSE_ATT_VALUE_INTERNAL(ctxt, in, start, end) + const xmlChar *oldbase = ctxt->input->base; + GROW; + if (ctxt->instate == XML_PARSER_EOF) + return(NULL); + if (oldbase != ctxt->input->base) { + long delta = ctxt->input->base - oldbase; + start = start + delta; + in = in + delta; + } + end = ctxt->input->end; if (((in - start) > XML_MAX_TEXT_LENGTH) && ((ctxt->options & XML_PARSE_HUGE) == 0)) { xmlFatalErrMsg(ctxt, XML_ERR_ATTRIBUTE_NOT_FINISHED,
diff --git a/third_party/libxml/src/xmlreader.c b/third_party/libxml/src/xmlreader.c index 1f6d8f6..ad9ce01 100644 --- a/third_party/libxml/src/xmlreader.c +++ b/third_party/libxml/src/xmlreader.c
@@ -32,7 +32,6 @@ #include <libxml/xmlIO.h> #include <libxml/xmlreader.h> #include <libxml/parserInternals.h> - #ifdef LIBXML_SCHEMAS_ENABLED #include <libxml/relaxng.h> #include <libxml/xmlschemas.h> @@ -2267,16 +2266,16 @@ if (reader->ctxt != NULL) { if (reader->dict == reader->ctxt->dict) reader->dict = NULL; -#ifdef LIBXML_REGEXP_ENABLED if ((reader->ctxt->vctxt.vstateTab != NULL) && (reader->ctxt->vctxt.vstateMax > 0)){ +#ifdef LIBXML_REGEXP_ENABLED while (reader->ctxt->vctxt.vstateNr > 0) xmlValidatePopElement(&reader->ctxt->vctxt, NULL, NULL, NULL); +#endif xmlFree(reader->ctxt->vctxt.vstateTab); reader->ctxt->vctxt.vstateTab = NULL; reader->ctxt->vctxt.vstateMax = 0; } -#endif if (reader->ctxt->myDoc != NULL) { if (reader->preserve == 0) xmlTextReaderFreeDoc(reader, reader->ctxt->myDoc);
diff --git a/third_party/libxslt/README.chromium b/third_party/libxslt/README.chromium index 90ad6e88..90711e53 100644 --- a/third_party/libxslt/README.chromium +++ b/third_party/libxslt/README.chromium
@@ -1,6 +1,6 @@ Name: libxslt URL: http://xmlsoft.org/XSLT -Version: affcee5347527605a955096bd05f6e21f1a4a1f6 +Version: 3653123f992db24cec417d12600f4c67388025e3 Security Critical: yes License: MIT License File: src/Copyright
diff --git a/third_party/libxslt/linux/config.h b/third_party/libxslt/linux/config.h index b5cc815..5162a227 100644 --- a/third_party/libxslt/linux/config.h +++ b/third_party/libxslt/linux/config.h
@@ -140,7 +140,7 @@ #define HAVE_VSPRINTF 1 /* Define to 1 if you have the <xlocale.h> header file. */ -#define HAVE_XLOCALE_H 1 +/* #undef HAVE_XLOCALE_H */ /* Define to 1 if you have the `_stat' function. */ /* #undef HAVE__STAT */ @@ -158,7 +158,7 @@ #define PACKAGE_NAME "libxslt" /* Define to the full name and version of this package. */ -#define PACKAGE_STRING "libxslt 1.1.33" +#define PACKAGE_STRING "libxslt 1.1.34" /* Define to the one symbol short name of this package. */ #define PACKAGE_TARNAME "libxslt" @@ -167,7 +167,7 @@ #define PACKAGE_URL "" /* Define to the version of this package. */ -#define PACKAGE_VERSION "1.1.33" +#define PACKAGE_VERSION "1.1.34" /* Define to 1 if you have the ANSI C header files. */ #define STDC_HEADERS 1 @@ -195,11 +195,14 @@ /* Version number of package */ -#define VERSION "1.1.33" +#define VERSION "1.1.34" /* Define if debugging support is enabled */ /* #undef WITH_DEBUGGER */ +/* Define if profiling support is enabled */ +#define WITH_PROFILER /**/ + /* Define to 1 if on MINIX. */ /* #undef _MINIX */
diff --git a/third_party/libxslt/linux/libexslt/exsltconfig.h b/third_party/libxslt/linux/libexslt/exsltconfig.h index 4b27843..890ca85 100644 --- a/third_party/libxslt/linux/libexslt/exsltconfig.h +++ b/third_party/libxslt/linux/libexslt/exsltconfig.h
@@ -18,7 +18,7 @@ * * the version string like "1.2.3" */ -#define LIBEXSLT_DOTTED_VERSION "1.1.33" +#define LIBEXSLT_DOTTED_VERSION "1.1.34" /** * LIBEXSLT_VERSION:
diff --git a/third_party/libxslt/linux/libxslt/xsltwin32config.h b/third_party/libxslt/linux/libxslt/xsltwin32config.h index ceccadc..8085bc2f 100644 --- a/third_party/libxslt/linux/libxslt/xsltwin32config.h +++ b/third_party/libxslt/linux/libxslt/xsltwin32config.h
@@ -23,21 +23,21 @@ * * the version string like "1.2.3" */ -#define LIBXSLT_DOTTED_VERSION "1.1.33" +#define LIBXSLT_DOTTED_VERSION "1.1.34" /** * LIBXSLT_VERSION: * * the version number: 1.2.3 value is 1002003 */ -#define LIBXSLT_VERSION 10133 +#define LIBXSLT_VERSION 10134 /** * LIBXSLT_VERSION_STRING: * * the version number string, 1.2.3 value is "1002003" */ -#define LIBXSLT_VERSION_STRING "10133" +#define LIBXSLT_VERSION_STRING "10134" /** * LIBXSLT_VERSION_EXTRA:
diff --git a/third_party/libxslt/mac/config.h b/third_party/libxslt/mac/config.h index 317d26e..b756b61 100644 --- a/third_party/libxslt/mac/config.h +++ b/third_party/libxslt/mac/config.h
@@ -158,7 +158,7 @@ #define PACKAGE_NAME "libxslt" /* Define to the full name and version of this package. */ -#define PACKAGE_STRING "libxslt 1.1.33" +#define PACKAGE_STRING "libxslt 1.1.34" /* Define to the one symbol short name of this package. */ #define PACKAGE_TARNAME "libxslt" @@ -167,7 +167,7 @@ #define PACKAGE_URL "" /* Define to the version of this package. */ -#define PACKAGE_VERSION "1.1.33" +#define PACKAGE_VERSION "1.1.34" /* Define to 1 if you have the ANSI C header files. */ #define STDC_HEADERS 1 @@ -195,11 +195,14 @@ /* Version number of package */ -#define VERSION "1.1.33" +#define VERSION "1.1.34" /* Define if debugging support is enabled */ /* #undef WITH_DEBUGGER */ +/* Define if profiling support is enabled */ +#define WITH_PROFILER /**/ + /* Define to 1 if on MINIX. */ /* #undef _MINIX */
diff --git a/third_party/libxslt/src/Makefile.am b/third_party/libxslt/src/Makefile.am index ff10f57..2c417d0 100644 --- a/third_party/libxslt/src/Makefile.am +++ b/third_party/libxslt/src/Makefile.am
@@ -38,6 +38,7 @@ -e 's?\@XSLT_INCLUDEDIR\@?$(XSLT_INCLUDEDIR)?g' \ -e 's?\@VERSION\@?$(VERSION)?g' \ -e 's?\@XSLT_LIBS\@?$(XSLT_LIBS) $(EXTRA_LIBS)?g' \ + -e 's?\@XSLT_PRIVATE_LIBS\@?$(XSLT_PRIVATE_LIBS)?g' \ < $(srcdir)/xsltConf.sh.in > xsltConf.tmp \ && mv xsltConf.tmp xsltConf.sh
diff --git a/third_party/libxslt/src/config.h.in b/third_party/libxslt/src/config.h.in index 7e35341..0dbe333 100644 --- a/third_party/libxslt/src/config.h.in +++ b/third_party/libxslt/src/config.h.in
@@ -199,6 +199,9 @@ /* Define if debugging support is enabled */ #undef WITH_DEBUGGER +/* Define if profiling support is enabled */ +#undef WITH_PROFILER + /* Define to 1 if on MINIX. */ #undef _MINIX
diff --git a/third_party/libxslt/src/configure.ac b/third_party/libxslt/src/configure.ac index ed39a91..4f8d75d 100644 --- a/third_party/libxslt/src/configure.ac +++ b/third_party/libxslt/src/configure.ac
@@ -3,7 +3,7 @@ m4_define([MAJOR_VERSION], [1]) m4_define([MINOR_VERSION], [1]) -m4_define([MICRO_VERSION], [33]) +m4_define([MICRO_VERSION], [34]) AC_INIT([libxslt], [MAJOR_VERSION.MINOR_VERSION.MICRO_VERSION]) AC_CONFIG_SRCDIR([libxslt/xslt.c]) @@ -403,6 +403,20 @@ AC_SUBST(WITH_DEBUGGER) dnl +dnl Is profiler support requested +dnl +AC_ARG_WITH(profiler, [ --with-profiler Add the profiling support (on)]) +if test "$with_profiler" = "no" ; then + echo Disabling profiler + WITH_PROFILER=0 +else + echo Enabling profiler + WITH_PROFILER=1 + AC_DEFINE([WITH_PROFILER],[], [Define if profiling support is enabled]) +fi +AC_SUBST(WITH_PROFILER) + +dnl dnl The following new parameters were added to offer dnl the ability to specify the location of the libxml dnl library during linking and compilation. @@ -460,7 +474,7 @@ ;; esac else - CFLAGS="${CFLAGS} -Wall -Wformat=2 -Wmissing-format-attribute" + CFLAGS="${CFLAGS} -Wall -Wextra -Wformat=2 -Wmissing-format-attribute" case "${host}" in alpha*-*-linux* ) CFLAGS="${CFLAGS} -mieee" @@ -472,34 +486,59 @@ fi dnl +dnl Check which type of library to build. Default to building shared and static. +dnl + +build_shared_libs="yes" +build_static_libs="yes" + +if test "$enable_shared" = "no"; then + build_shared_libs="no" +fi + +if test "$enable_static" = "no"; then + build_static_libs="no" +fi + +if test "$build_shared_libs" = "no" -a "$build_static_libs" = "no"; then + build_static_libs="yes" +fi + +dnl dnl Override other variables if LIBXML_SRC is set dnl -if test "x$LIBXML_SRC" != "x" -then - CWD=`pwd` - if cd $LIBXML_SRC - then - LIBXML_SRC=`pwd` - XML_CONFIG="${LIBXML_SRC}/xml2-config" - LIBXML_CFLAGS="-I${LIBXML_SRC}/include" - LIBXML_LIBS="-L${LIBXML_SRC} `$XML_CONFIG --libs`" - WITH_MODULES="`$XML_CONFIG --modules`" - cd $CWD - else - AC_MSG_ERROR([libxml source dir not found (${LIBXML_SRC}), typo?]) - fi +if test "x$LIBXML_SRC" != "x"; then + CWD=`pwd` + if cd $LIBXML_SRC; then + LIBXML_SRC=`pwd` + XML_CONFIG="${LIBXML_SRC}/xml2-config" + LIBXML_CFLAGS="-I${LIBXML_SRC}/include" + if test "$build_static_libs" = "no"; then + LIBXML_LIBS="-L${LIBXML_SRC} `$XML_CONFIG --libs --dynamic`" + else + LIBXML_LIBS="-L${LIBXML_SRC} `$XML_CONFIG --libs`" + fi + WITH_MODULES="`$XML_CONFIG --modules`" + cd $CWD + else + AC_MSG_ERROR([libxml source dir not found (${LIBXML_SRC}), typo?]) + fi fi dnl dnl Try pkg-config first if nothing is set dnl -if test "x$LIBXML_CONFIG_PREFIX" = "x" -a "x$LIBXML_LIBS" = "x" -then - PKG_CHECK_MODULES([LIBXML], [libxml-2.0 >= $LIBXML_REQUIRED_VERSION], [ - WITH_MODULES="`$PKG_CONFIG --variable=modules libxml-2.0`" - ], [ ]) +if test "x$LIBXML_CONFIG_PREFIX" = "x" -a "x$LIBXML_LIBS" = "x"; then + if test "$build_static_libs" = "no"; then + PKG_CHECK_MODULES([LIBXML], [libxml-2.0 >= $LIBXML_REQUIRED_VERSION], [ + WITH_MODULES="`$PKG_CONFIG --variable=modules libxml-2.0`" + ], [ ]) + else + PKG_CHECK_MODULES_STATIC([LIBXML], [libxml-2.0 >= $LIBXML_REQUIRED_VERSION], + [ ], [ ]) + fi fi dnl @@ -509,15 +548,19 @@ if test "x$LIBXML_LIBS" = "x" && ${XML_CONFIG} --libs print > /dev/null 2>&1 then - AC_MSG_CHECKING(for libxml libraries >= $LIBXML_REQUIRED_VERSION) - XMLVERS=`$XML_CONFIG --version` - if test VERSION_TO_NUMBER(echo $XMLVERS) -ge VERSION_TO_NUMBER(echo $LIBXML_REQUIRED_VERSION) - then - AC_MSG_RESULT($XMLVERS found) - else - AC_MSG_ERROR(Version $XMLVERS found. You need at least libxml2 $LIBXML_REQUIRED_VERSION for this version of libxslt) - fi - LIBXML_LIBS="`$XML_CONFIG --libs`" + AC_MSG_CHECKING(for libxml libraries >= $LIBXML_REQUIRED_VERSION) + XMLVERS=`$XML_CONFIG --version` + if test VERSION_TO_NUMBER(echo $XMLVERS) -ge VERSION_TO_NUMBER(echo $LIBXML_REQUIRED_VERSION); then + AC_MSG_RESULT($XMLVERS found) + else + AC_MSG_ERROR(Version $XMLVERS found. You need at least libxml2 $LIBXML_REQUIRED_VERSION for this version of libxslt) + fi + + if test "$build_static_libs" = "no"; then + LIBXML_LIBS="`$XML_CONFIG --libs --dynamic`" + else + LIBXML_LIBS="`$XML_CONFIG --libs`" + fi LIBXML_CFLAGS="`$XML_CONFIG --cflags`" WITH_MODULES="`$XML_CONFIG --modules`" fi @@ -540,7 +583,7 @@ fi AC_MSG_CHECKING([whether shared libraries will be built (required for plugins)]) -if test "$enable_shared" = "no" -a "$with_plugins" = "yes"; then +if test "$build_shared_libs" = "no" -a "$with_plugins" = "yes"; then AC_MSG_RESULT(no) AC_MSG_WARN([Disabling plugin support.]) AC_MSG_WARN([Plugins require that shared libraries be built.]) @@ -598,17 +641,21 @@ XSLT_LIBDIR='-L${libdir}' XSLT_INCLUDEDIR='-I${includedir}' -XSLT_LIBS="-lxslt $LIBXML_LIBS $M_LIBS" +XSLT_LIBS="-lxslt $LIBXML_LIBS" +XSLT_PRIVATE_LIBS="$M_LIBS" AC_SUBST(XSLT_LIBDIR) AC_SUBST(XSLT_INCLUDEDIR) AC_SUBST(XSLT_LIBS) +AC_SUBST(XSLT_PRIVATE_LIBS) EXSLT_LIBDIR='-L${libdir}' EXSLT_INCLUDEDIR='-I${includedir}' -EXSLT_LIBS="-lexslt $XSLT_LIBS $LIBGCRYPT_LIBS" +EXSLT_LIBS="-lexslt $XSLT_LIBS" +EXSLT_PRIVATE_LIBS="$XSLT_PRIVATE_LIBS $LIBGCRYPT_LIBS" AC_SUBST(EXSLT_LIBDIR) AC_SUBST(EXSLT_INCLUDEDIR) AC_SUBST(EXSLT_LIBS) +AC_SUBST(EXSLT_PRIVATE_LIBS) AC_SUBST(EXTRA_LIBS) @@ -660,9 +707,12 @@ tests/exslt/date/Makefile tests/exslt/dynamic/Makefile tests/plugins/Makefile +tests/fuzz/Makefile doc/Makefile xslt-config libxslt.spec ]) +AC_CONFIG_LINKS([tests/fuzz/xpath.xml:tests/fuzz/xpath.xml]) +AC_CONFIG_LINKS([tests/fuzz/xslt.xml:tests/fuzz/xslt.xml]) AC_OUTPUT
diff --git a/third_party/libxslt/src/libexslt.pc.in b/third_party/libxslt/src/libexslt.pc.in index 16676ff..c0e954f0 100644 --- a/third_party/libxslt/src/libexslt.pc.in +++ b/third_party/libxslt/src/libexslt.pc.in
@@ -8,5 +8,6 @@ Version: @LIBEXSLT_VERSION@ Description: EXSLT Extension library Requires: libxml-2.0 -Libs: @EXSLT_LIBDIR@ @EXSLT_LIBS@ Cflags: @EXSLT_INCLUDEDIR@ +Libs: @EXSLT_LIBDIR@ @EXSLT_LIBS@ +Libs.private: @EXSLT_PRIVATE_LIBS@
diff --git a/third_party/libxslt/src/libexslt/crypto.c b/third_party/libxslt/src/libexslt/crypto.c index ac39038..621fd90 100644 --- a/third_party/libxslt/src/libexslt/crypto.c +++ b/third_party/libxslt/src/libexslt/crypto.c
@@ -755,7 +755,14 @@ PLATFORM_RC4_DECRYPT (ctxt, padkey, bin, ret_len, ret, ret_len); ret[ret_len] = 0; - xmlXPathReturnString (ctxt, ret); + if (xmlCheckUTF8(ret) == 0) { + xsltTransformError(tctxt, NULL, tctxt->inst, + "exsltCryptoRc4DecryptFunction: Invalid UTF-8\n"); + xmlFree(ret); + xmlXPathReturnEmptyString(ctxt); + } else { + xmlXPathReturnString(ctxt, ret); + } done: if (key != NULL)
diff --git a/third_party/libxslt/src/libexslt/date.c b/third_party/libxslt/src/libexslt/date.c index 32c9db70c..7e805bd 100644 --- a/third_party/libxslt/src/libexslt/date.c +++ b/third_party/libxslt/src/libexslt/date.c
@@ -141,9 +141,9 @@ #define IS_LEAP(y) \ (((y & 3) == 0) && ((y % 25 != 0) || ((y & 15) == 0))) -static const unsigned long daysInMonth[12] = +static const long daysInMonth[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; -static const unsigned long daysInMonthLeap[12] = +static const long daysInMonthLeap[12] = { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; #define MAX_DAYINMONTH(yr,mon) \ @@ -177,9 +177,9 @@ #define DAYS_PER_EPOCH (400 * 365 + 100 - 4 + 1) #define YEARS_PER_EPOCH 400 -static const unsigned long dayInYearByMonth[12] = +static const long dayInYearByMonth[12] = { 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334 }; -static const unsigned long dayInLeapYearByMonth[12] = +static const long dayInLeapYearByMonth[12] = { 0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335 }; #define DAY_IN_YEAR(day, month, year) \ @@ -187,6 +187,9 @@ dayInLeapYearByMonth[month - 1] : \ dayInYearByMonth[month - 1]) + day) +#define YEAR_MAX LONG_MAX +#define YEAR_MIN (-LONG_MAX + 1) + /** * _exsltDateParseGYear: * @dt: pointer to a date structure @@ -221,7 +224,7 @@ firstChar = cur; while ((*cur >= '0') && (*cur <= '9')) { - if (dt->year >= LONG_MAX / 10) + if (dt->year >= YEAR_MAX / 10) /* Not really exact */ return -1; dt->year = dt->year * 10 + (*cur - '0'); cur++; @@ -1474,11 +1477,12 @@ long ret; if (yr <= 0) { - ret = ((yr-2 + ((yr/4)-(yr/100)+(yr/400)) + yday) % 7); + /* Compute modulus twice to avoid integer overflow */ + ret = ((yr%7-2 + ((yr/4)-(yr/100)+(yr/400)) + yday) % 7); if (ret < 0) ret += 7; } else - ret = (((yr-1) + (((yr-1)/4)-((yr-1)/100)+((yr-1)/400)) + yday) % 7); + ret = (((yr%7-1) + (((yr-1)/4)-((yr-1)/100)+((yr-1)/400)) + yday) % 7); return ret; } @@ -1532,8 +1536,8 @@ * pathological cases. */ carry += (dur->day / DAYS_PER_EPOCH) * YEARS_PER_EPOCH; - if ((carry > 0 && dt->year > LONG_MAX - carry) || - (carry < 0 && dt->year < LONG_MIN - carry)) { + if ((carry > 0 && dt->year > YEAR_MAX - carry) || + (carry < 0 && dt->year < YEAR_MIN - carry)) { /* Overflow */ exsltDateFreeDate(ret); return NULL; @@ -1583,7 +1587,7 @@ ret->mon -= 1; } else { - if (ret->year == LONG_MIN) { + if (ret->year == YEAR_MIN) { exsltDateFreeDate(ret); return NULL; } @@ -1597,7 +1601,7 @@ ret->mon += 1; } else { - if (ret->year == LONG_MAX) { + if (ret->year == YEAR_MAX) { exsltDateFreeDate(ret); return NULL; }
diff --git a/third_party/libxslt/src/libexslt/dynamic.c b/third_party/libxslt/src/libexslt/dynamic.c index a5b569a..a8cc72d9 100644 --- a/third_party/libxslt/src/libexslt/dynamic.c +++ b/third_party/libxslt/src/libexslt/dynamic.c
@@ -127,7 +127,15 @@ goto cleanup; } - if (str == NULL || !xmlStrlen(str) || !(comp = xmlXPathCompile(str))) + tctxt = xsltXPathGetTransformContext(ctxt); + if (tctxt == NULL) { + xsltTransformError(xsltXPathGetTransformContext(ctxt), NULL, NULL, + "dyn:map : internal error tctxt == NULL\n"); + goto cleanup; + } + + if (str == NULL || !xmlStrlen(str) || + !(comp = xmlXPathCtxtCompile(tctxt->xpathCtxt, str))) goto cleanup; oldDoc = ctxt->context->doc; @@ -139,12 +147,6 @@ * since we really don't know we're going to be adding node(s) * down the road we create the RVT regardless */ - tctxt = xsltXPathGetTransformContext(ctxt); - if (tctxt == NULL) { - xsltTransformError(xsltXPathGetTransformContext(ctxt), NULL, NULL, - "dyn:map : internal error tctxt == NULL\n"); - goto cleanup; - } container = xsltCreateRVT(tctxt); if (container == NULL) { xsltTransformError(tctxt, NULL, NULL,
diff --git a/third_party/libxslt/src/libexslt/functions.c b/third_party/libxslt/src/libexslt/functions.c index 41d37493..2f744311 100644 --- a/third_party/libxslt/src/libexslt/functions.c +++ b/third_party/libxslt/src/libexslt/functions.c
@@ -674,7 +674,7 @@ */ sel = xmlGetNsProp(inst, (const xmlChar *) "select", NULL); if (sel != NULL) { - ret->select = xmlXPathCompile (sel); + ret->select = xsltXPathCompileFlags(style, sel, 0); xmlFree(sel); } /*
diff --git a/third_party/libxslt/src/libexslt/saxon.c b/third_party/libxslt/src/libexslt/saxon.c index 00b74a4..e8b6440 100644 --- a/third_party/libxslt/src/libexslt/saxon.c +++ b/third_party/libxslt/src/libexslt/saxon.c
@@ -105,7 +105,7 @@ ret = xmlHashLookup(hash, arg); if (ret == NULL) { - ret = xmlXPathCompile(arg); + ret = xmlXPathCtxtCompile(tctxt->xpathCtxt, arg); if (ret == NULL) { xmlFree(arg); xmlXPathSetError(ctxt, XPATH_EXPR_ERROR);
diff --git a/third_party/libxslt/src/libxslt.pc.in b/third_party/libxslt/src/libxslt.pc.in index 082d64c..81f8be12 100644 --- a/third_party/libxslt/src/libxslt.pc.in +++ b/third_party/libxslt/src/libxslt.pc.in
@@ -8,5 +8,6 @@ Version: @VERSION@ Description: XSLT library version 2. Requires: libxml-2.0 -Libs: @XSLT_LIBDIR@ @XSLT_LIBS@ @EXTRA_LIBS@ Cflags: @XSLT_INCLUDEDIR@ +Libs: @XSLT_LIBDIR@ @XSLT_LIBS@ @EXTRA_LIBS@ +Libs.private: @XSLT_PRIVATE_LIBS@
diff --git a/third_party/libxslt/src/libxslt.spec b/third_party/libxslt/src/libxslt.spec index cfc24411..80b320f 100644 --- a/third_party/libxslt/src/libxslt.spec +++ b/third_party/libxslt/src/libxslt.spec
@@ -1,6 +1,6 @@ Summary: Library providing the GNOME XSLT engine Name: libxslt -Version: 1.1.33 +Version: 1.1.34 Release: 1%{?dist}%{?extra_release} License: MIT Group: Development/Libraries @@ -70,7 +70,7 @@ rm -rf $RPM_BUILD_ROOT%{_datadir}/doc/%{name}{,-python}-%{version} %check -make check +make tests %clean rm -fr %{buildroot} @@ -122,12 +122,11 @@ %doc AUTHORS ChangeLog.gz NEWS README Copyright FEATURES %{_libdir}/python*/site-packages/libxslt.py* %{_libdir}/python*/site-packages/libxsltmod* -%doc python/TODO %doc python/libxsltclass.txt %doc python/tests/*.py %doc python/tests/*.xml %doc python/tests/*.xsl %changelog -* Thu Apr 11 2019 Daniel Veillard <veillard@redhat.com> -- upstream release 1.1.33 see http://xmlsoft.org/XSLT/news.html +* Fri Nov 8 2019 Daniel Veillard <veillard@redhat.com> +- upstream release 1.1.34 see http://xmlsoft.org/XSLT/news.html
diff --git a/third_party/libxslt/src/libxslt.spec.in b/third_party/libxslt/src/libxslt.spec.in index 96c0ca6..f4af4d4b 100644 --- a/third_party/libxslt/src/libxslt.spec.in +++ b/third_party/libxslt/src/libxslt.spec.in
@@ -70,7 +70,7 @@ rm -rf $RPM_BUILD_ROOT%{_datadir}/doc/%{name}{,-python}-%{version} %check -make check +make tests %clean rm -fr %{buildroot} @@ -122,7 +122,6 @@ %doc AUTHORS ChangeLog.gz NEWS README Copyright FEATURES %{_libdir}/python*/site-packages/libxslt.py* %{_libdir}/python*/site-packages/libxsltmod* -%doc python/TODO %doc python/libxsltclass.txt %doc python/tests/*.py %doc python/tests/*.xml
diff --git a/third_party/libxslt/src/libxslt/attrvt.c b/third_party/libxslt/src/libxslt/attrvt.c index 125159c..a885526 100644 --- a/third_party/libxslt/src/libxslt/attrvt.c +++ b/third_party/libxslt/src/libxslt/attrvt.c
@@ -48,7 +48,12 @@ /* * the content is an alternate of string and xmlXPathCompExprPtr */ - void *segments[MAX_AVT_SEG]; +#if __STDC_VERSION__ >= 199901L + /* Using a C99 flexible array member avoids false positives under UBSan */ + void *segments[]; +#else + void *segments[1]; +#endif }; /** @@ -62,15 +67,16 @@ static xsltAttrVTPtr xsltNewAttrVT(xsltStylesheetPtr style) { xsltAttrVTPtr cur; + size_t size = sizeof(xsltAttrVT) + MAX_AVT_SEG * sizeof(void*); - cur = (xsltAttrVTPtr) xmlMalloc(sizeof(xsltAttrVT)); + cur = (xsltAttrVTPtr) xmlMalloc(size); if (cur == NULL) { xsltTransformError(NULL, style, NULL, "xsltNewAttrVTPtr : malloc failed\n"); if (style != NULL) style->errors++; return(NULL); } - memset(cur, 0, sizeof(xsltAttrVT)); + memset(cur, 0, size); cur->nb_seg = 0; cur->max_seg = MAX_AVT_SEG; @@ -146,11 +152,14 @@ static xsltAttrVTPtr xsltSetAttrVTsegment(xsltAttrVTPtr avt, void *val) { if (avt->nb_seg >= avt->max_seg) { - avt = (xsltAttrVTPtr) xmlRealloc(avt, sizeof(xsltAttrVT) + - avt->max_seg * sizeof(void *)); - if (avt == NULL) { + size_t size = sizeof(xsltAttrVT) + + (avt->max_seg + MAX_AVT_SEG) * sizeof(void *); + xsltAttrVTPtr tmp = (xsltAttrVTPtr) xmlRealloc(avt, size); + if (tmp == NULL) { + xsltFreeAttrVT(avt); return NULL; } + avt = tmp; memset(&avt->segments[avt->nb_seg], 0, MAX_AVT_SEG*sizeof(void *)); avt->max_seg += MAX_AVT_SEG; } @@ -164,7 +173,7 @@ * @attr: the attribute coming from the stylesheet. * * Precompile an attribute in a stylesheet, basically it checks if it is - * an attrubute value template, and if yes establish some structures needed + * an attribute value template, and if yes, establish some structures needed * to process it at transformation time. */ void
diff --git a/third_party/libxslt/src/libxslt/functions.c b/third_party/libxslt/src/libxslt/functions.c index a21eedc..b350545a11 100644 --- a/third_party/libxslt/src/libxslt/functions.c +++ b/third_party/libxslt/src/libxslt/functions.c
@@ -55,7 +55,7 @@ /** * xsltXPathFunctionLookup: - * @ctxt: a void * but the XSLT transformation context actually + * @vctxt: a void * but the XSLT transformation context actually * @name: the function name * @ns_uri: the function namespace URI *
diff --git a/third_party/libxslt/src/libxslt/keys.c b/third_party/libxslt/src/libxslt/keys.c index 2881056..ecef538 100644 --- a/third_party/libxslt/src/libxslt/keys.c +++ b/third_party/libxslt/src/libxslt/keys.c
@@ -241,6 +241,8 @@ */ static int skipPredicate(const xmlChar *cur, int end) { + int level = 0; + if ((cur == NULL) || (end < 0)) return(-1); if (cur[end] != '[') return(end); end++; @@ -251,12 +253,12 @@ return(-1); continue; } else if (cur[end] == '[') { - end = skipPredicate(cur, end); - if (end <= 0) - return(-1); - continue; - } else if (cur[end] == ']') - return(end + 1); + level += 1; + } else if (cur[end] == ']') { + if (level == 0) + return(end + 1); + level -= 1; + } end++; } return(-1); @@ -629,6 +631,7 @@ xmlNodePtr oldContextNode; xsltDocumentPtr oldDocInfo; int oldXPPos, oldXPSize; + xmlNodePtr oldXPNode; xmlDocPtr oldXPDoc; int oldXPNsNr; xmlNsPtr *oldXPNamespaces; @@ -667,6 +670,7 @@ oldDocInfo = ctxt->document; oldContextNode = ctxt->node; + oldXPNode = xpctxt->node; oldXPDoc = xpctxt->doc; oldXPPos = xpctxt->proximityPosition; oldXPSize = xpctxt->contextSize; @@ -865,6 +869,7 @@ /* * Restore context state. */ + xpctxt->node = oldXPNode; xpctxt->doc = oldXPDoc; xpctxt->nsNr = oldXPNsNr; xpctxt->namespaces = oldXPNamespaces;
diff --git a/third_party/libxslt/src/libxslt/libxslt.syms b/third_party/libxslt/src/libxslt/libxslt.syms index 684cd1b..94b1d8a 100644 --- a/third_party/libxslt/src/libxslt/libxslt.syms +++ b/third_party/libxslt/src/libxslt/libxslt.syms
@@ -499,3 +499,13 @@ xsltDecimalFormatGetByQName; } LIBXML2_1.1.27; +LIBXML2_1.1.34 { + global: + +# xsltInternals + xsltParseStylesheetUser; + +# pattern + xsltCompMatchClearCache; +} LIBXML2_1.1.30; +
diff --git a/third_party/libxslt/src/libxslt/numbers.c b/third_party/libxslt/src/libxslt/numbers.c index 89e1f668..92023f8a5 100644 --- a/third_party/libxslt/src/libxslt/numbers.c +++ b/third_party/libxslt/src/libxslt/numbers.c
@@ -36,7 +36,7 @@ #define SYMBOL_QUOTE ((xmlChar)'\'') -#define DEFAULT_TOKEN (xmlChar)'0' +#define DEFAULT_TOKEN '0' #define DEFAULT_SEPARATOR "." #define MAX_TOKENS 1024 @@ -45,7 +45,7 @@ typedef xsltFormatToken *xsltFormatTokenPtr; struct _xsltFormatToken { xmlChar *separator; - xmlChar token; + int token; int width; }; @@ -107,20 +107,22 @@ (xsltUTF8Charcmp((letter), (self)->patternSeparator) == 0)) #define IS_DIGIT_ZERO(x) xsltIsDigitZero(x) -#define IS_DIGIT_ONE(x) xsltIsDigitZero((xmlChar)(x)-1) +#define IS_DIGIT_ONE(x) xsltIsDigitZero((x)-1) static int xsltIsDigitZero(unsigned int ch) { /* * Reference: ftp://ftp.unicode.org/Public/UNIDATA/UnicodeData.txt + * + * There a many more digit ranges in newer Unicode versions. These + * are only the zeros that match Digit in XML 1.0 (IS_DIGIT macro). */ switch (ch) { case 0x0030: case 0x0660: case 0x06F0: case 0x0966: case 0x09E6: case 0x0A66: case 0x0AE6: case 0x0B66: case 0x0C66: case 0x0CE6: case 0x0D66: case 0x0E50: - case 0x0E60: case 0x0F20: case 0x1040: case 0x17E0: - case 0x1810: case 0xFF10: + case 0x0ED0: case 0x0F20: return TRUE; default: return FALSE; @@ -382,11 +384,14 @@ tokens->tokens[tokens->nTokens].token = val - 1; ix += len; val = xmlStringCurrentChar(NULL, format+ix, &len); - } - } else if ( (val == (xmlChar)'A') || - (val == (xmlChar)'a') || - (val == (xmlChar)'I') || - (val == (xmlChar)'i') ) { + } else { + tokens->tokens[tokens->nTokens].token = '0'; + tokens->tokens[tokens->nTokens].width = 1; + } + } else if ( (val == 'A') || + (val == 'a') || + (val == 'I') || + (val == 'i') ) { tokens->tokens[tokens->nTokens].token = val; ix += len; val = xmlStringCurrentChar(NULL, format+ix, &len); @@ -397,7 +402,7 @@ * not support a numbering sequence that starts with that * token, it must use a format token of 1." */ - tokens->tokens[tokens->nTokens].token = (xmlChar)'0'; + tokens->tokens[tokens->nTokens].token = '0'; tokens->tokens[tokens->nTokens].width = 1; } /* @@ -824,6 +829,16 @@ output); } } + + /* + * Unlike `match` patterns, `count` and `from` patterns can contain + * variable references, so we have to clear the pattern match + * cache if the "direct" matching algorithm was used. + */ + if (data->countPat != NULL) + xsltCompMatchClearCache(ctxt, data->countPat); + if (data->fromPat != NULL) + xsltCompMatchClearCache(ctxt, data->fromPat); } /* Insert number as text node */ xsltCopyTextString(ctxt, ctxt->insert, xmlBufferContent(output), 0); @@ -844,7 +859,8 @@ static int xsltFormatNumberPreSuffix(xsltDecimalFormatPtr self, xmlChar **format, xsltFormatNumberInfoPtr info) { - int count=0; /* will hold total length of prefix/suffix */ + /* will hold total length of prefix/suffix without quote characters */ + int count=0; int len; while (1) { @@ -942,7 +958,6 @@ xmlBufferPtr buffer; xmlChar *the_format, *prefix = NULL, *suffix = NULL; xmlChar *nprefix, *nsuffix = NULL; - xmlChar pchar; int prefix_length, suffix_length = 0, nprefix_length, nsuffix_length; double scale; int j, len; @@ -970,7 +985,7 @@ *result = xmlStrdup(BAD_CAST "-"); else *result = xmlStrdup(self->minusSign); - /* no-break on purpose */ + /* Intentional fall-through */ case 1: if ((self == NULL) || (self->infinity == NULL)) *result = xmlStrcat(*result, BAD_CAST "Infinity"); @@ -1267,14 +1282,13 @@ xmlBufferAdd(buffer, self->minusSign, xmlUTF8Strsize(self->minusSign, 1)); /* Put the prefix into the buffer */ - for (j = 0; j < prefix_length; j++) { - if ((pchar = *prefix++) == SYMBOL_QUOTE) { - len = xmlUTF8Strsize(prefix, 1); - xmlBufferAdd(buffer, prefix, len); - prefix += len; - j += len - 1; /* length of symbol less length of quote */ - } else - xmlBufferAdd(buffer, &pchar, 1); + for (j = 0; j < prefix_length; ) { + if (*prefix == SYMBOL_QUOTE) + prefix++; + len = xmlUTF8Strsize(prefix, 1); + xmlBufferAdd(buffer, prefix, len); + prefix += len; + j += len; } /* Next do the integer part of the number */ @@ -1283,13 +1297,14 @@ number = floor((scale * number + 0.5)) / scale; if ((self->grouping != NULL) && (self->grouping[0] != 0)) { + int gchar; len = xmlStrlen(self->grouping); - pchar = xsltGetUTF8Char(self->grouping, &len); + gchar = xsltGetUTF8Char(self->grouping, &len); xsltNumberFormatDecimal(buffer, floor(number), self->zeroDigit[0], format_info.integer_digits, format_info.group, - pchar, len); + gchar, len); } else xsltNumberFormatDecimal(buffer, floor(number), self->zeroDigit[0], format_info.integer_digits, @@ -1332,14 +1347,13 @@ } } /* Put the suffix into the buffer */ - for (j = 0; j < suffix_length; j++) { - if ((pchar = *suffix++) == SYMBOL_QUOTE) { - len = xmlUTF8Strsize(suffix, 1); - xmlBufferAdd(buffer, suffix, len); - suffix += len; - j += len - 1; /* length of symbol less length of escape */ - } else - xmlBufferAdd(buffer, &pchar, 1); + for (j = 0; j < suffix_length; ) { + if (*suffix == SYMBOL_QUOTE) + suffix++; + len = xmlUTF8Strsize(suffix, 1); + xmlBufferAdd(buffer, suffix, len); + suffix += len; + j += len; } *result = xmlStrdup(xmlBufferContent(buffer));
diff --git a/third_party/libxslt/src/libxslt/pattern.c b/third_party/libxslt/src/libxslt/pattern.c index 7d66019..c649673 100644 --- a/third_party/libxslt/src/libxslt/pattern.c +++ b/third_party/libxslt/src/libxslt/pattern.c
@@ -113,7 +113,6 @@ xmlNsPtr *nsList; /* the namespaces in scope */ int nsNr; /* the number of namespaces in scope */ xsltStepOpPtr steps; /* ops for computation */ - int novar; /* doesn't contain variables */ }; typedef struct _xsltParserContext xsltParserContext; @@ -342,20 +341,14 @@ xsltAllocateExtra(ctxt->style); } if (op == XSLT_OP_PREDICATE) { - xmlXPathContextPtr xctxt; + int flags = 0; - if (ctxt->style != NULL) - xctxt = xmlXPathNewContext(ctxt->style->doc); - else - xctxt = xmlXPathNewContext(NULL); #ifdef XML_XPATH_NOVAR if (novar != 0) - xctxt->flags = XML_XPATH_NOVAR; + flags = XML_XPATH_NOVAR; #endif - if (ctxt->style != NULL) - xctxt->dict = ctxt->style->dict; - comp->steps[comp->nbStep].comp = xmlXPathCtxtCompile(xctxt, value); - xmlXPathFreeContext(xctxt); + comp->steps[comp->nbStep].comp = xsltXPathCompileFlags(ctxt->style, + value, flags); if (comp->steps[comp->nbStep].comp == NULL) { xsltTransformError(NULL, ctxt->style, ctxt->elem, "Failed to compile predicate\n"); @@ -595,8 +588,7 @@ } ix = 0; - if ((parent == NULL) || (node->doc == NULL) || isRVT || - (comp->novar == 0)) + if ((parent == NULL) || (node->doc == NULL) || isRVT) nocache = 1; if (nocache == 0) { @@ -1251,6 +1243,34 @@ return(0); } +/** + * xsltCompMatchClearCache: + * @ctxt: a XSLT process context + * @comp: the precompiled pattern list + * + * Clear pattern match cache. + */ +void +xsltCompMatchClearCache(xsltTransformContextPtr ctxt, xsltCompMatchPtr comp) { + xsltStepOpPtr sel; + xmlXPathObjectPtr list; + + if ((ctxt == NULL) || (comp == NULL)) + return; + + sel = &comp->steps[0]; + list = (xmlXPathObjectPtr) XSLT_RUNTIME_EXTRA_LST(ctxt, sel->lenExtra); + + if (list != NULL) { + xmlXPathFreeObject(list); + + XSLT_RUNTIME_EXTRA_LST(ctxt, sel->lenExtra) = NULL; + XSLT_RUNTIME_EXTRA(ctxt, sel->previousExtra, ptr) = NULL; + XSLT_RUNTIME_EXTRA(ctxt, sel->indexExtra, ival) = 0; + XSLT_RUNTIME_EXTRA_FREE(ctxt, sel->lenExtra) = NULL; + } +} + /************************************************************************ * * * Dedicated parser for templates * @@ -1795,9 +1815,7 @@ PUSH(XSLT_OP_PARENT, NULL, NULL, novar); NEXT; SKIP_BLANKS; - if ((CUR != 0) && (CUR != '|')) { - xsltCompileRelativePathPattern(ctxt, NULL, novar); - } + xsltCompileStepPattern(ctxt, NULL, novar); } else { ctxt->error = 1; } @@ -1862,6 +1880,8 @@ xsltCompileIdKeyPattern(ctxt, name, 1, novar, 0); xmlFree(name); name = NULL; + if (ctxt->error) + return; if ((CUR == '/') && (NXT(1) == '/')) { PUSH(XSLT_OP_ANCESTOR, NULL, NULL, novar); NEXT; @@ -1972,7 +1992,6 @@ j++; } element->nsNr = j; - element->novar = novar; #ifdef WITH_XSLT_DEBUG_PATTERN @@ -2137,8 +2156,15 @@ xmlHashAddEntry2(style->namedTemplates, cur->name, cur->nameURI, cur); } - if (cur->match == NULL) + if (cur->match == NULL) { + if (cur->name == NULL) { + xsltTransformError(NULL, style, cur->elem, + "xsl:template: need to specify match or name attribute\n"); + style->errors++; + return(-1); + } return(0); + } priority = cur->priority; pat = xsltCompilePatternInternal(cur->match, style->doc, cur->elem, @@ -2364,6 +2390,7 @@ case XML_ELEMENT_NODE: if (node->name[0] == ' ') break; + /* Intentional fall-through */ case XML_ATTRIBUTE_NODE: case XML_PI_NODE: name = node->name; @@ -2401,7 +2428,7 @@ list = NULL; while (list != NULL) { if (xsltTestCompMatch(ctxt, list, node, - ctxt->mode, ctxt->modeURI)) { + ctxt->mode, ctxt->modeURI) == 1) { ret = list->template; priority = list->priority; break; @@ -2470,7 +2497,7 @@ while ((list != NULL) && ((ret == NULL) || (list->priority > priority))) { if (xsltTestCompMatch(ctxt, list, node, - ctxt->mode, ctxt->modeURI)) { + ctxt->mode, ctxt->modeURI) == 1) { ret = list->template; priority = list->priority; break; @@ -2487,7 +2514,7 @@ while ((list != NULL) && ((ret == NULL) || (list->priority > priority))) { if (xsltTestCompMatch(ctxt, list, node, - ctxt->mode, ctxt->modeURI)) { + ctxt->mode, ctxt->modeURI) == 1) { ret = list->template; priority = list->priority; break; @@ -2500,7 +2527,7 @@ while ((list != NULL) && ((ret == NULL) || (list->priority > priority))) { if (xsltTestCompMatch(ctxt, list, node, - ctxt->mode, ctxt->modeURI)) { + ctxt->mode, ctxt->modeURI) == 1) { ret = list->template; priority = list->priority; break; @@ -2515,7 +2542,7 @@ while ((list != NULL) && ((ret == NULL) || (list->priority > priority))) { if (xsltTestCompMatch(ctxt, list, node, - ctxt->mode, ctxt->modeURI)) { + ctxt->mode, ctxt->modeURI) == 1) { ret = list->template; priority = list->priority; break;
diff --git a/third_party/libxslt/src/libxslt/pattern.h b/third_party/libxslt/src/libxslt/pattern.h index eb21be32..a0991c0c 100644 --- a/third_party/libxslt/src/libxslt/pattern.h +++ b/third_party/libxslt/src/libxslt/pattern.h
@@ -45,6 +45,9 @@ xmlNodePtr node, xsltCompMatchPtr comp); XSLTPUBFUN void XSLTCALL + xsltCompMatchClearCache (xsltTransformContextPtr ctxt, + xsltCompMatchPtr comp); +XSLTPUBFUN void XSLTCALL xsltNormalizeCompSteps (void *payload, void *data, const xmlChar *name);
diff --git a/third_party/libxslt/src/libxslt/templates.c b/third_party/libxslt/src/libxslt/templates.c index 88547ed8..48b73a5 100644 --- a/third_party/libxslt/src/libxslt/templates.c +++ b/third_party/libxslt/src/libxslt/templates.c
@@ -332,7 +332,7 @@ nsNr = i; } } - comp = xmlXPathCompile(expr); + comp = xmlXPathCtxtCompile(ctxt->xpathCtxt, expr); val = xsltEvalXPathStringNs(ctxt, comp, nsNr, nsList); xmlXPathFreeCompExpr(comp); xmlFree(expr);
diff --git a/third_party/libxslt/src/libxslt/transform.c b/third_party/libxslt/src/libxslt/transform.c index 0636dbd..d1c4793 100644 --- a/third_party/libxslt/src/libxslt/transform.c +++ b/third_party/libxslt/src/libxslt/transform.c
@@ -232,6 +232,8 @@ ctxt->vars = NULL; } +#ifdef WITH_PROFILER + /** * profPush: * @ctxt: the transformation context @@ -340,6 +342,8 @@ } } +#endif /* WITH_PROFILER */ + /** * xsltPreCompEval: * @ctxt: transform context @@ -1090,6 +1094,8 @@ if ((copy->content = xmlStrdup(cur->content)) == NULL) return NULL; } + + ctxt->lasttext = NULL; } else { /* * normal processing. keep counters to extend the text node @@ -2205,6 +2211,7 @@ } } +#ifdef WITH_DEBUGGER static xmlNodePtr xsltDebuggerStartSequenceConstructor(xsltTransformContextPtr ctxt, xmlNodePtr contextNode, @@ -2240,6 +2247,7 @@ } return(debugedNode); } +#endif /* WITH_DEBUGGER */ /** * xsltLocalVariablePush: @@ -2411,6 +2419,17 @@ */ cur = list; while (cur != NULL) { + if (ctxt->opLimit != 0) { + if (ctxt->opCount >= ctxt->opLimit) { + xsltTransformError(ctxt, NULL, cur, + "xsltApplySequenceConstructor: " + "Operation limit exceeded\n"); + ctxt->state = XSLT_STATE_STOPPED; + goto error; + } + ctxt->opCount += 1; + } + ctxt->inst = cur; #ifdef WITH_DEBUGGER @@ -2867,6 +2886,7 @@ /* * Search if there are fallbacks */ + ctxt->insert = insert; child = cur->children; while (child != NULL) { if ((IS_XSLT_ELEM(child)) && @@ -2878,6 +2898,7 @@ } child = child->next; } + ctxt->insert = oldInsert; if (!found) { xsltTransformError(ctxt, NULL, cur, @@ -3086,10 +3107,12 @@ xsltStackElemPtr withParams) { int oldVarsBase = 0; - long start = 0; xmlNodePtr cur; xsltStackElemPtr tmpParam = NULL; xmlDocPtr oldUserFragmentTop; +#ifdef WITH_PROFILER + long start = 0; +#endif #ifdef XSLT_REFACTORED xsltStyleItemParamPtr iparam; @@ -3144,12 +3167,16 @@ ctxt->varsBase = ctxt->varsNr; ctxt->node = contextNode; + +#ifdef WITH_PROFILER if (ctxt->profile) { templ->nbCalls++; start = xsltTimestamp(); profPush(ctxt, 0); profCallgraphAdd(templ, ctxt->templ); } +#endif + /* * Push the xsl:template declaration onto the stack. */ @@ -3257,6 +3284,8 @@ * Pop the xsl:template declaration from the stack. */ templPop(ctxt); + +#ifdef WITH_PROFILER if (ctxt->profile) { long spent, child, total, end; @@ -3277,6 +3306,7 @@ if (ctxt->profNr > 0) ctxt->profTab[ctxt->profNr - 1] += total; } +#endif #ifdef WITH_DEBUGGER if ((ctxt->debugStatus != XSLT_DEBUG_NONE) && (addCallResult)) { @@ -3434,7 +3464,7 @@ * XPath expression. * (see http://xml.apache.org/xalan-j/extensionslib.html#redirect) */ - cmp = xmlXPathCompile(URL); + cmp = xmlXPathCtxtCompile(ctxt->xpathCtxt, URL); val = xsltEvalXPathString(ctxt, cmp); xmlXPathFreeCompExpr(cmp); xmlFree(URL); @@ -4998,7 +5028,7 @@ break; } } - /* no break on purpose */ + /* Intentional fall-through */ case XML_ELEMENT_NODE: case XML_DOCUMENT_NODE: case XML_HTML_DOCUMENT_NODE: @@ -5898,8 +5928,16 @@ ctxt->initialContextDoc = doc; ctxt->initialContextNode = (xmlNodePtr) doc; - if (profile != NULL) + if (profile != NULL) { +#ifdef WITH_PROFILER ctxt->profile = 1; +#else + xsltTransformError(ctxt, NULL, (xmlNodePtr) doc, + "xsltApplyStylesheetInternal: " + "libxslt compiled without profiler\n"); + goto error; +#endif + } if (output != NULL) ctxt->outputFile = output; @@ -6174,9 +6212,12 @@ } } xmlXPathFreeNodeSet(ctxt->nodeList); + +#ifdef WITH_PROFILER if (profile != NULL) { xsltSaveProfiling(ctxt, profile); } +#endif /* * Be pedantic.
diff --git a/third_party/libxslt/src/libxslt/variables.c b/third_party/libxslt/src/libxslt/variables.c index 8f88e57..4c972a4 100644 --- a/third_party/libxslt/src/libxslt/variables.c +++ b/third_party/libxslt/src/libxslt/variables.c
@@ -205,7 +205,8 @@ * This function is unsupported in newer releases of libxslt. */ int -xsltExtensionInstructionResultFinalize(xsltTransformContextPtr ctxt) +xsltExtensionInstructionResultFinalize( + xsltTransformContextPtr ctxt ATTRIBUTE_UNUSED) { xmlGenericError(xmlGenericErrorContext, "xsltExtensionInstructionResultFinalize is unsupported " @@ -230,8 +231,9 @@ * libxslt. */ int -xsltExtensionInstructionResultRegister(xsltTransformContextPtr ctxt, - xmlXPathObjectPtr obj) +xsltExtensionInstructionResultRegister( + xsltTransformContextPtr ctxt ATTRIBUTE_UNUSED, + xmlXPathObjectPtr obj ATTRIBUTE_UNUSED) { return(0); } @@ -858,7 +860,7 @@ if ((comp != NULL) && (comp->comp != NULL)) { xpExpr = comp->comp; } else { - xpExpr = xmlXPathCompile(variable->select); + xpExpr = xmlXPathCtxtCompile(ctxt->xpathCtxt, variable->select); } if (xpExpr == NULL) return(NULL); @@ -1099,7 +1101,7 @@ if ((comp != NULL) && (comp->comp != NULL)) { xpExpr = comp->comp; } else { - xpExpr = xmlXPathCompile(elem->select); + xpExpr = xmlXPathCtxtCompile(ctxt->xpathCtxt, elem->select); } if (xpExpr == NULL) goto error; @@ -1550,7 +1552,7 @@ result = NULL; if (eval != 0) { - xpExpr = xmlXPathCompile(value); + xpExpr = xmlXPathCtxtCompile(ctxt->xpathCtxt, value); if (xpExpr != NULL) { xmlDocPtr oldXPDoc; xmlNodePtr oldXPContextNode; @@ -1967,7 +1969,7 @@ * @inst: the xsl:with-param instruction element * * Processes an xsl:with-param instruction at transformation time. - * The value is compute, but not recorded. + * The value is computed, but not recorded. * NOTE that this is also called with an *xsl:param* element * from exsltFuncFunctionFunction(). *
diff --git a/third_party/libxslt/src/libxslt/xslt.c b/third_party/libxslt/src/libxslt/xslt.c index a234eb7..7a1ce011 100644 --- a/third_party/libxslt/src/libxslt/xslt.c +++ b/third_party/libxslt/src/libxslt/xslt.c
@@ -592,10 +592,6 @@ } if (cctxt->tmpList != NULL) xsltPointerListFree(cctxt->tmpList); -#ifdef XSLT_REFACTORED_XPATHCOMP - if (cctxt->xpathCtxt != NULL) - xmlXPathFreeContext(cctxt->xpathCtxt); -#endif if (cctxt->nsAliases != NULL) xsltFreeNsAliasList(cctxt->nsAliases); @@ -631,15 +627,6 @@ if (ret->tmpList == NULL) { goto internal_err; } -#ifdef XSLT_REFACTORED_XPATHCOMP - /* - * Create the XPath compilation context in order - * to speed up precompilation of XPath expressions. - */ - ret->xpathCtxt = xmlXPathNewContext(NULL); - if (ret->xpathCtxt == NULL) - goto internal_err; -#endif return(ret); @@ -761,14 +748,15 @@ #endif /** - * xsltNewStylesheet: + * xsltNewStylesheetInternal: + * @parent: the parent stylesheet or NULL * * Create a new XSLT Stylesheet * * Returns the newly allocated xsltStylesheetPtr or NULL in case of error */ -xsltStylesheetPtr -xsltNewStylesheet(void) { +static xsltStylesheetPtr +xsltNewStylesheetInternal(xsltStylesheetPtr parent) { xsltStylesheetPtr ret = NULL; ret = (xsltStylesheetPtr) xmlMalloc(sizeof(xsltStylesheet)); @@ -779,6 +767,7 @@ } memset(ret, 0, sizeof(xsltStylesheet)); + ret->parent = parent; ret->omitXmlDeclaration = -1; ret->standalone = -1; ret->decimalFormat = xsltNewDecimalFormat(NULL, NULL); @@ -799,6 +788,21 @@ "creating dictionary for stylesheet\n"); #endif + if (parent == NULL) { + ret->principal = ret; + + ret->xpathCtxt = xmlXPathNewContext(NULL); + if (ret->xpathCtxt == NULL) { + xsltTransformError(NULL, NULL, NULL, + "xsltNewStylesheet: xmlXPathNewContext failed\n"); + goto internal_err; + } + if (xmlXPathContextSetCache(ret->xpathCtxt, 1, -1, 0) == -1) + goto internal_err; + } else { + ret->principal = parent->principal; + } + xsltInit(); return(ret); @@ -810,6 +814,18 @@ } /** + * xsltNewStylesheet: + * + * Create a new XSLT Stylesheet + * + * Returns the newly allocated xsltStylesheetPtr or NULL in case of error + */ +xsltStylesheetPtr +xsltNewStylesheet(void) { + return xsltNewStylesheetInternal(NULL); +} + +/** * xsltAllocateExtra: * @style: an XSLT stylesheet * @@ -1065,6 +1081,9 @@ #endif xmlDictFree(style->dict); + if (style->xpathCtxt != NULL) + xmlXPathFreeContext(style->xpathCtxt); + memset(style, -1, sizeof(xsltStylesheet)); xmlFree(style); } @@ -1349,8 +1368,8 @@ * via the stylesheet's error handling. */ xsltTransformError(NULL, style, cur, - "Attribute 'cdata-section-elements': The value " - "'%s' is not a valid QName.\n", element); + "Attribute 'cdata-section-elements': " + "Not a valid QName.\n"); style->errors++; } else { xmlNsPtr ns; @@ -5479,7 +5498,7 @@ /** * xsltIncludeComp: - * @cctxt: the compilation contenxt + * @cctxt: the compilation context * @node: the xsl:include node * * Process the xslt include node on the source node @@ -6532,54 +6551,67 @@ if (doc == NULL) return(NULL); - retStyle = xsltNewStylesheet(); + retStyle = xsltNewStylesheetInternal(parentStyle); if (retStyle == NULL) return(NULL); - /* - * Set the importing stylesheet module; also used to detect recursion. - */ - retStyle->parent = parentStyle; + + if (xsltParseStylesheetUser(retStyle, doc) != 0) { + xsltFreeStylesheet(retStyle); + return(NULL); + } + + return(retStyle); +} + +/** + * xsltParseStylesheetUser: + * @style: pointer to the stylesheet + * @doc: an xmlDoc parsed XML + * + * Parse an XSLT stylesheet with a user-provided stylesheet struct. + * + * Returns 0 if successful, -1 in case of error. + */ +int +xsltParseStylesheetUser(xsltStylesheetPtr style, xmlDocPtr doc) { + if ((style == NULL) || (doc == NULL)) + return(-1); + /* * Adjust the string dict. */ if (doc->dict != NULL) { - xmlDictFree(retStyle->dict); - retStyle->dict = doc->dict; + xmlDictFree(style->dict); + style->dict = doc->dict; #ifdef WITH_XSLT_DEBUG xsltGenericDebug(xsltGenericDebugContext, "reusing dictionary from %s for stylesheet\n", doc->URL); #endif - xmlDictReference(retStyle->dict); + xmlDictReference(style->dict); } /* * TODO: Eliminate xsltGatherNamespaces(); we must not restrict * the stylesheet to containt distinct namespace prefixes. */ - xsltGatherNamespaces(retStyle); + xsltGatherNamespaces(style); #ifdef XSLT_REFACTORED { xsltCompilerCtxtPtr cctxt; xsltStylesheetPtr oldCurSheet; - if (parentStyle == NULL) { + if (style->parent == NULL) { xsltPrincipalStylesheetDataPtr principalData; /* - * Principal stylesheet - * -------------------- - */ - retStyle->principal = retStyle; - /* * Create extra data for the principal stylesheet. */ principalData = xsltNewPrincipalStylesheetData(); if (principalData == NULL) { - xsltFreeStylesheet(retStyle); - return(NULL); + return(-1); } - retStyle->principalData = principalData; + style->principalData = principalData; /* * Create the compilation context * ------------------------------ @@ -6587,14 +6619,13 @@ * This is currently the only function where the * compilation context is created. */ - cctxt = xsltCompilationCtxtCreate(retStyle); + cctxt = xsltCompilationCtxtCreate(style); if (cctxt == NULL) { - xsltFreeStylesheet(retStyle); - return(NULL); + return(-1); } - retStyle->compCtxt = (void *) cctxt; - cctxt->style = retStyle; - cctxt->dict = retStyle->dict; + style->compCtxt = (void *) cctxt; + cctxt->style = style; + cctxt->dict = style->dict; cctxt->psData = principalData; /* * Push initial dummy node info. @@ -6605,22 +6636,21 @@ /* * Imported stylesheet. */ - retStyle->principal = parentStyle->principal; - cctxt = parentStyle->compCtxt; - retStyle->compCtxt = cctxt; + cctxt = style->parent->compCtxt; + style->compCtxt = cctxt; } /* * Save the old and set the current stylesheet structure in the * compilation context. */ oldCurSheet = cctxt->style; - cctxt->style = retStyle; + cctxt->style = style; - retStyle->doc = doc; - xsltParseStylesheetProcess(retStyle, doc); + style->doc = doc; + xsltParseStylesheetProcess(style, doc); cctxt->style = oldCurSheet; - if (parentStyle == NULL) { + if (style->parent == NULL) { /* * Pop the initial dummy node info. */ @@ -6631,65 +6661,54 @@ * stylesheets. * TODO: really? */ - /* retStyle->compCtxt = NULL; */ + /* style->compCtxt = NULL; */ } - /* - * Free the stylesheet if there were errors. - */ - if (retStyle != NULL) { - if (retStyle->errors != 0) { -#ifdef XSLT_REFACTORED_XSLT_NSCOMP - /* - * Restore all changes made to namespace URIs of ns-decls. - */ - if (cctxt->psData->nsMap) - xsltRestoreDocumentNamespaces(cctxt->psData->nsMap, doc); -#endif - /* - * Detach the doc from the stylesheet; otherwise the doc - * will be freed in xsltFreeStylesheet(). - */ - retStyle->doc = NULL; - /* - * Cleanup the doc if its the main stylesheet. - */ - if (parentStyle == NULL) { - xsltCleanupStylesheetTree(doc, xmlDocGetRootElement(doc)); - if (retStyle->compCtxt != NULL) { - xsltCompilationCtxtFree(retStyle->compCtxt); - retStyle->compCtxt = NULL; - } - } - xsltFreeStylesheet(retStyle); - retStyle = NULL; - } - } +#ifdef XSLT_REFACTORED_XSLT_NSCOMP + if (style->errors != 0) { + /* + * Restore all changes made to namespace URIs of ns-decls. + */ + if (cctxt->psData->nsMap) + xsltRestoreDocumentNamespaces(cctxt->psData->nsMap, doc); + } +#endif + + if (style->parent == NULL) { + xsltCompilationCtxtFree(style->compCtxt); + style->compCtxt = NULL; + } } #else /* XSLT_REFACTORED */ /* * Old behaviour. */ - retStyle->doc = doc; - if (xsltParseStylesheetProcess(retStyle, doc) == NULL) { - retStyle->doc = NULL; - xsltFreeStylesheet(retStyle); - retStyle = NULL; - } - if (retStyle != NULL) { - if (retStyle->errors != 0) { - retStyle->doc = NULL; - if (parentStyle == NULL) - xsltCleanupStylesheetTree(doc, - xmlDocGetRootElement(doc)); - xsltFreeStylesheet(retStyle); - retStyle = NULL; - } + style->doc = doc; + if (xsltParseStylesheetProcess(style, doc) == NULL) { + style->doc = NULL; + return(-1); } #endif /* else of XSLT_REFACTORED */ - return(retStyle); + if (style->errors != 0) { + /* + * Detach the doc from the stylesheet; otherwise the doc + * will be freed in xsltFreeStylesheet(). + */ + style->doc = NULL; + /* + * Cleanup the doc if its the main stylesheet. + */ + if (style->parent == NULL) + xsltCleanupStylesheetTree(doc, xmlDocGetRootElement(doc)); + return(-1); + } + + if (style->parent == NULL) + xsltResolveStylesheetAttributeSet(style); + + return(0); } /** @@ -6707,27 +6726,9 @@ xsltStylesheetPtr xsltParseStylesheetDoc(xmlDocPtr doc) { - xsltStylesheetPtr ret; - xsltInitGlobals(); - ret = xsltParseStylesheetImportedDoc(doc, NULL); - if (ret == NULL) - return(NULL); - - xsltResolveStylesheetAttributeSet(ret); -#ifdef XSLT_REFACTORED - /* - * Free the compilation context. - * TODO: Check if it's better to move this cleanup to - * xsltParseStylesheetImportedDoc(). - */ - if (ret->compCtxt != NULL) { - xsltCompilationCtxtFree(XSLT_CCTXT(ret)); - ret->compCtxt = NULL; - } -#endif - return(ret); + return(xsltParseStylesheetImportedDoc(doc, NULL)); } /**
diff --git a/third_party/libxslt/src/libxslt/xsltInternals.h b/third_party/libxslt/src/libxslt/xsltInternals.h index f9066ad..14a971a 100644 --- a/third_party/libxslt/src/libxslt/xsltInternals.h +++ b/third_party/libxslt/src/libxslt/xsltInternals.h
@@ -105,14 +105,6 @@ */ /* #define XSLT_REFACTORED_XSLT_NSCOMP */ -/** - * XSLT_REFACTORED_XPATHCOMP: - * - * Internal define to enable the optimization of the - * compilation of XPath expressions. - */ -#define XSLT_REFACTORED_XPATHCOMP - #ifdef XSLT_REFACTORED_XSLT_NSCOMP extern const xmlChar *xsltConstNamespaceNameXSLT; @@ -478,7 +470,7 @@ */ struct _xsltElemPreComp { xsltElemPreCompPtr next; /* next item in the global chained - list hold by xsltStylesheet. */ + list held by xsltStylesheet. */ xsltStyleType type; /* type of the element */ xsltTransformFunction func; /* handling function */ xmlNodePtr inst; /* the node in the stylesheet's tree @@ -590,7 +582,7 @@ */ struct _xsltStylePreComp { xsltElemPreCompPtr next; /* next item in the global chained - list hold by xsltStylesheet */ + list held by xsltStylesheet */ xsltStyleType type; /* type of the item */ xsltTransformFunction func; /* handling function */ xmlNodePtr inst; /* the node in the stylesheet's tree @@ -1346,9 +1338,6 @@ */ int strict; xsltPrincipalStylesheetDataPtr psData; -#ifdef XSLT_REFACTORED_XPATHCOMP - xmlXPathContextPtr xpathCtxt; -#endif xsltStyleItemUknownPtr unknownItem; int hasNsAliases; /* Indicator if there was an xsl:namespace-alias. */ xsltNsAliasPtr nsAliases; @@ -1642,6 +1631,8 @@ int forwards_compatible; xmlHashTablePtr namedTemplates; /* hash table of named templates */ + + xmlXPathContextPtr xpathCtxt; }; typedef struct _xsltTransformCache xsltTransformCache; @@ -1789,6 +1780,8 @@ int depth; /* Needed to catch recursions */ int maxTemplateDepth; int maxTemplateVars; + unsigned long opLimit; + unsigned long opCount; }; /** @@ -1871,6 +1864,9 @@ XSLTPUBFUN xsltStylesheetPtr XSLTCALL xsltParseStylesheetImportedDoc(xmlDocPtr doc, xsltStylesheetPtr style); +XSLTPUBFUN int XSLTCALL + xsltParseStylesheetUser(xsltStylesheetPtr style, + xmlDocPtr doc); XSLTPUBFUN xsltStylesheetPtr XSLTCALL xsltLoadStylesheetPI (xmlDocPtr doc); XSLTPUBFUN void XSLTCALL
diff --git a/third_party/libxslt/src/libxslt/xsltconfig.h b/third_party/libxslt/src/libxslt/xsltconfig.h index 6cd7aa5..e10800d9 100644 --- a/third_party/libxslt/src/libxslt/xsltconfig.h +++ b/third_party/libxslt/src/libxslt/xsltconfig.h
@@ -20,21 +20,21 @@ * * the version string like "1.2.3" */ -#define LIBXSLT_DOTTED_VERSION "1.1.33" +#define LIBXSLT_DOTTED_VERSION "1.1.34" /** * LIBXSLT_VERSION: * * the version number: 1.2.3 value is 10203 */ -#define LIBXSLT_VERSION 10133 +#define LIBXSLT_VERSION 10134 /** * LIBXSLT_VERSION_STRING: * * the version number string, 1.2.3 value is "10203" */ -#define LIBXSLT_VERSION_STRING "10133" +#define LIBXSLT_VERSION_STRING "10134" /** * LIBXSLT_VERSION_EXTRA: @@ -111,6 +111,19 @@ #endif /** + * WITH_PROFILER: + * + * Activate the compilation of the profiler. Speed penalty + * is insignifiant. + * On by default unless --without-profiler is passed to configure + */ +#if 1 +#ifndef WITH_PROFILER +#define WITH_PROFILER +#endif +#endif + +/** * WITH_MODULES: * * Whether module support is configured into libxslt @@ -120,7 +133,7 @@ #ifndef WITH_MODULES #define WITH_MODULES #endif -#define LIBXSLT_DEFAULT_PLUGINS_PATH() "NULL" +#define LIBXSLT_DEFAULT_PLUGINS_PATH() "/usr/local/lib/libxslt-plugins" #endif /**
diff --git a/third_party/libxslt/src/libxslt/xsltconfig.h.in b/third_party/libxslt/src/libxslt/xsltconfig.h.in index f381ded..726e444 100644 --- a/third_party/libxslt/src/libxslt/xsltconfig.h.in +++ b/third_party/libxslt/src/libxslt/xsltconfig.h.in
@@ -111,6 +111,19 @@ #endif /** + * WITH_PROFILER: + * + * Activate the compilation of the profiler. Speed penalty + * is insignifiant. + * On by default unless --without-profiler is passed to configure + */ +#if @WITH_PROFILER@ +#ifndef WITH_PROFILER +#define WITH_PROFILER +#endif +#endif + +/** * WITH_MODULES: * * Whether module support is configured into libxslt
diff --git a/third_party/libxslt/src/libxslt/xsltutils.c b/third_party/libxslt/src/libxslt/xsltutils.c index adefde9..94097b9 100644 --- a/third_party/libxslt/src/libxslt/xsltutils.c +++ b/third_party/libxslt/src/libxslt/xsltutils.c
@@ -1578,7 +1578,15 @@ xmlOutputBufferWriteString(buf, "?>\n"); } if (result->children != NULL) { - xmlNodePtr child = result->children; + xmlNodePtr children = result->children; + xmlNodePtr child = children; + + /* + * Hack to avoid quadratic behavior when scanning + * result->children in xmlGetIntSubset called by + * xmlNodeDumpOutput. + */ + result->children = NULL; while (child != NULL) { xmlNodeDumpOutput(buf, result, child, 0, (indent == 1), @@ -1591,6 +1599,8 @@ } if (indent) xmlOutputBufferWriteString(buf, "\n"); + + result->children = children; } xmlOutputBufferFlush(buf); } @@ -1788,6 +1798,8 @@ return 0; } +#ifdef WITH_PROFILER + /************************************************************************ * * * Generating profiling information * @@ -2265,6 +2277,8 @@ return ret; } +#endif /* WITH_PROFILER */ + /************************************************************************ * * * Hooks for libxml2 XPath * @@ -2288,25 +2302,7 @@ xmlXPathCompExprPtr ret; if (style != NULL) { -#ifdef XSLT_REFACTORED_XPATHCOMP - if (XSLT_CCTXT(style)) { - /* - * Proposed by Jerome Pesenti - * -------------------------- - * For better efficiency we'll reuse the compilation - * context's XPath context. For the common stylesheet using - * XPath expressions this will reduce compilation time to - * about 50%. - * - * See http://mail.gnome.org/archives/xslt/2006-April/msg00037.html - */ - xpathCtxt = XSLT_CCTXT(style)->xpathCtxt; - xpathCtxt->doc = style->doc; - } else - xpathCtxt = xmlXPathNewContext(style->doc); -#else - xpathCtxt = xmlXPathNewContext(style->doc); -#endif + xpathCtxt = style->principal->xpathCtxt; if (xpathCtxt == NULL) return NULL; xpathCtxt->dict = style->dict; @@ -2322,13 +2318,9 @@ */ ret = xmlXPathCtxtCompile(xpathCtxt, str); -#ifdef XSLT_REFACTORED_XPATHCOMP - if ((style == NULL) || (! XSLT_CCTXT(style))) { + if (style == NULL) { xmlXPathFreeContext(xpathCtxt); } -#else - xmlXPathFreeContext(xpathCtxt); -#endif /* * TODO: there is a lot of optimizations which should be possible * like variable slot precomputations, function precomputations, etc. @@ -2358,6 +2350,23 @@ * * ************************************************************************/ +int xslDebugStatus; + +/** + * xsltGetDebuggerStatus: + * + * Get xslDebugStatus. + * + * Returns the value of xslDebugStatus. + */ +int +xsltGetDebuggerStatus(void) +{ + return(xslDebugStatus); +} + +#ifdef WITH_DEBUGGER + /* * There is currently only 3 debugging callback defined * Debugger callbacks are disabled by default @@ -2378,8 +2387,6 @@ NULL /* drop */ }; -int xslDebugStatus; - /** * xsltSetDebuggerStatus: * @value : the value to be set @@ -2393,19 +2400,6 @@ } /** - * xsltGetDebuggerStatus: - * - * Get xslDebugStatus. - * - * Returns the value of xslDebugStatus. - */ -int -xsltGetDebuggerStatus(void) -{ - return(xslDebugStatus); -} - -/** * xsltSetDebuggerCallbacks: * @no : number of callbacks * @block : the block of callbacks @@ -2479,3 +2473,5 @@ xsltDebuggerCurrentCallbacks.drop(); } +#endif /* WITH_DEBUGGER */ +
diff --git a/third_party/libxslt/src/libxslt/xsltutils.h b/third_party/libxslt/src/libxslt/xsltutils.h index 789865a..ea6c374 100644 --- a/third_party/libxslt/src/libxslt/xsltutils.h +++ b/third_party/libxslt/src/libxslt/xsltutils.h
@@ -80,7 +80,7 @@ ((n)->type == XML_PI_NODE))) /* - * Our own version of namespaced atributes lookup. + * Our own version of namespaced attributes lookup. */ XSLTPUBFUN xmlChar * XSLTCALL xsltGetNsProp (xmlNodePtr node,
diff --git a/third_party/libxslt/src/win32/libxslt.def.src b/third_party/libxslt/src/win32/libxslt.def.src index fe7e767c..b4846a6 100644 --- a/third_party/libxslt/src/win32/libxslt.def.src +++ b/third_party/libxslt/src/win32/libxslt.def.src
@@ -44,6 +44,7 @@ xsltCleanupGlobals xsltCleanupTemplates xsltComment +xsltCompMatchClearCache xsltCompileAttr xsltCompilePattern xsltComputeSortResult @@ -176,6 +177,7 @@ xsltParseStylesheetOutput xsltParseStylesheetParam xsltParseStylesheetProcess +xsltParseStylesheetUser xsltParseStylesheetVariable xsltParseTemplateContent xsltPointerListAddSize
diff --git a/third_party/libxslt/src/xsltConf.sh.in b/third_party/libxslt/src/xsltConf.sh.in index 666774b..f7e8fa1 100644 --- a/third_party/libxslt/src/xsltConf.sh.in +++ b/third_party/libxslt/src/xsltConf.sh.in
@@ -3,5 +3,6 @@ # XSLT_LIBDIR="@XSLT_LIBDIR@" XSLT_LIBS="@XSLT_LIBS@" +XSLT_PRIVATE_LIBS="@XSLT_PRIVATE_LIBS@" XSLT_INCLUDEDIR="@XSLT_INCLUDEDIR@" MODULE_VERSION="xslt-@VERSION@"
diff --git a/tools/mb/mb_config.pyl b/tools/mb/mb_config.pyl index 1b82a685..248013e4 100644 --- a/tools/mb/mb_config.pyl +++ b/tools/mb/mb_config.pyl
@@ -1844,6 +1844,10 @@ 'official_goma_mac_perf': [ 'official', 'goma', 'no_keystone_registration_framework', + # The mac perf bots can't use the 10.15 SDK yet. + # Remove this once they've been upgraded to versions of MacOS + xcode + # that support the 10.15 SDK. See https://crbug.com/1023913 for more. + 'mac_sdk_10_14', ], 'official_goma_perf': [ @@ -2352,6 +2356,10 @@ 'gn_args': 'mac_deterministic_build=true', }, + 'mac_sdk_10_14': { + 'gn_args': 'mac_sdk_official_version="10.14"', + }, + 'mac_strip': { 'gn_args': 'enable_stripping=true', },
diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums.xml index 2b54a42..61db5d8 100644 --- a/tools/metrics/histograms/enums.xml +++ b/tools/metrics/histograms/enums.xml
@@ -25994,6 +25994,7 @@ <int value="67" label="PublicKeyCredentials"/> <int value="68" label="Clipboard"/> <int value="69" label="ClientHintUAMobile"/> + <int value="70" label="FontAccess"/> </enum> <enum name="FeaturePolicyImageCompressionFormat"> @@ -36399,6 +36400,7 @@ label="ProcessSharingWithStrictSiteInstances:disabled"/> <int value="-1895719323" label="VrBrowsingTabsView:enabled"/> <int value="-1894699049" label="AudioFocusEnforcement:disabled"/> + <int value="-1894054576" label="FontAccess:enabled"/> <int value="-1893668420" label="AutofillSaveCreditCardUsesStrikeSystem:enabled"/> <int value="-1893019071" label="CSSOMViewScrollCoordinates:disabled"/> @@ -37419,6 +37421,7 @@ <int value="-667018797" label="OmniboxUIExperimentBlueTitlesAndGrayUrlsOnPageSuggestions:disabled"/> <int value="-666508951" label="CrOSContainer:enabled"/> + <int value="-665514294" label="FontAccess:disabled"/> <int value="-663476391" label="enable-pixel-canvas-recording:enabled"/> <int value="-662720891" label="PreviewsCoinFlipHoldback_UKMOnly:enabled"/> <int value="-662064703" label="MediaSessionService:enabled"/>
diff --git a/tools/metrics/histograms/histograms.xml b/tools/metrics/histograms/histograms.xml index 88b6186..243713f3 100644 --- a/tools/metrics/histograms/histograms.xml +++ b/tools/metrics/histograms/histograms.xml
@@ -15745,6 +15745,12 @@ The idea behind this elaborated unit is that the bigger the area of a canvas the longer the operation GetImageData takes, so we want a way to measure the overall performance regardless of the size of the canvas. + + Warning: This metric may include reports from clients with low-resolution + clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports + will cause this metric to have an abnormal distribution. When considering + revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the + solution. </summary> </histogram> @@ -15846,6 +15852,12 @@ The idea behind this elaborated unit is that the bigger the area of a canvas the longer the operation PutImageData takes, so we want a way to measure the overall performance regardless of the size of the canvas. + + Warning: This metric may include reports from clients with low-resolution + clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports + will cause this metric to have an abnormal distribution. When considering + revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the + solution. </summary> </histogram> @@ -15857,6 +15869,12 @@ Records the CPU, GPU and combined raster time for a random sampling of canvas frames for accelerated and deferred canvases. Records wall time for a random sampling of unaccelerated canvases. + + Warning: This metric may include reports from clients with low-resolution + clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports + will cause this metric to have an abnormal distribution. When considering + revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the + solution. </summary> </histogram> @@ -16055,6 +16073,12 @@ The idea behind this unit is that the bigger the area of a canvas the longer the operation ToDataURL takes, so we want a way to measure the overall performance regardless of the size of the canvas. + + Warning: This metric may include reports from clients with low-resolution + clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports + will cause this metric to have an abnormal distribution. When considering + revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the + solution. </summary> </histogram> @@ -20935,6 +20959,12 @@ <summary> Time spent in microseconds to perform calls to measure TextMetrics for Canvas2d. It's measured each time TextMetrics is called. + + Warning: This metric may include reports from clients with low-resolution + clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports + will cause this metric to have an abnormal distribution. When considering + revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the + solution. </summary> </histogram> @@ -20945,6 +20975,12 @@ <summary> Time spent in microseconds to perform calls to SetFont in Canvas for Canvas2d. It's measured each time SetFont is called. + + Warning: This metric may include reports from clients with low-resolution + clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports + will cause this metric to have an abnormal distribution. When considering + revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the + solution. </summary> </histogram> @@ -100545,6 +100581,12 @@ <summary> Time spent in microseconds to perform call SetFont in canvas for OffscreenCanvas. It's measured each time SetFont is called. + + Warning: This metric may include reports from clients with low-resolution + clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports + will cause this metric to have an abnormal distribution. When considering + revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the + solution. </summary> </histogram> @@ -108750,8 +108792,9 @@ </histogram> <histogram name="PasswordManager.EditsInSaveBubble" - enum="PasswordManagerEditsInSaveBubbleEnum" expires_after="M81"> + enum="PasswordManagerEditsInSaveBubbleEnum" expires_after="2021-01-30"> <owner>battre@chromium.org</owner> + <owner>vasilii@chromium.org</owner> <summary> Indication whether users change the credentials (username and password) in the save bubble of the password manager, considering only cases where the @@ -108903,7 +108946,7 @@ </histogram> <histogram name="PasswordManager.FillingAssistance" - enum="PasswordManagerFillingAssistance" expires_after="2021-02-01"> + enum="PasswordManagerFillingAssistance" expires_after="2021-01-30"> <owner>dvadym@chromium.org</owner> <owner>battre@chromium.org</owner> <summary> @@ -109959,23 +110002,25 @@ </histogram> <histogram name="PasswordManager.RequirementsSpecFetcher.HttpResponseCode" - enum="HttpResponseCode" expires_after="M81"> + enum="HttpResponseCode" expires_after="2021-01-30"> <owner>battre@chromium.org</owner> + <owner>dvadym@chromium.org</owner> <summary> HTTP response code of fetching a password requirements file. </summary> </histogram> <histogram name="PasswordManager.RequirementsSpecFetcher.NetErrorCode" - enum="NetErrorCodes" expires_after="2020-03-22"> + enum="NetErrorCodes" expires_after="2021-01-30"> <owner>battre@chromium.org</owner> + <owner>dvadym@chromium.org</owner> <summary> Network error code of fetching a password requirements file. </summary> </histogram> <histogram name="PasswordManager.RequirementsSpecFetcher.NetworkDuration" - units="ms" expires_after="M87"> + units="ms" expires_after="2021-01-30"> <owner>battre@chromium.org</owner> <owner>dvadym@chromium.org</owner> <summary> @@ -109985,7 +110030,7 @@ </histogram> <histogram name="PasswordManager.RequirementsSpecFetcher.Result" - enum="PasswordRequirementsFetcherResult" expires_after="M87"> + enum="PasswordRequirementsFetcherResult" expires_after="2021-01-30"> <owner>battre@chromium.org</owner> <owner>dvadym@chromium.org</owner> <summary> @@ -110537,7 +110582,7 @@ </histogram> <histogram base="true" name="PasswordManager.TimesPasswordUsed" units="units" - expires_after="M81"> + expires_after="2021-01-30"> <owner>battre@chromium.org</owner> <owner>dvadym@chromium.org</owner> <summary>
diff --git a/tools/perf/core/bot_platforms.py b/tools/perf/core/bot_platforms.py index c1b57d6..618012e 100644 --- a/tools/perf/core/bot_platforms.py +++ b/tools/perf/core/bot_platforms.py
@@ -349,8 +349,8 @@ # Running a sample benchmark to help testing out the work on # trace_processor_shell: crbug.com/1028612 _GetBenchmarkConfig('tracing.tracing_with_background_memory_infra')]) -_ANDROID_PIXEL2_AAB_FYI_BENCHMARK_CONFIGS = PerfSuite([ - _GetBenchmarkConfig('rendering.mobile', True)]) +_ANDROID_PIXEL2_AAB_FYI_BENCHMARK_CONFIGS = PerfSuite( + [_GetBenchmarkConfig('startup.mobile')]) _ANDROID_PIXEL2_FYI_BENCHMARK_CONFIGS = PerfSuite([ _GetBenchmarkConfig('v8.browsing_mobile'), _GetBenchmarkConfig('system_health.memory_mobile'),
diff --git a/tools/perf/core/shard_maps/android-pixel2-perf-aab-fyi_map.json b/tools/perf/core/shard_maps/android-pixel2-perf-aab-fyi_map.json index fcd35746..e2b5ae26 100644 --- a/tools/perf/core/shard_maps/android-pixel2-perf-aab-fyi_map.json +++ b/tools/perf/core/shard_maps/android-pixel2-perf-aab-fyi_map.json
@@ -1,17 +1,17 @@ { "0": { "benchmarks": { - "rendering.mobile": { - "abridged": true + "startup.mobile": { + "abridged": false } } }, "extra_infos": { - "num_stories": 16, - "predicted_min_shard_time": 320, + "num_stories": 4, + "predicted_min_shard_time": 80, "predicted_min_shard_index": 0, - "predicted_max_shard_time": 320, + "predicted_max_shard_time": 80, "predicted_max_shard_index": 0, - "shard #0": 320 + "shard #0": 80 } } \ No newline at end of file
diff --git a/tools/perf/expectations.config b/tools/perf/expectations.config index 7aa8f04..49b6531 100644 --- a/tools/perf/expectations.config +++ b/tools/perf/expectations.config
@@ -481,10 +481,6 @@ # Benchmark: v8.runtime_stats.top_25 crbug.com/954229 [ mac ] v8.runtime_stats.top_25/* [ Skip ] -# Benchmark: webrtc -crbug.com/1039726 [ win10 ] webrtc/multiple_peerconnections [ Skip ] - - ##### Perf FYI benchmarks go after here ##### # Benchmark: loading.desktop_layout_ng crbug.com/879833 [ linux ] loading.desktop_layout_ng/Walgreens_cold [ Skip ]
diff --git a/ui/base/ui_base_features.cc b/ui/base/ui_base_features.cc index bd84cba3..84fb6fd 100644 --- a/ui/base/ui_base_features.cc +++ b/ui/base/ui_base_features.cc
@@ -151,7 +151,9 @@ base::FEATURE_DISABLED_BY_DEFAULT}; bool IsFormControlsRefreshEnabled() { - return base::FeatureList::IsEnabled(features::kFormControlsRefresh); + static const bool form_controls_refresh_enabled = + base::FeatureList::IsEnabled(features::kFormControlsRefresh); + return form_controls_refresh_enabled; } bool IsAutomaticUiAdjustmentsForTouchEnabled() {
diff --git a/ui/compositor/layer.cc b/ui/compositor/layer.cc index 8eb0e90..0d730311 100644 --- a/ui/compositor/layer.cc +++ b/ui/compositor/layer.cc
@@ -1174,14 +1174,29 @@ base::WeakPtr<Layer> weak_this = weak_ptr_factory_.GetWeakPtr(); - // NOTE: Some animation observers destroy the layer when the animation ends. - if (animator_) { - animator_->StopAnimatingProperty(LayerAnimationElement::TRANSFORM); + // Some animation observers may mutate the tree (e.g. destroy the layer, + // change ancestor/sibling z-order etc) when the animation ends. This break + // the tree traversal and could lead to a crash. Collect all descendants (and + // their mask layers) in a flattened WeakPtr list at the root level then stop + // animations to let potential tree mutations happen before traversing the + // tree. See https://crbug.com/1037852. + const bool is_root_layer = !parent(); + if (is_root_layer) { + std::vector<base::WeakPtr<Layer>> flattened; + GetFlattenedWeakList(&flattened); + for (auto& weak_layer : flattened) { + // Skip if layer is gone or not animating. + if (!weak_layer || !weak_layer->animator_) + continue; - // Do not proceed if the layer was destroyed due to an animation - // observer. - if (!weak_this) - return; + weak_layer->animator_->StopAnimatingProperty( + LayerAnimationElement::TRANSFORM); + + // Do not proceed if the root layer was destroyed due to an animation + // observer. + if (!weak_this) + return; + } } const float old_device_scale_factor = device_scale_factor_; @@ -1628,4 +1643,14 @@ subtree_reflected_layer_ = nullptr; } +void Layer::GetFlattenedWeakList( + std::vector<base::WeakPtr<Layer>>* flattened_list) { + flattened_list->emplace_back(weak_ptr_factory_.GetWeakPtr()); + if (layer_mask_) + flattened_list->emplace_back(layer_mask_->weak_ptr_factory_.GetWeakPtr()); + + for (auto* child : children_) + child->GetFlattenedWeakList(flattened_list); +} + } // namespace ui
diff --git a/ui/compositor/layer.h b/ui/compositor/layer.h index 098ad9c..b5d04ab 100644 --- a/ui/compositor/layer.h +++ b/ui/compositor/layer.h
@@ -598,6 +598,10 @@ bool IsHitTestableForCC() const { return visible_ && accept_events_; } + // Gets a flattened WeakPtr list of all layers and layer masks in the tree + // rooted from |this|. + void GetFlattenedWeakList(std::vector<base::WeakPtr<Layer>>* flattened_list); + const LayerType type_; Compositor* compositor_;
diff --git a/ui/compositor/layer_unittest.cc b/ui/compositor/layer_unittest.cc index cd9c540..f0ab12f 100644 --- a/ui/compositor/layer_unittest.cc +++ b/ui/compositor/layer_unittest.cc
@@ -11,6 +11,7 @@ #include <vector> #include "base/bind.h" +#include "base/callback.h" #include "base/compiler_specific.h" #include "base/files/file_path.h" #include "base/files/file_util.h" @@ -21,6 +22,7 @@ #include "base/strings/string_util.h" #include "base/strings/stringprintf.h" #include "base/strings/utf_string_conversions.h" +#include "base/test/bind_test_util.h" #include "base/test/task_environment.h" #include "base/time/time.h" #include "base/trace_event/trace_event.h" @@ -423,6 +425,26 @@ DISALLOW_COPY_AND_ASSIGN(TestCompositorAnimationObserver); }; +// An animation observer that invokes a callback when the animation ends. +class TestCallbackAnimationObserver : public ImplicitAnimationObserver { + public: + TestCallbackAnimationObserver() = default; + + void SetCallback(base::OnceClosure callback) { + callback_ = std::move(callback); + } + + // ui::ImplicitAnimationObserver overrides: + void OnImplicitAnimationsCompleted() override {} + void OnLayerAnimationEnded(LayerAnimationSequence* sequence) override { + if (callback_) + std::move(callback_).Run(); + } + + private: + base::OnceClosure callback_; +}; + } // namespace INSTANTIATE_TEST_SUITE_P(All, LayerWithRealCompositorTest, ::testing::Bool()); @@ -2536,42 +2558,23 @@ EXPECT_TRUE(l1->cc_layer_for_testing()->masks_to_bounds()); } -// An animation observer that deletes the layer when the animation ends. -class TestAnimationObserver : public ImplicitAnimationObserver { - public: - TestAnimationObserver() = default; - - Layer* layer() const { return layer_.get(); } - - void SetLayer(std::unique_ptr<Layer> layer) { layer_ = std::move(layer); } - - // ui::ImplicitAnimationObserver overrides: - void OnImplicitAnimationsCompleted() override {} - - protected: - void OnLayerAnimationEnded(LayerAnimationSequence* sequence) override { - layer_.reset(); - } - - private: - std::unique_ptr<Layer> layer_; - - DISALLOW_COPY_AND_ASSIGN(TestAnimationObserver); -}; - // Triggerring a OnDeviceScaleFactorChanged while a layer is undergoing -// transform animation, may cause a crash. This is because the layer may be -// deleted by the animation observer leading to a seg fault. -TEST_P(LayerWithRealCompositorTest, DeletingLayerDuringScaleFactorChange) { - TestAnimationObserver animation_observer; +// transform animation, may cause a crash. This is because an animation observer +// may mutate the tree, e.g. deleting a layer, changing ancestor z-order etc, +// which breaks the tree traversal and might lead to a use-after-free seg fault. +TEST_P(LayerWithRealCompositorTest, TreeMutationDuringScaleFactorChange) { + TestCallbackAnimationObserver animation_observer; std::unique_ptr<Layer> root = CreateLayer(LAYER_SOLID_COLOR); - animation_observer.SetLayer(CreateLayer(LAYER_SOLID_COLOR)); - - Layer* layer_to_delete = animation_observer.layer(); - GetCompositor()->SetRootLayer(root.get()); - root->Add(layer_to_delete); + + // Tests scenarios that |layer_to_delete| is deleted when animation ends. + + std::unique_ptr<Layer> layer_to_delete = CreateLayer(LAYER_SOLID_COLOR); + animation_observer.SetCallback( + base::BindLambdaForTesting([&]() { layer_to_delete.reset(); })); + + root->Add(layer_to_delete.get()); EXPECT_EQ(gfx::Transform(), layer_to_delete->GetTargetTransform()); @@ -2591,13 +2594,16 @@ // This call should not crash. root->OnDeviceScaleFactorChanged(2.f); + // |layer_to_delete| should be gone. + EXPECT_FALSE(layer_to_delete); - animation_observer.SetLayer(CreateLayer(LAYER_SOLID_COLOR)); - layer_to_delete = animation_observer.layer(); + layer_to_delete = CreateLayer(LAYER_SOLID_COLOR); + animation_observer.SetCallback( + base::BindLambdaForTesting([&]() { layer_to_delete.reset(); })); std::unique_ptr<Layer> child = CreateLayer(LAYER_SOLID_COLOR); - root->Add(layer_to_delete); + root->Add(layer_to_delete.get()); layer_to_delete->Add(child.get()); long_duration_animation = @@ -2612,13 +2618,16 @@ // This call should not crash. root->OnDeviceScaleFactorChanged(1.5f); + // |layer_to_delete| should be gone. + EXPECT_FALSE(layer_to_delete); - animation_observer.SetLayer(CreateLayer(LAYER_SOLID_COLOR)); - layer_to_delete = animation_observer.layer(); + layer_to_delete = CreateLayer(LAYER_SOLID_COLOR); + animation_observer.SetCallback( + base::BindLambdaForTesting([&]() { layer_to_delete.reset(); })); std::unique_ptr<Layer> child2 = CreateLayer(LAYER_SOLID_COLOR); - root->Add(layer_to_delete); + root->Add(layer_to_delete.get()); layer_to_delete->Add(child.get()); layer_to_delete->Add(child2.get()); @@ -2634,6 +2643,29 @@ // This call should not crash. root->OnDeviceScaleFactorChanged(2.f); + // |layer_to_delete| should be gone. + EXPECT_FALSE(layer_to_delete); + + // Tests scenarios that the tree is changed when animation ends. + + root->Add(child.get()); + root->Add(child2.get()); + + animation_observer.SetCallback(base::BindLambdaForTesting( + [&]() { root->StackChildrenAtBottom({child2.get()}); })); + + long_duration_animation = + std::make_unique<ui::ScopedAnimationDurationScaleMode>( + ui::ScopedAnimationDurationScaleMode::SLOW_DURATION); + { + ui::ScopedLayerAnimationSettings animation(child->GetAnimator()); + animation.AddObserver(&animation_observer); + animation.SetTransitionDuration(base::TimeDelta::FromMilliseconds(1000)); + child->SetTransform(transform); + } + + // This call should not crash. + root->OnDeviceScaleFactorChanged(1.5f); } // Tests that the animators in the layer tree is added to the
diff --git a/ui/compositor/overscroll/scroll_input_handler.cc b/ui/compositor/overscroll/scroll_input_handler.cc index 5279c0b..f1965d2 100644 --- a/ui/compositor/overscroll/scroll_input_handler.cc +++ b/ui/compositor/overscroll/scroll_input_handler.cc
@@ -68,8 +68,7 @@ cc::InputHandler::WHEEL); cc::ScrollState scroll_state = CreateScrollState(event, false); - input_handler_weak_ptr_->ScrollUpdate(&scroll_state, cc::InputHandler::WHEEL, - base::TimeDelta()); + input_handler_weak_ptr_->ScrollUpdate(&scroll_state, base::TimeDelta()); input_handler_weak_ptr_->ScrollEnd(/*should_snap=*/false); return true;
diff --git a/ui/events/blink/input_handler_proxy.cc b/ui/events/blink/input_handler_proxy.cc index f278b402..57fbc512 100644 --- a/ui/events/blink/input_handler_proxy.cc +++ b/ui/events/blink/input_handler_proxy.cc
@@ -916,9 +916,8 @@ base::TimeTicks event_time = gesture_event.TimeStamp(); base::TimeDelta delay = base::TimeTicks::Now() - event_time; - cc::InputHandlerScrollResult scroll_result = input_handler_->ScrollUpdate( - &scroll_state, GestureScrollInputType(gesture_event.SourceDevice()), - delay); + cc::InputHandlerScrollResult scroll_result = + input_handler_->ScrollUpdate(&scroll_state, delay); HandleOverscroll(gesture_event.PositionInWidget(), scroll_result); @@ -1172,10 +1171,8 @@ const gfx::Vector2dF& delta) { cc::ScrollState scroll_state = CreateScrollStateForInertialUpdate(delta); - // TODO(bokan): We should be passing in the source device that was used to - // scroll during the gesture. - cc::InputHandlerScrollResult scroll_result = input_handler_->ScrollUpdate( - &scroll_state, cc::InputHandler::TOUCHSCREEN, base::TimeDelta()); + cc::InputHandlerScrollResult scroll_result = + input_handler_->ScrollUpdate(&scroll_state, base::TimeDelta()); return scroll_result.current_visual_offset; }
diff --git a/ui/events/blink/input_handler_proxy_unittest.cc b/ui/events/blink/input_handler_proxy_unittest.cc index f3b36185..bd6c11e 100644 --- a/ui/events/blink/input_handler_proxy_unittest.cc +++ b/ui/events/blink/input_handler_proxy_unittest.cc
@@ -115,11 +115,8 @@ MOCK_METHOD2(RootScrollBegin, ScrollStatus(cc::ScrollState*, cc::InputHandler::ScrollInputType type)); - MOCK_METHOD3( - ScrollUpdate, - cc::InputHandlerScrollResult(cc::ScrollState*, - cc::InputHandler::ScrollInputType type, - base::TimeDelta)); + MOCK_METHOD2(ScrollUpdate, + cc::InputHandlerScrollResult(cc::ScrollState*, base::TimeDelta)); MOCK_METHOD1(ScrollEnd, void(bool)); MOCK_METHOD0(ScrollingShouldSwitchtoMainThread, bool()); @@ -635,7 +632,7 @@ EXPECT_CALL( mock_input_handler_, ScrollUpdate(testing::Property(&cc::ScrollState::delta_y, testing::Gt(0)), - _, _)) + _)) .WillOnce(testing::Return(scroll_result_did_not_scroll_)); EXPECT_CALL(mock_input_handler_, ScrollingShouldSwitchtoMainThread()) .WillOnce(testing::Return(false)); @@ -654,7 +651,7 @@ EXPECT_CALL( mock_input_handler_, ScrollUpdate(testing::Property(&cc::ScrollState::delta_y, testing::Gt(0)), - _, _)) + _)) .WillOnce(testing::Return(scroll_result_did_scroll_)); EXPECT_EQ(expected_disposition_, input_handler_->RouteToTypeSpecificHandler(gesture_)); @@ -801,7 +798,7 @@ .WillOnce(DoAll(testing::SetArgPointee<1>(gfx::Vector2dF(0, 0)), testing::SetArgPointee<2>(gfx::Vector2dF(0, 100)), testing::Return(true))); - EXPECT_CALL(mock_input_handler_, ScrollUpdate(_, _, _)).Times(1); + EXPECT_CALL(mock_input_handler_, ScrollUpdate(_, _)).Times(1); EXPECT_SET_NEEDS_ANIMATE_INPUT(1); EXPECT_EQ(expected_disposition_, input_handler_->RouteToTypeSpecificHandler(gesture_)); @@ -817,7 +814,7 @@ EXPECT_CALL(mock_input_handler_, GetSnapFlingInfoAndSetAnimatingSnapTarget(_, _, _)) .Times(0); - EXPECT_CALL(mock_input_handler_, ScrollUpdate(_, _, _)).Times(0); + EXPECT_CALL(mock_input_handler_, ScrollUpdate(_, _)).Times(0); EXPECT_EQ(expected_disposition_, input_handler_->RouteToTypeSpecificHandler(gesture_)); VERIFY_AND_RESET_MOCKS(); @@ -919,7 +916,7 @@ EXPECT_CALL( mock_input_handler_, ScrollUpdate(testing::Property(&cc::ScrollState::delta_y, testing::Gt(0)), - _, _)) + _)) .WillOnce(testing::Return(scroll_result_did_scroll_)); EXPECT_EQ(expected_disposition_, input_handler_->RouteToTypeSpecificHandler(gesture_)); @@ -976,7 +973,7 @@ EXPECT_CALL( mock_input_handler_, ScrollUpdate(testing::Property(&cc::ScrollState::delta_y, testing::Gt(0)), - _, _)) + _)) .WillOnce(testing::Return(scroll_result_did_scroll_)); EXPECT_EQ(expected_disposition_, input_handler_->RouteToTypeSpecificHandler(gesture_)); @@ -986,7 +983,7 @@ // The scroll handling switches to the main thread, a GSB is sent to the main // thread to initiate the hit testing and compute the scroll chain. expected_disposition_ = InputHandlerProxy::DID_NOT_HANDLE; - EXPECT_CALL(mock_input_handler_, ScrollUpdate(_, _, _)).Times(0); + EXPECT_CALL(mock_input_handler_, ScrollUpdate(_, _)).Times(0); EXPECT_CALL(mock_input_handler_, ScrollingShouldSwitchtoMainThread()) .WillOnce(testing::Return(true)); EXPECT_CALL(mock_client_, GenerateScrollBeginAndSendToMainThread(_)); @@ -1500,7 +1497,7 @@ EXPECT_CALL( mock_input_handler_, ScrollUpdate(testing::Property(&cc::ScrollState::delta_y, testing::Gt(0)), - _, _)) + _)) .WillOnce(testing::Return(scroll_result_did_scroll_)); EXPECT_CALL(mock_input_handler_, ScrollEnd(true)); @@ -1539,7 +1536,7 @@ EXPECT_CALL( mock_input_handler_, ScrollUpdate(testing::Property(&cc::ScrollState::delta_y, testing::Gt(0)), - _, _)) + _)) .WillOnce(testing::Return(scroll_result_did_scroll_)); EXPECT_CALL(mock_input_handler_, SetNeedsAnimateInput()).Times(1); @@ -1563,7 +1560,7 @@ EXPECT_CALL( mock_input_handler_, ScrollUpdate(testing::Property(&cc::ScrollState::delta_y, testing::Gt(0)), - _, _)) + _)) .WillRepeatedly(testing::Return(scroll_result_did_scroll_)); EXPECT_CALL(mock_input_handler_, ScrollEnd(true)).Times(2); EXPECT_CALL(mock_input_handler_, SetNeedsAnimateInput()).Times(1); @@ -1611,7 +1608,7 @@ EXPECT_CALL( mock_input_handler_, ScrollUpdate(testing::Property(&cc::ScrollState::delta_y, testing::Gt(0)), - _, _)) + _)) .WillOnce(testing::Return(scroll_result_did_scroll_)); EXPECT_CALL(mock_input_handler_, ScrollEnd(true)); @@ -1749,7 +1746,7 @@ EXPECT_CALL( mock_input_handler_, ScrollUpdate(testing::Property(&cc::ScrollState::delta_y, testing::Gt(0)), - _, _)) + _)) .WillRepeatedly(testing::Return(scroll_result_did_scroll_)); EXPECT_CALL(mock_input_handler_, ScrollEnd(true)) .Times(::testing::AtLeast(1)); @@ -1829,7 +1826,7 @@ EXPECT_CALL( mock_input_handler_, ScrollUpdate(testing::Property(&cc::ScrollState::delta_y, testing::Gt(0)), - _, _)) + _)) .WillRepeatedly(testing::Return(scroll_result_did_scroll_)); EXPECT_CALL(mock_input_handler_, ScrollEnd(true)) .Times(::testing::AtLeast(1)); @@ -1892,7 +1889,7 @@ EXPECT_CALL( mock_input_handler_, ScrollUpdate(testing::Property(&cc::ScrollState::delta_y, testing::Gt(0)), - _, _)) + _)) .WillOnce(testing::Return(scroll_result_did_scroll_)); EXPECT_CALL(mock_input_handler_, ScrollEnd(true)); @@ -1929,7 +1926,7 @@ EXPECT_CALL( mock_input_handler_, ScrollUpdate(testing::Property(&cc::ScrollState::delta_y, testing::Gt(0)), - _, _)) + _)) .WillOnce(testing::Return(scroll_result_did_not_scroll_)); HandleGestureEvent(WebInputEvent::kGestureScrollBegin); @@ -1995,7 +1992,7 @@ EXPECT_CALL( mock_input_handler_, ScrollUpdate(testing::Property(&cc::ScrollState::delta_y, testing::Gt(0)), - _, _)) + _)) .WillOnce(testing::Return(scroll_result_did_scroll_)); // No prediction when start with a GSB @@ -2042,7 +2039,7 @@ EXPECT_CALL( mock_input_handler_, ScrollUpdate(testing::Property(&cc::ScrollState::delta_y, testing::Gt(0)), - _, _)) + _)) .WillRepeatedly(testing::Return(scroll_result_did_scroll_)); HandleGestureEvent(WebInputEvent::kGestureScrollBegin); @@ -2644,7 +2641,7 @@ EXPECT_CALL( mock_input_handler_, ScrollUpdate(testing::Property(&cc::ScrollState::delta_y, testing::Gt(0)), - _, _)) + _)) .WillRepeatedly(testing::Return(scroll_result_did_scroll)); base::HistogramTester histogram_tester; @@ -2703,7 +2700,7 @@ EXPECT_CALL( mock_input_handler_, ScrollUpdate(testing::Property(&cc::ScrollState::delta_y, testing::Gt(0)), - _, _)) + _)) .WillRepeatedly(testing::Return(scroll_result_did_scroll)); base::HistogramTester histogram_tester; @@ -2744,7 +2741,7 @@ EXPECT_CALL( mock_input_handler_, ScrollUpdate(testing::Property(&cc::ScrollState::delta_y, testing::Gt(0)), - _, _)) + _)) .WillRepeatedly(testing::Return(scroll_result_did_scroll)); base::HistogramTester histogram_tester; @@ -2784,7 +2781,7 @@ EXPECT_CALL( mock_input_handler_, ScrollUpdate(testing::Property(&cc::ScrollState::delta_y, testing::Gt(0)), - _, _)) + _)) .WillRepeatedly(testing::Return(scroll_result_did_scroll)); base::HistogramTester histogram_tester; @@ -2823,7 +2820,7 @@ EXPECT_CALL( mock_input_handler_, ScrollUpdate(testing::Property(&cc::ScrollState::delta_y, testing::Gt(0)), - _, _)) + _)) .WillRepeatedly(testing::Return(scroll_result_did_scroll)); base::HistogramTester histogram_tester; @@ -2854,7 +2851,7 @@ EXPECT_CALL( mock_input_handler_, ScrollUpdate(testing::Property(&cc::ScrollState::delta_y, testing::Gt(0)), - _, _)) + _)) .WillRepeatedly(testing::Return(scroll_result_did_scroll)); base::HistogramTester histogram_tester; @@ -2891,7 +2888,7 @@ EXPECT_CALL( mock_input_handler_, ScrollUpdate(testing::Property(&cc::ScrollState::delta_y, testing::Gt(0)), - _, _)) + _)) .WillRepeatedly(testing::Return(scroll_result_did_scroll)); base::HistogramTester histogram_tester;
diff --git a/ui/events/keycodes/dom/dom_code.h b/ui/events/keycodes/dom/dom_code.h index 138be7a..4fbf542 100644 --- a/ui/events/keycodes/dom/dom_code.h +++ b/ui/events/keycodes/dom/dom_code.h
@@ -7,11 +7,11 @@ namespace ui { -#define USB_KEYMAP(usb, evdev, xkb, win, mac, code, id) id = usb -#define USB_KEYMAP_DECLARATION enum class DomCode +#define DOM_CODE(usb, evdev, xkb, win, mac, code, id) id = usb +#define DOM_CODE_DECLARATION enum class DomCode #include "ui/events/keycodes/dom/dom_code_data.inc" -#undef USB_KEYMAP -#undef USB_KEYMAP_DECLARATION +#undef DOM_CODE +#undef DOM_CODE_DECLARATION } // namespace ui
diff --git a/ui/events/keycodes/dom/dom_code_data.inc b/ui/events/keycodes/dom/dom_code_data.inc index 65bd4e8e..17ebad5f 100644 --- a/ui/events/keycodes/dom/dom_code_data.inc +++ b/ui/events/keycodes/dom/dom_code_data.inc
@@ -4,7 +4,7 @@ // This file has no header guard because it is explicitly intended // to be included more than once with different definitions of the -// macros USB_KEYMAP and USB_KEYMAP_DECLARATION. +// macros DOM_CODE and DOM_CODE_DECLARATION. // Data in this file was created by referencing: // [0] USB HID Usage Tables, @@ -80,15 +80,15 @@ // Apple keyboards with USB 0x070049 [Insert] labelled "Help" have not // been made since 2007. -USB_KEYMAP_DECLARATION { +DOM_CODE_DECLARATION { // USB evdev XKB Win Mac Code - USB_KEYMAP(0x000000, 0x0000, 0x0000, 0x0000, 0xffff, NULL, NONE), // Invalid + DOM_CODE(0x000000, 0x0000, 0x0000, 0x0000, 0xffff, NULL, NONE), // Invalid #if defined(OS_ANDROID) -#define USB_KEYMAP_ANDROID +#define DOM_CODE_ANDROID #include "ui/events/keycodes/dom/keycode_conversion_data_android_generated.inc" -#undef USB_KEYMAP_ANDROID +#undef DOM_CODE_ANDROID #endif // ========================================= @@ -96,13 +96,13 @@ // ========================================= // USB evdev XKB Win Mac Code - USB_KEYMAP(0x000010, 0x0000, 0x0000, 0x0000, 0xffff, "Hyper", HYPER), - USB_KEYMAP(0x000011, 0x0000, 0x0000, 0x0000, 0xffff, "Super", SUPER), - USB_KEYMAP(0x000012, 0x0000, 0x0000, 0x0000, 0xffff, "Fn", FN), - USB_KEYMAP(0x000013, 0x0000, 0x0000, 0x0000, 0xffff, "FnLock", FN_LOCK), - USB_KEYMAP(0x000014, 0x0000, 0x0000, 0x0000, 0xffff, "Suspend", SUSPEND), - USB_KEYMAP(0x000015, 0x0000, 0x0000, 0x0000, 0xffff, "Resume", RESUME), - USB_KEYMAP(0x000016, 0x0000, 0x0000, 0x0000, 0xffff, "Turbo", TURBO), + DOM_CODE(0x000010, 0x0000, 0x0000, 0x0000, 0xffff, "Hyper", HYPER), + DOM_CODE(0x000011, 0x0000, 0x0000, 0x0000, 0xffff, "Super", SUPER), + DOM_CODE(0x000012, 0x0000, 0x0000, 0x0000, 0xffff, "Fn", FN), + DOM_CODE(0x000013, 0x0000, 0x0000, 0x0000, 0xffff, "FnLock", FN_LOCK), + DOM_CODE(0x000014, 0x0000, 0x0000, 0x0000, 0xffff, "Suspend", SUSPEND), + DOM_CODE(0x000015, 0x0000, 0x0000, 0x0000, 0xffff, "Resume", RESUME), + DOM_CODE(0x000016, 0x0000, 0x0000, 0x0000, 0xffff, "Turbo", TURBO), // ========================================= // USB Usage Page 0x01: Generic Desktop Page @@ -111,9 +111,9 @@ // Sleep could be encoded as USB#0c0032, but there's no corresponding WakeUp // in the 0x0c USB page. // USB evdev XKB Win Mac - USB_KEYMAP(0x010082, 0x008e, 0x0096, 0xe05f, 0xffff, "Sleep", SLEEP), // SystemSleep - USB_KEYMAP(0x010083, 0x008f, 0x0097, 0xe063, 0xffff, "WakeUp", WAKE_UP), - USB_KEYMAP(0x0100b5, 0x00e3, 0x00eb, 0x0000, 0xffff, "DisplayToggleIntExt", + DOM_CODE(0x010082, 0x008e, 0x0096, 0xe05f, 0xffff, "Sleep", SLEEP), // SystemSleep + DOM_CODE(0x010083, 0x008f, 0x0097, 0xe063, 0xffff, "WakeUp", WAKE_UP), + DOM_CODE(0x0100b5, 0x00e3, 0x00eb, 0x0000, 0xffff, "DisplayToggleIntExt", DISPLAY_TOGGLE_INT_EXT), // System Display Toggle Int/Ext @@ -132,62 +132,62 @@ // Mac#0066 kVK_JIS_Eisu (USB#07008a Henkan?) // USB evdev XKB Win Mac - USB_KEYMAP(0x070000, 0x0000, 0x0000, 0x0000, 0xffff, NULL, USB_RESERVED), - USB_KEYMAP(0x070001, 0x0000, 0x0000, 0x00ff, 0xffff, NULL, USB_ERROR_ROLL_OVER), - USB_KEYMAP(0x070002, 0x0000, 0x0000, 0x00fc, 0xffff, NULL, USB_POST_FAIL), - USB_KEYMAP(0x070003, 0x0000, 0x0000, 0x0000, 0xffff, NULL, USB_ERROR_UNDEFINED), - USB_KEYMAP(0x070004, 0x001e, 0x0026, 0x001e, 0x0000, "KeyA", US_A), // aA - USB_KEYMAP(0x070005, 0x0030, 0x0038, 0x0030, 0x000b, "KeyB", US_B), // bB - USB_KEYMAP(0x070006, 0x002e, 0x0036, 0x002e, 0x0008, "KeyC", US_C), // cC - USB_KEYMAP(0x070007, 0x0020, 0x0028, 0x0020, 0x0002, "KeyD", US_D), // dD + DOM_CODE(0x070000, 0x0000, 0x0000, 0x0000, 0xffff, NULL, USB_RESERVED), + DOM_CODE(0x070001, 0x0000, 0x0000, 0x00ff, 0xffff, NULL, USB_ERROR_ROLL_OVER), + DOM_CODE(0x070002, 0x0000, 0x0000, 0x00fc, 0xffff, NULL, USB_POST_FAIL), + DOM_CODE(0x070003, 0x0000, 0x0000, 0x0000, 0xffff, NULL, USB_ERROR_UNDEFINED), + DOM_CODE(0x070004, 0x001e, 0x0026, 0x001e, 0x0000, "KeyA", US_A), // aA + DOM_CODE(0x070005, 0x0030, 0x0038, 0x0030, 0x000b, "KeyB", US_B), // bB + DOM_CODE(0x070006, 0x002e, 0x0036, 0x002e, 0x0008, "KeyC", US_C), // cC + DOM_CODE(0x070007, 0x0020, 0x0028, 0x0020, 0x0002, "KeyD", US_D), // dD - USB_KEYMAP(0x070008, 0x0012, 0x001a, 0x0012, 0x000e, "KeyE", US_E), // eE - USB_KEYMAP(0x070009, 0x0021, 0x0029, 0x0021, 0x0003, "KeyF", US_F), // fF - USB_KEYMAP(0x07000a, 0x0022, 0x002a, 0x0022, 0x0005, "KeyG", US_G), // gG - USB_KEYMAP(0x07000b, 0x0023, 0x002b, 0x0023, 0x0004, "KeyH", US_H), // hH - USB_KEYMAP(0x07000c, 0x0017, 0x001f, 0x0017, 0x0022, "KeyI", US_I), // iI - USB_KEYMAP(0x07000d, 0x0024, 0x002c, 0x0024, 0x0026, "KeyJ", US_J), // jJ - USB_KEYMAP(0x07000e, 0x0025, 0x002d, 0x0025, 0x0028, "KeyK", US_K), // kK - USB_KEYMAP(0x07000f, 0x0026, 0x002e, 0x0026, 0x0025, "KeyL", US_L), // lL + DOM_CODE(0x070008, 0x0012, 0x001a, 0x0012, 0x000e, "KeyE", US_E), // eE + DOM_CODE(0x070009, 0x0021, 0x0029, 0x0021, 0x0003, "KeyF", US_F), // fF + DOM_CODE(0x07000a, 0x0022, 0x002a, 0x0022, 0x0005, "KeyG", US_G), // gG + DOM_CODE(0x07000b, 0x0023, 0x002b, 0x0023, 0x0004, "KeyH", US_H), // hH + DOM_CODE(0x07000c, 0x0017, 0x001f, 0x0017, 0x0022, "KeyI", US_I), // iI + DOM_CODE(0x07000d, 0x0024, 0x002c, 0x0024, 0x0026, "KeyJ", US_J), // jJ + DOM_CODE(0x07000e, 0x0025, 0x002d, 0x0025, 0x0028, "KeyK", US_K), // kK + DOM_CODE(0x07000f, 0x0026, 0x002e, 0x0026, 0x0025, "KeyL", US_L), // lL - USB_KEYMAP(0x070010, 0x0032, 0x003a, 0x0032, 0x002e, "KeyM", US_M), // mM - USB_KEYMAP(0x070011, 0x0031, 0x0039, 0x0031, 0x002d, "KeyN", US_N), // nN - USB_KEYMAP(0x070012, 0x0018, 0x0020, 0x0018, 0x001f, "KeyO", US_O), // oO - USB_KEYMAP(0x070013, 0x0019, 0x0021, 0x0019, 0x0023, "KeyP", US_P), // pP - USB_KEYMAP(0x070014, 0x0010, 0x0018, 0x0010, 0x000c, "KeyQ", US_Q), // qQ - USB_KEYMAP(0x070015, 0x0013, 0x001b, 0x0013, 0x000f, "KeyR", US_R), // rR - USB_KEYMAP(0x070016, 0x001f, 0x0027, 0x001f, 0x0001, "KeyS", US_S), // sS - USB_KEYMAP(0x070017, 0x0014, 0x001c, 0x0014, 0x0011, "KeyT", US_T), // tT + DOM_CODE(0x070010, 0x0032, 0x003a, 0x0032, 0x002e, "KeyM", US_M), // mM + DOM_CODE(0x070011, 0x0031, 0x0039, 0x0031, 0x002d, "KeyN", US_N), // nN + DOM_CODE(0x070012, 0x0018, 0x0020, 0x0018, 0x001f, "KeyO", US_O), // oO + DOM_CODE(0x070013, 0x0019, 0x0021, 0x0019, 0x0023, "KeyP", US_P), // pP + DOM_CODE(0x070014, 0x0010, 0x0018, 0x0010, 0x000c, "KeyQ", US_Q), // qQ + DOM_CODE(0x070015, 0x0013, 0x001b, 0x0013, 0x000f, "KeyR", US_R), // rR + DOM_CODE(0x070016, 0x001f, 0x0027, 0x001f, 0x0001, "KeyS", US_S), // sS + DOM_CODE(0x070017, 0x0014, 0x001c, 0x0014, 0x0011, "KeyT", US_T), // tT - USB_KEYMAP(0x070018, 0x0016, 0x001e, 0x0016, 0x0020, "KeyU", US_U), // uU - USB_KEYMAP(0x070019, 0x002f, 0x0037, 0x002f, 0x0009, "KeyV", US_V), // vV - USB_KEYMAP(0x07001a, 0x0011, 0x0019, 0x0011, 0x000d, "KeyW", US_W), // wW - USB_KEYMAP(0x07001b, 0x002d, 0x0035, 0x002d, 0x0007, "KeyX", US_X), // xX - USB_KEYMAP(0x07001c, 0x0015, 0x001d, 0x0015, 0x0010, "KeyY", US_Y), // yY - USB_KEYMAP(0x07001d, 0x002c, 0x0034, 0x002c, 0x0006, "KeyZ", US_Z), // zZ - USB_KEYMAP(0x07001e, 0x0002, 0x000a, 0x0002, 0x0012, "Digit1", DIGIT1), // 1! - USB_KEYMAP(0x07001f, 0x0003, 0x000b, 0x0003, 0x0013, "Digit2", DIGIT2), // 2@ + DOM_CODE(0x070018, 0x0016, 0x001e, 0x0016, 0x0020, "KeyU", US_U), // uU + DOM_CODE(0x070019, 0x002f, 0x0037, 0x002f, 0x0009, "KeyV", US_V), // vV + DOM_CODE(0x07001a, 0x0011, 0x0019, 0x0011, 0x000d, "KeyW", US_W), // wW + DOM_CODE(0x07001b, 0x002d, 0x0035, 0x002d, 0x0007, "KeyX", US_X), // xX + DOM_CODE(0x07001c, 0x0015, 0x001d, 0x0015, 0x0010, "KeyY", US_Y), // yY + DOM_CODE(0x07001d, 0x002c, 0x0034, 0x002c, 0x0006, "KeyZ", US_Z), // zZ + DOM_CODE(0x07001e, 0x0002, 0x000a, 0x0002, 0x0012, "Digit1", DIGIT1), // 1! + DOM_CODE(0x07001f, 0x0003, 0x000b, 0x0003, 0x0013, "Digit2", DIGIT2), // 2@ - USB_KEYMAP(0x070020, 0x0004, 0x000c, 0x0004, 0x0014, "Digit3", DIGIT3), // 3# - USB_KEYMAP(0x070021, 0x0005, 0x000d, 0x0005, 0x0015, "Digit4", DIGIT4), // 4$ - USB_KEYMAP(0x070022, 0x0006, 0x000e, 0x0006, 0x0017, "Digit5", DIGIT5), // 5% - USB_KEYMAP(0x070023, 0x0007, 0x000f, 0x0007, 0x0016, "Digit6", DIGIT6), // 6^ - USB_KEYMAP(0x070024, 0x0008, 0x0010, 0x0008, 0x001a, "Digit7", DIGIT7), // 7& - USB_KEYMAP(0x070025, 0x0009, 0x0011, 0x0009, 0x001c, "Digit8", DIGIT8), // 8* - USB_KEYMAP(0x070026, 0x000a, 0x0012, 0x000a, 0x0019, "Digit9", DIGIT9), // 9( - USB_KEYMAP(0x070027, 0x000b, 0x0013, 0x000b, 0x001d, "Digit0", DIGIT0), // 0) + DOM_CODE(0x070020, 0x0004, 0x000c, 0x0004, 0x0014, "Digit3", DIGIT3), // 3# + DOM_CODE(0x070021, 0x0005, 0x000d, 0x0005, 0x0015, "Digit4", DIGIT4), // 4$ + DOM_CODE(0x070022, 0x0006, 0x000e, 0x0006, 0x0017, "Digit5", DIGIT5), // 5% + DOM_CODE(0x070023, 0x0007, 0x000f, 0x0007, 0x0016, "Digit6", DIGIT6), // 6^ + DOM_CODE(0x070024, 0x0008, 0x0010, 0x0008, 0x001a, "Digit7", DIGIT7), // 7& + DOM_CODE(0x070025, 0x0009, 0x0011, 0x0009, 0x001c, "Digit8", DIGIT8), // 8* + DOM_CODE(0x070026, 0x000a, 0x0012, 0x000a, 0x0019, "Digit9", DIGIT9), // 9( + DOM_CODE(0x070027, 0x000b, 0x0013, 0x000b, 0x001d, "Digit0", DIGIT0), // 0) - USB_KEYMAP(0x070028, 0x001c, 0x0024, 0x001c, 0x0024, "Enter", ENTER), - USB_KEYMAP(0x070029, 0x0001, 0x0009, 0x0001, 0x0035, "Escape", ESCAPE), - USB_KEYMAP(0x07002a, 0x000e, 0x0016, 0x000e, 0x0033, "Backspace", BACKSPACE), - USB_KEYMAP(0x07002b, 0x000f, 0x0017, 0x000f, 0x0030, "Tab", TAB), - USB_KEYMAP(0x07002c, 0x0039, 0x0041, 0x0039, 0x0031, "Space", SPACE), // Spacebar - USB_KEYMAP(0x07002d, 0x000c, 0x0014, 0x000c, 0x001b, "Minus", MINUS), // -_ - USB_KEYMAP(0x07002e, 0x000d, 0x0015, 0x000d, 0x0018, "Equal", EQUAL), // =+ - USB_KEYMAP(0x07002f, 0x001a, 0x0022, 0x001a, 0x0021, "BracketLeft", BRACKET_LEFT), + DOM_CODE(0x070028, 0x001c, 0x0024, 0x001c, 0x0024, "Enter", ENTER), + DOM_CODE(0x070029, 0x0001, 0x0009, 0x0001, 0x0035, "Escape", ESCAPE), + DOM_CODE(0x07002a, 0x000e, 0x0016, 0x000e, 0x0033, "Backspace", BACKSPACE), + DOM_CODE(0x07002b, 0x000f, 0x0017, 0x000f, 0x0030, "Tab", TAB), + DOM_CODE(0x07002c, 0x0039, 0x0041, 0x0039, 0x0031, "Space", SPACE), // Spacebar + DOM_CODE(0x07002d, 0x000c, 0x0014, 0x000c, 0x001b, "Minus", MINUS), // -_ + DOM_CODE(0x07002e, 0x000d, 0x0015, 0x000d, 0x0018, "Equal", EQUAL), // =+ + DOM_CODE(0x07002f, 0x001a, 0x0022, 0x001a, 0x0021, "BracketLeft", BRACKET_LEFT), - USB_KEYMAP(0x070030, 0x001b, 0x0023, 0x001b, 0x001e, "BracketRight", BRACKET_RIGHT), - USB_KEYMAP(0x070031, 0x002b, 0x0033, 0x002b, 0x002a, "Backslash", BACKSLASH), // \| + DOM_CODE(0x070030, 0x001b, 0x0023, 0x001b, 0x001e, "BracketRight", BRACKET_RIGHT), + DOM_CODE(0x070031, 0x002b, 0x0033, 0x002b, 0x002a, "Backslash", BACKSLASH), // \| // USB#070032 never appears on keyboards that have USB#070031. // Platforms use the same scancode as for the two keys. // Hence this code can only be generated synthetically @@ -195,250 +195,250 @@ // The keycap varies on international keyboards: // Dan: '* Dutch: <> Ger: #' UK: #~ // TODO(garykac): Verify Mac intl keyboard. - USB_KEYMAP(0x070032, 0x0000, 0x0000, 0x0000, 0xffff, "IntlHash", INTL_HASH), - USB_KEYMAP(0x070033, 0x0027, 0x002f, 0x0027, 0x0029, "Semicolon", SEMICOLON), // ;: - USB_KEYMAP(0x070034, 0x0028, 0x0030, 0x0028, 0x0027, "Quote", QUOTE), // '" - USB_KEYMAP(0x070035, 0x0029, 0x0031, 0x0029, 0x0032, "Backquote", BACKQUOTE), // `~ - USB_KEYMAP(0x070036, 0x0033, 0x003b, 0x0033, 0x002b, "Comma", COMMA), // ,< - USB_KEYMAP(0x070037, 0x0034, 0x003c, 0x0034, 0x002f, "Period", PERIOD), // .> + DOM_CODE(0x070032, 0x0000, 0x0000, 0x0000, 0xffff, "IntlHash", INTL_HASH), + DOM_CODE(0x070033, 0x0027, 0x002f, 0x0027, 0x0029, "Semicolon", SEMICOLON), // ;: + DOM_CODE(0x070034, 0x0028, 0x0030, 0x0028, 0x0027, "Quote", QUOTE), // '" + DOM_CODE(0x070035, 0x0029, 0x0031, 0x0029, 0x0032, "Backquote", BACKQUOTE), // `~ + DOM_CODE(0x070036, 0x0033, 0x003b, 0x0033, 0x002b, "Comma", COMMA), // ,< + DOM_CODE(0x070037, 0x0034, 0x003c, 0x0034, 0x002f, "Period", PERIOD), // .> - USB_KEYMAP(0x070038, 0x0035, 0x003d, 0x0035, 0x002c, "Slash", SLASH), // /? + DOM_CODE(0x070038, 0x0035, 0x003d, 0x0035, 0x002c, "Slash", SLASH), // /? // TODO(garykac): CapsLock requires special handling for each platform. - USB_KEYMAP(0x070039, 0x003a, 0x0042, 0x003a, 0x0039, "CapsLock", CAPS_LOCK), - USB_KEYMAP(0x07003a, 0x003b, 0x0043, 0x003b, 0x007a, "F1", F1), - USB_KEYMAP(0x07003b, 0x003c, 0x0044, 0x003c, 0x0078, "F2", F2), - USB_KEYMAP(0x07003c, 0x003d, 0x0045, 0x003d, 0x0063, "F3", F3), - USB_KEYMAP(0x07003d, 0x003e, 0x0046, 0x003e, 0x0076, "F4", F4), - USB_KEYMAP(0x07003e, 0x003f, 0x0047, 0x003f, 0x0060, "F5", F5), - USB_KEYMAP(0x07003f, 0x0040, 0x0048, 0x0040, 0x0061, "F6", F6), + DOM_CODE(0x070039, 0x003a, 0x0042, 0x003a, 0x0039, "CapsLock", CAPS_LOCK), + DOM_CODE(0x07003a, 0x003b, 0x0043, 0x003b, 0x007a, "F1", F1), + DOM_CODE(0x07003b, 0x003c, 0x0044, 0x003c, 0x0078, "F2", F2), + DOM_CODE(0x07003c, 0x003d, 0x0045, 0x003d, 0x0063, "F3", F3), + DOM_CODE(0x07003d, 0x003e, 0x0046, 0x003e, 0x0076, "F4", F4), + DOM_CODE(0x07003e, 0x003f, 0x0047, 0x003f, 0x0060, "F5", F5), + DOM_CODE(0x07003f, 0x0040, 0x0048, 0x0040, 0x0061, "F6", F6), - USB_KEYMAP(0x070040, 0x0041, 0x0049, 0x0041, 0x0062, "F7", F7), - USB_KEYMAP(0x070041, 0x0042, 0x004a, 0x0042, 0x0064, "F8", F8), - USB_KEYMAP(0x070042, 0x0043, 0x004b, 0x0043, 0x0065, "F9", F9), - USB_KEYMAP(0x070043, 0x0044, 0x004c, 0x0044, 0x006d, "F10", F10), - USB_KEYMAP(0x070044, 0x0057, 0x005f, 0x0057, 0x0067, "F11", F11), - USB_KEYMAP(0x070045, 0x0058, 0x0060, 0x0058, 0x006f, "F12", F12), + DOM_CODE(0x070040, 0x0041, 0x0049, 0x0041, 0x0062, "F7", F7), + DOM_CODE(0x070041, 0x0042, 0x004a, 0x0042, 0x0064, "F8", F8), + DOM_CODE(0x070042, 0x0043, 0x004b, 0x0043, 0x0065, "F9", F9), + DOM_CODE(0x070043, 0x0044, 0x004c, 0x0044, 0x006d, "F10", F10), + DOM_CODE(0x070044, 0x0057, 0x005f, 0x0057, 0x0067, "F11", F11), + DOM_CODE(0x070045, 0x0058, 0x0060, 0x0058, 0x006f, "F12", F12), // PrintScreen is effectively F13 on Mac OS X. - USB_KEYMAP(0x070046, 0x0063, 0x006b, 0xe037, 0xffff, "PrintScreen", PRINT_SCREEN), - USB_KEYMAP(0x070047, 0x0046, 0x004e, 0x0046, 0xffff, "ScrollLock", SCROLL_LOCK), + DOM_CODE(0x070046, 0x0063, 0x006b, 0xe037, 0xffff, "PrintScreen", PRINT_SCREEN), + DOM_CODE(0x070047, 0x0046, 0x004e, 0x0046, 0xffff, "ScrollLock", SCROLL_LOCK), - USB_KEYMAP(0x070048, 0x0077, 0x007f, 0x0045, 0xffff, "Pause", PAUSE), + DOM_CODE(0x070048, 0x0077, 0x007f, 0x0045, 0xffff, "Pause", PAUSE), // USB#0x070049 Insert, labeled "Help/Insert" on Mac -- see note M1 at top. - USB_KEYMAP(0x070049, 0x006e, 0x0076, 0xe052, 0x0072, "Insert", INSERT), - USB_KEYMAP(0x07004a, 0x0066, 0x006e, 0xe047, 0x0073, "Home", HOME), - USB_KEYMAP(0x07004b, 0x0068, 0x0070, 0xe049, 0x0074, "PageUp", PAGE_UP), + DOM_CODE(0x070049, 0x006e, 0x0076, 0xe052, 0x0072, "Insert", INSERT), + DOM_CODE(0x07004a, 0x0066, 0x006e, 0xe047, 0x0073, "Home", HOME), + DOM_CODE(0x07004b, 0x0068, 0x0070, 0xe049, 0x0074, "PageUp", PAGE_UP), // Delete (Forward Delete) named DEL because DELETE conflicts with <windows.h> - USB_KEYMAP(0x07004c, 0x006f, 0x0077, 0xe053, 0x0075, "Delete", DEL), - USB_KEYMAP(0x07004d, 0x006b, 0x0073, 0xe04f, 0x0077, "End", END), - USB_KEYMAP(0x07004e, 0x006d, 0x0075, 0xe051, 0x0079, "PageDown", PAGE_DOWN), - USB_KEYMAP(0x07004f, 0x006a, 0x0072, 0xe04d, 0x007c, "ArrowRight", ARROW_RIGHT), + DOM_CODE(0x07004c, 0x006f, 0x0077, 0xe053, 0x0075, "Delete", DEL), + DOM_CODE(0x07004d, 0x006b, 0x0073, 0xe04f, 0x0077, "End", END), + DOM_CODE(0x07004e, 0x006d, 0x0075, 0xe051, 0x0079, "PageDown", PAGE_DOWN), + DOM_CODE(0x07004f, 0x006a, 0x0072, 0xe04d, 0x007c, "ArrowRight", ARROW_RIGHT), - USB_KEYMAP(0x070050, 0x0069, 0x0071, 0xe04b, 0x007b, "ArrowLeft", ARROW_LEFT), - USB_KEYMAP(0x070051, 0x006c, 0x0074, 0xe050, 0x007d, "ArrowDown", ARROW_DOWN), - USB_KEYMAP(0x070052, 0x0067, 0x006f, 0xe048, 0x007e, "ArrowUp", ARROW_UP), - USB_KEYMAP(0x070053, 0x0045, 0x004d, 0xe045, 0x0047, "NumLock", NUM_LOCK), - USB_KEYMAP(0x070054, 0x0062, 0x006a, 0xe035, 0x004b, "NumpadDivide", NUMPAD_DIVIDE), - USB_KEYMAP(0x070055, 0x0037, 0x003f, 0x0037, 0x0043, "NumpadMultiply", + DOM_CODE(0x070050, 0x0069, 0x0071, 0xe04b, 0x007b, "ArrowLeft", ARROW_LEFT), + DOM_CODE(0x070051, 0x006c, 0x0074, 0xe050, 0x007d, "ArrowDown", ARROW_DOWN), + DOM_CODE(0x070052, 0x0067, 0x006f, 0xe048, 0x007e, "ArrowUp", ARROW_UP), + DOM_CODE(0x070053, 0x0045, 0x004d, 0xe045, 0x0047, "NumLock", NUM_LOCK), + DOM_CODE(0x070054, 0x0062, 0x006a, 0xe035, 0x004b, "NumpadDivide", NUMPAD_DIVIDE), + DOM_CODE(0x070055, 0x0037, 0x003f, 0x0037, 0x0043, "NumpadMultiply", NUMPAD_MULTIPLY), // Keypad_* - USB_KEYMAP(0x070056, 0x004a, 0x0052, 0x004a, 0x004e, "NumpadSubtract", + DOM_CODE(0x070056, 0x004a, 0x0052, 0x004a, 0x004e, "NumpadSubtract", NUMPAD_SUBTRACT), // Keypad_- - USB_KEYMAP(0x070057, 0x004e, 0x0056, 0x004e, 0x0045, "NumpadAdd", NUMPAD_ADD), + DOM_CODE(0x070057, 0x004e, 0x0056, 0x004e, 0x0045, "NumpadAdd", NUMPAD_ADD), - USB_KEYMAP(0x070058, 0x0060, 0x0068, 0xe01c, 0x004c, "NumpadEnter", NUMPAD_ENTER), - USB_KEYMAP(0x070059, 0x004f, 0x0057, 0x004f, 0x0053, "Numpad1", NUMPAD1), // +End - USB_KEYMAP(0x07005a, 0x0050, 0x0058, 0x0050, 0x0054, "Numpad2", NUMPAD2), // +Down - USB_KEYMAP(0x07005b, 0x0051, 0x0059, 0x0051, 0x0055, "Numpad3", NUMPAD3), // +PageDn - USB_KEYMAP(0x07005c, 0x004b, 0x0053, 0x004b, 0x0056, "Numpad4", NUMPAD4), // +Left - USB_KEYMAP(0x07005d, 0x004c, 0x0054, 0x004c, 0x0057, "Numpad5", NUMPAD5), // - USB_KEYMAP(0x07005e, 0x004d, 0x0055, 0x004d, 0x0058, "Numpad6", NUMPAD6), // +Right - USB_KEYMAP(0x07005f, 0x0047, 0x004f, 0x0047, 0x0059, "Numpad7", NUMPAD7), // +Home + DOM_CODE(0x070058, 0x0060, 0x0068, 0xe01c, 0x004c, "NumpadEnter", NUMPAD_ENTER), + DOM_CODE(0x070059, 0x004f, 0x0057, 0x004f, 0x0053, "Numpad1", NUMPAD1), // +End + DOM_CODE(0x07005a, 0x0050, 0x0058, 0x0050, 0x0054, "Numpad2", NUMPAD2), // +Down + DOM_CODE(0x07005b, 0x0051, 0x0059, 0x0051, 0x0055, "Numpad3", NUMPAD3), // +PageDn + DOM_CODE(0x07005c, 0x004b, 0x0053, 0x004b, 0x0056, "Numpad4", NUMPAD4), // +Left + DOM_CODE(0x07005d, 0x004c, 0x0054, 0x004c, 0x0057, "Numpad5", NUMPAD5), // + DOM_CODE(0x07005e, 0x004d, 0x0055, 0x004d, 0x0058, "Numpad6", NUMPAD6), // +Right + DOM_CODE(0x07005f, 0x0047, 0x004f, 0x0047, 0x0059, "Numpad7", NUMPAD7), // +Home - USB_KEYMAP(0x070060, 0x0048, 0x0050, 0x0048, 0x005b, "Numpad8", NUMPAD8), // +Up - USB_KEYMAP(0x070061, 0x0049, 0x0051, 0x0049, 0x005c, "Numpad9", NUMPAD9), // +PageUp - USB_KEYMAP(0x070062, 0x0052, 0x005a, 0x0052, 0x0052, "Numpad0", NUMPAD0), // +Insert - USB_KEYMAP(0x070063, 0x0053, 0x005b, 0x0053, 0x0041, "NumpadDecimal", + DOM_CODE(0x070060, 0x0048, 0x0050, 0x0048, 0x005b, "Numpad8", NUMPAD8), // +Up + DOM_CODE(0x070061, 0x0049, 0x0051, 0x0049, 0x005c, "Numpad9", NUMPAD9), // +PageUp + DOM_CODE(0x070062, 0x0052, 0x005a, 0x0052, 0x0052, "Numpad0", NUMPAD0), // +Insert + DOM_CODE(0x070063, 0x0053, 0x005b, 0x0053, 0x0041, "NumpadDecimal", NUMPAD_DECIMAL), // Keypad_. Delete // USB#070064 is not present on US keyboard. // This key is typically located near LeftShift key. // The keycap varies on international keyboards: // Dan: <> Dutch: ][ Ger: <> UK: \| - USB_KEYMAP(0x070064, 0x0056, 0x005e, 0x0056, 0x000a, "IntlBackslash", INTL_BACKSLASH), + DOM_CODE(0x070064, 0x0056, 0x005e, 0x0056, 0x000a, "IntlBackslash", INTL_BACKSLASH), // USB#0x070065 Application Menu (next to RWin key) -- see note L2 at top. - USB_KEYMAP(0x070065, 0x007f, 0x0087, 0xe05d, 0x006e, "ContextMenu", CONTEXT_MENU), - USB_KEYMAP(0x070066, 0x0074, 0x007c, 0xe05e, 0xffff, "Power", POWER), - USB_KEYMAP(0x070067, 0x0075, 0x007d, 0x0059, 0x0051, "NumpadEqual", NUMPAD_EQUAL), + DOM_CODE(0x070065, 0x007f, 0x0087, 0xe05d, 0x006e, "ContextMenu", CONTEXT_MENU), + DOM_CODE(0x070066, 0x0074, 0x007c, 0xe05e, 0xffff, "Power", POWER), + DOM_CODE(0x070067, 0x0075, 0x007d, 0x0059, 0x0051, "NumpadEqual", NUMPAD_EQUAL), - USB_KEYMAP(0x070068, 0x00b7, 0x00bf, 0x0064, 0x0069, "F13", F13), - USB_KEYMAP(0x070069, 0x00b8, 0x00c0, 0x0065, 0x006b, "F14", F14), - USB_KEYMAP(0x07006a, 0x00b9, 0x00c1, 0x0066, 0x0071, "F15", F15), - USB_KEYMAP(0x07006b, 0x00ba, 0x00c2, 0x0067, 0x006a, "F16", F16), - USB_KEYMAP(0x07006c, 0x00bb, 0x00c3, 0x0068, 0x0040, "F17", F17), - USB_KEYMAP(0x07006d, 0x00bc, 0x00c4, 0x0069, 0x004f, "F18", F18), - USB_KEYMAP(0x07006e, 0x00bd, 0x00c5, 0x006a, 0x0050, "F19", F19), - USB_KEYMAP(0x07006f, 0x00be, 0x00c6, 0x006b, 0x005a, "F20", F20), + DOM_CODE(0x070068, 0x00b7, 0x00bf, 0x0064, 0x0069, "F13", F13), + DOM_CODE(0x070069, 0x00b8, 0x00c0, 0x0065, 0x006b, "F14", F14), + DOM_CODE(0x07006a, 0x00b9, 0x00c1, 0x0066, 0x0071, "F15", F15), + DOM_CODE(0x07006b, 0x00ba, 0x00c2, 0x0067, 0x006a, "F16", F16), + DOM_CODE(0x07006c, 0x00bb, 0x00c3, 0x0068, 0x0040, "F17", F17), + DOM_CODE(0x07006d, 0x00bc, 0x00c4, 0x0069, 0x004f, "F18", F18), + DOM_CODE(0x07006e, 0x00bd, 0x00c5, 0x006a, 0x0050, "F19", F19), + DOM_CODE(0x07006f, 0x00be, 0x00c6, 0x006b, 0x005a, "F20", F20), - USB_KEYMAP(0x070070, 0x00bf, 0x00c7, 0x006c, 0xffff, "F21", F21), - USB_KEYMAP(0x070071, 0x00c0, 0x00c8, 0x006d, 0xffff, "F22", F22), - USB_KEYMAP(0x070072, 0x00c1, 0x00c9, 0x006e, 0xffff, "F23", F23), + DOM_CODE(0x070070, 0x00bf, 0x00c7, 0x006c, 0xffff, "F21", F21), + DOM_CODE(0x070071, 0x00c0, 0x00c8, 0x006d, 0xffff, "F22", F22), + DOM_CODE(0x070072, 0x00c1, 0x00c9, 0x006e, 0xffff, "F23", F23), // USB#0x070073 -- see note W1 at top. - USB_KEYMAP(0x070073, 0x00c2, 0x00ca, 0x0076, 0xffff, "F24", F24), - USB_KEYMAP(0x070074, 0x0086, 0x008e, 0x0000, 0xffff, "Open", OPEN), // Execute + DOM_CODE(0x070073, 0x00c2, 0x00ca, 0x0076, 0xffff, "F24", F24), + DOM_CODE(0x070074, 0x0086, 0x008e, 0x0000, 0xffff, "Open", OPEN), // Execute // USB#0x070075 Help -- see note M1 at top. - USB_KEYMAP(0x070075, 0x008a, 0x0092, 0xe03b, 0xffff, "Help", HELP), + DOM_CODE(0x070075, 0x008a, 0x0092, 0xe03b, 0xffff, "Help", HELP), // USB#0x070076 Keyboard Menu -- see note L2 at top. - //USB_KEYMAP(0x070076, 0x0000, 0x0000, 0x0000, 0xffff, NULL, MENU), // Menu - USB_KEYMAP(0x070077, 0x0084, 0x008c, 0x0000, 0xffff, "Select", SELECT), // Select + //DOM_CODE(0x070076, 0x0000, 0x0000, 0x0000, 0xffff, NULL, MENU), // Menu + DOM_CODE(0x070077, 0x0084, 0x008c, 0x0000, 0xffff, "Select", SELECT), // Select - //USB_KEYMAP(0x070078, 0x0080, 0x0088, 0x0000, 0xffff, NULL, STOP), // Stop - USB_KEYMAP(0x070079, 0x0081, 0x0089, 0x0000, 0xffff, "Again", AGAIN), // Again - USB_KEYMAP(0x07007a, 0x0083, 0x008b, 0xe008, 0xffff, "Undo", UNDO), - USB_KEYMAP(0x07007b, 0x0089, 0x0091, 0xe017, 0xffff, "Cut", CUT), - USB_KEYMAP(0x07007c, 0x0085, 0x008d, 0xe018, 0xffff, "Copy", COPY), - USB_KEYMAP(0x07007d, 0x0087, 0x008f, 0xe00a, 0xffff, "Paste", PASTE), - USB_KEYMAP(0x07007e, 0x0088, 0x0090, 0x0000, 0xffff, "Find", FIND), // Find - USB_KEYMAP(0x07007f, 0x0071, 0x0079, 0xe020, 0x004a, "AudioVolumeMute", VOLUME_MUTE), + //DOM_CODE(0x070078, 0x0080, 0x0088, 0x0000, 0xffff, NULL, STOP), // Stop + DOM_CODE(0x070079, 0x0081, 0x0089, 0x0000, 0xffff, "Again", AGAIN), // Again + DOM_CODE(0x07007a, 0x0083, 0x008b, 0xe008, 0xffff, "Undo", UNDO), + DOM_CODE(0x07007b, 0x0089, 0x0091, 0xe017, 0xffff, "Cut", CUT), + DOM_CODE(0x07007c, 0x0085, 0x008d, 0xe018, 0xffff, "Copy", COPY), + DOM_CODE(0x07007d, 0x0087, 0x008f, 0xe00a, 0xffff, "Paste", PASTE), + DOM_CODE(0x07007e, 0x0088, 0x0090, 0x0000, 0xffff, "Find", FIND), // Find + DOM_CODE(0x07007f, 0x0071, 0x0079, 0xe020, 0x004a, "AudioVolumeMute", VOLUME_MUTE), - USB_KEYMAP(0x070080, 0x0073, 0x007b, 0xe030, 0x0048, "AudioVolumeUp", VOLUME_UP), - USB_KEYMAP(0x070081, 0x0072, 0x007a, 0xe02e, 0x0049, "AudioVolumeDown", VOLUME_DOWN), - //USB_KEYMAP(0x070082, 0x0000, 0x0000, 0x0000, 0xffff, NULL, LOCKING_CAPS_LOCK), - //USB_KEYMAP(0x070083, 0x0000, 0x0000, 0x0000, 0xffff, NULL, LOCKING_NUM_LOCK), - //USB_KEYMAP(0x070084, 0x0000, 0x0000, 0x0000, 0xffff, NULL, LOCKING_SCROLL_LOCK), - USB_KEYMAP(0x070085, 0x0079, 0x0081, 0x007e, 0x005f, "NumpadComma", NUMPAD_COMMA), + DOM_CODE(0x070080, 0x0073, 0x007b, 0xe030, 0x0048, "AudioVolumeUp", VOLUME_UP), + DOM_CODE(0x070081, 0x0072, 0x007a, 0xe02e, 0x0049, "AudioVolumeDown", VOLUME_DOWN), + //DOM_CODE(0x070082, 0x0000, 0x0000, 0x0000, 0xffff, NULL, LOCKING_CAPS_LOCK), + //DOM_CODE(0x070083, 0x0000, 0x0000, 0x0000, 0xffff, NULL, LOCKING_NUM_LOCK), + //DOM_CODE(0x070084, 0x0000, 0x0000, 0x0000, 0xffff, NULL, LOCKING_SCROLL_LOCK), + DOM_CODE(0x070085, 0x0079, 0x0081, 0x007e, 0x005f, "NumpadComma", NUMPAD_COMMA), // International1 // USB#070086 is used on AS/400 keyboards. Standard Keypad_= is USB#070067. - //USB_KEYMAP(0x070086, 0x0000, 0x0000, 0x0000, 0xffff, NULL, NUMPAD_EQUAL), + //DOM_CODE(0x070086, 0x0000, 0x0000, 0x0000, 0xffff, NULL, NUMPAD_EQUAL), // USB#070087 is used for Brazilian /? and Japanese _ 'ro'. - USB_KEYMAP(0x070087, 0x0059, 0x0061, 0x0073, 0x005e, "IntlRo", INTL_RO), + DOM_CODE(0x070087, 0x0059, 0x0061, 0x0073, 0x005e, "IntlRo", INTL_RO), // International2 // USB#070088 is used as Japanese Hiragana/Katakana key. - USB_KEYMAP(0x070088, 0x005d, 0x0065, 0x0070, 0x0068, "KanaMode", KANA_MODE), + DOM_CODE(0x070088, 0x005d, 0x0065, 0x0070, 0x0068, "KanaMode", KANA_MODE), // International3 // USB#070089 is used as Japanese Yen key. - USB_KEYMAP(0x070089, 0x007c, 0x0084, 0x007d, 0x005d, "IntlYen", INTL_YEN), + DOM_CODE(0x070089, 0x007c, 0x0084, 0x007d, 0x005d, "IntlYen", INTL_YEN), // International4 // USB#07008a is used as Japanese Henkan (Convert) key. - USB_KEYMAP(0x07008a, 0x005c, 0x0064, 0x0079, 0xffff, "Convert", CONVERT), + DOM_CODE(0x07008a, 0x005c, 0x0064, 0x0079, 0xffff, "Convert", CONVERT), // International5 // USB#07008b is used as Japanese Muhenkan (No-convert) key. - USB_KEYMAP(0x07008b, 0x005e, 0x0066, 0x007b, 0xffff, "NonConvert", NON_CONVERT), - //USB_KEYMAP(0x07008c, 0x005f, 0x0067, 0x005c, 0xffff, NULL, INTERNATIONAL6), - //USB_KEYMAP(0x07008d, 0x0000, 0x0000, 0x0000, 0xffff, NULL, INTERNATIONAL7), - //USB_KEYMAP(0x07008e, 0x0000, 0x0000, 0x0000, 0xffff, NULL, INTERNATIONAL8), - //USB_KEYMAP(0x07008f, 0x0000, 0x0000, 0x0000, 0xffff, NULL, INTERNATIONAL9), + DOM_CODE(0x07008b, 0x005e, 0x0066, 0x007b, 0xffff, "NonConvert", NON_CONVERT), + //DOM_CODE(0x07008c, 0x005f, 0x0067, 0x005c, 0xffff, NULL, INTERNATIONAL6), + //DOM_CODE(0x07008d, 0x0000, 0x0000, 0x0000, 0xffff, NULL, INTERNATIONAL7), + //DOM_CODE(0x07008e, 0x0000, 0x0000, 0x0000, 0xffff, NULL, INTERNATIONAL8), + //DOM_CODE(0x07008f, 0x0000, 0x0000, 0x0000, 0xffff, NULL, INTERNATIONAL9), // LANG1 // USB#070090 is used as Korean Hangul/English toggle key. - USB_KEYMAP(0x070090, 0x007a, 0x0082, 0x0072, 0xffff, "Lang1", LANG1), + DOM_CODE(0x070090, 0x007a, 0x0082, 0x0072, 0xffff, "Lang1", LANG1), // LANG2 // USB#070091 is used as Korean Hanja conversion key. - USB_KEYMAP(0x070091, 0x007b, 0x0083, 0x0071, 0xffff, "Lang2", LANG2), + DOM_CODE(0x070091, 0x007b, 0x0083, 0x0071, 0xffff, "Lang2", LANG2), // LANG3 // USB#070092 is used as Japanese Katakana key. - USB_KEYMAP(0x070092, 0x005a, 0x0062, 0x0078, 0xffff, "Lang3", LANG3), + DOM_CODE(0x070092, 0x005a, 0x0062, 0x0078, 0xffff, "Lang3", LANG3), // LANG4 // USB#070093 is used as Japanese Hiragana key. - USB_KEYMAP(0x070093, 0x005b, 0x0063, 0x0077, 0xffff, "Lang4", LANG4), + DOM_CODE(0x070093, 0x005b, 0x0063, 0x0077, 0xffff, "Lang4", LANG4), // LANG5 // USB#070094 is used as Japanese Zenkaku/Hankaku (Fullwidth/halfwidth) key. // Not mapped on Windows -- see note W1 at top. - USB_KEYMAP(0x070094, 0x0055, 0x005d, 0x0000, 0xffff, "Lang5", LANG5), - //USB_KEYMAP(0x070095, 0x0000, 0x0000, 0x0000, 0xffff, NULL, LANG6), // LANG6 - //USB_KEYMAP(0x070096, 0x0000, 0x0000, 0x0000, 0xffff, NULL, LANG7), // LANG7 - //USB_KEYMAP(0x070097, 0x0000, 0x0000, 0x0000, 0xffff, NULL, LANG8), // LANG8 - //USB_KEYMAP(0x070098, 0x0000, 0x0000, 0x0000, 0xffff, NULL, LANG9), // LANG9 + DOM_CODE(0x070094, 0x0055, 0x005d, 0x0000, 0xffff, "Lang5", LANG5), + //DOM_CODE(0x070095, 0x0000, 0x0000, 0x0000, 0xffff, NULL, LANG6), // LANG6 + //DOM_CODE(0x070096, 0x0000, 0x0000, 0x0000, 0xffff, NULL, LANG7), // LANG7 + //DOM_CODE(0x070097, 0x0000, 0x0000, 0x0000, 0xffff, NULL, LANG8), // LANG8 + //DOM_CODE(0x070098, 0x0000, 0x0000, 0x0000, 0xffff, NULL, LANG9), // LANG9 - //USB_KEYMAP(0x070099, 0x0000, 0x0000, 0x0000, 0xffff, NULL, ALTERNATE_ERASE), - //USB_KEYMAP(0x07009a, 0x0000, 0x0000, 0x0000, 0xffff, NULL, SYS_REQ), // /Attention - USB_KEYMAP(0x07009b, 0x0000, 0x0000, 0x0000, 0xffff, "Abort", ABORT), // Cancel + //DOM_CODE(0x070099, 0x0000, 0x0000, 0x0000, 0xffff, NULL, ALTERNATE_ERASE), + //DOM_CODE(0x07009a, 0x0000, 0x0000, 0x0000, 0xffff, NULL, SYS_REQ), // /Attention + DOM_CODE(0x07009b, 0x0000, 0x0000, 0x0000, 0xffff, "Abort", ABORT), // Cancel // USB#0x07009c Keyboard Clear -- see note L1 at top. - //USB_KEYMAP(0x07009c, 0x0000, 0x0000, 0x0000, 0xffff, NULL, CLEAR), // Clear - //USB_KEYMAP(0x07009d, 0x0000, 0x0000, 0x0000, 0xffff, NULL, PRIOR), // Prior - //USB_KEYMAP(0x07009e, 0x0000, 0x0000, 0x0000, 0xffff, NULL, RETURN), // Return - //USB_KEYMAP(0x07009f, 0x0000, 0x0000, 0x0000, 0xffff, NULL, SEPARATOR), // Separator + //DOM_CODE(0x07009c, 0x0000, 0x0000, 0x0000, 0xffff, NULL, CLEAR), // Clear + //DOM_CODE(0x07009d, 0x0000, 0x0000, 0x0000, 0xffff, NULL, PRIOR), // Prior + //DOM_CODE(0x07009e, 0x0000, 0x0000, 0x0000, 0xffff, NULL, RETURN), // Return + //DOM_CODE(0x07009f, 0x0000, 0x0000, 0x0000, 0xffff, NULL, SEPARATOR), // Separator - //USB_KEYMAP(0x0700a0, 0x0000, 0x0000, 0x0000, 0xffff, NULL, OUT), // Out - //USB_KEYMAP(0x0700a1, 0x0000, 0x0000, 0x0000, 0xffff, NULL, OPER), // Oper - //USB_KEYMAP(0x0700a2, 0x0000, 0x0000, 0x0000, 0xffff, NULL, CLEAR_AGAIN), + //DOM_CODE(0x0700a0, 0x0000, 0x0000, 0x0000, 0xffff, NULL, OUT), // Out + //DOM_CODE(0x0700a1, 0x0000, 0x0000, 0x0000, 0xffff, NULL, OPER), // Oper + //DOM_CODE(0x0700a2, 0x0000, 0x0000, 0x0000, 0xffff, NULL, CLEAR_AGAIN), // USB#0x0700a3 Props -- see note L2 at top. - USB_KEYMAP(0x0700a3, 0x0000, 0x0000, 0x0000, 0xffff, "Props", PROPS), // CrSel/Props - //USB_KEYMAP(0x0700a4, 0x0000, 0x0000, 0x0000, 0xffff, NULL, EX_SEL), // ExSel + DOM_CODE(0x0700a3, 0x0000, 0x0000, 0x0000, 0xffff, "Props", PROPS), // CrSel/Props + //DOM_CODE(0x0700a4, 0x0000, 0x0000, 0x0000, 0xffff, NULL, EX_SEL), // ExSel - //USB_KEYMAP(0x0700b0, 0x0000, 0x0000, 0x0000, 0xffff, NULL, NUMPAD_00), - //USB_KEYMAP(0x0700b1, 0x0000, 0x0000, 0x0000, 0xffff, NULL, NUMPAD_000), - //USB_KEYMAP(0x0700b2, 0x0000, 0x0000, 0x0000, 0xffff, NULL, THOUSANDS_SEPARATOR), - //USB_KEYMAP(0x0700b3, 0x0000, 0x0000, 0x0000, 0xffff, NULL, DECIMAL_SEPARATOR), - //USB_KEYMAP(0x0700b4, 0x0000, 0x0000, 0x0000, 0xffff, NULL, CURRENCY_UNIT), - //USB_KEYMAP(0x0700b5, 0x0000, 0x0000, 0x0000, 0xffff, NULL, CURRENCY_SUBUNIT), - USB_KEYMAP(0x0700b6, 0x00b3, 0x00bb, 0x0000, 0xffff, "NumpadParenLeft", + //DOM_CODE(0x0700b0, 0x0000, 0x0000, 0x0000, 0xffff, NULL, NUMPAD_00), + //DOM_CODE(0x0700b1, 0x0000, 0x0000, 0x0000, 0xffff, NULL, NUMPAD_000), + //DOM_CODE(0x0700b2, 0x0000, 0x0000, 0x0000, 0xffff, NULL, THOUSANDS_SEPARATOR), + //DOM_CODE(0x0700b3, 0x0000, 0x0000, 0x0000, 0xffff, NULL, DECIMAL_SEPARATOR), + //DOM_CODE(0x0700b4, 0x0000, 0x0000, 0x0000, 0xffff, NULL, CURRENCY_UNIT), + //DOM_CODE(0x0700b5, 0x0000, 0x0000, 0x0000, 0xffff, NULL, CURRENCY_SUBUNIT), + DOM_CODE(0x0700b6, 0x00b3, 0x00bb, 0x0000, 0xffff, "NumpadParenLeft", NUMPAD_PAREN_LEFT), // Keypad_( - USB_KEYMAP(0x0700b7, 0x00b4, 0x00bc, 0x0000, 0xffff, "NumpadParenRight", + DOM_CODE(0x0700b7, 0x00b4, 0x00bc, 0x0000, 0xffff, "NumpadParenRight", NUMPAD_PAREN_RIGHT), // Keypad_) - //USB_KEYMAP(0x0700b8, 0x0000, 0x0000, 0x0000, 0xffff, NULL, NUMPAD_BRACE_LEFT), - //USB_KEYMAP(0x0700b9, 0x0000, 0x0000, 0x0000, 0xffff, NULL, NUMPAD_BRACE_RIGHT), - //USB_KEYMAP(0x0700ba, 0x0000, 0x0000, 0x0000, 0xffff, NULL, NUMPAD_TAB), - USB_KEYMAP(0x0700bb, 0x0000, 0x0000, 0x0000, 0xffff, "NumpadBackspace", + //DOM_CODE(0x0700b8, 0x0000, 0x0000, 0x0000, 0xffff, NULL, NUMPAD_BRACE_LEFT), + //DOM_CODE(0x0700b9, 0x0000, 0x0000, 0x0000, 0xffff, NULL, NUMPAD_BRACE_RIGHT), + //DOM_CODE(0x0700ba, 0x0000, 0x0000, 0x0000, 0xffff, NULL, NUMPAD_TAB), + DOM_CODE(0x0700bb, 0x0000, 0x0000, 0x0000, 0xffff, "NumpadBackspace", NUMPAD_BACKSPACE), // Keypad_Backspace - //USB_KEYMAP(0x0700bc, 0x0000, 0x0000, 0x0000, 0xffff, NULL, NUMPAD_A), - //USB_KEYMAP(0x0700bd, 0x0000, 0x0000, 0x0000, 0xffff, NULL, NUMPAD_B), - //USB_KEYMAP(0x0700be, 0x0000, 0x0000, 0x0000, 0xffff, NULL, NUMPAD_C), - //USB_KEYMAP(0x0700bf, 0x0000, 0x0000, 0x0000, 0xffff, NULL, NUMPAD_D), + //DOM_CODE(0x0700bc, 0x0000, 0x0000, 0x0000, 0xffff, NULL, NUMPAD_A), + //DOM_CODE(0x0700bd, 0x0000, 0x0000, 0x0000, 0xffff, NULL, NUMPAD_B), + //DOM_CODE(0x0700be, 0x0000, 0x0000, 0x0000, 0xffff, NULL, NUMPAD_C), + //DOM_CODE(0x0700bf, 0x0000, 0x0000, 0x0000, 0xffff, NULL, NUMPAD_D), - //USB_KEYMAP(0x0700c0, 0x0000, 0x0000, 0x0000, 0xffff, NULL, NUMPAD_E), - //USB_KEYMAP(0x0700c1, 0x0000, 0x0000, 0x0000, 0xffff, NULL, NUMPAD_F), - //USB_KEYMAP(0x0700c2, 0x0000, 0x0000, 0x0000, 0xffff, NULL, NUMPAD_XOR), - //USB_KEYMAP(0x0700c3, 0x0000, 0x0000, 0x0000, 0xffff, NULL, NUMPAD_CARAT), - //USB_KEYMAP(0x0700c4, 0x0000, 0x0000, 0x0000, 0xffff, NULL, NUMPAD_PERCENT), - //USB_KEYMAP(0x0700c5, 0x0000, 0x0000, 0x0000, 0xffff, NULL, NUMPAD_LESS_THAN), - //USB_KEYMAP(0x0700c6, 0x0000, 0x0000, 0x0000, 0xffff, NULL, NUMPAD_GREATER_THAN), - //USB_KEYMAP(0x0700c7, 0x0000, 0x0000, 0x0000, 0xffff, NULL, NUMPAD_AMERSAND), + //DOM_CODE(0x0700c0, 0x0000, 0x0000, 0x0000, 0xffff, NULL, NUMPAD_E), + //DOM_CODE(0x0700c1, 0x0000, 0x0000, 0x0000, 0xffff, NULL, NUMPAD_F), + //DOM_CODE(0x0700c2, 0x0000, 0x0000, 0x0000, 0xffff, NULL, NUMPAD_XOR), + //DOM_CODE(0x0700c3, 0x0000, 0x0000, 0x0000, 0xffff, NULL, NUMPAD_CARAT), + //DOM_CODE(0x0700c4, 0x0000, 0x0000, 0x0000, 0xffff, NULL, NUMPAD_PERCENT), + //DOM_CODE(0x0700c5, 0x0000, 0x0000, 0x0000, 0xffff, NULL, NUMPAD_LESS_THAN), + //DOM_CODE(0x0700c6, 0x0000, 0x0000, 0x0000, 0xffff, NULL, NUMPAD_GREATER_THAN), + //DOM_CODE(0x0700c7, 0x0000, 0x0000, 0x0000, 0xffff, NULL, NUMPAD_AMERSAND), - //USB_KEYMAP(0x0700c8, 0x0000, 0x0000, 0x0000, 0xffff, NULL, NUMPAD_DOUBLE_AMPERSAND), - //USB_KEYMAP(0x0700c9, 0x0000, 0x0000, 0x0000, 0xffff, NULL, NUMPAD_VERTICAL_BAR), - //USB_KEYMAP(0x0700ca, 0x0000, 0x0000, 0x0000, 0xffff, NULL, + //DOM_CODE(0x0700c8, 0x0000, 0x0000, 0x0000, 0xffff, NULL, NUMPAD_DOUBLE_AMPERSAND), + //DOM_CODE(0x0700c9, 0x0000, 0x0000, 0x0000, 0xffff, NULL, NUMPAD_VERTICAL_BAR), + //DOM_CODE(0x0700ca, 0x0000, 0x0000, 0x0000, 0xffff, NULL, // NUMPAD_DOUBLE_VERTICAL_BAR), // Keypad_|| - //USB_KEYMAP(0x0700cb, 0x0000, 0x0000, 0x0000, 0xffff, NULL, NUMPAD_COLON), - //USB_KEYMAP(0x0700cc, 0x0000, 0x0000, 0x0000, 0xffff, NULL, NUMPAD_NUMBER), - //USB_KEYMAP(0x0700cd, 0x0000, 0x0000, 0x0000, 0xffff, NULL, NUMPAD_SPACE), - //USB_KEYMAP(0x0700ce, 0x0000, 0x0000, 0x0000, 0xffff, NULL, NUMPAD_AT), - //USB_KEYMAP(0x0700cf, 0x0000, 0x0000, 0x0000, 0xffff, NULL, NUMPAD_EXCLAMATION), + //DOM_CODE(0x0700cb, 0x0000, 0x0000, 0x0000, 0xffff, NULL, NUMPAD_COLON), + //DOM_CODE(0x0700cc, 0x0000, 0x0000, 0x0000, 0xffff, NULL, NUMPAD_NUMBER), + //DOM_CODE(0x0700cd, 0x0000, 0x0000, 0x0000, 0xffff, NULL, NUMPAD_SPACE), + //DOM_CODE(0x0700ce, 0x0000, 0x0000, 0x0000, 0xffff, NULL, NUMPAD_AT), + //DOM_CODE(0x0700cf, 0x0000, 0x0000, 0x0000, 0xffff, NULL, NUMPAD_EXCLAMATION), - USB_KEYMAP(0x0700d0, 0x0000, 0x0000, 0x0000, 0xffff, "NumpadMemoryStore", + DOM_CODE(0x0700d0, 0x0000, 0x0000, 0x0000, 0xffff, "NumpadMemoryStore", NUMPAD_MEMORY_STORE), // Keypad_MemoryStore - USB_KEYMAP(0x0700d1, 0x0000, 0x0000, 0x0000, 0xffff, "NumpadMemoryRecall", + DOM_CODE(0x0700d1, 0x0000, 0x0000, 0x0000, 0xffff, "NumpadMemoryRecall", NUMPAD_MEMORY_RECALL), // Keypad_MemoryRecall - USB_KEYMAP(0x0700d2, 0x0000, 0x0000, 0x0000, 0xffff, "NumpadMemoryClear", + DOM_CODE(0x0700d2, 0x0000, 0x0000, 0x0000, 0xffff, "NumpadMemoryClear", NUMPAD_MEMORY_CLEAR), // Keypad_MemoryClear - USB_KEYMAP(0x0700d3, 0x0000, 0x0000, 0x0000, 0xffff, "NumpadMemoryAdd", + DOM_CODE(0x0700d3, 0x0000, 0x0000, 0x0000, 0xffff, "NumpadMemoryAdd", NUMPAD_MEMORY_ADD), // Keypad_MemoryAdd - USB_KEYMAP(0x0700d4, 0x0000, 0x0000, 0x0000, 0xffff, "NumpadMemorySubtract", + DOM_CODE(0x0700d4, 0x0000, 0x0000, 0x0000, 0xffff, "NumpadMemorySubtract", NUMPAD_MEMORY_SUBTRACT), // Keypad_MemorySubtract - //USB_KEYMAP(0x0700d5, 0x0000, 0x0000, 0x0000, 0xffff, NULL, NUMPAD_MEMORY_MULTIPLE), - //USB_KEYMAP(0x0700d6, 0x0000, 0x0000, 0x0000, 0xffff, NULL, NUMPAD_MEMORY_DIVIDE), - USB_KEYMAP(0x0700d7, 0x0076, 0x007e, 0x0000, 0xffff, NULL, NUMPAD_SIGN_CHANGE), // +/- + //DOM_CODE(0x0700d5, 0x0000, 0x0000, 0x0000, 0xffff, NULL, NUMPAD_MEMORY_MULTIPLE), + //DOM_CODE(0x0700d6, 0x0000, 0x0000, 0x0000, 0xffff, NULL, NUMPAD_MEMORY_DIVIDE), + DOM_CODE(0x0700d7, 0x0076, 0x007e, 0x0000, 0xffff, NULL, NUMPAD_SIGN_CHANGE), // +/- // USB#0x0700d8 Keypad Clear -- see note L1 at top. - USB_KEYMAP(0x0700d8, 0x0000, 0x0000, 0x0000, 0xffff, "NumpadClear", NUMPAD_CLEAR), - USB_KEYMAP(0x0700d9, 0x0000, 0x0000, 0x0000, 0xffff, "NumpadClearEntry", + DOM_CODE(0x0700d8, 0x0000, 0x0000, 0x0000, 0xffff, "NumpadClear", NUMPAD_CLEAR), + DOM_CODE(0x0700d9, 0x0000, 0x0000, 0x0000, 0xffff, "NumpadClearEntry", NUMPAD_CLEAR_ENTRY), // Keypad_ClearEntry - //USB_KEYMAP(0x0700da, 0x0000, 0x0000, 0x0000, 0xffff, NULL, NUMPAD_BINARY), - //USB_KEYMAP(0x0700db, 0x0000, 0x0000, 0x0000, 0xffff, NULL, NUMPAD_OCTAL), - //USB_KEYMAP(0x0700dc, 0x0000, 0x0000, 0x0000, 0xffff, NULL, NUMPAD_DECIMAL), - //USB_KEYMAP(0x0700dd, 0x0000, 0x0000, 0x0000, 0xffff, NULL, NUMPAD_HEXADECIMAL), + //DOM_CODE(0x0700da, 0x0000, 0x0000, 0x0000, 0xffff, NULL, NUMPAD_BINARY), + //DOM_CODE(0x0700db, 0x0000, 0x0000, 0x0000, 0xffff, NULL, NUMPAD_OCTAL), + //DOM_CODE(0x0700dc, 0x0000, 0x0000, 0x0000, 0xffff, NULL, NUMPAD_DECIMAL), + //DOM_CODE(0x0700dd, 0x0000, 0x0000, 0x0000, 0xffff, NULL, NUMPAD_HEXADECIMAL), // USB#0700de - #0700df are reserved. - USB_KEYMAP(0x0700e0, 0x001d, 0x0025, 0x001d, 0x003b, "ControlLeft", CONTROL_LEFT), - USB_KEYMAP(0x0700e1, 0x002a, 0x0032, 0x002a, 0x0038, "ShiftLeft", SHIFT_LEFT), + DOM_CODE(0x0700e0, 0x001d, 0x0025, 0x001d, 0x003b, "ControlLeft", CONTROL_LEFT), + DOM_CODE(0x0700e1, 0x002a, 0x0032, 0x002a, 0x0038, "ShiftLeft", SHIFT_LEFT), // USB#0700e2: left Alt key (Mac left Option key). - USB_KEYMAP(0x0700e2, 0x0038, 0x0040, 0x0038, 0x003a, "AltLeft", ALT_LEFT), + DOM_CODE(0x0700e2, 0x0038, 0x0040, 0x0038, 0x003a, "AltLeft", ALT_LEFT), // USB#0700e3: left GUI key, e.g. Windows, Mac Command, ChromeOS Search. - USB_KEYMAP(0x0700e3, 0x007d, 0x0085, 0xe05b, 0x0037, "MetaLeft", META_LEFT), - USB_KEYMAP(0x0700e4, 0x0061, 0x0069, 0xe01d, 0x003e, "ControlRight", CONTROL_RIGHT), - USB_KEYMAP(0x0700e5, 0x0036, 0x003e, 0x0036, 0x003c, "ShiftRight", SHIFT_RIGHT), + DOM_CODE(0x0700e3, 0x007d, 0x0085, 0xe05b, 0x0037, "MetaLeft", META_LEFT), + DOM_CODE(0x0700e4, 0x0061, 0x0069, 0xe01d, 0x003e, "ControlRight", CONTROL_RIGHT), + DOM_CODE(0x0700e5, 0x0036, 0x003e, 0x0036, 0x003c, "ShiftRight", SHIFT_RIGHT), // USB#0700e6: right Alt key (Mac right Option key). - USB_KEYMAP(0x0700e6, 0x0064, 0x006c, 0xe038, 0x003d, "AltRight", ALT_RIGHT), + DOM_CODE(0x0700e6, 0x0064, 0x006c, 0xe038, 0x003d, "AltRight", ALT_RIGHT), // USB#0700e7: right GUI key, e.g. Windows, Mac Command, ChromeOS Search. - USB_KEYMAP(0x0700e7, 0x007e, 0x0086, 0xe05c, 0x0036, "MetaRight", META_RIGHT), + DOM_CODE(0x0700e7, 0x007e, 0x0086, 0xe05c, 0x0036, "MetaRight", META_RIGHT), // USB#0700e8 - #07ffff are reserved @@ -466,129 +466,129 @@ // KEY_BRIGHTNESS* added in Linux 3.16 // http://www.usb.org/developers/hidpage/HUTRR41.pdf // USB evdev XKB Win Mac Code - USB_KEYMAP(0x0c0060, 0x0166, 0x016e, 0x0000, 0xffff, NULL, INFO), - USB_KEYMAP(0x0c0061, 0x0172, 0x017a, 0x0000, 0xffff, NULL, CLOSED_CAPTION_TOGGLE), - USB_KEYMAP(0x0c006f, 0x00e1, 0x00e9, 0x0000, 0xffff, "BrightnessUp", BRIGHTNESS_UP), - USB_KEYMAP(0x0c0070, 0x00e0, 0x00e8, 0x0000, 0xffff, "BrightnessDown", + DOM_CODE(0x0c0060, 0x0166, 0x016e, 0x0000, 0xffff, NULL, INFO), + DOM_CODE(0x0c0061, 0x0172, 0x017a, 0x0000, 0xffff, NULL, CLOSED_CAPTION_TOGGLE), + DOM_CODE(0x0c006f, 0x00e1, 0x00e9, 0x0000, 0xffff, "BrightnessUp", BRIGHTNESS_UP), + DOM_CODE(0x0c0070, 0x00e0, 0x00e8, 0x0000, 0xffff, "BrightnessDown", BRIGHTNESS_DOWN), // Display Brightness Decrement - USB_KEYMAP(0x0c0072, 0x01af, 0x01b7, 0x0000, 0xffff, NULL, BRIGHTNESS_TOGGLE), - USB_KEYMAP(0x0c0073, 0x0250, 0x0258, 0x0000, 0xffff, NULL, BRIGHTNESS_MINIMIUM), - USB_KEYMAP(0x0c0074, 0x0251, 0x0259, 0x0000, 0xffff, NULL, BRIGHTNESS_MAXIMUM), - USB_KEYMAP(0x0c0075, 0x00f4, 0x00fc, 0x0000, 0xffff, NULL, BRIGHTNESS_AUTO), - USB_KEYMAP(0x0c0083, 0x0195, 0x019d, 0x0000, 0xffff, NULL, MEDIA_LAST), - USB_KEYMAP(0x0c008c, 0x00a9, 0x00b1, 0x0000, 0xffff, NULL, LAUNCH_PHONE), - USB_KEYMAP(0x0c008d, 0x016a, 0x0172, 0x0000, 0xffff, NULL, PROGRAM_GUIDE), - USB_KEYMAP(0x0c0094, 0x00ae, 0x00b6, 0x0000, 0xffff, NULL, EXIT), - USB_KEYMAP(0x0c009c, 0x019a, 0x01a2, 0x0000, 0xffff, NULL, CHANNEL_UP), - USB_KEYMAP(0x0c009d, 0x019b, 0x01a3, 0x0000, 0xffff, NULL, CHANNEL_DOWN), + DOM_CODE(0x0c0072, 0x01af, 0x01b7, 0x0000, 0xffff, NULL, BRIGHTNESS_TOGGLE), + DOM_CODE(0x0c0073, 0x0250, 0x0258, 0x0000, 0xffff, NULL, BRIGHTNESS_MINIMIUM), + DOM_CODE(0x0c0074, 0x0251, 0x0259, 0x0000, 0xffff, NULL, BRIGHTNESS_MAXIMUM), + DOM_CODE(0x0c0075, 0x00f4, 0x00fc, 0x0000, 0xffff, NULL, BRIGHTNESS_AUTO), + DOM_CODE(0x0c0083, 0x0195, 0x019d, 0x0000, 0xffff, NULL, MEDIA_LAST), + DOM_CODE(0x0c008c, 0x00a9, 0x00b1, 0x0000, 0xffff, NULL, LAUNCH_PHONE), + DOM_CODE(0x0c008d, 0x016a, 0x0172, 0x0000, 0xffff, NULL, PROGRAM_GUIDE), + DOM_CODE(0x0c0094, 0x00ae, 0x00b6, 0x0000, 0xffff, NULL, EXIT), + DOM_CODE(0x0c009c, 0x019a, 0x01a2, 0x0000, 0xffff, NULL, CHANNEL_UP), + DOM_CODE(0x0c009d, 0x019b, 0x01a3, 0x0000, 0xffff, NULL, CHANNEL_DOWN), // USB evdev XKB Win Mac - USB_KEYMAP(0x0c00b0, 0x00cf, 0x00d7, 0x0000, 0xffff, "MediaPlay", MEDIA_PLAY), - //USB_KEYMAP(0x0c00b1, 0x0077, 0x007f, 0x0000, 0xffff, "MediaPause", MEDIA_PAUSE), - USB_KEYMAP(0x0c00b2, 0x00a7, 0x00af, 0x0000, 0xffff, "MediaRecord", MEDIA_RECORD), - USB_KEYMAP(0x0c00b3, 0x00d0, 0x00d8, 0x0000, 0xffff, "MediaFastForward", MEDIA_FAST_FORWARD), - USB_KEYMAP(0x0c00b4, 0x00a8, 0x00b0, 0x0000, 0xffff, "MediaRewind", MEDIA_REWIND), - USB_KEYMAP(0x0c00b5, 0x00a3, 0x00ab, 0xe019, 0xffff, "MediaTrackNext", + DOM_CODE(0x0c00b0, 0x00cf, 0x00d7, 0x0000, 0xffff, "MediaPlay", MEDIA_PLAY), + //DOM_CODE(0x0c00b1, 0x0077, 0x007f, 0x0000, 0xffff, "MediaPause", MEDIA_PAUSE), + DOM_CODE(0x0c00b2, 0x00a7, 0x00af, 0x0000, 0xffff, "MediaRecord", MEDIA_RECORD), + DOM_CODE(0x0c00b3, 0x00d0, 0x00d8, 0x0000, 0xffff, "MediaFastForward", MEDIA_FAST_FORWARD), + DOM_CODE(0x0c00b4, 0x00a8, 0x00b0, 0x0000, 0xffff, "MediaRewind", MEDIA_REWIND), + DOM_CODE(0x0c00b5, 0x00a3, 0x00ab, 0xe019, 0xffff, "MediaTrackNext", MEDIA_TRACK_NEXT), - USB_KEYMAP(0x0c00b6, 0x00a5, 0x00ad, 0xe010, 0xffff, "MediaTrackPrevious", + DOM_CODE(0x0c00b6, 0x00a5, 0x00ad, 0xe010, 0xffff, "MediaTrackPrevious", MEDIA_TRACK_PREVIOUS), - USB_KEYMAP(0x0c00b7, 0x00a6, 0x00ae, 0xe024, 0xffff, "MediaStop", MEDIA_STOP), - USB_KEYMAP(0x0c00b8, 0x00a1, 0x00a9, 0xe02c, 0xffff, "Eject", EJECT), - USB_KEYMAP(0x0c00cd, 0x00a4, 0x00ac, 0xe022, 0xffff, "MediaPlayPause", + DOM_CODE(0x0c00b7, 0x00a6, 0x00ae, 0xe024, 0xffff, "MediaStop", MEDIA_STOP), + DOM_CODE(0x0c00b8, 0x00a1, 0x00a9, 0xe02c, 0xffff, "Eject", EJECT), + DOM_CODE(0x0c00cd, 0x00a4, 0x00ac, 0xe022, 0xffff, "MediaPlayPause", MEDIA_PLAY_PAUSE), - USB_KEYMAP(0x0c00cf, 0x0246, 0x024e, 0x0000, 0xffff, NULL, SPEECH_INPUT_TOGGLE), - USB_KEYMAP(0x0c00e5, 0x00d1, 0x00d9, 0x0000, 0xffff, NULL, BASS_BOOST), - //USB_KEYMAP(0x0c00e6, 0x0000, 0x0000, 0x0000, 0xffff, NULL, SURROUND_MODE), - //USB_KEYMAP(0x0c0150, 0x0000, 0x0000, 0x0000, 0xffff, NULL, AUDIO_BALANCE_RIGHT), - //USB_KEYMAP(0x0c0151, 0x0000, 0x0000, 0x0000, 0xffff, NULL, AUDIO_BALANCE_LEFT ), - //USB_KEYMAP(0x0c0152, 0x0000, 0x0000, 0x0000, 0xffff, NULL, AUDIO_BASS_INCREMENT), - //USB_KEYMAP(0x0c0153, 0x0000, 0x0000, 0x0000, 0xffff, NULL, AUDIO_BASS_DECREMENT), - //USB_KEYMAP(0x0c0154, 0x0000, 0x0000, 0x0000, 0xffff, NULL, AUDIO_TREBLE_INCREMENT), - //USB_KEYMAP(0x0c0155, 0x0000, 0x0000, 0x0000, 0xffff, NULL, AUDIO_TREBLE_DECREMENT), + DOM_CODE(0x0c00cf, 0x0246, 0x024e, 0x0000, 0xffff, NULL, SPEECH_INPUT_TOGGLE), + DOM_CODE(0x0c00e5, 0x00d1, 0x00d9, 0x0000, 0xffff, NULL, BASS_BOOST), + //DOM_CODE(0x0c00e6, 0x0000, 0x0000, 0x0000, 0xffff, NULL, SURROUND_MODE), + //DOM_CODE(0x0c0150, 0x0000, 0x0000, 0x0000, 0xffff, NULL, AUDIO_BALANCE_RIGHT), + //DOM_CODE(0x0c0151, 0x0000, 0x0000, 0x0000, 0xffff, NULL, AUDIO_BALANCE_LEFT ), + //DOM_CODE(0x0c0152, 0x0000, 0x0000, 0x0000, 0xffff, NULL, AUDIO_BASS_INCREMENT), + //DOM_CODE(0x0c0153, 0x0000, 0x0000, 0x0000, 0xffff, NULL, AUDIO_BASS_DECREMENT), + //DOM_CODE(0x0c0154, 0x0000, 0x0000, 0x0000, 0xffff, NULL, AUDIO_TREBLE_INCREMENT), + //DOM_CODE(0x0c0155, 0x0000, 0x0000, 0x0000, 0xffff, NULL, AUDIO_TREBLE_DECREMENT), // USB#0c0183: AL Consumer Control Configuration - USB_KEYMAP(0x0c0183, 0x00ab, 0x00b3, 0xe06d, 0xffff, "MediaSelect", MEDIA_SELECT), - USB_KEYMAP(0x0c0184, 0x01a5, 0x01ad, 0x0000, 0xffff, NULL, LAUNCH_WORD_PROCESSOR), - USB_KEYMAP(0x0c0186, 0x01a7, 0x01af, 0x0000, 0xffff, NULL, LAUNCH_SPREADSHEET), + DOM_CODE(0x0c0183, 0x00ab, 0x00b3, 0xe06d, 0xffff, "MediaSelect", MEDIA_SELECT), + DOM_CODE(0x0c0184, 0x01a5, 0x01ad, 0x0000, 0xffff, NULL, LAUNCH_WORD_PROCESSOR), + DOM_CODE(0x0c0186, 0x01a7, 0x01af, 0x0000, 0xffff, NULL, LAUNCH_SPREADSHEET), // USB#0x0c018a AL_EmailReader - USB_KEYMAP(0x0c018a, 0x009b, 0x00a3, 0xe06c, 0xffff, "LaunchMail", LAUNCH_MAIL), + DOM_CODE(0x0c018a, 0x009b, 0x00a3, 0xe06c, 0xffff, "LaunchMail", LAUNCH_MAIL), // USB#0x0c018d: AL Contacts/Address Book - USB_KEYMAP(0x0c018d, 0x01ad, 0x01b5, 0x0000, 0xffff, NULL, LAUNCH_CONTACTS), + DOM_CODE(0x0c018d, 0x01ad, 0x01b5, 0x0000, 0xffff, NULL, LAUNCH_CONTACTS), // USB#0x0c018e: AL Calendar/Schedule - USB_KEYMAP(0x0c018e, 0x018d, 0x0195, 0x0000, 0xffff, NULL, LAUNCH_CALENDAR), + DOM_CODE(0x0c018e, 0x018d, 0x0195, 0x0000, 0xffff, NULL, LAUNCH_CALENDAR), // USB#0x0c018f AL Task/Project Manager - //USB_KEYMAP(0x0c018f, 0x0241, 0x0249, 0x0000, 0xffff, NULL, LAUNCH_TASK_MANAGER), + //DOM_CODE(0x0c018f, 0x0241, 0x0249, 0x0000, 0xffff, NULL, LAUNCH_TASK_MANAGER), // USB#0x0c0190: AL Log/Journal/Timecard - //USB_KEYMAP(0x0c0190, 0x0242, 0x024a, 0x0000, 0xffff, NULL, LAUNCH_LOG), + //DOM_CODE(0x0c0190, 0x0242, 0x024a, 0x0000, 0xffff, NULL, LAUNCH_LOG), // USB#0x0c0192: AL_Calculator - USB_KEYMAP(0x0c0192, 0x008c, 0x0094, 0xe021, 0xffff, "LaunchApp2", LAUNCH_APP2), + DOM_CODE(0x0c0192, 0x008c, 0x0094, 0xe021, 0xffff, "LaunchApp2", LAUNCH_APP2), // USB#0c0194: My Computer (AL_LocalMachineBrowser) - USB_KEYMAP(0x0c0194, 0x0090, 0x0098, 0xe06b, 0xffff, "LaunchApp1", LAUNCH_APP1), - USB_KEYMAP(0x0c0196, 0x0096, 0x009e, 0x0000, 0xffff, NULL, LAUNCH_INTERNET_BROWSER), - USB_KEYMAP(0x0c019C, 0x01b1, 0x01b9, 0x0000, 0xffff, NULL, LOG_OFF), + DOM_CODE(0x0c0194, 0x0090, 0x0098, 0xe06b, 0xffff, "LaunchApp1", LAUNCH_APP1), + DOM_CODE(0x0c0196, 0x0096, 0x009e, 0x0000, 0xffff, NULL, LAUNCH_INTERNET_BROWSER), + DOM_CODE(0x0c019C, 0x01b1, 0x01b9, 0x0000, 0xffff, NULL, LOG_OFF), // USB#0x0c019e: AL Terminal Lock/Screensaver - USB_KEYMAP(0x0c019e, 0x0098, 0x00a0, 0x0000, 0xffff, NULL, LOCK_SCREEN), + DOM_CODE(0x0c019e, 0x0098, 0x00a0, 0x0000, 0xffff, NULL, LOCK_SCREEN), // USB#0x0c019f AL Control Panel - USB_KEYMAP(0x0c019f, 0x0243, 0x024b, 0x0000, 0xffff, "LaunchControlPanel", + DOM_CODE(0x0c019f, 0x0243, 0x024b, 0x0000, 0xffff, "LaunchControlPanel", LAUNCH_CONTROL_PANEL), // USB#0x0c01a2: AL Select Task/Application - USB_KEYMAP(0x0c01a2, 0x0244, 0x024c, 0x0000, 0xffff, "SelectTask", SELECT_TASK), + DOM_CODE(0x0c01a2, 0x0244, 0x024c, 0x0000, 0xffff, "SelectTask", SELECT_TASK), // USB#0x0c01a7: AL_Documents - USB_KEYMAP(0x0c01a7, 0x00eb, 0x00f3, 0x0000, 0xffff, NULL, LAUNCH_DOCUMENTS), - USB_KEYMAP(0x0c01ab, 0x01b0, 0x01b8, 0x0000, 0xffff, NULL, SPELL_CHECK), + DOM_CODE(0x0c01a7, 0x00eb, 0x00f3, 0x0000, 0xffff, NULL, LAUNCH_DOCUMENTS), + DOM_CODE(0x0c01ab, 0x01b0, 0x01b8, 0x0000, 0xffff, NULL, SPELL_CHECK), // USB#0x0c01ae: AL Keyboard Layout - USB_KEYMAP(0x0c01ae, 0x0176, 0x017e, 0x0000, 0xffff, NULL, LAUNCH_KEYBOARD_LAYOUT), - USB_KEYMAP(0x0c01b1, 0x0245, 0x024d, 0x0000, 0xffff, "LaunchScreenSaver", + DOM_CODE(0x0c01ae, 0x0176, 0x017e, 0x0000, 0xffff, NULL, LAUNCH_KEYBOARD_LAYOUT), + DOM_CODE(0x0c01b1, 0x0245, 0x024d, 0x0000, 0xffff, "LaunchScreenSaver", LAUNCH_SCREEN_SAVER), // AL Screen Saver - USB_KEYMAP(0x0c01cb, 0x0247, 0x024f, 0x0000, 0xffff, "LaunchAssistant", + DOM_CODE(0x0c01cb, 0x0247, 0x024f, 0x0000, 0xffff, "LaunchAssistant", LAUNCH_ASSISTANT), // AL Context-aware desktop assistant // USB#0c01b4: Home Directory (AL_FileBrowser) (Explorer) - //USB_KEYMAP(0x0c01b4, 0x0000, 0x0000, 0x0000, 0xffff, NULL, LAUNCH_FILE_BROWSER), + //DOM_CODE(0x0c01b4, 0x0000, 0x0000, 0x0000, 0xffff, NULL, LAUNCH_FILE_BROWSER), // USB#0x0c01b7: AL Audio Browser - USB_KEYMAP(0x0c01b7, 0x0188, 0x0190, 0x0000, 0xffff, NULL, LAUNCH_AUDIO_BROWSER), + DOM_CODE(0x0c01b7, 0x0188, 0x0190, 0x0000, 0xffff, NULL, LAUNCH_AUDIO_BROWSER), // USB#0x0c0201: AC New - USB_KEYMAP(0x0c0201, 0x00b5, 0x00bd, 0x0000, 0xffff, NULL, NEW), + DOM_CODE(0x0c0201, 0x00b5, 0x00bd, 0x0000, 0xffff, NULL, NEW), // USB#0x0c0203: AC Close - USB_KEYMAP(0x0c0203, 0x00ce, 0x00d6, 0x0000, 0xffff, NULL, CLOSE), + DOM_CODE(0x0c0203, 0x00ce, 0x00d6, 0x0000, 0xffff, NULL, CLOSE), // USB#0x0c0207: AC Close - USB_KEYMAP(0x0c0207, 0x00ea, 0x00f2, 0x0000, 0xffff, NULL, SAVE), + DOM_CODE(0x0c0207, 0x00ea, 0x00f2, 0x0000, 0xffff, NULL, SAVE), // USB#0x0c0208: AC Print - USB_KEYMAP(0x0c0208, 0x00d2, 0x00da, 0x0000, 0xffff, NULL, PRINT), + DOM_CODE(0x0c0208, 0x00d2, 0x00da, 0x0000, 0xffff, NULL, PRINT), // USB#0x0c0221: AC_Search - USB_KEYMAP(0x0c0221, 0x00d9, 0x00e1, 0xe065, 0xffff, "BrowserSearch", BROWSER_SEARCH), + DOM_CODE(0x0c0221, 0x00d9, 0x00e1, 0xe065, 0xffff, "BrowserSearch", BROWSER_SEARCH), // USB#0x0c0223: AC_Home - USB_KEYMAP(0x0c0223, 0x00ac, 0x00b4, 0xe032, 0xffff, "BrowserHome", BROWSER_HOME), + DOM_CODE(0x0c0223, 0x00ac, 0x00b4, 0xe032, 0xffff, "BrowserHome", BROWSER_HOME), // USB#0x0c0224: AC_Back - USB_KEYMAP(0x0c0224, 0x009e, 0x00a6, 0xe06a, 0xffff, "BrowserBack", BROWSER_BACK), + DOM_CODE(0x0c0224, 0x009e, 0x00a6, 0xe06a, 0xffff, "BrowserBack", BROWSER_BACK), // USB#0x0c0225: AC_Forward - USB_KEYMAP(0x0c0225, 0x009f, 0x00a7, 0xe069, 0xffff, "BrowserForward", + DOM_CODE(0x0c0225, 0x009f, 0x00a7, 0xe069, 0xffff, "BrowserForward", BROWSER_FORWARD), // USB#0x0c0226: AC_Stop - USB_KEYMAP(0x0c0226, 0x0080, 0x0088, 0xe068, 0xffff, "BrowserStop", BROWSER_STOP), + DOM_CODE(0x0c0226, 0x0080, 0x0088, 0xe068, 0xffff, "BrowserStop", BROWSER_STOP), // USB#0x0c0227: AC_Refresh (Reload) - USB_KEYMAP(0x0c0227, 0x00ad, 0x00b5, 0xe067, 0xffff, "BrowserRefresh", + DOM_CODE(0x0c0227, 0x00ad, 0x00b5, 0xe067, 0xffff, "BrowserRefresh", BROWSER_REFRESH), // USB#0x0c022a: AC_Bookmarks (Favorites) - USB_KEYMAP(0x0c022a, 0x009c, 0x00a4, 0xe066, 0xffff, "BrowserFavorites", + DOM_CODE(0x0c022a, 0x009c, 0x00a4, 0xe066, 0xffff, "BrowserFavorites", BROWSER_FAVORITES), - USB_KEYMAP(0x0c022d, 0x01a2, 0x01aa, 0x0000, 0xffff, NULL, ZOOM_IN), - USB_KEYMAP(0x0c022e, 0x01a3, 0x01ab, 0x0000, 0xffff, NULL, ZOOM_OUT), + DOM_CODE(0x0c022d, 0x01a2, 0x01aa, 0x0000, 0xffff, NULL, ZOOM_IN), + DOM_CODE(0x0c022e, 0x01a3, 0x01ab, 0x0000, 0xffff, NULL, ZOOM_OUT), // USB#0x0c0230: AC Full Screen View - //USB_KEYMAP(0x0c0230, 0x0000, 0x0000, 0x0000, 0xffff, NULL, ZOOM_FULL), + //DOM_CODE(0x0c0230, 0x0000, 0x0000, 0x0000, 0xffff, NULL, ZOOM_FULL), // USB#0x0c0231: AC Normal View - //USB_KEYMAP(0x0c0231, 0x0000, 0x0000, 0x0000, 0xffff, NULL, ZOOM_NORMAL), - USB_KEYMAP(0x0c0232, 0x0174, 0x017c, 0x0000, 0xffff, "ZoomToggle", + //DOM_CODE(0x0c0231, 0x0000, 0x0000, 0x0000, 0xffff, NULL, ZOOM_NORMAL), + DOM_CODE(0x0c0232, 0x0174, 0x017c, 0x0000, 0xffff, "ZoomToggle", ZOOM_TOGGLE), // AC View Toggle // USB#0x0c0279: AC Redo/Repeat - USB_KEYMAP(0x0c0279, 0x00b6, 0x00be, 0x0000, 0xffff, NULL, REDO), + DOM_CODE(0x0c0279, 0x00b6, 0x00be, 0x0000, 0xffff, NULL, REDO), // USB#0x0c0289: AC_Reply - USB_KEYMAP(0x0c0289, 0x00e8, 0x00f0, 0x0000, 0xffff, "MailReply", MAIL_REPLY), + DOM_CODE(0x0c0289, 0x00e8, 0x00f0, 0x0000, 0xffff, "MailReply", MAIL_REPLY), // USB#0x0c028b: AC_ForwardMsg (MailForward) - USB_KEYMAP(0x0c028b, 0x00e9, 0x00f1, 0x0000, 0xffff, "MailForward", MAIL_FORWARD), + DOM_CODE(0x0c028b, 0x00e9, 0x00f1, 0x0000, 0xffff, "MailForward", MAIL_FORWARD), // USB#0x0c028c: AC_Send - USB_KEYMAP(0x0c028c, 0x00e7, 0x00ef, 0x0000, 0xffff, "MailSend", MAIL_SEND), + DOM_CODE(0x0c028c, 0x00e7, 0x00ef, 0x0000, 0xffff, "MailSend", MAIL_SEND), // USB#0x0c029d: AC Next Keyboard Layout Select - USB_KEYMAP(0x0c029d, 0x0248, 0x0250, 0x0000, 0xffff, "KeyboardLayoutSelect", + DOM_CODE(0x0c029d, 0x0248, 0x0250, 0x0000, 0xffff, "KeyboardLayoutSelect", KEYBOARD_LAYOUT_SELECT), - USB_KEYMAP(0x0c029f, 0x0078, 0x0080, 0x0000, 0xffff, "ShowAllWindows", + DOM_CODE(0x0c029f, 0x0078, 0x0080, 0x0000, 0xffff, "ShowAllWindows", SHOW_ALL_WINDOWS), // AC Desktop Show All Windows };
diff --git a/ui/events/keycodes/dom/dom_codes.h b/ui/events/keycodes/dom/dom_codes.h index 481ac5d7..7428fd1 100644 --- a/ui/events/keycodes/dom/dom_codes.h +++ b/ui/events/keycodes/dom/dom_codes.h
@@ -10,12 +10,12 @@ namespace ui { #define DOM_CODE_TYPE(x) static_cast<DomCode>(x) -#define USB_KEYMAP(usb, evdev, xkb, win, mac, code, id) DOM_CODE_TYPE(usb) -#define USB_KEYMAP_DECLARATION constexpr DomCode dom_codes[] = +#define DOM_CODE(usb, evdev, xkb, win, mac, code, id) DOM_CODE_TYPE(usb) +#define DOM_CODE_DECLARATION constexpr DomCode dom_codes[] = #include "ui/events/keycodes/dom/dom_code_data.inc" #undef DOM_CODE_TYPE -#undef USB_KEYMAP -#undef USB_KEYMAP_DECLARATION +#undef DOM_CODE +#undef DOM_CODE_DECLARATION } // namespace ui
diff --git a/ui/events/keycodes/dom/keycode_converter.cc b/ui/events/keycodes/dom/keycode_converter.cc index 1eeb38e..709b339 100644 --- a/ui/events/keycodes/dom/keycode_converter.cc +++ b/ui/events/keycodes/dom/keycode_converter.cc
@@ -18,20 +18,25 @@ // Table of USB codes (equivalent to DomCode values), native scan codes, // and DOM Level 3 |code| strings. #if defined(OS_WIN) -#define USB_KEYMAP(usb, evdev, xkb, win, mac, code, id) {usb, win, code} +#define DOM_CODE(usb, evdev, xkb, win, mac, code, id) \ + { usb, win, code } #elif defined(OS_LINUX) -#define USB_KEYMAP(usb, evdev, xkb, win, mac, code, id) {usb, xkb, code} +#define DOM_CODE(usb, evdev, xkb, win, mac, code, id) \ + { usb, xkb, code } #elif defined(OS_MACOSX) -#define USB_KEYMAP(usb, evdev, xkb, win, mac, code, id) {usb, mac, code} +#define DOM_CODE(usb, evdev, xkb, win, mac, code, id) \ + { usb, mac, code } #elif defined(OS_ANDROID) -#define USB_KEYMAP(usb, evdev, xkb, win, mac, code, id) {usb, evdev, code} +#define DOM_CODE(usb, evdev, xkb, win, mac, code, id) \ + { usb, evdev, code } #else -#define USB_KEYMAP(usb, evdev, xkb, win, mac, code, id) {usb, 0, code} +#define DOM_CODE(usb, evdev, xkb, win, mac, code, id) \ + { usb, 0, code } #endif -#define USB_KEYMAP_DECLARATION const KeycodeMapEntry usb_keycode_map[] = +#define DOM_CODE_DECLARATION const KeycodeMapEntry usb_keycode_map[] = #include "ui/events/keycodes/dom/dom_code_data.inc" -#undef USB_KEYMAP -#undef USB_KEYMAP_DECLARATION +#undef DOM_CODE +#undef DOM_CODE_DECLARATION const size_t kKeycodeMapEntries = base::size(usb_keycode_map);
diff --git a/ui/events/keycodes/dom/keycode_converter_unittest.cc b/ui/events/keycodes/dom/keycode_converter_unittest.cc index 22e44ac..3ea80e3c 100644 --- a/ui/events/keycodes/dom/keycode_converter_unittest.cc +++ b/ui/events/keycodes/dom/keycode_converter_unittest.cc
@@ -22,7 +22,7 @@ // Number of native codes expected to be mapped for each kind of native code. // These are in the same order as the columns in dom_code_data.inc -// as reflected in the USB_KEYMAP() macro below. +// as reflected in the DOM_CODE() macro below. const size_t expected_mapped_key_count[] = { 212, // evdev 212, // xkb @@ -39,13 +39,15 @@ int native_keycode[kNativeColumns]; }; -#define USB_KEYMAP(usb, evdev, xkb, win, mac, code, id) \ - { usb, code, #id, { evdev, xkb, win, mac } } -#define USB_KEYMAP_DECLARATION \ +#define DOM_CODE(usb, evdev, xkb, win, mac, code, id) \ + { \ + usb, code, #id, { evdev, xkb, win, mac } \ + } +#define DOM_CODE_DECLARATION \ const KeycodeConverterData kKeycodeConverterData[] = #include "ui/events/keycodes/dom/dom_code_data.inc" -#undef USB_KEYMAP -#undef USB_KEYMAP_DECLARATION +#undef DOM_CODE +#undef DOM_CODE_DECLARATION const uint32_t kUsbNonExistentKeycode = 0xffffff; const uint32_t kUsbUsBackslash = 0x070031;
diff --git a/ui/gfx/color_utils.cc b/ui/gfx/color_utils.cc index c058749..52ce495 100644 --- a/ui/gfx/color_utils.cc +++ b/ui/gfx/color_utils.cc
@@ -400,6 +400,10 @@ SkColorGetB(color)); } +SkColor GetDarkestColor() { + return g_darkest_color; +} + SkColor SetDarkestColorForTesting(SkColor color) { const SkColor previous_darkest_color = g_darkest_color; g_darkest_color = color;
diff --git a/ui/gfx/color_utils.h b/ui/gfx/color_utils.h index a0853455..c76c196f 100644 --- a/ui/gfx/color_utils.h +++ b/ui/gfx/color_utils.h
@@ -171,6 +171,9 @@ // Creates an rgb string for an SkColor. For example: '255,0,255'. GFX_EXPORT std::string SkColorToRgbString(SkColor color); +// Returns the darkest available color. +GFX_EXPORT SkColor GetDarkestColor(); + // Sets the darkest available color to |color|. Returns the previous darkest // color. GFX_EXPORT SkColor SetDarkestColorForTesting(SkColor color);
diff --git a/ui/gfx/color_utils_unittest.cc b/ui/gfx/color_utils_unittest.cc index da410180..b4b3956 100644 --- a/ui/gfx/color_utils_unittest.cc +++ b/ui/gfx/color_utils_unittest.cc
@@ -205,6 +205,14 @@ EXPECT_EQ(color_string, "50,100,150"); } +TEST(ColorUtils, GetAndSetDarkestColor) { + const SkColor old_darkest_color = GetDarkestColor(); + EXPECT_EQ(old_darkest_color, SetDarkestColorForTesting(SK_ColorLTGRAY)); + EXPECT_EQ(SK_ColorLTGRAY, GetDarkestColor()); + EXPECT_EQ(SK_ColorLTGRAY, SetDarkestColorForTesting(old_darkest_color)); + EXPECT_EQ(old_darkest_color, GetDarkestColor()); +} + TEST(ColorUtils, IsDarkDarkestColorChange) { ASSERT_FALSE(IsDark(SK_ColorLTGRAY)); const SkColor old_darkest_color = SetDarkestColorForTesting(SK_ColorLTGRAY);
diff --git a/ui/ozone/platform/drm/OWNERS b/ui/ozone/platform/drm/OWNERS index 363a93a..5392283 100644 --- a/ui/ozone/platform/drm/OWNERS +++ b/ui/ozone/platform/drm/OWNERS
@@ -1,2 +1,4 @@ dcastagna@chromium.org dnicoara@chromium.org + +# COMPONENT: OS>Systems>Display
diff --git a/ui/webui/resources/cr_elements/cr_searchable_drop_down/cr_searchable_drop_down.js b/ui/webui/resources/cr_elements/cr_searchable_drop_down/cr_searchable_drop_down.js index bedad2c..beacbc0c 100644 --- a/ui/webui/resources/cr_elements/cr_searchable_drop_down/cr_searchable_drop_down.js +++ b/ui/webui/resources/cr_elements/cr_searchable_drop_down/cr_searchable_drop_down.js
@@ -48,17 +48,6 @@ placeholder: String, - /** - * Used to track in real time if the |value| in cr-searchable-drop-down - * matches the value in the underlying cr-input.These values will differ - * after a user types in input that does not match a valid dropdown option. - */ - invalid: { - type: Boolean, - value: false, - notify: true, - }, - /** @type {!Array<string>} */ items: { type: Array, @@ -87,10 +76,7 @@ }, /** @private {string} */ - searchTerm_: { - type: String, - observer: 'updateInvalid_', - }, + searchTerm_: String, /** @private {boolean} */ dropdownRefitPending_: Boolean, @@ -434,17 +420,6 @@ onBlur_ : function () { if (!this.updateValueOnInput) { this.$.search.value = this.value; - this.searchTerm_ = ''; } - }, - - /** - * If |updateValueOnInput| is true then any value is allowable so always set - * |invalid| to false. - * @private - */ - updateInvalid_: function () { - this.invalid = - !this.updateValueOnInput && this.value != this.$.search.value; } });