diff --git a/BUILD.gn b/BUILD.gn index 4a7cd66..a14dc64 100644 --- a/BUILD.gn +++ b/BUILD.gn
@@ -692,7 +692,7 @@ if (enable_vr) { deps += [ - "//chrome/browser/android/vr_shell:vr_common_unittests", + "//chrome/browser/vr:vr_common_unittests", "//tools/perf/contrib/vr_benchmarks:vr_perf_tests", ] }
diff --git a/DEPS b/DEPS index 81c1b8c..775b3fd7 100644 --- a/DEPS +++ b/DEPS
@@ -44,7 +44,7 @@ # 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': 'e19aed3c064f77ce4a8cbe02eb039160fae86cbd', + 'v8_revision': 'e6e187e6877b33bfe4d413beafaeb2644b2c2c5b', # 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.
diff --git a/base/BUILD.gn b/base/BUILD.gn index 50e0565..c81242c 100644 --- a/base/BUILD.gn +++ b/base/BUILD.gn
@@ -2731,6 +2731,7 @@ "test/android/javatests/src/org/chromium/base/test/util/TestFileUtil.java", "test/android/javatests/src/org/chromium/base/test/util/TestThread.java", "test/android/javatests/src/org/chromium/base/test/util/TimeoutScale.java", + "test/android/javatests/src/org/chromium/base/test/util/UserActionTester.java", "test/android/javatests/src/org/chromium/base/test/util/UrlUtils.java", "test/android/javatests/src/org/chromium/base/test/util/parameter/BaseParameter.java", "test/android/javatests/src/org/chromium/base/test/util/parameter/Parameter.java",
diff --git a/base/android/java/src/org/chromium/base/metrics/RecordUserAction.java b/base/android/java/src/org/chromium/base/metrics/RecordUserAction.java index 5334746..0d2ba54 100644 --- a/base/android/java/src/org/chromium/base/metrics/RecordUserAction.java +++ b/base/android/java/src/org/chromium/base/metrics/RecordUserAction.java
@@ -6,6 +6,7 @@ import org.chromium.base.ThreadUtils; import org.chromium.base.VisibleForTesting; +import org.chromium.base.annotations.CalledByNative; import org.chromium.base.annotations.JNINamespace; /** @@ -49,5 +50,36 @@ }); } + /** + * Interface to a class that receives a callback for each UserAction that is recorded. + */ + public interface UserActionCallback { + @CalledByNative("UserActionCallback") + void onActionRecorded(String action); + } + + private static long sNativeActionCallback; + + /** + * Register a callback that is executed for each recorded UserAction. + * Only one callback can be registered at a time. + * The callback has to be unregistered using removeActionCallbackForTesting(). + */ + public static void setActionCallbackForTesting(UserActionCallback callback) { + assert sNativeActionCallback == 0; + sNativeActionCallback = nativeAddActionCallbackForTesting(callback); + } + + /** + * Unregister the UserActionCallback. + */ + public static void removeActionCallbackForTesting() { + assert sNativeActionCallback != 0; + nativeRemoveActionCallbackForTesting(sNativeActionCallback); + sNativeActionCallback = 0; + } + private static native void nativeRecordUserAction(String action); + private static native long nativeAddActionCallbackForTesting(UserActionCallback callback); + private static native void nativeRemoveActionCallbackForTesting(long callbackId); }
diff --git a/base/android/record_user_action.cc b/base/android/record_user_action.cc index 1452341..e375f8e 100644 --- a/base/android/record_user_action.cc +++ b/base/android/record_user_action.cc
@@ -5,9 +5,19 @@ #include "base/android/record_user_action.h" #include "base/android/jni_string.h" +#include "base/bind.h" +#include "base/callback.h" #include "base/metrics/user_metrics.h" #include "jni/RecordUserAction_jni.h" +namespace { + +struct ActionCallbackWrapper { + base::ActionCallback action_callback; +}; + +} // namespace + namespace base { namespace android { @@ -17,6 +27,34 @@ RecordComputedAction(ConvertJavaStringToUTF8(env, j_action)); } +static void OnActionRecorded(const JavaRef<jobject>& callback, + const std::string& action) { + JNIEnv* env = AttachCurrentThread(); + Java_UserActionCallback_onActionRecorded( + env, callback, ConvertUTF8ToJavaString(env, action)); +} + +static jlong AddActionCallbackForTesting( + JNIEnv* env, + const JavaParamRef<jclass>& clazz, + const JavaParamRef<jobject>& callback) { + // Create a wrapper for the ActionCallback, so it can life on the heap until + // RemoveActionCallbackForTesting() is called. + auto* wrapper = new ActionCallbackWrapper{base::Bind( + &OnActionRecorded, ScopedJavaGlobalRef<jobject>(env, callback))}; + base::AddActionCallback(wrapper->action_callback); + return reinterpret_cast<intptr_t>(wrapper); +} + +static void RemoveActionCallbackForTesting(JNIEnv* env, + const JavaParamRef<jclass>& clazz, + jlong callback_id) { + DCHECK(callback_id); + auto* wrapper = reinterpret_cast<ActionCallbackWrapper*>(callback_id); + base::RemoveActionCallback(wrapper->action_callback); + delete wrapper; +} + // Register native methods bool RegisterRecordUserAction(JNIEnv* env) { return RegisterNativesImpl(env);
diff --git a/base/test/android/javatests/src/org/chromium/base/test/util/UserActionTester.java b/base/test/android/javatests/src/org/chromium/base/test/util/UserActionTester.java new file mode 100644 index 0000000..88e3551 --- /dev/null +++ b/base/test/android/javatests/src/org/chromium/base/test/util/UserActionTester.java
@@ -0,0 +1,51 @@ +// Copyright 2017 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +package org.chromium.base.test.util; + +import org.chromium.base.ThreadUtils; +import org.chromium.base.metrics.RecordUserAction; + +import java.util.ArrayList; +import java.util.List; + +/** + * A util class that records UserActions. + */ +public class UserActionTester implements RecordUserAction.UserActionCallback { + private List<String> mActions; + + public UserActionTester() { + mActions = new ArrayList<>(); + ThreadUtils.runOnUiThreadBlocking(new Runnable() { + @Override + public void run() { + RecordUserAction.setActionCallbackForTesting(UserActionTester.this); + } + }); + } + + public void tearDown() { + ThreadUtils.runOnUiThreadBlocking(new Runnable() { + @Override + public void run() { + RecordUserAction.removeActionCallbackForTesting(); + } + }); + } + + @Override + public void onActionRecorded(String action) { + mActions.add(action); + } + + public List<String> getActions() { + return mActions; + } + + @Override + public String toString() { + return "Actions: " + mActions.toString(); + } +}
diff --git a/base/test/launcher/test_launcher.cc b/base/test/launcher/test_launcher.cc index 8959e1e0..cd64bda 100644 --- a/base/test/launcher/test_launcher.cc +++ b/base/test/launcher/test_launcher.cc
@@ -900,10 +900,6 @@ results_tracker_.AddGlobalTag("OS_FREEBSD"); #endif -#if defined(OS_FUCHSIA) - results_tracker_.AddGlobalTag("OS_FUCHSIA"); -#endif - #if defined(OS_IOS) results_tracker_.AddGlobalTag("OS_IOS"); #endif
diff --git a/build/fuchsia/test_runner.py b/build/fuchsia/test_runner.py index 20f1af35..e2c832a8 100755 --- a/build/fuchsia/test_runner.py +++ b/build/fuchsia/test_runner.py
@@ -101,9 +101,7 @@ def BuildBootfs(output_directory, runtime_deps_path, test_name, gtest_filter, - gtest_repeat, test_launcher_batch_limit, - test_launcher_filter_file, test_launcher_jobs, - single_process_tests, dry_run): + gtest_repeat, test_launcher_filter_file, dry_run): with open(runtime_deps_path) as f: lines = f.readlines() @@ -135,14 +133,11 @@ autorun_file.write('#!/bin/sh\n') autorun_file.write('/system/' + os.path.basename(test_name)) autorun_file.write(' --test-launcher-retry-limit=0') - if int(os.environ.get('CHROME_HEADLESS', 0)) != 0: # When running on bots (without KVM) execution is quite slow. The test # launcher times out a subprocess after 45s which can be too short. Make the # timeout twice as long. autorun_file.write(' --test-launcher-timeout=90000') - if single_process_tests: - autorun_file.write(' --single-process-tests') if test_launcher_filter_file: test_launcher_filter_file = os.path.normpath( os.path.join(output_directory, test_launcher_filter_file)) @@ -152,12 +147,6 @@ filter_file_on_device) target_source_pairs.append( [filter_file_on_device, test_launcher_filter_file]) - if test_launcher_batch_limit: - autorun_file.write(' --test-launcher-batch-limit=%d' % - test_launcher_batch_limit) - if test_launcher_jobs: - autorun_file.write(' --test-launcher-jobs=%d' % - test_launcher_jobs) if gtest_filter: autorun_file.write(' --gtest_filter=' + gtest_filter) if gtest_repeat: @@ -221,32 +210,18 @@ type=os.path.realpath, help='Name of the the test') parser.add_argument('--gtest_filter', - help='GTest filter to use in place of any default.') + help='GTest filter to use in place of any default') parser.add_argument('--gtest_repeat', - help='GTest repeat value to use.') - parser.add_argument('--single-process-tests', action='store_true', - default=False, - help='Runs the tests and the launcher in the same ' - 'process. Useful for debugging.') - parser.add_argument('--test-launcher-batch-limit', - type=int, - help='Sets the limit of test batch to run in a single ' - 'process.') + help='GTest repeat value to use') parser.add_argument('--test-launcher-filter-file', - type=os.path.realpath, - help='Pass filter file through to target process.') - parser.add_argument('--test-launcher-jobs', - type=int, - help='Sets the number of parallel test jobs.') + help='Pass filter file through to target process') parser.add_argument('--test_launcher_summary_output', help='Currently ignored for 2-sided roll.') args = parser.parse_args() bootfs = BuildBootfs(args.output_directory, args.runtime_deps_path, args.test_name, args.gtest_filter, args.gtest_repeat, - args.test_launcher_batch_limit, - args.test_launcher_filter_file, args.test_launcher_jobs, - args.single_process_tests, args.dry_run) + args.test_launcher_filter_file, args.dry_run) qemu_path = os.path.join(SDK_ROOT, 'qemu', 'bin', 'qemu-system-x86_64')
diff --git a/cc/surfaces/surface.h b/cc/surfaces/surface.h index 660a6ecd..d4c8a7d7 100644 --- a/cc/surfaces/surface.h +++ b/cc/surfaces/surface.h
@@ -54,6 +54,8 @@ return previous_frame_surface_id_; } + base::WeakPtr<SurfaceClient> client() { return surface_client_; } + bool has_deadline() const { return deadline_.has_deadline(); } const SurfaceDependencyDeadline& deadline() const { return deadline_; }
diff --git a/cc/surfaces/surface_aggregator.cc b/cc/surfaces/surface_aggregator.cc index ea05182..d044150 100644 --- a/cc/surfaces/surface_aggregator.cc +++ b/cc/surfaces/surface_aggregator.cc
@@ -141,8 +141,7 @@ auto it = surface_id_to_resource_child_id_.find(surface->surface_id()); if (it == surface_id_to_resource_child_id_.end()) { int child_id = provider_->CreateChild( - base::Bind(&SurfaceAggregator::UnrefResources, - weak_factory_.GetWeakPtr(), surface->surface_id())); + base::Bind(&SurfaceAggregator::UnrefResources, surface->client())); provider_->SetChildNeedsSyncTokens(child_id, surface->needs_sync_tokens()); surface_id_to_resource_child_id_[surface->surface_id()] = child_id; return child_id; @@ -175,13 +174,13 @@ return full_rect; } +// static void SurfaceAggregator::UnrefResources( - const SurfaceId& surface_id, + base::WeakPtr<SurfaceClient> surface_client, const std::vector<ReturnedResource>& resources, BlockingTaskRunner* main_thread_task_runner) { - Surface* surface = manager_->GetSurfaceForId(surface_id); - if (surface) - surface->UnrefResources(resources); + if (surface_client) + surface_client->UnrefResources(resources); } void SurfaceAggregator::HandleSurfaceQuad(
diff --git a/cc/surfaces/surface_aggregator.h b/cc/surfaces/surface_aggregator.h index fc71284..364f649 100644 --- a/cc/surfaces/surface_aggregator.h +++ b/cc/surfaces/surface_aggregator.h
@@ -25,6 +25,7 @@ class CompositorFrame; class ResourceProvider; class Surface; +class SurfaceClient; class SurfaceDrawQuad; class SurfaceManager; @@ -139,9 +140,9 @@ const RenderPass& source, const gfx::Rect& full_rect) const; - void UnrefResources(const SurfaceId& surface_id, - const std::vector<ReturnedResource>& resources, - BlockingTaskRunner* main_thread_task_runner); + static void UnrefResources(base::WeakPtr<SurfaceClient> surface_client, + const std::vector<ReturnedResource>& resources, + BlockingTaskRunner* main_thread_task_runner); SurfaceManager* manager_; ResourceProvider* provider_;
diff --git a/cc/surfaces/surface_aggregator_unittest.cc b/cc/surfaces/surface_aggregator_unittest.cc index a89f1c3c..e2361417c 100644 --- a/cc/surfaces/surface_aggregator_unittest.cc +++ b/cc/surfaces/surface_aggregator_unittest.cc
@@ -2049,6 +2049,47 @@ support->EvictCurrentSurface(); } +// This test verifies that when a CompositorFrame is submitted to a new surface +// ID, and a new display frame is generated, then the resources of the old +// surface are returned to the appropriate client. +TEST_F(SurfaceAggregatorWithResourcesTest, ReturnResourcesAsSurfacesChange) { + FakeCompositorFrameSinkSupportClient client; + std::unique_ptr<CompositorFrameSinkSupport> support = + CompositorFrameSinkSupport::Create( + &client, &manager_, kArbitraryRootFrameSinkId, kRootIsRoot, + kHandlesFrameSinkIdInvalidation, kNeedsSyncPoints); + LocalSurfaceId local_surface_id1(7u, base::UnguessableToken::Create()); + LocalSurfaceId local_surface_id2(8u, base::UnguessableToken::Create()); + SurfaceId surface_id1(support->frame_sink_id(), local_surface_id1); + SurfaceId surface_id2(support->frame_sink_id(), local_surface_id2); + + ResourceId ids[] = {11, 12, 13}; + SubmitCompositorFrameWithResources(ids, arraysize(ids), true, SurfaceId(), + support.get(), surface_id1); + + CompositorFrame frame = aggregator_->Aggregate(surface_id1); + + // Nothing should be available to be returned yet. + EXPECT_TRUE(client.returned_resources().empty()); + + // Submitting a CompositorFrame to |surface_id2| should cause the surface + // associated with |surface_id1| to get garbage collected. + SubmitCompositorFrameWithResources(NULL, 0u, true, SurfaceId(), support.get(), + surface_id2); + + frame = aggregator_->Aggregate(surface_id2); + + ASSERT_EQ(3u, client.returned_resources().size()); + ResourceId returned_ids[3]; + for (size_t i = 0; i < 3; ++i) { + returned_ids[i] = client.returned_resources()[i].id; + } + EXPECT_THAT(returned_ids, + testing::WhenSorted(testing::ElementsAreArray(ids))); + + support->EvictCurrentSurface(); +} + TEST_F(SurfaceAggregatorWithResourcesTest, TakeInvalidResources) { FakeCompositorFrameSinkSupportClient client; std::unique_ptr<CompositorFrameSinkSupport> support =
diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn index 9bdf03fa..ab211424 100644 --- a/chrome/android/BUILD.gn +++ b/chrome/android/BUILD.gn
@@ -41,6 +41,8 @@ if (enable_resource_whitelist_generation) { monochrome_resource_whitelist = "$target_gen_dir/monochrome_resource_whitelist.txt" + monochrome_locale_whitelist = + "$target_gen_dir/monochrome_locale_whitelist.txt" } jinja_template("chrome_public_android_manifest") { @@ -730,9 +732,38 @@ "/libmonochrome$shlib_extension.whitelist" output = monochrome_resource_whitelist } + + action("monochrome_locale_whitelist") { + script = "//tools/resources/filter_resource_whitelist.py" + + _system_webview_pak_whitelist = + "$root_gen_dir/android_webview/system_webview_pak_whitelist.txt" + + inputs = [ + monochrome_resource_whitelist, + _system_webview_pak_whitelist, + ] + + outputs = [ + monochrome_locale_whitelist, + ] + + deps = [ + ":monochrome_resource_whitelist", + "//android_webview:system_webview_pak_whitelist", + ] + + args = [ + "--input", + rebase_path(monochrome_resource_whitelist, root_build_dir), + "--filter", + rebase_path(_system_webview_pak_whitelist, root_build_dir), + "--output", + rebase_path(monochrome_locale_whitelist, root_build_dir), + ] + } } - # This target does not output locale paks. chrome_paks("monochrome_paks") { output_dir = "$target_gen_dir/$target_name" @@ -741,13 +772,26 @@ "//android_webview:generate_aw_resources", ] - exclude_locale_paks = true - if (enable_resource_whitelist_generation) { repack_whitelist = monochrome_resource_whitelist deps += [ ":monochrome_resource_whitelist" ] + locale_whitelist = monochrome_locale_whitelist + deps += [ ":monochrome_locale_whitelist" ] } } + + # This target is separate from monochrome_pak_assets because it does not + # disable compression. + android_assets("monochrome_locale_pak_assets") { + sources = [] + foreach(_locale, locales - android_chrome_omitted_locales) { + sources += [ "$target_gen_dir/monochrome_paks/locales/$_locale.pak" ] + } + + deps = [ + ":monochrome_paks", + ] + } # This target explicitly includes locale paks via deps. android_assets("monochrome_pak_assets") { @@ -758,7 +802,7 @@ disable_compression = true deps = [ - ":chrome_public_locale_pak_assets", + ":monochrome_locale_pak_assets", ":monochrome_paks", "//android_webview:locale_pak_assets", ]
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/ClearBrowsingDataPreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/ClearBrowsingDataPreferences.java index abcd8fb..d1d5cdd1 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/ClearBrowsingDataPreferences.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/ClearBrowsingDataPreferences.java
@@ -306,7 +306,7 @@ } /** - * Notify subclasses that browsing data is about to be cleared. + * Notifies subclasses that browsing data is about to be cleared. */ protected void onClearBrowsingData() {}
diff --git a/chrome/android/java_sources.gni b/chrome/android/java_sources.gni index 690d0d0..0e5344fb 100644 --- a/chrome/android/java_sources.gni +++ b/chrome/android/java_sources.gni
@@ -1604,6 +1604,7 @@ "javatests/src/org/chromium/chrome/browser/preferences/PreferencesTest.java", "javatests/src/org/chromium/chrome/browser/preferences/datareduction/DataReductionPromoUtilsTest.java", "javatests/src/org/chromium/chrome/browser/preferences/password/SavePasswordsPreferencesTest.java", + "javatests/src/org/chromium/chrome/browser/preferences/privacy/BrowsingDataBridgeTest.java", "javatests/src/org/chromium/chrome/browser/preferences/privacy/ClearBrowsingDataPreferencesTest.java", "javatests/src/org/chromium/chrome/browser/preferences/privacy/ClearBrowsingDataPreferencesBasicTest.java", "javatests/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferencesManagerNativeTest.java",
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/preferences/privacy/BrowsingDataBridgeTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/preferences/privacy/BrowsingDataBridgeTest.java new file mode 100644 index 0000000..1d5bf34 --- /dev/null +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/preferences/privacy/BrowsingDataBridgeTest.java
@@ -0,0 +1,197 @@ +// Copyright 2017 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.chrome.browser.preferences.privacy; + +import static org.junit.Assert.assertThat; + +import android.support.test.filters.SmallTest; + +import org.hamcrest.Matchers; +import org.junit.After; +import org.junit.Before; +import org.junit.Rule; +import org.junit.Test; +import org.junit.runner.RunWith; + +import org.chromium.base.ThreadUtils; +import org.chromium.base.test.util.CallbackHelper; +import org.chromium.base.test.util.CommandLineFlags; +import org.chromium.base.test.util.UserActionTester; +import org.chromium.chrome.browser.ChromeActivity; +import org.chromium.chrome.browser.ChromeSwitches; +import org.chromium.chrome.browser.browsing_data.BrowsingDataType; +import org.chromium.chrome.browser.browsing_data.TimePeriod; +import org.chromium.chrome.test.ChromeActivityTestRule; +import org.chromium.chrome.test.ChromeJUnit4ClassRunner; + +/** + * Integration tests for ClearBrowsingDataPreferences. + */ +@RunWith(ChromeJUnit4ClassRunner.class) +@CommandLineFlags.Add({ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE, + ChromeActivityTestRule.DISABLE_NETWORK_PREDICTION_FLAG}) +public class BrowsingDataBridgeTest { + @Rule + public ChromeActivityTestRule<ChromeActivity> mActivityTestRule = + new ChromeActivityTestRule<>(ChromeActivity.class); + + private CallbackHelper mCallbackHelper; + private BrowsingDataBridge.OnClearBrowsingDataListener mListener; + private UserActionTester mActionTester; + + @Before + public void setUp() throws Exception { + mCallbackHelper = new CallbackHelper(); + mListener = new BrowsingDataBridge.OnClearBrowsingDataListener() { + @Override + public void onBrowsingDataCleared() { + mCallbackHelper.notifyCalled(); + } + }; + mActivityTestRule.startMainActivityOnBlankPage(); + mActionTester = new UserActionTester(); + } + + @After + public void tearDown() throws Exception { + mActionTester.tearDown(); + } + + /** + * Test no clear browsing data calls. + */ + @Test + @SmallTest + public void testNoCalls() throws Exception { + ThreadUtils.runOnUiThreadBlocking(new Runnable() { + @Override + public void run() { + BrowsingDataBridge.getInstance().clearBrowsingData( + mListener, new int[] {}, TimePeriod.ALL_TIME); + } + }); + mCallbackHelper.waitForCallback(0); + assertThat(mActionTester.toString(), mActionTester.getActions(), + Matchers.contains("ClearBrowsingData_Everything")); + } + + /** + * Test cookies deletion. + */ + @Test + @SmallTest + public void testCookiesDeleted() throws Exception { + ThreadUtils.runOnUiThreadBlocking(new Runnable() { + @Override + public void run() { + BrowsingDataBridge.getInstance().clearBrowsingData( + mListener, new int[] {BrowsingDataType.COOKIES}, TimePeriod.LAST_HOUR); + } + }); + mCallbackHelper.waitForCallback(0); + assertThat(mActionTester.toString(), mActionTester.getActions(), + Matchers.containsInAnyOrder("ClearBrowsingData_LastHour", + "ClearBrowsingData_MaskContainsUnprotectedWeb", + "ClearBrowsingData_ChannelIDs", "ClearBrowsingData_Cookies")); + } + + /** + * Test history deletion. + */ + @Test + @SmallTest + public void testHistoryDeleted() throws Exception { + ThreadUtils.runOnUiThreadBlocking(new Runnable() { + @Override + public void run() { + BrowsingDataBridge.getInstance().clearBrowsingData( + mListener, new int[] {BrowsingDataType.HISTORY}, TimePeriod.LAST_DAY); + } + }); + mCallbackHelper.waitForCallback(0); + assertThat(mActionTester.toString(), mActionTester.getActions(), + Matchers.containsInAnyOrder("ClearBrowsingData_LastDay", + "ClearBrowsingData_MaskContainsUnprotectedWeb", + "ClearBrowsingData_History")); + } + + /** + * Test deleting cache and content settings. + */ + @Test + @SmallTest + public void testClearingSiteSettingsAndCache() throws Exception { + ThreadUtils.runOnUiThreadBlocking(new Runnable() { + @Override + public void run() { + BrowsingDataBridge.getInstance().clearBrowsingData(mListener, + new int[] { + BrowsingDataType.CACHE, BrowsingDataType.SITE_SETTINGS, + }, + TimePeriod.FOUR_WEEKS); + } + }); + mCallbackHelper.waitForCallback(0); + assertThat(mActionTester.toString(), mActionTester.getActions(), + Matchers.containsInAnyOrder("ClearBrowsingData_LastMonth", + "ClearBrowsingData_MaskContainsUnprotectedWeb", "ClearBrowsingData_Cache", + "ClearBrowsingData_ShaderCache", "ClearBrowsingData_ContentSettings")); + } + + /** + * Test deleting cache and content settings with important sites. + */ + @Test + @SmallTest + public void testClearingSiteSettingsAndCacheWithImportantSites() throws Exception { + ThreadUtils.runOnUiThreadBlocking(new Runnable() { + @Override + public void run() { + BrowsingDataBridge.getInstance().clearBrowsingDataExcludingDomains(mListener, + new int[] { + BrowsingDataType.CACHE, BrowsingDataType.SITE_SETTINGS, + }, + TimePeriod.FOUR_WEEKS, new String[] {"google.com"}, new int[] {1}, + new String[0], new int[0]); + } + }); + mCallbackHelper.waitForCallback(0); + assertThat(mActionTester.toString(), mActionTester.getActions(), + Matchers.containsInAnyOrder("ClearBrowsingData_LastMonth", + // ClearBrowsingData_MaskContainsUnprotectedWeb is logged + // twice because important storage is deleted separately. + "ClearBrowsingData_MaskContainsUnprotectedWeb", + "ClearBrowsingData_MaskContainsUnprotectedWeb", "ClearBrowsingData_Cache", + "ClearBrowsingData_ShaderCache", "ClearBrowsingData_ContentSettings")); + } + + /** + * Test deleting all browsing data. (Except bookmarks, they are deleted in Java code) + */ + @Test + @SmallTest + public void testClearingAll() throws Exception { + ThreadUtils.runOnUiThreadBlocking(new Runnable() { + @Override + public void run() { + BrowsingDataBridge.getInstance().clearBrowsingData(mListener, + new int[] { + BrowsingDataType.CACHE, BrowsingDataType.COOKIES, + BrowsingDataType.FORM_DATA, BrowsingDataType.HISTORY, + BrowsingDataType.PASSWORDS, BrowsingDataType.SITE_SETTINGS, + }, + TimePeriod.LAST_WEEK); + } + }); + mCallbackHelper.waitForCallback(0); + assertThat(mActionTester.toString(), mActionTester.getActions(), + Matchers.containsInAnyOrder("ClearBrowsingData_LastWeek", + "ClearBrowsingData_MaskContainsUnprotectedWeb", "ClearBrowsingData_Cache", + "ClearBrowsingData_ShaderCache", "ClearBrowsingData_Cookies", + "ClearBrowsingData_ChannelIDs", "ClearBrowsingData_Autofill", + "ClearBrowsingData_History", "ClearBrowsingData_Passwords", + "ClearBrowsingData_ContentSettings")); + } +} \ No newline at end of file
diff --git a/chrome/app/chrome_main_delegate.cc b/chrome/app/chrome_main_delegate.cc index c382e53..0371d51 100644 --- a/chrome/app/chrome_main_delegate.cc +++ b/chrome/app/chrome_main_delegate.cc
@@ -877,6 +877,16 @@ ResourceBundle::InitSharedInstanceWithPakFileRegion(base::File(pak_fd), pak_region); + // Load secondary locale .pak file if it exists. + pak_fd = global_descriptors->MaybeGet(kAndroidSecondaryLocalePakDescriptor); + if (pak_fd != -1) { + pak_region = global_descriptors->GetRegion( + kAndroidSecondaryLocalePakDescriptor); + ResourceBundle::GetSharedInstance(). + LoadSecondaryLocaleDataWithPakFileRegion( + base::File(pak_fd), pak_region); + } + int extra_pak_keys[] = { kAndroidChrome100PercentPakDescriptor, kAndroidUIResourcesPakDescriptor,
diff --git a/chrome/browser/android/vr_shell/BUILD.gn b/chrome/browser/android/vr_shell/BUILD.gn index 61848af..eeaa5b2 100644 --- a/chrome/browser/android/vr_shell/BUILD.gn +++ b/chrome/browser/android/vr_shell/BUILD.gn
@@ -2,243 +2,91 @@ # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. +import("//build/config/android/rules.gni") import("//chrome/common/features.gni") import("//device/vr/features/features.gni") import("//testing/test.gni") -if (is_android) { - import("//build/config/android/rules.gni") -} - assert(enable_vr) -# This library is platform-independent UI and related modules, which should -# compile on any platform. -static_library("vr_common") { +static_library("vr_android") { + defines = [] + sources = [ - "animation.cc", - "animation.h", - "color_scheme.cc", - "color_scheme.h", - "easing.cc", - "easing.h", - "font_fallback.cc", - "font_fallback.h", - "fps_meter.cc", - "fps_meter.h", - "gltf_asset.cc", - "gltf_asset.h", - "gltf_parser.cc", - "gltf_parser.h", - "textures/button_texture.cc", - "textures/button_texture.h", - "textures/close_button_texture.cc", - "textures/close_button_texture.h", - "textures/exclusive_screen_toast_texture.cc", - "textures/exclusive_screen_toast_texture.h", - "textures/exit_prompt_texture.cc", - "textures/exit_prompt_texture.h", - "textures/exit_warning_texture.cc", - "textures/exit_warning_texture.h", - "textures/insecure_content_permanent_texture.cc", - "textures/insecure_content_permanent_texture.h", - "textures/insecure_content_transient_texture.cc", - "textures/insecure_content_transient_texture.h", - "textures/loading_indicator_texture.cc", - "textures/loading_indicator_texture.h", - "textures/render_text_wrapper.cc", - "textures/render_text_wrapper.h", - "textures/splash_screen_icon_texture.cc", - "textures/splash_screen_icon_texture.h", - "textures/system_indicator_texture.cc", - "textures/system_indicator_texture.h", - "textures/ui_texture.cc", - "textures/ui_texture.h", - "textures/url_bar_texture.cc", - "textures/url_bar_texture.h", - "toolbar_helper.cc", - "toolbar_helper.h", - "toolbar_state.cc", - "toolbar_state.h", - "ui_browser_interface.h", - "ui_elements/button.cc", - "ui_elements/button.h", - "ui_elements/exclusive_screen_toast.cc", - "ui_elements/exclusive_screen_toast.h", - "ui_elements/exit_prompt.cc", - "ui_elements/exit_prompt.h", - "ui_elements/exit_prompt_backplane.cc", - "ui_elements/exit_prompt_backplane.h", - "ui_elements/loading_indicator.cc", - "ui_elements/loading_indicator.h", - "ui_elements/screen_dimmer.cc", - "ui_elements/screen_dimmer.h", - "ui_elements/simple_textured_element.h", - "ui_elements/splash_screen_icon.cc", - "ui_elements/splash_screen_icon.h", - "ui_elements/system_indicator.cc", - "ui_elements/system_indicator.h", - "ui_elements/textured_element.cc", - "ui_elements/textured_element.h", - "ui_elements/transience_manager.cc", - "ui_elements/transience_manager.h", - "ui_elements/transient_url_bar.cc", - "ui_elements/transient_url_bar.h", - "ui_elements/ui_element.cc", - "ui_elements/ui_element.h", - "ui_elements/ui_element_debug_id.h", - "ui_elements/url_bar.cc", - "ui_elements/url_bar.h", - "ui_input_manager.cc", - "ui_input_manager.h", - "ui_interface.h", - "ui_scene.cc", - "ui_scene.h", - "ui_scene_manager.cc", - "ui_scene_manager.h", - "ui_unsupported_mode.h", + "android_ui_gesture_target.cc", + "android_ui_gesture_target.h", + "elbow_model.cc", + "elbow_model.h", + "gl_browser_interface.h", + "mailbox_to_surface_bridge.cc", + "mailbox_to_surface_bridge.h", + "vr_compositor.cc", + "vr_compositor.h", + "vr_controller.cc", + "vr_controller.h", + "vr_controller_model.cc", + "vr_controller_model.h", + "vr_core_info.cc", + "vr_core_info.h", + "vr_gl_thread.cc", + "vr_gl_thread.h", + "vr_gl_util.cc", + "vr_gl_util.h", + "vr_input_manager.cc", + "vr_input_manager.h", + "vr_metrics_util.cc", + "vr_metrics_util.h", + "vr_shell.cc", + "vr_shell.h", + "vr_shell_delegate.cc", + "vr_shell_delegate.h", + "vr_shell_gl.cc", + "vr_shell_gl.h", + "vr_shell_renderer.cc", + "vr_shell_renderer.h", + "vr_usage_monitor.cc", + "vr_usage_monitor.h", + "vr_web_contents_observer.cc", + "vr_web_contents_observer.h", ] deps = [ + ":vr_shell_jni_headers", "//base", - "//cc/paint", - "//chrome/app:generated_resources", - "//components/security_state/core", - "//components/strings", - "//components/toolbar", - "//components/url_formatter", - "//components/vector_icons", - "//skia", + "//cc", + "//chrome:resources", + "//chrome/browser/vr:vr_common", + "//components/rappor", + "//content/public/android:jni", + "//content/public/browser", + "//content/public/common", + "//device/gamepad", + "//device/vr", + "//services/ui/public/cpp/gpu", + "//ui/android", "//ui/base", "//ui/display", "//ui/gl", "//ui/gl/init", - "//ui/vector_icons", ] + + public_deps = [ + "//device/vr:mojo_bindings", + ] + + libs = [ + "//third_party/gvr-android-sdk/libgvr_shim_static_${current_cpu}.a", + "android", + ] + + configs += [ "//third_party/gvr-android-sdk:libgvr_config" ] } -if (is_android) { - # This library contains the VR code specific to Android. - # TODO(cjgrant): It should be renamed to reflect this. - static_library("vr_android") { - defines = [] - - sources = [ - "android_ui_gesture_target.cc", - "android_ui_gesture_target.h", - "elbow_model.cc", - "elbow_model.h", - "gl_browser_interface.h", - "mailbox_to_surface_bridge.cc", - "mailbox_to_surface_bridge.h", - "vr_compositor.cc", - "vr_compositor.h", - "vr_controller.cc", - "vr_controller.h", - "vr_controller_model.cc", - "vr_controller_model.h", - "vr_core_info.cc", - "vr_core_info.h", - "vr_gl_thread.cc", - "vr_gl_thread.h", - "vr_gl_util.cc", - "vr_gl_util.h", - "vr_input_manager.cc", - "vr_input_manager.h", - "vr_metrics_util.cc", - "vr_metrics_util.h", - "vr_shell.cc", - "vr_shell.h", - "vr_shell_delegate.cc", - "vr_shell_delegate.h", - "vr_shell_gl.cc", - "vr_shell_gl.h", - "vr_shell_renderer.cc", - "vr_shell_renderer.h", - "vr_usage_monitor.cc", - "vr_usage_monitor.h", - "vr_web_contents_observer.cc", - "vr_web_contents_observer.h", - ] - - deps = [ - ":vr_common", - ":vr_shell_jni_headers", - "//base", - "//cc", - "//chrome:resources", - "//components/rappor", - "//content/public/android:jni", - "//content/public/browser", - "//content/public/common", - "//device/gamepad", - "//device/vr", - "//services/ui/public/cpp/gpu", - "//ui/android", - "//ui/base", - "//ui/display", - "//ui/gl", - "//ui/gl/init", - ] - - public_deps = [ - "//device/vr:mojo_bindings", - ] - - libs = [ - "//third_party/gvr-android-sdk/libgvr_shim_static_${current_cpu}.a", - "android", - ] - - configs += [ "//third_party/gvr-android-sdk:libgvr_config" ] - } - - generate_jni("vr_shell_jni_headers") { - sources = [ - "//chrome/android/java/src/org/chromium/chrome/browser/vr_shell/VrCoreInfo.java", - "//chrome/android/java/src/org/chromium/chrome/browser/vr_shell/VrShellDelegate.java", - "//chrome/android/java/src/org/chromium/chrome/browser/vr_shell/VrShellImpl.java", - ] - jni_package = "vr_shell" - } -} - -test("vr_common_unittests") { +generate_jni("vr_shell_jni_headers") { sources = [ - "fps_meter_unittest.cc", - "gltf_parser_unittest.cc", - "run_all_unittests.cc", - "test/paths.cc", - "test/paths.h", - "textures/close_button_texture_unittest.cc", - "textures/url_bar_texture_unittest.cc", - "ui_elements/exit_prompt_unittest.cc", - "ui_elements/transience_manager_unittest.cc", - "ui_elements/ui_element_unittest.cc", - "ui_scene_manager_unittest.cc", - "ui_scene_unittest.cc", + "//chrome/android/java/src/org/chromium/chrome/browser/vr_shell/VrCoreInfo.java", + "//chrome/android/java/src/org/chromium/chrome/browser/vr_shell/VrShellDelegate.java", + "//chrome/android/java/src/org/chromium/chrome/browser/vr_shell/VrShellImpl.java", ] - - deps = [ - ":vr_common", - "//base/test:test_support", - "//components:components_tests_pak", - "//components/security_state/core", - "//components/toolbar:vector_icons", - "//skia", - "//testing/gmock", - "//testing/gtest", - "//ui/gfx:test_support", - "//ui/gfx/geometry", - "//ui/gl", - ] - - if (is_android) { - deps += [ "//ui/android:ui_java" ] - } - - data = [ - "test/data/", - "$root_out_dir/components_tests_resources.pak", - ] + jni_package = "vr_shell" }
diff --git a/chrome/browser/android/vr_shell/gl_browser_interface.h b/chrome/browser/android/vr_shell/gl_browser_interface.h index aeec32e4..6bfb21d 100644 --- a/chrome/browser/android/vr_shell/gl_browser_interface.h +++ b/chrome/browser/android/vr_shell/gl_browser_interface.h
@@ -8,7 +8,7 @@ #include <memory> #include "base/android/jni_weak_ref.h" -#include "chrome/browser/android/vr_shell/ui_interface.h" +#include "chrome/browser/vr/ui_interface.h" #include "device/vr/android/gvr/gvr_gamepad_data_provider.h" #include "device/vr/vr_service.mojom.h" #include "third_party/gvr-android-sdk/src/libraries/headers/vr/gvr/capi/include/gvr_types.h" @@ -29,7 +29,8 @@ virtual void ContentSurfaceChanged(jobject surface) = 0; virtual void GvrDelegateReady(gvr::ViewerType viewer_type) = 0; virtual void UpdateGamepadData(device::GvrGamepadData) = 0; - virtual void AppButtonGesturePerformed(UiInterface::Direction direction) = 0; + virtual void AppButtonGesturePerformed( + vr::UiInterface::Direction direction) = 0; virtual void AppButtonClicked() = 0; virtual void ProcessContentGesture( std::unique_ptr<blink::WebInputEvent> event) = 0;
diff --git a/chrome/browser/android/vr_shell/test/paths.h b/chrome/browser/android/vr_shell/test/paths.h deleted file mode 100644 index 6c358c7..0000000 --- a/chrome/browser/android/vr_shell/test/paths.h +++ /dev/null
@@ -1,18 +0,0 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef CHROME_BROWSER_ANDROID_VR_SHELL_TEST_PATHS_H_ -#define CHROME_BROWSER_ANDROID_VR_SHELL_TEST_PATHS_H_ - -#include "base/files/file_path.h" - -namespace vr_shell { -namespace test { - -void GetTestDataPath(base::FilePath* result); - -} // namespace test -} // namespace vr_shell - -#endif // CHROME_BROWSER_ANDROID_VR_SHELL_TEST_PATHS_H_
diff --git a/chrome/browser/android/vr_shell/ui_elements/exclusive_screen_toast.h b/chrome/browser/android/vr_shell/ui_elements/exclusive_screen_toast.h deleted file mode 100644 index 4c2d5f3..0000000 --- a/chrome/browser/android/vr_shell/ui_elements/exclusive_screen_toast.h +++ /dev/null
@@ -1,28 +0,0 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef CHROME_BROWSER_ANDROID_VR_SHELL_UI_ELEMENTS_EXCLUSIVE_SCREEN_TOAST_H_ -#define CHROME_BROWSER_ANDROID_VR_SHELL_UI_ELEMENTS_EXCLUSIVE_SCREEN_TOAST_H_ - -#include "base/macros.h" -#include "chrome/browser/android/vr_shell/textures/exclusive_screen_toast_texture.h" -#include "chrome/browser/android/vr_shell/ui_elements/simple_textured_element.h" - -namespace vr_shell { - -class ExclusiveScreenToast - : public TransientSimpleTexturedElement<ExclusiveScreenToastTexture> { - public: - ExclusiveScreenToast(int preferred_width, const base::TimeDelta& timeout); - ~ExclusiveScreenToast() override; - - private: - void UpdateElementSize() override; - - DISALLOW_COPY_AND_ASSIGN(ExclusiveScreenToast); -}; - -} // namespace vr_shell - -#endif // CHROME_BROWSER_ANDROID_VR_SHELL_UI_ELEMENTS_EXCLUSIVE_SCREEN_TOAST_H_
diff --git a/chrome/browser/android/vr_shell/vr_controller.cc b/chrome/browser/android/vr_shell/vr_controller.cc index 182101b..8a5e07f 100644 --- a/chrome/browser/android/vr_shell/vr_controller.cc +++ b/chrome/browser/android/vr_shell/vr_controller.cc
@@ -248,7 +248,7 @@ extrapolated_touch_ < kMaxNumOfExtrapolations))) { extrapolated_touch_++; touch_position_changed_ = true; - // Fill the touch_info + // vr::Fill the touch_info float duration = DeltaTimeSeconds(last_timestamp_nanos_); touch_info_->touch_point.position.set_x(cur_touch_point_->position.x() + overall_velocity_.x() * duration);
diff --git a/chrome/browser/android/vr_shell/vr_controller_model.cc b/chrome/browser/android/vr_shell/vr_controller_model.cc index d08f2aa..edd30e4 100644 --- a/chrome/browser/android/vr_shell/vr_controller_model.cc +++ b/chrome/browser/android/vr_shell/vr_controller_model.cc
@@ -6,7 +6,7 @@ #include "base/memory/ptr_util.h" #include "base/trace_event/trace_event.h" -#include "chrome/browser/android/vr_shell/gltf_parser.h" +#include "chrome/browser/vr/gltf_parser.h" #include "chrome/grit/browser_resources.h" #include "third_party/skia/include/core/SkCanvas.h" #include "third_party/skia/include/core/SkRect.h" @@ -47,15 +47,14 @@ } // namespace VrControllerModel::VrControllerModel( - std::unique_ptr<gltf::Asset> gltf_asset, - std::vector<std::unique_ptr<gltf::Buffer>> buffers) - : gltf_asset_(std::move(gltf_asset)), - buffers_(std::move(buffers)) {} + std::unique_ptr<vr::gltf::Asset> gltf_asset, + std::vector<std::unique_ptr<vr::gltf::Buffer>> buffers) + : gltf_asset_(std::move(gltf_asset)), buffers_(std::move(buffers)) {} VrControllerModel::~VrControllerModel() = default; const GLvoid* VrControllerModel::ElementsBuffer() const { - const gltf::BufferView* buffer_view = + const vr::gltf::BufferView* buffer_view = gltf_asset_->GetBufferView(ELEMENTS_BUFFER_ID); DCHECK(buffer_view && buffer_view->target == GL_ARRAY_BUFFER); const char* buffer = Buffer(); @@ -63,14 +62,14 @@ } GLsizeiptr VrControllerModel::ElementsBufferSize() const { - const gltf::BufferView* buffer_view = + const vr::gltf::BufferView* buffer_view = gltf_asset_->GetBufferView(ELEMENTS_BUFFER_ID); DCHECK(buffer_view && buffer_view->target == GL_ARRAY_BUFFER); return buffer_view->byte_length; } const GLvoid* VrControllerModel::IndicesBuffer() const { - const gltf::BufferView* buffer_view = + const vr::gltf::BufferView* buffer_view = gltf_asset_->GetBufferView(INDICES_BUFFER_ID); DCHECK(buffer_view && buffer_view->target == GL_ELEMENT_ARRAY_BUFFER); const char* buffer = Buffer(); @@ -78,29 +77,29 @@ } GLsizeiptr VrControllerModel::IndicesBufferSize() const { - const gltf::BufferView* buffer_view = + const vr::gltf::BufferView* buffer_view = gltf_asset_->GetBufferView(INDICES_BUFFER_ID); DCHECK(buffer_view && buffer_view->target == GL_ELEMENT_ARRAY_BUFFER); return buffer_view->byte_length; } GLenum VrControllerModel::DrawMode() const { - const gltf::Mesh* mesh = gltf_asset_->GetMesh(0); + const vr::gltf::Mesh* mesh = gltf_asset_->GetMesh(0); DCHECK(mesh && mesh->primitives.size()); return mesh->primitives[0]->mode; } -const gltf::Accessor* VrControllerModel::IndicesAccessor() const { - const gltf::Mesh* mesh = gltf_asset_->GetMesh(0); +const vr::gltf::Accessor* VrControllerModel::IndicesAccessor() const { + const vr::gltf::Mesh* mesh = gltf_asset_->GetMesh(0); DCHECK(mesh && mesh->primitives.size()); return mesh->primitives[0]->indices; } -const gltf::Accessor* VrControllerModel::PositionAccessor() const { +const vr::gltf::Accessor* VrControllerModel::PositionAccessor() const { return Accessor(kPosition); } -const gltf::Accessor* VrControllerModel::TextureCoordinateAccessor() const { +const vr::gltf::Accessor* VrControllerModel::TextureCoordinateAccessor() const { return Accessor(kTexCoord); } @@ -136,9 +135,9 @@ return buffers_[0]->data(); } -const gltf::Accessor* VrControllerModel::Accessor( +const vr::gltf::Accessor* VrControllerModel::Accessor( const std::string& key) const { - const gltf::Mesh* mesh = gltf_asset_->GetMesh(0); + const vr::gltf::Mesh* mesh = gltf_asset_->GetMesh(0); DCHECK(mesh && mesh->primitives.size()); auto it = mesh->primitives[0]->attributes.find(key); DCHECK(it != mesh->primitives[0]->attributes.begin()); @@ -147,11 +146,11 @@ std::unique_ptr<VrControllerModel> VrControllerModel::LoadFromResources() { TRACE_EVENT0("gpu", "VrControllerModel::LoadFromResources"); - std::vector<std::unique_ptr<gltf::Buffer>> buffers; + std::vector<std::unique_ptr<vr::gltf::Buffer>> buffers; auto model_data = ResourceBundle::GetSharedInstance().GetRawDataResource( IDR_VR_SHELL_DDCONTROLLER_MODEL); - std::unique_ptr<gltf::Asset> asset = - BinaryGltfParser::Parse(model_data, &buffers); + std::unique_ptr<vr::gltf::Asset> asset = + vr::BinaryGltfParser::Parse(model_data, &buffers); DCHECK(asset); auto controller_model =
diff --git a/chrome/browser/android/vr_shell/vr_controller_model.h b/chrome/browser/android/vr_shell/vr_controller_model.h index 6bf81d7..4f010ca 100644 --- a/chrome/browser/android/vr_shell/vr_controller_model.h +++ b/chrome/browser/android/vr_shell/vr_controller_model.h
@@ -7,7 +7,7 @@ #include <memory> -#include "chrome/browser/android/vr_shell/gltf_asset.h" +#include "chrome/browser/vr/gltf_asset.h" #include "third_party/skia/include/core/SkImage.h" #include "ui/gfx/geometry/point.h" #include "ui/gl/gl_bindings.h" @@ -26,8 +26,8 @@ }; explicit VrControllerModel( - std::unique_ptr<gltf::Asset> gltf_asset, - std::vector<std::unique_ptr<gltf::Buffer>> buffers); + std::unique_ptr<vr::gltf::Asset> gltf_asset, + std::vector<std::unique_ptr<vr::gltf::Buffer>> buffers); ~VrControllerModel(); const GLvoid* ElementsBuffer() const; @@ -35,9 +35,9 @@ const GLvoid* IndicesBuffer() const; GLenum DrawMode() const; GLsizeiptr IndicesBufferSize() const; - const gltf::Accessor* IndicesAccessor() const; - const gltf::Accessor* PositionAccessor() const; - const gltf::Accessor* TextureCoordinateAccessor() const; + const vr::gltf::Accessor* IndicesAccessor() const; + const vr::gltf::Accessor* PositionAccessor() const; + const vr::gltf::Accessor* TextureCoordinateAccessor() const; void SetBaseTexture(sk_sp<SkImage> image); void SetTexture(int state, sk_sp<SkImage> patch); sk_sp<SkImage> GetTexture(int state) const; @@ -45,13 +45,13 @@ static std::unique_ptr<VrControllerModel> LoadFromResources(); private: - std::unique_ptr<gltf::Asset> gltf_asset_; + std::unique_ptr<vr::gltf::Asset> gltf_asset_; sk_sp<SkImage> base_texture_; sk_sp<SkImage> textures_[STATE_COUNT]; - std::vector<std::unique_ptr<gltf::Buffer>> buffers_; + std::vector<std::unique_ptr<vr::gltf::Buffer>> buffers_; const char* Buffer() const; - const gltf::Accessor* Accessor(const std::string& key) const; + const vr::gltf::Accessor* Accessor(const std::string& key) const; }; } // namespace vr_shell
diff --git a/chrome/browser/android/vr_shell/vr_gl_thread.cc b/chrome/browser/android/vr_shell/vr_gl_thread.cc index a703d1b3..714d0b3 100644 --- a/chrome/browser/android/vr_shell/vr_gl_thread.cc +++ b/chrome/browser/android/vr_shell/vr_gl_thread.cc
@@ -6,13 +6,13 @@ #include <utility> -#include "chrome/browser/android/vr_shell/toolbar_state.h" -#include "chrome/browser/android/vr_shell/ui_interface.h" -#include "chrome/browser/android/vr_shell/ui_scene.h" -#include "chrome/browser/android/vr_shell/ui_scene_manager.h" #include "chrome/browser/android/vr_shell/vr_input_manager.h" #include "chrome/browser/android/vr_shell/vr_shell.h" #include "chrome/browser/android/vr_shell/vr_shell_gl.h" +#include "chrome/browser/vr/toolbar_state.h" +#include "chrome/browser/vr/ui_interface.h" +#include "chrome/browser/vr/ui_scene.h" +#include "chrome/browser/vr/ui_scene_manager.h" #include "third_party/skia/include/core/SkBitmap.h" namespace vr_shell { @@ -41,11 +41,11 @@ } void VrGLThread::Init() { - scene_ = base::MakeUnique<UiScene>(); + scene_ = base::MakeUnique<vr::UiScene>(); vr_shell_gl_ = base::MakeUnique<VrShellGl>(this, gvr_api_, initially_web_vr_, reprojected_rendering_, daydream_support_, scene_.get()); - scene_manager_ = base::MakeUnique<UiSceneManager>( + scene_manager_ = base::MakeUnique<vr::UiSceneManager>( this, scene_.get(), in_cct_, initially_web_vr_, web_vr_autopresentation_expected_); @@ -74,12 +74,13 @@ void VrGLThread::AppButtonClicked() { task_runner()->PostTask( FROM_HERE, - base::Bind(&UiSceneManager::OnAppButtonClicked, weak_scene_manager_)); + base::Bind(&vr::UiSceneManager::OnAppButtonClicked, weak_scene_manager_)); } -void VrGLThread::AppButtonGesturePerformed(UiInterface::Direction direction) { +void VrGLThread::AppButtonGesturePerformed( + vr::UiInterface::Direction direction) { task_runner()->PostTask( - FROM_HERE, base::Bind(&UiSceneManager::OnAppButtonGesturePerformed, + FROM_HERE, base::Bind(&vr::UiSceneManager::OnAppButtonGesturePerformed, weak_scene_manager_, direction)); } @@ -137,10 +138,10 @@ void VrGLThread::OnGLInitialized() { task_runner()->PostTask( FROM_HERE, - base::Bind(&UiSceneManager::OnGLInitialized, weak_scene_manager_)); + base::Bind(&vr::UiSceneManager::OnGLInitialized, weak_scene_manager_)); } -void VrGLThread::OnUnsupportedMode(UiUnsupportedMode mode) { +void VrGLThread::OnUnsupportedMode(vr::UiUnsupportedMode mode) { main_thread_task_runner_->PostTask( FROM_HERE, base::Bind(&VrShell::ExitVrDueToUnsupportedMode, weak_vr_shell_, mode)); @@ -148,93 +149,95 @@ void VrGLThread::SetFullscreen(bool enabled) { WaitUntilThreadStarted(); - task_runner()->PostTask(FROM_HERE, base::Bind(&UiSceneManager::SetFullscreen, - weak_scene_manager_, enabled)); + task_runner()->PostTask(FROM_HERE, + base::Bind(&vr::UiSceneManager::SetFullscreen, + weak_scene_manager_, enabled)); } void VrGLThread::SetIncognito(bool incognito) { WaitUntilThreadStarted(); - task_runner()->PostTask( - FROM_HERE, base::Bind(&UiSceneManager::SetIncognito, weak_scene_manager_, - incognito)); + task_runner()->PostTask(FROM_HERE, + base::Bind(&vr::UiSceneManager::SetIncognito, + weak_scene_manager_, incognito)); } void VrGLThread::SetHistoryButtonsEnabled(bool can_go_back, bool can_go_forward) { WaitUntilThreadStarted(); task_runner()->PostTask( - FROM_HERE, base::Bind(&UiSceneManager::SetHistoryButtonsEnabled, + FROM_HERE, base::Bind(&vr::UiSceneManager::SetHistoryButtonsEnabled, weak_scene_manager_, can_go_back, can_go_forward)); } void VrGLThread::SetLoadProgress(float progress) { WaitUntilThreadStarted(); task_runner()->PostTask(FROM_HERE, - base::Bind(&UiSceneManager::SetLoadProgress, + base::Bind(&vr::UiSceneManager::SetLoadProgress, weak_scene_manager_, progress)); } void VrGLThread::SetLoading(bool loading) { WaitUntilThreadStarted(); - task_runner()->PostTask(FROM_HERE, base::Bind(&UiSceneManager::SetLoading, + task_runner()->PostTask(FROM_HERE, base::Bind(&vr::UiSceneManager::SetLoading, weak_scene_manager_, loading)); } -void VrGLThread::SetToolbarState(const ToolbarState& state) { +void VrGLThread::SetToolbarState(const vr::ToolbarState& state) { WaitUntilThreadStarted(); - task_runner()->PostTask( - FROM_HERE, - base::Bind(&UiSceneManager::SetToolbarState, weak_scene_manager_, state)); + task_runner()->PostTask(FROM_HERE, + base::Bind(&vr::UiSceneManager::SetToolbarState, + weak_scene_manager_, state)); } void VrGLThread::SetWebVrMode(bool enabled, bool show_toast) { WaitUntilThreadStarted(); - task_runner()->PostTask( - FROM_HERE, base::Bind(&UiSceneManager::SetWebVrMode, weak_scene_manager_, - enabled, show_toast)); + task_runner()->PostTask(FROM_HERE, + base::Bind(&vr::UiSceneManager::SetWebVrMode, + weak_scene_manager_, enabled, show_toast)); } void VrGLThread::SetWebVrSecureOrigin(bool secure) { WaitUntilThreadStarted(); task_runner()->PostTask(FROM_HERE, - base::Bind(&UiSceneManager::SetWebVrSecureOrigin, + base::Bind(&vr::UiSceneManager::SetWebVrSecureOrigin, weak_scene_manager_, secure)); } void VrGLThread::SetAudioCapturingIndicator(bool enabled) { task_runner()->PostTask( - FROM_HERE, base::Bind(&UiSceneManager::SetAudioCapturingIndicator, + FROM_HERE, base::Bind(&vr::UiSceneManager::SetAudioCapturingIndicator, weak_scene_manager_, enabled)); } void VrGLThread::SetVideoCapturingIndicator(bool enabled) { task_runner()->PostTask( - FROM_HERE, base::Bind(&UiSceneManager::SetVideoCapturingIndicator, + FROM_HERE, base::Bind(&vr::UiSceneManager::SetVideoCapturingIndicator, weak_scene_manager_, enabled)); } void VrGLThread::SetScreenCapturingIndicator(bool enabled) { task_runner()->PostTask( - FROM_HERE, base::Bind(&UiSceneManager::SetScreenCapturingIndicator, + FROM_HERE, base::Bind(&vr::UiSceneManager::SetScreenCapturingIndicator, weak_scene_manager_, enabled)); } void VrGLThread::SetBluetoothConnectedIndicator(bool enabled) { task_runner()->PostTask( - FROM_HERE, base::Bind(&UiSceneManager::SetBluetoothConnectedIndicator, + FROM_HERE, base::Bind(&vr::UiSceneManager::SetBluetoothConnectedIndicator, weak_scene_manager_, enabled)); } void VrGLThread::SetIsExiting() { WaitUntilThreadStarted(); - task_runner()->PostTask(FROM_HERE, base::Bind(&UiSceneManager::SetIsExiting, - weak_scene_manager_)); + task_runner()->PostTask( + FROM_HERE, + base::Bind(&vr::UiSceneManager::SetIsExiting, weak_scene_manager_)); } void VrGLThread::SetSplashScreenIcon(const SkBitmap& bitmap) { WaitUntilThreadStarted(); task_runner()->PostTask(FROM_HERE, - base::Bind(&UiSceneManager::SetSplashScreenIcon, + base::Bind(&vr::UiSceneManager::SetSplashScreenIcon, weak_scene_manager_, bitmap)); }
diff --git a/chrome/browser/android/vr_shell/vr_gl_thread.h b/chrome/browser/android/vr_shell/vr_gl_thread.h index 5bbcde9..6026c13 100644 --- a/chrome/browser/android/vr_shell/vr_gl_thread.h +++ b/chrome/browser/android/vr_shell/vr_gl_thread.h
@@ -12,21 +12,24 @@ #include "base/single_thread_task_runner.h" #include "base/threading/thread.h" #include "chrome/browser/android/vr_shell/gl_browser_interface.h" -#include "chrome/browser/android/vr_shell/ui_browser_interface.h" -#include "chrome/browser/android/vr_shell/ui_interface.h" +#include "chrome/browser/vr/ui_browser_interface.h" +#include "chrome/browser/vr/ui_interface.h" #include "third_party/gvr-android-sdk/src/libraries/headers/vr/gvr/capi/include/gvr_types.h" +namespace vr { +class UiScene; +class UiSceneManager; +} // namespace vr + namespace vr_shell { -class UiScene; -class UiSceneManager; class VrShell; class VrShellGl; class VrGLThread : public base::Thread, public GlBrowserInterface, - public UiBrowserInterface, - public UiInterface { + public vr::UiBrowserInterface, + public vr::UiInterface { public: VrGLThread( const base::WeakPtr<VrShell>& weak_vr_shell, @@ -40,7 +43,7 @@ ~VrGLThread() override; base::WeakPtr<VrShellGl> GetVrShellGl() { return weak_vr_shell_gl_; } - base::WeakPtr<UiSceneManager> GetSceneManager() { + base::WeakPtr<vr::UiSceneManager> GetSceneManager() { return weak_scene_manager_; } @@ -49,7 +52,7 @@ void GvrDelegateReady(gvr::ViewerType viewer_type) override; void UpdateGamepadData(device::GvrGamepadData) override; void AppButtonClicked() override; - void AppButtonGesturePerformed(UiInterface::Direction direction) override; + void AppButtonGesturePerformed(vr::UiInterface::Direction direction) override; void ProcessContentGesture( std::unique_ptr<blink::WebInputEvent> event) override; void ForceExitVr() override; @@ -60,20 +63,20 @@ void ToggleCardboardGamepad(bool enabled) override; void OnGLInitialized() override; - // UiBrowserInterface implementation (UI calling to VrShell). + // vr::UiBrowserInterface implementation (UI calling to VrShell). void ExitPresent() override; void ExitFullscreen() override; void NavigateBack() override; void ExitCct() override; - void OnUnsupportedMode(UiUnsupportedMode mode) override; + void OnUnsupportedMode(vr::UiUnsupportedMode mode) override; - // UiInterface implementation (VrShell and GL calling to the UI). + // vr::UiInterface implementation (VrShell and GL calling to the UI). void SetFullscreen(bool enabled) override; void SetIncognito(bool incognito) override; void SetHistoryButtonsEnabled(bool can_go_back, bool can_go_forward) override; void SetLoadProgress(float progress) override; void SetLoading(bool loading) override; - void SetToolbarState(const ToolbarState& state) override; + void SetToolbarState(const vr::ToolbarState& state) override; void SetWebVrMode(bool enabled, bool show_toast) override; void SetWebVrSecureOrigin(bool secure) override; void SetVideoCapturingIndicator(bool enabled) override; @@ -89,9 +92,9 @@ private: // Created on GL thread. - std::unique_ptr<UiScene> scene_; - std::unique_ptr<UiSceneManager> scene_manager_; - base::WeakPtr<UiSceneManager> weak_scene_manager_; + std::unique_ptr<vr::UiScene> scene_; + std::unique_ptr<vr::UiSceneManager> scene_manager_; + base::WeakPtr<vr::UiSceneManager> weak_scene_manager_; std::unique_ptr<VrShellGl> vr_shell_gl_; base::WeakPtr<VrShellGl> weak_vr_shell_gl_;
diff --git a/chrome/browser/android/vr_shell/vr_shell.cc b/chrome/browser/android/vr_shell/vr_shell.cc index 5da786a..fd602959 100644 --- a/chrome/browser/android/vr_shell/vr_shell.cc +++ b/chrome/browser/android/vr_shell/vr_shell.cc
@@ -21,9 +21,6 @@ #include "base/values.h" #include "chrome/browser/android/tab_android.h" #include "chrome/browser/android/vr_shell/android_ui_gesture_target.h" -#include "chrome/browser/android/vr_shell/toolbar_helper.h" -#include "chrome/browser/android/vr_shell/ui_interface.h" -#include "chrome/browser/android/vr_shell/ui_scene_manager.h" #include "chrome/browser/android/vr_shell/vr_compositor.h" #include "chrome/browser/android/vr_shell/vr_controller_model.h" #include "chrome/browser/android/vr_shell/vr_gl_thread.h" @@ -35,6 +32,9 @@ #include "chrome/browser/android/vr_shell/vr_web_contents_observer.h" #include "chrome/browser/media/webrtc/media_capture_devices_dispatcher.h" #include "chrome/browser/media/webrtc/media_stream_capture_indicator.h" +#include "chrome/browser/vr/toolbar_helper.h" +#include "chrome/browser/vr/ui_interface.h" +#include "chrome/browser/vr/ui_scene_manager.h" #include "content/public/browser/browser_context.h" #include "content/public/browser/browser_thread.h" #include "content/public/browser/navigation_controller.h" @@ -118,7 +118,7 @@ for_web_vr, web_vr_autopresentation_expected, in_cct, reprojected_rendering_, HasDaydreamSupport(env)); ui_ = gl_thread_.get(); - toolbar_ = base::MakeUnique<ToolbarHelper>(ui_, this); + toolbar_ = base::MakeUnique<vr::ToolbarHelper>(ui_, this); base::Thread::Options options(base::MessageLoop::TYPE_DEFAULT, 0); options.priority = base::ThreadPriority::DISPLAY; @@ -578,10 +578,10 @@ } } -void VrShell::ExitVrDueToUnsupportedMode(UiUnsupportedMode mode) { - if (mode == UiUnsupportedMode::kUnhandledPageInfo) { +void VrShell::ExitVrDueToUnsupportedMode(vr::UiUnsupportedMode mode) { + if (mode == vr::UiUnsupportedMode::kUnhandledPageInfo) { UMA_HISTOGRAM_ENUMERATION("VR.Shell.EncounteredUnsupportedMode", mode, - UiUnsupportedMode::kCount); + vr::UiUnsupportedMode::kCount); JNIEnv* env = base::android::AttachCurrentThread(); Java_VrShellImpl_onUnhandledPageInfo(env, j_vr_shell_.obj()); return; @@ -592,7 +592,7 @@ base::Bind(&VrShell::ForceExitVr, weak_ptr_factory_.GetWeakPtr()), kExitVrDueToUnsupportedModeDelay); UMA_HISTOGRAM_ENUMERATION("VR.Shell.EncounteredUnsupportedMode", mode, - UiUnsupportedMode::kCount); + vr::UiUnsupportedMode::kCount); } void VrShell::UpdateVSyncInterval(base::TimeTicks vsync_timebase,
diff --git a/chrome/browser/android/vr_shell/vr_shell.h b/chrome/browser/android/vr_shell/vr_shell.h index fc72930..f69f2b7 100644 --- a/chrome/browser/android/vr_shell/vr_shell.h +++ b/chrome/browser/android/vr_shell/vr_shell.h
@@ -14,10 +14,10 @@ #include "base/macros.h" #include "base/memory/weak_ptr.h" #include "base/single_thread_task_runner.h" -#include "chrome/browser/android/vr_shell/ui_interface.h" -#include "chrome/browser/android/vr_shell/ui_unsupported_mode.h" #include "chrome/browser/android/vr_shell/vr_controller_model.h" #include "chrome/browser/ui/toolbar/chrome_toolbar_model_delegate.h" +#include "chrome/browser/vr/ui_interface.h" +#include "chrome/browser/vr/ui_unsupported_mode.h" #include "content/public/browser/web_contents_observer.h" #include "device/vr/android/gvr/cardboard_gamepad_data_provider.h" #include "device/vr/android/gvr/gvr_delegate.h" @@ -27,21 +27,24 @@ namespace blink { class WebInputEvent; -} +} // namespace blink namespace content { class WebContents; -} +} // namespace content namespace ui { class WindowAndroid; -} +} // namespace ui + +namespace vr { +class ToolbarHelper; +class UiInterface; +} // namespace vr namespace vr_shell { class AndroidUiGestureTarget; -class ToolbarHelper; -class UiInterface; class VrCompositor; class VrGLThread; class VrInputManager; @@ -165,7 +168,7 @@ void ForceExitVr(); void ExitPresent(); void ExitFullscreen(); - void ExitVrDueToUnsupportedMode(UiUnsupportedMode mode); + void ExitVrDueToUnsupportedMode(vr::UiUnsupportedMode mode); void ProcessContentGesture(std::unique_ptr<blink::WebInputEvent> event); void SubmitControllerModel(std::unique_ptr<VrControllerModel> model); @@ -229,8 +232,8 @@ bool thread_started_ = false; bool reprojected_rendering_; - UiInterface* ui_; - std::unique_ptr<ToolbarHelper> toolbar_; + vr::UiInterface* ui_; + std::unique_ptr<vr::ToolbarHelper> toolbar_; jobject content_surface_ = nullptr; bool taken_surface_ = false;
diff --git a/chrome/browser/android/vr_shell/vr_shell_gl.cc b/chrome/browser/android/vr_shell/vr_shell_gl.cc index bc91a39..7cca0b4 100644 --- a/chrome/browser/android/vr_shell/vr_shell_gl.cc +++ b/chrome/browser/android/vr_shell/vr_shell_gl.cc
@@ -14,18 +14,18 @@ #include "base/metrics/histogram_macros.h" #include "base/task_scheduler/post_task.h" #include "base/threading/thread_task_runner_handle.h" -#include "chrome/browser/android/vr_shell/fps_meter.h" #include "chrome/browser/android/vr_shell/gl_browser_interface.h" #include "chrome/browser/android/vr_shell/mailbox_to_surface_bridge.h" -#include "chrome/browser/android/vr_shell/ui_elements/ui_element.h" -#include "chrome/browser/android/vr_shell/ui_interface.h" -#include "chrome/browser/android/vr_shell/ui_scene.h" #include "chrome/browser/android/vr_shell/vr_controller.h" #include "chrome/browser/android/vr_shell/vr_gl_util.h" #include "chrome/browser/android/vr_shell/vr_metrics_util.h" #include "chrome/browser/android/vr_shell/vr_shell.h" #include "chrome/browser/android/vr_shell/vr_shell_renderer.h" #include "chrome/browser/android/vr_shell/vr_usage_monitor.h" +#include "chrome/browser/vr/elements/ui_element.h" +#include "chrome/browser/vr/fps_meter.h" +#include "chrome/browser/vr/ui_interface.h" +#include "chrome/browser/vr/ui_scene.h" #include "device/vr/android/gvr/gvr_delegate.h" #include "device/vr/android/gvr/gvr_device.h" #include "device/vr/android/gvr/gvr_gamepad_data_provider.h" @@ -209,7 +209,7 @@ bool initially_web_vr, bool reprojected_rendering, bool daydream_support, - UiScene* scene) + vr::UiScene* scene) : web_vr_mode_(initially_web_vr), surfaceless_rendering_(reprojected_rendering), daydream_support_(daydream_support), @@ -217,9 +217,9 @@ binding_(this), browser_(browser), scene_(scene), - fps_meter_(new FPSMeter()), - webvr_js_time_(new SlidingAverage(kWebVRSlidingAverageSize)), - webvr_render_time_(new SlidingAverage(kWebVRSlidingAverageSize)), + fps_meter_(new vr::FPSMeter()), + webvr_js_time_(new vr::SlidingAverage(kWebVRSlidingAverageSize)), + webvr_render_time_(new vr::SlidingAverage(kWebVRSlidingAverageSize)), weak_ptr_factory_(this) { GvrInit(gvr_api); } @@ -308,7 +308,7 @@ task_runner_)); } - input_manager_ = base::MakeUnique<UiInputManager>(scene_, this); + input_manager_ = base::MakeUnique<vr::UiInputManager>(scene_, this); } void VrShellGl::CreateContentSurface() { @@ -546,16 +546,16 @@ std::unique_ptr<GestureList> gesture_list_ptr = controller_->DetectGestures(); GestureList& gesture_list = *gesture_list_ptr; - UiInputManager::ButtonState controller_button_state = - UiInputManager::ButtonState::UP; + vr::UiInputManager::ButtonState controller_button_state = + vr::UiInputManager::ButtonState::UP; DCHECK(!(controller_->ButtonUpHappened(gvr::kControllerButtonClick) && controller_->ButtonDownHappened(gvr::kControllerButtonClick))) << "Cannot handle a button down and up event within one frame."; if (touch_pending_) { - controller_button_state = UiInputManager::ButtonState::CLICKED; + controller_button_state = vr::UiInputManager::ButtonState::CLICKED; touch_pending_ = false; } else if (controller_->ButtonState(gvr::kControllerButtonClick)) { - controller_button_state = UiInputManager::ButtonState::DOWN; + controller_button_state = vr::UiInputManager::ButtonState::DOWN; } input_manager_->HandleInput(controller_direction, pointer_start_, controller_button_state, gesture_list, @@ -713,7 +713,7 @@ // considered a regular click // TODO(asimjour1): We need to refactor the gesture recognition outside of // VrShellGl. - UiInterface::Direction direction = UiInterface::NONE; + vr::UiInterface::Direction direction = vr::UiInterface::NONE; gfx::Vector3dF a = controller_start_direction_; gfx::Vector3dF b = controller_direction; a.set_y(0); @@ -722,12 +722,12 @@ float gesture_xz_angle = acos(gfx::DotProduct(a, b) / a.Length() / b.Length()); if (fabs(gesture_xz_angle) > kMinAppButtonGestureAngleRad) { - direction = - gesture_xz_angle < 0 ? UiInterface::LEFT : UiInterface::RIGHT; + direction = gesture_xz_angle < 0 ? vr::UiInterface::LEFT + : vr::UiInterface::RIGHT; browser_->AppButtonGesturePerformed(direction); } } - if (direction == UiInterface::NONE) + if (direction == vr::UiInterface::NONE) browser_->AppButtonClicked(); } } @@ -957,7 +957,7 @@ SkColorGetA(backgroundColor) / 255.0); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); } - std::vector<const UiElement*> elements = scene_->GetWorldElements(); + std::vector<const vr::UiElement*> elements = scene_->GetWorldElements(); const bool draw_reticle = !(scene_->is_exiting() || scene_->showing_splash_screen() || ShouldDrawWebVr()); @@ -966,7 +966,7 @@ } void VrShellGl::DrawOverlayElements(const gfx::Transform& head_pose) { - std::vector<const UiElement*> elements = scene_->GetOverlayElements(); + std::vector<const vr::UiElement*> elements = scene_->GetOverlayElements(); if (elements.empty()) return; @@ -981,7 +981,7 @@ void VrShellGl::DrawHeadLockedElements() { TRACE_EVENT0("gpu", "VrShellGl::DrawHeadLockedElements"); - std::vector<const UiElement*> elements = scene_->GetHeadLockedElements(); + std::vector<const vr::UiElement*> elements = scene_->GetHeadLockedElements(); // Add head-locked viewports. The list gets reset to just // the recommended viewports (for the primary buffer) each frame. @@ -1003,7 +1003,7 @@ } void VrShellGl::DrawUiView(const gfx::Transform& head_pose, - const std::vector<const UiElement*>& elements, + const std::vector<const vr::UiElement*>& elements, const gfx::Size& render_size, int viewport_offset, bool draw_reticle) { @@ -1037,7 +1037,7 @@ } void VrShellGl::DrawElements(const gfx::Transform& view_proj_matrix, - const std::vector<const UiElement*>& elements, + const std::vector<const vr::UiElement*>& elements, bool draw_reticle) { if (elements.empty()) return; @@ -1062,31 +1062,31 @@ } void VrShellGl::DrawElement(const gfx::Transform& view_proj_matrix, - const UiElement& element) { + const vr::UiElement& element) { gfx::Transform transform = view_proj_matrix * element.transform(); switch (element.fill()) { - case Fill::OPAQUE_GRADIENT: { + case vr::Fill::OPAQUE_GRADIENT: { vr_shell_renderer_->GetGradientQuadRenderer()->Draw( transform, element.edge_color(), element.center_color(), element.computed_opacity()); break; } - case Fill::GRID_GRADIENT: { + case vr::Fill::GRID_GRADIENT: { vr_shell_renderer_->GetGradientGridRenderer()->Draw( transform, element.edge_color(), element.center_color(), element.grid_color(), element.gridline_count(), element.computed_opacity()); break; } - case Fill::CONTENT: { + case vr::Fill::CONTENT: { vr_shell_renderer_->GetExternalTexturedQuadRenderer()->Draw( content_texture_id_, transform, render_size_vrshell_, gfx::SizeF(element.size().x(), element.size().y()), element.computed_opacity(), element.corner_radius()); break; } - case Fill::SELF: { + case vr::Fill::SELF: { element.Render(vr_shell_renderer_.get(), transform); break; } @@ -1095,10 +1095,10 @@ } } -std::vector<const UiElement*> VrShellGl::GetElementsInDrawOrder( +std::vector<const vr::UiElement*> VrShellGl::GetElementsInDrawOrder( const gfx::Transform& view_matrix, - const std::vector<const UiElement*>& elements) { - std::vector<const UiElement*> sorted_elements = elements; + const std::vector<const vr::UiElement*>& elements) { + std::vector<const vr::UiElement*> sorted_elements = elements; // Sort elements primarily based on their draw phase (lower draw phase first) // and secondarily based on their z-axis distance (more distant first). @@ -1107,7 +1107,7 @@ // release, and provides a consistent ordering that we can easily design // around. std::sort(sorted_elements.begin(), sorted_elements.end(), - [](const UiElement* first, const UiElement* second) { + [](const vr::UiElement* first, const vr::UiElement* second) { if (first->draw_phase() != second->draw_phase()) { return first->draw_phase() < second->draw_phase(); } else {
diff --git a/chrome/browser/android/vr_shell/vr_shell_gl.h b/chrome/browser/android/vr_shell/vr_shell_gl.h index 8977e81..8211ae8 100644 --- a/chrome/browser/android/vr_shell/vr_shell_gl.h +++ b/chrome/browser/android/vr_shell/vr_shell_gl.h
@@ -5,7 +5,7 @@ #ifndef CHROME_BROWSER_ANDROID_VR_SHELL_VR_SHELL_GL_H_ #define CHROME_BROWSER_ANDROID_VR_SHELL_VR_SHELL_GL_H_ -#include <chrome/browser/android/vr_shell/ui_input_manager.h> +#include <chrome/browser/vr/ui_input_manager.h> #include <memory> #include <queue> #include <utility> @@ -29,7 +29,7 @@ namespace blink { class WebMouseEvent; -} +} // namespace blink namespace gl { class GLContext; @@ -37,19 +37,22 @@ class GLSurface; class ScopedJavaSurface; class SurfaceTexture; -} +} // namespace gl namespace gpu { struct MailboxHolder; -} +} // namespace gpu -namespace vr_shell { - +namespace vr { class FPSMeter; -class MailboxToSurfaceBridge; class SlidingAverage; class UiElement; class UiScene; +} // namespace vr + +namespace vr_shell { + +class MailboxToSurfaceBridge; class GlBrowserInterface; class VrController; class VrShell; @@ -68,14 +71,14 @@ // This class manages all GLThread owned objects and GL rendering for VrShell. // It is not threadsafe and must only be used on the GL thread. class VrShellGl : public device::mojom::VRPresentationProvider, - public UiInputManagerDelegate { + public vr::UiInputManagerDelegate { public: VrShellGl(GlBrowserInterface* browser, gvr_context* gvr_api, bool initially_web_vr, bool reprojected_rendering, bool daydream_support, - UiScene* scene); + vr::UiScene* scene); ~VrShellGl() override; void Initialize(); @@ -122,18 +125,18 @@ void DrawOverlayElements(const gfx::Transform& head_pose); void DrawHeadLockedElements(); void DrawUiView(const gfx::Transform& head_pose, - const std::vector<const UiElement*>& elements, + const std::vector<const vr::UiElement*>& elements, const gfx::Size& render_size, int viewport_offset, bool draw_cursor); void DrawElements(const gfx::Transform& view_proj_matrix, - const std::vector<const UiElement*>& elements, + const std::vector<const vr::UiElement*>& elements, bool draw_cursor); void DrawElement(const gfx::Transform& view_proj_matrix, - const UiElement& element); - std::vector<const UiElement*> GetElementsInDrawOrder( + const vr::UiElement& element); + std::vector<const vr::UiElement*> GetElementsInDrawOrder( const gfx::Transform& view_matrix, - const std::vector<const UiElement*>& elements); + const std::vector<const vr::UiElement*>& elements); void DrawReticle(const gfx::Transform& view_proj_matrix); void DrawLaser(const gfx::Transform& view_proj_matrix); void DrawController(const gfx::Transform& view_proj_matrix); @@ -149,7 +152,7 @@ void UpdateGesture(const gfx::PointF& normalized_content_hit_point, blink::WebGestureEvent& gesture); - // UiInputManagerDelegate. + // vr::UiInputManagerDelegate. void OnContentEnter(const gfx::PointF& normalized_hit_point) override; void OnContentLeave() override; void OnContentMove(const gfx::PointF& normalized_hit_point) override; @@ -233,7 +236,7 @@ gfx::Quaternion controller_quat_; gfx::Point3F target_point_; - UiElement* reticle_render_target_ = nullptr; + vr::UiElement* reticle_render_target_ = nullptr; int content_tex_css_width_ = 0; int content_tex_css_height_ = 0; @@ -265,7 +268,7 @@ GlBrowserInterface* browser_; - UiScene* scene_ = nullptr; + vr::UiScene* scene_ = nullptr; uint8_t frame_index_ = 0; // Larger than frame_index_ so it can be initialized out-of-band. @@ -274,14 +277,14 @@ // Attributes for gesture detection while holding app button. gfx::Vector3dF controller_start_direction_; - std::unique_ptr<FPSMeter> fps_meter_; + std::unique_ptr<vr::FPSMeter> fps_meter_; - std::unique_ptr<SlidingAverage> webvr_js_time_; - std::unique_ptr<SlidingAverage> webvr_render_time_; + std::unique_ptr<vr::SlidingAverage> webvr_js_time_; + std::unique_ptr<vr::SlidingAverage> webvr_render_time_; gfx::Point3F pointer_start_; - std::unique_ptr<UiInputManager> input_manager_; + std::unique_ptr<vr::UiInputManager> input_manager_; base::WeakPtrFactory<VrShellGl> weak_ptr_factory_;
diff --git a/chrome/browser/android/vr_shell/vr_shell_renderer.cc b/chrome/browser/android/vr_shell/vr_shell_renderer.cc index 64fec5c..a2242aaa 100644 --- a/chrome/browser/android/vr_shell/vr_shell_renderer.cc +++ b/chrome/browser/android/vr_shell/vr_shell_renderer.cc
@@ -376,7 +376,7 @@ uniform vec4 u_EdgeColor; uniform vec4 u_GridColor; uniform mediump float u_Opacity; - uniform int u_LinesCount; + uniform float u_LinesCount; void main() { float edgeColorWeight = clamp(length(v_GridPosition), 0.0, 1.0); @@ -384,7 +384,7 @@ vec4 bg_color = u_CenterColor * centerColorWeight + u_EdgeColor * edgeColorWeight; bg_color = vec4(bg_color.xyz * bg_color.w, bg_color.w); - float linesCountF = float(u_LinesCount) / 2.0; + float linesCountF = u_LinesCount * 0.5; float pos_x = abs(v_GridPosition.x) * linesCountF; float pos_y = abs(v_GridPosition.y) * linesCountF; float diff_x = abs(pos_x - floor(pos_x + 0.5)); @@ -854,14 +854,14 @@ GL_RGBA, GL_UNSIGNED_BYTE, pixmap.addr()); } - const gltf::Accessor* accessor = model->PositionAccessor(); - position_components_ = gltf::GetTypeComponents(accessor->type); + const vr::gltf::Accessor* accessor = model->PositionAccessor(); + position_components_ = vr::gltf::GetTypeComponents(accessor->type); position_type_ = accessor->component_type; position_stride_ = accessor->byte_stride; position_offset_ = VOID_OFFSET(accessor->byte_offset); accessor = model->TextureCoordinateAccessor(); - tex_coord_components_ = gltf::GetTypeComponents(accessor->type); + tex_coord_components_ = vr::gltf::GetTypeComponents(accessor->type); tex_coord_type_ = accessor->component_type; tex_coord_stride_ = accessor->byte_stride; tex_coord_offset_ = VOID_OFFSET(accessor->byte_offset); @@ -964,7 +964,7 @@ // Tell shader the grid size so that it can calculate the fading. glUniform1f(scene_radius_handle_, kHalfSize); - glUniform1i(lines_count_handle_, gridline_count); + glUniform1f(lines_count_handle_, static_cast<float>(gridline_count)); // Set the edge color to the fog color so that it seems to fade out. SetColorUniform(edge_color_handle_, edge_color);
diff --git a/chrome/browser/android/vr_shell/vr_shell_renderer.h b/chrome/browser/android/vr_shell/vr_shell_renderer.h index 305a6590..657fd4eb9 100644 --- a/chrome/browser/android/vr_shell/vr_shell_renderer.h +++ b/chrome/browser/android/vr_shell/vr_shell_renderer.h
@@ -10,8 +10,8 @@ #include <vector> #include "base/macros.h" -#include "chrome/browser/android/vr_shell/ui_element_renderer.h" #include "chrome/browser/android/vr_shell/vr_controller_model.h" +#include "chrome/browser/vr/ui_element_renderer.h" #include "ui/gfx/geometry/size.h" #include "ui/gfx/geometry/size_f.h" #include "ui/gfx/transform.h" @@ -287,12 +287,12 @@ DISALLOW_COPY_AND_ASSIGN(GradientGridRenderer); }; -class VrShellRenderer : public UiElementRenderer { +class VrShellRenderer : public vr::UiElementRenderer { public: VrShellRenderer(); ~VrShellRenderer() override; - // UiElementRenderer interface (exposed to UI elements). + // vr::UiElementRenderer interface (exposed to UI elements). void DrawTexturedQuad(int texture_data_handle, const gfx::Transform& view_proj_matrix, const gfx::RectF& copy_rect,
diff --git a/chrome/browser/android/vr_shell/vr_web_contents_observer.cc b/chrome/browser/android/vr_shell/vr_web_contents_observer.cc index aec6c6f..56e9846 100644 --- a/chrome/browser/android/vr_shell/vr_web_contents_observer.cc +++ b/chrome/browser/android/vr_shell/vr_web_contents_observer.cc
@@ -4,9 +4,9 @@ #include "chrome/browser/android/vr_shell/vr_web_contents_observer.h" -#include "chrome/browser/android/vr_shell/toolbar_helper.h" -#include "chrome/browser/android/vr_shell/ui_interface.h" #include "chrome/browser/android/vr_shell/vr_shell.h" +#include "chrome/browser/vr/toolbar_helper.h" +#include "chrome/browser/vr/ui_interface.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" @@ -15,8 +15,8 @@ VrWebContentsObserver::VrWebContentsObserver(content::WebContents* web_contents, VrShell* vr_shell, - UiInterface* ui_interface, - ToolbarHelper* toolbar) + vr::UiInterface* ui_interface, + vr::ToolbarHelper* toolbar) : WebContentsObserver(web_contents), vr_shell_(vr_shell), ui_interface_(ui_interface), @@ -26,7 +26,7 @@ VrWebContentsObserver::~VrWebContentsObserver() {} -void VrWebContentsObserver::SetUiInterface(UiInterface* ui_interface) { +void VrWebContentsObserver::SetUiInterface(vr::UiInterface* ui_interface) { ui_interface_ = ui_interface; }
diff --git a/chrome/browser/android/vr_shell/vr_web_contents_observer.h b/chrome/browser/android/vr_shell/vr_web_contents_observer.h index ac10b059..f6624c9 100644 --- a/chrome/browser/android/vr_shell/vr_web_contents_observer.h +++ b/chrome/browser/android/vr_shell/vr_web_contents_observer.h
@@ -10,24 +10,27 @@ namespace content { class NavigationHandle; -} +} // namespace content + +namespace vr { +class ToolbarHelper; +class UiInterface; +} // namespace vr namespace vr_shell { -class UiInterface; class VrShell; -class ToolbarHelper; class CONTENT_EXPORT VrWebContentsObserver : public content::WebContentsObserver { public: VrWebContentsObserver(content::WebContents* web_contents, VrShell* vr_shell, - UiInterface* ui_interface, - ToolbarHelper* toolbar); + vr::UiInterface* ui_interface, + vr::ToolbarHelper* toolbar); ~VrWebContentsObserver() override; - void SetUiInterface(UiInterface* ui_interface); + void SetUiInterface(vr::UiInterface* ui_interface); private: // WebContentsObserver implementation. @@ -51,8 +54,8 @@ // This class does not own these pointers. VrShell* vr_shell_; - UiInterface* ui_interface_; - ToolbarHelper* toolbar_; + vr::UiInterface* ui_interface_; + vr::ToolbarHelper* toolbar_; DISALLOW_COPY_AND_ASSIGN(VrWebContentsObserver); };
diff --git a/chrome/browser/chrome_browser_main_android.cc b/chrome/browser/chrome_browser_main_android.cc index 7c71f4f..27f240e 100644 --- a/chrome/browser/chrome_browser_main_android.cc +++ b/chrome/browser/chrome_browser_main_android.cc
@@ -80,6 +80,10 @@ crash_dump_dir, kAndroidMinidumpDescriptor)); } + // Auto-detect based on en-US whether secondary locale .pak files exist. + ui::SetLoadSecondaryLocalePaks( + !ui::GetPathForAndroidLocalePakWithinApk("en-US").empty()); + return ChromeBrowserMainParts::PreCreateThreads(); }
diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/chrome_content_browser_client.cc index 528d989..17f899b 100644 --- a/chrome/browser/chrome_content_browser_client.cc +++ b/chrome/browser/chrome_content_browser_client.cc
@@ -2800,6 +2800,12 @@ fd = ui::GetLocalePackFd(®ion); mappings->ShareWithRegion(kAndroidLocalePakDescriptor, fd, region); + // Optional secondary locale .pak file. + fd = ui::GetSecondaryLocalePackFd(®ion); + if (fd != -1) { + mappings->ShareWithRegion(kAndroidSecondaryLocalePakDescriptor, fd, region); + } + breakpad::CrashDumpObserver::GetInstance()->BrowserChildProcessStarted( child_process_id, mappings);
diff --git a/chrome/browser/crash_upload_list/crash_upload_list.cc b/chrome/browser/crash_upload_list/crash_upload_list.cc index 6f0eeec..c6345fb 100644 --- a/chrome/browser/crash_upload_list/crash_upload_list.cc +++ b/chrome/browser/crash_upload_list/crash_upload_list.cc
@@ -4,37 +4,34 @@ #include "chrome/browser/crash_upload_list/crash_upload_list.h" -#include "base/files/file_path.h" -#include "base/path_service.h" -#include "base/threading/sequenced_worker_pool.h" #include "build/build_config.h" -#include "chrome/common/chrome_paths.h" -#include "content/public/browser/browser_thread.h" #if defined(OS_MACOSX) || defined(OS_WIN) #include "chrome/browser/crash_upload_list/crash_upload_list_crashpad.h" +#else +#include "base/files/file_path.h" +#include "base/path_service.h" +#include "chrome/common/chrome_paths.h" +#include "components/upload_list/crash_upload_list.h" +#include "components/upload_list/text_log_upload_list.h" #endif #if defined(OS_ANDROID) #include "chrome/browser/crash_upload_list/crash_upload_list_android.h" #endif -scoped_refptr<CrashUploadList> CreateCrashUploadList( - UploadList::Delegate* delegate) { +scoped_refptr<UploadList> CreateCrashUploadList() { #if defined(OS_MACOSX) || defined(OS_WIN) - return new CrashUploadListCrashpad(delegate, - content::BrowserThread::GetBlockingPool()); + return new CrashUploadListCrashpad(); #else base::FilePath crash_dir_path; PathService::Get(chrome::DIR_CRASH_DUMPS, &crash_dir_path); base::FilePath upload_log_path = crash_dir_path.AppendASCII(CrashUploadList::kReporterLogFilename); #if defined(OS_ANDROID) - return new CrashUploadListAndroid(delegate, upload_log_path, - content::BrowserThread::GetBlockingPool()); + return new CrashUploadListAndroid(upload_log_path); #else - return new CrashUploadList(delegate, upload_log_path, - content::BrowserThread::GetBlockingPool()); + return new TextLogUploadList(upload_log_path); #endif // defined(OS_ANDROID) #endif // defined(OS_MACOSX) || defined(OS_WIN) }
diff --git a/chrome/browser/crash_upload_list/crash_upload_list.h b/chrome/browser/crash_upload_list/crash_upload_list.h index 340ac3c..62debae 100644 --- a/chrome/browser/crash_upload_list/crash_upload_list.h +++ b/chrome/browser/crash_upload_list/crash_upload_list.h
@@ -6,11 +6,10 @@ #define CHROME_BROWSER_CRASH_UPLOAD_LIST_CRASH_UPLOAD_LIST_H_ #include "base/memory/ref_counted.h" -#include "components/upload_list/crash_upload_list.h" +#include "components/upload_list/upload_list.h" // Factory that creates the platform-specific implementation of the crash -// upload list with the given callback delegate. -scoped_refptr<CrashUploadList> CreateCrashUploadList( - UploadList::Delegate* delegate); +// report upload list. +scoped_refptr<UploadList> CreateCrashUploadList(); #endif // CHROME_BROWSER_CRASH_UPLOAD_LIST_CRASH_UPLOAD_LIST_H_
diff --git a/chrome/browser/crash_upload_list/crash_upload_list_android.cc b/chrome/browser/crash_upload_list/crash_upload_list_android.cc index 18ace2d..651fb61 100644 --- a/chrome/browser/crash_upload_list/crash_upload_list_android.cc +++ b/chrome/browser/crash_upload_list/crash_upload_list_android.cc
@@ -11,28 +11,24 @@ #include "base/files/file.h" #include "base/files/file_enumerator.h" #include "base/files/file_util.h" -#include "base/task_runner.h" #include "jni/MinidumpUploadService_jni.h" #include "ui/base/text/bytes_formatting.h" CrashUploadListAndroid::CrashUploadListAndroid( - Delegate* delegate, - const base::FilePath& upload_log_path, - scoped_refptr<base::TaskRunner> task_runner) - : CrashUploadList(delegate, upload_log_path, std::move(task_runner)) {} + const base::FilePath& upload_log_path) + : TextLogUploadList(upload_log_path) {} CrashUploadListAndroid::~CrashUploadListAndroid() {} -void CrashUploadListAndroid::LoadUploadList( - std::vector<UploadList::UploadInfo>* uploads) { - // This will load the list of successfully uploaded logs. - CrashUploadList::LoadUploadList(uploads); - - LoadUnsuccessfulUploadList(uploads); +std::vector<UploadList::UploadInfo> CrashUploadListAndroid::LoadUploadList() { + // First load the list of successfully uploaded logs. + std::vector<UploadInfo> uploads = TextLogUploadList::LoadUploadList(); + // Then load the unsuccessful uploads. + LoadUnsuccessfulUploadList(&uploads); + return uploads; } -void CrashUploadListAndroid::RequestSingleCrashUpload( - const std::string& local_id) { +void CrashUploadListAndroid::RequestSingleUpload(const std::string& local_id) { JNIEnv* env = base::android::AttachCurrentThread(); base::android::ScopedJavaLocalRef<jstring> j_local_id = base::android::ConvertUTF8ToJavaString(env, local_id);
diff --git a/chrome/browser/crash_upload_list/crash_upload_list_android.h b/chrome/browser/crash_upload_list/crash_upload_list_android.h index adc75f2b..c7b0cebf 100644 --- a/chrome/browser/crash_upload_list/crash_upload_list_android.h +++ b/chrome/browser/crash_upload_list/crash_upload_list_android.h
@@ -6,27 +6,24 @@ #define CHROME_BROWSER_CRASH_UPLOAD_LIST_CRASH_UPLOAD_LIST_ANDROID_H_ #include "base/macros.h" -#include "components/upload_list/crash_upload_list.h" +#include "components/upload_list/text_log_upload_list.h" namespace base { class FilePath; -class TaskRunner; } -// A CrashUploadList that retrieves the list of uploaded reports from the -// Android crash reporter. -class CrashUploadListAndroid : public CrashUploadList { +// An UploadList that retrieves the list of crash reports available on the +// client. This uses both the Breakpad text log format, as well as inspecting +// the un-uploaded Minidump directory, managed by the MinidumpUploadService. +class CrashUploadListAndroid : public TextLogUploadList { public: - CrashUploadListAndroid(Delegate* delegate, - const base::FilePath& upload_log_path, - scoped_refptr<base::TaskRunner> task_runner); + CrashUploadListAndroid(const base::FilePath& upload_log_path); protected: ~CrashUploadListAndroid() override; - // Called on a blocking pool thread. - void LoadUploadList(std::vector<UploadInfo>* uploads) override; - void RequestSingleCrashUpload(const std::string& local_id) override; + std::vector<UploadInfo> LoadUploadList() override; + void RequestSingleUpload(const std::string& local_id) override; private: void LoadUnsuccessfulUploadList(std::vector<UploadInfo>* uploads);
diff --git a/chrome/browser/crash_upload_list/crash_upload_list_crashpad.cc b/chrome/browser/crash_upload_list/crash_upload_list_crashpad.cc index 49a0e0b33..017d9e1 100644 --- a/chrome/browser/crash_upload_list/crash_upload_list_crashpad.cc +++ b/chrome/browser/crash_upload_list/crash_upload_list_crashpad.cc
@@ -8,7 +8,6 @@ #include <utility> -#include "base/task_runner.h" #include "base/time/time.h" #include "build/build_config.h" #include "chrome/common/chrome_constants.h" @@ -80,15 +79,16 @@ } // namespace -CrashUploadListCrashpad::CrashUploadListCrashpad( - Delegate* delegate, - scoped_refptr<base::TaskRunner> task_runner) - : CrashUploadList(delegate, base::FilePath(), std::move(task_runner)) {} +CrashUploadListCrashpad::CrashUploadListCrashpad() = default; -CrashUploadListCrashpad::~CrashUploadListCrashpad() {} +CrashUploadListCrashpad::~CrashUploadListCrashpad() = default; -void CrashUploadListCrashpad::LoadUploadList( - std::vector<UploadList::UploadInfo>* uploads) { +base::TaskTraits CrashUploadListCrashpad::LoadingTaskTraits() { + return {base::MayBlock(), base::TaskPriority::BACKGROUND, + base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN}; +} + +std::vector<UploadList::UploadInfo> CrashUploadListCrashpad::LoadUploadList() { std::vector<crash_reporter::Report> reports; #if defined(OS_WIN) // On Windows, we only link crash client into chrome.exe (not the dlls), and @@ -100,16 +100,17 @@ crash_reporter::GetReports(&reports); #endif + std::vector<UploadInfo> uploads; for (const crash_reporter::Report& report : reports) { - uploads->push_back( + uploads.push_back( UploadInfo(report.remote_id, base::Time::FromTimeT(report.upload_time), report.local_id, base::Time::FromTimeT(report.capture_time), ReportUploadStateToUploadInfoState(report.state))); } + return uploads; } -void CrashUploadListCrashpad::RequestSingleCrashUpload( - const std::string& local_id) { +void CrashUploadListCrashpad::RequestSingleUpload(const std::string& local_id) { #if defined(OS_WIN) // On Windows, crash reporting is handled by chrome_elf.dll, that's why we // can't call crash_reporter::RequestSingleCrashUpload directly.
diff --git a/chrome/browser/crash_upload_list/crash_upload_list_crashpad.h b/chrome/browser/crash_upload_list/crash_upload_list_crashpad.h index 35eb567..8fa05ca 100644 --- a/chrome/browser/crash_upload_list/crash_upload_list_crashpad.h +++ b/chrome/browser/crash_upload_list/crash_upload_list_crashpad.h
@@ -6,26 +6,20 @@ #define CHROME_BROWSER_CRASH_UPLOAD_LIST_CRASH_UPLOAD_LIST_CRASHPAD_H_ #include "base/macros.h" -#include "components/upload_list/crash_upload_list.h" +#include "components/upload_list/upload_list.h" -namespace base { -class TaskRunner; -} - -// A CrashUploadList that retrieves the list of uploaded reports from the +// An UploadList that retrieves the list of crash reports from the // Crashpad database. -class CrashUploadListCrashpad : public CrashUploadList { +class CrashUploadListCrashpad : public UploadList { public: - CrashUploadListCrashpad(Delegate* delegate, - scoped_refptr<base::TaskRunner> task_runner); + CrashUploadListCrashpad(); protected: ~CrashUploadListCrashpad() override; - // Called on a blocking pool thread. - void LoadUploadList(std::vector<UploadInfo>* uploads) override; - - void RequestSingleCrashUpload(const std::string& local_id) override; + base::TaskTraits LoadingTaskTraits() override; + std::vector<UploadInfo> LoadUploadList() override; + void RequestSingleUpload(const std::string& local_id) override; DISALLOW_COPY_AND_ASSIGN(CrashUploadListCrashpad); };
diff --git a/chrome/browser/feedback/system_logs/log_sources/crash_ids_source.cc b/chrome/browser/feedback/system_logs/log_sources/crash_ids_source.cc index cad5edd8..747a442 100644 --- a/chrome/browser/feedback/system_logs/log_sources/crash_ids_source.cc +++ b/chrome/browser/feedback/system_logs/log_sources/crash_ids_source.cc
@@ -28,7 +28,7 @@ CrashIdsSource::CrashIdsSource() : SystemLogsSource("CrashId"), - crash_upload_list_(CreateCrashUploadList(this)), + crash_upload_list_(CreateCrashUploadList()), pending_crash_list_loading_(false) {} CrashIdsSource::~CrashIdsSource() {} @@ -42,7 +42,8 @@ return; pending_crash_list_loading_ = true; - crash_upload_list_->LoadUploadListAsynchronously(); + crash_upload_list_->Load(base::BindOnce( + &CrashIdsSource::OnUploadListAvailable, base::Unretained(this))); } void CrashIdsSource::OnUploadListAvailable() {
diff --git a/chrome/browser/feedback/system_logs/log_sources/crash_ids_source.h b/chrome/browser/feedback/system_logs/log_sources/crash_ids_source.h index 60839cd..6339c5fb 100644 --- a/chrome/browser/feedback/system_logs/log_sources/crash_ids_source.h +++ b/chrome/browser/feedback/system_logs/log_sources/crash_ids_source.h
@@ -9,13 +9,12 @@ #include "base/callback_forward.h" #include "chrome/browser/feedback/system_logs/system_logs_source.h" -#include "components/upload_list/crash_upload_list.h" #include "components/upload_list/upload_list.h" namespace system_logs { // Extract the most recent crash IDs (if any) and adds them to the system logs. -class CrashIdsSource : public SystemLogsSource, public UploadList::Delegate { +class CrashIdsSource : public SystemLogsSource { public: CrashIdsSource(); ~CrashIdsSource() override; @@ -23,13 +22,11 @@ // SystemLogsSource: void Fetch(const SysLogsSourceCallback& callback) override; - // UploadList::Delegate: - void OnUploadListAvailable() override; - private: + void OnUploadListAvailable(); void RespondWithCrashIds(const SysLogsSourceCallback& callback) const; - scoped_refptr<CrashUploadList> crash_upload_list_; + scoped_refptr<UploadList> crash_upload_list_; // A comma-separated list of crash IDs as expected by the server. std::string crash_ids_list_;
diff --git a/chrome/browser/media/webrtc/webrtc_log_list.cc b/chrome/browser/media/webrtc/webrtc_log_list.cc index 4187086..4663966 100644 --- a/chrome/browser/media/webrtc/webrtc_log_list.cc +++ b/chrome/browser/media/webrtc/webrtc_log_list.cc
@@ -5,26 +5,24 @@ #include "chrome/browser/media/webrtc/webrtc_log_list.h" #include "base/files/file.h" -#include "base/files/file_path.h" #include "base/files/file_util.h" #include "base/task_scheduler/post_task.h" #include "chrome/browser/profiles/profile.h" #include "chrome/common/chrome_paths.h" +#include "components/upload_list/text_log_upload_list.h" namespace { const char kWebRtcLogDirectory[] = "WebRTC Logs"; const char kWebRtcLogListFilename[] = "Log List"; -} +} // namespace // static -UploadList* WebRtcLogList::CreateWebRtcLogList(UploadList::Delegate* delegate, - Profile* profile) { +UploadList* WebRtcLogList::CreateWebRtcLogList(Profile* profile) { base::FilePath log_list_path = GetWebRtcLogListFileForDirectory( GetWebRtcLogDirectoryForProfile(profile->GetPath())); - return new UploadList(delegate, log_list_path, - base::CreateTaskRunnerWithTraits({base::MayBlock()})); + return new TextLogUploadList(log_list_path); } // static
diff --git a/chrome/browser/media/webrtc/webrtc_log_list.h b/chrome/browser/media/webrtc/webrtc_log_list.h index c5c56a5..07d5cf12 100644 --- a/chrome/browser/media/webrtc/webrtc_log_list.h +++ b/chrome/browser/media/webrtc/webrtc_log_list.h
@@ -5,17 +5,17 @@ #ifndef CHROME_BROWSER_MEDIA_WEBRTC_WEBRTC_LOG_LIST_H_ #define CHROME_BROWSER_MEDIA_WEBRTC_WEBRTC_LOG_LIST_H_ -#include "components/upload_list/upload_list.h" +#include "base/files/file_path.h" class Profile; +class UploadList; class WebRtcLogList { public: // Creates the upload list with the given callback delegate for a // profile. The upload list loads and parses a text file list of WebRTC // logs stored locally and/or uploaded. - static UploadList* CreateWebRtcLogList(UploadList::Delegate* delegate, - Profile* profile); + static UploadList* CreateWebRtcLogList(Profile* profile); // Get the file path for the log directory for a profile. static base::FilePath GetWebRtcLogDirectoryForProfile(
diff --git a/chrome/browser/ntp_tiles/ntp_tiles_browsertest.cc b/chrome/browser/ntp_tiles/ntp_tiles_browsertest.cc index 2d385ad..4e49c10 100644 --- a/chrome/browser/ntp_tiles/ntp_tiles_browsertest.cc +++ b/chrome/browser/ntp_tiles/ntp_tiles_browsertest.cc
@@ -19,6 +19,7 @@ namespace { using testing::Contains; +using testing::Not; std::string PrintTile(const std::string& title, const std::string& url, @@ -102,4 +103,28 @@ TileSource::TOP_SITES))); } +// Tests that after navigating to a URL with a server redirect, ntp tiles will +// include the correct URL. +IN_PROC_BROWSER_TEST_F(NTPTilesTest, ServerRedirect) { + ASSERT_TRUE(embedded_test_server()->Start()); + GURL final_url = embedded_test_server()->GetURL("/defaultresponse"); + GURL first_url = + embedded_test_server()->GetURL("/server-redirect?" + final_url.spec()); + + ui_test_utils::NavigateToURLWithDisposition( + browser(), first_url, WindowOpenDisposition::CURRENT_TAB, + ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); + MostVisitedSitesWaiter waiter; + most_visited_sites_->SetMostVisitedURLsObserver(&waiter, /*num_sites=*/8); + + NTPTilesVector tiles = waiter.WaitForTiles(); + + // TopSites uses the start of the redirect chain, so verify the first URL + // is listed, but not the final URL. + EXPECT_THAT(tiles, Contains(MatchesTile("", first_url.spec().c_str(), + TileSource::TOP_SITES))); + EXPECT_THAT(tiles, Not(Contains(MatchesTile("", final_url.spec().c_str(), + TileSource::TOP_SITES)))); +} + } // namespace ntp_tiles
diff --git a/chrome/browser/password_manager/password_store_factory.cc b/chrome/browser/password_manager/password_store_factory.cc index 28e50f8..4c5297e3 100644 --- a/chrome/browser/password_manager/password_store_factory.cc +++ b/chrome/browser/password_manager/password_store_factory.cc
@@ -28,6 +28,7 @@ #include "components/os_crypt/os_crypt_switches.h" #include "components/password_manager/core/browser/http_data_cleaner.h" #include "components/password_manager/core/browser/login_database.h" +#include "components/password_manager/core/browser/password_reuse_defines.h" #include "components/password_manager/core/browser/password_store.h" #include "components/password_manager/core/browser/password_store_default.h" #include "components/password_manager/core/browser/password_store_factory_util.h" @@ -58,8 +59,7 @@ #include "chrome/browser/password_manager/password_store_x.h" #endif -#if defined(OS_WIN) || defined(OS_MACOSX) || \ - (defined(OS_LINUX) && !defined(OS_CHROMEOS)) +#if defined(SYNC_PASSWORD_REUSE_DETECTION_ENABLED) #include "chrome/browser/password_manager/password_store_signin_notifier_impl.h" #endif @@ -115,8 +115,7 @@ "PasswordStore", BrowserContextDependencyManager::GetInstance()) { DependsOn(WebDataServiceFactory::GetInstance()); -#if defined(OS_WIN) || defined(OS_MACOSX) || \ - (defined(OS_LINUX) && !defined(OS_CHROMEOS)) +#if defined(SYNC_PASSWORD_REUSE_DETECTION_ENABLED) // TODO(crbug.com/715987). Remove when PasswordReuseDetector is decoupled // from PasswordStore. DependsOn(SigninManagerFactory::GetInstance());
diff --git a/chrome/browser/profiles/avatar_menu.h b/chrome/browser/profiles/avatar_menu.h index bb72593..cada138 100644 --- a/chrome/browser/profiles/avatar_menu.h +++ b/chrome/browser/profiles/avatar_menu.h
@@ -116,7 +116,9 @@ // an item. void EditProfile(size_t index); - // Rebuilds the menu from the cache. + // Rebuilds the menu from the cache. Note: If this is done in response to the + // active browser changing, ActiveBrowserChanged() should be called first to + // update this object's internal state. void RebuildMenu(); // Gets the number of profiles. @@ -136,8 +138,9 @@ // string will be returned. base::string16 GetSupervisedUserInformation() const; - // This menu is also used for the always-present Mac system menubar. If the - // last active browser changes, the menu will need to reference that browser. + // This menu is also used for the always-present Mac and Linux system menubar. + // If the last active browser changes, the menu will need to reference that + // browser. void ActiveBrowserChanged(Browser* browser); // Returns true if the add profile link should be shown.
diff --git a/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_view.mm b/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_view.mm index 947adde1b..12ac67f 100644 --- a/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_view.mm +++ b/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_view.mm
@@ -7,6 +7,7 @@ #include "base/metrics/user_metrics.h" #include "chrome/browser/profiles/profile.h" #import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_controller.h" +#import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_window.h" #import "chrome/browser/ui/cocoa/bookmarks/bookmark_folder_target.h" #import "chrome/browser/ui/cocoa/browser_window_controller.h" #include "components/bookmarks/browser/bookmark_pasteboard_helper_mac.h" @@ -215,4 +216,9 @@ } } +- (void)drawRect:(NSRect)rect { + [[BookmarkBarFolderWindowContentView backgroundColor] set]; + NSRectFill([self bounds]); +} + @end
diff --git a/chrome/browser/ui/views/frame/global_menu_bar_x11.cc b/chrome/browser/ui/views/frame/global_menu_bar_x11.cc index ef4d2f6..af197f3 100644 --- a/chrome/browser/ui/views/frame/global_menu_bar_x11.cc +++ b/chrome/browser/ui/views/frame/global_menu_bar_x11.cc
@@ -712,9 +712,10 @@ } void GlobalMenuBarX11::OnBrowserSetLastActive(Browser* browser) { - // Rebuild the avatar menu so that the items have the correct active state. - avatar_menu_->RebuildMenu(); + // Notify the avatar menu of the change and rebuild the menu. Note: The + // ActiveBrowserChanged() call needs to happen first to update the state. avatar_menu_->ActiveBrowserChanged(browser); + avatar_menu_->RebuildMenu(); RebuildProfilesMenu(); }
diff --git a/chrome/browser/ui/webui/crashes_ui.cc b/chrome/browser/ui/webui/crashes_ui.cc index 730f03d6..684c4aa 100644 --- a/chrome/browser/ui/webui/crashes_ui.cc +++ b/chrome/browser/ui/webui/crashes_ui.cc
@@ -66,8 +66,7 @@ //////////////////////////////////////////////////////////////////////////////// // The handler for Javascript messages for the chrome://crashes/ page. -class CrashesDOMHandler : public WebUIMessageHandler, - public CrashUploadList::Delegate { +class CrashesDOMHandler : public WebUIMessageHandler { public: CrashesDOMHandler(); ~CrashesDOMHandler() override; @@ -75,10 +74,9 @@ // WebUIMessageHandler implementation. void RegisterMessages() override; - // CrashUploadList::Delegate implemenation. - void OnUploadListAvailable() override; - private: + void OnUploadListAvailable(); + // Asynchronously fetches the list of crashes. Called from JS. void HandleRequestCrashes(const base::ListValue* args); @@ -93,7 +91,7 @@ // Asynchronously requests a user triggered upload. Called from JS. void HandleRequestSingleCrashUpload(const base::ListValue* args); - scoped_refptr<CrashUploadList> upload_list_; + scoped_refptr<UploadList> upload_list_; bool list_available_; bool first_load_; @@ -102,15 +100,16 @@ CrashesDOMHandler::CrashesDOMHandler() : list_available_(false), first_load_(true) { - upload_list_ = CreateCrashUploadList(this); + upload_list_ = CreateCrashUploadList(); } CrashesDOMHandler::~CrashesDOMHandler() { - upload_list_->ClearDelegate(); + upload_list_->CancelCallback(); } void CrashesDOMHandler::RegisterMessages() { - upload_list_->LoadUploadListAsynchronously(); + upload_list_->Load(base::BindOnce(&CrashesDOMHandler::OnUploadListAvailable, + base::Unretained(this))); web_ui()->RegisterMessageCallback( crash::kCrashesUIRequestCrashList, base::Bind(&CrashesDOMHandler::HandleRequestCrashes, @@ -136,7 +135,8 @@ UpdateUI(); } else { list_available_ = false; - upload_list_->LoadUploadListAsynchronously(); + upload_list_->Load(base::BindOnce(&CrashesDOMHandler::OnUploadListAvailable, + base::Unretained(this))); } } @@ -215,7 +215,7 @@ IsMetricsReportingPolicyManaged()) { return; } - upload_list_->RequestSingleCrashUploadAsync(local_id); + upload_list_->RequestSingleUploadAsync(local_id); } } // namespace
diff --git a/chrome/browser/ui/webui/flash_ui.cc b/chrome/browser/ui/webui/flash_ui.cc index 451ca50..19b2ec96 100644 --- a/chrome/browser/ui/webui/flash_ui.cc +++ b/chrome/browser/ui/webui/flash_ui.cc
@@ -87,7 +87,6 @@ // The handler for JavaScript messages for the about:flags page. class FlashDOMHandler : public WebUIMessageHandler, - public CrashUploadList::Delegate, public content::GpuDataManagerObserver { public: FlashDOMHandler(); @@ -96,9 +95,6 @@ // WebUIMessageHandler implementation. void RegisterMessages() override; - // CrashUploadList::Delegate implementation. - void OnUploadListAvailable() override; - // GpuDataManager::Observer implementation. void OnGpuInfoUpdate() override; @@ -109,6 +105,9 @@ void OnGotPlugins(const std::vector<content::WebPluginInfo>& plugins); private: + // UploadList callback. + void OnUploadListAvailable(); + // Called when we think we might have enough information to return data back // to the page. void MaybeRespondToPage(); @@ -124,7 +123,7 @@ base::OneShotTimer timeout_; // Crash list. - scoped_refptr<CrashUploadList> upload_list_; + scoped_refptr<UploadList> upload_list_; // Whether the list of all crashes is available. bool crash_list_available_; @@ -146,9 +145,10 @@ has_gpu_info_(false), has_plugin_info_(false), weak_ptr_factory_(this) { - // Request Crash data asynchronously. - upload_list_ = CreateCrashUploadList(this); - upload_list_->LoadUploadListAsynchronously(); + // Request Crash data asynchronously. + upload_list_ = CreateCrashUploadList(); + upload_list_->Load(base::BindOnce(&FlashDOMHandler::OnUploadListAvailable, + weak_ptr_factory_.GetWeakPtr())); // Watch for changes in GPUInfo. GpuDataManager::GetInstance()->AddObserver(this); @@ -157,23 +157,23 @@ // GPU process has not run yet, this will trigger its launch. GpuDataManager::GetInstance()->RequestCompleteGpuInfoIfNeeded(); - // GPU access might not be allowed at all, which will cause us not to get a - // call back. + // GPU access might not be allowed at all, which will cause us not to + // get a call back. if (!GpuDataManager::GetInstance()->GpuAccessAllowed(NULL)) OnGpuInfoUpdate(); PluginService::GetInstance()->GetPlugins(base::Bind( &FlashDOMHandler::OnGotPlugins, weak_ptr_factory_.GetWeakPtr())); - // And lastly, we fire off a timer to make sure we never get stuck at the - // "Loading..." message. + // And lastly, we fire off a timer to make sure we never get stuck at + // the "Loading..." message. timeout_.Start(FROM_HERE, base::TimeDelta::FromMilliseconds(kTimeout), this, &FlashDOMHandler::OnTimeout); } FlashDOMHandler::~FlashDOMHandler() { GpuDataManager::GetInstance()->RemoveObserver(this); - upload_list_->ClearDelegate(); + upload_list_->CancelCallback(); } void FlashDOMHandler::RegisterMessages() { @@ -303,10 +303,10 @@ bool crash_reporting_enabled = ChromeMetricsServiceAccessor::IsMetricsAndCrashReportingEnabled(); if (crash_reporting_enabled) { - std::vector<CrashUploadList::UploadInfo> crashes; + std::vector<UploadList::UploadInfo> crashes; upload_list_->GetUploads(10, &crashes); - for (std::vector<CrashUploadList::UploadInfo>::iterator i = crashes.begin(); + for (std::vector<UploadList::UploadInfo>::iterator i = crashes.begin(); i != crashes.end(); ++i) { base::string16 crash_string(ASCIIToUTF16(i->upload_id)); crash_string += ASCIIToUTF16(" ");
diff --git a/chrome/browser/ui/webui/media/webrtc_logs_ui.cc b/chrome/browser/ui/webui/media/webrtc_logs_ui.cc index 5a3355f..70e7060 100644 --- a/chrome/browser/ui/webui/media/webrtc_logs_ui.cc +++ b/chrome/browser/ui/webui/media/webrtc_logs_ui.cc
@@ -76,8 +76,7 @@ //////////////////////////////////////////////////////////////////////////////// // The handler for Javascript messages for the chrome://webrtc-logs/ page. -class WebRtcLogsDOMHandler : public WebUIMessageHandler, - public UploadList::Delegate { +class WebRtcLogsDOMHandler : public WebUIMessageHandler { public: explicit WebRtcLogsDOMHandler(Profile* profile); ~WebRtcLogsDOMHandler() override; @@ -85,10 +84,9 @@ // WebUIMessageHandler implementation. void RegisterMessages() override; - // UploadList::Delegate implemenation. - void OnUploadListAvailable() override; - private: + void OnUploadListAvailable(); + // Asynchronously fetches the list of upload WebRTC logs. Called from JS. void HandleRequestWebRtcLogs(const base::ListValue* args); @@ -116,15 +114,16 @@ WebRtcLogList::GetWebRtcLogDirectoryForProfile(profile->GetPath())), list_available_(false), js_request_pending_(false) { - upload_list_ = WebRtcLogList::CreateWebRtcLogList(this, profile); + upload_list_ = WebRtcLogList::CreateWebRtcLogList(profile); } WebRtcLogsDOMHandler::~WebRtcLogsDOMHandler() { - upload_list_->ClearDelegate(); + upload_list_->CancelCallback(); } void WebRtcLogsDOMHandler::RegisterMessages() { - upload_list_->LoadUploadListAsynchronously(); + upload_list_->Load(base::BindOnce( + &WebRtcLogsDOMHandler::OnUploadListAvailable, base::Unretained(this))); web_ui()->RegisterMessageCallback("requestWebRtcLogsList", base::Bind(&WebRtcLogsDOMHandler::HandleRequestWebRtcLogs,
diff --git a/chrome/browser/vr/BUILD.gn b/chrome/browser/vr/BUILD.gn new file mode 100644 index 0000000..4ec50df --- /dev/null +++ b/chrome/browser/vr/BUILD.gn
@@ -0,0 +1,156 @@ +# Copyright 2017 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("//chrome/common/features.gni") +import("//device/vr/features/features.gni") +import("//testing/test.gni") + +if (is_android) { + import("//build/config/android/rules.gni") +} + +assert(enable_vr) + +static_library("vr_common") { + sources = [ + "animation.cc", + "animation.h", + "color_scheme.cc", + "color_scheme.h", + "easing.cc", + "easing.h", + "elements/button.cc", + "elements/button.h", + "elements/button_texture.cc", + "elements/button_texture.h", + "elements/close_button_texture.cc", + "elements/close_button_texture.h", + "elements/exclusive_screen_toast.cc", + "elements/exclusive_screen_toast.h", + "elements/exclusive_screen_toast_texture.cc", + "elements/exclusive_screen_toast_texture.h", + "elements/exit_prompt.cc", + "elements/exit_prompt.h", + "elements/exit_prompt_backplane.cc", + "elements/exit_prompt_backplane.h", + "elements/exit_prompt_texture.cc", + "elements/exit_prompt_texture.h", + "elements/exit_warning_texture.cc", + "elements/exit_warning_texture.h", + "elements/insecure_content_permanent_texture.cc", + "elements/insecure_content_permanent_texture.h", + "elements/insecure_content_transient_texture.cc", + "elements/insecure_content_transient_texture.h", + "elements/loading_indicator.cc", + "elements/loading_indicator.h", + "elements/loading_indicator_texture.cc", + "elements/loading_indicator_texture.h", + "elements/render_text_wrapper.cc", + "elements/render_text_wrapper.h", + "elements/screen_dimmer.cc", + "elements/screen_dimmer.h", + "elements/simple_textured_element.h", + "elements/splash_screen_icon.cc", + "elements/splash_screen_icon.h", + "elements/splash_screen_icon_texture.cc", + "elements/splash_screen_icon_texture.h", + "elements/system_indicator.cc", + "elements/system_indicator.h", + "elements/system_indicator_texture.cc", + "elements/system_indicator_texture.h", + "elements/textured_element.cc", + "elements/textured_element.h", + "elements/transience_manager.cc", + "elements/transience_manager.h", + "elements/transient_url_bar.cc", + "elements/transient_url_bar.h", + "elements/ui_element.cc", + "elements/ui_element.h", + "elements/ui_element_debug_id.h", + "elements/ui_texture.cc", + "elements/ui_texture.h", + "elements/url_bar.cc", + "elements/url_bar.h", + "elements/url_bar_texture.cc", + "elements/url_bar_texture.h", + "font_fallback.cc", + "font_fallback.h", + "fps_meter.cc", + "fps_meter.h", + "gltf_asset.cc", + "gltf_asset.h", + "gltf_parser.cc", + "gltf_parser.h", + "toolbar_helper.cc", + "toolbar_helper.h", + "toolbar_state.cc", + "toolbar_state.h", + "ui_browser_interface.h", + "ui_input_manager.cc", + "ui_input_manager.h", + "ui_interface.h", + "ui_scene.cc", + "ui_scene.h", + "ui_scene_manager.cc", + "ui_scene_manager.h", + "ui_unsupported_mode.h", + ] + + deps = [ + "//base", + "//cc/paint", + "//chrome/app:generated_resources", + "//components/security_state/core", + "//components/strings", + "//components/toolbar", + "//components/url_formatter", + "//components/vector_icons", + "//skia", + "//ui/base", + "//ui/display", + "//ui/gl", + "//ui/gl/init", + "//ui/vector_icons", + ] +} + +test("vr_common_unittests") { + sources = [ + "elements/close_button_texture_unittest.cc", + "elements/exit_prompt_unittest.cc", + "elements/transience_manager_unittest.cc", + "elements/ui_element_unittest.cc", + "elements/url_bar_texture_unittest.cc", + "fps_meter_unittest.cc", + "gltf_parser_unittest.cc", + "run_all_unittests.cc", + "test/paths.cc", + "test/paths.h", + "ui_scene_manager_unittest.cc", + "ui_scene_unittest.cc", + ] + + deps = [ + ":vr_common", + "//base/test:test_support", + "//components:components_tests_pak", + "//components/security_state/core", + "//components/toolbar:vector_icons", + "//skia", + "//testing/gmock", + "//testing/gtest", + "//ui/gfx:test_support", + "//ui/gfx/geometry", + "//ui/gl", + ] + + if (is_android) { + deps += [ "//ui/android:ui_java" ] + } + + data = [ + "test/data/", + "$root_out_dir/components_tests_resources.pak", + ] +}
diff --git a/chrome/browser/vr/OWNERS b/chrome/browser/vr/OWNERS new file mode 100644 index 0000000..f388bb38 --- /dev/null +++ b/chrome/browser/vr/OWNERS
@@ -0,0 +1,7 @@ +bajones@chromium.org +bshe@chromium.org +mthiesse@chromium.org +cjgrant@chromium.org +vollick@chromium.org + +# COMPONENT: UI>Browser>VR
diff --git a/chrome/browser/vr/PRESUBMIT.py b/chrome/browser/vr/PRESUBMIT.py new file mode 100644 index 0000000..69da4ae1 --- /dev/null +++ b/chrome/browser/vr/PRESUBMIT.py
@@ -0,0 +1,41 @@ +# Copyright 2017 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. + +"""Presubmit script for changes affecting chrome/browser/vr + +See http://dev.chromium.org/developers/how-tos/depottools/presubmit-scripts +for more details about the presubmit API built into depot_tools. +""" + +import re + +# chrome/PRESUBMIT.py blocks several linters due to the infeasibility of +# enforcing them on a large codebase. Here we'll start by enforcing all +# linters, and add exclusions if necessary. +# +# Note that this list must be non-empty, or cpplint will use its default set of +# filters. +LINT_FILTERS = [ + '-build/include', +] + +VERBOSITY_LEVEL = 4 + +INCLUDE_CPP_FILES_ONLY = (r'.*\.(cc|h)$',) + +def _CheckChangeLintsClean(input_api, output_api): + sources = lambda x: input_api.FilterSourceFile( + x, white_list=INCLUDE_CPP_FILES_ONLY) + return input_api.canned_checks.CheckChangeLintsClean( + input_api, output_api, sources, LINT_FILTERS, VERBOSITY_LEVEL) + +def CheckChangeOnUpload(input_api, output_api): + results = [] + results.extend(_CheckChangeLintsClean(input_api, output_api)) + return results + +def CheckChangeOnCommit(input_api, output_api): + results = [] + results.extend(_CheckChangeLintsClean(input_api, output_api)) + return results
diff --git a/chrome/browser/android/vr_shell/animation.cc b/chrome/browser/vr/animation.cc similarity index 81% rename from chrome/browser/android/vr_shell/animation.cc rename to chrome/browser/vr/animation.cc index d193def6..53483a2 100644 --- a/chrome/browser/android/vr_shell/animation.cc +++ b/chrome/browser/vr/animation.cc
@@ -2,13 +2,13 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/android/vr_shell/animation.h" +#include "chrome/browser/vr/animation.h" #include <utility> -#include "chrome/browser/android/vr_shell/easing.h" +#include "chrome/browser/vr/easing.h" -namespace vr_shell { +namespace vr { Animation::Animation(int id, Property property, @@ -27,4 +27,4 @@ Animation::~Animation() {} -} // namespace vr_shell +} // namespace vr
diff --git a/chrome/browser/android/vr_shell/animation.h b/chrome/browser/vr/animation.h similarity index 84% rename from chrome/browser/android/vr_shell/animation.h rename to chrome/browser/vr/animation.h index db062bbc..9ab84b32 100644 --- a/chrome/browser/android/vr_shell/animation.h +++ b/chrome/browser/vr/animation.h
@@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CHROME_BROWSER_ANDROID_VR_SHELL_ANIMATION_H_ -#define CHROME_BROWSER_ANDROID_VR_SHELL_ANIMATION_H_ +#ifndef CHROME_BROWSER_VR_ANIMATION_H_ +#define CHROME_BROWSER_VR_ANIMATION_H_ #include <memory> #include <vector> @@ -11,7 +11,7 @@ #include "base/macros.h" #include "base/time/time.h" -namespace vr_shell { +namespace vr { namespace easing { class Easing; @@ -51,6 +51,6 @@ DISALLOW_COPY_AND_ASSIGN(Animation); }; -} // namespace vr_shell +} // namespace vr -#endif // CHROME_BROWSER_ANDROID_VR_SHELL_ANIMATION_H_ +#endif // CHROME_BROWSER_VR_ANIMATION_H_
diff --git a/chrome/browser/android/vr_shell/color_scheme.cc b/chrome/browser/vr/color_scheme.cc similarity index 97% rename from chrome/browser/android/vr_shell/color_scheme.cc rename to chrome/browser/vr/color_scheme.cc index c65da25d..c55635f 100644 --- a/chrome/browser/android/vr_shell/color_scheme.cc +++ b/chrome/browser/vr/color_scheme.cc
@@ -2,11 +2,11 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/android/vr_shell/color_scheme.h" +#include "chrome/browser/vr/color_scheme.h" #include "ui/gfx/color_palette.h" -namespace vr_shell { +namespace vr { namespace { @@ -132,4 +132,4 @@ return kColorSchemes[static_cast<int>(mode)]; } -} // namespace vr_shell +} // namespace vr
diff --git a/chrome/browser/android/vr_shell/color_scheme.h b/chrome/browser/vr/color_scheme.h similarity index 91% rename from chrome/browser/android/vr_shell/color_scheme.h rename to chrome/browser/vr/color_scheme.h index ccefb8bb..afafcba 100644 --- a/chrome/browser/android/vr_shell/color_scheme.h +++ b/chrome/browser/vr/color_scheme.h
@@ -2,12 +2,12 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CHROME_BROWSER_ANDROID_VR_SHELL_COLOR_SCHEME_H_ -#define CHROME_BROWSER_ANDROID_VR_SHELL_COLOR_SCHEME_H_ +#ifndef CHROME_BROWSER_VR_COLOR_SCHEME_H_ +#define CHROME_BROWSER_VR_COLOR_SCHEME_H_ #include "third_party/skia/include/core/SkColor.h" -namespace vr_shell { +namespace vr { struct ColorScheme { enum Mode : int { @@ -83,6 +83,6 @@ SkColor splash_screen_background; }; -} // namespace vr_shell +} // namespace vr -#endif // CHROME_BROWSER_ANDROID_VR_SHELL_COLOR_SCHEME_H_ +#endif // CHROME_BROWSER_VR_COLOR_SCHEME_H_
diff --git a/chrome/browser/android/vr_shell/easing.cc b/chrome/browser/vr/easing.cc similarity index 92% rename from chrome/browser/android/vr_shell/easing.cc rename to chrome/browser/vr/easing.cc index 137bcb5f..5e1c896 100644 --- a/chrome/browser/android/vr_shell/easing.cc +++ b/chrome/browser/vr/easing.cc
@@ -2,13 +2,13 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/android/vr_shell/easing.h" +#include "chrome/browser/vr/easing.h" #include <cmath> #include "base/logging.h" -namespace vr_shell { +namespace vr { namespace easing { double Easing::CalculateValue(double input) { @@ -47,4 +47,4 @@ } } // namespace easing -} // namespace vr_shell +} // namespace vr
diff --git a/chrome/browser/android/vr_shell/easing.h b/chrome/browser/vr/easing.h similarity index 90% rename from chrome/browser/android/vr_shell/easing.h rename to chrome/browser/vr/easing.h index 0698154..6278184d 100644 --- a/chrome/browser/android/vr_shell/easing.h +++ b/chrome/browser/vr/easing.h
@@ -2,13 +2,13 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CHROME_BROWSER_ANDROID_VR_SHELL_EASING_H_ -#define CHROME_BROWSER_ANDROID_VR_SHELL_EASING_H_ +#ifndef CHROME_BROWSER_VR_EASING_H_ +#define CHROME_BROWSER_VR_EASING_H_ #include "base/macros.h" #include "ui/gfx/geometry/cubic_bezier.h" -namespace vr_shell { +namespace vr { namespace easing { enum EasingType { @@ -91,6 +91,6 @@ }; } // namespace easing -} // namespace vr_shell +} // namespace vr -#endif // CHROME_BROWSER_ANDROID_VR_SHELL_EASING_H_ +#endif // CHROME_BROWSER_VR_EASING_H_
diff --git a/chrome/browser/android/vr_shell/ui_elements/button.cc b/chrome/browser/vr/elements/button.cc similarity index 88% rename from chrome/browser/android/vr_shell/ui_elements/button.cc rename to chrome/browser/vr/elements/button.cc index 0f300aa..3214e0c8 100644 --- a/chrome/browser/android/vr_shell/ui_elements/button.cc +++ b/chrome/browser/vr/elements/button.cc
@@ -2,13 +2,13 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/android/vr_shell/ui_elements/button.h" +#include "chrome/browser/vr/elements/button.h" #include "base/memory/ptr_util.h" -#include "chrome/browser/android/vr_shell/textures/button_texture.h" +#include "chrome/browser/vr/elements/button_texture.h" #include "ui/gfx/geometry/point_f.h" -namespace vr_shell { +namespace vr { Button::Button(base::Callback<void()> click_handler, std::unique_ptr<ButtonTexture> texture) @@ -60,4 +60,4 @@ UpdateTexture(); } -} // namespace vr_shell +} // namespace vr
diff --git a/chrome/browser/android/vr_shell/ui_elements/button.h b/chrome/browser/vr/elements/button.h similarity index 76% rename from chrome/browser/android/vr_shell/ui_elements/button.h rename to chrome/browser/vr/elements/button.h index 923c6e5..e16d68d3 100644 --- a/chrome/browser/android/vr_shell/ui_elements/button.h +++ b/chrome/browser/vr/elements/button.h
@@ -2,20 +2,20 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CHROME_BROWSER_ANDROID_VR_SHELL_UI_ELEMENTS_BUTTON_H_ -#define CHROME_BROWSER_ANDROID_VR_SHELL_UI_ELEMENTS_BUTTON_H_ +#ifndef CHROME_BROWSER_VR_ELEMENTS_BUTTON_H_ +#define CHROME_BROWSER_VR_ELEMENTS_BUTTON_H_ #include <memory> #include "base/callback.h" #include "base/macros.h" -#include "chrome/browser/android/vr_shell/ui_elements/textured_element.h" +#include "chrome/browser/vr/elements/textured_element.h" namespace gfx { class PointF; -} // gfx +} // namespace gfx -namespace vr_shell { +namespace vr { class ButtonTexture; @@ -43,6 +43,6 @@ DISALLOW_COPY_AND_ASSIGN(Button); }; -} // namespace vr_shell +} // namespace vr -#endif // CHROME_BROWSER_ANDROID_VR_SHELL_UI_ELEMENTS_BUTTON_H_ +#endif // CHROME_BROWSER_VR_ELEMENTS_BUTTON_H_
diff --git a/chrome/browser/android/vr_shell/textures/button_texture.cc b/chrome/browser/vr/elements/button_texture.cc similarity index 82% rename from chrome/browser/android/vr_shell/textures/button_texture.cc rename to chrome/browser/vr/elements/button_texture.cc index 3d3ff690..cb63abb 100644 --- a/chrome/browser/android/vr_shell/textures/button_texture.cc +++ b/chrome/browser/vr/elements/button_texture.cc
@@ -2,9 +2,9 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/android/vr_shell/textures/button_texture.h" +#include "chrome/browser/vr/elements/button_texture.h" -namespace vr_shell { +namespace vr { ButtonTexture::ButtonTexture() = default; @@ -26,4 +26,4 @@ hovered_ = hovered; } -} // namespace vr_shell +} // namespace vr
diff --git a/chrome/browser/android/vr_shell/textures/button_texture.h b/chrome/browser/vr/elements/button_texture.h similarity index 62% rename from chrome/browser/android/vr_shell/textures/button_texture.h rename to chrome/browser/vr/elements/button_texture.h index 806c02d9..de10ce9 100644 --- a/chrome/browser/android/vr_shell/textures/button_texture.h +++ b/chrome/browser/vr/elements/button_texture.h
@@ -2,12 +2,12 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CHROME_BROWSER_ANDROID_VR_SHELL_TEXTURES_BUTTON_TEXTURE_H_ -#define CHROME_BROWSER_ANDROID_VR_SHELL_TEXTURES_BUTTON_TEXTURE_H_ +#ifndef CHROME_BROWSER_VR_ELEMENTS_BUTTON_TEXTURE_H_ +#define CHROME_BROWSER_VR_ELEMENTS_BUTTON_TEXTURE_H_ -#include "chrome/browser/android/vr_shell/textures/ui_texture.h" +#include "chrome/browser/vr/elements/ui_texture.h" -namespace vr_shell { +namespace vr { class ButtonTexture : public UiTexture { public: @@ -26,6 +26,6 @@ bool hovered_ = false; }; -} // namespace vr_shell +} // namespace vr -#endif // CHROME_BROWSER_ANDROID_VR_SHELL_TEXTURES_BUTTON_TEXTURE_H_ +#endif // CHROME_BROWSER_VR_ELEMENTS_BUTTON_TEXTURE_H_
diff --git a/chrome/browser/android/vr_shell/textures/close_button_texture.cc b/chrome/browser/vr/elements/close_button_texture.cc similarity index 89% rename from chrome/browser/android/vr_shell/textures/close_button_texture.cc rename to chrome/browser/vr/elements/close_button_texture.cc index 7b57e21..1625b58 100644 --- a/chrome/browser/android/vr_shell/textures/close_button_texture.cc +++ b/chrome/browser/vr/elements/close_button_texture.cc
@@ -2,11 +2,11 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/android/vr_shell/textures/close_button_texture.h" +#include "chrome/browser/vr/elements/close_button_texture.h" #include "cc/paint/skia_paint_canvas.h" -#include "chrome/browser/android/vr_shell/color_scheme.h" -#include "chrome/browser/android/vr_shell/ui_elements/button.h" +#include "chrome/browser/vr/color_scheme.h" +#include "chrome/browser/vr/elements/button.h" #include "ui/gfx/canvas.h" #include "ui/gfx/geometry/point_f.h" #include "ui/gfx/geometry/rect.h" @@ -15,7 +15,7 @@ #include "ui/gfx/vector_icon_types.h" #include "ui/vector_icons/vector_icons.h" -namespace vr_shell { +namespace vr { namespace { @@ -65,4 +65,4 @@ return (point - gfx::PointF(0.5, 0.5)).LengthSquared() < 0.25; } -} // namespace vr_shell +} // namespace vr
diff --git a/chrome/browser/android/vr_shell/textures/close_button_texture.h b/chrome/browser/vr/elements/close_button_texture.h similarity index 64% rename from chrome/browser/android/vr_shell/textures/close_button_texture.h rename to chrome/browser/vr/elements/close_button_texture.h index 4bd4a0b..fd54f86 100644 --- a/chrome/browser/android/vr_shell/textures/close_button_texture.h +++ b/chrome/browser/vr/elements/close_button_texture.h
@@ -2,16 +2,16 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CHROME_BROWSER_ANDROID_VR_SHELL_TEXTURES_CLOSE_BUTTON_TEXTURE_H_ -#define CHROME_BROWSER_ANDROID_VR_SHELL_TEXTURES_CLOSE_BUTTON_TEXTURE_H_ +#ifndef CHROME_BROWSER_VR_ELEMENTS_CLOSE_BUTTON_TEXTURE_H_ +#define CHROME_BROWSER_VR_ELEMENTS_CLOSE_BUTTON_TEXTURE_H_ -#include "chrome/browser/android/vr_shell/textures/button_texture.h" +#include "chrome/browser/vr/elements/button_texture.h" namespace gfx { class PointF; } // namespace gfx -namespace vr_shell { +namespace vr { class CloseButtonTexture : public ButtonTexture { public: @@ -27,6 +27,6 @@ gfx::SizeF size_; }; -} // namespace vr_shell +} // namespace vr -#endif // CHROME_BROWSER_ANDROID_VR_SHELL_TEXTURES_CLOSE_BUTTON_TEXTURE_H_ +#endif // CHROME_BROWSER_VR_ELEMENTS_CLOSE_BUTTON_TEXTURE_H_
diff --git a/chrome/browser/android/vr_shell/textures/close_button_texture_unittest.cc b/chrome/browser/vr/elements/close_button_texture_unittest.cc similarity index 86% rename from chrome/browser/android/vr_shell/textures/close_button_texture_unittest.cc rename to chrome/browser/vr/elements/close_button_texture_unittest.cc index ffbb73df..68c2588 100644 --- a/chrome/browser/android/vr_shell/textures/close_button_texture_unittest.cc +++ b/chrome/browser/vr/elements/close_button_texture_unittest.cc
@@ -2,13 +2,13 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/android/vr_shell/textures/close_button_texture.h" +#include "chrome/browser/vr/elements/close_button_texture.h" #include "base/memory/ptr_util.h" #include "testing/gtest/include/gtest/gtest.h" #include "ui/gfx/geometry/point_f.h" -namespace vr_shell { +namespace vr { TEST(CloseButtonTextureTest, HitTest) { auto button = base::MakeUnique<CloseButtonTexture>(); @@ -28,4 +28,4 @@ } } -} // namespace vr_shell +} // namespace vr
diff --git a/chrome/browser/android/vr_shell/ui_elements/exclusive_screen_toast.cc b/chrome/browser/vr/elements/exclusive_screen_toast.cc similarity index 74% rename from chrome/browser/android/vr_shell/ui_elements/exclusive_screen_toast.cc rename to chrome/browser/vr/elements/exclusive_screen_toast.cc index 1cffe56..374de5e 100644 --- a/chrome/browser/android/vr_shell/ui_elements/exclusive_screen_toast.cc +++ b/chrome/browser/vr/elements/exclusive_screen_toast.cc
@@ -2,12 +2,12 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/android/vr_shell/ui_elements/exclusive_screen_toast.h" +#include "chrome/browser/vr/elements/exclusive_screen_toast.h" -#include "chrome/browser/android/vr_shell/textures/ui_texture.h" -#include "chrome/browser/android/vr_shell/ui_elements/textured_element.h" +#include "chrome/browser/vr/elements/textured_element.h" +#include "chrome/browser/vr/elements/ui_texture.h" -namespace vr_shell { +namespace vr { ExclusiveScreenToast::ExclusiveScreenToast(int preferred_width, const base::TimeDelta& timeout) @@ -23,4 +23,4 @@ set_size({width, size().y(), 1}); } -} // namespace vr_shell +} // namespace vr
diff --git a/chrome/browser/vr/elements/exclusive_screen_toast.h b/chrome/browser/vr/elements/exclusive_screen_toast.h new file mode 100644 index 0000000..298d70cf --- /dev/null +++ b/chrome/browser/vr/elements/exclusive_screen_toast.h
@@ -0,0 +1,28 @@ +// Copyright 2017 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROME_BROWSER_VR_ELEMENTS_EXCLUSIVE_SCREEN_TOAST_H_ +#define CHROME_BROWSER_VR_ELEMENTS_EXCLUSIVE_SCREEN_TOAST_H_ + +#include "base/macros.h" +#include "chrome/browser/vr/elements/exclusive_screen_toast_texture.h" +#include "chrome/browser/vr/elements/simple_textured_element.h" + +namespace vr { + +class ExclusiveScreenToast + : public TransientSimpleTexturedElement<ExclusiveScreenToastTexture> { + public: + ExclusiveScreenToast(int preferred_width, const base::TimeDelta& timeout); + ~ExclusiveScreenToast() override; + + private: + void UpdateElementSize() override; + + DISALLOW_COPY_AND_ASSIGN(ExclusiveScreenToast); +}; + +} // namespace vr + +#endif // CHROME_BROWSER_VR_ELEMENTS_EXCLUSIVE_SCREEN_TOAST_H_
diff --git a/chrome/browser/android/vr_shell/textures/exclusive_screen_toast_texture.cc b/chrome/browser/vr/elements/exclusive_screen_toast_texture.cc similarity index 94% rename from chrome/browser/android/vr_shell/textures/exclusive_screen_toast_texture.cc rename to chrome/browser/vr/elements/exclusive_screen_toast_texture.cc index 045fbb91..0b5379c 100644 --- a/chrome/browser/android/vr_shell/textures/exclusive_screen_toast_texture.cc +++ b/chrome/browser/vr/elements/exclusive_screen_toast_texture.cc
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/android/vr_shell/textures/exclusive_screen_toast_texture.h" +#include "chrome/browser/vr/elements/exclusive_screen_toast_texture.h" #include "cc/paint/skia_paint_canvas.h" #include "chrome/grit/generated_resources.h" @@ -13,7 +13,7 @@ #include "ui/gfx/geometry/vector2d.h" #include "ui/gfx/render_text.h" -namespace vr_shell { +namespace vr { namespace { @@ -75,4 +75,4 @@ return size_; } -} // namespace vr_shell +} // namespace vr
diff --git a/chrome/browser/android/vr_shell/textures/exclusive_screen_toast_texture.h b/chrome/browser/vr/elements/exclusive_screen_toast_texture.h similarity index 62% rename from chrome/browser/android/vr_shell/textures/exclusive_screen_toast_texture.h rename to chrome/browser/vr/elements/exclusive_screen_toast_texture.h index 6f7a49cc..0cafe33 100644 --- a/chrome/browser/android/vr_shell/textures/exclusive_screen_toast_texture.h +++ b/chrome/browser/vr/elements/exclusive_screen_toast_texture.h
@@ -2,13 +2,13 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CHROME_BROWSER_ANDROID_VR_SHELL_TEXTURES_EXCLUSIVE_SCREEN_TOAST_TEXTURE_H_ -#define CHROME_BROWSER_ANDROID_VR_SHELL_TEXTURES_EXCLUSIVE_SCREEN_TOAST_TEXTURE_H_ +#ifndef CHROME_BROWSER_VR_ELEMENTS_EXCLUSIVE_SCREEN_TOAST_TEXTURE_H_ +#define CHROME_BROWSER_VR_ELEMENTS_EXCLUSIVE_SCREEN_TOAST_TEXTURE_H_ #include "base/macros.h" -#include "chrome/browser/android/vr_shell/textures/ui_texture.h" +#include "chrome/browser/vr/elements/ui_texture.h" -namespace vr_shell { +namespace vr { class ExclusiveScreenToastTexture : public UiTexture { public: @@ -25,6 +25,6 @@ DISALLOW_COPY_AND_ASSIGN(ExclusiveScreenToastTexture); }; -} // namespace vr_shell +} // namespace vr -#endif // CHROME_BROWSER_ANDROID_VR_SHELL_TEXTURES_EXCLUSIVE_SCREEN_TOAST_TEXTURE_H_ +#endif // CHROME_BROWSER_VR_ELEMENTS_EXCLUSIVE_SCREEN_TOAST_TEXTURE_H_
diff --git a/chrome/browser/android/vr_shell/ui_elements/exit_prompt.cc b/chrome/browser/vr/elements/exit_prompt.cc similarity index 92% rename from chrome/browser/android/vr_shell/ui_elements/exit_prompt.cc rename to chrome/browser/vr/elements/exit_prompt.cc index 909fd593..5d99491 100644 --- a/chrome/browser/android/vr_shell/ui_elements/exit_prompt.cc +++ b/chrome/browser/vr/elements/exit_prompt.cc
@@ -2,12 +2,12 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/android/vr_shell/ui_elements/exit_prompt.h" +#include "chrome/browser/vr/elements/exit_prompt.h" #include "base/memory/ptr_util.h" -#include "chrome/browser/android/vr_shell/textures/exit_prompt_texture.h" +#include "chrome/browser/vr/elements/exit_prompt_texture.h" -namespace vr_shell { +namespace vr { ExitPrompt::ExitPrompt(int preferred_width, const base::Callback<void()>& primary_button_callback, @@ -72,4 +72,4 @@ return texture_.get(); } -} // namespace vr_shell +} // namespace vr
diff --git a/chrome/browser/android/vr_shell/ui_elements/exit_prompt.h b/chrome/browser/vr/elements/exit_prompt.h similarity index 78% rename from chrome/browser/android/vr_shell/ui_elements/exit_prompt.h rename to chrome/browser/vr/elements/exit_prompt.h index 51d44da7..982aebe 100644 --- a/chrome/browser/android/vr_shell/ui_elements/exit_prompt.h +++ b/chrome/browser/vr/elements/exit_prompt.h
@@ -2,16 +2,16 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CHROME_BROWSER_ANDROID_VR_SHELL_UI_ELEMENTS_EXIT_PROMPT_H_ -#define CHROME_BROWSER_ANDROID_VR_SHELL_UI_ELEMENTS_EXIT_PROMPT_H_ +#ifndef CHROME_BROWSER_VR_ELEMENTS_EXIT_PROMPT_H_ +#define CHROME_BROWSER_VR_ELEMENTS_EXIT_PROMPT_H_ #include <memory> #include "base/callback.h" #include "base/macros.h" -#include "chrome/browser/android/vr_shell/ui_elements/textured_element.h" +#include "chrome/browser/vr/elements/textured_element.h" -namespace vr_shell { +namespace vr { class ExitPromptTexture; @@ -46,6 +46,6 @@ DISALLOW_COPY_AND_ASSIGN(ExitPrompt); }; -} // namespace vr_shell +} // namespace vr -#endif // CHROME_BROWSER_ANDROID_VR_SHELL_UI_ELEMENTS_EXIT_PROMPT_H_ +#endif // CHROME_BROWSER_VR_ELEMENTS_EXIT_PROMPT_H_
diff --git a/chrome/browser/android/vr_shell/ui_elements/exit_prompt_backplane.cc b/chrome/browser/vr/elements/exit_prompt_backplane.cc similarity index 86% rename from chrome/browser/android/vr_shell/ui_elements/exit_prompt_backplane.cc rename to chrome/browser/vr/elements/exit_prompt_backplane.cc index 6dcd5a8..de9133e 100644 --- a/chrome/browser/android/vr_shell/ui_elements/exit_prompt_backplane.cc +++ b/chrome/browser/vr/elements/exit_prompt_backplane.cc
@@ -2,11 +2,11 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/android/vr_shell/ui_elements/exit_prompt_backplane.h" +#include "chrome/browser/vr/elements/exit_prompt_backplane.h" #include "base/memory/ptr_util.h" -namespace vr_shell { +namespace vr { ExitPromptBackplane::ExitPromptBackplane( const base::Callback<void()>& click_callback) @@ -22,4 +22,4 @@ click_callback_.Run(); } -} // namespace vr_shell +} // namespace vr
diff --git a/chrome/browser/android/vr_shell/ui_elements/exit_prompt_backplane.h b/chrome/browser/vr/elements/exit_prompt_backplane.h similarity index 65% rename from chrome/browser/android/vr_shell/ui_elements/exit_prompt_backplane.h rename to chrome/browser/vr/elements/exit_prompt_backplane.h index 8b9f7cb..d6aff604 100644 --- a/chrome/browser/android/vr_shell/ui_elements/exit_prompt_backplane.h +++ b/chrome/browser/vr/elements/exit_prompt_backplane.h
@@ -2,13 +2,13 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CHROME_BROWSER_ANDROID_VR_SHELL_UI_ELEMENTS_EXIT_PROMPT_BACKPLANE_H_ -#define CHROME_BROWSER_ANDROID_VR_SHELL_UI_ELEMENTS_EXIT_PROMPT_BACKPLANE_H_ +#ifndef CHROME_BROWSER_VR_ELEMENTS_EXIT_PROMPT_BACKPLANE_H_ +#define CHROME_BROWSER_VR_ELEMENTS_EXIT_PROMPT_BACKPLANE_H_ #include "base/callback.h" -#include "chrome/browser/android/vr_shell/ui_elements/ui_element.h" +#include "chrome/browser/vr/elements/ui_element.h" -namespace vr_shell { +namespace vr { // An invisible but hittable plane behind the exit prompt, to keep the reticle // roughly planar with the prompt when its near the prompt. @@ -25,6 +25,6 @@ DISALLOW_COPY_AND_ASSIGN(ExitPromptBackplane); }; -} // namespace vr_shell +} // namespace vr -#endif // CHROME_BROWSER_ANDROID_VR_SHELL_UI_ELEMENTS_EXIT_PROMPT_BACKPLANE_H_ +#endif // CHROME_BROWSER_VR_ELEMENTS_EXIT_PROMPT_BACKPLANE_H_
diff --git a/chrome/browser/android/vr_shell/textures/exit_prompt_texture.cc b/chrome/browser/vr/elements/exit_prompt_texture.cc similarity index 96% rename from chrome/browser/android/vr_shell/textures/exit_prompt_texture.cc rename to chrome/browser/vr/elements/exit_prompt_texture.cc index 52d59558..166c7c1 100644 --- a/chrome/browser/android/vr_shell/textures/exit_prompt_texture.cc +++ b/chrome/browser/vr/elements/exit_prompt_texture.cc
@@ -2,10 +2,10 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/android/vr_shell/textures/exit_prompt_texture.h" +#include "chrome/browser/vr/elements/exit_prompt_texture.h" #include "cc/paint/skia_paint_canvas.h" -#include "chrome/browser/android/vr_shell/color_scheme.h" +#include "chrome/browser/vr/color_scheme.h" #include "chrome/grit/generated_resources.h" #include "components/strings/grit/components_strings.h" #include "ui/base/l10n/l10n_util.h" @@ -15,7 +15,7 @@ #include "ui/gfx/geometry/vector2d.h" #include "ui/gfx/render_text.h" -namespace vr_shell { +namespace vr { namespace { @@ -171,4 +171,4 @@ return size_; } -} // namespace vr_shell +} // namespace vr
diff --git a/chrome/browser/android/vr_shell/textures/exit_prompt_texture.h b/chrome/browser/vr/elements/exit_prompt_texture.h similarity index 80% rename from chrome/browser/android/vr_shell/textures/exit_prompt_texture.h rename to chrome/browser/vr/elements/exit_prompt_texture.h index 8a64040..55341f7 100644 --- a/chrome/browser/android/vr_shell/textures/exit_prompt_texture.h +++ b/chrome/browser/vr/elements/exit_prompt_texture.h
@@ -2,18 +2,18 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CHROME_BROWSER_ANDROID_VR_SHELL_TEXTURES_EXIT_PROMPT_TEXTURE_H_ -#define CHROME_BROWSER_ANDROID_VR_SHELL_TEXTURES_EXIT_PROMPT_TEXTURE_H_ +#ifndef CHROME_BROWSER_VR_ELEMENTS_EXIT_PROMPT_TEXTURE_H_ +#define CHROME_BROWSER_VR_ELEMENTS_EXIT_PROMPT_TEXTURE_H_ #include "base/macros.h" -#include "chrome/browser/android/vr_shell/textures/ui_texture.h" +#include "chrome/browser/vr/elements/ui_texture.h" #include "ui/gfx/geometry/rect_f.h" namespace gfx { class PointF; } // namespace gfx -namespace vr_shell { +namespace vr { class ExitPromptTexture : public UiTexture { public: @@ -50,6 +50,6 @@ DISALLOW_COPY_AND_ASSIGN(ExitPromptTexture); }; -} // namespace vr_shell +} // namespace vr -#endif // CHROME_BROWSER_ANDROID_VR_SHELL_TEXTURES_EXIT_PROMPT_TEXTURE_H_ +#endif // CHROME_BROWSER_VR_ELEMENTS_EXIT_PROMPT_TEXTURE_H_
diff --git a/chrome/browser/android/vr_shell/ui_elements/exit_prompt_unittest.cc b/chrome/browser/vr/elements/exit_prompt_unittest.cc similarity index 94% rename from chrome/browser/android/vr_shell/ui_elements/exit_prompt_unittest.cc rename to chrome/browser/vr/elements/exit_prompt_unittest.cc index 8d651168..e38036f 100644 --- a/chrome/browser/android/vr_shell/ui_elements/exit_prompt_unittest.cc +++ b/chrome/browser/vr/elements/exit_prompt_unittest.cc
@@ -2,19 +2,19 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/android/vr_shell/ui_elements/exit_prompt.h" +#include "chrome/browser/vr/elements/exit_prompt.h" #include "base/bind.h" #include "base/macros.h" #include "base/memory/ptr_util.h" -#include "chrome/browser/android/vr_shell/textures/exit_prompt_texture.h" +#include "chrome/browser/vr/elements/exit_prompt_texture.h" #include "testing/gmock/include/gmock/gmock.h" #include "testing/gtest/include/gtest/gtest.h" #include "ui/gfx/test/gfx_util.h" using ::testing::Return; -namespace vr_shell { +namespace vr { namespace { @@ -99,4 +99,4 @@ EXPECT_TRUE(prompt.secondary_button_pressed()); } -} // namespace vr_shell +} // namespace vr
diff --git a/chrome/browser/android/vr_shell/textures/exit_warning_texture.cc b/chrome/browser/vr/elements/exit_warning_texture.cc similarity index 94% rename from chrome/browser/android/vr_shell/textures/exit_warning_texture.cc rename to chrome/browser/vr/elements/exit_warning_texture.cc index b74a3302..746430f4 100644 --- a/chrome/browser/android/vr_shell/textures/exit_warning_texture.cc +++ b/chrome/browser/vr/elements/exit_warning_texture.cc
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/android/vr_shell/textures/exit_warning_texture.h" +#include "chrome/browser/vr/elements/exit_warning_texture.h" #include "cc/paint/skia_paint_canvas.h" #include "components/strings/grit/components_strings.h" @@ -16,7 +16,7 @@ #include "ui/gfx/vector_icon_types.h" #include "ui/vector_icons/vector_icons.h" -namespace vr_shell { +namespace vr { namespace { @@ -73,4 +73,4 @@ return size_; } -} // namespace vr_shell +} // namespace vr
diff --git a/chrome/browser/android/vr_shell/textures/exit_warning_texture.h b/chrome/browser/vr/elements/exit_warning_texture.h similarity index 63% rename from chrome/browser/android/vr_shell/textures/exit_warning_texture.h rename to chrome/browser/vr/elements/exit_warning_texture.h index 53dfc8e..9c4d60e 100644 --- a/chrome/browser/android/vr_shell/textures/exit_warning_texture.h +++ b/chrome/browser/vr/elements/exit_warning_texture.h
@@ -2,13 +2,13 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CHROME_BROWSER_ANDROID_VR_SHELL_TEXTURES_EXIT_WARNING_TEXTURE_H_ -#define CHROME_BROWSER_ANDROID_VR_SHELL_TEXTURES_EXIT_WARNING_TEXTURE_H_ +#ifndef CHROME_BROWSER_VR_ELEMENTS_EXIT_WARNING_TEXTURE_H_ +#define CHROME_BROWSER_VR_ELEMENTS_EXIT_WARNING_TEXTURE_H_ #include "base/macros.h" -#include "chrome/browser/android/vr_shell/textures/ui_texture.h" +#include "chrome/browser/vr/elements/ui_texture.h" -namespace vr_shell { +namespace vr { class ExitWarningTexture : public UiTexture { public: @@ -25,6 +25,6 @@ DISALLOW_COPY_AND_ASSIGN(ExitWarningTexture); }; -} // namespace vr_shell +} // namespace vr -#endif // CHROME_BROWSER_ANDROID_VR_SHELL_TEXTURES_EXIT_WARNING_TEXTURE_H_ +#endif // CHROME_BROWSER_VR_ELEMENTS_EXIT_WARNING_TEXTURE_H_
diff --git a/chrome/browser/android/vr_shell/textures/insecure_content_permanent_texture.cc b/chrome/browser/vr/elements/insecure_content_permanent_texture.cc similarity index 95% rename from chrome/browser/android/vr_shell/textures/insecure_content_permanent_texture.cc rename to chrome/browser/vr/elements/insecure_content_permanent_texture.cc index f43c061..6210b2c 100644 --- a/chrome/browser/android/vr_shell/textures/insecure_content_permanent_texture.cc +++ b/chrome/browser/vr/elements/insecure_content_permanent_texture.cc
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/android/vr_shell/textures/insecure_content_permanent_texture.h" +#include "chrome/browser/vr/elements/insecure_content_permanent_texture.h" #include "cc/paint/skia_paint_canvas.h" #include "components/strings/grit/components_strings.h" @@ -16,7 +16,7 @@ #include "ui/gfx/vector_icon_types.h" #include "ui/vector_icons/vector_icons.h" -namespace vr_shell { +namespace vr { namespace { @@ -91,4 +91,4 @@ return size_; } -} // namespace vr_shell +} // namespace vr
diff --git a/chrome/browser/android/vr_shell/textures/insecure_content_permanent_texture.h b/chrome/browser/vr/elements/insecure_content_permanent_texture.h similarity index 62% rename from chrome/browser/android/vr_shell/textures/insecure_content_permanent_texture.h rename to chrome/browser/vr/elements/insecure_content_permanent_texture.h index ae48322..cc4c9d47 100644 --- a/chrome/browser/android/vr_shell/textures/insecure_content_permanent_texture.h +++ b/chrome/browser/vr/elements/insecure_content_permanent_texture.h
@@ -2,13 +2,13 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CHROME_BROWSER_ANDROID_VR_SHELL_TEXTURES_INSECURE_CONTENT_PERMANENT_TEXTURE_H_ -#define CHROME_BROWSER_ANDROID_VR_SHELL_TEXTURES_INSECURE_CONTENT_PERMANENT_TEXTURE_H_ +#ifndef CHROME_BROWSER_VR_ELEMENTS_INSECURE_CONTENT_PERMANENT_TEXTURE_H_ +#define CHROME_BROWSER_VR_ELEMENTS_INSECURE_CONTENT_PERMANENT_TEXTURE_H_ #include "base/macros.h" -#include "chrome/browser/android/vr_shell/textures/ui_texture.h" +#include "chrome/browser/vr/elements/ui_texture.h" -namespace vr_shell { +namespace vr { class InsecureContentPermanentTexture : public UiTexture { public: @@ -25,6 +25,6 @@ DISALLOW_COPY_AND_ASSIGN(InsecureContentPermanentTexture); }; -} // namespace vr_shell +} // namespace vr -#endif // CHROME_BROWSER_ANDROID_VR_SHELL_TEXTURES_INSECURE_CONTENT_PERMANENT_TEXTURE_H_ +#endif // CHROME_BROWSER_VR_ELEMENTS_INSECURE_CONTENT_PERMANENT_TEXTURE_H_
diff --git a/chrome/browser/android/vr_shell/textures/insecure_content_transient_texture.cc b/chrome/browser/vr/elements/insecure_content_transient_texture.cc similarity index 94% rename from chrome/browser/android/vr_shell/textures/insecure_content_transient_texture.cc rename to chrome/browser/vr/elements/insecure_content_transient_texture.cc index ea82914..8008c7f 100644 --- a/chrome/browser/android/vr_shell/textures/insecure_content_transient_texture.cc +++ b/chrome/browser/vr/elements/insecure_content_transient_texture.cc
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/android/vr_shell/textures/insecure_content_transient_texture.h" +#include "chrome/browser/vr/elements/insecure_content_transient_texture.h" #include "cc/paint/skia_paint_canvas.h" #include "components/strings/grit/components_strings.h" @@ -16,7 +16,7 @@ #include "ui/gfx/vector_icon_types.h" #include "ui/vector_icons/vector_icons.h" -namespace vr_shell { +namespace vr { namespace { @@ -73,4 +73,4 @@ return size_; } -} // namespace vr_shell +} // namespace vr
diff --git a/chrome/browser/android/vr_shell/textures/insecure_content_transient_texture.h b/chrome/browser/vr/elements/insecure_content_transient_texture.h similarity index 62% rename from chrome/browser/android/vr_shell/textures/insecure_content_transient_texture.h rename to chrome/browser/vr/elements/insecure_content_transient_texture.h index 8cabcab..1179fba 100644 --- a/chrome/browser/android/vr_shell/textures/insecure_content_transient_texture.h +++ b/chrome/browser/vr/elements/insecure_content_transient_texture.h
@@ -2,13 +2,13 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CHROME_BROWSER_ANDROID_VR_SHELL_TEXTURES_INSECURE_CONTENT_TRANSIENT_TEXTURE_H_ -#define CHROME_BROWSER_ANDROID_VR_SHELL_TEXTURES_INSECURE_CONTENT_TRANSIENT_TEXTURE_H_ +#ifndef CHROME_BROWSER_VR_ELEMENTS_INSECURE_CONTENT_TRANSIENT_TEXTURE_H_ +#define CHROME_BROWSER_VR_ELEMENTS_INSECURE_CONTENT_TRANSIENT_TEXTURE_H_ #include "base/macros.h" -#include "chrome/browser/android/vr_shell/textures/ui_texture.h" +#include "chrome/browser/vr/elements/ui_texture.h" -namespace vr_shell { +namespace vr { class InsecureContentTransientTexture : public UiTexture { public: @@ -25,6 +25,6 @@ DISALLOW_COPY_AND_ASSIGN(InsecureContentTransientTexture); }; -} // namespace vr_shell +} // namespace vr -#endif // CHROME_BROWSER_ANDROID_VR_SHELL_TEXTURES_INSECURE_CONTENT_TRANSIENT_TEXTURE_H_ +#endif // CHROME_BROWSER_VR_ELEMENTS_INSECURE_CONTENT_TRANSIENT_TEXTURE_H_
diff --git a/chrome/browser/android/vr_shell/ui_elements/loading_indicator.cc b/chrome/browser/vr/elements/loading_indicator.cc similarity index 87% rename from chrome/browser/android/vr_shell/ui_elements/loading_indicator.cc rename to chrome/browser/vr/elements/loading_indicator.cc index c255fae..8a14088 100644 --- a/chrome/browser/android/vr_shell/ui_elements/loading_indicator.cc +++ b/chrome/browser/vr/elements/loading_indicator.cc
@@ -2,12 +2,12 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/android/vr_shell/ui_elements/loading_indicator.h" +#include "chrome/browser/vr/elements/loading_indicator.h" #include "base/memory/ptr_util.h" -#include "chrome/browser/android/vr_shell/textures/loading_indicator_texture.h" +#include "chrome/browser/vr/elements/loading_indicator_texture.h" -namespace vr_shell { +namespace vr { namespace { @@ -61,4 +61,4 @@ set_visible(enabled_ && (loading_ || visibility_timer_.IsRunning())); } -} // namespace vr_shell +} // namespace vr
diff --git a/chrome/browser/android/vr_shell/ui_elements/loading_indicator.h b/chrome/browser/vr/elements/loading_indicator.h similarity index 70% rename from chrome/browser/android/vr_shell/ui_elements/loading_indicator.h rename to chrome/browser/vr/elements/loading_indicator.h index 31c3c50..7d4b58f 100644 --- a/chrome/browser/android/vr_shell/ui_elements/loading_indicator.h +++ b/chrome/browser/vr/elements/loading_indicator.h
@@ -2,16 +2,16 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CHROME_BROWSER_ANDROID_VR_SHELL_UI_ELEMENTS_LOADING_INDICATOR_H_ -#define CHROME_BROWSER_ANDROID_VR_SHELL_UI_ELEMENTS_LOADING_INDICATOR_H_ +#ifndef CHROME_BROWSER_VR_ELEMENTS_LOADING_INDICATOR_H_ +#define CHROME_BROWSER_VR_ELEMENTS_LOADING_INDICATOR_H_ #include <memory> #include "base/macros.h" #include "base/timer/timer.h" -#include "chrome/browser/android/vr_shell/ui_elements/textured_element.h" +#include "chrome/browser/vr/elements/textured_element.h" -namespace vr_shell { +namespace vr { class LoadingIndicatorTexture; @@ -39,6 +39,6 @@ DISALLOW_COPY_AND_ASSIGN(LoadingIndicator); }; -} // namespace vr_shell +} // namespace vr -#endif // CHROME_BROWSER_ANDROID_VR_SHELL_UI_ELEMENTS_LOADING_INDICATOR_H_ +#endif // CHROME_BROWSER_VR_ELEMENTS_LOADING_INDICATOR_H_
diff --git a/chrome/browser/android/vr_shell/textures/loading_indicator_texture.cc b/chrome/browser/vr/elements/loading_indicator_texture.cc similarity index 93% rename from chrome/browser/android/vr_shell/textures/loading_indicator_texture.cc rename to chrome/browser/vr/elements/loading_indicator_texture.cc index bdc78793..84527437 100644 --- a/chrome/browser/android/vr_shell/textures/loading_indicator_texture.cc +++ b/chrome/browser/vr/elements/loading_indicator_texture.cc
@@ -2,13 +2,13 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/android/vr_shell/textures/loading_indicator_texture.h" +#include "chrome/browser/vr/elements/loading_indicator_texture.h" #include "base/logging.h" #include "cc/paint/skia_paint_canvas.h" #include "third_party/skia/include/core/SkCanvas.h" -namespace vr_shell { +namespace vr { namespace { @@ -69,4 +69,4 @@ canvas->restore(); } -} // namespace vr_shell +} // namespace vr
diff --git a/chrome/browser/android/vr_shell/textures/loading_indicator_texture.h b/chrome/browser/vr/elements/loading_indicator_texture.h similarity index 66% rename from chrome/browser/android/vr_shell/textures/loading_indicator_texture.h rename to chrome/browser/vr/elements/loading_indicator_texture.h index 2f0a8f3..39302e4 100644 --- a/chrome/browser/android/vr_shell/textures/loading_indicator_texture.h +++ b/chrome/browser/vr/elements/loading_indicator_texture.h
@@ -2,15 +2,15 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CHROME_BROWSER_ANDROID_VR_SHELL_TEXTURES_LOADING_INDICATOR_TEXTURE_H_ -#define CHROME_BROWSER_ANDROID_VR_SHELL_TEXTURES_LOADING_INDICATOR_TEXTURE_H_ +#ifndef CHROME_BROWSER_VR_ELEMENTS_LOADING_INDICATOR_TEXTURE_H_ +#define CHROME_BROWSER_VR_ELEMENTS_LOADING_INDICATOR_TEXTURE_H_ -#include "chrome/browser/android/vr_shell/textures/ui_texture.h" +#include "chrome/browser/vr/elements/ui_texture.h" #include "ui/gfx/geometry/size.h" class SkCanvas; -namespace vr_shell { +namespace vr { class LoadingIndicatorTexture : public UiTexture { public: @@ -29,6 +29,6 @@ float progress_ = 0; }; -} // namespace vr_shell +} // namespace vr -#endif // CHROME_BROWSER_ANDROID_VR_SHELL_TEXTURES_LOADING_INDICATOR_TEXTURE_H_ +#endif // CHROME_BROWSER_VR_ELEMENTS_LOADING_INDICATOR_TEXTURE_H_
diff --git a/chrome/browser/android/vr_shell/textures/render_text_wrapper.cc b/chrome/browser/vr/elements/render_text_wrapper.cc similarity index 88% rename from chrome/browser/android/vr_shell/textures/render_text_wrapper.cc rename to chrome/browser/vr/elements/render_text_wrapper.cc index 4576bed4..99102517 100644 --- a/chrome/browser/android/vr_shell/textures/render_text_wrapper.cc +++ b/chrome/browser/vr/elements/render_text_wrapper.cc
@@ -2,9 +2,9 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/android/vr_shell/textures/render_text_wrapper.h" +#include "chrome/browser/vr/elements/render_text_wrapper.h" -namespace vr_shell { +namespace vr { RenderTextWrapper::RenderTextWrapper(gfx::RenderText* render_text) : render_text_(render_text) {} @@ -33,4 +33,4 @@ render_text_->set_strike_thickness_factor(factor); } -} // namespace vr_shell +} // namespace vr
diff --git a/chrome/browser/android/vr_shell/textures/render_text_wrapper.h b/chrome/browser/vr/elements/render_text_wrapper.h similarity index 77% rename from chrome/browser/android/vr_shell/textures/render_text_wrapper.h rename to chrome/browser/vr/elements/render_text_wrapper.h index c959f4d6..11da3df2 100644 --- a/chrome/browser/android/vr_shell/textures/render_text_wrapper.h +++ b/chrome/browser/vr/elements/render_text_wrapper.h
@@ -2,13 +2,13 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CHROME_BROWSER_ANDROID_VR_SHELL_TEXTURES_RENDER_TEXT_WRAPPER_H_ -#define CHROME_BROWSER_ANDROID_VR_SHELL_TEXTURES_RENDER_TEXT_WRAPPER_H_ +#ifndef CHROME_BROWSER_VR_ELEMENTS_RENDER_TEXT_WRAPPER_H_ +#define CHROME_BROWSER_VR_ELEMENTS_RENDER_TEXT_WRAPPER_H_ #include "base/macros.h" #include "ui/gfx/render_text.h" -namespace vr_shell { +namespace vr { // A minimal, mockable wrapper around gfx::RenderText, to facilitate testing of // RenderText users. @@ -33,6 +33,6 @@ DISALLOW_COPY_AND_ASSIGN(RenderTextWrapper); }; -} // namespace vr_shell +} // namespace vr -#endif // CHROME_BROWSER_ANDROID_VR_SHELL_TEXTURES_RENDER_TEXT_WRAPPER_H_ +#endif // CHROME_BROWSER_VR_ELEMENTS_RENDER_TEXT_WRAPPER_H_
diff --git a/chrome/browser/android/vr_shell/ui_elements/screen_dimmer.cc b/chrome/browser/vr/elements/screen_dimmer.cc similarity index 79% rename from chrome/browser/android/vr_shell/ui_elements/screen_dimmer.cc rename to chrome/browser/vr/elements/screen_dimmer.cc index 9e1a034..facc7b5 100644 --- a/chrome/browser/android/vr_shell/ui_elements/screen_dimmer.cc +++ b/chrome/browser/vr/elements/screen_dimmer.cc
@@ -2,15 +2,15 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/android/vr_shell/ui_elements/screen_dimmer.h" +#include "chrome/browser/vr/elements/screen_dimmer.h" -#include "chrome/browser/android/vr_shell/color_scheme.h" -#include "chrome/browser/android/vr_shell/ui_element_renderer.h" +#include "chrome/browser/vr/color_scheme.h" +#include "chrome/browser/vr/ui_element_renderer.h" #include "third_party/skia/include/core/SkColor.h" #include "ui/gfx/geometry/quaternion.h" #include "ui/gfx/transform.h" -namespace vr_shell { +namespace vr { namespace { static const float kDimmerOpacity = 0.9f; @@ -36,4 +36,4 @@ color_scheme.dimmer_inner, kDimmerOpacity); } -} // namespace vr_shell +} // namespace vr
diff --git a/chrome/browser/android/vr_shell/ui_elements/screen_dimmer.h b/chrome/browser/vr/elements/screen_dimmer.h similarity index 60% rename from chrome/browser/android/vr_shell/ui_elements/screen_dimmer.h rename to chrome/browser/vr/elements/screen_dimmer.h index 47dbac1..dd1112a 100644 --- a/chrome/browser/android/vr_shell/ui_elements/screen_dimmer.h +++ b/chrome/browser/vr/elements/screen_dimmer.h
@@ -2,13 +2,13 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CHROME_BROWSER_ANDROID_VR_SHELL_UI_ELEMENTS_SCREEN_DIMMER_H_ -#define CHROME_BROWSER_ANDROID_VR_SHELL_UI_ELEMENTS_SCREEN_DIMMER_H_ +#ifndef CHROME_BROWSER_VR_ELEMENTS_SCREEN_DIMMER_H_ +#define CHROME_BROWSER_VR_ELEMENTS_SCREEN_DIMMER_H_ #include "base/macros.h" -#include "chrome/browser/android/vr_shell/ui_elements/ui_element.h" +#include "chrome/browser/vr/elements/ui_element.h" -namespace vr_shell { +namespace vr { class ScreenDimmer : public UiElement { public: @@ -24,6 +24,6 @@ DISALLOW_COPY_AND_ASSIGN(ScreenDimmer); }; -} // namespace vr_shell +} // namespace vr -#endif // CHROME_BROWSER_ANDROID_VR_SHELL_UI_ELEMENTS_SCREEN_DIMMER_H_ +#endif // CHROME_BROWSER_VR_ELEMENTS_SCREEN_DIMMER_H_
diff --git a/chrome/browser/android/vr_shell/ui_elements/simple_textured_element.h b/chrome/browser/vr/elements/simple_textured_element.h similarity index 68% rename from chrome/browser/android/vr_shell/ui_elements/simple_textured_element.h rename to chrome/browser/vr/elements/simple_textured_element.h index c4467c9..9fe2fed 100644 --- a/chrome/browser/android/vr_shell/ui_elements/simple_textured_element.h +++ b/chrome/browser/vr/elements/simple_textured_element.h
@@ -2,22 +2,22 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CHROME_BROWSER_ANDROID_VR_SHELL_UI_ELEMENTS_SIMPLE_TEXTURED_ELEMENT_H_ -#define CHROME_BROWSER_ANDROID_VR_SHELL_UI_ELEMENTS_SIMPLE_TEXTURED_ELEMENT_H_ +#ifndef CHROME_BROWSER_VR_ELEMENTS_SIMPLE_TEXTURED_ELEMENT_H_ +#define CHROME_BROWSER_VR_ELEMENTS_SIMPLE_TEXTURED_ELEMENT_H_ #include <memory> #include "base/macros.h" #include "base/memory/ptr_util.h" -#include "chrome/browser/android/vr_shell/textures/exclusive_screen_toast_texture.h" -#include "chrome/browser/android/vr_shell/textures/exit_warning_texture.h" -#include "chrome/browser/android/vr_shell/textures/insecure_content_permanent_texture.h" -#include "chrome/browser/android/vr_shell/textures/insecure_content_transient_texture.h" -#include "chrome/browser/android/vr_shell/textures/ui_texture.h" -#include "chrome/browser/android/vr_shell/ui_elements/textured_element.h" -#include "chrome/browser/android/vr_shell/ui_elements/transience_manager.h" +#include "chrome/browser/vr/elements/exclusive_screen_toast_texture.h" +#include "chrome/browser/vr/elements/exit_warning_texture.h" +#include "chrome/browser/vr/elements/insecure_content_permanent_texture.h" +#include "chrome/browser/vr/elements/insecure_content_transient_texture.h" +#include "chrome/browser/vr/elements/textured_element.h" +#include "chrome/browser/vr/elements/transience_manager.h" +#include "chrome/browser/vr/elements/ui_texture.h" -namespace vr_shell { +namespace vr { template <class T> class SimpleTexturedElement : public TexturedElement { @@ -64,6 +64,6 @@ typedef TransientSimpleTexturedElement<InsecureContentTransientTexture> TransientSecurityWarning; -} // namespace vr_shell +} // namespace vr -#endif // CHROME_BROWSER_ANDROID_VR_SHELL_UI_ELEMENTS_SIMPLE_TEXTURED_ELEMENT_H_ +#endif // CHROME_BROWSER_VR_ELEMENTS_SIMPLE_TEXTURED_ELEMENT_H_
diff --git a/chrome/browser/android/vr_shell/ui_elements/splash_screen_icon.cc b/chrome/browser/vr/elements/splash_screen_icon.cc similarity index 75% rename from chrome/browser/android/vr_shell/ui_elements/splash_screen_icon.cc rename to chrome/browser/vr/elements/splash_screen_icon.cc index dc67480..037fb44 100644 --- a/chrome/browser/android/vr_shell/ui_elements/splash_screen_icon.cc +++ b/chrome/browser/vr/elements/splash_screen_icon.cc
@@ -2,12 +2,12 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/android/vr_shell/ui_elements/splash_screen_icon.h" +#include "chrome/browser/vr/elements/splash_screen_icon.h" #include "base/memory/ptr_util.h" -#include "chrome/browser/android/vr_shell/textures/splash_screen_icon_texture.h" +#include "chrome/browser/vr/elements/splash_screen_icon_texture.h" -namespace vr_shell { +namespace vr { SplashScreenIcon::SplashScreenIcon(int preferred_width) : TexturedElement(preferred_width), @@ -24,4 +24,4 @@ return texture_.get(); } -} // namespace vr_shell +} // namespace vr
diff --git a/chrome/browser/android/vr_shell/ui_elements/splash_screen_icon.h b/chrome/browser/vr/elements/splash_screen_icon.h similarity index 64% rename from chrome/browser/android/vr_shell/ui_elements/splash_screen_icon.h rename to chrome/browser/vr/elements/splash_screen_icon.h index feaf6be..3de9af27e 100644 --- a/chrome/browser/android/vr_shell/ui_elements/splash_screen_icon.h +++ b/chrome/browser/vr/elements/splash_screen_icon.h
@@ -2,17 +2,17 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CHROME_BROWSER_ANDROID_VR_SHELL_UI_ELEMENTS_SPLASH_SCREEN_ICON_H_ -#define CHROME_BROWSER_ANDROID_VR_SHELL_UI_ELEMENTS_SPLASH_SCREEN_ICON_H_ +#ifndef CHROME_BROWSER_VR_ELEMENTS_SPLASH_SCREEN_ICON_H_ +#define CHROME_BROWSER_VR_ELEMENTS_SPLASH_SCREEN_ICON_H_ #include <memory> #include "base/macros.h" -#include "chrome/browser/android/vr_shell/ui_elements/textured_element.h" +#include "chrome/browser/vr/elements/textured_element.h" class SkBitmap; -namespace vr_shell { +namespace vr { class SplashScreenIconTexture; @@ -31,6 +31,6 @@ DISALLOW_COPY_AND_ASSIGN(SplashScreenIcon); }; -} // namespace vr_shell +} // namespace vr -#endif // CHROME_BROWSER_ANDROID_VR_SHELL_UI_ELEMENTS_SPLASH_SCREEN_ICON_H_ +#endif // CHROME_BROWSER_VR_ELEMENTS_SPLASH_SCREEN_ICON_H_
diff --git a/chrome/browser/android/vr_shell/textures/splash_screen_icon_texture.cc b/chrome/browser/vr/elements/splash_screen_icon_texture.cc similarity index 88% rename from chrome/browser/android/vr_shell/textures/splash_screen_icon_texture.cc rename to chrome/browser/vr/elements/splash_screen_icon_texture.cc index 6bc62a4..8cee70a5 100644 --- a/chrome/browser/android/vr_shell/textures/splash_screen_icon_texture.cc +++ b/chrome/browser/vr/elements/splash_screen_icon_texture.cc
@@ -2,11 +2,11 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/android/vr_shell/textures/splash_screen_icon_texture.h" +#include "chrome/browser/vr/elements/splash_screen_icon_texture.h" #include "ui/gfx/canvas.h" -namespace vr_shell { +namespace vr { SplashScreenIconTexture::SplashScreenIconTexture() = default; @@ -35,4 +35,4 @@ return size_; } -} // namespace vr_shell +} // namespace vr
diff --git a/chrome/browser/android/vr_shell/textures/splash_screen_icon_texture.h b/chrome/browser/vr/elements/splash_screen_icon_texture.h similarity index 67% rename from chrome/browser/android/vr_shell/textures/splash_screen_icon_texture.h rename to chrome/browser/vr/elements/splash_screen_icon_texture.h index d2a4959..df9f984 100644 --- a/chrome/browser/android/vr_shell/textures/splash_screen_icon_texture.h +++ b/chrome/browser/vr/elements/splash_screen_icon_texture.h
@@ -2,14 +2,14 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CHROME_BROWSER_ANDROID_VR_SHELL_TEXTURES_SPLASH_SCREEN_ICON_TEXTURE_H_ -#define CHROME_BROWSER_ANDROID_VR_SHELL_TEXTURES_SPLASH_SCREEN_ICON_TEXTURE_H_ +#ifndef CHROME_BROWSER_VR_ELEMENTS_SPLASH_SCREEN_ICON_TEXTURE_H_ +#define CHROME_BROWSER_VR_ELEMENTS_SPLASH_SCREEN_ICON_TEXTURE_H_ #include "base/macros.h" -#include "chrome/browser/android/vr_shell/textures/ui_texture.h" +#include "chrome/browser/vr/elements/ui_texture.h" #include "third_party/skia/include/core/SkImage.h" -namespace vr_shell { +namespace vr { class SplashScreenIconTexture : public UiTexture { public: @@ -29,6 +29,6 @@ DISALLOW_COPY_AND_ASSIGN(SplashScreenIconTexture); }; -} // namespace vr_shell +} // namespace vr -#endif // CHROME_BROWSER_ANDROID_VR_SHELL_TEXTURES_SPLASH_SCREEN_ICON_TEXTURE_H_ +#endif // CHROME_BROWSER_VR_ELEMENTS_SPLASH_SCREEN_ICON_TEXTURE_H_
diff --git a/chrome/browser/android/vr_shell/ui_elements/system_indicator.cc b/chrome/browser/vr/elements/system_indicator.cc similarity index 83% rename from chrome/browser/android/vr_shell/ui_elements/system_indicator.cc rename to chrome/browser/vr/elements/system_indicator.cc index bc3a53a..d5691dc 100644 --- a/chrome/browser/android/vr_shell/ui_elements/system_indicator.cc +++ b/chrome/browser/vr/elements/system_indicator.cc
@@ -2,12 +2,12 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/android/vr_shell/ui_elements/system_indicator.h" +#include "chrome/browser/vr/elements/system_indicator.h" #include "base/memory/ptr_util.h" -#include "chrome/browser/android/vr_shell/textures/system_indicator_texture.h" +#include "chrome/browser/vr/elements/system_indicator_texture.h" -namespace vr_shell { +namespace vr { SystemIndicator::SystemIndicator(int preferred_width, float height_meters, @@ -33,4 +33,4 @@ return texture_.get(); } -} // namespace vr_shell +} // namespace vr
diff --git a/chrome/browser/android/vr_shell/ui_elements/system_indicator.h b/chrome/browser/vr/elements/system_indicator.h similarity index 69% rename from chrome/browser/android/vr_shell/ui_elements/system_indicator.h rename to chrome/browser/vr/elements/system_indicator.h index d103abb..8440765e 100644 --- a/chrome/browser/android/vr_shell/ui_elements/system_indicator.h +++ b/chrome/browser/vr/elements/system_indicator.h
@@ -2,16 +2,16 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CHROME_BROWSER_ANDROID_VR_SHELL_UI_ELEMENTS_SYSTEM_INDICATOR_H_ -#define CHROME_BROWSER_ANDROID_VR_SHELL_UI_ELEMENTS_SYSTEM_INDICATOR_H_ +#ifndef CHROME_BROWSER_VR_ELEMENTS_SYSTEM_INDICATOR_H_ +#define CHROME_BROWSER_VR_ELEMENTS_SYSTEM_INDICATOR_H_ #include <memory> #include "base/macros.h" -#include "chrome/browser/android/vr_shell/ui_elements/textured_element.h" +#include "chrome/browser/vr/elements/textured_element.h" #include "ui/gfx/vector_icon_types.h" -namespace vr_shell { +namespace vr { class UiTexture; @@ -34,6 +34,6 @@ DISALLOW_COPY_AND_ASSIGN(SystemIndicator); }; -} // namespace vr_shell +} // namespace vr -#endif // CHROME_BROWSER_ANDROID_VR_SHELL_UI_ELEMENTS_SYSTEM_INDICATOR_H_ +#endif // CHROME_BROWSER_VR_ELEMENTS_SYSTEM_INDICATOR_H_
diff --git a/chrome/browser/android/vr_shell/textures/system_indicator_texture.cc b/chrome/browser/vr/elements/system_indicator_texture.cc similarity index 96% rename from chrome/browser/android/vr_shell/textures/system_indicator_texture.cc rename to chrome/browser/vr/elements/system_indicator_texture.cc index d87c6b94..b92622a 100644 --- a/chrome/browser/android/vr_shell/textures/system_indicator_texture.cc +++ b/chrome/browser/vr/elements/system_indicator_texture.cc
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/android/vr_shell/textures/system_indicator_texture.h" +#include "chrome/browser/vr/elements/system_indicator_texture.h" #include "base/strings/utf_string_conversions.h" #include "cc/paint/skia_paint_canvas.h" @@ -15,7 +15,7 @@ #include "ui/gfx/render_text.h" #include "ui/gfx/vector_icon_types.h" -namespace vr_shell { +namespace vr { namespace { @@ -109,4 +109,4 @@ return size_; } -} // namespace vr_shell +} // namespace vr
diff --git a/chrome/browser/android/vr_shell/textures/system_indicator_texture.h b/chrome/browser/vr/elements/system_indicator_texture.h similarity index 69% rename from chrome/browser/android/vr_shell/textures/system_indicator_texture.h rename to chrome/browser/vr/elements/system_indicator_texture.h index ab03721..ea6fd86 100644 --- a/chrome/browser/android/vr_shell/textures/system_indicator_texture.h +++ b/chrome/browser/vr/elements/system_indicator_texture.h
@@ -2,14 +2,14 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CHROME_BROWSER_ANDROID_VR_SHELL_TEXTURES_SYSTEM_INDICATOR_TEXTURE_H_ -#define CHROME_BROWSER_ANDROID_VR_SHELL_TEXTURES_SYSTEM_INDICATOR_TEXTURE_H_ +#ifndef CHROME_BROWSER_VR_ELEMENTS_SYSTEM_INDICATOR_TEXTURE_H_ +#define CHROME_BROWSER_VR_ELEMENTS_SYSTEM_INDICATOR_TEXTURE_H_ #include "base/macros.h" -#include "chrome/browser/android/vr_shell/textures/ui_texture.h" +#include "chrome/browser/vr/elements/ui_texture.h" #include "ui/gfx/vector_icon_types.h" -namespace vr_shell { +namespace vr { class SystemIndicatorTexture : public UiTexture { public: @@ -30,6 +30,6 @@ DISALLOW_COPY_AND_ASSIGN(SystemIndicatorTexture); }; -} // namespace vr_shell +} // namespace vr -#endif // CHROME_BROWSER_ANDROID_VR_SHELL_TEXTURES_SYSTEM_INDICATOR_TEXTURE_H_ +#endif // CHROME_BROWSER_VR_ELEMENTS_SYSTEM_INDICATOR_TEXTURE_H_
diff --git a/chrome/browser/android/vr_shell/ui_elements/textured_element.cc b/chrome/browser/vr/elements/textured_element.cc similarity index 91% rename from chrome/browser/android/vr_shell/ui_elements/textured_element.cc rename to chrome/browser/vr/elements/textured_element.cc index afe2ae8..f15fcb4 100644 --- a/chrome/browser/android/vr_shell/ui_elements/textured_element.cc +++ b/chrome/browser/vr/elements/textured_element.cc
@@ -2,16 +2,16 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/android/vr_shell/ui_elements/textured_element.h" +#include "chrome/browser/vr/elements/textured_element.h" #include "base/trace_event/trace_event.h" #include "cc/paint/skia_paint_canvas.h" -#include "chrome/browser/android/vr_shell/textures/ui_texture.h" -#include "chrome/browser/android/vr_shell/ui_element_renderer.h" +#include "chrome/browser/vr/elements/ui_texture.h" +#include "chrome/browser/vr/ui_element_renderer.h" #include "third_party/skia/include/core/SkSurface.h" #include "ui/gfx/geometry/rect_f.h" -namespace vr_shell { +namespace vr { TexturedElement::TexturedElement(int maximum_width) : texture_handle_(-1), maximum_width_(maximum_width) {} @@ -82,4 +82,4 @@ UpdateTexture(); } -} // namespace vr_shell +} // namespace vr
diff --git a/chrome/browser/android/vr_shell/ui_elements/textured_element.h b/chrome/browser/vr/elements/textured_element.h similarity index 78% rename from chrome/browser/android/vr_shell/ui_elements/textured_element.h rename to chrome/browser/vr/elements/textured_element.h index 848fe425..97b14e5 100644 --- a/chrome/browser/android/vr_shell/ui_elements/textured_element.h +++ b/chrome/browser/vr/elements/textured_element.h
@@ -2,17 +2,17 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CHROME_BROWSER_ANDROID_VR_SHELL_UI_ELEMENTS_TEXTURED_ELEMENT_H_ -#define CHROME_BROWSER_ANDROID_VR_SHELL_UI_ELEMENTS_TEXTURED_ELEMENT_H_ +#ifndef CHROME_BROWSER_VR_ELEMENTS_TEXTURED_ELEMENT_H_ +#define CHROME_BROWSER_VR_ELEMENTS_TEXTURED_ELEMENT_H_ #include "base/macros.h" -#include "chrome/browser/android/vr_shell/ui_elements/ui_element.h" +#include "chrome/browser/vr/elements/ui_element.h" #include "ui/gfx/geometry/size.h" #include "ui/gl/gl_bindings.h" class SkSurface; -namespace vr_shell { +namespace vr { class UiTexture; @@ -50,6 +50,6 @@ DISALLOW_COPY_AND_ASSIGN(TexturedElement); }; -} // namespace vr_shell +} // namespace vr -#endif // CHROME_BROWSER_ANDROID_VR_SHELL_UI_ELEMENTS_TEXTURED_ELEMENT_H_ +#endif // CHROME_BROWSER_VR_ELEMENTS_TEXTURED_ELEMENT_H_
diff --git a/chrome/browser/android/vr_shell/ui_elements/transience_manager.cc b/chrome/browser/vr/elements/transience_manager.cc similarity index 90% rename from chrome/browser/android/vr_shell/ui_elements/transience_manager.cc rename to chrome/browser/vr/elements/transience_manager.cc index 94ce01e..40d1ff5a 100644 --- a/chrome/browser/android/vr_shell/ui_elements/transience_manager.cc +++ b/chrome/browser/vr/elements/transience_manager.cc
@@ -2,9 +2,9 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/android/vr_shell/ui_elements/transience_manager.h" +#include "chrome/browser/vr/elements/transience_manager.h" -namespace vr_shell { +namespace vr { TransienceManager::TransienceManager(UiElement* element, const base::TimeDelta& timeout) @@ -49,4 +49,4 @@ element_->set_visible(false); } -} // namespace vr_shell +} // namespace vr
diff --git a/chrome/browser/android/vr_shell/ui_elements/transience_manager.h b/chrome/browser/vr/elements/transience_manager.h similarity index 66% rename from chrome/browser/android/vr_shell/ui_elements/transience_manager.h rename to chrome/browser/vr/elements/transience_manager.h index b248f479..0d5434c36c 100644 --- a/chrome/browser/android/vr_shell/ui_elements/transience_manager.h +++ b/chrome/browser/vr/elements/transience_manager.h
@@ -2,16 +2,16 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CHROME_BROWSER_ANDROID_VR_SHELL_UI_ELEMENTS_TRANSIENCE_MANAGER_H_ -#define CHROME_BROWSER_ANDROID_VR_SHELL_UI_ELEMENTS_TRANSIENCE_MANAGER_H_ +#ifndef CHROME_BROWSER_VR_ELEMENTS_TRANSIENCE_MANAGER_H_ +#define CHROME_BROWSER_VR_ELEMENTS_TRANSIENCE_MANAGER_H_ #include <memory> #include "base/macros.h" #include "base/timer/timer.h" -#include "chrome/browser/android/vr_shell/ui_elements/ui_element.h" +#include "chrome/browser/vr/elements/ui_element.h" -namespace vr_shell { +namespace vr { class TransienceManager { public: @@ -32,6 +32,6 @@ base::OneShotTimer visibility_timer_; }; -} // namespace vr_shell +} // namespace vr -#endif // CHROME_BROWSER_ANDROID_VR_SHELL_UI_ELEMENTS_TRANSIENCE_MANAGER_H_ +#endif // CHROME_BROWSER_VR_ELEMENTS_TRANSIENCE_MANAGER_H_
diff --git a/chrome/browser/android/vr_shell/ui_elements/transience_manager_unittest.cc b/chrome/browser/vr/elements/transience_manager_unittest.cc similarity index 90% rename from chrome/browser/android/vr_shell/ui_elements/transience_manager_unittest.cc rename to chrome/browser/vr/elements/transience_manager_unittest.cc index 6fc1e72..dea1519d 100644 --- a/chrome/browser/android/vr_shell/ui_elements/transience_manager_unittest.cc +++ b/chrome/browser/vr/elements/transience_manager_unittest.cc
@@ -2,16 +2,16 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/android/vr_shell/ui_elements/transience_manager.h" +#include "chrome/browser/vr/elements/transience_manager.h" #include "base/macros.h" #include "base/memory/ptr_util.h" #include "base/message_loop/message_loop.h" #include "base/test/scoped_mock_time_message_loop_task_runner.h" -#include "chrome/browser/android/vr_shell/ui_elements/ui_element.h" +#include "chrome/browser/vr/elements/ui_element.h" #include "testing/gtest/include/gtest/gtest.h" -namespace vr_shell { +namespace vr { TEST(TransienceManager, Visibility) { base::MessageLoop message_loop_; @@ -56,4 +56,4 @@ EXPECT_EQ(element.visible(), false); } -} // namespace vr_shell +} // namespace vr
diff --git a/chrome/browser/android/vr_shell/ui_elements/transient_url_bar.cc b/chrome/browser/vr/elements/transient_url_bar.cc similarity index 81% rename from chrome/browser/android/vr_shell/ui_elements/transient_url_bar.cc rename to chrome/browser/vr/elements/transient_url_bar.cc index ad4c4e5..8909e29 100644 --- a/chrome/browser/android/vr_shell/ui_elements/transient_url_bar.cc +++ b/chrome/browser/vr/elements/transient_url_bar.cc
@@ -2,12 +2,12 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/android/vr_shell/ui_elements/transient_url_bar.h" +#include "chrome/browser/vr/elements/transient_url_bar.h" #include "base/memory/ptr_util.h" -#include "chrome/browser/android/vr_shell/textures/url_bar_texture.h" +#include "chrome/browser/vr/elements/url_bar_texture.h" -namespace vr_shell { +namespace vr { TransientUrlBar::TransientUrlBar( int preferred_width, @@ -31,4 +31,4 @@ texture_->SetToolbarState(state); } -} // namespace vr_shell +} // namespace vr
diff --git a/chrome/browser/android/vr_shell/ui_elements/transient_url_bar.h b/chrome/browser/vr/elements/transient_url_bar.h similarity index 67% rename from chrome/browser/android/vr_shell/ui_elements/transient_url_bar.h rename to chrome/browser/vr/elements/transient_url_bar.h index b28d1662..c7c8ec7 100644 --- a/chrome/browser/android/vr_shell/ui_elements/transient_url_bar.h +++ b/chrome/browser/vr/elements/transient_url_bar.h
@@ -2,21 +2,21 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CHROME_BROWSER_ANDROID_VR_SHELL_UI_ELEMENTS_TRANSIENT_URL_BAR_H_ -#define CHROME_BROWSER_ANDROID_VR_SHELL_UI_ELEMENTS_TRANSIENT_URL_BAR_H_ +#ifndef CHROME_BROWSER_VR_ELEMENTS_TRANSIENT_URL_BAR_H_ +#define CHROME_BROWSER_VR_ELEMENTS_TRANSIENT_URL_BAR_H_ #include <memory> #include "base/callback.h" #include "base/macros.h" #include "base/time/time.h" -#include "chrome/browser/android/vr_shell/ui_elements/textured_element.h" -#include "chrome/browser/android/vr_shell/ui_elements/transience_manager.h" -#include "chrome/browser/android/vr_shell/ui_unsupported_mode.h" +#include "chrome/browser/vr/elements/textured_element.h" +#include "chrome/browser/vr/elements/transience_manager.h" +#include "chrome/browser/vr/ui_unsupported_mode.h" #include "components/security_state/core/security_state.h" #include "url/gurl.h" -namespace vr_shell { +namespace vr { class UrlBarTexture; struct ToolbarState; @@ -44,6 +44,6 @@ DISALLOW_COPY_AND_ASSIGN(TransientUrlBar); }; -} // namespace vr_shell +} // namespace vr -#endif // CHROME_BROWSER_ANDROID_VR_SHELL_UI_ELEMENTS_TRANSIENT_URL_BAR_H_ +#endif // CHROME_BROWSER_VR_ELEMENTS_TRANSIENT_URL_BAR_H_
diff --git a/chrome/browser/android/vr_shell/ui_elements/ui_element.cc b/chrome/browser/vr/elements/ui_element.cc similarity index 96% rename from chrome/browser/android/vr_shell/ui_elements/ui_element.cc rename to chrome/browser/vr/elements/ui_element.cc index 3183a159..0ddc77d 100644 --- a/chrome/browser/android/vr_shell/ui_elements/ui_element.cc +++ b/chrome/browser/vr/elements/ui_element.cc
@@ -2,16 +2,16 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/android/vr_shell/ui_elements/ui_element.h" +#include "chrome/browser/vr/elements/ui_element.h" #include <limits> #include "base/logging.h" #include "base/time/time.h" -#include "chrome/browser/android/vr_shell/animation.h" -#include "chrome/browser/android/vr_shell/easing.h" +#include "chrome/browser/vr/animation.h" +#include "chrome/browser/vr/easing.h" -namespace vr_shell { +namespace vr { namespace { @@ -206,4 +206,4 @@ void UiElement::OnSetMode() {} -} // namespace vr_shell +} // namespace vr
diff --git a/chrome/browser/android/vr_shell/ui_elements/ui_element.h b/chrome/browser/vr/elements/ui_element.h similarity index 96% rename from chrome/browser/android/vr_shell/ui_elements/ui_element.h rename to chrome/browser/vr/elements/ui_element.h index 140677b9..faf88f7 100644 --- a/chrome/browser/android/vr_shell/ui_elements/ui_element.h +++ b/chrome/browser/vr/elements/ui_element.h
@@ -2,16 +2,16 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CHROME_BROWSER_ANDROID_VR_SHELL_UI_ELEMENTS_UI_ELEMENT_H_ -#define CHROME_BROWSER_ANDROID_VR_SHELL_UI_ELEMENTS_UI_ELEMENT_H_ +#ifndef CHROME_BROWSER_VR_ELEMENTS_UI_ELEMENT_H_ +#define CHROME_BROWSER_VR_ELEMENTS_UI_ELEMENT_H_ #include <memory> #include <string> #include <vector> #include "base/macros.h" -#include "chrome/browser/android/vr_shell/color_scheme.h" -#include "chrome/browser/android/vr_shell/ui_elements/ui_element_debug_id.h" +#include "chrome/browser/vr/color_scheme.h" +#include "chrome/browser/vr/elements/ui_element_debug_id.h" #include "third_party/skia/include/core/SkColor.h" #include "ui/gfx/geometry/point3_f.h" #include "ui/gfx/geometry/quaternion.h" @@ -22,7 +22,7 @@ class TimeTicks; } -namespace vr_shell { +namespace vr { class Animation; class UiElementRenderer; @@ -329,6 +329,6 @@ DISALLOW_COPY_AND_ASSIGN(UiElement); }; -} // namespace vr_shell +} // namespace vr -#endif // CHROME_BROWSER_ANDROID_VR_SHELL_UI_ELEMENTS_UI_ELEMENT_H_ +#endif // CHROME_BROWSER_VR_ELEMENTS_UI_ELEMENT_H_
diff --git a/chrome/browser/android/vr_shell/ui_elements/ui_element_debug_id.h b/chrome/browser/vr/elements/ui_element_debug_id.h similarity index 73% rename from chrome/browser/android/vr_shell/ui_elements/ui_element_debug_id.h rename to chrome/browser/vr/elements/ui_element_debug_id.h index 7051e44c..51d6668f 100644 --- a/chrome/browser/android/vr_shell/ui_elements/ui_element_debug_id.h +++ b/chrome/browser/vr/elements/ui_element_debug_id.h
@@ -2,10 +2,10 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CHROME_BROWSER_ANDROID_VR_SHELL_UI_ELEMENTS_UI_ELEMENT_DEBUG_ID_H_ -#define CHROME_BROWSER_ANDROID_VR_SHELL_UI_ELEMENTS_UI_ELEMENT_DEBUG_ID_H_ +#ifndef CHROME_BROWSER_VR_ELEMENTS_UI_ELEMENT_DEBUG_ID_H_ +#define CHROME_BROWSER_VR_ELEMENTS_UI_ELEMENT_DEBUG_ID_H_ -namespace vr_shell { +namespace vr { // These identifiers may be used by UI elements to tag themselves for purposes // of testing or debugging. @@ -34,6 +34,6 @@ kBluetoothConnectedIndicator, }; -} // namespace vr_shell +} // namespace vr -#endif // CHROME_BROWSER_ANDROID_VR_SHELL_UI_ELEMENTS_UI_ELEMENT_DEBUG_ID_H_ +#endif // CHROME_BROWSER_VR_ELEMENTS_UI_ELEMENT_DEBUG_ID_H_
diff --git a/chrome/browser/android/vr_shell/ui_elements/ui_element_unittest.cc b/chrome/browser/vr/elements/ui_element_unittest.cc similarity index 96% rename from chrome/browser/android/vr_shell/ui_elements/ui_element_unittest.cc rename to chrome/browser/vr/elements/ui_element_unittest.cc index e6ecdbb0..eb22978 100644 --- a/chrome/browser/android/vr_shell/ui_elements/ui_element_unittest.cc +++ b/chrome/browser/vr/elements/ui_element_unittest.cc
@@ -2,13 +2,13 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/android/vr_shell/ui_elements/ui_element.h" +#include "chrome/browser/vr/elements/ui_element.h" #include <utility> #include "base/macros.h" -#include "chrome/browser/android/vr_shell/animation.h" -#include "chrome/browser/android/vr_shell/easing.h" +#include "chrome/browser/vr/animation.h" +#include "chrome/browser/vr/easing.h" #include "testing/gtest/include/gtest/gtest.h" #define EXPECT_VEC3F_EQ(a, b) \ @@ -28,7 +28,7 @@ EXPECT_FLOAT_EQ(a.z(), b.z()); \ EXPECT_FLOAT_EQ(a.w(), b.w()); -namespace vr_shell { +namespace vr { namespace { @@ -165,4 +165,4 @@ EXPECT_VEC3F_EQ(gfx::Vector3dF(50, 500, 5000), rect.translation()); } -} // namespace vr_shell +} // namespace vr
diff --git a/chrome/browser/android/vr_shell/textures/ui_texture.cc b/chrome/browser/vr/elements/ui_texture.cc similarity index 96% rename from chrome/browser/android/vr_shell/textures/ui_texture.cc rename to chrome/browser/vr/elements/ui_texture.cc index 26434c88..e34fb11 100644 --- a/chrome/browser/android/vr_shell/textures/ui_texture.cc +++ b/chrome/browser/vr/elements/ui_texture.cc
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/android/vr_shell/textures/ui_texture.h" +#include "chrome/browser/vr/elements/ui_texture.h" #include <set> #include <string> @@ -13,7 +13,7 @@ #include "base/memory/ptr_util.h" #include "base/strings/string_util.h" #include "base/trace_event/trace_event.h" -#include "chrome/browser/android/vr_shell/font_fallback.h" +#include "chrome/browser/vr/font_fallback.h" #include "third_party/icu/source/common/unicode/uscript.h" #include "third_party/skia/include/core/SkCanvas.h" #include "ui/gfx/canvas.h" @@ -22,7 +22,7 @@ #include "ui/gfx/text_elider.h" #include "ui/gl/gl_bindings.h" -namespace vr_shell { +namespace vr { namespace { @@ -207,4 +207,4 @@ force_font_fallback_failure_for_testing_ = force; } -} // namespace vr_shell +} // namespace vr
diff --git a/chrome/browser/android/vr_shell/textures/ui_texture.h b/chrome/browser/vr/elements/ui_texture.h similarity index 89% rename from chrome/browser/android/vr_shell/textures/ui_texture.h rename to chrome/browser/vr/elements/ui_texture.h index 4f5e008..9bb77c58 100644 --- a/chrome/browser/android/vr_shell/textures/ui_texture.h +++ b/chrome/browser/vr/elements/ui_texture.h
@@ -2,15 +2,15 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CHROME_BROWSER_ANDROID_VR_SHELL_TEXTURES_UI_TEXTURE_H_ -#define CHROME_BROWSER_ANDROID_VR_SHELL_TEXTURES_UI_TEXTURE_H_ +#ifndef CHROME_BROWSER_VR_ELEMENTS_UI_TEXTURE_H_ +#define CHROME_BROWSER_VR_ELEMENTS_UI_TEXTURE_H_ #include <memory> #include <vector> #include "base/macros.h" #include "base/strings/string16.h" -#include "chrome/browser/android/vr_shell/color_scheme.h" +#include "chrome/browser/vr/color_scheme.h" #include "third_party/skia/include/core/SkColor.h" #include "ui/gfx/geometry/rect.h" #include "ui/gfx/geometry/size.h" @@ -26,7 +26,7 @@ } // namespace gfx -namespace vr_shell { +namespace vr { class UiTexture { public: @@ -97,6 +97,6 @@ DISALLOW_COPY_AND_ASSIGN(UiTexture); }; -} // namespace vr_shell +} // namespace vr -#endif // CHROME_BROWSER_ANDROID_VR_SHELL_TEXTURES_UI_TEXTURE_H_ +#endif // CHROME_BROWSER_VR_ELEMENTS_UI_TEXTURE_H_
diff --git a/chrome/browser/android/vr_shell/ui_elements/url_bar.cc b/chrome/browser/vr/elements/url_bar.cc similarity index 92% rename from chrome/browser/android/vr_shell/ui_elements/url_bar.cc rename to chrome/browser/vr/elements/url_bar.cc index 18369ad..8544006 100644 --- a/chrome/browser/android/vr_shell/ui_elements/url_bar.cc +++ b/chrome/browser/vr/elements/url_bar.cc
@@ -2,12 +2,12 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/android/vr_shell/ui_elements/url_bar.h" +#include "chrome/browser/vr/elements/url_bar.h" #include "base/memory/ptr_util.h" -#include "chrome/browser/android/vr_shell/textures/url_bar_texture.h" +#include "chrome/browser/vr/elements/url_bar_texture.h" -namespace vr_shell { +namespace vr { UrlBar::UrlBar(int preferred_width, const base::Callback<void()>& back_button_callback, @@ -77,4 +77,4 @@ UpdateTexture(); } -} // namespace vr_shell +} // namespace vr
diff --git a/chrome/browser/android/vr_shell/ui_elements/url_bar.h b/chrome/browser/vr/elements/url_bar.h similarity index 79% rename from chrome/browser/android/vr_shell/ui_elements/url_bar.h rename to chrome/browser/vr/elements/url_bar.h index d7651bbd..8240f38 100644 --- a/chrome/browser/android/vr_shell/ui_elements/url_bar.h +++ b/chrome/browser/vr/elements/url_bar.h
@@ -2,20 +2,20 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CHROME_BROWSER_ANDROID_VR_SHELL_UI_ELEMENTS_URL_BAR_H_ -#define CHROME_BROWSER_ANDROID_VR_SHELL_UI_ELEMENTS_URL_BAR_H_ +#ifndef CHROME_BROWSER_VR_ELEMENTS_URL_BAR_H_ +#define CHROME_BROWSER_VR_ELEMENTS_URL_BAR_H_ #include <memory> #include "base/callback.h" #include "base/macros.h" #include "base/time/time.h" -#include "chrome/browser/android/vr_shell/ui_elements/textured_element.h" -#include "chrome/browser/android/vr_shell/ui_unsupported_mode.h" +#include "chrome/browser/vr/elements/textured_element.h" +#include "chrome/browser/vr/ui_unsupported_mode.h" #include "components/security_state/core/security_state.h" #include "url/gurl.h" -namespace vr_shell { +namespace vr { class UrlBarTexture; struct ToolbarState; @@ -52,6 +52,6 @@ DISALLOW_COPY_AND_ASSIGN(UrlBar); }; -} // namespace vr_shell +} // namespace vr -#endif // CHROME_BROWSER_ANDROID_VR_SHELL_UI_ELEMENTS_URL_BAR_H_ +#endif // CHROME_BROWSER_VR_ELEMENTS_URL_BAR_H_
diff --git a/chrome/browser/android/vr_shell/textures/url_bar_texture.cc b/chrome/browser/vr/elements/url_bar_texture.cc similarity index 96% rename from chrome/browser/android/vr_shell/textures/url_bar_texture.cc rename to chrome/browser/vr/elements/url_bar_texture.cc index 5b35f4f..687caa0d 100644 --- a/chrome/browser/android/vr_shell/textures/url_bar_texture.cc +++ b/chrome/browser/vr/elements/url_bar_texture.cc
@@ -2,12 +2,12 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/android/vr_shell/textures/url_bar_texture.h" +#include "chrome/browser/vr/elements/url_bar_texture.h" #include "base/strings/utf_string_conversions.h" #include "cc/paint/skia_paint_canvas.h" -#include "chrome/browser/android/vr_shell/color_scheme.h" -#include "chrome/browser/android/vr_shell/textures/render_text_wrapper.h" +#include "chrome/browser/vr/color_scheme.h" +#include "chrome/browser/vr/elements/render_text_wrapper.h" #include "components/url_formatter/url_formatter.h" #include "ui/gfx/canvas.h" #include "ui/gfx/font.h" @@ -18,7 +18,7 @@ #include "ui/gfx/render_text.h" #include "ui/vector_icons/vector_icons.h" -namespace vr_shell { +namespace vr { namespace { @@ -65,7 +65,7 @@ : GetSchemeColor(level, color_scheme); } -void setEmphasis(vr_shell::RenderTextWrapper* render_text, +void setEmphasis(vr::RenderTextWrapper* render_text, bool emphasis, const gfx::Range& range, const ColorScheme& color_scheme) { @@ -87,8 +87,7 @@ UrlBarTexture::UrlBarTexture( bool web_vr, const base::Callback<void(UiUnsupportedMode)>& failure_callback) - : has_back_button_(!web_vr), - failure_callback_(failure_callback) {} + : has_back_button_(!web_vr), failure_callback_(failure_callback) {} UrlBarTexture::~UrlBarTexture() = default; @@ -350,7 +349,7 @@ failure_callback_.Run(UiUnsupportedMode::kCouldNotElideURL); } - vr_shell::RenderTextWrapper vr_render_text(render_text.get()); + vr::RenderTextWrapper vr_render_text(render_text.get()); ApplyUrlStyling(text, parsed, state_.security_level, &vr_render_text, color_scheme()); @@ -364,7 +363,7 @@ const base::string16& formatted_url, const url::Parsed& parsed, const security_state::SecurityLevel security_level, - vr_shell::RenderTextWrapper* render_text, + vr::RenderTextWrapper* render_text, const ColorScheme& color_scheme) { const url::Component& scheme = parsed.scheme; const url::Component& host = parsed.host; @@ -433,4 +432,4 @@ return size_; } -} // namespace vr_shell +} // namespace vr
diff --git a/chrome/browser/android/vr_shell/textures/url_bar_texture.h b/chrome/browser/vr/elements/url_bar_texture.h similarity index 81% rename from chrome/browser/android/vr_shell/textures/url_bar_texture.h rename to chrome/browser/vr/elements/url_bar_texture.h index ed721e5..58e88d5 100644 --- a/chrome/browser/android/vr_shell/textures/url_bar_texture.h +++ b/chrome/browser/vr/elements/url_bar_texture.h
@@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CHROME_BROWSER_ANDROID_VR_SHELL_TEXTURES_URL_BAR_TEXTURE_H_ -#define CHROME_BROWSER_ANDROID_VR_SHELL_TEXTURES_URL_BAR_TEXTURE_H_ +#ifndef CHROME_BROWSER_VR_ELEMENTS_URL_BAR_TEXTURE_H_ +#define CHROME_BROWSER_VR_ELEMENTS_URL_BAR_TEXTURE_H_ #include <memory> #include <vector> @@ -11,10 +11,10 @@ #include "base/callback.h" #include "base/macros.h" #include "base/strings/utf_string_conversions.h" -#include "chrome/browser/android/vr_shell/textures/ui_texture.h" -#include "chrome/browser/android/vr_shell/toolbar_state.h" -#include "chrome/browser/android/vr_shell/ui_interface.h" -#include "chrome/browser/android/vr_shell/ui_unsupported_mode.h" +#include "chrome/browser/vr/elements/ui_texture.h" +#include "chrome/browser/vr/toolbar_state.h" +#include "chrome/browser/vr/ui_interface.h" +#include "chrome/browser/vr/ui_unsupported_mode.h" #include "components/security_state/core/security_state.h" #include "ui/gfx/geometry/rect_f.h" #include "url/gurl.h" @@ -24,7 +24,7 @@ class RenderText; } // namespace gfx -namespace vr_shell { +namespace vr { class RenderTextWrapper; struct ColorScheme; @@ -57,7 +57,7 @@ static void ApplyUrlStyling(const base::string16& formatted_url, const url::Parsed& parsed, security_state::SecurityLevel security_level, - vr_shell::RenderTextWrapper* render_text, + vr::RenderTextWrapper* render_text, const ColorScheme& color_scheme); std::unique_ptr<gfx::RenderText> url_render_text_; @@ -89,6 +89,6 @@ DISALLOW_COPY_AND_ASSIGN(UrlBarTexture); }; -} // namespace vr_shell +} // namespace vr -#endif // CHROME_BROWSER_ANDROID_VR_SHELL_TEXTURES_URL_BAR_TEXTURE_H_ +#endif // CHROME_BROWSER_VR_ELEMENTS_URL_BAR_TEXTURE_H_
diff --git a/chrome/browser/android/vr_shell/textures/url_bar_texture_unittest.cc b/chrome/browser/vr/elements/url_bar_texture_unittest.cc similarity index 96% rename from chrome/browser/android/vr_shell/textures/url_bar_texture_unittest.cc rename to chrome/browser/vr/elements/url_bar_texture_unittest.cc index f9701a40..1f36bee 100644 --- a/chrome/browser/android/vr_shell/textures/url_bar_texture_unittest.cc +++ b/chrome/browser/vr/elements/url_bar_texture_unittest.cc
@@ -2,14 +2,15 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/android/vr_shell/textures/url_bar_texture.h" +#include "chrome/browser/vr/elements/url_bar_texture.h" #include "base/bind.h" #include "base/macros.h" #include "base/memory/ptr_util.h" #include "base/strings/utf_string_conversions.h" -#include "chrome/browser/android/vr_shell/textures/render_text_wrapper.h" -#include "chrome/browser/android/vr_shell/toolbar_state.h" +#include "build/build_config.h" +#include "chrome/browser/vr/elements/render_text_wrapper.h" +#include "chrome/browser/vr/toolbar_state.h" #include "components/security_state/core/security_state.h" #include "components/toolbar/vector_icons.h" #include "components/url_formatter/url_formatter.h" @@ -22,7 +23,7 @@ using security_state::SecurityLevel; -namespace vr_shell { +namespace vr { // TODO(cjgrant): Use ColorScheme instead of hardcoded values // where it makes sense. @@ -59,7 +60,7 @@ static void TestUrlStyling(const base::string16& formatted_url, const url::Parsed& parsed, security_state::SecurityLevel security_level, - vr_shell::RenderTextWrapper* render_text, + vr::RenderTextWrapper* render_text, const ColorScheme& color_scheme) { ApplyUrlStyling(formatted_url, parsed, security_level, render_text, color_scheme); @@ -292,4 +293,4 @@ EXPECT_EQ(UiUnsupportedMode::kCount, texture.unsupported_mode()); } -} // namespace vr_shell +} // namespace vr
diff --git a/chrome/browser/android/vr_shell/font_fallback.cc b/chrome/browser/vr/font_fallback.cc similarity index 97% rename from chrome/browser/android/vr_shell/font_fallback.cc rename to chrome/browser/vr/font_fallback.cc index 5c0f997..bd5fee5 100644 --- a/chrome/browser/android/vr_shell/font_fallback.cc +++ b/chrome/browser/vr/font_fallback.cc
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/android/vr_shell/font_fallback.h" +#include "chrome/browser/vr/font_fallback.h" #include <map> #include <set> @@ -17,7 +17,7 @@ #include "third_party/skia/include/ports/SkFontMgr.h" #include "ui/gfx/platform_font_linux.h" -namespace vr_shell { +namespace vr { namespace { @@ -150,4 +150,4 @@ return cached_font_set.GetFallbackFontNameForChar(c, font_name); } -} // namespace vr_shell +} // namespace vr
diff --git a/chrome/browser/android/vr_shell/font_fallback.h b/chrome/browser/vr/font_fallback.h similarity index 83% rename from chrome/browser/android/vr_shell/font_fallback.h rename to chrome/browser/vr/font_fallback.h index c0104aa1..72738bb 100644 --- a/chrome/browser/android/vr_shell/font_fallback.h +++ b/chrome/browser/vr/font_fallback.h
@@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CHROME_BROWSER_ANDROID_VR_SHELL_FONT_FALLBACK_H_ -#define CHROME_BROWSER_ANDROID_VR_SHELL_FONT_FALLBACK_H_ +#ifndef CHROME_BROWSER_VR_FONT_FALLBACK_H_ +#define CHROME_BROWSER_VR_FONT_FALLBACK_H_ #include <string> @@ -13,7 +13,7 @@ class Font; } // namespace gfx -namespace vr_shell { +namespace vr { // Return a font name which provides a glyph for the Unicode code point // specified by character. @@ -36,6 +36,6 @@ const std::string& preferred_locale, std::string* font_name); -} // namespace vr_shell +} // namespace vr -#endif // CHROME_BROWSER_ANDROID_VR_SHELL_FONT_FALLBACK_H_ +#endif // CHROME_BROWSER_VR_FONT_FALLBACK_H_
diff --git a/chrome/browser/android/vr_shell/fps_meter.cc b/chrome/browser/vr/fps_meter.cc similarity index 94% rename from chrome/browser/android/vr_shell/fps_meter.cc rename to chrome/browser/vr/fps_meter.cc index c6d03126..c4a79526 100644 --- a/chrome/browser/android/vr_shell/fps_meter.cc +++ b/chrome/browser/vr/fps_meter.cc
@@ -2,11 +2,11 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/android/vr_shell/fps_meter.h" +#include "chrome/browser/vr/fps_meter.h" #include <algorithm> -namespace vr_shell { +namespace vr { namespace { @@ -84,4 +84,4 @@ return values_.GetSum() / values_.GetCount(); } -} // namespace vr_shell +} // namespace vr
diff --git a/chrome/browser/android/vr_shell/fps_meter.h b/chrome/browser/vr/fps_meter.h similarity index 86% rename from chrome/browser/android/vr_shell/fps_meter.h rename to chrome/browser/vr/fps_meter.h index 86da976..4fd90821 100644 --- a/chrome/browser/android/vr_shell/fps_meter.h +++ b/chrome/browser/vr/fps_meter.h
@@ -2,15 +2,15 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CHROME_BROWSER_ANDROID_VR_SHELL_FPS_METER_H_ -#define CHROME_BROWSER_ANDROID_VR_SHELL_FPS_METER_H_ +#ifndef CHROME_BROWSER_VR_FPS_METER_H_ +#define CHROME_BROWSER_VR_FPS_METER_H_ #include <vector> #include "base/macros.h" #include "base/time/time.h" -namespace vr_shell { +namespace vr { class SampleQueue { public: @@ -68,6 +68,6 @@ SampleQueue values_; }; -} // namespace vr_shell +} // namespace vr -#endif // CHROME_BROWSER_ANDROID_VR_SHELL_FPS_METER_H_ +#endif // CHROME_BROWSER_VR_FPS_METER_H_
diff --git a/chrome/browser/android/vr_shell/fps_meter_unittest.cc b/chrome/browser/vr/fps_meter_unittest.cc similarity index 96% rename from chrome/browser/android/vr_shell/fps_meter_unittest.cc rename to chrome/browser/vr/fps_meter_unittest.cc index 18403f3..481086b 100644 --- a/chrome/browser/android/vr_shell/fps_meter_unittest.cc +++ b/chrome/browser/vr/fps_meter_unittest.cc
@@ -2,12 +2,12 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/android/vr_shell/fps_meter.h" +#include "chrome/browser/vr/fps_meter.h" #include "base/macros.h" #include "testing/gtest/include/gtest/gtest.h" -namespace vr_shell { +namespace vr { namespace { @@ -110,4 +110,4 @@ EXPECT_EQ(30, meter.GetAverage()); } -} // namespace vr_shell +} // namespace vr
diff --git a/chrome/browser/android/vr_shell/gltf_asset.cc b/chrome/browser/vr/gltf_asset.cc similarity index 95% rename from chrome/browser/android/vr_shell/gltf_asset.cc rename to chrome/browser/vr/gltf_asset.cc index 752cd7cb..4591715 100644 --- a/chrome/browser/android/vr_shell/gltf_asset.cc +++ b/chrome/browser/vr/gltf_asset.cc
@@ -2,13 +2,13 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/android/vr_shell/gltf_asset.h" +#include "chrome/browser/vr/gltf_asset.h" #include <unordered_map> #include "base/logging.h" -namespace vr_shell { +namespace vr { namespace gltf { @@ -115,4 +115,4 @@ } // namespace gltf -} // namespace vr_shell +} // namespace vr
diff --git a/chrome/browser/android/vr_shell/gltf_asset.h b/chrome/browser/vr/gltf_asset.h similarity index 92% rename from chrome/browser/android/vr_shell/gltf_asset.h rename to chrome/browser/vr/gltf_asset.h index 599c02f..45bbc5d 100644 --- a/chrome/browser/android/vr_shell/gltf_asset.h +++ b/chrome/browser/vr/gltf_asset.h
@@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CHROME_BROWSER_ANDROID_VR_SHELL_GLTF_ASSET_H_ -#define CHROME_BROWSER_ANDROID_VR_SHELL_GLTF_ASSET_H_ +#ifndef CHROME_BROWSER_VR_GLTF_ASSET_H_ +#define CHROME_BROWSER_VR_GLTF_ASSET_H_ #include <map> #include <memory> @@ -12,7 +12,7 @@ #include "ui/gl/gl_bindings.h" -namespace vr_shell { +namespace vr { namespace gltf { @@ -119,6 +119,6 @@ } // namespace gltf -} // namespace vr_shell +} // namespace vr -#endif // CHROME_BROWSER_ANDROID_VR_SHELL_GLTF_ASSET_H_ +#endif // CHROME_BROWSER_VR_GLTF_ASSET_H_
diff --git a/chrome/browser/android/vr_shell/gltf_parser.cc b/chrome/browser/vr/gltf_parser.cc similarity index 98% rename from chrome/browser/android/vr_shell/gltf_parser.cc rename to chrome/browser/vr/gltf_parser.cc index 210afcd..b5e8aa2 100644 --- a/chrome/browser/android/vr_shell/gltf_parser.cc +++ b/chrome/browser/vr/gltf_parser.cc
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/android/vr_shell/gltf_parser.h" +#include "chrome/browser/vr/gltf_parser.h" #include "base/bind.h" #include "base/bind_helpers.h" @@ -18,7 +18,7 @@ #include "net/base/filename_util.h" #include "url/gurl.h" -namespace vr_shell { +namespace vr { namespace { constexpr const char kFailedtoReadBinaryGltfMsg[] = @@ -428,4 +428,4 @@ return gltf_asset; } -} // namespace vr_shell +} // namespace vr
diff --git a/chrome/browser/android/vr_shell/gltf_parser.h b/chrome/browser/vr/gltf_parser.h similarity index 91% rename from chrome/browser/android/vr_shell/gltf_parser.h rename to chrome/browser/vr/gltf_parser.h index 3c4406f..8d9931c3 100644 --- a/chrome/browser/android/vr_shell/gltf_parser.h +++ b/chrome/browser/vr/gltf_parser.h
@@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CHROME_BROWSER_ANDROID_VR_SHELL_GLTF_PARSER_H_ -#define CHROME_BROWSER_ANDROID_VR_SHELL_GLTF_PARSER_H_ +#ifndef CHROME_BROWSER_VR_GLTF_PARSER_H_ +#define CHROME_BROWSER_VR_GLTF_PARSER_H_ #include <memory> #include <string> @@ -11,9 +11,9 @@ #include "base/files/file_path.h" #include "base/values.h" -#include "chrome/browser/android/vr_shell/gltf_asset.h" +#include "chrome/browser/vr/gltf_asset.h" -namespace vr_shell { +namespace vr { // Parser for glTF 1.0 specification // https://github.com/KhronosGroup/glTF/tree/master/specification/1.0 @@ -77,6 +77,6 @@ const base::FilePath& path = base::FilePath()); }; -} // namespace vr_shell +} // namespace vr -#endif // CHROME_BROWSER_ANDROID_VR_SHELL_GLTF_PARSER_H_ +#endif // CHROME_BROWSER_VR_GLTF_PARSER_H_
diff --git a/chrome/browser/android/vr_shell/gltf_parser_unittest.cc b/chrome/browser/vr/gltf_parser_unittest.cc similarity index 97% rename from chrome/browser/android/vr_shell/gltf_parser_unittest.cc rename to chrome/browser/vr/gltf_parser_unittest.cc index 657bcd34..c1ffa435 100644 --- a/chrome/browser/android/vr_shell/gltf_parser_unittest.cc +++ b/chrome/browser/vr/gltf_parser_unittest.cc
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/android/vr_shell/gltf_parser.h" +#include "chrome/browser/vr/gltf_parser.h" #include <memory> @@ -11,10 +11,10 @@ #include "base/json/json_file_value_serializer.h" #include "base/memory/ptr_util.h" #include "base/values.h" -#include "chrome/browser/android/vr_shell/test/paths.h" +#include "chrome/browser/vr/test/paths.h" #include "testing/gtest/include/gtest/gtest.h" -namespace vr_shell { +namespace vr { class DataDrivenTest : public testing::Test { protected: @@ -173,4 +173,4 @@ EXPECT_EQ(0, buffer_view->buffer); } -} // namespace vr_shell +} // namespace vr
diff --git a/chrome/browser/android/vr_shell/run_all_unittests.cc b/chrome/browser/vr/run_all_unittests.cc similarity index 97% rename from chrome/browser/android/vr_shell/run_all_unittests.cc rename to chrome/browser/vr/run_all_unittests.cc index 7c615de..9cfe7d8 100644 --- a/chrome/browser/android/vr_shell/run_all_unittests.cc +++ b/chrome/browser/vr/run_all_unittests.cc
@@ -7,6 +7,7 @@ #include "base/path_service.h" #include "base/test/launcher/unit_test_launcher.h" #include "base/test/test_suite.h" +#include "build/build_config.h" #include "ui/base/resource/resource_bundle.h" #include "ui/base/ui_base_paths.h"
diff --git a/chrome/browser/android/vr_shell/test/data/sample.bin b/chrome/browser/vr/test/data/sample.bin similarity index 100% rename from chrome/browser/android/vr_shell/test/data/sample.bin rename to chrome/browser/vr/test/data/sample.bin
diff --git a/chrome/browser/android/vr_shell/test/data/sample.glb b/chrome/browser/vr/test/data/sample.glb similarity index 100% rename from chrome/browser/android/vr_shell/test/data/sample.glb rename to chrome/browser/vr/test/data/sample.glb Binary files differ
diff --git a/chrome/browser/android/vr_shell/test/data/sample_external.gltf b/chrome/browser/vr/test/data/sample_external.gltf similarity index 100% rename from chrome/browser/android/vr_shell/test/data/sample_external.gltf rename to chrome/browser/vr/test/data/sample_external.gltf
diff --git a/chrome/browser/android/vr_shell/test/data/sample_inline.gltf b/chrome/browser/vr/test/data/sample_inline.gltf similarity index 100% rename from chrome/browser/android/vr_shell/test/data/sample_inline.gltf rename to chrome/browser/vr/test/data/sample_inline.gltf
diff --git a/chrome/browser/android/vr_shell/test/paths.cc b/chrome/browser/vr/test/paths.cc similarity index 77% rename from chrome/browser/android/vr_shell/test/paths.cc rename to chrome/browser/vr/test/paths.cc index b06cabd..068921f 100644 --- a/chrome/browser/android/vr_shell/test/paths.cc +++ b/chrome/browser/vr/test/paths.cc
@@ -2,13 +2,13 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/android/vr_shell/test/paths.h" +#include "chrome/browser/vr/test/paths.h" #include "base/files/file_util.h" #include "base/path_service.h" #include "testing/gtest/include/gtest/gtest.h" -namespace vr_shell { +namespace vr { namespace test { void GetTestDataPath(base::FilePath* result) { @@ -16,8 +16,7 @@ ASSERT_TRUE(PathService::Get(base::DIR_SOURCE_ROOT, &path)); path = path.Append(FILE_PATH_LITERAL("chrome")) .Append(FILE_PATH_LITERAL("browser")) - .Append(FILE_PATH_LITERAL("android")) - .Append(FILE_PATH_LITERAL("vr_shell")) + .Append(FILE_PATH_LITERAL("vr")) .Append(FILE_PATH_LITERAL("test")) .Append(FILE_PATH_LITERAL("data")); ASSERT_TRUE(base::PathExists(path)); @@ -25,4 +24,4 @@ } } // namespace test -} // namespace vr_shell +} // namespace vr
diff --git a/chrome/browser/vr/test/paths.h b/chrome/browser/vr/test/paths.h new file mode 100644 index 0000000..4a14a92 --- /dev/null +++ b/chrome/browser/vr/test/paths.h
@@ -0,0 +1,18 @@ +// Copyright 2017 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROME_BROWSER_VR_TEST_PATHS_H_ +#define CHROME_BROWSER_VR_TEST_PATHS_H_ + +#include "base/files/file_path.h" + +namespace vr { +namespace test { + +void GetTestDataPath(base::FilePath* result); + +} // namespace test +} // namespace vr + +#endif // CHROME_BROWSER_VR_TEST_PATHS_H_
diff --git a/chrome/browser/android/vr_shell/toolbar_helper.cc b/chrome/browser/vr/toolbar_helper.cc similarity index 90% rename from chrome/browser/android/vr_shell/toolbar_helper.cc rename to chrome/browser/vr/toolbar_helper.cc index b776a57..e7f5e12c5 100644 --- a/chrome/browser/android/vr_shell/toolbar_helper.cc +++ b/chrome/browser/vr/toolbar_helper.cc
@@ -2,14 +2,14 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/android/vr_shell/toolbar_helper.h" +#include "chrome/browser/vr/toolbar_helper.h" #include "base/memory/ptr_util.h" #include "components/toolbar/toolbar_model_impl.h" class ToolbarModelDelegate; -namespace vr_shell { +namespace vr { namespace { @@ -38,4 +38,4 @@ ui_->SetToolbarState(state); } -} // namespace vr_shell +} // namespace vr
diff --git a/chrome/browser/android/vr_shell/toolbar_helper.h b/chrome/browser/vr/toolbar_helper.h similarity index 67% rename from chrome/browser/android/vr_shell/toolbar_helper.h rename to chrome/browser/vr/toolbar_helper.h index c87491d8..d29e184c 100644 --- a/chrome/browser/android/vr_shell/toolbar_helper.h +++ b/chrome/browser/vr/toolbar_helper.h
@@ -2,16 +2,16 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CHROME_BROWSER_ANDROID_VR_SHELL_TOOLBAR_HELPER_H_ -#define CHROME_BROWSER_ANDROID_VR_SHELL_TOOLBAR_HELPER_H_ +#ifndef CHROME_BROWSER_VR_TOOLBAR_HELPER_H_ +#define CHROME_BROWSER_VR_TOOLBAR_HELPER_H_ -#include "chrome/browser/android/vr_shell/toolbar_state.h" -#include "chrome/browser/android/vr_shell/ui_interface.h" +#include "chrome/browser/vr/toolbar_state.h" +#include "chrome/browser/vr/ui_interface.h" class ToolbarModel; class ToolbarModelDelegate; -namespace vr_shell { +namespace vr { class UiInterface; @@ -31,6 +31,6 @@ ToolbarState current_state_; }; -} // namespace vr_shell +} // namespace vr -#endif // CHROME_BROWSER_ANDROID_VR_SHELL_TOOLBAR_HELPER_H_ +#endif // CHROME_BROWSER_VR_TOOLBAR_HELPER_H_
diff --git a/chrome/browser/android/vr_shell/toolbar_state.cc b/chrome/browser/vr/toolbar_state.cc similarity index 92% rename from chrome/browser/android/vr_shell/toolbar_state.cc rename to chrome/browser/vr/toolbar_state.cc index 2d684527..f22180d 100644 --- a/chrome/browser/android/vr_shell/toolbar_state.cc +++ b/chrome/browser/vr/toolbar_state.cc
@@ -2,9 +2,9 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/android/vr_shell/toolbar_state.h" +#include "chrome/browser/vr/toolbar_state.h" -namespace vr_shell { +namespace vr { ToolbarState::ToolbarState() : gurl(GURL()), @@ -40,4 +40,4 @@ return !(*this == other); } -} // namespace vr_shell +} // namespace vr
diff --git a/chrome/browser/android/vr_shell/toolbar_state.h b/chrome/browser/vr/toolbar_state.h similarity index 81% rename from chrome/browser/android/vr_shell/toolbar_state.h rename to chrome/browser/vr/toolbar_state.h index 0a1eb78..dcfeaa3 100644 --- a/chrome/browser/android/vr_shell/toolbar_state.h +++ b/chrome/browser/vr/toolbar_state.h
@@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CHROME_BROWSER_ANDROID_VR_SHELL_TOOLBAR_STATE_H_ -#define CHROME_BROWSER_ANDROID_VR_SHELL_TOOLBAR_STATE_H_ +#ifndef CHROME_BROWSER_VR_TOOLBAR_STATE_H_ +#define CHROME_BROWSER_VR_TOOLBAR_STATE_H_ #include "components/security_state/core/security_state.h" #include "url/gurl.h" @@ -12,7 +12,7 @@ struct VectorIcon; } -namespace vr_shell { +namespace vr { // Passes information obtained from ToolbarModel to the VR UI framework. struct ToolbarState { @@ -37,6 +37,6 @@ bool offline_page; }; -} // namespace vr_shell +} // namespace vr -#endif // CHROME_BROWSER_ANDROID_VR_SHELL_TOOLBAR_STATE_H_ +#endif // CHROME_BROWSER_VR_TOOLBAR_STATE_H_
diff --git a/chrome/browser/android/vr_shell/ui_browser_interface.h b/chrome/browser/vr/ui_browser_interface.h similarity index 65% rename from chrome/browser/android/vr_shell/ui_browser_interface.h rename to chrome/browser/vr/ui_browser_interface.h index d0456055..c787e8a 100644 --- a/chrome/browser/android/vr_shell/ui_browser_interface.h +++ b/chrome/browser/vr/ui_browser_interface.h
@@ -2,12 +2,12 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CHROME_BROWSER_ANDROID_VR_SHELL_UI_BROWSER_INTERFACE_H_ -#define CHROME_BROWSER_ANDROID_VR_SHELL_UI_BROWSER_INTERFACE_H_ +#ifndef CHROME_BROWSER_VR_UI_BROWSER_INTERFACE_H_ +#define CHROME_BROWSER_VR_UI_BROWSER_INTERFACE_H_ -#include "chrome/browser/android/vr_shell/ui_unsupported_mode.h" +#include "chrome/browser/vr/ui_unsupported_mode.h" -namespace vr_shell { +namespace vr { // An interface for the UI to communicate with VrShell. Many of the functions // in this interface are proxies to methods on VrShell. @@ -22,6 +22,6 @@ virtual void OnUnsupportedMode(UiUnsupportedMode mode) = 0; }; -} // namespace vr_shell +} // namespace vr -#endif // CHROME_BROWSER_ANDROID_VR_SHELL_UI_BROWSER_INTERFACE_H_ +#endif // CHROME_BROWSER_VR_UI_BROWSER_INTERFACE_H_
diff --git a/chrome/browser/android/vr_shell/ui_element_renderer.h b/chrome/browser/vr/ui_element_renderer.h similarity index 79% rename from chrome/browser/android/vr_shell/ui_element_renderer.h rename to chrome/browser/vr/ui_element_renderer.h index 24fd174..bf7bfcf 100644 --- a/chrome/browser/android/vr_shell/ui_element_renderer.h +++ b/chrome/browser/vr/ui_element_renderer.h
@@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CHROME_BROWSER_ANDROID_VR_SHELL_UI_ELEMENT_RENDERER_H_ -#define CHROME_BROWSER_ANDROID_VR_SHELL_UI_ELEMENT_RENDERER_H_ +#ifndef CHROME_BROWSER_VR_UI_ELEMENT_RENDERER_H_ +#define CHROME_BROWSER_VR_UI_ELEMENT_RENDERER_H_ #include "third_party/skia/include/core/SkColor.h" @@ -12,7 +12,7 @@ class Transform; } // namespace gfx -namespace vr_shell { +namespace vr { // This is the interface offered by VrShell's GL system to UI elements. class UiElementRenderer { @@ -30,6 +30,6 @@ float opacity) = 0; }; -} // namespace vr_shell +} // namespace vr -#endif // CHROME_BROWSER_ANDROID_VR_SHELL_UI_ELEMENT_RENDERER_H_ +#endif // CHROME_BROWSER_VR_UI_ELEMENT_RENDERER_H_
diff --git a/chrome/browser/android/vr_shell/ui_input_manager.cc b/chrome/browser/vr/ui_input_manager.cc similarity index 97% rename from chrome/browser/android/vr_shell/ui_input_manager.cc rename to chrome/browser/vr/ui_input_manager.cc index 1a82987..7e96486a 100644 --- a/chrome/browser/android/vr_shell/ui_input_manager.cc +++ b/chrome/browser/vr/ui_input_manager.cc
@@ -2,16 +2,16 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/android/vr_shell/ui_input_manager.h" +#include "chrome/browser/vr/ui_input_manager.h" #include "base/macros.h" -#include "chrome/browser/android/vr_shell/ui_elements/ui_element.h" -#include "chrome/browser/android/vr_shell/ui_scene.h" +#include "chrome/browser/vr/elements/ui_element.h" +#include "chrome/browser/vr/ui_scene.h" // TODO(tiborg): Remove include once we use a generic type to pass scroll/fling // gestures. #include "third_party/WebKit/public/platform/WebGestureEvent.h" -namespace vr_shell { +namespace vr { namespace { @@ -343,4 +343,4 @@ return true; } -} // namespace vr_shell +} // namespace vr
diff --git a/chrome/browser/android/vr_shell/ui_input_manager.h b/chrome/browser/vr/ui_input_manager.h similarity index 92% rename from chrome/browser/android/vr_shell/ui_input_manager.h rename to chrome/browser/vr/ui_input_manager.h index 10e9d4b1..a333a79 100644 --- a/chrome/browser/android/vr_shell/ui_input_manager.h +++ b/chrome/browser/vr/ui_input_manager.h
@@ -2,23 +2,27 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CHROME_BROWSER_ANDROID_VR_SHELL_UI_INPUT_MANAGER_H_ -#define CHROME_BROWSER_ANDROID_VR_SHELL_UI_INPUT_MANAGER_H_ +#ifndef CHROME_BROWSER_VR_UI_INPUT_MANAGER_H_ +#define CHROME_BROWSER_VR_UI_INPUT_MANAGER_H_ #include <memory> +#include <vector> -// TODO(tiborg): Remove include once we use a generic type to pass scroll/fling -// gestures. -#include "chrome/browser/android/vr_shell/vr_controller.h" #include "ui/gfx/geometry/point3_f.h" #include "ui/gfx/geometry/point_f.h" #include "ui/gfx/geometry/vector3d_f.h" -namespace vr_shell { +namespace blink { +class WebGestureEvent; +} + +namespace vr { class UiScene; class UiElement; +using GestureList = std::vector<std::unique_ptr<blink::WebGestureEvent>>; + // Receives interaction events with the web content from the UiInputManager. class UiInputManagerDelegate { public: @@ -115,6 +119,6 @@ ButtonState previous_button_state_ = ButtonState::UP; }; -} // namespace vr_shell +} // namespace vr -#endif // CHROME_BROWSER_ANDROID_VR_SHELL_UI_INPUT_MANAGER_H_ +#endif // CHROME_BROWSER_VR_UI_INPUT_MANAGER_H_
diff --git a/chrome/browser/android/vr_shell/ui_interface.h b/chrome/browser/vr/ui_interface.h similarity index 88% rename from chrome/browser/android/vr_shell/ui_interface.h rename to chrome/browser/vr/ui_interface.h index 29c3bf3..fde6f7f 100644 --- a/chrome/browser/android/vr_shell/ui_interface.h +++ b/chrome/browser/vr/ui_interface.h
@@ -2,14 +2,14 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CHROME_BROWSER_ANDROID_VR_SHELL_UI_INTERFACE_H_ -#define CHROME_BROWSER_ANDROID_VR_SHELL_UI_INTERFACE_H_ +#ifndef CHROME_BROWSER_VR_UI_INTERFACE_H_ +#define CHROME_BROWSER_VR_UI_INTERFACE_H_ #include "components/security_state/core/security_state.h" class SkBitmap; -namespace vr_shell { +namespace vr { struct ToolbarState; @@ -53,6 +53,6 @@ virtual void RemoveTab(bool incognito, int id) {} }; -} // namespace vr_shell +} // namespace vr -#endif // CHROME_BROWSER_ANDROID_VR_SHELL_UI_INTERFACE_H_ +#endif // CHROME_BROWSER_VR_UI_INTERFACE_H_
diff --git a/chrome/browser/android/vr_shell/ui_scene.cc b/chrome/browser/vr/ui_scene.cc similarity index 96% rename from chrome/browser/android/vr_shell/ui_scene.cc rename to chrome/browser/vr/ui_scene.cc index 5956b75..3c65f5d 100644 --- a/chrome/browser/android/vr_shell/ui_scene.cc +++ b/chrome/browser/vr/ui_scene.cc
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/android/vr_shell/ui_scene.h" +#include "chrome/browser/vr/ui_scene.h" #include <string> #include <utility> @@ -10,11 +10,11 @@ #include "base/memory/ptr_util.h" #include "base/time/time.h" #include "base/values.h" -#include "chrome/browser/android/vr_shell/animation.h" -#include "chrome/browser/android/vr_shell/easing.h" -#include "chrome/browser/android/vr_shell/ui_elements/ui_element.h" +#include "chrome/browser/vr/animation.h" +#include "chrome/browser/vr/easing.h" +#include "chrome/browser/vr/elements/ui_element.h" -namespace vr_shell { +namespace vr { namespace { @@ -280,4 +280,4 @@ } } -} // namespace vr_shell +} // namespace vr
diff --git a/chrome/browser/android/vr_shell/ui_scene.h b/chrome/browser/vr/ui_scene.h similarity index 89% rename from chrome/browser/android/vr_shell/ui_scene.h rename to chrome/browser/vr/ui_scene.h index 12bf9df..d7f52163 100644 --- a/chrome/browser/android/vr_shell/ui_scene.h +++ b/chrome/browser/vr/ui_scene.h
@@ -2,24 +2,24 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CHROME_BROWSER_ANDROID_VR_SHELL_UI_SCENE_H_ -#define CHROME_BROWSER_ANDROID_VR_SHELL_UI_SCENE_H_ +#ifndef CHROME_BROWSER_VR_UI_SCENE_H_ +#define CHROME_BROWSER_VR_UI_SCENE_H_ #include <memory> #include <vector> #include "base/macros.h" #include "base/memory/ref_counted.h" -#include "chrome/browser/android/vr_shell/color_scheme.h" -#include "chrome/browser/android/vr_shell/ui_elements/ui_element_debug_id.h" +#include "chrome/browser/vr/color_scheme.h" +#include "chrome/browser/vr/elements/ui_element_debug_id.h" #include "third_party/skia/include/core/SkColor.h" namespace base { class ListValue; class TimeTicks; -} +} // namespace base -namespace vr_shell { +namespace vr { class Animation; class UiElement; @@ -105,6 +105,6 @@ DISALLOW_COPY_AND_ASSIGN(UiScene); }; -} // namespace vr_shell +} // namespace vr -#endif // CHROME_BROWSER_ANDROID_VR_SHELL_UI_SCENE_H_ +#endif // CHROME_BROWSER_VR_UI_SCENE_H_
diff --git a/chrome/browser/android/vr_shell/ui_scene_manager.cc b/chrome/browser/vr/ui_scene_manager.cc similarity index 93% rename from chrome/browser/android/vr_shell/ui_scene_manager.cc rename to chrome/browser/vr/ui_scene_manager.cc index 5e756c6..9dbf83cb 100644 --- a/chrome/browser/android/vr_shell/ui_scene_manager.cc +++ b/chrome/browser/vr/ui_scene_manager.cc
@@ -2,31 +2,31 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/android/vr_shell/ui_scene_manager.h" +#include "chrome/browser/vr/ui_scene_manager.h" #include "base/callback.h" #include "base/memory/ptr_util.h" -#include "chrome/browser/android/vr_shell/textures/close_button_texture.h" -#include "chrome/browser/android/vr_shell/textures/ui_texture.h" -#include "chrome/browser/android/vr_shell/ui_browser_interface.h" -#include "chrome/browser/android/vr_shell/ui_elements/button.h" -#include "chrome/browser/android/vr_shell/ui_elements/exclusive_screen_toast.h" -#include "chrome/browser/android/vr_shell/ui_elements/exit_prompt.h" -#include "chrome/browser/android/vr_shell/ui_elements/exit_prompt_backplane.h" -#include "chrome/browser/android/vr_shell/ui_elements/loading_indicator.h" -#include "chrome/browser/android/vr_shell/ui_elements/screen_dimmer.h" -#include "chrome/browser/android/vr_shell/ui_elements/splash_screen_icon.h" -#include "chrome/browser/android/vr_shell/ui_elements/system_indicator.h" -#include "chrome/browser/android/vr_shell/ui_elements/transient_url_bar.h" -#include "chrome/browser/android/vr_shell/ui_elements/ui_element.h" -#include "chrome/browser/android/vr_shell/ui_elements/ui_element_debug_id.h" -#include "chrome/browser/android/vr_shell/ui_elements/url_bar.h" -#include "chrome/browser/android/vr_shell/ui_scene.h" +#include "chrome/browser/vr/elements/button.h" +#include "chrome/browser/vr/elements/close_button_texture.h" +#include "chrome/browser/vr/elements/exclusive_screen_toast.h" +#include "chrome/browser/vr/elements/exit_prompt.h" +#include "chrome/browser/vr/elements/exit_prompt_backplane.h" +#include "chrome/browser/vr/elements/loading_indicator.h" +#include "chrome/browser/vr/elements/screen_dimmer.h" +#include "chrome/browser/vr/elements/splash_screen_icon.h" +#include "chrome/browser/vr/elements/system_indicator.h" +#include "chrome/browser/vr/elements/transient_url_bar.h" +#include "chrome/browser/vr/elements/ui_element.h" +#include "chrome/browser/vr/elements/ui_element_debug_id.h" +#include "chrome/browser/vr/elements/ui_texture.h" +#include "chrome/browser/vr/elements/url_bar.h" +#include "chrome/browser/vr/ui_browser_interface.h" +#include "chrome/browser/vr/ui_scene.h" #include "chrome/grit/generated_resources.h" #include "components/vector_icons/vector_icons.h" #include "ui/vector_icons/vector_icons.h" -namespace vr_shell { +namespace vr { namespace { @@ -165,7 +165,7 @@ element = base::MakeUnique<ScreenDimmer>(); element->set_debug_id(kScreenDimmer); element->set_id(AllocateId()); - element->set_fill(vr_shell::Fill::NONE); + element->set_fill(vr::Fill::NONE); element->set_visible(false); element->set_hit_testable(false); element->set_is_overlay(true); @@ -181,7 +181,7 @@ element = base::MakeUnique<PermanentSecurityWarning>(512); element->set_debug_id(kWebVrPermanentHttpSecurityWarning); element->set_id(AllocateId()); - element->set_fill(vr_shell::Fill::NONE); + element->set_fill(vr::Fill::NONE); element->set_size({kPermanentWarningWidth, kPermanentWarningHeight, 1}); element->set_scale({kWarningDistance, kWarningDistance, 1}); element->set_translation( @@ -201,7 +201,7 @@ element = std::move(transient_warning); element->set_debug_id(kWebVrTransientHttpSecurityWarning); element->set_id(AllocateId()); - element->set_fill(vr_shell::Fill::NONE); + element->set_fill(vr::Fill::NONE); element->set_size({kTransientWarningWidth, kTransientWarningHeight, 1}); element->set_scale({kWarningDistance, kWarningDistance, 1}); element->set_translation({0, 0, -kWarningDistance}); @@ -213,7 +213,7 @@ element = base::MakeUnique<ExitWarning>(1024); element->set_debug_id(kExitWarning); element->set_id(AllocateId()); - element->set_fill(vr_shell::Fill::NONE); + element->set_fill(vr::Fill::NONE); element->set_size({kExitWarningWidth, kExitWarningHeight, 1}); element->set_scale({kExitWarningDistance, kExitWarningDistance, 1}); element->set_translation({0, 0, -kExitWarningDistance}); @@ -268,7 +268,7 @@ element = base::MakeUnique<UiElement>(); element->set_debug_id(kContentQuad); element->set_id(AllocateId()); - element->set_fill(vr_shell::Fill::CONTENT); + element->set_fill(vr::Fill::CONTENT); element->set_size({kContentWidth, kContentHeight, 1}); element->set_translation({0, kContentVerticalOffset, -kContentDistance}); element->set_visible(false); @@ -282,7 +282,7 @@ element = base::MakeUnique<UiElement>(); element->set_debug_id(kBackplane); element->set_id(AllocateId()); - element->set_fill(vr_shell::Fill::NONE); + element->set_fill(vr::Fill::NONE); element->set_size({kBackplaneSize, kBackplaneSize, 1.0}); element->set_translation({0.0, 0.0, -kTextureOffset}); element->set_parent_id(main_content_->id()); @@ -318,7 +318,7 @@ element->set_size({kSceneSize, kSceneSize, 1.0}); element->set_translation({0.0, -kSceneHeight / 2, 0.0}); element->set_rotation(gfx::Quaternion(gfx::Vector3dF(1, 0, 0), -M_PI / 2)); - element->set_fill(vr_shell::Fill::GRID_GRADIENT); + element->set_fill(vr::Fill::GRID_GRADIENT); element->set_draw_phase(0); element->set_gridline_count(kFloorGridlineCount); floor_ = element.get(); @@ -332,7 +332,7 @@ element->set_size({kSceneSize, kSceneSize, 1.0}); element->set_translation({0.0, kSceneHeight / 2, 0.0}); element->set_rotation(gfx::Quaternion(gfx::Vector3dF(1, 0, 0), M_PI / 2)); - element->set_fill(vr_shell::Fill::OPAQUE_GRADIENT); + element->set_fill(vr::Fill::OPAQUE_GRADIENT); element->set_draw_phase(0); ceiling_ = element.get(); background_elements_.push_back(element.get()); @@ -396,7 +396,7 @@ base::MakeUnique<CloseButtonTexture>()); element->set_debug_id(kCloseButton); element->set_id(AllocateId()); - element->set_fill(vr_shell::Fill::NONE); + element->set_fill(vr::Fill::NONE); element->set_translation( gfx::Vector3dF(0, kContentVerticalOffset - (kContentHeight / 2) - 0.3, -kCloseButtonDistance)); @@ -414,7 +414,7 @@ base::Unretained(this))); element->set_debug_id(kExitPrompt); element->set_id(AllocateId()); - element->set_fill(vr_shell::Fill::NONE); + element->set_fill(vr::Fill::NONE); element->set_size({kExitPromptWidth, kExitPromptHeight, 1}); element->set_translation({0.0, kExitPromptVerticalOffset, kTextureOffset}); element->set_parent_id(main_content_->id()); @@ -428,7 +428,7 @@ &UiSceneManager::OnExitPromptBackplaneClicked, base::Unretained(this))); element->set_debug_id(kExitPromptBackplane); element->set_id(AllocateId()); - element->set_fill(vr_shell::Fill::NONE); + element->set_fill(vr::Fill::NONE); element->set_size({kExitPromptBackplaneSize, kExitPromptBackplaneSize, 1.0}); element->set_translation({0.0, 0.0, -kTextureOffset}); element->set_parent_id(exit_prompt_->id()); @@ -442,7 +442,7 @@ 512, base::TimeDelta::FromSeconds(kToastTimeoutSeconds)); element->set_debug_id(kExclusiveScreenToast); element->set_id(AllocateId()); - element->set_fill(vr_shell::Fill::NONE); + element->set_fill(vr::Fill::NONE); element->set_size({kToastWidthDMM, kToastHeightDMM, 1}); element->set_visible(false); element->set_hit_testable(false); @@ -786,4 +786,4 @@ return ColorScheme::GetColorScheme(mode()); } -} // namespace vr_shell +} // namespace vr
diff --git a/chrome/browser/android/vr_shell/ui_scene_manager.h b/chrome/browser/vr/ui_scene_manager.h similarity index 89% rename from chrome/browser/android/vr_shell/ui_scene_manager.h rename to chrome/browser/vr/ui_scene_manager.h index 81e5615..c306026 100644 --- a/chrome/browser/android/vr_shell/ui_scene_manager.h +++ b/chrome/browser/vr/ui_scene_manager.h
@@ -2,20 +2,20 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CHROME_BROWSER_ANDROID_VR_SHELL_UI_SCENE_MANAGER_H_ -#define CHROME_BROWSER_ANDROID_VR_SHELL_UI_SCENE_MANAGER_H_ +#ifndef CHROME_BROWSER_VR_UI_SCENE_MANAGER_H_ +#define CHROME_BROWSER_VR_UI_SCENE_MANAGER_H_ #include "base/gtest_prod_util.h" #include "base/macros.h" #include "base/memory/weak_ptr.h" #include "base/values.h" -#include "chrome/browser/android/vr_shell/color_scheme.h" -#include "chrome/browser/android/vr_shell/ui_elements/simple_textured_element.h" -#include "chrome/browser/android/vr_shell/ui_interface.h" -#include "chrome/browser/android/vr_shell/ui_unsupported_mode.h" +#include "chrome/browser/vr/color_scheme.h" +#include "chrome/browser/vr/elements/simple_textured_element.h" +#include "chrome/browser/vr/ui_interface.h" +#include "chrome/browser/vr/ui_unsupported_mode.h" #include "third_party/skia/include/core/SkBitmap.h" -namespace vr_shell { +namespace vr { class ExclusiveScreenToast; class LoadingIndicator; @@ -144,6 +144,6 @@ DISALLOW_COPY_AND_ASSIGN(UiSceneManager); }; -} // namespace vr_shell +} // namespace vr -#endif // CHROME_BROWSER_ANDROID_VR_SHELL_UI_SCENE_MANAGER_H_ +#endif // CHROME_BROWSER_VR_UI_SCENE_MANAGER_H_
diff --git a/chrome/browser/android/vr_shell/ui_scene_manager_unittest.cc b/chrome/browser/vr/ui_scene_manager_unittest.cc similarity index 97% rename from chrome/browser/android/vr_shell/ui_scene_manager_unittest.cc rename to chrome/browser/vr/ui_scene_manager_unittest.cc index 197bfea..22923339 100644 --- a/chrome/browser/android/vr_shell/ui_scene_manager_unittest.cc +++ b/chrome/browser/vr/ui_scene_manager_unittest.cc
@@ -2,20 +2,20 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/android/vr_shell/ui_scene_manager.h" +#include "chrome/browser/vr/ui_scene_manager.h" #include "base/macros.h" #include "base/memory/ptr_util.h" #include "base/message_loop/message_loop.h" #include "base/test/scoped_mock_time_message_loop_task_runner.h" -#include "chrome/browser/android/vr_shell/ui_browser_interface.h" -#include "chrome/browser/android/vr_shell/ui_elements/ui_element.h" -#include "chrome/browser/android/vr_shell/ui_elements/ui_element_debug_id.h" -#include "chrome/browser/android/vr_shell/ui_scene.h" +#include "chrome/browser/vr/elements/ui_element.h" +#include "chrome/browser/vr/elements/ui_element_debug_id.h" +#include "chrome/browser/vr/ui_browser_interface.h" +#include "chrome/browser/vr/ui_scene.h" #include "testing/gmock/include/gmock/gmock.h" #include "testing/gtest/include/gtest/gtest.h" -namespace vr_shell { +namespace vr { namespace { @@ -449,4 +449,4 @@ EXPECT_TRUE(VerifyVisibility(indicators, false)); } -} // namespace vr_shell +} // namespace vr
diff --git a/chrome/browser/android/vr_shell/ui_scene_unittest.cc b/chrome/browser/vr/ui_scene_unittest.cc similarity index 95% rename from chrome/browser/android/vr_shell/ui_scene_unittest.cc rename to chrome/browser/vr/ui_scene_unittest.cc index fe09178..b9afd76 100644 --- a/chrome/browser/android/vr_shell/ui_scene_unittest.cc +++ b/chrome/browser/vr/ui_scene_unittest.cc
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/android/vr_shell/ui_scene.h" +#include "chrome/browser/vr/ui_scene.h" #define _USE_MATH_DEFINES // For M_PI in MSVC. #include <cmath> @@ -11,9 +11,9 @@ #include "base/memory/ptr_util.h" #include "base/values.h" -#include "chrome/browser/android/vr_shell/animation.h" -#include "chrome/browser/android/vr_shell/easing.h" -#include "chrome/browser/android/vr_shell/ui_elements/ui_element.h" +#include "chrome/browser/vr/animation.h" +#include "chrome/browser/vr/easing.h" +#include "chrome/browser/vr/elements/ui_element.h" #include "testing/gtest/include/gtest/gtest.h" #define TOLERANCE 0.0001 @@ -23,7 +23,7 @@ EXPECT_NEAR(a.y(), b.y(), TOLERANCE); \ EXPECT_NEAR(a.z(), b.z(), TOLERANCE); -namespace vr_shell { +namespace vr { namespace { @@ -226,4 +226,4 @@ AnchoringTest, ::testing::ValuesIn(anchoring_test_cases)); -} // namespace vr_shell +} // namespace vr
diff --git a/chrome/browser/android/vr_shell/ui_unsupported_mode.h b/chrome/browser/vr/ui_unsupported_mode.h similarity index 69% rename from chrome/browser/android/vr_shell/ui_unsupported_mode.h rename to chrome/browser/vr/ui_unsupported_mode.h index 67c93fe..b144670 100644 --- a/chrome/browser/android/vr_shell/ui_unsupported_mode.h +++ b/chrome/browser/vr/ui_unsupported_mode.h
@@ -2,10 +2,10 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CHROME_BROWSER_ANDROID_VR_SHELL_UI_UNSUPPORTED_MODE_H_ -#define CHROME_BROWSER_ANDROID_VR_SHELL_UI_UNSUPPORTED_MODE_H_ +#ifndef CHROME_BROWSER_VR_UI_UNSUPPORTED_MODE_H_ +#define CHROME_BROWSER_VR_UI_UNSUPPORTED_MODE_H_ -namespace vr_shell { +namespace vr { // Ensure that this stays in sync with VRUnsupportedMode in enums.xml // These values are written to logs. New enum values can be added, but existing @@ -20,6 +20,6 @@ kCount, }; -} // namespace vr_shell +} // namespace vr -#endif // CHROME_BROWSER_ANDROID_VR_SHELL_UI_UNSUPPORTED_MODE_H_ +#endif // CHROME_BROWSER_VR_UI_UNSUPPORTED_MODE_H_
diff --git a/chrome/chrome_paks.gni b/chrome/chrome_paks.gni index 235ee70..94ccca2a 100644 --- a/chrome/chrome_paks.gni +++ b/chrome/chrome_paks.gni
@@ -184,7 +184,7 @@ # output_dir [required]: Directory to output .pak files. Locale .pak files # will always be place in $output_dir/locales # additional_extra_paks: List of extra .pak sources for resources.pak. -# exclude_locale_paks: if set to true, skip chrome_repack_locales. +# locale_whitelist: if set, override repack_whitelist for locale .pak files. # copy_data_to_bundle: # deps: # output_dir: @@ -234,24 +234,26 @@ } } - if (!defined(invoker.exclude_locale_paks) || !invoker.exclude_locale_paks) { - chrome_repack_locales("${target_name}_locales") { - forward_variables_from(invoker, - [ - "copy_data_to_bundle", - "deps", - "repack_whitelist", - "visibility", - ]) + chrome_repack_locales("${target_name}_locales") { + forward_variables_from(invoker, + [ + "copy_data_to_bundle", + "deps", + "visibility", + ]) + if (defined(invoker.locale_whitelist)) { + repack_whitelist = invoker.locale_whitelist + } else if (defined(invoker.repack_whitelist)) { + repack_whitelist = invoker.repack_whitelist + } - input_locales = locales - output_dir = "${invoker.output_dir}/locales" + input_locales = locales + output_dir = "${invoker.output_dir}/locales" - if (is_mac) { - output_locales = locales_as_mac_outputs - } else { - output_locales = locales - } + if (is_mac) { + output_locales = locales_as_mac_outputs + } else { + output_locales = locales } } @@ -260,10 +262,8 @@ public_deps = [ ":${target_name}_100_percent", ":${target_name}_extra", + ":${target_name}_locales", ] - if (!defined(invoker.exclude_locale_paks) || !invoker.exclude_locale_paks) { - public_deps += [ ":${target_name}_locales" ] - } if (enable_hidpi) { public_deps += [ ":${target_name}_200_percent" ] }
diff --git a/chrome/common/descriptors_android.h b/chrome/common/descriptors_android.h index 9dcf4a1..40c6f6d 100644 --- a/chrome/common/descriptors_android.h +++ b/chrome/common/descriptors_android.h
@@ -11,6 +11,7 @@ enum { #if defined(OS_ANDROID) kAndroidLocalePakDescriptor = kContentIPCDescriptorMax + 1, + kAndroidSecondaryLocalePakDescriptor, kAndroidChrome100PercentPakDescriptor, kAndroidUIResourcesPakDescriptor, kAndroidMinidumpDescriptor,
diff --git a/components/favicon/core/large_icon_service.cc b/components/favicon/core/large_icon_service.cc index bb99ce88..72886e7 100644 --- a/components/favicon/core/large_icon_service.cc +++ b/components/favicon/core/large_icon_service.cc
@@ -25,6 +25,7 @@ #include "components/favicon_base/favicon_types.h" #include "components/favicon_base/favicon_util.h" #include "components/image_fetcher/core/request_metadata.h" +#include "net/base/network_change_notifier.h" #include "skia/ext/image_operations.h" #include "ui/gfx/codec/png_codec.h" #include "ui/gfx/geometry/size.h" @@ -129,6 +130,7 @@ int desired_size, favicon_base::FaviconRawBitmapResult* raw_result, SkBitmap* bitmap, + GURL* icon_url, favicon_base::FallbackIconStyle* fallback_icon_style) { if (IsDbResultAdequate(db_result, min_source_size)) { gfx::Image image; @@ -144,6 +146,9 @@ if (bitmap) { *bitmap = image.AsBitmap(); } + if (icon_url) { + *icon_url = db_result.icon_url; + } return; } } @@ -205,6 +210,7 @@ favicon_base::FaviconRawBitmapResult raw_bitmap_result_; SkBitmap bitmap_result_; + GURL icon_url_; std::unique_ptr<favicon_base::FallbackIconStyle> fallback_icon_style_; DISALLOW_COPY_AND_ASSIGN(LargeIconWorker); @@ -237,6 +243,7 @@ min_source_size_in_pixel_, desired_size_in_pixel_, raw_bitmap_callback_ ? &raw_bitmap_result_ : nullptr, image_callback_ ? &bitmap_result_ : nullptr, + image_callback_ ? &icon_url_ : nullptr, fallback_icon_style_.get()), base::Bind(&LargeIconWorker::OnIconProcessingComplete, this)); } @@ -256,7 +263,7 @@ if (!bitmap_result_.isNull()) { image_callback_.Run(favicon_base::LargeIconImageResult( - gfx::Image::CreateFrom1xBitmap(bitmap_result_))); + gfx::Image::CreateFrom1xBitmap(bitmap_result_), icon_url_)); return; } image_callback_.Run( @@ -367,6 +374,16 @@ const favicon_base::GoogleFaviconServerCallback& callback) { DCHECK_LE(0, min_source_size_in_pixel); + if (net::NetworkChangeNotifier::IsOffline()) { + // By exiting early when offline, we avoid caching the failure and thus + // allow icon fetches later when coming back online. + base::ThreadTaskRunnerHandle::Get()->PostTask( + FROM_HERE, + base::Bind(callback, favicon_base::GoogleFaviconServerRequestStatus:: + FAILURE_CONNECTION_ERROR)); + return; + } + const GURL trimmed_page_url = TrimPageUrlForGoogleServer(page_url); const GURL server_request_url = GetRequestUrlForGoogleServerV2( trimmed_page_url, min_source_size_in_pixel, desired_size_in_pixel, @@ -401,6 +418,10 @@ traffic_annotation); } +void LargeIconService::TouchIconFromGoogleServer(const GURL& icon_url) { + favicon_service_->TouchOnDemandFavicon(icon_url); +} + base::CancelableTaskTracker::TaskId LargeIconService::GetLargeIconOrFallbackStyleImpl( const GURL& page_url,
diff --git a/components/favicon/core/large_icon_service.h b/components/favicon/core/large_icon_service.h index d44ace6..ec79fd54 100644 --- a/components/favicon/core/large_icon_service.h +++ b/components/favicon/core/large_icon_service.h
@@ -102,6 +102,14 @@ const net::NetworkTrafficAnnotationTag& traffic_annotation, const favicon_base::GoogleFaviconServerCallback& callback); + // Update the time that the icon at |icon_url| was requested. This should be + // called after obtaining the icon by GetLargeIcon*OrFallbackStyle() for any + // icon that _may_ originate from the Google favicon server (i.e. if the + // caller uses + // GetLargeIconOrFallbackStyleFromGoogleServerSkippingLocalCache()). This + // postpones the automatic eviction of the favicon from the database. + void TouchIconFromGoogleServer(const GURL& icon_url); + private: base::CancelableTaskTracker::TaskId GetLargeIconOrFallbackStyleImpl( const GURL& page_url,
diff --git a/components/favicon/core/large_icon_service_unittest.cc b/components/favicon/core/large_icon_service_unittest.cc index e048504..9646cd98 100644 --- a/components/favicon/core/large_icon_service_unittest.cc +++ b/components/favicon/core/large_icon_service_unittest.cc
@@ -411,6 +411,7 @@ if (!result.image.IsEmpty()) { returned_bitmap_size_ = base::MakeUnique<gfx::Size>(result.image.ToImageSkia()->size()); + ASSERT_TRUE(result.icon_url.is_valid()); } StoreFallbackStyle(result.fallback_icon_style.get()); }
diff --git a/components/favicon_base/favicon_types.cc b/components/favicon_base/favicon_types.cc index b03f0ec..3e661137 100644 --- a/components/favicon_base/favicon_types.cc +++ b/components/favicon_base/favicon_types.cc
@@ -41,8 +41,9 @@ // -------------------------------------------------------- // LargeIconImageResult -LargeIconImageResult::LargeIconImageResult(const gfx::Image& image_in) - : image(image_in) {} +LargeIconImageResult::LargeIconImageResult(const gfx::Image& image_in, + const GURL& icon_url_in) + : image(image_in), icon_url(icon_url_in) {} LargeIconImageResult::LargeIconImageResult( FallbackIconStyle* fallback_icon_style_in)
diff --git a/components/favicon_base/favicon_types.h b/components/favicon_base/favicon_types.h index 4afec6f..9f47be4 100644 --- a/components/favicon_base/favicon_types.h +++ b/components/favicon_base/favicon_types.h
@@ -103,7 +103,8 @@ // Contains either the gfx::Image if the favicon database has a sufficiently // large favicon bitmap and the style of the fallback icon otherwise. struct LargeIconImageResult { - explicit LargeIconImageResult(const gfx::Image& image_in); + explicit LargeIconImageResult(const gfx::Image& image_in, + const GURL& icon_url_in); // Takes ownership of |fallback_icon_style_in|. explicit LargeIconImageResult(FallbackIconStyle* fallback_icon_style_in); @@ -114,6 +115,9 @@ // large one. gfx::Image image; + // The URL of the containing favicon. Specified only if |image| is not empty. + GURL icon_url; + // The fallback icon style if a sufficiently large icon isn't available. This // uses the dominant color of a smaller icon as the background if available. std::unique_ptr<FallbackIconStyle> fallback_icon_style;
diff --git a/components/ntp_snippets/content_suggestions_service.cc b/components/ntp_snippets/content_suggestions_service.cc index aced3bb3..1ce55f30 100644 --- a/components/ntp_snippets/content_suggestions_service.cc +++ b/components/ntp_snippets/content_suggestions_service.cc
@@ -233,6 +233,9 @@ RecordFaviconFetchResult(continue_to_google_server ? FaviconFetchResult::SUCCESS_CACHED : FaviconFetchResult::SUCCESS_FETCHED); + // Update the time when the icon was last requested - postpone thus the + // automatic eviction of the favicon from the favicon database. + large_icon_service_->TouchIconFromGoogleServer(result.icon_url); return; }
diff --git a/components/ntp_tiles/icon_cacher_impl.cc b/components/ntp_tiles/icon_cacher_impl.cc index 48769f33..00bb3b16d 100644 --- a/components/ntp_tiles/icon_cacher_impl.cc +++ b/components/ntp_tiles/icon_cacher_impl.cc
@@ -210,9 +210,13 @@ const GURL& page_url, const favicon_base::LargeIconResult& result) { if (!HasResultDefaultBackgroundColor(result)) { - // We should only fetch for default "gray" tiles so that we never overrite - // any favicon of any size. + // There is already an icon, there is nothing to do. (We should only fetch + // for default "gray" tiles so that we never overwrite any favicon of any + // size.) FinishRequestAndNotifyIconAvailable(page_url, /*newly_available=*/false); + // Update the time when the icon was last requested - postpone thus the + // automatic eviction of the favicon from the favicon database. + large_icon_service_->TouchIconFromGoogleServer(result.bitmap.icon_url); return; }
diff --git a/components/password_manager/core/browser/BUILD.gn b/components/password_manager/core/browser/BUILD.gn index 292331a..713da91 100644 --- a/components/password_manager/core/browser/BUILD.gn +++ b/components/password_manager/core/browser/BUILD.gn
@@ -104,6 +104,7 @@ "password_manager_metrics_util.h", "password_manager_util.cc", "password_manager_util.h", + "password_reuse_defines.h", "password_store.cc", "password_store.h", "password_store_change.cc", @@ -141,8 +142,6 @@ if (password_reuse_detection_support) { sources += [ - "hash_password_manager.cc", - "hash_password_manager.h", "password_reuse_detection_manager.cc", "password_reuse_detection_manager.h", "password_reuse_detector.cc", @@ -153,6 +152,8 @@ if (is_win || is_mac || (is_linux && !is_chromeos)) { sources += [ + "hash_password_manager.cc", + "hash_password_manager.h", "password_store_signin_notifier.cc", "password_store_signin_notifier.h", ] @@ -355,11 +356,13 @@ } if (password_reuse_detection_support) { sources += [ - "hash_password_manager_unittest.cc", "password_reuse_detection_manager_unittest.cc", "password_reuse_detector_unittest.cc", ] } + if (is_win || is_mac || (is_linux && !is_chromeos)) { + sources += [ "hash_password_manager_unittest.cc" ] + } deps = [ ":test_support", ":unit_tests_bundle_data",
diff --git a/components/password_manager/core/browser/password_reuse_defines.h b/components/password_manager/core/browser/password_reuse_defines.h new file mode 100644 index 0000000..99c8f73 --- /dev/null +++ b/components/password_manager/core/browser/password_reuse_defines.h
@@ -0,0 +1,14 @@ +// Copyright 2017 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef COMPONENTS_PASSWORD_MANAGER_CORE_BROWSER_PASSWORD_REUSE_DEFINES_H_ +#define COMPONENTS_PASSWORD_MANAGER_CORE_BROWSER_PASSWORD_REUSE_DEFINES_H_ + +#if defined(OS_WIN) || (defined(OS_MACOSX) && !defined(OS_IOS)) || \ + (defined(OS_LINUX) && !defined(OS_CHROMEOS)) +// Enable the detection when the sync password is typed not on the sync domain. +#define SYNC_PASSWORD_REUSE_DETECTION_ENABLED +#endif + +#endif // COMPONENTS_PASSWORD_MANAGER_CORE_BROWSER_PASSWORD_REUSE_DEFINES_H_
diff --git a/components/password_manager/core/browser/password_store.cc b/components/password_manager/core/browser/password_store.cc index 6047979..44cfc53 100644 --- a/components/password_manager/core/browser/password_store.cc +++ b/components/password_manager/core/browser/password_store.cc
@@ -118,7 +118,7 @@ bool PasswordStore::Init(const syncer::SyncableService::StartSyncFlare& flare, PrefService* prefs) { ScheduleTask(base::Bind(&PasswordStore::InitOnBackgroundThread, this, flare)); -#if !defined(OS_ANDROID) && !defined(OS_IOS) +#if defined(SYNC_PASSWORD_REUSE_DETECTION_ENABLED) hash_password_manager_.set_prefs(prefs); ScheduleTask( base::Bind(&PasswordStore::SaveSyncPasswordHashImpl, this, @@ -315,7 +315,7 @@ // The AffiliationService must be destroyed from the main thread. affiliated_match_helper_.reset(); shutdown_called_ = true; -#if !defined(OS_ANDROID) && !defined(OS_IOS) && !defined(OS_CHROMEOS) +#if defined(SYNC_PASSWORD_REUSE_DETECTION_ENABLED) if (notifier_) notifier_->UnsubscribeFromSigninEvents(); #endif @@ -337,8 +337,9 @@ ScheduleTask(base::Bind(&PasswordStore::CheckReuseImpl, this, base::Passed(&check_reuse_request), input, domain)); } +#endif -#if !defined(OS_CHROMEOS) +#if defined(SYNC_PASSWORD_REUSE_DETECTION_ENABLED) void PasswordStore::SaveSyncPasswordHash(const base::string16& password) { // TODO(crbug.com/657041): Log success of saving password hash to UMA. hash_password_manager_.SavePasswordHash(password); @@ -361,7 +362,6 @@ notifier_->SubscribeToSigninEvents(this); } #endif -#endif PasswordStore::~PasswordStore() { DCHECK(shutdown_called_);
diff --git a/components/password_manager/core/browser/password_store.h b/components/password_manager/core/browser/password_store.h index 0db72af..5616935 100644 --- a/components/password_manager/core/browser/password_store.h +++ b/components/password_manager/core/browser/password_store.h
@@ -17,6 +17,7 @@ #include "base/sequenced_task_runner.h" #include "base/time/time.h" #include "components/keyed_service/core/refcounted_keyed_service.h" +#include "components/password_manager/core/browser/password_reuse_defines.h" #include "components/password_manager/core/browser/password_store_change.h" #include "components/password_manager/core/browser/password_store_sync.h" #include "components/sync/model/syncable_service.h" @@ -593,10 +594,10 @@ // TODO(crbug.com/706392): Fix password reuse detection for Android. #if !defined(OS_ANDROID) && !defined(OS_IOS) std::unique_ptr<PasswordReuseDetector> reuse_detector_; - HashPasswordManager hash_password_manager_; -#if !defined(OS_CHROMEOS) - std::unique_ptr<PasswordStoreSigninNotifier> notifier_; #endif +#if defined(SYNC_PASSWORD_REUSE_DETECTION_ENABLED) + std::unique_ptr<PasswordStoreSigninNotifier> notifier_; + HashPasswordManager hash_password_manager_; #endif bool is_propagating_password_changes_to_web_credentials_enabled_;
diff --git a/components/password_manager/core/browser/password_store_unittest.cc b/components/password_manager/core/browser/password_store_unittest.cc index 6d2eab58..4bf7312cc 100644 --- a/components/password_manager/core/browser/password_store_unittest.cc +++ b/components/password_manager/core/browser/password_store_unittest.cc
@@ -998,8 +998,9 @@ store->ShutdownOnUIThread(); base::RunLoop().RunUntilIdle(); } +#endif -#if !defined(OS_CHROMEOS) +#if defined(SYNC_PASSWORD_REUSE_DETECTION_ENABLED) TEST_F(PasswordStoreTest, SavingClearingSyncPassword) { scoped_refptr<PasswordStoreDefault> store(new PasswordStoreDefault( base::SequencedTaskRunnerHandle::Get(), @@ -1063,6 +1064,5 @@ base::RunLoop().RunUntilIdle(); } #endif -#endif } // namespace password_manager
diff --git a/components/password_manager/core/browser/sql_table_builder.cc b/components/password_manager/core/browser/sql_table_builder.cc index caa654be..709c2add 100644 --- a/components/password_manager/core/browser/sql_table_builder.cc +++ b/components/password_manager/core/browser/sql_table_builder.cc
@@ -235,7 +235,8 @@ return ++sealed_version_; } -bool SQLTableBuilder::MigrateFrom(unsigned old_version, sql::Connection* db) { +bool SQLTableBuilder::MigrateFrom(unsigned old_version, + sql::Connection* db) const { for (; old_version < sealed_version_; ++old_version) { if (!MigrateToNextFrom(old_version, db)) return false; @@ -244,7 +245,7 @@ return true; } -bool SQLTableBuilder::CreateTable(sql::Connection* db) { +bool SQLTableBuilder::CreateTable(sql::Connection* db) const { DCHECK(IsVersionLastAndSealed(sealed_version_)); DCHECK(!constraints_.empty()); @@ -354,7 +355,7 @@ } bool SQLTableBuilder::MigrateToNextFrom(unsigned old_version, - sql::Connection* db) { + sql::Connection* db) const { DCHECK_LT(old_version, sealed_version_); DCHECK_GE(old_version, 0u); DCHECK(IsVersionLastAndSealed(sealed_version_)); @@ -456,7 +457,7 @@ } bool SQLTableBuilder::MigrateIndicesToNextFrom(unsigned old_version, - sql::Connection* db) { + sql::Connection* db) const { DCHECK_LT(old_version, sealed_version_); DCHECK(IsVersionLastAndSealed(sealed_version_)); sql::Transaction transaction(db);
diff --git a/components/password_manager/core/browser/sql_table_builder.h b/components/password_manager/core/browser/sql_table_builder.h index 6cf78cca..da1c8920 100644 --- a/components/password_manager/core/browser/sql_table_builder.h +++ b/components/password_manager/core/browser/sql_table_builder.h
@@ -100,13 +100,13 @@ // Assuming that the database connected through |db| contains a table called // |table_name_| in a state described by version |old_version|, migrates it to // the current version, which must be sealed. Returns true on success. - bool MigrateFrom(unsigned old_version, sql::Connection* db); + bool MigrateFrom(unsigned old_version, sql::Connection* db) const; // If |db| connects to a database where table |table_name_| already exists, // this is a no-op and returns true. Otherwise, |table_name_| is created in a // state described by the current version known to the builder. The current // version must be sealed. Returns true on success. - bool CreateTable(sql::Connection* db); + bool CreateTable(sql::Connection* db) const; // Returns the comma-separated list of all column names present in the last // version. The last version must be sealed. @@ -151,14 +151,15 @@ // |table_name_| in a state described by version |old_version|, migrates it to // version |old_version + 1|. The current version known to the builder must be // at least |old_version + 1| and sealed. Returns true on success. - bool MigrateToNextFrom(unsigned old_version, sql::Connection* db); + bool MigrateToNextFrom(unsigned old_version, sql::Connection* db) const; // Assuming that the database connected through |db| contains a table called // |table_name_| in a state described by version |old_version|, migrates it // indices to version |old_version + 1|. The current version known to the // builder must be at least |old_version + 1| and sealed. Returns true on // success. - bool MigrateIndicesToNextFrom(unsigned old_version, sql::Connection* db); + bool MigrateIndicesToNextFrom(unsigned old_version, + sql::Connection* db) const; // Looks up column named |name| in |columns_|. If present, returns the last // one.
diff --git a/components/policy/resources/policy_templates.json b/components/policy/resources/policy_templates.json index 99f9c91f..b457811 100644 --- a/components/policy/resources/policy_templates.json +++ b/components/policy/resources/policy_templates.json
@@ -1536,7 +1536,9 @@ If this policy is left not set Google Sync will be available for the user to choose whether to use it or not. - To fully disable Google Sync, it is recommended that you disable the Google Sync service in the Google Admin console.''', + To fully disable Google Sync, it is recommended that you disable the Google Sync service in the Google Admin console. + + This policy should not be enabled when <ph name="ROAMING_PROFILE_SUPPORT_ENABLED_POLICY_NAME">RoamingProfileSupportEnabled</ph> policy is set to enabled as that feature shares the same client side functionality. The Google-hosted synchronization is disabled in this case completely.''', 'arc_support': 'Disabling Google Sync will cause Android Backup and Restore to not function properly.', }, { @@ -1552,13 +1554,11 @@ 'id': 358, 'caption': '''Enable the creation of roaming copies for <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> profile data''', 'tags': ['local-data-access'], - 'desc': '''If you enable this setting, the settings stored in <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> profiles like bookmarks, autofill data, passwords, etc. will also be written to a file stored in the Roaming user profile folder or a location specified by the Administrator through the <ph name="ROAMING_PROFILE_LOCATION_POLICY_NAME">$1<ex>RoamingProfileLocation</ex></ph> policy. + 'desc': '''If you enable this setting, the settings stored in <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> profiles like bookmarks, autofill data, passwords, etc. will also be written to a file stored in the Roaming user profile folder or a location specified by the Administrator through the <ph name="ROAMING_PROFILE_LOCATION_POLICY_NAME">$1<ex>RoamingProfileLocation</ex></ph> policy. Enabling this policy disables cloud sync. - Google Sync is automatically disabled when this policy is enabled. + If this policy is disabled or left not set only the regular local profiles will be used. - To prevent accidental data leaks it is advisable to also set the <ph name="SIGNIN_ALLOWED_POLICY_NAME">$1<ex>SigninAllowed</ex></ph> policy to False. - - If this policy is disabled or left not set only the regular local profiles will be used.''', + The <ph name="SYNC_DISABLED_POLICY_NAME">SyncDisabled</ph> policy disables all data synchronization, overriding RoamingProfileSupportEnabled.''', 'label': '''Enable the creation of roaming copies for <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> profile data.''', }, {
diff --git a/components/upload_list/BUILD.gn b/components/upload_list/BUILD.gn index 46b8692..28aaec4 100644 --- a/components/upload_list/BUILD.gn +++ b/components/upload_list/BUILD.gn
@@ -6,6 +6,8 @@ sources = [ "crash_upload_list.cc", "crash_upload_list.h", + "text_log_upload_list.cc", + "text_log_upload_list.h", "upload_list.cc", "upload_list.h", ] @@ -18,7 +20,7 @@ source_set("unit_tests") { testonly = true sources = [ - "upload_list_unittest.cc", + "text_log_upload_list_unittest.cc", ] deps = [
diff --git a/components/upload_list/crash_upload_list.cc b/components/upload_list/crash_upload_list.cc index 9b00ed2..704814a 100644 --- a/components/upload_list/crash_upload_list.cc +++ b/components/upload_list/crash_upload_list.cc
@@ -4,17 +4,5 @@ #include "components/upload_list/crash_upload_list.h" -#include <utility> - -#include "base/files/file_path.h" -#include "base/path_service.h" - // static const char CrashUploadList::kReporterLogFilename[] = "uploads.log"; - -CrashUploadList::CrashUploadList(Delegate* delegate, - const base::FilePath& upload_log_path, - scoped_refptr<base::TaskRunner> task_runner) - : UploadList(delegate, upload_log_path, std::move(task_runner)) {} - -CrashUploadList::~CrashUploadList() = default;
diff --git a/components/upload_list/crash_upload_list.h b/components/upload_list/crash_upload_list.h index b1095ebc..cbb2d31 100644 --- a/components/upload_list/crash_upload_list.h +++ b/components/upload_list/crash_upload_list.h
@@ -5,32 +5,16 @@ #ifndef COMPONENTS_UPLOAD_LIST_CRASH_UPLOAD_LIST_H_ #define COMPONENTS_UPLOAD_LIST_CRASH_UPLOAD_LIST_H_ -#include "base/macros.h" -#include "base/memory/ref_counted.h" -#include "base/task_runner.h" -#include "components/upload_list/upload_list.h" - -namespace base { -class FilePath; -} - -// An upload list manager for crash reports from breakpad. -class CrashUploadList : public UploadList { +// TODO(rsesek): Remove this class. Clients only use it for the constant +// it defines. +class CrashUploadList { public: // Should match kReporterLogFilename in // breakpad/src/client/apple/Framework/BreakpadDefines.h. static const char kReporterLogFilename[]; - // Creates a new crash upload list with the given callback delegate. - CrashUploadList(Delegate* delegate, - const base::FilePath& upload_log_path, - scoped_refptr<base::TaskRunner> task_runner); - - protected: - ~CrashUploadList() override; - private: - DISALLOW_COPY_AND_ASSIGN(CrashUploadList); + CrashUploadList() {} }; #endif // COMPONENTS_UPLOAD_LIST_CRASH_UPLOAD_LIST_H_
diff --git a/components/upload_list/text_log_upload_list.cc b/components/upload_list/text_log_upload_list.cc new file mode 100644 index 0000000..3239739 --- /dev/null +++ b/components/upload_list/text_log_upload_list.cc
@@ -0,0 +1,76 @@ +// Copyright 2017 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "components/upload_list/text_log_upload_list.h" + +#include <string> + +#include "base/files/file_util.h" +#include "base/strings/string_number_conversions.h" +#include "base/strings/string_split.h" +#include "base/strings/string_util.h" + +TextLogUploadList::TextLogUploadList(const base::FilePath& upload_log_path) + : UploadList(), upload_log_path_(upload_log_path) {} + +TextLogUploadList::~TextLogUploadList() = default; + +base::TaskTraits TextLogUploadList::LoadingTaskTraits() { + return {base::MayBlock(), base::TaskPriority::BACKGROUND, + base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN}; +} + +std::vector<UploadList::UploadInfo> TextLogUploadList::LoadUploadList() { + std::vector<UploadInfo> uploads; + + if (base::PathExists(upload_log_path_)) { + std::string contents; + base::ReadFileToString(upload_log_path_, &contents); + std::vector<std::string> log_entries = + base::SplitString(contents, base::kWhitespaceASCII, + base::KEEP_WHITESPACE, base::SPLIT_WANT_NONEMPTY); + ParseLogEntries(log_entries, &uploads); + } + + return uploads; +} + +void TextLogUploadList::ParseLogEntries( + const std::vector<std::string>& log_entries, + std::vector<UploadInfo>* uploads) { + std::vector<std::string>::const_reverse_iterator i; + for (i = log_entries.rbegin(); i != log_entries.rend(); ++i) { + std::vector<std::string> components = + base::SplitString(*i, ",", base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL); + // Skip any blank (or corrupted) lines. + if (components.size() < 2 || components.size() > 5) + continue; + base::Time upload_time; + double seconds_since_epoch; + if (!components[0].empty()) { + if (!base::StringToDouble(components[0], &seconds_since_epoch)) + continue; + upload_time = base::Time::FromDoubleT(seconds_since_epoch); + } + UploadInfo info(components[1], upload_time); + + // Add local ID if present. + if (components.size() > 2) + info.local_id = components[2]; + + // Add capture time if present. + if (components.size() > 3 && !components[3].empty() && + base::StringToDouble(components[3], &seconds_since_epoch)) { + info.capture_time = base::Time::FromDoubleT(seconds_since_epoch); + } + + int state; + if (components.size() > 4 && !components[4].empty() && + base::StringToInt(components[4], &state)) { + info.state = static_cast<UploadInfo::State>(state); + } + + uploads->push_back(info); + } +}
diff --git a/components/upload_list/text_log_upload_list.h b/components/upload_list/text_log_upload_list.h new file mode 100644 index 0000000..449dcd42 --- /dev/null +++ b/components/upload_list/text_log_upload_list.h
@@ -0,0 +1,44 @@ +// Copyright 2017 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef COMPONENTS_UPLOAD_LIST_TEXT_LOG_UPLOAD_LIST_H_ +#define COMPONENTS_UPLOAD_LIST_TEXT_LOG_UPLOAD_LIST_H_ + +#include <vector> + +#include "base/files/file_path.h" +#include "base/macros.h" +#include "components/upload_list/upload_list.h" + +// Loads and parses an upload list text file of the format +// upload_time,upload_id[,local_id[,capture_time[,state]]] +// upload_time,upload_id[,local_id[,capture_time[,state]]] +// etc. +// where each line represents an upload. |upload_time| and |capture_time| are in +// Unix time. |state| is an int in the range of UploadInfo::State. A line may +// or may not contain |local_id|, |capture_time|, and |state|. +class TextLogUploadList : public UploadList { + public: + // Creates a new upload list that parses the log at |upload_log_path|. + explicit TextLogUploadList(const base::FilePath& upload_log_path); + + const base::FilePath& upload_log_path() const { return upload_log_path_; } + + protected: + ~TextLogUploadList() override; + + // UploadList: + base::TaskTraits LoadingTaskTraits() override; + std::vector<UploadList::UploadInfo> LoadUploadList() override; + + // Parses upload log lines, converting them to UploadInfo entries. + void ParseLogEntries(const std::vector<std::string>& log_entries, + std::vector<UploadInfo>* uploads); + + const base::FilePath upload_log_path_; + + DISALLOW_COPY_AND_ASSIGN(TextLogUploadList); +}; + +#endif // COMPONENTS_UPLOAD_LIST_TEXT_LOG_UPLOAD_LIST_H_
diff --git a/components/upload_list/upload_list_unittest.cc b/components/upload_list/text_log_upload_list_unittest.cc similarity index 75% rename from components/upload_list/upload_list_unittest.cc rename to components/upload_list/text_log_upload_list_unittest.cc index 837f7fb8..ce1174a 100644 --- a/components/upload_list/upload_list_unittest.cc +++ b/components/upload_list/text_log_upload_list_unittest.cc
@@ -2,9 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "components/upload_list/upload_list.h" - -#include <stddef.h> +#include "components/upload_list/text_log_upload_list.h" #include <string> @@ -13,11 +11,9 @@ #include "base/files/scoped_temp_dir.h" #include "base/macros.h" #include "base/memory/ref_counted.h" -#include "base/message_loop/message_loop.h" #include "base/run_loop.h" #include "base/strings/string_number_conversions.h" -#include "base/task_runner.h" -#include "base/threading/thread.h" +#include "base/test/scoped_task_environment.h" #include "base/time/time.h" #include "testing/gtest/include/gtest/gtest.h" @@ -28,14 +24,12 @@ const char kTestLocalID[] = "fedcba9876543210"; const char kTestCaptureTime[] = "2345678901"; -class UploadListTest : public testing::Test, - public UploadList::Delegate { +class TextLogUploadListTest : public testing::Test { public: - UploadListTest() : worker_thread_("UploadListTest") {} + TextLogUploadListTest() = default; void SetUp() override { ASSERT_TRUE(temp_dir_.CreateUniqueTempDir()); - ASSERT_TRUE(worker_thread_.Start()); } protected: @@ -45,33 +39,15 @@ 0); } - void WaitForUploadList() { - base::RunLoop run_loop; - quit_closure_ = run_loop.QuitClosure(); - run_loop.Run(); - } - - // UploadList::Delegate: - void OnUploadListAvailable() override { - ASSERT_FALSE(quit_closure_.is_null()); - quit_closure_.Run(); - } - - scoped_refptr<base::TaskRunner> task_runner() const { - return worker_thread_.task_runner(); - } - base::FilePath log_path() { return temp_dir_.GetPath().Append(FILE_PATH_LITERAL("uploads.log")); } private: - base::MessageLoop message_loop_; + base::test::ScopedTaskEnvironment scoped_task_environment_; base::ScopedTempDir temp_dir_; - base::Thread worker_thread_; - base::Closure quit_closure_; - DISALLOW_COPY_AND_ASSIGN(UploadListTest); + DISALLOW_COPY_AND_ASSIGN(TextLogUploadListTest); }; // These tests test that UploadList can parse a vector of log entry strings of @@ -80,17 +56,18 @@ // Test log entry string with upload time and upload ID. // This is the format that crash reports are stored in. -TEST_F(UploadListTest, ParseUploadTimeUploadId) { +TEST_F(TextLogUploadListTest, ParseUploadTimeUploadId) { std::string test_entry = kTestUploadTime; test_entry += ","; test_entry.append(kTestUploadId); WriteUploadLog(test_entry); - scoped_refptr<UploadList> upload_list = - new UploadList(this, log_path(), task_runner()); + scoped_refptr<TextLogUploadList> upload_list = + new TextLogUploadList(log_path()); - upload_list->LoadUploadListAsynchronously(); - WaitForUploadList(); + base::RunLoop run_loop; + upload_list->Load(run_loop.QuitClosure()); + run_loop.Run(); std::vector<UploadList::UploadInfo> uploads; upload_list->GetUploads(999, &uploads); @@ -106,7 +83,7 @@ // Test log entry string with upload time, upload ID and local ID. // This is the old format that WebRTC logs were stored in. -TEST_F(UploadListTest, ParseUploadTimeUploadIdLocalId) { +TEST_F(TextLogUploadListTest, ParseUploadTimeUploadIdLocalId) { std::string test_entry = kTestUploadTime; test_entry += ","; test_entry.append(kTestUploadId); @@ -114,11 +91,12 @@ test_entry.append(kTestLocalID); WriteUploadLog(test_entry); - scoped_refptr<UploadList> upload_list = - new UploadList(this, log_path(), task_runner()); + scoped_refptr<TextLogUploadList> upload_list = + new TextLogUploadList(log_path()); - upload_list->LoadUploadListAsynchronously(); - WaitForUploadList(); + base::RunLoop run_loop; + upload_list->Load(run_loop.QuitClosure()); + run_loop.Run(); std::vector<UploadList::UploadInfo> uploads; upload_list->GetUploads(999, &uploads); @@ -135,7 +113,7 @@ // Test log entry string with upload time, upload ID and capture time. // This is the format that WebRTC logs that only have been uploaded only are // stored in. -TEST_F(UploadListTest, ParseUploadTimeUploadIdCaptureTime) { +TEST_F(TextLogUploadListTest, ParseUploadTimeUploadIdCaptureTime) { std::string test_entry = kTestUploadTime; test_entry += ","; test_entry.append(kTestUploadId); @@ -143,11 +121,12 @@ test_entry.append(kTestCaptureTime); WriteUploadLog(test_entry); - scoped_refptr<UploadList> upload_list = - new UploadList(this, log_path(), task_runner()); + scoped_refptr<TextLogUploadList> upload_list = + new TextLogUploadList(log_path()); - upload_list->LoadUploadListAsynchronously(); - WaitForUploadList(); + base::RunLoop run_loop; + upload_list->Load(run_loop.QuitClosure()); + run_loop.Run(); std::vector<UploadList::UploadInfo> uploads; upload_list->GetUploads(999, &uploads); @@ -164,18 +143,19 @@ // Test log entry string with local ID and capture time. // This is the format that WebRTC logs that only are stored locally are stored // in. -TEST_F(UploadListTest, ParseLocalIdCaptureTime) { +TEST_F(TextLogUploadListTest, ParseLocalIdCaptureTime) { std::string test_entry = ",,"; test_entry.append(kTestLocalID); test_entry += ","; test_entry.append(kTestCaptureTime); WriteUploadLog(test_entry); - scoped_refptr<UploadList> upload_list = - new UploadList(this, log_path(), task_runner()); + scoped_refptr<TextLogUploadList> upload_list = + new TextLogUploadList(log_path()); - upload_list->LoadUploadListAsynchronously(); - WaitForUploadList(); + base::RunLoop run_loop; + upload_list->Load(run_loop.QuitClosure()); + run_loop.Run(); std::vector<UploadList::UploadInfo> uploads; upload_list->GetUploads(999, &uploads); @@ -193,7 +173,7 @@ // time. // This is the format that WebRTC logs that are stored locally and have been // uploaded are stored in. -TEST_F(UploadListTest, ParseUploadTimeUploadIdLocalIdCaptureTime) { +TEST_F(TextLogUploadListTest, ParseUploadTimeUploadIdLocalIdCaptureTime) { std::string test_entry = kTestUploadTime; test_entry += ","; test_entry.append(kTestUploadId); @@ -203,11 +183,12 @@ test_entry.append(kTestCaptureTime); WriteUploadLog(test_entry); - scoped_refptr<UploadList> upload_list = - new UploadList(this, log_path(), task_runner()); + scoped_refptr<TextLogUploadList> upload_list = + new TextLogUploadList(log_path()); - upload_list->LoadUploadListAsynchronously(); - WaitForUploadList(); + base::RunLoop run_loop; + upload_list->Load(run_loop.QuitClosure()); + run_loop.Run(); std::vector<UploadList::UploadInfo> uploads; upload_list->GetUploads(999, &uploads); @@ -221,7 +202,7 @@ EXPECT_STREQ(kTestCaptureTime, base::DoubleToString(time_double).c_str()); } -TEST_F(UploadListTest, ParseMultipleEntries) { +TEST_F(TextLogUploadListTest, ParseMultipleEntries) { std::string test_entry; for (int i = 1; i <= 4; ++i) { test_entry.append(kTestUploadTime); @@ -235,11 +216,12 @@ } WriteUploadLog(test_entry); - scoped_refptr<UploadList> upload_list = - new UploadList(this, log_path(), task_runner()); + scoped_refptr<TextLogUploadList> upload_list = + new TextLogUploadList(log_path()); - upload_list->LoadUploadListAsynchronously(); - WaitForUploadList(); + base::RunLoop run_loop; + upload_list->Load(run_loop.QuitClosure()); + run_loop.Run(); std::vector<UploadList::UploadInfo> uploads; upload_list->GetUploads(999, &uploads); @@ -255,7 +237,7 @@ } } -TEST_F(UploadListTest, ParseWithState) { +TEST_F(TextLogUploadListTest, ParseWithState) { std::string test_entry; for (int i = 1; i <= 4; ++i) { test_entry.append(kTestUploadTime); @@ -272,11 +254,12 @@ } WriteUploadLog(test_entry); - scoped_refptr<UploadList> upload_list = - new UploadList(this, log_path(), task_runner()); + scoped_refptr<TextLogUploadList> upload_list = + new TextLogUploadList(log_path()); - upload_list->LoadUploadListAsynchronously(); - WaitForUploadList(); + base::RunLoop run_loop; + upload_list->Load(run_loop.QuitClosure()); + run_loop.Run(); std::vector<UploadList::UploadInfo> uploads; upload_list->GetUploads(999, &uploads); @@ -294,7 +277,7 @@ } // https://crbug.com/597384 -TEST_F(UploadListTest, SimultaneousAccess) { +TEST_F(TextLogUploadListTest, SimultaneousAccess) { std::string test_entry = kTestUploadTime; test_entry += ","; test_entry.append(kTestUploadId); @@ -304,17 +287,17 @@ test_entry.append(kTestCaptureTime); WriteUploadLog(test_entry); - scoped_refptr<UploadList> upload_list = - new UploadList(this, log_path(), task_runner()); + scoped_refptr<TextLogUploadList> upload_list = + new TextLogUploadList(log_path()); // Queue up a bunch of loads, waiting only for the first one to complete. - // Clearing the delegate prevents the QuitClosure from being Run more than - // once. + base::RunLoop run_loop; + upload_list->Load(run_loop.QuitClosure()); + run_loop.Run(); + for (int i = 1; i <= 20; ++i) { - upload_list->LoadUploadListAsynchronously(); + upload_list->Load(base::OnceClosure()); } - WaitForUploadList(); - upload_list->ClearDelegate(); // Read the list a few times to try and race one of the loads above. for (int i = 1; i <= 4; ++i) {
diff --git a/components/upload_list/upload_list.cc b/components/upload_list/upload_list.cc index 082c01df..3c8d947 100644 --- a/components/upload_list/upload_list.cc +++ b/components/upload_list/upload_list.cc
@@ -9,14 +9,7 @@ #include <utility> #include "base/bind.h" -#include "base/files/file_util.h" -#include "base/location.h" -#include "base/sequenced_task_runner.h" -#include "base/strings/string_number_conversions.h" -#include "base/strings/string_split.h" -#include "base/strings/string_util.h" -#include "base/task_runner.h" -#include "base/threading/sequenced_task_runner_handle.h" +#include "base/task_scheduler/post_task.h" UploadList::UploadInfo::UploadInfo(const std::string& upload_id, const base::Time& upload_time, @@ -52,98 +45,28 @@ UploadList::UploadInfo::~UploadInfo() = default; -UploadList::UploadList(Delegate* delegate, - const base::FilePath& upload_log_path, - scoped_refptr<base::TaskRunner> task_runner) - : delegate_(delegate), - upload_log_path_(upload_log_path), - task_runner_(std::move(task_runner)) {} +UploadList::UploadList() = default; UploadList::~UploadList() = default; -void UploadList::LoadUploadListAsynchronously() { +void UploadList::Load(base::OnceClosure callback) { DCHECK(sequence_checker_.CalledOnValidSequence()); - task_runner_->PostTask( - FROM_HERE, base::Bind(&UploadList::PerformLoadAndNotifyDelegate, this, - base::SequencedTaskRunnerHandle::Get())); + callback_ = std::move(callback); + base::PostTaskWithTraitsAndReplyWithResult( + FROM_HERE, LoadingTaskTraits(), + base::Bind(&UploadList::LoadUploadList, this), + base::Bind(&UploadList::OnLoadComplete, this)); } -void UploadList::ClearDelegate() { +void UploadList::CancelCallback() { + callback_.Reset(); +} + +void UploadList::RequestSingleUploadAsync(const std::string& local_id) { DCHECK(sequence_checker_.CalledOnValidSequence()); - delegate_ = NULL; -} - -void UploadList::PerformLoadAndNotifyDelegate( - scoped_refptr<base::SequencedTaskRunner> task_runner) { - std::vector<UploadInfo> uploads; - LoadUploadList(&uploads); - task_runner->PostTask( - FROM_HERE, - base::Bind(&UploadList::SetUploadsAndNotifyDelegate, this, - std::move(uploads))); -} - -void UploadList::LoadUploadList(std::vector<UploadInfo>* uploads) { - if (base::PathExists(upload_log_path_)) { - std::string contents; - base::ReadFileToString(upload_log_path_, &contents); - std::vector<std::string> log_entries = base::SplitString( - contents, base::kWhitespaceASCII, base::KEEP_WHITESPACE, - base::SPLIT_WANT_NONEMPTY); - ParseLogEntries(log_entries, uploads); - } -} - -const base::FilePath& UploadList::upload_log_path() const { - return upload_log_path_; -} - -void UploadList::ParseLogEntries( - const std::vector<std::string>& log_entries, - std::vector<UploadInfo>* uploads) { - std::vector<std::string>::const_reverse_iterator i; - for (i = log_entries.rbegin(); i != log_entries.rend(); ++i) { - std::vector<std::string> components = base::SplitString( - *i, ",", base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL); - // Skip any blank (or corrupted) lines. - if (components.size() < 2 || components.size() > 5) - continue; - base::Time upload_time; - double seconds_since_epoch; - if (!components[0].empty()) { - if (!base::StringToDouble(components[0], &seconds_since_epoch)) - continue; - upload_time = base::Time::FromDoubleT(seconds_since_epoch); - } - UploadInfo info(components[1], upload_time); - - // Add local ID if present. - if (components.size() > 2) - info.local_id = components[2]; - - // Add capture time if present. - if (components.size() > 3 && - !components[3].empty() && - base::StringToDouble(components[3], &seconds_since_epoch)) { - info.capture_time = base::Time::FromDoubleT(seconds_since_epoch); - } - - int state; - if (components.size() > 4 && - !components[4].empty() && - base::StringToInt(components[4], &state)) { - info.state = static_cast<UploadInfo::State>(state); - } - - uploads->push_back(info); - } -} - -void UploadList::SetUploadsAndNotifyDelegate(std::vector<UploadInfo> uploads) { - DCHECK(sequence_checker_.CalledOnValidSequence()); - uploads_ = std::move(uploads); - if (delegate_) - delegate_->OnUploadListAvailable(); + base::PostTaskWithTraits( + FROM_HERE, LoadingTaskTraits(), + base::Bind(&UploadList::RequestSingleUpload, this, local_id)); } void UploadList::GetUploads(size_t max_count, @@ -154,15 +77,14 @@ std::back_inserter(*uploads)); } -void UploadList::RequestSingleCrashUploadAsync(const std::string& local_id) { - DCHECK(sequence_checker_.CalledOnValidSequence()); - task_runner_->PostTask( - FROM_HERE, - base::Bind(&UploadList::RequestSingleCrashUpload, this, local_id)); -} - -void UploadList::RequestSingleCrashUpload(const std::string& local_id) { +void UploadList::RequestSingleUpload(const std::string& local_id) { // Manual uploads for not-yet uploaded crash reports are only available for // Crashpad systems and for Android. NOTREACHED(); } + +void UploadList::OnLoadComplete(const std::vector<UploadInfo>& uploads) { + uploads_ = uploads; + if (!callback_.is_null()) + std::move(callback_).Run(); +}
diff --git a/components/upload_list/upload_list.h b/components/upload_list/upload_list.h index ebcab50..8b5a866 100644 --- a/components/upload_list/upload_list.h +++ b/components/upload_list/upload_list.h
@@ -10,26 +10,19 @@ #include <string> #include <vector> -#include "base/files/file_path.h" +#include "base/callback.h" #include "base/macros.h" #include "base/memory/ref_counted.h" #include "base/sequence_checker.h" +#include "base/task_scheduler/task_traits.h" #include "base/time/time.h" -namespace base { -class SequencedTaskRunner; -class TaskRunner; -} - -// Loads and parses an upload list text file of the format -// upload_time,upload_id[,local_id[,capture_time[,state]]] -// upload_time,upload_id[,local_id[,capture_time[,state]]] -// etc. -// where each line represents an upload. |upload_time| and |capture_time| are in -// Unix time. |state| is an int in the range of UploadInfo::State. Must be used -// from the UI thread. The loading and parsing is done on a blocking pool task -// runner. A line may or may not contain |local_id|, |capture_time|, and -// |state|. +// An UploadList is an abstraction over a list of client-side data files that +// are uploaded to a server. The UploadList allows accessing the UploadInfo +// for these files, usually to display in a UI. +// +// The UploadList loads the information asynchronously and notifies the +// client that requested the information when it is available. class UploadList : public base::RefCountedThreadSafe<UploadList> { public: struct UploadInfo { @@ -71,75 +64,53 @@ base::string16 file_size; }; - class Delegate { - public: - // Invoked when the upload list has been loaded. Will be called on the - // UI thread. - virtual void OnUploadListAvailable() = 0; - - protected: - virtual ~Delegate() {} - }; - // Creates a new upload list with the given callback delegate. - UploadList(Delegate* delegate, - const base::FilePath& upload_log_path, - scoped_refptr<base::TaskRunner> task_runner); + UploadList(); // Starts loading the upload list. OnUploadListAvailable will be called when - // loading is complete. - void LoadUploadListAsynchronously(); + // loading is complete. If this is called twice, the second |callback| will + // overwrite the previously supplied one, and the first will not be called. + void Load(base::OnceClosure callback); + + // Clears any callback specified in Load(). + void CancelCallback(); // Asynchronously requests a user triggered upload. - void RequestSingleCrashUploadAsync(const std::string& local_id); - - // Clears the delegate, so that any outstanding asynchronous load will not - // call the delegate on completion. - void ClearDelegate(); + void RequestSingleUploadAsync(const std::string& local_id); // Populates |uploads| with the |max_count| most recent uploads, // in reverse chronological order. - // Must be called only after OnUploadListAvailable has been called. + // Must be called only after a Load() callback has been received. void GetUploads(size_t max_count, std::vector<UploadInfo>* uploads); protected: virtual ~UploadList(); + // Returns the TaskTraits that should be used for LoadUploadList() and + // RequestSingleUpload(). + virtual base::TaskTraits LoadingTaskTraits() = 0; + // Reads the upload log and stores the entries in |uploads|. - virtual void LoadUploadList(std::vector<UploadInfo>* uploads); + virtual std::vector<UploadInfo> LoadUploadList() = 0; // Requests a user triggered upload for a crash report with a given id. - virtual void RequestSingleCrashUpload(const std::string& local_id); - - const base::FilePath& upload_log_path() const; + virtual void RequestSingleUpload(const std::string& local_id); private: friend class base::RefCountedThreadSafe<UploadList>; - // Manages the background thread work for LoadUploadListAsynchronously(). - void PerformLoadAndNotifyDelegate( - scoped_refptr<base::SequencedTaskRunner> task_runner); - - // Calls the delegate's callback method, if there is a delegate. Stores - // the newly loaded |uploads| into |uploads_| on the delegate's task runner. - void SetUploadsAndNotifyDelegate(std::vector<UploadInfo> uploads); - - // Parses upload log lines, converting them to UploadInfo entries. - void ParseLogEntries(const std::vector<std::string>& log_entries, - std::vector<UploadInfo>* uploads); + // When LoadUploadList() finishes, the results are reported in |uploads| + // and the |callback_| is run. + void OnLoadComplete(const std::vector<UploadInfo>& uploads); // Ensures that this class' thread unsafe state is only accessed from the // sequence that owns this UploadList. base::SequenceChecker sequence_checker_; + base::OnceClosure callback_; + std::vector<UploadInfo> uploads_; - Delegate* delegate_; - - const base::FilePath upload_log_path_; - - const scoped_refptr<base::TaskRunner> task_runner_; - DISALLOW_COPY_AND_ASSIGN(UploadList); };
diff --git a/content/browser/frame_host/navigation_handle_impl.cc b/content/browser/frame_host/navigation_handle_impl.cc index 4f024e8..20437dd 100644 --- a/content/browser/frame_host/navigation_handle_impl.cc +++ b/content/browser/frame_host/navigation_handle_impl.cc
@@ -375,10 +375,25 @@ NavigationThrottle::ThrottleCheckResult result = NavigationThrottle::DEFER; if (state_ == DEFERRING_START) { result = CheckWillStartRequest(); + if (result == NavigationThrottle::DEFER) { + // DO NOT ADD CODE: the NavigationHandle might have been destroyed during + // one of the NavigationThrottle checks. + return; + } } else if (state_ == DEFERRING_REDIRECT) { result = CheckWillRedirectRequest(); + if (result == NavigationThrottle::DEFER) { + // DO NOT ADD CODE: the NavigationHandle might have been destroyed during + // one of the NavigationThrottle checks. + return; + } } else { result = CheckWillProcessResponse(); + if (result == NavigationThrottle::DEFER) { + // DO NOT ADD CODE: the NavigationHandle might have been destroyed during + // one of the NavigationThrottle checks. + return; + } // If the navigation is about to proceed after having been deferred while // processing the response, then it's ready to commit. Determine which @@ -389,12 +404,11 @@ if (result == NavigationThrottle::PROCEED && !MaybeTransferAndProceed()) return; } + DCHECK_NE(NavigationThrottle::DEFER, result); - if (result != NavigationThrottle::DEFER) { - TRACE_EVENT_ASYNC_STEP_INTO0("navigation", "NavigationHandle", this, - "Resuming"); - RunCompleteCallback(result); - } + TRACE_EVENT_ASYNC_STEP_INTO0("navigation", "NavigationHandle", this, + "Resuming"); + RunCompleteCallback(result); } void NavigationHandleImpl::CancelDeferredNavigation( @@ -615,13 +629,15 @@ // Notify each throttle of the request. NavigationThrottle::ThrottleCheckResult result = CheckWillStartRequest(); - - // If the navigation is not deferred, run the callback. - if (result != NavigationThrottle::DEFER) { - TRACE_EVENT_ASYNC_STEP_INTO1("navigation", "NavigationHandle", this, - "StartRequest", "result", result); - RunCompleteCallback(result); + if (result == NavigationThrottle::DEFER) { + // DO NOT ADD CODE: the NavigationHandle might have been destroyed during + // one of the NavigationThrottle checks. + return; } + + TRACE_EVENT_ASYNC_STEP_INTO1("navigation", "NavigationHandle", this, + "StartRequest", "result", result); + RunCompleteCallback(result); } void NavigationHandleImpl::WillRedirectRequest( @@ -672,13 +688,15 @@ // Notify each throttle of the request. NavigationThrottle::ThrottleCheckResult result = CheckWillRedirectRequest(); - - // If the navigation is not deferred, run the callback. - if (result != NavigationThrottle::DEFER) { - TRACE_EVENT_ASYNC_STEP_INTO1("navigation", "NavigationHandle", this, - "RedirectRequest", "result", result); - RunCompleteCallback(result); + if (result == NavigationThrottle::DEFER) { + // DO NOT ADD CODE: the NavigationHandle might have been destroyed during + // one of the NavigationThrottle checks. + return; } + + TRACE_EVENT_ASYNC_STEP_INTO1("navigation", "NavigationHandle", this, + "RedirectRequest", "result", result); + RunCompleteCallback(result); } void NavigationHandleImpl::WillProcessResponse( @@ -710,6 +728,11 @@ // Notify each throttle of the response. NavigationThrottle::ThrottleCheckResult result = CheckWillProcessResponse(); + if (result == NavigationThrottle::DEFER) { + // DO NOT ADD CODE: the NavigationHandle might have been destroyed during + // one of the NavigationThrottle checks. + return; + } // If the navigation is done processing the response, then it's ready to // commit. Determine which RenderFrameHost should render the response, based @@ -719,12 +742,9 @@ if (result == NavigationThrottle::PROCEED && !MaybeTransferAndProceed()) return; - // If the navigation is not deferred, run the callback. - if (result != NavigationThrottle::DEFER) { - TRACE_EVENT_ASYNC_STEP_INTO1("navigation", "NavigationHandle", this, - "ProcessResponse", "result", result); - RunCompleteCallback(result); - } + TRACE_EVENT_ASYNC_STEP_INTO1("navigation", "NavigationHandle", this, + "ProcessResponse", "result", result); + RunCompleteCallback(result); } void NavigationHandleImpl::ReadyToCommitNavigation( @@ -865,9 +885,15 @@ DCHECK(state_ == WILL_SEND_REQUEST || state_ == DEFERRING_START); DCHECK(state_ != WILL_SEND_REQUEST || next_index_ == 0); DCHECK(state_ != DEFERRING_START || next_index_ != 0); + base::WeakPtr<NavigationHandleImpl> weak_ref = weak_factory_.GetWeakPtr(); for (size_t i = next_index_; i < throttles_.size(); ++i) { NavigationThrottle::ThrottleCheckResult result = throttles_[i]->WillStartRequest(); + if (!weak_ref) { + // The NavigationThrottle execution has destroyed this NavigationHandle. + // Return immediately. + return NavigationThrottle::DEFER; + } TRACE_EVENT_ASYNC_STEP_INTO0( "navigation", "NavigationHandle", this, base::StringPrintf("CheckWillStartRequest: %s: %d", @@ -905,9 +931,15 @@ DCHECK(state_ != WILL_REDIRECT_REQUEST || next_index_ == 0); DCHECK(state_ != DEFERRING_REDIRECT || next_index_ != 0); + base::WeakPtr<NavigationHandleImpl> weak_ref = weak_factory_.GetWeakPtr(); for (size_t i = next_index_; i < throttles_.size(); ++i) { NavigationThrottle::ThrottleCheckResult result = throttles_[i]->WillRedirectRequest(); + if (!weak_ref) { + // The NavigationThrottle execution has destroyed this NavigationHandle. + // Return immediately. + return NavigationThrottle::DEFER; + } TRACE_EVENT_ASYNC_STEP_INTO0( "navigation", "NavigationHandle", this, base::StringPrintf("CheckWillRedirectRequest: %s: %d", @@ -952,9 +984,15 @@ DCHECK(state_ != WILL_PROCESS_RESPONSE || next_index_ == 0); DCHECK(state_ != DEFERRING_RESPONSE || next_index_ != 0); + base::WeakPtr<NavigationHandleImpl> weak_ref = weak_factory_.GetWeakPtr(); for (size_t i = next_index_; i < throttles_.size(); ++i) { NavigationThrottle::ThrottleCheckResult result = throttles_[i]->WillProcessResponse(); + if (!weak_ref) { + // The NavigationThrottle execution has destroyed this NavigationHandle. + // Return immediately. + return NavigationThrottle::DEFER; + } TRACE_EVENT_ASYNC_STEP_INTO0( "navigation", "NavigationHandle", this, base::StringPrintf("CheckWillProcessResponse: %s: %d",
diff --git a/content/browser/frame_host/navigation_handle_impl_unittest.cc b/content/browser/frame_host/navigation_handle_impl_unittest.cc index 0cb0857..c3bd36f1 100644 --- a/content/browser/frame_host/navigation_handle_impl_unittest.cc +++ b/content/browser/frame_host/navigation_handle_impl_unittest.cc
@@ -6,6 +6,7 @@ #include "base/macros.h" #include "content/public/browser/navigation_throttle.h" #include "content/public/browser/ssl_status.h" +#include "content/public/common/browser_side_navigation_policy.h" #include "content/public/common/request_context_type.h" #include "content/public/common/url_constants.h" #include "content/test/test_content_browser_client.h" @@ -82,6 +83,38 @@ int will_process_response_calls_; }; +// Test version of a NavigationThrottle that will execute a callback when +// called. +class TestNavigationThrottleWithCallback : public NavigationThrottle { + public: + TestNavigationThrottleWithCallback(NavigationHandle* handle, + const base::RepeatingClosure& callback) + : NavigationThrottle(handle), callback_(callback) {} + ~TestNavigationThrottleWithCallback() override {} + + NavigationThrottle::ThrottleCheckResult WillStartRequest() override { + callback_.Run(); + return NavigationThrottle::PROCEED; + } + + NavigationThrottle::ThrottleCheckResult WillRedirectRequest() override { + callback_.Run(); + return NavigationThrottle::PROCEED; + } + + NavigationThrottle::ThrottleCheckResult WillProcessResponse() override { + callback_.Run(); + return NavigationThrottle::PROCEED; + } + + const char* GetNameForLogging() override { + return "TestNavigationThrottleWithCallback"; + } + + private: + base::RepeatingClosure callback_; +}; + class NavigationHandleImplTest : public RenderViewHostImplTestHarness { public: NavigationHandleImplTest() @@ -90,14 +123,7 @@ void SetUp() override { RenderViewHostImplTestHarness::SetUp(); - test_handle_ = NavigationHandleImpl::Create( - GURL(), std::vector<GURL>(), main_test_rfh()->frame_tree_node(), - true, // is_renderer_initiated - false, // is_same_page - base::TimeTicks::Now(), 0, - false, // started_from_context_menu - CSPDisposition::CHECK, // should_check_main_world_csp - false); // is_form_submission + CreateNavigationHandle(); EXPECT_EQ(REQUEST_CONTEXT_TYPE_UNSPECIFIED, test_handle_->request_context_type_); contents()->GetMainFrame()->InitializeRenderFrameIfNeeded(); @@ -204,6 +230,28 @@ return test_throttle; } + // Creates and register a NavigationThrottle that will delete the + // NavigationHandle in checks. + void AddDeletingNavigationThrottle() { + DCHECK(test_handle_); + test_handle()->RegisterThrottleForTesting( + base::MakeUnique<TestNavigationThrottleWithCallback>( + test_handle(), base::BindRepeating( + &NavigationHandleImplTest::ResetNavigationHandle, + base::Unretained(this)))); + } + + void CreateNavigationHandle() { + test_handle_ = NavigationHandleImpl::Create( + GURL(), std::vector<GURL>(), main_test_rfh()->frame_tree_node(), + true, // is_renderer_initiated + false, // is_same_page + base::TimeTicks::Now(), 0, + false, // started_from_context_menu + CSPDisposition::CHECK, // should_check_main_world_csp + false); // is_form_submission + } + private: // The callback provided to NavigationHandleImpl::WillStartRequest and // NavigationHandleImpl::WillRedirectRequest during the tests. @@ -213,6 +261,8 @@ was_callback_called_ = true; } + void ResetNavigationHandle() { test_handle_ = nullptr; } + std::unique_ptr<NavigationHandleImpl> test_handle_; bool was_callback_called_; NavigationThrottle::ThrottleCheckResult callback_result_; @@ -812,4 +862,86 @@ EXPECT_EQ(0, proceed_throttle->will_process_response_calls()); } +// Checks that a NavigationHandle can be safely deleted by teh execution of one +// of its NavigationThrottle. +TEST_F(NavigationHandleImplTest, DeletionByNavigationThrottle) { + // Test deletion in WillStartRequest. + AddDeletingNavigationThrottle(); + SimulateWillStartRequest(); + EXPECT_EQ(nullptr, test_handle()); + if (IsBrowserSideNavigationEnabled()) { + EXPECT_FALSE(was_callback_called()); + } else { + EXPECT_EQ(NavigationThrottle::CANCEL_AND_IGNORE, callback_result()); + } + + // Test deletion in WillStartRequest after being deferred. + CreateNavigationHandle(); + CreateTestNavigationThrottle(NavigationThrottle::DEFER); + AddDeletingNavigationThrottle(); + SimulateWillStartRequest(); + EXPECT_NE(nullptr, test_handle()); + test_handle()->Resume(); + EXPECT_EQ(nullptr, test_handle()); + if (IsBrowserSideNavigationEnabled()) { + EXPECT_FALSE(was_callback_called()); + } else { + EXPECT_EQ(NavigationThrottle::CANCEL_AND_IGNORE, callback_result()); + } + + // Test deletion in WillRedirectRequest. + CreateNavigationHandle(); + SimulateWillStartRequest(); + AddDeletingNavigationThrottle(); + SimulateWillRedirectRequest(); + EXPECT_EQ(nullptr, test_handle()); + if (IsBrowserSideNavigationEnabled()) { + EXPECT_FALSE(was_callback_called()); + } else { + EXPECT_EQ(NavigationThrottle::CANCEL_AND_IGNORE, callback_result()); + } + + // Test deletion in WillRedirectRequest after being deferred. + CreateNavigationHandle(); + SimulateWillStartRequest(); + CreateTestNavigationThrottle(NavigationThrottle::DEFER); + AddDeletingNavigationThrottle(); + SimulateWillRedirectRequest(); + EXPECT_NE(nullptr, test_handle()); + test_handle()->Resume(); + EXPECT_EQ(nullptr, test_handle()); + if (IsBrowserSideNavigationEnabled()) { + EXPECT_FALSE(was_callback_called()); + } else { + EXPECT_EQ(NavigationThrottle::CANCEL_AND_IGNORE, callback_result()); + } + + // Test deletion in WillProcessResponse. + CreateNavigationHandle(); + SimulateWillStartRequest(); + AddDeletingNavigationThrottle(); + SimulateWillProcessResponse(); + EXPECT_EQ(nullptr, test_handle()); + if (IsBrowserSideNavigationEnabled()) { + EXPECT_FALSE(was_callback_called()); + } else { + EXPECT_EQ(NavigationThrottle::CANCEL_AND_IGNORE, callback_result()); + } + + // Test deletion in WillProcessResponse after being deferred. + CreateNavigationHandle(); + SimulateWillStartRequest(); + CreateTestNavigationThrottle(NavigationThrottle::DEFER); + AddDeletingNavigationThrottle(); + SimulateWillProcessResponse(); + EXPECT_NE(nullptr, test_handle()); + test_handle()->Resume(); + EXPECT_EQ(nullptr, test_handle()); + if (IsBrowserSideNavigationEnabled()) { + EXPECT_FALSE(was_callback_called()); + } else { + EXPECT_EQ(NavigationThrottle::CANCEL_AND_IGNORE, callback_result()); + } +} + } // namespace content
diff --git a/headless/app/headless_shell.cc b/headless/app/headless_shell.cc index aace371..f5f288d 100644 --- a/headless/app/headless_shell.cc +++ b/headless/app/headless_shell.cc
@@ -623,13 +623,9 @@ if (command_line.HasSwitch(switches::kProxyServer)) { std::string proxy_server = command_line.GetSwitchValueASCII(switches::kProxyServer); - net::HostPortPair parsed_proxy_server = - net::HostPortPair::FromString(proxy_server); - if (parsed_proxy_server.host().empty() || !parsed_proxy_server.port()) { - LOG(ERROR) << "Malformed proxy server url"; - return EXIT_FAILURE; - } - builder.SetProxyServer(parsed_proxy_server); + std::unique_ptr<net::ProxyConfig> proxy_config(new net::ProxyConfig); + proxy_config->proxy_rules().ParseFromString(proxy_server); + builder.SetProxyConfig(std::move(proxy_config)); } if (command_line.HasSwitch(switches::kHostResolverRules)) {
diff --git a/headless/lib/browser/headless_browser_context_impl.cc b/headless/lib/browser/headless_browser_context_impl.cc index aadea8fe..1954451 100644 --- a/headless/lib/browser/headless_browser_context_impl.cc +++ b/headless/lib/browser/headless_browser_context_impl.cc
@@ -381,9 +381,9 @@ } HeadlessBrowserContext::Builder& -HeadlessBrowserContext::Builder::SetProxyServer( - const net::HostPortPair& proxy_server) { - options_->proxy_server_ = proxy_server; +HeadlessBrowserContext::Builder::SetProxyConfig( + std::unique_ptr<net::ProxyConfig> proxy_config) { + options_->proxy_config_ = std::move(proxy_config); return *this; }
diff --git a/headless/lib/browser/headless_browser_context_options.cc b/headless/lib/browser/headless_browser_context_options.cc index e31158bd..5ca1ab3 100644 --- a/headless/lib/browser/headless_browser_context_options.cc +++ b/headless/lib/browser/headless_browser_context_options.cc
@@ -45,8 +45,10 @@ return browser_options_->user_agent; } -const net::HostPortPair& HeadlessBrowserContextOptions::proxy_server() const { - return ReturnOverriddenValue(proxy_server_, browser_options_->proxy_server); +const net::ProxyConfig* HeadlessBrowserContextOptions::proxy_config() const { + if (proxy_config_) + return proxy_config_.get(); + return browser_options_->proxy_config.get(); } const std::string& HeadlessBrowserContextOptions::host_resolver_rules() const {
diff --git a/headless/lib/browser/headless_browser_context_options.h b/headless/lib/browser/headless_browser_context_options.h index f8096d8..1d3fb84 100644 --- a/headless/lib/browser/headless_browser_context_options.h +++ b/headless/lib/browser/headless_browser_context_options.h
@@ -29,8 +29,8 @@ const std::string& product_name_and_version() const; const std::string& user_agent() const; - // See HeadlessBrowser::Options::proxy_server. - const net::HostPortPair& proxy_server() const; + // See HeadlessBrowser::Options::proxy_config. + const net::ProxyConfig* proxy_config() const; // See HeadlessBrowser::Options::host_resolver_rules. const std::string& host_resolver_rules() const; @@ -62,7 +62,7 @@ HeadlessBrowser::Options* browser_options_; base::Optional<std::string> product_name_and_version_; - base::Optional<net::HostPortPair> proxy_server_; + std::unique_ptr<net::ProxyConfig> proxy_config_; base::Optional<std::string> host_resolver_rules_; base::Optional<gfx::Size> window_size_; base::Optional<base::FilePath> user_data_dir_;
diff --git a/headless/lib/browser/headless_url_request_context_getter.cc b/headless/lib/browser/headless_url_request_context_getter.cc index f3ebc55e..bb00b63a 100644 --- a/headless/lib/browser/headless_url_request_context_getter.cc +++ b/headless/lib/browser/headless_url_request_context_getter.cc
@@ -33,7 +33,7 @@ {base::MayBlock(), base::TaskPriority::BACKGROUND})), user_agent_(options->user_agent()), host_resolver_rules_(options->host_resolver_rules()), - proxy_server_(options->proxy_server()), + proxy_config_(options->proxy_config()), request_interceptors_(std::move(request_interceptors)), net_log_(net_log), headless_browser_context_(headless_browser_context) { @@ -52,7 +52,7 @@ // We must create the proxy config service on the UI loop on Linux because it // must synchronously run on the glib message loop. This will be passed to // the URLRequestContextStorage on the IO thread in GetURLRequestContext(). - if (proxy_server_.IsEmpty()) { + if (!proxy_config_) { proxy_config_service_ = net::ProxyService::CreateSystemProxyConfigService(io_task_runner_); } @@ -71,9 +71,8 @@ builder.set_data_enabled(true); builder.set_file_enabled(true); builder.SetFileTaskRunner(file_task_runner_); - if (!proxy_server_.IsEmpty()) { - builder.set_proxy_service( - net::ProxyService::CreateFixed(proxy_server_.ToString())); + if (proxy_config_) { + builder.set_proxy_service(net::ProxyService::CreateFixed(*proxy_config_)); } else { builder.set_proxy_config_service(std::move(proxy_config_service_)); }
diff --git a/headless/lib/browser/headless_url_request_context_getter.h b/headless/lib/browser/headless_url_request_context_getter.h index 79cef02..5080fa89 100644 --- a/headless/lib/browser/headless_url_request_context_getter.h +++ b/headless/lib/browser/headless_url_request_context_getter.h
@@ -16,6 +16,7 @@ #include "content/public/browser/browser_context.h" #include "content/public/browser/content_browser_client.h" #include "headless/public/headless_browser.h" +#include "net/proxy/proxy_config.h" #include "net/proxy/proxy_config_service.h" #include "net/url_request/url_request_context_getter.h" #include "net/url_request/url_request_job_factory.h" @@ -61,7 +62,7 @@ // thread. std::string user_agent_; std::string host_resolver_rules_; - net::HostPortPair proxy_server_; + const net::ProxyConfig* proxy_config_; // Not owned. std::unique_ptr<net::ProxyConfigService> proxy_config_service_; std::unique_ptr<net::URLRequestContext> url_request_context_;
diff --git a/headless/lib/headless_browser_browsertest.cc b/headless/lib/headless_browser_browsertest.cc index 5ca4e66..1206725 100644 --- a/headless/lib/headless_browser_browsertest.cc +++ b/headless/lib/headless_browser_browsertest.cc
@@ -207,11 +207,14 @@ net::SpawnedTestServer proxy_server_; }; -IN_PROC_BROWSER_TEST_F(HeadlessBrowserTestWithProxy, SetProxyServer) { +IN_PROC_BROWSER_TEST_F(HeadlessBrowserTestWithProxy, SetProxyConfig) { + std::unique_ptr<net::ProxyConfig> proxy_config(new net::ProxyConfig); + proxy_config->proxy_rules().ParseFromString( + proxy_server()->host_port_pair().ToString()); HeadlessBrowserContext* browser_context = browser() ->CreateBrowserContextBuilder() - .SetProxyServer(proxy_server()->host_port_pair()) + .SetProxyConfig(std::move(proxy_config)) .Build(); // Load a page which doesn't actually exist, but for which the our proxy
diff --git a/headless/public/headless_browser.cc b/headless/public/headless_browser.cc index 4eed919..d70edaf6 100644 --- a/headless/public/headless_browser.cc +++ b/headless/public/headless_browser.cc
@@ -99,8 +99,9 @@ return *this; } -Builder& Builder::SetProxyServer(const net::HostPortPair& proxy_server) { - options_.proxy_server = proxy_server; +Builder& Builder::SetProxyConfig( + std::unique_ptr<net::ProxyConfig> proxy_config) { + options_.proxy_config = std::move(proxy_config); return *this; }
diff --git a/headless/public/headless_browser.h b/headless/public/headless_browser.h index dc431c73..63f6c74 100644 --- a/headless/public/headless_browser.h +++ b/headless/public/headless_browser.h
@@ -18,7 +18,6 @@ #include "headless/public/headless_browser_context.h" #include "headless/public/headless_export.h" #include "headless/public/headless_web_contents.h" -#include "net/base/host_port_pair.h" #include "net/base/ip_endpoint.h" #include "ui/gfx/geometry/size.h" @@ -152,9 +151,8 @@ std::string product_name_and_version; std::string user_agent; - // Address of the HTTP/HTTPS proxy server to use. The system proxy settings - // are used by default. - net::HostPortPair proxy_server; + // The ProxyConfig to use. The system proxy settings are used by default. + std::unique_ptr<net::ProxyConfig> proxy_config; // Comma-separated list of rules that control how hostnames are mapped. See // chrome::switches::kHostRules for a description for the format. @@ -218,7 +216,7 @@ Builder& SetProductNameAndVersion( const std::string& product_name_and_version); Builder& SetUserAgent(const std::string& user_agent); - Builder& SetProxyServer(const net::HostPortPair& proxy_server); + Builder& SetProxyConfig(std::unique_ptr<net::ProxyConfig> proxy_config); Builder& SetHostResolverRules(const std::string& host_resolver_rules); Builder& SetWindowSize(const gfx::Size& window_size); Builder& SetUserDataDir(const base::FilePath& user_data_dir);
diff --git a/headless/public/headless_browser_context.h b/headless/public/headless_browser_context.h index 60b73ca6..0b2a002 100644 --- a/headless/public/headless_browser_context.h +++ b/headless/public/headless_browser_context.h
@@ -16,7 +16,7 @@ #include "content/public/common/web_preferences.h" #include "headless/public/headless_export.h" #include "headless/public/headless_web_contents.h" -#include "net/base/host_port_pair.h" +#include "net/proxy/proxy_service.h" #include "net/url_request/url_request_job_factory.h" namespace base { @@ -121,7 +121,7 @@ Builder& SetProductNameAndVersion( const std::string& product_name_and_version); Builder& SetUserAgent(const std::string& user_agent); - Builder& SetProxyServer(const net::HostPortPair& proxy_server); + Builder& SetProxyConfig(std::unique_ptr<net::ProxyConfig> proxy_config); Builder& SetHostResolverRules(const std::string& host_resolver_rules); Builder& SetWindowSize(const gfx::Size& window_size); Builder& SetUserDataDir(const base::FilePath& user_data_dir);
diff --git a/ios/chrome/browser/crash_report/crash_upload_list.cc b/ios/chrome/browser/crash_report/crash_upload_list.cc index 17d5519..6f216da 100644 --- a/ios/chrome/browser/crash_report/crash_upload_list.cc +++ b/ios/chrome/browser/crash_report/crash_upload_list.cc
@@ -6,20 +6,18 @@ #include "base/files/file_path.h" #include "base/path_service.h" -#include "base/threading/sequenced_worker_pool.h" +#include "components/upload_list/crash_upload_list.h" +#include "components/upload_list/text_log_upload_list.h" #include "ios/chrome/browser/chrome_paths.h" -#include "ios/web/public/web_thread.h" namespace ios { -scoped_refptr<CrashUploadList> CreateCrashUploadList( - UploadList::Delegate* delegate) { +scoped_refptr<UploadList> CreateCrashUploadList() { base::FilePath crash_dir_path; PathService::Get(ios::DIR_CRASH_DUMPS, &crash_dir_path); base::FilePath upload_log_path = crash_dir_path.AppendASCII(CrashUploadList::kReporterLogFilename); - return new CrashUploadList(delegate, upload_log_path, - web::WebThread::GetBlockingPool()); + return new TextLogUploadList(upload_log_path); } } // namespace ios
diff --git a/ios/chrome/browser/crash_report/crash_upload_list.h b/ios/chrome/browser/crash_report/crash_upload_list.h index 4f4ce42..b84f05cd 100644 --- a/ios/chrome/browser/crash_report/crash_upload_list.h +++ b/ios/chrome/browser/crash_report/crash_upload_list.h
@@ -6,14 +6,13 @@ #define IOS_CHROME_BROWSER_CRASH_REPORT_CRASH_UPLOAD_LIST_H_ #include "base/memory/ref_counted.h" -#include "components/upload_list/crash_upload_list.h" +#include "components/upload_list/upload_list.h" namespace ios { // Factory that creates the platform-specific implementation of the crash // upload list with the given callback delegate. -scoped_refptr<CrashUploadList> CreateCrashUploadList( - UploadList::Delegate* delegate); +scoped_refptr<UploadList> CreateCrashUploadList(); } // namespace ios
diff --git a/ios/chrome/browser/ntp_tiles/BUILD.gn b/ios/chrome/browser/ntp_tiles/BUILD.gn index e8ce0d2..5e2036d 100644 --- a/ios/chrome/browser/ntp_tiles/BUILD.gn +++ b/ios/chrome/browser/ntp_tiles/BUILD.gn
@@ -29,3 +29,19 @@ "//ios/web", ] } + +source_set("eg_tests") { + testonly = true + configs += [ "//build/config/compiler:enable_arc" ] + sources = [ + "ntp_tiles_egtest.mm", + ] + deps = [ + ":ntp_tiles", + "//components/ntp_tiles:ntp_tiles", + "//ios/chrome/test/app:test_support", + "//ios/chrome/test/earl_grey:test_support", + "//ios/testing:ios_test_support", + "//ios/web/public/test/http_server:http_server", + ] +}
diff --git a/ios/chrome/browser/ntp_tiles/ntp_tiles_egtest.mm b/ios/chrome/browser/ntp_tiles/ntp_tiles_egtest.mm new file mode 100644 index 0000000..6296993 --- /dev/null +++ b/ios/chrome/browser/ntp_tiles/ntp_tiles_egtest.mm
@@ -0,0 +1,57 @@ +// Copyright 2017 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 <EarlGrey/EarlGrey.h> + +#import "ios/chrome/test/app/chrome_test_util.h" +#import "ios/chrome/test/app/history_test_util.h" +#import "ios/chrome/test/app/tab_test_util.h" +#import "ios/chrome/test/earl_grey/chrome_earl_grey.h" +#import "ios/chrome/test/earl_grey/chrome_matchers.h" +#import "ios/chrome/test/earl_grey/chrome_test_case.h" +#import "ios/testing/wait_util.h" +#import "ios/web/public/test/http_server/http_server.h" +#include "ios/web/public/test/http_server/http_server_util.h" + +#if !defined(__has_feature) || !__has_feature(objc_arc) +#error "This file requires ARC support." +#endif + +// Test case for NTP tiles. +@interface NTPTilesTest : ChromeTestCase +@end + +@implementation NTPTilesTest + +// Tests that loading a URL ends up creating an NTP tile. +- (void)testTopSitesTileAfterLoadURL { + std::map<GURL, std::string> responses; + GURL URL = web::test::HttpServer::MakeUrl("http://simple_tile.html"); + responses[URL] = + "<head><title>title1</title></head>" + "<body>You are here.</body>"; + web::test::SetUpSimpleHttpServer(responses); + + // Clear history and verify that the tile does not exist. + chrome_test_util::ClearBrowsingHistory(); + [[GREYUIThreadExecutor sharedInstance] drainUntilIdle]; + chrome_test_util::OpenNewTab(); + + [[EarlGrey selectElementWithMatcher: + chrome_test_util::StaticTextWithAccessibilityLabel(@"title1")] + assertWithMatcher:grey_nil()]; + + [ChromeEarlGrey loadURL:URL]; + + // After loading URL, need to do another action before opening a new tab + // with the icon present. + [ChromeEarlGrey goBack]; + + chrome_test_util::OpenNewTab(); + [[EarlGrey selectElementWithMatcher: + chrome_test_util::StaticTextWithAccessibilityLabel(@"title1")] + assertWithMatcher:grey_notNil()]; +} + +@end
diff --git a/ios/chrome/browser/ui/bookmarks/bookmark_home_handset_view_controller.mm b/ios/chrome/browser/ui/bookmarks/bookmark_home_handset_view_controller.mm index d642cb6..429843b 100644 --- a/ios/chrome/browser/ui/bookmarks/bookmark_home_handset_view_controller.mm +++ b/ios/chrome/browser/ui/bookmarks/bookmark_home_handset_view_controller.mm
@@ -52,8 +52,7 @@ BookmarkFolderViewControllerDelegate, BookmarkMenuViewDelegate, BookmarkModelBridgeObserver, - BookmarkPanelViewDelegate, - BookmarkPromoControllerDelegate> { + BookmarkPanelViewDelegate> { // Bridge to register for bookmark changes. std::unique_ptr<bookmarks::BookmarkModelBridge> _bridge; } @@ -89,11 +88,6 @@ @property(nonatomic, strong) BookmarkFolderViewController* folderSelector; // The view controller to present when editing the current folder. @property(nonatomic, strong) BookmarkFolderEditorViewController* folderEditor; -#pragma mark Specific to this class. - -// The controller managing the display of the promo cell and the promo view -// controller. -@property(nonatomic, strong) BookmarkPromoController* bookmarkPromoController; #pragma mark View loading and switching // This method should be called at most once in the life-cycle of the @@ -201,8 +195,6 @@ @synthesize folderSelector = _folderSelector; @synthesize folderEditor = _folderEditor; -@synthesize bookmarkPromoController = _bookmarkPromoController; - @synthesize delegate = _delegate; @synthesize editIndexPaths = _editIndexPaths; @synthesize editing = _editing; @@ -216,11 +208,6 @@ [self resetEditNodes]; _bridge.reset(new bookmarks::BookmarkModelBridge(self, self.bookmarks)); - // It is important to initialize the promo controller with the browser state - // passed in, as it could be incognito. - _bookmarkPromoController = - [[BookmarkPromoController alloc] initWithBrowserState:browserState - delegate:self]; } return self; } @@ -1071,13 +1058,6 @@ navigationToUrl:url]; } -#pragma mark - BookmarkPromoControllerDelegate - -- (void)promoStateChanged:(BOOL)promoEnabled { - [self.folderView - promoStateChangedAnimated:self.folderView == [self primaryView]]; -} - - (NSIndexPath*)indexPathForCell:(UICollectionViewCell*)cell { DCHECK([self primaryView].collectionView); NSIndexPath* indexPath =
diff --git a/ios/chrome/browser/ui/bookmarks/bookmark_home_tablet_ntp_controller.mm b/ios/chrome/browser/ui/bookmarks/bookmark_home_tablet_ntp_controller.mm index f7d4eba..4c2ac35 100644 --- a/ios/chrome/browser/ui/bookmarks/bookmark_home_tablet_ntp_controller.mm +++ b/ios/chrome/browser/ui/bookmarks/bookmark_home_tablet_ntp_controller.mm
@@ -60,8 +60,7 @@ BookmarkFolderEditorViewControllerDelegate, BookmarkFolderViewControllerDelegate, BookmarkMenuViewDelegate, - BookmarkModelBridgeObserver, - BookmarkPromoControllerDelegate> { + BookmarkModelBridgeObserver> { // Bridge to register for bookmark changes. std::unique_ptr<bookmarks::BookmarkModelBridge> _bridge; @@ -112,9 +111,6 @@ // The view controller to present when editing the current folder. @property(nonatomic, strong) BookmarkFolderEditorViewController* folderEditor; // FIX -// The controller managing the display of the promo cell and the promo view -// controller. -@property(nonatomic, strong) BookmarkPromoController* bookmarkPromoController; #pragma mark Specific to this class. @@ -221,7 +217,6 @@ @synthesize editViewController = _editViewController; @synthesize folderSelector = _folderSelector; @synthesize folderEditor = _folderEditor; -@synthesize bookmarkPromoController = _bookmarkPromoController; // Property declared in NewTabPagePanelProtocol. @synthesize delegate = _delegate; @@ -232,11 +227,6 @@ if (self) { _bridge.reset(new bookmarks::BookmarkModelBridge(self, self.bookmarks)); _editIndexPaths = [[NSMutableArray alloc] init]; - // It is important to initialize the promo controller with the browser state - // passed in, as it could be incognito. - _bookmarkPromoController = - [[BookmarkPromoController alloc] initWithBrowserState:browserState - delegate:self]; } return self; } @@ -1114,13 +1104,6 @@ [self setEditing:NO animated:YES]; } -#pragma mark - BookmarkPromoControllerDelegate - -- (void)promoStateChanged:(BOOL)promoEnabled { - [self.folderView - promoStateChangedAnimated:self.folderView == [self primaryView]]; -} - - (NSIndexPath*)indexPathForCell:(UICollectionViewCell*)cell { DCHECK([self primaryView].collectionView); NSIndexPath* indexPath =
diff --git a/ios/chrome/browser/ui/bookmarks/bookmark_home_view_controller.h b/ios/chrome/browser/ui/bookmarks/bookmark_home_view_controller.h index 9f29228..7c671b5 100644 --- a/ios/chrome/browser/ui/bookmarks/bookmark_home_view_controller.h +++ b/ios/chrome/browser/ui/bookmarks/bookmark_home_view_controller.h
@@ -27,6 +27,7 @@ @class BookmarkHomeWaitingView; @class BookmarkNavigationBar; @class BookmarkMenuItem; +@class BookmarkPromoController; // Class to navigate the bookmark hierarchy, needs subclassing for tablet / // handset case. @@ -92,6 +93,11 @@ // The active collection view that corresponds to primaryMenuItem. - (UIView<BookmarkHomePrimaryView>*)primaryView; + +// The controller managing the display of the promo cell and the promo view +// controller. +@property(nonatomic, strong, readonly) + BookmarkPromoController* bookmarkPromoController; @end #endif // IOS_CHROME_BROWSER_UI_BOOKMARKS_HOME_VIEW_CONTROLLER_H_
diff --git a/ios/chrome/browser/ui/bookmarks/bookmark_home_view_controller.mm b/ios/chrome/browser/ui/bookmarks/bookmark_home_view_controller.mm index 4ebcdcc..261bc0c 100644 --- a/ios/chrome/browser/ui/bookmarks/bookmark_home_view_controller.mm +++ b/ios/chrome/browser/ui/bookmarks/bookmark_home_view_controller.mm
@@ -14,6 +14,7 @@ #import "ios/chrome/browser/ui/bookmarks/bookmark_menu_item.h" #import "ios/chrome/browser/ui/bookmarks/bookmark_menu_view.h" #import "ios/chrome/browser/ui/bookmarks/bookmark_panel_view.h" +#import "ios/chrome/browser/ui/bookmarks/bookmark_promo_controller.h" #import "ios/chrome/browser/ui/rtl_geometry.h" #import "ios/chrome/browser/ui/ui_util.h" #import "ios/chrome/browser/ui/uikit_ui_util.h" @@ -26,8 +27,9 @@ const CGFloat kMenuWidth = 264; } -@interface BookmarkHomeViewController () +@interface BookmarkHomeViewController ()<BookmarkPromoControllerDelegate> // Read / write declaration of read only properties. +@property(nonatomic, strong) BookmarkPromoController* bookmarkPromoController; @property(nonatomic, assign) bookmarks::BookmarkModel* bookmarks; @property(nonatomic, assign) ios::ChromeBrowserState* browserState; @property(nonatomic, strong) BookmarkCollectionView* folderView; @@ -40,6 +42,7 @@ @implementation BookmarkHomeViewController +@synthesize bookmarkPromoController = _bookmarkPromoController; @synthesize bookmarks = _bookmarks; @synthesize browserState = _browserState; @synthesize folderView = _folderView; @@ -66,6 +69,11 @@ _loader = loader; _bookmarks = ios::BookmarkModelFactory::GetForBrowserState(browserState); + // It is important to initialize the promo controller with the browser state + // passed in, as it could be incognito. + _bookmarkPromoController = + [[BookmarkPromoController alloc] initWithBrowserState:browserState + delegate:self]; } return self; } @@ -150,4 +158,11 @@ return kMenuWidth; } +#pragma mark - BookmarkPromoControllerDelegate + +- (void)promoStateChanged:(BOOL)promoEnabled { + [self.folderView + promoStateChangedAnimated:self.folderView == [self primaryView]]; +} + @end
diff --git a/ios/chrome/browser/ui/omnibox/omnibox_popup_material_view_controller.mm b/ios/chrome/browser/ui/omnibox/omnibox_popup_material_view_controller.mm index f6da302..8f0c006 100644 --- a/ios/chrome/browser/ui/omnibox/omnibox_popup_material_view_controller.mm +++ b/ios/chrome/browser/ui/omnibox/omnibox_popup_material_view_controller.mm
@@ -8,6 +8,8 @@ #include "base/ios/ios_util.h" #include "base/mac/scoped_cftyperef.h" +#include "base/metrics/user_metrics.h" +#include "base/metrics/user_metrics_action.h" #include "base/strings/sys_string_conversions.h" #include "base/strings/utf_string_conversions.h" #import "components/image_fetcher/ios/ios_image_data_fetcher_wrapper.h" @@ -646,6 +648,15 @@ NSUInteger row = [sender tag]; const AutocompleteMatch& match = ((const AutocompleteResult&)_currentResult).match_at(row); + + if (AutocompleteMatch::IsSearchType(match.type)) { + base::RecordAction( + base::UserMetricsAction("MobileOmniboxRefineSuggestion.Search")); + } else { + base::RecordAction( + base::UserMetricsAction("MobileOmniboxRefineSuggestion.Url")); + } + // Make a defensive copy of |match.contents|, as CopyToOmnibox() will trigger // a new round of autocomplete and modify |_currentResult|. base::string16 contents(match.contents);
diff --git a/ios/chrome/browser/ui/tab_switcher/tab_switcher_controller.mm b/ios/chrome/browser/ui/tab_switcher/tab_switcher_controller.mm index fbf31011..a16f189 100644 --- a/ios/chrome/browser/ui/tab_switcher/tab_switcher_controller.mm +++ b/ios/chrome/browser/ui/tab_switcher/tab_switcher_controller.mm
@@ -468,8 +468,8 @@ - (UIImage*)updateScreenshotForCellIfNeeded:(TabSwitcherLocalSessionCell*)cell tabModel:(TabModel*)tabModel { - if (cell.screenshot) - return cell.screenshot; + if (cell.snapshot) + return cell.snapshot; UIColor* backgroundColor = [tabModel isOffTheRecord] ? [[MDCPalette greyPalette] tint700] : [UIColor whiteColor];
diff --git a/ios/chrome/browser/ui/tab_switcher/tab_switcher_panel_cell.h b/ios/chrome/browser/ui/tab_switcher/tab_switcher_panel_cell.h index c290a783..c3b01b0 100644 --- a/ios/chrome/browser/ui/tab_switcher/tab_switcher_panel_cell.h +++ b/ios/chrome/browser/ui/tab_switcher/tab_switcher_panel_cell.h
@@ -39,9 +39,12 @@ // Cell showing information about a local session. @interface TabSwitcherLocalSessionCell : TabSwitcherSessionCell +// Getter and setter for the snapshot image. +@property(nonatomic, weak) UIImage* snapshot; + // Returns the top bar of the cell. The top bar holds the favicon and the tab // title. -@property(unsafe_unretained, nonatomic, readonly) UIView* topBar; +@property(nonatomic, weak, readonly) UIView* topBar; // Sets the cell's appearance using information in |tab|. // The delegate needs to be set before calling this method. @@ -50,11 +53,6 @@ // Sets the cell's appearance depending on |type|. - (void)setSessionType:(TabSwitcherSessionType)type; -// Returns the current screenshot set on the cell. -- (UIImage*)screenshot; -// Sets the snapshot. -- (void)setSnapshot:(UIImage*)snapshot; - @end @interface TabSwitcherDistantSessionCell : TabSwitcherSessionCell
diff --git a/ios/chrome/browser/ui/tab_switcher/tab_switcher_panel_cell.mm b/ios/chrome/browser/ui/tab_switcher/tab_switcher_panel_cell.mm index b9ebf28..19d72dde9 100644 --- a/ios/chrome/browser/ui/tab_switcher/tab_switcher_panel_cell.mm +++ b/ios/chrome/browser/ui/tab_switcher/tab_switcher_panel_cell.mm
@@ -214,18 +214,21 @@ return self; } +#pragma mark - Public properties + +- (UIImage*)snapshot { + return _snapshot.image; +} + +- (void)setSnapshot:(UIImage*)snapshot { + _snapshot.image = snapshot; +} + - (UIView*)topBar { return _topBar; } -- (UIImage*)screenshot { - return [_snapshot image]; -} - -- (void)setSnapshot:(UIImage*)image { - DCHECK(!ImageHasAlphaChannel(image)); - [_snapshot setImage:image]; -} +#pragma mark - Public methods - (void)setAppearanceForTab:(Tab*)tab cellSize:(CGSize)cellSize { [_titleLabel setText:tab.title]; @@ -274,6 +277,8 @@ [_snapshot setBackgroundColor:snapshotBackgroundColor]; } +#pragma mark - + - (void)snapshotPressed { [self.delegate cellPressed:self]; }
diff --git a/ios/chrome/browser/ui/webui/crashes_ui.cc b/ios/chrome/browser/ui/webui/crashes_ui.cc index 37ae935c..0586d13 100644 --- a/ios/chrome/browser/ui/webui/crashes_ui.cc +++ b/ios/chrome/browser/ui/webui/crashes_ui.cc
@@ -55,8 +55,7 @@ //////////////////////////////////////////////////////////////////////////////// // The handler for Javascript messages for the chrome://crashes/ page. -class CrashesDOMHandler : public web::WebUIIOSMessageHandler, - public CrashUploadList::Delegate { +class CrashesDOMHandler : public web::WebUIIOSMessageHandler { public: CrashesDOMHandler(); ~CrashesDOMHandler() override; @@ -64,17 +63,18 @@ // WebUIMessageHandler implementation. void RegisterMessages() override; - // CrashUploadList::Delegate implemenation. - void OnUploadListAvailable() override; private: + // Crash UploadList callback. + void OnUploadListAvailable(); + // Asynchronously fetches the list of crashes. Called from JS. void HandleRequestCrashes(const base::ListValue* args); // Sends the recent crashes list JS. void UpdateUI(); - scoped_refptr<CrashUploadList> upload_list_; + scoped_refptr<UploadList> upload_list_; bool list_available_; bool first_load_; @@ -83,15 +83,16 @@ CrashesDOMHandler::CrashesDOMHandler() : list_available_(false), first_load_(true) { - upload_list_ = ios::CreateCrashUploadList(this); + upload_list_ = ios::CreateCrashUploadList(); } CrashesDOMHandler::~CrashesDOMHandler() { - upload_list_->ClearDelegate(); + upload_list_->CancelCallback(); } void CrashesDOMHandler::RegisterMessages() { - upload_list_->LoadUploadListAsynchronously(); + upload_list_->Load(base::BindOnce(&CrashesDOMHandler::OnUploadListAvailable, + base::Unretained(this))); web_ui()->RegisterMessageCallback( crash::kCrashesUIRequestCrashList, base::Bind(&CrashesDOMHandler::HandleRequestCrashes, @@ -105,7 +106,8 @@ UpdateUI(); } else { list_available_ = false; - upload_list_->LoadUploadListAsynchronously(); + upload_list_->Load(base::Bind(&CrashesDOMHandler::OnUploadListAvailable, + base::Unretained(this))); } }
diff --git a/ios/chrome/test/earl_grey/BUILD.gn b/ios/chrome/test/earl_grey/BUILD.gn index 57f2156..f5f171e 100644 --- a/ios/chrome/test/earl_grey/BUILD.gn +++ b/ios/chrome/test/earl_grey/BUILD.gn
@@ -27,6 +27,7 @@ "//ios/chrome/browser/device_sharing:eg_tests", "//ios/chrome/browser/metrics:eg_tests", "//ios/chrome/browser/net:eg_tests", + "//ios/chrome/browser/ntp_tiles:eg_tests", ] }
diff --git a/ios/clean/chrome/browser/ui/tab_collection/tab_collection_tab_cell_unittest.mm b/ios/clean/chrome/browser/ui/tab_collection/tab_collection_tab_cell_unittest.mm index 23605ab..7575de5 100644 --- a/ios/clean/chrome/browser/ui/tab_collection/tab_collection_tab_cell_unittest.mm +++ b/ios/clean/chrome/browser/ui/tab_collection/tab_collection_tab_cell_unittest.mm
@@ -23,12 +23,10 @@ @interface TestTabCell : TabCollectionTabCell @property(nonatomic) UILabel* titleLabel; -@property(nonatomic) TabSwitcherButton* snapshotButton; @end @implementation TestTabCell @dynamic titleLabel; -@dynamic snapshotButton; @end class TabCollectionTabCellTest : public PlatformTest { @@ -69,7 +67,7 @@ callback(nil); }); [cell_ configureCell:item_ snapshotCache:snapshotCache_]; - EXPECT_EQ(nil, [cell_.snapshotButton imageForState:UIControlStateNormal]); + EXPECT_EQ(nil, cell_.snapshot); } // Tests that -configureCell: updates the cell's snapshot from the cache. @@ -82,9 +80,8 @@ callback(snapshot_); }); [cell_ configureCell:item_ snapshotCache:snapshotCache_]; - UIImage* cellImage = - [cell_.snapshotButton imageForState:UIControlStateNormal]; - EXPECT_TRUE(ui::test::uiimage_utils::UIImagesAreEqual(snapshot_, cellImage)); + EXPECT_TRUE( + ui::test::uiimage_utils::UIImagesAreEqual(snapshot_, cell_.snapshot)); } // Tests that asynchronous snapshot retrieval does not set the image after @@ -100,5 +97,5 @@ callback(snapshot_); }); [cell_ configureCell:item_ snapshotCache:snapshotCache_]; - EXPECT_EQ(nil, [cell_.snapshotButton imageForState:UIControlStateNormal]); + EXPECT_EQ(nil, cell_.snapshot); }
diff --git a/mojo/edk/system/message_pipe_dispatcher.cc b/mojo/edk/system/message_pipe_dispatcher.cc index 6a4706c0..3b09c71 100644 --- a/mojo/edk/system/message_pipe_dispatcher.cc +++ b/mojo/edk/system/message_pipe_dispatcher.cc
@@ -274,11 +274,14 @@ const SerializedState* state = static_cast<const SerializedState*>(data); + ports::Node* node = internal::g_core->GetNodeController()->node(); ports::PortRef port; - if (internal::g_core->GetNodeController()->node()->GetPort(ports[0], &port) != - ports::OK) { + if (node->GetPort(ports[0], &port) != ports::OK) return nullptr; - } + + ports::PortStatus status; + if (node->GetStatus(port, &status) != ports::OK) + return nullptr; return new MessagePipeDispatcher(internal::g_core->GetNodeController(), port, state->pipe_id, state->endpoint);
diff --git a/mojo/edk/system/ports/message_queue.cc b/mojo/edk/system/ports/message_queue.cc index f99f738..8596362 100644 --- a/mojo/edk/system/ports/message_queue.cc +++ b/mojo/edk/system/ports/message_queue.cc
@@ -69,13 +69,6 @@ } } -void MessageQueue::GetReferencedPorts(std::vector<PortName>* port_names) { - for (const auto& message : heap_) { - for (size_t i = 0; i < message->num_ports(); ++i) - port_names->push_back(message->ports()[i]); - } -} - void MessageQueue::TakeAllMessages( std::vector<std::unique_ptr<UserMessageEvent>>* messages) { *messages = std::move(heap_);
diff --git a/mojo/edk/system/ports/message_queue.h b/mojo/edk/system/ports/message_queue.h index 4142999..724f0bb 100644 --- a/mojo/edk/system/ports/message_queue.h +++ b/mojo/edk/system/ports/message_queue.h
@@ -56,9 +56,6 @@ void AcceptMessage(std::unique_ptr<UserMessageEvent> message, bool* has_next_message); - // Returns all of the ports referenced by messages in this message queue. - void GetReferencedPorts(std::vector<PortName>* ports); - // Takes all messages from this queue. Used to safely destroy queued messages // without holding any Port lock. void TakeAllMessages(
diff --git a/mojo/edk/system/ports/node.cc b/mojo/edk/system/ports/node.cc index 3a051eb..8554533 100644 --- a/mojo/edk/system/ports/node.cc +++ b/mojo/edk/system/ports/node.cc
@@ -205,7 +205,7 @@ } int Node::ClosePort(const PortRef& port_ref) { - std::vector<PortName> referenced_port_names; + std::vector<std::unique_ptr<UserMessageEvent>> undelivered_messages; NodeName peer_node_name; PortName peer_port_name; uint64_t last_sequence_num = 0; @@ -231,7 +231,7 @@ // If the port being closed still has unread messages, then we need to // take care to close those ports so as to avoid leaking memory. - port->message_queue.GetReferencedPorts(&referenced_port_names); + port->message_queue.TakeAllMessages(&undelivered_messages); break; default: @@ -247,10 +247,12 @@ delegate_->ForwardEvent(peer_node_name, base::MakeUnique<ObserveClosureEvent>( peer_port_name, last_sequence_num)); - for (const auto& name : referenced_port_names) { - PortRef ref; - if (GetPort(name, &ref) == OK) - ClosePort(ref); + for (const auto& message : undelivered_messages) { + for (size_t i = 0; i < message->num_ports(); ++i) { + PortRef ref; + if (GetPort(message->ports()[i], &ref) == OK) + ClosePort(ref); + } } } return OK; @@ -554,6 +556,9 @@ event_to_forward = base::MakeUnique<ObserveProxyAckEvent>( event->proxy_port_name(), port->next_sequence_num_to_send - 1); update_status = true; + DVLOG(2) << "Forwarding ObserveProxyAck from " << event->port_name() + << "@" << name_ << " to " << event->proxy_port_name() << "@" + << event_target_node; } else { // As a proxy ourselves, we don't know how to honor the ObserveProxy // event or to populate the last_sequence_num field of ObserveProxyAck. @@ -1240,7 +1245,7 @@ std::vector<PortRef> ports_to_notify; std::vector<PortName> dead_proxies_to_broadcast; - std::vector<PortName> referenced_port_names; + std::vector<std::unique_ptr<UserMessageEvent>> undelivered_messages; { PortLocker::AssertNoPortsLockedOnCurrentThread(); @@ -1276,8 +1281,10 @@ // inefficient but rare. if (port->state != Port::kReceiving) { dead_proxies_to_broadcast.push_back(iter->first); - iter->second->message_queue.GetReferencedPorts( - &referenced_port_names); + std::vector<std::unique_ptr<UserMessageEvent>> messages; + iter->second->message_queue.TakeAllMessages(&messages); + for (auto& message : messages) + undelivered_messages.emplace_back(std::move(message)); } } } @@ -1306,11 +1313,13 @@ DestroyAllPortsWithPeer(name_, proxy_name); } - // Close any ports referenced by the closed proxies. - for (const auto& name : referenced_port_names) { - PortRef ref; - if (GetPort(name, &ref) == OK) - ClosePort(ref); + // Close any ports referenced by undelivered messages. + for (const auto& message : undelivered_messages) { + for (size_t i = 0; i < message->num_ports(); ++i) { + PortRef ref; + if (GetPort(message->ports()[i], &ref) == OK) + ClosePort(ref); + } } }
diff --git a/skia/config/SkUserConfig.h b/skia/config/SkUserConfig.h index 7ceb5aa5..6d1edca 100644 --- a/skia/config/SkUserConfig.h +++ b/skia/config/SkUserConfig.h
@@ -202,6 +202,10 @@ # define SK_SUPPORT_LEGACY_ANISOTROPIC_MIPMAP_SCALE #endif +#ifndef SK_SUPPORT_LEGACY_IMAGE_ENCODE_API +#define SK_SUPPORT_LEGACY_IMAGE_ENCODE_API +#endif + // Remove this after we fixed all the issues related to the new SDF algorithm // (https://codereview.chromium.org/1643143002) #ifndef SK_USE_LEGACY_DISTANCE_FIELDS
diff --git a/testing/buildbot/chromium.perf.fyi.json b/testing/buildbot/chromium.perf.fyi.json index 0ceb38a..5521ff7 100644 --- a/testing/buildbot/chromium.perf.fyi.json +++ b/testing/buildbot/chromium.perf.fyi.json
@@ -4872,65 +4872,6 @@ }, { "args": [ - "v8.mobile_infinite_scroll_tbmv2", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=android-chromium" - ], - "isolate_name": "telemetry_perf_tests", - "name": "v8.mobile_infinite_scroll_tbmv2", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "android_devices": "1", - "id": "build249-m4--device5", - "os": "Android", - "pool": "Chrome-perf-fyi" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": false, - "io_timeout": 3600 - } - }, - { - "args": [ - "v8.mobile_infinite_scroll_tbmv2", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=reference", - "--output-trace-tag=_ref" - ], - "isolate_name": "telemetry_perf_tests", - "name": "v8.mobile_infinite_scroll_tbmv2.reference", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "android_devices": "1", - "id": "build249-m4--device5", - "os": "Android", - "pool": "Chrome-perf-fyi" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": true, - "io_timeout": 3600 - } - }, - { - "args": [ "v8.runtimestats.browsing_mobile", "-v", "--upload-results", @@ -10065,65 +10006,6 @@ }, { "args": [ - "v8.infinite_scroll_tbmv2", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=release_x64" - ], - "isolate_name": "telemetry_perf_tests", - "name": "v8.infinite_scroll_tbmv2", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "8086:22b1", - "id": "build151-b1", - "os": "Windows-10-10586", - "pool": "Chrome-perf-fyi" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": false, - "io_timeout": 3600 - } - }, - { - "args": [ - "v8.infinite_scroll_tbmv2", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=reference", - "--output-trace-tag=_ref" - ], - "isolate_name": "telemetry_perf_tests", - "name": "v8.infinite_scroll_tbmv2.reference", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "8086:22b1", - "id": "build151-b1", - "os": "Windows-10-10586", - "pool": "Chrome-perf-fyi" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": true, - "io_timeout": 3600 - } - }, - { - "args": [ "v8.runtime_stats.top_25", "-v", "--upload-results", @@ -15172,65 +15054,6 @@ }, { "args": [ - "v8.infinite_scroll_tbmv2", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=release_x64" - ], - "isolate_name": "telemetry_perf_tests", - "name": "v8.infinite_scroll_tbmv2", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "1002:9874", - "id": "build215-b4", - "os": "Windows-10-10586", - "pool": "Chrome-perf-fyi" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": false, - "io_timeout": 3600 - } - }, - { - "args": [ - "v8.infinite_scroll_tbmv2", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=reference", - "--output-trace-tag=_ref" - ], - "isolate_name": "telemetry_perf_tests", - "name": "v8.infinite_scroll_tbmv2.reference", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "1002:9874", - "id": "build215-b4", - "os": "Windows-10-10586", - "pool": "Chrome-perf-fyi" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": true, - "io_timeout": 3600 - } - }, - { - "args": [ "v8.runtime_stats.top_25", "-v", "--upload-results",
diff --git a/testing/buildbot/chromium.perf.json b/testing/buildbot/chromium.perf.json index 51bc228..8b2bf384 100644 --- a/testing/buildbot/chromium.perf.json +++ b/testing/buildbot/chromium.perf.json
@@ -4937,65 +4937,6 @@ }, { "args": [ - "v8.mobile_infinite_scroll_tbmv2", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=android-chromium" - ], - "isolate_name": "telemetry_perf_tests", - "name": "v8.mobile_infinite_scroll_tbmv2", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "android_devices": "1", - "id": "build48-b1--device5", - "os": "Android", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": false, - "io_timeout": 3600 - } - }, - { - "args": [ - "v8.mobile_infinite_scroll_tbmv2", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=reference", - "--output-trace-tag=_ref" - ], - "isolate_name": "telemetry_perf_tests", - "name": "v8.mobile_infinite_scroll_tbmv2.reference", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "android_devices": "1", - "id": "build48-b1--device5", - "os": "Android", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": true, - "io_timeout": 3600 - } - }, - { - "args": [ "v8.runtimestats.browsing_mobile", "-v", "--upload-results", @@ -10025,65 +9966,6 @@ }, { "args": [ - "v8.mobile_infinite_scroll_tbmv2", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=android-chromium" - ], - "isolate_name": "telemetry_perf_tests", - "name": "v8.mobile_infinite_scroll_tbmv2", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "android_devices": "1", - "id": "build75-b1--device5", - "os": "Android", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": false, - "io_timeout": 3600 - } - }, - { - "args": [ - "v8.mobile_infinite_scroll_tbmv2", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=reference", - "--output-trace-tag=_ref" - ], - "isolate_name": "telemetry_perf_tests", - "name": "v8.mobile_infinite_scroll_tbmv2.reference", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "android_devices": "1", - "id": "build75-b1--device5", - "os": "Android", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": true, - "io_timeout": 3600 - } - }, - { - "args": [ "v8.runtimestats.browsing_mobile", "-v", "--upload-results", @@ -12696,36 +12578,6 @@ }, { "args": [ - "v8.mobile_infinite_scroll_tbmv2", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=android-webview", - "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk" - ], - "isolate_name": "telemetry_perf_webview_tests", - "name": "v8.mobile_infinite_scroll_tbmv2", - "override_compile_targets": [ - "telemetry_perf_webview_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "android_devices": "1", - "id": "build166-b1--device5", - "os": "Android", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": false, - "io_timeout": 3600 - } - }, - { - "args": [ "v8.runtimestats.browsing_mobile", "-v", "--upload-results", @@ -17717,65 +17569,6 @@ }, { "args": [ - "v8.mobile_infinite_scroll_tbmv2", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=android-chromium" - ], - "isolate_name": "telemetry_perf_tests", - "name": "v8.mobile_infinite_scroll_tbmv2", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "android_devices": "1", - "id": "build45-b1--device5", - "os": "Android", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": false, - "io_timeout": 3600 - } - }, - { - "args": [ - "v8.mobile_infinite_scroll_tbmv2", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=reference", - "--output-trace-tag=_ref" - ], - "isolate_name": "telemetry_perf_tests", - "name": "v8.mobile_infinite_scroll_tbmv2.reference", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "android_devices": "1", - "id": "build45-b1--device5", - "os": "Android", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": true, - "io_timeout": 3600 - } - }, - { - "args": [ "v8.runtimestats.browsing_mobile", "-v", "--upload-results", @@ -20388,36 +20181,6 @@ }, { "args": [ - "v8.mobile_infinite_scroll_tbmv2", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=android-webview", - "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk" - ], - "isolate_name": "telemetry_perf_webview_tests", - "name": "v8.mobile_infinite_scroll_tbmv2", - "override_compile_targets": [ - "telemetry_perf_webview_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "android_devices": "1", - "id": "build114-b1--device5", - "os": "Android", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": false, - "io_timeout": 3600 - } - }, - { - "args": [ "v8.runtimestats.browsing_mobile", "-v", "--upload-results", @@ -25409,65 +25172,6 @@ }, { "args": [ - "v8.mobile_infinite_scroll_tbmv2", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=android-chromium" - ], - "isolate_name": "telemetry_perf_tests", - "name": "v8.mobile_infinite_scroll_tbmv2", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "android_devices": "1", - "id": "build49-b1--device5", - "os": "Android", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": false, - "io_timeout": 3600 - } - }, - { - "args": [ - "v8.mobile_infinite_scroll_tbmv2", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=reference", - "--output-trace-tag=_ref" - ], - "isolate_name": "telemetry_perf_tests", - "name": "v8.mobile_infinite_scroll_tbmv2.reference", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "android_devices": "1", - "id": "build49-b1--device5", - "os": "Android", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": true, - "io_timeout": 3600 - } - }, - { - "args": [ "v8.runtimestats.browsing_mobile", "-v", "--upload-results", @@ -30497,65 +30201,6 @@ }, { "args": [ - "v8.mobile_infinite_scroll_tbmv2", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=android-chromium" - ], - "isolate_name": "telemetry_perf_tests", - "name": "v8.mobile_infinite_scroll_tbmv2", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "android_devices": "1", - "id": "build47-b1--device5", - "os": "Android", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": false, - "io_timeout": 3600 - } - }, - { - "args": [ - "v8.mobile_infinite_scroll_tbmv2", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=reference", - "--output-trace-tag=_ref" - ], - "isolate_name": "telemetry_perf_tests", - "name": "v8.mobile_infinite_scroll_tbmv2.reference", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "android_devices": "1", - "id": "build47-b1--device5", - "os": "Android", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": true, - "io_timeout": 3600 - } - }, - { - "args": [ "v8.runtimestats.browsing_mobile", "-v", "--upload-results", @@ -35573,65 +35218,6 @@ }, { "args": [ - "v8.infinite_scroll_tbmv2", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=release" - ], - "isolate_name": "telemetry_perf_tests", - "name": "v8.infinite_scroll_tbmv2", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "8086:0166", - "id": "build106-b1", - "os": "Mac-10.11", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": false, - "io_timeout": 3600 - } - }, - { - "args": [ - "v8.infinite_scroll_tbmv2", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=reference", - "--output-trace-tag=_ref" - ], - "isolate_name": "telemetry_perf_tests", - "name": "v8.infinite_scroll_tbmv2.reference", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "8086:0166", - "id": "build106-b1", - "os": "Mac-10.11", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": true, - "io_timeout": 3600 - } - }, - { - "args": [ "v8.runtime_stats.top_25", "-v", "--upload-results", @@ -40700,65 +40286,6 @@ }, { "args": [ - "v8.infinite_scroll_tbmv2", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=release" - ], - "isolate_name": "telemetry_perf_tests", - "name": "v8.infinite_scroll_tbmv2", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "8086:0a2e", - "id": "build162-m1", - "os": "Mac-10.12", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": false, - "io_timeout": 3600 - } - }, - { - "args": [ - "v8.infinite_scroll_tbmv2", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=reference", - "--output-trace-tag=_ref" - ], - "isolate_name": "telemetry_perf_tests", - "name": "v8.infinite_scroll_tbmv2.reference", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "8086:0a2e", - "id": "build162-m1", - "os": "Mac-10.12", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": true, - "io_timeout": 3600 - } - }, - { - "args": [ "v8.runtime_stats.top_25", "-v", "--upload-results", @@ -45827,65 +45354,6 @@ }, { "args": [ - "v8.infinite_scroll_tbmv2", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=release" - ], - "isolate_name": "telemetry_perf_tests", - "name": "v8.infinite_scroll_tbmv2", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "8086:1626", - "id": "build127-b1", - "os": "Mac-10.11", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": false, - "io_timeout": 3600 - } - }, - { - "args": [ - "v8.infinite_scroll_tbmv2", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=reference", - "--output-trace-tag=_ref" - ], - "isolate_name": "telemetry_perf_tests", - "name": "v8.infinite_scroll_tbmv2.reference", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "8086:1626", - "id": "build127-b1", - "os": "Mac-10.11", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": true, - "io_timeout": 3600 - } - }, - { - "args": [ "v8.runtime_stats.top_25", "-v", "--upload-results", @@ -50934,65 +50402,6 @@ }, { "args": [ - "v8.infinite_scroll_tbmv2", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=release" - ], - "isolate_name": "telemetry_perf_tests", - "name": "v8.infinite_scroll_tbmv2", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "8086:0a26", - "id": "build28-b1", - "os": "Mac-10.12", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": false, - "io_timeout": 3600 - } - }, - { - "args": [ - "v8.infinite_scroll_tbmv2", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=reference", - "--output-trace-tag=_ref" - ], - "isolate_name": "telemetry_perf_tests", - "name": "v8.infinite_scroll_tbmv2.reference", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "8086:0a26", - "id": "build28-b1", - "os": "Mac-10.12", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": true, - "io_timeout": 3600 - } - }, - { - "args": [ "v8.runtime_stats.top_25", "-v", "--upload-results", @@ -56061,65 +55470,6 @@ }, { "args": [ - "v8.infinite_scroll_tbmv2", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=release" - ], - "isolate_name": "telemetry_perf_tests", - "name": "v8.infinite_scroll_tbmv2", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "1002:6821", - "id": "build132-b1", - "os": "Mac-10.11", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": false, - "io_timeout": 3600 - } - }, - { - "args": [ - "v8.infinite_scroll_tbmv2", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=reference", - "--output-trace-tag=_ref" - ], - "isolate_name": "telemetry_perf_tests", - "name": "v8.infinite_scroll_tbmv2.reference", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "1002:6821", - "id": "build132-b1", - "os": "Mac-10.11", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": true, - "io_timeout": 3600 - } - }, - { - "args": [ "v8.runtime_stats.top_25", "-v", "--upload-results", @@ -61188,65 +60538,6 @@ }, { "args": [ - "v8.infinite_scroll_tbmv2", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=release" - ], - "isolate_name": "telemetry_perf_tests", - "name": "v8.infinite_scroll_tbmv2", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "8086:0d26", - "id": "build30-b4", - "os": "Mac-10.11", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": false, - "io_timeout": 3600 - } - }, - { - "args": [ - "v8.infinite_scroll_tbmv2", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=reference", - "--output-trace-tag=_ref" - ], - "isolate_name": "telemetry_perf_tests", - "name": "v8.infinite_scroll_tbmv2.reference", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "8086:0d26", - "id": "build30-b4", - "os": "Mac-10.11", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": true, - "io_timeout": 3600 - } - }, - { - "args": [ "v8.runtime_stats.top_25", "-v", "--upload-results", @@ -66295,65 +65586,6 @@ }, { "args": [ - "v8.infinite_scroll_tbmv2", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=release_x64" - ], - "isolate_name": "telemetry_perf_tests", - "name": "v8.infinite_scroll_tbmv2", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "8086:1616", - "id": "build180-b4", - "os": "Windows-10-10240", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": false, - "io_timeout": 3600 - } - }, - { - "args": [ - "v8.infinite_scroll_tbmv2", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=reference", - "--output-trace-tag=_ref" - ], - "isolate_name": "telemetry_perf_tests", - "name": "v8.infinite_scroll_tbmv2.reference", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "8086:1616", - "id": "build180-b4", - "os": "Windows-10-10240", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": true, - "io_timeout": 3600 - } - }, - { - "args": [ "v8.runtime_stats.top_25", "-v", "--upload-results", @@ -71422,65 +70654,6 @@ }, { "args": [ - "v8.infinite_scroll_tbmv2", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=release_x64" - ], - "isolate_name": "telemetry_perf_tests", - "name": "v8.infinite_scroll_tbmv2", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "102b:0534", - "id": "build136-m1", - "os": "Windows-10-10240", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": false, - "io_timeout": 3600 - } - }, - { - "args": [ - "v8.infinite_scroll_tbmv2", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=reference", - "--output-trace-tag=_ref" - ], - "isolate_name": "telemetry_perf_tests", - "name": "v8.infinite_scroll_tbmv2.reference", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "102b:0534", - "id": "build136-m1", - "os": "Windows-10-10240", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": true, - "io_timeout": 3600 - } - }, - { - "args": [ "v8.runtime_stats.top_25", "-v", "--upload-results", @@ -76609,65 +75782,6 @@ }, { "args": [ - "v8.infinite_scroll_tbmv2", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=release_x64" - ], - "isolate_name": "telemetry_perf_tests", - "name": "v8.infinite_scroll_tbmv2", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "1002:6613", - "id": "build105-m1", - "os": "Windows-2008ServerR2-SP1", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": false, - "io_timeout": 3600 - } - }, - { - "args": [ - "v8.infinite_scroll_tbmv2", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=reference", - "--output-trace-tag=_ref" - ], - "isolate_name": "telemetry_perf_tests", - "name": "v8.infinite_scroll_tbmv2.reference", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "1002:6613", - "id": "build105-m1", - "os": "Windows-2008ServerR2-SP1", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": true, - "io_timeout": 3600 - } - }, - { - "args": [ "v8.runtime_stats.top_25", "-v", "--upload-results", @@ -81776,65 +80890,6 @@ }, { "args": [ - "v8.infinite_scroll_tbmv2", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=release_x64" - ], - "isolate_name": "telemetry_perf_tests", - "name": "v8.infinite_scroll_tbmv2", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "8086:041a", - "id": "build168-m1", - "os": "Windows-2008ServerR2-SP1", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": false, - "io_timeout": 3600 - } - }, - { - "args": [ - "v8.infinite_scroll_tbmv2", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=reference", - "--output-trace-tag=_ref" - ], - "isolate_name": "telemetry_perf_tests", - "name": "v8.infinite_scroll_tbmv2.reference", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "8086:041a", - "id": "build168-m1", - "os": "Windows-2008ServerR2-SP1", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": true, - "io_timeout": 3600 - } - }, - { - "args": [ "v8.runtime_stats.top_25", "-v", "--upload-results", @@ -86943,65 +85998,6 @@ }, { "args": [ - "v8.infinite_scroll_tbmv2", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=release_x64" - ], - "isolate_name": "telemetry_perf_tests", - "name": "v8.infinite_scroll_tbmv2", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "10de:104a", - "id": "build95-m1", - "os": "Windows-2008ServerR2-SP1", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": false, - "io_timeout": 3600 - } - }, - { - "args": [ - "v8.infinite_scroll_tbmv2", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=reference", - "--output-trace-tag=_ref" - ], - "isolate_name": "telemetry_perf_tests", - "name": "v8.infinite_scroll_tbmv2.reference", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "10de:104a", - "id": "build95-m1", - "os": "Windows-2008ServerR2-SP1", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": true, - "io_timeout": 3600 - } - }, - { - "args": [ "v8.runtime_stats.top_25", "-v", "--upload-results", @@ -92090,65 +91086,6 @@ }, { "args": [ - "v8.infinite_scroll_tbmv2", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=release" - ], - "isolate_name": "telemetry_perf_tests", - "name": "v8.infinite_scroll_tbmv2", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "102b:0532", - "id": "build189-m1", - "os": "Windows-2008ServerR2-SP1", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": false, - "io_timeout": 3600 - } - }, - { - "args": [ - "v8.infinite_scroll_tbmv2", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=reference", - "--output-trace-tag=_ref" - ], - "isolate_name": "telemetry_perf_tests", - "name": "v8.infinite_scroll_tbmv2.reference", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "102b:0532", - "id": "build189-m1", - "os": "Windows-2008ServerR2-SP1", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": true, - "io_timeout": 3600 - } - }, - { - "args": [ "v8.runtime_stats.top_25", "-v", "--upload-results", @@ -97237,65 +96174,6 @@ }, { "args": [ - "v8.infinite_scroll_tbmv2", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=release_x64" - ], - "isolate_name": "telemetry_perf_tests", - "name": "v8.infinite_scroll_tbmv2", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "102b:0532", - "id": "build142-m1", - "os": "Windows-2008ServerR2-SP1", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": false, - "io_timeout": 3600 - } - }, - { - "args": [ - "v8.infinite_scroll_tbmv2", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=reference", - "--output-trace-tag=_ref" - ], - "isolate_name": "telemetry_perf_tests", - "name": "v8.infinite_scroll_tbmv2.reference", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "102b:0532", - "id": "build142-m1", - "os": "Windows-2008ServerR2-SP1", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": true, - "io_timeout": 3600 - } - }, - { - "args": [ "v8.runtime_stats.top_25", "-v", "--upload-results", @@ -102404,65 +101282,6 @@ }, { "args": [ - "v8.infinite_scroll_tbmv2", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=release_x64" - ], - "isolate_name": "telemetry_perf_tests", - "name": "v8.infinite_scroll_tbmv2", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "102b:0532", - "id": "build146-m1", - "os": "Windows-2012ServerR2-SP0", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": false, - "io_timeout": 3600 - } - }, - { - "args": [ - "v8.infinite_scroll_tbmv2", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=reference", - "--output-trace-tag=_ref" - ], - "isolate_name": "telemetry_perf_tests", - "name": "v8.infinite_scroll_tbmv2.reference", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "102b:0532", - "id": "build146-m1", - "os": "Windows-2012ServerR2-SP0", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": true, - "io_timeout": 3600 - } - }, - { - "args": [ "v8.runtime_stats.top_25", "-v", "--upload-results",
diff --git a/testing/buildbot/gn_isolate_map.pyl b/testing/buildbot/gn_isolate_map.pyl index b79229b..19116ea 100644 --- a/testing/buildbot/gn_isolate_map.pyl +++ b/testing/buildbot/gn_isolate_map.pyl
@@ -1074,7 +1074,7 @@ "type": "windowed_test_launcher", }, "vr_common_unittests": { - "label": "//chrome/browser/android/vr_shell:vr_common_unittests", + "label": "//chrome/browser/vr:vr_common_unittests", "type": "console_test_launcher", }, "webapk_client_junit_tests": {
diff --git a/third_party/WebKit/LayoutTests/FlagExpectations/enable-blink-features=LayoutNG b/third_party/WebKit/LayoutTests/FlagExpectations/enable-blink-features=LayoutNG index 867450f..e66905f5 100644 --- a/third_party/WebKit/LayoutTests/FlagExpectations/enable-blink-features=LayoutNG +++ b/third_party/WebKit/LayoutTests/FlagExpectations/enable-blink-features=LayoutNG
@@ -219,7 +219,7 @@ crbug.com/591099 accessibility/table-with-empty-thead-causes-crash.html [ Failure ] crbug.com/591099 accessibility/table-with-hidden-head-section.html [ Failure ] crbug.com/591099 accessibility/text-change-notification.html [ Crash Failure ] -crbug.com/591099 accessibility/textarea-caret-position.html [ Crash Timeout ] +crbug.com/591099 accessibility/textarea-caret-position.html [ Crash Failure Timeout ] crbug.com/591099 accessibility/textarea-line-for-index.html [ Crash Failure ] crbug.com/591099 accessibility/textarea-selection.html [ Crash Failure ] crbug.com/591099 accessibility/textbox-role-on-contenteditable-crash.html [ Failure ] @@ -229,20 +229,20 @@ crbug.com/591099 animations/3d/change-transform-in-end-event.html [ Failure Pass ] crbug.com/591099 animations/3d/state-at-end-event-transform.html [ Failure Pass ] crbug.com/591099 animations/animation-css-rule-types.html [ Failure ] -crbug.com/591099 animations/events/animation-events-create.html [ Failure ] crbug.com/591099 animations/animations-parsing.html [ Timeout ] -crbug.com/591099 animations/responsive/animations-responsive-to-color-change.html [ Crash Pass ] -crbug.com/591099 animations/svg/clear-svg-animation-effects.html [ Crash Pass ] crbug.com/591099 animations/composition/background-position-composition.html [ Crash Pass ] crbug.com/591099 animations/composition/caret-color-composition.html [ Crash Pass ] crbug.com/591099 animations/composition/stroke-dasharray-composition.html [ Crash Pass ] crbug.com/591099 animations/computed-style.html [ Failure ] -crbug.com/591099 animations/svg/css-animation-overrides-svg-presentation-attribute-animation.html [ Crash Pass ] -crbug.com/591099 animations/events/delay-start-event.html [ Failure ] crbug.com/591099 animations/display-change-does-not-terminate-animation.html [ Crash Failure ] crbug.com/591099 animations/display-inline-style-adjust.html [ Failure ] crbug.com/591099 animations/display-none-cancel-computedstyle.html [ Failure ] crbug.com/591099 animations/display-none-terminates-animation.html [ Failure ] +crbug.com/591099 animations/events/animation-events-create.html [ Failure ] +crbug.com/591099 animations/events/delay-start-event.html [ Failure ] +crbug.com/591099 animations/events/negative-delay-events.html [ Failure ] +crbug.com/591099 animations/events/play-state-initially-paused-start-event.html [ Failure ] +crbug.com/591099 animations/font-size-using-ems.html [ Failure ] crbug.com/591099 animations/hit-testing/inline-element-animation-end-hit-test.html [ Failure ] crbug.com/591099 animations/interpolation/backdrop-filter-interpolation.html [ Crash Timeout ] crbug.com/591099 animations/interpolation/background-color-interpolation.html [ Crash Pass ] @@ -330,14 +330,19 @@ crbug.com/591099 animations/interpolation/webkit-transform-origin-interpolation.html [ Crash Pass ] crbug.com/591099 animations/keyframes-rule.html [ Failure ] crbug.com/591099 animations/lazy-detached-animation-stop.html [ Failure ] -crbug.com/591099 animations/events/negative-delay-events.html [ Failure ] -crbug.com/591099 animations/events/play-state-initially-paused-start-event.html [ Failure ] crbug.com/591099 animations/play-state.html [ Failure ] crbug.com/591099 animations/prefixed/animation-inherit-initial-unprefixed.html [ Failure ] crbug.com/591099 animations/prefixed/keyframes-cssom-prefixed-02.html [ Failure ] crbug.com/591099 animations/prefixed/keyframes-cssom-unprefixed-02.html [ Failure ] +crbug.com/591099 animations/responsive/animations-responsive-to-color-change.html [ Crash Pass ] crbug.com/591099 animations/responsive/interpolation/d-responsive.html [ Crash Pass ] crbug.com/591099 animations/responsive/interpolation/line-height-responsive.html [ Pass Timeout ] +crbug.com/591099 animations/responsive/interpolation/svg-d-responsive.html [ Crash Pass ] +crbug.com/591099 animations/responsive/interpolation/svg-points-responsive.html [ Crash Pass ] +crbug.com/591099 animations/responsive/interpolation/svg-tableValues-responsive.html [ Crash Pass ] +crbug.com/591099 animations/responsive/interpolation/svg-transform-responsive.html [ Crash Pass ] +crbug.com/591099 animations/responsive/interpolation/svg-x-list-responsive.html [ Crash Pass ] +crbug.com/591099 animations/responsive/svg-responsive-to-timing-updates.html [ Crash Pass ] crbug.com/591099 animations/rotate-transform-equivalent.html [ Failure ] crbug.com/591099 animations/skew-notsequential-compositor.html [ Failure ] crbug.com/591099 animations/stability/animation-end-event-destroy-renderer.html [ Failure ] @@ -502,13 +507,9 @@ crbug.com/591099 animations/svg-attribute-interpolation/svg-xChannelSelector-interpolation.html [ Crash Pass ] crbug.com/591099 animations/svg-attribute-interpolation/svg-y-list-interpolation.html [ Crash Pass ] crbug.com/591099 animations/svg-attribute-interpolation/svg-z-interpolation.html [ Crash Pass ] -crbug.com/591099 animations/responsive/interpolation/svg-d-responsive.html [ Crash Pass ] -crbug.com/591099 animations/responsive/interpolation/svg-points-responsive.html [ Crash Pass ] -crbug.com/591099 animations/responsive/interpolation/svg-tableValues-responsive.html [ Crash Pass ] -crbug.com/591099 animations/responsive/interpolation/svg-transform-responsive.html [ Crash Pass ] -crbug.com/591099 animations/responsive/interpolation/svg-x-list-responsive.html [ Crash Pass ] +crbug.com/591099 animations/svg/clear-svg-animation-effects.html [ Crash Pass ] +crbug.com/591099 animations/svg/css-animation-overrides-svg-presentation-attribute-animation.html [ Crash Pass ] crbug.com/591099 animations/svg/svg-presentation-attribute-animation.html [ Crash Pass ] -crbug.com/591099 animations/responsive/svg-responsive-to-timing-updates.html [ Crash Pass ] crbug.com/591099 animations/timing/timing-model.html [ Pass Timeout ] crbug.com/591099 battery-status/api-defined.html [ Failure ] crbug.com/591099 battery-status/detached-no-crash.html [ Failure ] @@ -4650,6 +4651,12 @@ crbug.com/591099 external/wpt/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-014.html [ Crash Failure ] crbug.com/591099 external/wpt/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-015.html [ Crash Pass ] crbug.com/591099 external/wpt/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-016.html [ Crash Pass ] +crbug.com/591099 external/wpt/css/css-grid-1/alignment/self-baseline/grid-self-baseline-changes-grid-area-size-007.html [ Failure ] +crbug.com/591099 external/wpt/css/css-grid-1/alignment/self-baseline/grid-self-baseline-changes-grid-area-size-008.html [ Failure ] +crbug.com/591099 external/wpt/css/css-grid-1/alignment/self-baseline/grid-self-baseline-changes-grid-area-size-009.html [ Failure ] +crbug.com/591099 external/wpt/css/css-grid-1/alignment/self-baseline/grid-self-baseline-changes-grid-area-size-010.html [ Failure ] +crbug.com/591099 external/wpt/css/css-grid-1/alignment/self-baseline/grid-self-baseline-changes-grid-area-size-011.html [ Failure ] +crbug.com/591099 external/wpt/css/css-grid-1/alignment/self-baseline/grid-self-baseline-changes-grid-area-size-012.html [ Failure ] crbug.com/591099 external/wpt/css/css-grid-1/grid-definition/fr-unit-with-percentage.html [ Failure ] crbug.com/591099 external/wpt/css/css-grid-1/grid-definition/fr-unit.html [ Failure ] crbug.com/591099 external/wpt/css/css-grid-1/grid-items/grid-inline-z-axis-ordering-overlapped-items-006.html [ Failure ] @@ -5666,6 +5673,7 @@ crbug.com/591099 external/wpt/html/webappapis/scripting/processing-model-2/window-onerror-with-cross-frame-event-listeners-3.html [ Crash Pass ] crbug.com/591099 external/wpt/html/webappapis/scripting/processing-model-2/window-onerror-with-cross-frame-event-listeners-4.html [ Crash Pass ] crbug.com/591099 external/wpt/http/basic-auth-cache-test.html [ Crash Timeout ] +crbug.com/591099 external/wpt/http/content_length.html [ Crash Pass ] crbug.com/591099 external/wpt/innerText/getter.html [ Crash Failure ] crbug.com/591099 external/wpt/input-events/input-events-typing-data-manual.html [ Crash Pass ] crbug.com/591099 external/wpt/intersection-observer/client-rect.html [ Crash Pass ] @@ -5675,7 +5683,7 @@ crbug.com/591099 external/wpt/intersection-observer/remove-element.html [ Failure ] crbug.com/591099 external/wpt/intersection-observer/root-margin.html [ Crash Pass ] crbug.com/591099 external/wpt/intersection-observer/same-document-root.html [ Crash Failure ] -crbug.com/591099 external/wpt/media-source/mediasource-activesourcebuffers.html [ Crash Pass ] +crbug.com/591099 external/wpt/media-source/mediasource-activesourcebuffers.html [ Crash Failure Pass ] crbug.com/591099 external/wpt/media-source/mediasource-addsourcebuffer-mode.html [ Crash Pass ] crbug.com/591099 external/wpt/media-source/mediasource-addsourcebuffer.html [ Crash Pass ] crbug.com/591099 external/wpt/media-source/mediasource-append-buffer.html [ Crash Pass ] @@ -10131,7 +10139,7 @@ crbug.com/591099 fast/events/popup-forwarded-gesture-blocked.html [ Failure ] crbug.com/591099 fast/events/popup-forwarded-gesture.html [ Failure ] crbug.com/591099 fast/events/programmatic-check-no-change-event.html [ Failure ] -crbug.com/591099 fast/events/recorded-keydown-event.html [ Crash Failure ] +crbug.com/591099 fast/events/recorded-keydown-event.html [ Crash Failure Timeout ] crbug.com/591099 fast/events/related-target-focusevent.html [ Failure Timeout ] crbug.com/591099 fast/events/related-target.html [ Failure ] crbug.com/591099 fast/events/relative-offset-of-simulated-click.html [ Failure ] @@ -11377,7 +11385,7 @@ crbug.com/591099 fast/forms/textarea/textarea-placeholder-visibility-1.html [ Failure ] crbug.com/591099 fast/forms/textarea/textarea-placeholder-visibility-2.html [ Crash Failure ] crbug.com/591099 fast/forms/textarea/textarea-placeholder-wrapping.html [ Crash Failure ] -crbug.com/591099 fast/forms/textarea/textarea-resize-above-min-size-and-below-initial-size.html [ Crash Pass ] +crbug.com/591099 fast/forms/textarea/textarea-resize-above-min-size-and-below-initial-size.html [ Crash Pass Timeout ] crbug.com/591099 fast/forms/textarea/textarea-resize-below-min-intrinsic-size.html [ Crash Pass Timeout ] crbug.com/591099 fast/forms/textarea/textarea-resize-below-min-size-zoomed.html [ Crash Pass Timeout ] crbug.com/591099 fast/forms/textarea/textarea-resize-below-min-size.html [ Crash Pass ] @@ -12801,7 +12809,6 @@ crbug.com/591099 fast/parser/assertion-empty-attribute.html [ Failure ] crbug.com/591099 fast/parser/bad-xml-slash.html [ Failure ] crbug.com/591099 fast/parser/badentity.xhtml [ Failure ] -crbug.com/591099 fast/parser/block-nesting-cap.html [ Failure ] crbug.com/591099 fast/parser/broken-comment-1.html [ Failure ] crbug.com/591099 fast/parser/broken-comment-2.html [ Failure ] crbug.com/591099 fast/parser/broken-comment-3.html [ Failure ] @@ -14477,45 +14484,51 @@ crbug.com/591099 html5lib/generated/run-tests2-write.html [ Failure ] crbug.com/591099 html5lib/generated/run-webkit02-data.html [ Failure ] crbug.com/591099 html5lib/generated/run-webkit02-write.html [ Failure ] -crbug.com/591099 http/tests/accessibility/slow-document-load.html [ Failure ] +crbug.com/591099 http/tests/accessibility/slow-document-load.html [ Crash Failure ] crbug.com/591099 http/tests/activedomobject/media.html [ Failure ] -crbug.com/591099 http/tests/appcache/404-manifest.html [ Failure ] +crbug.com/591099 http/tests/appcache/404-manifest.html [ Crash Failure ] crbug.com/591099 http/tests/appcache/404-resource-cross-origin.html [ Failure ] crbug.com/591099 http/tests/appcache/404-resource.html [ Failure ] +crbug.com/591099 http/tests/appcache/abort-cache-onchecking.html [ Crash Pass ] crbug.com/591099 http/tests/appcache/access-via-redirect.php [ Failure ] +crbug.com/591099 http/tests/appcache/crash-when-navigating-away-then-back.html [ Crash Pass ] crbug.com/591099 http/tests/appcache/credential-url.html [ Failure Timeout ] crbug.com/591099 http/tests/appcache/cyrillic-uri.html [ Crash Failure ] crbug.com/591099 http/tests/appcache/deferred-events-delete-while-raising-timer.html [ Crash Failure ] crbug.com/591099 http/tests/appcache/deferred-events-delete-while-raising.html [ Crash Failure ] +crbug.com/591099 http/tests/appcache/deferred-events.html [ Crash Pass ] crbug.com/591099 http/tests/appcache/destroyed-frame.html [ Crash Failure ] crbug.com/591099 http/tests/appcache/detached-iframe.html [ Crash Failure ] crbug.com/591099 http/tests/appcache/different-https-origin-resource-main.html [ Failure ] crbug.com/591099 http/tests/appcache/different-origin-manifest.html [ Failure ] crbug.com/591099 http/tests/appcache/different-scheme.html [ Failure Timeout ] +crbug.com/591099 http/tests/appcache/document-write-html-element.html [ Crash Pass ] +crbug.com/591099 http/tests/appcache/empty-manifest.html [ Crash Pass ] crbug.com/591099 http/tests/appcache/exceptions.html [ Failure ] +crbug.com/591099 http/tests/appcache/fail-on-update-2.html [ Crash Pass ] crbug.com/591099 http/tests/appcache/fallback.html [ Failure ] crbug.com/591099 http/tests/appcache/foreign-fallback.html [ Failure ] crbug.com/591099 http/tests/appcache/foreign-iframe-main.html [ Failure Timeout ] crbug.com/591099 http/tests/appcache/local-content.html [ Failure ] -crbug.com/591099 http/tests/appcache/main-resource-hash.html [ Failure Timeout ] -crbug.com/591099 http/tests/appcache/main-resource-redirect.html [ Failure ] +crbug.com/591099 http/tests/appcache/main-resource-hash.html [ Crash Failure Timeout ] +crbug.com/591099 http/tests/appcache/main-resource-redirect.html [ Crash Failure ] crbug.com/591099 http/tests/appcache/manifest-parsing.html [ Failure ] crbug.com/591099 http/tests/appcache/manifest-redirect-2.html [ Failure ] crbug.com/591099 http/tests/appcache/manifest-redirect.html [ Failure ] crbug.com/591099 http/tests/appcache/modified-manifest.html [ Failure ] -crbug.com/591099 http/tests/appcache/multi-fallback.html [ Failure ] +crbug.com/591099 http/tests/appcache/multi-fallback.html [ Crash Failure ] crbug.com/591099 http/tests/appcache/non-html.xhtml [ Failure ] crbug.com/591099 http/tests/appcache/obsolete-error-events.html [ Failure Timeout ] -crbug.com/591099 http/tests/appcache/offline-access.html [ Failure ] -crbug.com/591099 http/tests/appcache/online-fallback-layering.html [ Failure ] +crbug.com/591099 http/tests/appcache/offline-access.html [ Crash Failure ] +crbug.com/591099 http/tests/appcache/online-fallback-layering.html [ Crash Failure ] crbug.com/591099 http/tests/appcache/online-whitelist.html [ Failure ] -crbug.com/591099 http/tests/appcache/reload.html [ Failure ] +crbug.com/591099 http/tests/appcache/reload.html [ Crash Failure ] crbug.com/591099 http/tests/appcache/remove-cache.html [ Crash Failure ] crbug.com/591099 http/tests/appcache/resource-redirect-2.html [ Failure ] -crbug.com/591099 http/tests/appcache/resource-redirect.html [ Failure ] +crbug.com/591099 http/tests/appcache/resource-redirect.html [ Crash Failure ] crbug.com/591099 http/tests/appcache/top-frame-1.html [ Failure ] crbug.com/591099 http/tests/appcache/top-frame-2.html [ Failure Timeout ] -crbug.com/591099 http/tests/appcache/top-frame-3.html [ Failure ] +crbug.com/591099 http/tests/appcache/top-frame-3.html [ Crash Failure ] crbug.com/591099 http/tests/appcache/top-frame-4.html [ Failure ] crbug.com/591099 http/tests/appcache/update-cache.html [ Failure ] crbug.com/591099 http/tests/appcache/video.html [ Crash Pass ] @@ -14524,42 +14537,63 @@ crbug.com/591099 http/tests/appcache/wrong-signature-2.html [ Failure ] crbug.com/591099 http/tests/appcache/wrong-signature.html [ Failure ] crbug.com/591099 http/tests/appcache/xhr-foreign-resource.html [ Failure ] +crbug.com/591099 http/tests/background_fetch/background-fetch-manager-fetch.https.html [ Crash Pass ] +crbug.com/591099 http/tests/background_fetch/background-fetch-manager-get.https.html [ Crash Pass ] +crbug.com/591099 http/tests/background_sync/chromium/stop-worker-no-crash.html [ Crash Pass ] +crbug.com/591099 http/tests/budget/get-budget-in-service-worker.html [ Crash Pass ] +crbug.com/591099 http/tests/cache/cancel-multiple-post-xhrs.html [ Crash Pass ] crbug.com/591099 http/tests/cache/content-type-ignored-during-revalidation.html [ Failure ] crbug.com/591099 http/tests/cache/history-only-cached-subresource-loads-max-age-https.html [ Failure ] crbug.com/591099 http/tests/cache/history-only-cached-subresource-loads.html [ Failure ] crbug.com/591099 http/tests/cache/network-error-during-revalidation.html [ Failure ] +crbug.com/591099 http/tests/cache/post-redirect-get.php [ Crash Pass ] +crbug.com/591099 http/tests/cache/smil-usecounter-in-cached-image.html [ Crash Pass ] crbug.com/591099 http/tests/cache/subresource-fragment-identifier.html [ Crash Failure ] -crbug.com/591099 http/tests/cache/subresource-multiple-instances.html [ Failure ] +crbug.com/591099 http/tests/cache/subresource-multiple-instances.html [ Crash Failure ] crbug.com/591099 http/tests/cache/subresource-revalidation-referrer.html [ Failure ] crbug.com/591099 http/tests/cache/x-frame-options-304.html [ Failure ] -crbug.com/591099 http/tests/cache/xhr-body.html [ Failure ] -crbug.com/591099 http/tests/cache/xhr-vary-header.html [ Failure ] +crbug.com/591099 http/tests/cache/xhr-body.html [ Crash Failure ] +crbug.com/591099 http/tests/cache/xhr-vary-header.html [ Crash Failure ] crbug.com/591099 http/tests/cache/zero-length-xhr.html [ Failure ] crbug.com/591099 http/tests/canvas/canvas-filter-svg-external-multiple.html [ Failure ] crbug.com/591099 http/tests/canvas/canvas-filter-svg-external.html [ Failure ] -crbug.com/591099 http/tests/canvas/webgl/origin-clean-conformance.html [ Failure ] -crbug.com/591099 http/tests/cookies/double-quoted-value-with-semi-colon.html [ Failure ] -crbug.com/591099 http/tests/cookies/http-get-cookie-set-in-js.html [ Failure ] -crbug.com/591099 http/tests/cookies/js-get-and-set-http-only-cookie.html [ Failure ] -crbug.com/591099 http/tests/cookies/js-set-null.html [ Failure ] +crbug.com/591099 http/tests/canvas/philip/tests/security.pattern.canvas.fillStyle.html [ Crash Pass ] +crbug.com/591099 http/tests/canvas/philip/tests/security.pattern.cross.html [ Crash Pass ] +crbug.com/591099 http/tests/canvas/philip/tests/security.reset.html [ Crash Pass ] +crbug.com/591099 http/tests/canvas/webgl/origin-clean-conformance.html [ Crash Failure ] +crbug.com/591099 http/tests/cookies/double-quoted-value-with-semi-colon.html [ Crash Failure ] +crbug.com/591099 http/tests/cookies/http-get-cookie-set-in-js.html [ Crash Failure ] +crbug.com/591099 http/tests/cookies/js-get-and-set-http-only-cookie.html [ Crash Failure ] +crbug.com/591099 http/tests/cookies/js-set-null.html [ Crash Failure ] crbug.com/591099 http/tests/cookies/multiple-cookies.html [ Failure ] +crbug.com/591099 http/tests/cookies/same-site/basics.html [ Crash Pass ] +crbug.com/591099 http/tests/cookies/set-cookie-on-redirect.html [ Crash Pass ] crbug.com/591099 http/tests/cookies/simple-cookies-expired.html [ Failure ] -crbug.com/591099 http/tests/cookies/simple-cookies-max-age.html [ Failure ] +crbug.com/591099 http/tests/cookies/simple-cookies-max-age.html [ Crash Failure ] crbug.com/591099 http/tests/cookies/single-quoted-value.html [ Failure ] +crbug.com/591099 http/tests/credentialmanager/credentialscontainer-create-basics.html [ Crash Pass ] crbug.com/591099 http/tests/credentialmanager/credentialscontainer-frame-errors.html [ Crash Pass ] +crbug.com/591099 http/tests/credentialmanager/credentialscontainer-get-basics.html [ Crash Pass ] +crbug.com/591099 http/tests/credentialmanager/credentialscontainer-preventsilentaccess-basics.html [ Crash Pass ] +crbug.com/591099 http/tests/credentialmanager/passwordcredential-fetch-registrabledomain.html [ Crash Pass ] +crbug.com/591099 http/tests/credentialmanager/passwordcredential-fetch.html [ Crash Pass ] +crbug.com/591099 http/tests/credentialmanager/passwordcredential-redirect.html [ Crash Pass ] crbug.com/591099 http/tests/css/border-image-loading.html [ Failure ] +crbug.com/591099 http/tests/css/cross-fade-reload.html [ Crash Pass ] crbug.com/591099 http/tests/css/css-image-loading.html [ Crash Failure ] crbug.com/591099 http/tests/css/css-image-valued-shape.html [ Failure ] crbug.com/591099 http/tests/css/css-non-blocking.html [ Failure ] crbug.com/591099 http/tests/css/font-face-src-loading.html [ Failure ] crbug.com/591099 http/tests/css/image-value-cached.html [ Crash Pass ] -crbug.com/591099 http/tests/css/mask-image-loading.html [ Failure ] +crbug.com/591099 http/tests/css/mask-image-loading.html [ Crash Failure ] +crbug.com/591099 http/tests/css/missing-repaint-after-slow-style-sheet.pl [ Crash Pass ] crbug.com/591099 http/tests/css/pending-stylesheet-offset-width.html [ Failure ] crbug.com/591099 http/tests/css/performance-info-with-cached-sheet.html [ Failure ] crbug.com/591099 http/tests/css/reflection-mask-image-loading.html [ Failure ] crbug.com/591099 http/tests/css/shape-image-file.html [ Failure ] -crbug.com/591099 http/tests/css/shared-stylesheet-mutation-preconstruct.html [ Failure ] +crbug.com/591099 http/tests/css/shared-stylesheet-mutation-preconstruct.html [ Crash Failure ] crbug.com/591099 http/tests/css/shared-stylesheet-mutation.html [ Failure ] +crbug.com/591099 http/tests/css/vertical-align-baseline-after-image-load-3.html [ Crash Pass ] crbug.com/591099 http/tests/csspaint/border-color.html [ Failure ] crbug.com/591099 http/tests/csspaint/invalidation-background-image.html [ Timeout ] crbug.com/591099 http/tests/csspaint/invalidation-border-image.html [ Timeout ] @@ -14575,8 +14609,8 @@ crbug.com/591099 http/tests/download/inherited-encoding.html [ Failure Timeout ] crbug.com/591099 http/tests/download/literal-utf-8.html [ Failure ] crbug.com/591099 http/tests/eventsource/eventsource-bad-mime-type.html [ Failure ] -crbug.com/591099 http/tests/eventsource/eventsource-content-type-charset.html [ Failure ] -crbug.com/591099 http/tests/eventsource/eventsource-cors-basic.html [ Failure ] +crbug.com/591099 http/tests/eventsource/eventsource-content-type-charset.html [ Crash Failure ] +crbug.com/591099 http/tests/eventsource/eventsource-cors-basic.html [ Crash Failure ] crbug.com/591099 http/tests/eventsource/eventsource-cors-no-server.html [ Failure ] crbug.com/591099 http/tests/eventsource/eventsource-cors-non-http.html [ Failure ] crbug.com/591099 http/tests/eventsource/eventsource-cors-redirect.html [ Failure ] @@ -14589,7 +14623,7 @@ crbug.com/591099 http/tests/eventsource/eventsource-reconnect.html [ Failure ] crbug.com/591099 http/tests/eventsource/eventsource-retry-precision.html [ Failure ] crbug.com/591099 http/tests/eventsource/eventsource-status-code-states.html [ Failure ] -crbug.com/591099 http/tests/eventsource/eventsource-url-attribute.html [ Failure ] +crbug.com/591099 http/tests/eventsource/eventsource-url-attribute.html [ Crash Failure ] crbug.com/591099 http/tests/eventsource/existent-eventsource-status-error-iframe-crash.html [ Crash Pass ] crbug.com/591099 http/tests/eventsource/non-existent-eventsource-status-error-iframe-crash.html [ Crash Pass ] crbug.com/591099 http/tests/eventsource/workers/eventsource-bad-mime-type.html [ Failure ] @@ -14624,6 +14658,7 @@ crbug.com/591099 http/tests/feature-policy/payment-disabled.php [ Crash Failure ] crbug.com/591099 http/tests/feature-policy/payment-enabledforall.php [ Crash Failure ] crbug.com/591099 http/tests/feature-policy/payment-enabledforself.php [ Crash Pass ] +crbug.com/591099 http/tests/fetch/chromium/data-saver.html [ Crash Pass ] crbug.com/591099 http/tests/fetch/chromium/discarded-window.html [ Crash Pass ] crbug.com/591099 http/tests/fetch/window/pageimportancesignals.html [ Failure ] crbug.com/591099 http/tests/fileapi/blob-url-in-subframe.html [ Failure ] @@ -14739,7 +14774,7 @@ crbug.com/591099 http/tests/inspector/bindings/bindings-frame-attach-detach.html [ Crash Failure Timeout ] crbug.com/591099 http/tests/inspector/bindings/bindings-frame-navigate.html [ Failure Timeout ] crbug.com/591099 http/tests/inspector/bindings/bindings-main-frame-navigated.html [ Failure ] -crbug.com/591099 http/tests/inspector/bindings/bindings-multiple-frames.html [ Crash Failure ] +crbug.com/591099 http/tests/inspector/bindings/bindings-multiple-frames.html [ Crash Failure Timeout ] crbug.com/591099 http/tests/inspector/bindings/contentscripts-bindings-multiple-frames.html [ Crash Failure ] crbug.com/591099 http/tests/inspector/bindings/contentscripts-navigator-multiple-frames.html [ Crash Failure Timeout ] crbug.com/591099 http/tests/inspector/bindings/dynamic-bindings-frame-attach-detach.html [ Failure ] @@ -14775,7 +14810,7 @@ crbug.com/591099 http/tests/inspector/console/console-links-on-messages-before-inspection.html [ Failure ] crbug.com/591099 http/tests/inspector/console/console-on-paint-worklet.html [ Failure ] crbug.com/591099 http/tests/inspector/debugger/fetch-breakpoints.html [ Crash Failure Timeout ] -crbug.com/591099 http/tests/inspector/elements/elements-linkify-attributes.html [ Crash Failure ] +crbug.com/591099 http/tests/inspector/elements/elements-linkify-attributes.html [ Crash Failure Timeout ] crbug.com/591099 http/tests/inspector/elements/event-listeners-framework-with-service-worker.html [ Crash Failure ] crbug.com/591099 http/tests/inspector/elements/html-link-import.html [ Crash Failure ] crbug.com/591099 http/tests/inspector/elements/styles/edit-css-with-source-url.html [ Crash Failure ] @@ -14788,12 +14823,12 @@ crbug.com/591099 http/tests/inspector/elements/styles/styles-do-not-add-inline-stylesheets-in-navigator.html [ Failure Timeout ] crbug.com/591099 http/tests/inspector/elements/styles/styles-redirected-css.html [ Crash Failure ] crbug.com/591099 http/tests/inspector/elements/styles/stylesheet-tracking.html [ Crash Failure Timeout ] -crbug.com/591099 http/tests/inspector/elements/styles/xsl-transformed.xml [ Crash Failure ] +crbug.com/591099 http/tests/inspector/elements/styles/xsl-transformed.xml [ Crash Failure Timeout ] crbug.com/591099 http/tests/inspector/extensions-headers.html [ Crash Failure ] crbug.com/591099 http/tests/inspector/extensions-iframe-eval.html [ Crash Failure ] crbug.com/591099 http/tests/inspector/extensions-ignore-cache.html [ Crash Failure ] crbug.com/591099 http/tests/inspector/extensions-network-redirect.html [ Crash Failure ] -crbug.com/591099 http/tests/inspector/extensions-useragent.html [ Crash Failure ] +crbug.com/591099 http/tests/inspector/extensions-useragent.html [ Crash Failure Timeout ] crbug.com/591099 http/tests/inspector/extensions/extensions-api.html [ Failure ] crbug.com/591099 http/tests/inspector/extensions/extensions-audits-api.html [ Crash Failure ] crbug.com/591099 http/tests/inspector/extensions/extensions-audits-content-script.html [ Crash Failure ] @@ -14812,7 +14847,7 @@ crbug.com/591099 http/tests/inspector/fragment.html [ Crash Failure ] crbug.com/591099 http/tests/inspector/indexeddb/database-data.html [ Failure ] crbug.com/591099 http/tests/inspector/indexeddb/database-names.html [ Failure ] -crbug.com/591099 http/tests/inspector/indexeddb/database-refresh-view.html [ Crash Failure ] +crbug.com/591099 http/tests/inspector/indexeddb/database-refresh-view.html [ Crash Failure Timeout ] crbug.com/591099 http/tests/inspector/indexeddb/database-structure.html [ Failure ] crbug.com/591099 http/tests/inspector/indexeddb/resources-panel.html [ Failure ] crbug.com/591099 http/tests/inspector/indexeddb/transaction-promise-console.html [ Failure ] @@ -16424,7 +16459,7 @@ crbug.com/591099 inspector-enabled/sources/debugger/script-formatter-console.html [ Failure ] crbug.com/591099 inspector-enabled/tabbed-pane-closeable-persistence-restore.html [ Failure ] crbug.com/591099 inspector-protocol/accessibility/accessibility-ignoredNodes.js [ Crash Failure Timeout ] -crbug.com/591099 inspector-protocol/accessibility/accessibility-nameSources-buttons.js [ Crash Failure Timeout ] +crbug.com/591099 inspector-protocol/accessibility/accessibility-nameSources-buttons.js [ Crash Failure Pass Timeout ] crbug.com/591099 inspector-protocol/accessibility/accessibility-nameSources-img-figure.js [ Crash Failure Timeout ] crbug.com/591099 inspector-protocol/accessibility/accessibility-nameSources-input-buttons.js [ Crash Timeout ] crbug.com/591099 inspector-protocol/accessibility/accessibility-nameSources-input.js [ Crash Failure Timeout ] @@ -17224,7 +17259,7 @@ crbug.com/591099 inspector/tracing/timeline-js/timeline-js-line-level-profile.html [ Crash Pass ] crbug.com/591099 inspector/tracing/timeline-js/timeline-microtasks.html [ Crash Failure ] crbug.com/591099 inspector/tracing/timeline-js/timeline-open-function-call.html [ Failure ] -crbug.com/591099 inspector/tracing/timeline-js/timeline-runtime-stats.html [ Crash Pass ] +crbug.com/591099 inspector/tracing/timeline-js/timeline-runtime-stats.html [ Crash Failure Pass ] crbug.com/591099 inspector/tracing/timeline-js/timeline-script-id.html [ Crash Failure ] crbug.com/591099 inspector/tracing/timeline-js/timeline-script-tag-1.html [ Crash Failure ] crbug.com/591099 inspector/tracing/timeline-js/timeline-script-tag-2.html [ Crash Failure ] @@ -20351,26 +20386,42 @@ crbug.com/591099 vibration/vibration-exceptions.html [ Failure ] crbug.com/591099 vibration/vibration-iframe.html [ Timeout ] crbug.com/591099 vibration/vibration-patterns.html [ Failure ] -crbug.com/591099 virtual/android/fast/rootscroller/set-root-scroller.html [ Failure ] +crbug.com/591099 virtual/android/fast/rootscroller/root-scroller-apply-filter-to-parent.html [ Crash Pass ] +crbug.com/591099 virtual/android/fast/rootscroller/set-root-scroller.html [ Crash Failure ] crbug.com/591099 virtual/android/fullscreen/anonymous-block-merge-crash.html [ Crash Pass ] +crbug.com/591099 virtual/android/fullscreen/api/element-request-fullscreen-two-iframes.html [ Crash Pass ] +crbug.com/591099 virtual/android/fullscreen/api/element-request-fullscreen-vs-exit.html [ Crash Pass ] crbug.com/591099 virtual/android/fullscreen/compositor-touch-hit-rects-fullscreen-video-controls.html [ Failure ] crbug.com/591099 virtual/android/fullscreen/exit-full-screen-iframe.html [ Crash Failure ] crbug.com/591099 virtual/android/fullscreen/full-screen-cancel-nested.html [ Crash Failure ] crbug.com/591099 virtual/android/fullscreen/full-screen-child-not-allowed-crash.html [ Failure ] +crbug.com/591099 virtual/android/fullscreen/full-screen-contentEditable-crash.html [ Crash Pass ] crbug.com/591099 virtual/android/fullscreen/full-screen-crash-offsetLeft.html [ Failure ] +crbug.com/591099 virtual/android/fullscreen/full-screen-detached-document.html [ Crash Pass ] crbug.com/591099 virtual/android/fullscreen/full-screen-element-stack.html [ Failure ] crbug.com/591099 virtual/android/fullscreen/full-screen-frameset.html [ Failure ] crbug.com/591099 virtual/android/fullscreen/full-screen-iframe-allowed-nested.html [ Timeout ] crbug.com/591099 virtual/android/fullscreen/full-screen-iframe-allowed.html [ Crash Failure ] crbug.com/591099 virtual/android/fullscreen/full-screen-iframe-legacy.html [ Failure ] crbug.com/591099 virtual/android/fullscreen/full-screen-iframe-not-allowed.html [ Failure ] -crbug.com/591099 virtual/android/fullscreen/full-screen-iframe-without-allow-attribute-allowed-from-parent.html [ Failure ] +crbug.com/591099 virtual/android/fullscreen/full-screen-iframe-ua-style.html [ Crash Pass ] +crbug.com/591099 virtual/android/fullscreen/full-screen-iframe-without-allow-attribute-allowed-from-parent.html [ Crash Failure ] +crbug.com/591099 virtual/android/fullscreen/full-screen-keyboard-enabled.html [ Crash Pass ] +crbug.com/591099 virtual/android/fullscreen/full-screen-not-enabled-when-unsupported.html [ Crash Pass ] crbug.com/591099 virtual/android/fullscreen/full-screen-placeholder.html [ Failure ] -crbug.com/591099 virtual/android/fullscreen/full-screen-request-removed.html [ Failure ] +crbug.com/591099 virtual/android/fullscreen/full-screen-remove-ancestor-after.html [ Crash Pass ] +crbug.com/591099 virtual/android/fullscreen/full-screen-remove-ancestor.html [ Crash Pass ] +crbug.com/591099 virtual/android/fullscreen/full-screen-render-inline.html [ Crash Pass ] +crbug.com/591099 virtual/android/fullscreen/full-screen-request-removed.html [ Crash Failure ] +crbug.com/591099 virtual/android/fullscreen/full-screen-request.html [ Crash Pass ] +crbug.com/591099 virtual/android/fullscreen/full-screen-restrictions.html [ Crash Pass ] crbug.com/591099 virtual/android/fullscreen/full-screen-table-section.html [ Failure ] crbug.com/591099 virtual/android/fullscreen/full-screen-with-css-reference-filter.html [ Failure ] crbug.com/591099 virtual/android/fullscreen/full-screen-with-flex-item.html [ Crash Failure ] +crbug.com/591099 virtual/android/fullscreen/full-screen-zIndex-after.html [ Crash Pass ] crbug.com/591099 virtual/android/fullscreen/model/fully-exit-fullscreen-nested-iframe.html [ Crash Pass ] +crbug.com/591099 virtual/android/fullscreen/model/fully-exit-fullscreen-single.html [ Crash Pass ] +crbug.com/591099 virtual/android/fullscreen/orthogonal-writing-mode-full-screen-reattach-crash.html [ Crash Pass ] crbug.com/591099 virtual/android/fullscreen/video-controls-override.html [ Failure ] crbug.com/591099 virtual/android/fullscreen/video-controls-timeline.html [ Failure ] crbug.com/591099 virtual/android/fullscreen/video-fail-to-enter-full-screen.html [ Failure ] @@ -20382,7 +20433,9 @@ crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/2d.text.draw.fill.maxWidth.veryLarge.html [ Crash Pass ] crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/2d.text.draw.fill.maxWidth.verySmall.html [ Crash Pass ] crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/OffscreenCanvas-constructor-in-worker.html [ Failure ] -crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/OffscreenCanvas-invalid-args-in-worker.html [ Failure ] +crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/OffscreenCanvas-getContext-in-worker.html [ Crash Pass ] +crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/OffscreenCanvas-invalid-args-in-worker.html [ Crash Failure ] +crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/OffscreenCanvas-resize.html [ Crash Pass ] crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/OffscreenCanvas-transferable-exceptions.html [ Failure ] crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/OffscreenCanvas-transferable.html [ Failure ] crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/access-zero-sized-canvas.html [ Crash Pass ] @@ -20398,16 +20451,25 @@ crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-ImageData-workers.html [ Failure ] crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-after-destroy-iframe.html [ Crash Pass ] crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-alphaImageData-behavior.html [ Crash Pass ] +crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-arc-connecting-line.html [ Crash Pass ] crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-arc-zero-lineto.html [ Crash Pass ] crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-bezier-same-endpoint.html [ Crash Pass ] -crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-blending-image-over-image.html [ Failure ] +crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-blend-solid.html [ Crash Pass ] +crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-blending-fill-style.html [ Crash Pass ] +crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-blending-image-over-color.html [ Crash Pass ] +crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-blending-image-over-image.html [ Crash Failure ] +crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-blending-pattern-over-image.html [ Crash Pass ] crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-blending-text.html [ Failure ] +crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-blending-transforms.html [ Crash Pass ] crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-closePath-single-point.html [ Crash Pass ] crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-composite-alpha.html [ Crash Failure ] -crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-composite-canvas.html [ Failure ] +crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-composite-canvas.html [ Crash Failure ] +crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-composite-fill-repaint.html [ Crash Pass ] crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-composite-image.html [ Failure ] crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-composite-stroke-alpha.html [ Crash Failure ] crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-composite-text-alpha.html [ Crash Failure ] +crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-composite-video-shadow.html [ Crash Pass ] +crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-context-attributes-default-value.html [ Crash Pass ] crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-createImageBitmap-blob-in-workers.html [ Failure ] crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-createImageBitmap-createPattern.html [ Failure ] crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-createImageBitmap-data-in-workers.html [ Failure ] @@ -20419,8 +20481,9 @@ crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-createImageBitmap-invalid-args.html [ Failure ] crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-createImageBitmap-invalid-blob-in-workers.html [ Failure ] crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-createImageBitmap-recursive.html [ Failure ] -crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-createImageBitmap-svg-no-intrinsic-size.html [ Failure ] +crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-createImageBitmap-svg-no-intrinsic-size.html [ Crash Failure ] crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-createImageBitmap-svg.html [ Failure ] +crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-createImageBitmap-webgl.html [ Crash Pass ] crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-createPattern-fillRect-shadow.html [ Crash Pass ] crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-currentColor.html [ Crash Pass ] crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-direction.html [ Crash Pass ] @@ -20429,21 +20492,30 @@ crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-drawImage-animated.html [ Crash Pass ] crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-drawImage-live-video.html [ Crash Pass ] crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-drawImage-shadow.html [ Crash Pass ] +crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-drawImage-svg.html [ Crash Pass ] crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-ellipse-360-winding.html [ Crash Pass ] +crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-ellipse-circumference.html [ Crash Pass ] crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-ellipse-connecting-line.html [ Failure Pass ] crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-ellipse-zero-lineto.html [ Crash Pass ] crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-ellipse.html [ Crash Pass ] crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-empty-image-pattern.html [ Crash Pass ] +crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-fill-zeroSizeGradient.html [ Crash Pass ] crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-fillPath-alpha-shadow.html [ Crash Pass ] crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-fillPath-gradient-shadow.html [ Crash Failure ] crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-fillPath-pattern-shadow.html [ Crash Pass ] crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-fillPath-shadow.html [ Crash Pass ] crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-fillRect-gradient-shadow.html [ Crash Pass ] crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-fillRect-shadow.html [ Crash Pass ] +crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-fillRect-zeroSizeGradient.html [ Crash Pass ] +crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-fillRect.html [ Crash Pass ] +crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-fillStyle-strokeStyle-stringification.html [ Crash Pass ] crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-filter-fill-liveness.html [ Failure ] -crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-filter-fill-paint-color.html [ Failure ] +crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-filter-fill-paint-color.html [ Crash Failure ] crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-filter-fill-paint-gradient.html [ Failure ] -crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-filter-fill-paint-pattern.html [ Failure ] +crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-filter-fill-paint-pattern.html [ Crash Failure ] +crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-filter-liveness.html [ Crash Pass ] +crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-filter-removed.html [ Crash Pass ] +crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-filter-shadow.html [ Crash Pass ] crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-filter-stroke-liveness.html [ Failure ] crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-filter-stroke-paint-color.html [ Failure ] crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-filter-stroke-paint-gradient.html [ Failure ] @@ -20451,12 +20523,15 @@ crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-filter-svg-bbox.html [ Failure ] crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-filter-svg-inline.html [ Failure ] crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-filter-svg-liveness.html [ Failure ] -crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-filter-svg-off-screen.html [ Failure ] +crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-filter-svg-off-screen.html [ Crash Failure ] +crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-filter-undefined.html [ Crash Pass ] +crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-filter-units-off-screen.html [ Crash Pass ] crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-filter-width-height-hidpi-scale.html [ Failure ] crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-filter-width-height-hidpi.html [ Failure ] crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-filter-width-height-scale.html [ Failure ] crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-filter-width-height.html [ Failure ] crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-font-cache.html [ Crash Pass ] +crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-getImageData.html [ Crash Pass ] crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-hides-fallback.html [ Failure ] crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-hit-regions-accessibility-test.html [ Crash Pass ] crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-hit-regions-basic-test.html [ Crash Pass ] @@ -20482,14 +20557,16 @@ crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-isPointInStroke-with-path.html [ Crash Pass ] crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-isPointInStroke.html [ Crash Pass ] crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-large-dimensions.html [ Crash Pass ] +crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-large-pattern.html [ Crash Pass ] crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-lineDash-input-sequence.html [ Crash Pass ] crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-lineDash-invalid.html [ Crash Pass ] crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-lineDash.html [ Crash Pass ] crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-lineWidth-intact-after-strokeRect.html [ Crash Pass ] crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-lost-gpu-context.html [ Failure ] crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-measure-bidi-text.html [ Failure Pass ] -crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-negative-size.html [ Failure ] +crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-negative-size.html [ Crash Failure ] crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-normalize-string.html [ Failure ] +crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-overloads-strokeText.html [ Crash Pass ] crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-path-context-clip.html [ Crash Pass ] crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-path-context-fill.html [ Crash Pass ] crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-path-context-stroke.html [ Crash Pass ] @@ -20500,6 +20577,7 @@ crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-quadratic-same-endpoint.html [ Crash Pass ] crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-render-layer.html [ Failure Pass ] crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-resetTransform.html [ Crash Pass ] +crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-resize-after-paint-without-layout.html [ Crash Pass ] crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-resize-after-paint.html [ Crash Pass ] crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-scale-drawImage-shadow.html [ Crash Pass ] crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-scale-fillPath-shadow.html [ Crash Pass ] @@ -20518,67 +20596,98 @@ crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-strokeRect-gradient-shadow.html [ Crash Pass ] crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-text-baseline-tiny-fonts.html [ Failure Pass ] crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-text-space-characters.html [ Crash Pass ] +crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-textMetrics-all.html [ Crash Pass ] crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-textMetrics-width.html [ Failure ] +crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-toDataURL-webp.html [ Crash Pass ] crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-transforms-during-path.html [ Failure ] crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-transforms-fillRect-shadow.html [ Crash Pass ] +crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas_arc_largeangles.html [ Crash Pass ] +crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/color-space/display_linear-rgb.html [ Crash Pass ] crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/currentTransform-null.html [ Failure ] crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/draw-focus-if-needed-invisible-crash.html [ Crash Pass ] crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/draw-focus-if-needed-on-event.html [ Crash Pass ] crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/draw-focus-if-needed-with-path2d.html [ Crash Pass ] crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/draw-focus-if-needed.html [ Crash Pass ] +crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/drawImage-with-bad-canvas.html [ Crash Pass ] +crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/drawImage-with-globalAlpha.html [ Crash Pass ] crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/drawImage-with-negative-source-destination.html [ Crash Pass ] crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/fallback-content.html [ Crash Pass ] crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/feimage-with-foreignobject-taint-canvas-2.html [ Crash Pass ] crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/feimage-with-foreignobject-taint-canvas.html [ Crash Pass ] crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/fill-stroke-clip-reset-path.html [ Failure ] crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/fillText-shadow.html [ Crash Pass ] +crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/fillrect-gradient-zero-stops.html [ Crash Pass ] crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/fillrect_gradient.html [ Failure ] crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/font-no-zoom.html [ Crash Pass ] crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/gradient-with-clip.html [ Crash Pass ] crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/image-object-in-canvas.html [ Failure ] crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/image-with-foreignobject-taint-canvas-2.html [ Crash Pass ] crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/image-with-foreignobject-taint-canvas.html [ Crash Pass ] +crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/imagebitmap/transferFromImageBitmap-alpha.html [ Crash Pass ] +crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/imagebitmap/transferFromImageBitmap-no-alpha.html [ Crash Pass ] +crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/imagebitmap/transferFromImageBitmap.html [ Crash Pass ] crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/painting-on-bad-canvas.html [ Crash Pass ] crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/pattern-with-transform.html [ Crash Pass ] -crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/quadraticCurveTo.xml [ Failure ] +crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/pixelated-resize.html [ Crash Pass ] +crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/pixelated.html [ Crash Pass ] +crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/quadraticCurveTo.xml [ Crash Failure ] crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/resize-while-save-active.html [ Crash Pass ] crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/set-empty-font-crash.html [ Crash Pass ] crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/setWidthResetAfterForcedRender.html [ Failure ] crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/shadow-huge-blur.html [ Crash Pass ] crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/shadow-offset-1.html [ Failure ] +crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/synchronous-create-pattern.html [ Crash Pass ] crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/toDataURL-alpha.html [ Failure ] crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/toDataURL-noData.html [ Crash Pass ] crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/toDataURL-supportedTypes.html [ Failure ] crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/transformed-canvas-reset.html [ Crash Pass ] crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/unclosed-canvas-1.html [ Failure ] -crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/unclosed-canvas-3.html [ Failure ] +crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/unclosed-canvas-3.html [ Crash Failure ] crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/unclosed-canvas-4.html [ Failure ] crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/webgl/canvas-getContext-crash.html [ Failure ] crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/webgl/canvas-resize-crash.html [ Failure ] -crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/webgl/compressed-tex-image.html [ Failure ] +crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/webgl/compressed-tex-image.html [ Crash Failure ] +crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/webgl/context-destroyed-crash.html [ Crash Pass ] crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/webgl/context-gc-custom-properties.html [ Failure ] +crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/webgl/draw-webgl-to-canvas-2d.html [ Crash Pass ] +crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/webgl/offscreenCanvas-APIs-NOT-alter-webgl-states.html [ Crash Pass ] +crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/webgl/pixelated.html [ Crash Pass ] crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/webgl/renderer-and-vendor-strings.html [ Failure ] -crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/webgl/shader-deleted-by-accessor.html [ Failure ] -crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/webgl/tex-sub-image-cube-maps.html [ Failure ] +crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/webgl/shader-deleted-by-accessor.html [ Crash Failure ] +crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/webgl/tex-sub-image-cube-maps.html [ Crash Failure ] crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/webgl/texImage-imageBitmap-from-canvas-resize.html [ Crash Pass ] +crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/webgl/texImage-imageBitmap-from-image-resize.html [ Crash Pass ] +crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/webgl/texImage-imageBitmap-from-image.html [ Crash Pass ] +crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/webgl/texImage-imageBitmap-from-imageBitmap-from-blob.html [ Crash Pass ] +crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/webgl/texImage-imageBitmap-from-imageBitmap-from-canvas.html [ Crash Pass ] +crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/webgl/texImage-imageBitmap-from-imageBitmap-from-image.html [ Crash Pass ] +crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/webgl/texImage-imageBitmap-from-video-resize.html [ Crash Pass ] +crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/webgl/texImage-imageBitmap-structured-clone.html [ Crash Pass ] crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/webgl/texture-color-profile.html [ Failure ] -crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/webgl/webgl-texture-binding-preserved.html [ Failure ] +crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/webgl/webgl-shadow-no-alpha.html [ Crash Pass ] +crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/webgl/webgl-texture-binding-preserved.html [ Crash Failure ] crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/webgl/webgl-viewport-parameters-preserved.html [ Failure ] +crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/yuv-video-on-accelerated-canvas.html [ Crash Pass ] crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/zero-size-fill-rect.html [ Crash Pass ] crbug.com/591099 virtual/enable_wasm/external/wpt/wasm/wasm_local_iframe_test.html [ Crash Pass Timeout ] +crbug.com/591099 virtual/enable_wasm/external/wpt/wasm/wasm_serialization_tests.html [ Crash Pass ] +crbug.com/591099 virtual/enable_wasm/external/wpt/wasm/wasm_service_worker_test.html [ Crash Pass ] crbug.com/591099 virtual/exotic-color-space/images/12-55.html [ Failure ] -crbug.com/591099 virtual/exotic-color-space/images/182.html [ Failure ] -crbug.com/591099 virtual/exotic-color-space/images/2-comp.html [ Failure ] +crbug.com/591099 virtual/exotic-color-space/images/182.html [ Crash Failure ] +crbug.com/591099 virtual/exotic-color-space/images/2-comp.html [ Crash Failure ] crbug.com/591099 virtual/exotic-color-space/images/2-dht.html [ Failure ] crbug.com/591099 virtual/exotic-color-space/images/23-55.html [ Failure ] crbug.com/591099 virtual/exotic-color-space/images/55.html [ Crash Failure ] crbug.com/591099 virtual/exotic-color-space/images/alt-text-wrapping.html [ Crash Failure ] crbug.com/591099 virtual/exotic-color-space/images/animated-background-image-crash.html [ Failure ] -crbug.com/591099 virtual/exotic-color-space/images/color-jpeg-with-color-profile.html [ Failure ] +crbug.com/591099 virtual/exotic-color-space/images/animated-gif-with-offsets.html [ Crash Pass ] +crbug.com/591099 virtual/exotic-color-space/images/animated-png.html [ Crash Failure ] +crbug.com/591099 virtual/exotic-color-space/images/color-jpeg-with-color-profile.html [ Crash Failure ] +crbug.com/591099 virtual/exotic-color-space/images/color-profile-animate-rotate.html [ Crash Pass ] crbug.com/591099 virtual/exotic-color-space/images/color-profile-background-clip-text.html [ Failure ] crbug.com/591099 virtual/exotic-color-space/images/color-profile-background-image-cover.html [ Failure Pass ] crbug.com/591099 virtual/exotic-color-space/images/color-profile-background-image-cross-fade-png.html [ Failure Pass ] -crbug.com/591099 virtual/exotic-color-space/images/color-profile-background-image-cross-fade.html [ Failure Pass ] +crbug.com/591099 virtual/exotic-color-space/images/color-profile-background-image-cross-fade.html [ Crash Failure Pass ] crbug.com/591099 virtual/exotic-color-space/images/color-profile-background-image-repeat.html [ Failure Pass ] crbug.com/591099 virtual/exotic-color-space/images/color-profile-background-image-space.html [ Failure Pass ] crbug.com/591099 virtual/exotic-color-space/images/color-profile-border-image-source.html [ Failure ] @@ -20588,36 +20697,44 @@ crbug.com/591099 virtual/exotic-color-space/images/color-profile-group.html [ Failure ] crbug.com/591099 virtual/exotic-color-space/images/color-profile-iframe.html [ Failure ] crbug.com/591099 virtual/exotic-color-space/images/color-profile-image-canvas-pattern.html [ Failure Pass ] -crbug.com/591099 virtual/exotic-color-space/images/color-profile-image-canvas.html [ Failure Pass ] +crbug.com/591099 virtual/exotic-color-space/images/color-profile-image-canvas.html [ Crash Failure Pass ] crbug.com/591099 virtual/exotic-color-space/images/color-profile-image-filter-all.html [ Failure ] crbug.com/591099 virtual/exotic-color-space/images/color-profile-image-object-fit.html [ Failure ] crbug.com/591099 virtual/exotic-color-space/images/color-profile-image-profile-match.html [ Failure ] -crbug.com/591099 virtual/exotic-color-space/images/color-profile-image-pseudo-content.html [ Failure ] +crbug.com/591099 virtual/exotic-color-space/images/color-profile-image-pseudo-content.html [ Crash Failure ] crbug.com/591099 virtual/exotic-color-space/images/color-profile-image-shape.html [ Failure ] +crbug.com/591099 virtual/exotic-color-space/images/color-profile-image-svg-resource-url.html [ Crash Pass ] crbug.com/591099 virtual/exotic-color-space/images/color-profile-image.html [ Failure ] crbug.com/591099 virtual/exotic-color-space/images/color-profile-layer-filter.html [ Failure ] crbug.com/591099 virtual/exotic-color-space/images/color-profile-layer.html [ Failure ] -crbug.com/591099 virtual/exotic-color-space/images/color-profile-mask-image-svg.html [ Failure ] +crbug.com/591099 virtual/exotic-color-space/images/color-profile-mask-image-svg.html [ Crash Failure ] +crbug.com/591099 virtual/exotic-color-space/images/color-profile-munsell-adobe-to-srgb.html [ Crash Pass ] +crbug.com/591099 virtual/exotic-color-space/images/color-profile-munsell-srgb-to-srgb.html [ Crash Pass ] +crbug.com/591099 virtual/exotic-color-space/images/color-profile-object.html [ Crash Pass ] crbug.com/591099 virtual/exotic-color-space/images/color-profile-svg-foreign-object.html [ Failure ] crbug.com/591099 virtual/exotic-color-space/images/content-url-image-with-alt-text-dynamic-2.html [ Crash Pass ] crbug.com/591099 virtual/exotic-color-space/images/cross-fade-background-size.html [ Failure ] crbug.com/591099 virtual/exotic-color-space/images/cross-fade-blending.html [ Failure ] +crbug.com/591099 virtual/exotic-color-space/images/cross-fade-broken-image.html [ Crash Pass ] crbug.com/591099 virtual/exotic-color-space/images/cross-fade-invalidation.html [ Failure ] crbug.com/591099 virtual/exotic-color-space/images/cross-fade-overflow-position.html [ Failure ] crbug.com/591099 virtual/exotic-color-space/images/cross-fade-simple.html [ Failure ] -crbug.com/591099 virtual/exotic-color-space/images/cross-fade-sizing.html [ Failure ] +crbug.com/591099 virtual/exotic-color-space/images/cross-fade-sizing.html [ Crash Failure ] +crbug.com/591099 virtual/exotic-color-space/images/cross-fade-svg-fragments.html [ Crash Pass ] crbug.com/591099 virtual/exotic-color-space/images/cross-fade-svg-size-diff.html [ Failure ] crbug.com/591099 virtual/exotic-color-space/images/cross-fade-svg-size.html [ Failure ] -crbug.com/591099 virtual/exotic-color-space/images/cross-fade-tiled.html [ Failure ] +crbug.com/591099 virtual/exotic-color-space/images/cross-fade-tiled.html [ Crash Failure ] crbug.com/591099 virtual/exotic-color-space/images/destroyed-image-load-event.html [ Crash Failure ] +crbug.com/591099 virtual/exotic-color-space/images/drag-image-descendant-painting-sibling.html [ Crash Pass ] crbug.com/591099 virtual/exotic-color-space/images/drag-svg-image.html [ Failure ] -crbug.com/591099 virtual/exotic-color-space/images/embed-does-not-propagate-dimensions-to-object-ancestor.html [ Failure ] +crbug.com/591099 virtual/exotic-color-space/images/embed-does-not-propagate-dimensions-to-object-ancestor.html [ Crash Failure ] +crbug.com/591099 virtual/exotic-color-space/images/embed-image.html [ Crash Pass ] crbug.com/591099 virtual/exotic-color-space/images/exif-orientation-css.html [ Crash Failure ] crbug.com/591099 virtual/exotic-color-space/images/exif-orientation-height-image-document.html [ Failure ] crbug.com/591099 virtual/exotic-color-space/images/exif-orientation-image-document.html [ Crash Failure ] crbug.com/591099 virtual/exotic-color-space/images/exif-orientation.html [ Crash Failure ] crbug.com/591099 virtual/exotic-color-space/images/extra-image-in-image-document.html [ Failure ] -crbug.com/591099 virtual/exotic-color-space/images/favicon-as-image.html [ Failure ] +crbug.com/591099 virtual/exotic-color-space/images/favicon-as-image.html [ Crash Failure ] crbug.com/591099 virtual/exotic-color-space/images/gif-loop-count.html [ Failure ] crbug.com/591099 virtual/exotic-color-space/images/gif-short-app-extension-string.html [ Failure ] crbug.com/591099 virtual/exotic-color-space/images/gray-scale-jpeg-with-color-profile.html [ Failure ] @@ -20633,16 +20750,16 @@ crbug.com/591099 virtual/exotic-color-space/images/image-hover-display-alt.html [ Crash Failure ] crbug.com/591099 virtual/exotic-color-space/images/image-in-map.html [ Crash Failure ] crbug.com/591099 virtual/exotic-color-space/images/image-invalid-data.html [ Crash Failure ] -crbug.com/591099 virtual/exotic-color-space/images/image-load-event-in-fragment.html [ Failure ] +crbug.com/591099 virtual/exotic-color-space/images/image-load-event-in-fragment.html [ Crash Failure ] crbug.com/591099 virtual/exotic-color-space/images/image-map-anchor-children.html [ Failure ] -crbug.com/591099 virtual/exotic-color-space/images/image-map-multiple-xhtml.xhtml [ Failure ] +crbug.com/591099 virtual/exotic-color-space/images/image-map-multiple-xhtml.xhtml [ Crash Failure ] crbug.com/591099 virtual/exotic-color-space/images/image-map-multiple.html [ Failure ] crbug.com/591099 virtual/exotic-color-space/images/image-map-zoom-alt-content.html [ Crash Failure ] crbug.com/591099 virtual/exotic-color-space/images/image-map-zoom.html [ Failure ] crbug.com/591099 virtual/exotic-color-space/images/image-page-injected-script-crash.html [ Crash Failure ] crbug.com/591099 virtual/exotic-color-space/images/image-use-counters.html [ Crash Pass ] crbug.com/591099 virtual/exotic-color-space/images/image-zoom-to-25.html [ Failure ] -crbug.com/591099 virtual/exotic-color-space/images/image-zoom-to-500.html [ Failure ] +crbug.com/591099 virtual/exotic-color-space/images/image-zoom-to-500.html [ Crash Failure ] crbug.com/591099 virtual/exotic-color-space/images/imagemap-circle-focus-ring.html [ Failure ] crbug.com/591099 virtual/exotic-color-space/images/imagemap-focus-ring-in-positioned-container.html [ Failure ] crbug.com/591099 virtual/exotic-color-space/images/imagemap-focus-ring-outline-color-explicitly-inherited-from-map.html [ Failure ] @@ -20651,28 +20768,38 @@ crbug.com/591099 virtual/exotic-color-space/images/imagemap-focus-ring-with-paint-root-offset.html [ Failure ] crbug.com/591099 virtual/exotic-color-space/images/imagemap-focus-ring-with-scale-transform.html [ Failure ] crbug.com/591099 virtual/exotic-color-space/images/imagemap-focus-ring-zero-outline-width.html [ Failure ] +crbug.com/591099 virtual/exotic-color-space/images/imagemap-focus-ring-zoom-style-default-shape.html [ Crash Pass ] crbug.com/591099 virtual/exotic-color-space/images/imagemap-focus-ring-zoom.html [ Failure ] crbug.com/591099 virtual/exotic-color-space/images/imagemap-focus-ring.html [ Failure ] crbug.com/591099 virtual/exotic-color-space/images/imagemap-overflowing-circle-focus-ring.html [ Failure ] -crbug.com/591099 virtual/exotic-color-space/images/imagemap-overflowing-polygon-focus-ring.html [ Failure ] +crbug.com/591099 virtual/exotic-color-space/images/imagemap-overflowing-polygon-focus-ring.html [ Crash Failure ] crbug.com/591099 virtual/exotic-color-space/images/imagemap-polygon-focus-ring.html [ Failure ] crbug.com/591099 virtual/exotic-color-space/images/imagemap-scroll.html [ Crash Failure ] crbug.com/591099 virtual/exotic-color-space/images/img-dimensions-styled.html [ Crash Pass ] crbug.com/591099 virtual/exotic-color-space/images/invalid-image-url-crash.html [ Crash Pass ] crbug.com/591099 virtual/exotic-color-space/images/jpeg-yuv-image-decoding.html [ Failure Pass ] crbug.com/591099 virtual/exotic-color-space/images/jpeg-yuv-progressive-canvas.html [ Failure Pass ] -crbug.com/591099 virtual/exotic-color-space/images/jpeg-yuv-progressive-image.html [ Failure Pass ] +crbug.com/591099 virtual/exotic-color-space/images/jpeg-yuv-progressive-image.html [ Crash Failure Pass ] crbug.com/591099 virtual/exotic-color-space/images/link-body-content-imageDimensionChanged-crash.html [ Failure ] crbug.com/591099 virtual/exotic-color-space/images/load-img-with-empty-src.html [ Failure ] -crbug.com/591099 virtual/exotic-color-space/images/motion-jpeg-single-frame.html [ Failure ] +crbug.com/591099 virtual/exotic-color-space/images/mask-box-image-crash.html [ Crash Pass ] +crbug.com/591099 virtual/exotic-color-space/images/motion-jpeg-single-frame.html [ Crash Failure ] crbug.com/591099 virtual/exotic-color-space/images/move-image-to-new-document.html [ Crash Pass ] crbug.com/591099 virtual/exotic-color-space/images/multiple-inflight-error-event-crash.html [ Crash Pass ] +crbug.com/591099 virtual/exotic-color-space/images/natural-dimensions-correct-after-image-reset.html [ Crash Pass ] +crbug.com/591099 virtual/exotic-color-space/images/onload-event-when-reloading-image-after-successful-image-load.html [ Crash Pass ] +crbug.com/591099 virtual/exotic-color-space/images/optimize-contrast-image.html [ Crash Pass ] +crbug.com/591099 virtual/exotic-color-space/images/paletted-png-with-color-profile.html [ Crash Pass ] crbug.com/591099 virtual/exotic-color-space/images/pdf-as-background.html [ Failure ] crbug.com/591099 virtual/exotic-color-space/images/pdf-as-tiled-background.html [ Failure ] crbug.com/591099 virtual/exotic-color-space/images/percent-height-image.html [ Failure ] +crbug.com/591099 virtual/exotic-color-space/images/percentage-height-image-with-auto-height-container-computes-as-percentage.html [ Crash Pass ] crbug.com/591099 virtual/exotic-color-space/images/pixel-crack-image-background-webkit-transform-scale.html [ Failure ] -crbug.com/591099 virtual/exotic-color-space/images/png-extra-row-crash.html [ Failure ] +crbug.com/591099 virtual/exotic-color-space/images/pixelated-hidpi.html [ Crash Pass ] +crbug.com/591099 virtual/exotic-color-space/images/pixelated-image.html [ Crash Pass ] +crbug.com/591099 virtual/exotic-color-space/images/png-extra-row-crash.html [ Crash Failure ] crbug.com/591099 virtual/exotic-color-space/images/png-suite/test.html [ Crash Failure ] +crbug.com/591099 virtual/exotic-color-space/images/png-with-color-profile.html [ Crash Pass ] crbug.com/591099 virtual/exotic-color-space/images/png_per_row_alpha_decoding.html [ Failure ] crbug.com/591099 virtual/exotic-color-space/images/rendering-broken-0px-images-quirk.html [ Crash Failure ] crbug.com/591099 virtual/exotic-color-space/images/rendering-broken-0px-images.html [ Crash Failure ] @@ -20691,23 +20818,27 @@ crbug.com/591099 virtual/exotic-color-space/images/update-alt-text.html [ Crash Pass ] crbug.com/591099 virtual/exotic-color-space/images/viewport-in-standalone-image-document.html [ Failure ] crbug.com/591099 virtual/exotic-color-space/images/webgl-teximage2d.html [ Crash Pass ] -crbug.com/591099 virtual/exotic-color-space/images/webp-flip.html [ Failure ] +crbug.com/591099 virtual/exotic-color-space/images/webp-flip.html [ Crash Failure ] +crbug.com/591099 virtual/exotic-color-space/images/zoomed-img-height-acid3.html [ Crash Pass ] crbug.com/591099 virtual/exotic-color-space/images/zoomed-img-size.html [ Failure ] crbug.com/591099 virtual/exotic-color-space/images/zoomed-offset-size.html [ Crash Pass ] crbug.com/591099 virtual/gpu-rasterization/images/12-55.html [ Failure ] crbug.com/591099 virtual/gpu-rasterization/images/182.html [ Failure ] -crbug.com/591099 virtual/gpu-rasterization/images/2-comp.html [ Failure ] +crbug.com/591099 virtual/gpu-rasterization/images/2-comp.html [ Crash Failure ] crbug.com/591099 virtual/gpu-rasterization/images/2-dht.html [ Failure ] crbug.com/591099 virtual/gpu-rasterization/images/23-55.html [ Failure ] crbug.com/591099 virtual/gpu-rasterization/images/55.html [ Crash Failure ] crbug.com/591099 virtual/gpu-rasterization/images/alt-text-wrapping.html [ Crash Failure ] crbug.com/591099 virtual/gpu-rasterization/images/animated-background-image-crash.html [ Failure ] +crbug.com/591099 virtual/gpu-rasterization/images/animated-gif-fast-crash.html [ Crash Pass ] +crbug.com/591099 virtual/gpu-rasterization/images/animated-gif-with-offsets.html [ Crash Pass ] +crbug.com/591099 virtual/gpu-rasterization/images/animated-png.html [ Crash Pass ] crbug.com/591099 virtual/gpu-rasterization/images/color-jpeg-with-color-profile.html [ Failure ] -crbug.com/591099 virtual/gpu-rasterization/images/color-profile-background-image-cover.html [ Failure Pass ] +crbug.com/591099 virtual/gpu-rasterization/images/color-profile-background-image-cover.html [ Crash Failure Pass ] crbug.com/591099 virtual/gpu-rasterization/images/color-profile-background-image-cross-fade-png.html [ Failure Pass ] crbug.com/591099 virtual/gpu-rasterization/images/color-profile-background-image-cross-fade.html [ Crash Failure Pass ] crbug.com/591099 virtual/gpu-rasterization/images/color-profile-background-image-repeat.html [ Failure Pass ] -crbug.com/591099 virtual/gpu-rasterization/images/color-profile-background-image-space.html [ Failure Pass ] +crbug.com/591099 virtual/gpu-rasterization/images/color-profile-background-image-space.html [ Crash Failure Pass ] crbug.com/591099 virtual/gpu-rasterization/images/color-profile-border-image-source.html [ Failure ] crbug.com/591099 virtual/gpu-rasterization/images/color-profile-border-radius.html [ Failure ] crbug.com/591099 virtual/gpu-rasterization/images/color-profile-drag-image.html [ Failure ] @@ -20715,45 +20846,52 @@ crbug.com/591099 virtual/gpu-rasterization/images/color-profile-group.html [ Crash Failure ] crbug.com/591099 virtual/gpu-rasterization/images/color-profile-iframe.html [ Failure ] crbug.com/591099 virtual/gpu-rasterization/images/color-profile-image-canvas-pattern.html [ Failure Pass ] +crbug.com/591099 virtual/gpu-rasterization/images/color-profile-image-canvas-svg.html [ Crash Pass ] crbug.com/591099 virtual/gpu-rasterization/images/color-profile-image-canvas.html [ Failure Pass ] crbug.com/591099 virtual/gpu-rasterization/images/color-profile-image-filter-all.html [ Failure ] crbug.com/591099 virtual/gpu-rasterization/images/color-profile-image-object-fit.html [ Failure ] -crbug.com/591099 virtual/gpu-rasterization/images/color-profile-image-profile-match.html [ Failure ] -crbug.com/591099 virtual/gpu-rasterization/images/color-profile-image-pseudo-content.html [ Failure ] +crbug.com/591099 virtual/gpu-rasterization/images/color-profile-image-profile-match.html [ Crash Failure ] +crbug.com/591099 virtual/gpu-rasterization/images/color-profile-image-pseudo-content.html [ Crash Failure ] crbug.com/591099 virtual/gpu-rasterization/images/color-profile-image-shape.html [ Failure ] +crbug.com/591099 virtual/gpu-rasterization/images/color-profile-image-svg-resource-url.html [ Crash Pass ] crbug.com/591099 virtual/gpu-rasterization/images/color-profile-image.html [ Failure ] crbug.com/591099 virtual/gpu-rasterization/images/color-profile-layer-filter.html [ Failure ] crbug.com/591099 virtual/gpu-rasterization/images/color-profile-layer.html [ Failure Timeout ] crbug.com/591099 virtual/gpu-rasterization/images/color-profile-mask-image-svg.html [ Failure ] crbug.com/591099 virtual/gpu-rasterization/images/color-profile-svg-foreign-object.html [ Failure ] crbug.com/591099 virtual/gpu-rasterization/images/content-url-image-with-alt-text-dynamic-2.html [ Crash Pass ] +crbug.com/591099 virtual/gpu-rasterization/images/content-url-image-with-alt-text.html [ Crash Pass ] +crbug.com/591099 virtual/gpu-rasterization/images/crash-when-fallback-content-deleted.html [ Crash Pass ] crbug.com/591099 virtual/gpu-rasterization/images/cross-fade-background-size.html [ Failure ] crbug.com/591099 virtual/gpu-rasterization/images/cross-fade-blending.html [ Failure ] crbug.com/591099 virtual/gpu-rasterization/images/cross-fade-invalidation.html [ Failure ] crbug.com/591099 virtual/gpu-rasterization/images/cross-fade-overflow-position.html [ Failure ] -crbug.com/591099 virtual/gpu-rasterization/images/cross-fade-simple.html [ Failure ] +crbug.com/591099 virtual/gpu-rasterization/images/cross-fade-simple.html [ Crash Failure ] crbug.com/591099 virtual/gpu-rasterization/images/cross-fade-sizing.html [ Failure ] crbug.com/591099 virtual/gpu-rasterization/images/cross-fade-tiled.html [ Failure ] crbug.com/591099 virtual/gpu-rasterization/images/destroyed-image-load-event.html [ Crash Failure ] -crbug.com/591099 virtual/gpu-rasterization/images/drag-svg-image.html [ Failure ] -crbug.com/591099 virtual/gpu-rasterization/images/embed-does-not-propagate-dimensions-to-object-ancestor.html [ Failure Pass ] +crbug.com/591099 virtual/gpu-rasterization/images/drag-image-2.html [ Crash Pass ] +crbug.com/591099 virtual/gpu-rasterization/images/drag-image-transformed-child.html [ Crash Pass ] +crbug.com/591099 virtual/gpu-rasterization/images/drag-image.html [ Crash Pass ] +crbug.com/591099 virtual/gpu-rasterization/images/drag-svg-image.html [ Crash Failure ] +crbug.com/591099 virtual/gpu-rasterization/images/embed-does-not-propagate-dimensions-to-object-ancestor.html [ Crash Failure Pass ] crbug.com/591099 virtual/gpu-rasterization/images/exif-orientation-css.html [ Crash Failure ] crbug.com/591099 virtual/gpu-rasterization/images/exif-orientation-height-image-document.html [ Failure Pass ] crbug.com/591099 virtual/gpu-rasterization/images/exif-orientation-image-document.html [ Crash Failure ] crbug.com/591099 virtual/gpu-rasterization/images/exif-orientation.html [ Crash Failure ] -crbug.com/591099 virtual/gpu-rasterization/images/extra-image-in-image-document.html [ Failure ] +crbug.com/591099 virtual/gpu-rasterization/images/extra-image-in-image-document.html [ Crash Failure ] crbug.com/591099 virtual/gpu-rasterization/images/favicon-as-image.html [ Failure ] crbug.com/591099 virtual/gpu-rasterization/images/gif-loop-count.html [ Failure ] crbug.com/591099 virtual/gpu-rasterization/images/gif-short-app-extension-string.html [ Failure ] crbug.com/591099 virtual/gpu-rasterization/images/gray-scale-jpeg-with-color-profile.html [ Failure ] -crbug.com/591099 virtual/gpu-rasterization/images/gray-scale-png-with-color-profile.html [ Failure ] +crbug.com/591099 virtual/gpu-rasterization/images/gray-scale-png-with-color-profile.html [ Crash Failure ] crbug.com/591099 virtual/gpu-rasterization/images/icon-0colors.html [ Failure ] crbug.com/591099 virtual/gpu-rasterization/images/icon-decoding.html [ Failure ] crbug.com/591099 virtual/gpu-rasterization/images/image-change-src.html [ Crash Pass ] crbug.com/591099 virtual/gpu-rasterization/images/image-change-without-resize-shouldnt-layout.html [ Crash Pass ] crbug.com/591099 virtual/gpu-rasterization/images/image-click-scale-restore-zoomed-image.html [ Failure ] crbug.com/591099 virtual/gpu-rasterization/images/image-css3-content-data.html [ Failure ] -crbug.com/591099 virtual/gpu-rasterization/images/image-document-write-assert.html [ Failure ] +crbug.com/591099 virtual/gpu-rasterization/images/image-document-write-assert.html [ Crash Failure ] crbug.com/591099 virtual/gpu-rasterization/images/image-empty-data.html [ Crash Failure ] crbug.com/591099 virtual/gpu-rasterization/images/image-hover-display-alt.html [ Crash Failure ] crbug.com/591099 virtual/gpu-rasterization/images/image-in-map.html [ Crash Failure ] @@ -20769,6 +20907,7 @@ crbug.com/591099 virtual/gpu-rasterization/images/image-zoom-to-25.html [ Failure ] crbug.com/591099 virtual/gpu-rasterization/images/image-zoom-to-500.html [ Failure ] crbug.com/591099 virtual/gpu-rasterization/images/imagemap-circle-focus-ring.html [ Failure ] +crbug.com/591099 virtual/gpu-rasterization/images/imagemap-duplicate-outlines-crash.html [ Crash Pass ] crbug.com/591099 virtual/gpu-rasterization/images/imagemap-focus-ring-in-positioned-container.html [ Crash Failure ] crbug.com/591099 virtual/gpu-rasterization/images/imagemap-focus-ring-outline-color-explicitly-inherited-from-map.html [ Failure ] crbug.com/591099 virtual/gpu-rasterization/images/imagemap-focus-ring-outline-color-not-inherited-from-map.html [ Failure ] @@ -20776,26 +20915,32 @@ crbug.com/591099 virtual/gpu-rasterization/images/imagemap-focus-ring-with-paint-root-offset.html [ Crash Failure ] crbug.com/591099 virtual/gpu-rasterization/images/imagemap-focus-ring-with-scale-transform.html [ Crash Failure ] crbug.com/591099 virtual/gpu-rasterization/images/imagemap-focus-ring-zero-outline-width.html [ Failure ] -crbug.com/591099 virtual/gpu-rasterization/images/imagemap-focus-ring-zoom.html [ Failure ] +crbug.com/591099 virtual/gpu-rasterization/images/imagemap-focus-ring-zoom.html [ Crash Failure ] crbug.com/591099 virtual/gpu-rasterization/images/imagemap-focus-ring.html [ Failure ] -crbug.com/591099 virtual/gpu-rasterization/images/imagemap-overflowing-circle-focus-ring.html [ Failure ] +crbug.com/591099 virtual/gpu-rasterization/images/imagemap-overflowing-circle-focus-ring.html [ Crash Failure ] crbug.com/591099 virtual/gpu-rasterization/images/imagemap-overflowing-polygon-focus-ring.html [ Failure ] crbug.com/591099 virtual/gpu-rasterization/images/imagemap-polygon-focus-ring.html [ Failure ] crbug.com/591099 virtual/gpu-rasterization/images/imagemap-scroll.html [ Crash Failure ] crbug.com/591099 virtual/gpu-rasterization/images/img-dimensions-styled.html [ Crash Pass ] crbug.com/591099 virtual/gpu-rasterization/images/invalid-image-url-crash.html [ Crash Pass ] +crbug.com/591099 virtual/gpu-rasterization/images/jpeg-with-color-profile.html [ Crash Pass ] crbug.com/591099 virtual/gpu-rasterization/images/jpeg-yuv-image-decoding.html [ Failure Pass ] crbug.com/591099 virtual/gpu-rasterization/images/jpeg-yuv-progressive-canvas.html [ Failure Pass ] -crbug.com/591099 virtual/gpu-rasterization/images/jpeg-yuv-progressive-image.html [ Failure Pass ] +crbug.com/591099 virtual/gpu-rasterization/images/jpeg-yuv-progressive-image.html [ Crash Failure Pass ] crbug.com/591099 virtual/gpu-rasterization/images/link-body-content-imageDimensionChanged-crash.html [ Failure ] crbug.com/591099 virtual/gpu-rasterization/images/load-img-with-empty-src.html [ Failure ] -crbug.com/591099 virtual/gpu-rasterization/images/motion-jpeg-single-frame.html [ Failure ] +crbug.com/591099 virtual/gpu-rasterization/images/motion-jpeg-single-frame.html [ Crash Failure ] crbug.com/591099 virtual/gpu-rasterization/images/move-image-to-new-document.html [ Crash Pass ] crbug.com/591099 virtual/gpu-rasterization/images/multiple-inflight-error-event-crash.html [ Crash Pass ] +crbug.com/591099 virtual/gpu-rasterization/images/onload-event-when-reloading-image-after-interrupted-broken-image-load.html [ Crash Pass ] +crbug.com/591099 virtual/gpu-rasterization/images/optimize-contrast-canvas.html [ Crash Pass ] +crbug.com/591099 virtual/gpu-rasterization/images/paletted-png-with-color-profile.html [ Crash Pass ] crbug.com/591099 virtual/gpu-rasterization/images/pdf-as-background.html [ Failure ] -crbug.com/591099 virtual/gpu-rasterization/images/pdf-as-tiled-background.html [ Failure ] -crbug.com/591099 virtual/gpu-rasterization/images/percent-height-image.html [ Failure ] +crbug.com/591099 virtual/gpu-rasterization/images/pdf-as-tiled-background.html [ Crash Failure ] +crbug.com/591099 virtual/gpu-rasterization/images/percent-height-image.html [ Crash Failure ] crbug.com/591099 virtual/gpu-rasterization/images/pixel-crack-image-background-webkit-transform-scale.html [ Crash Failure Timeout ] +crbug.com/591099 virtual/gpu-rasterization/images/pixelated-canvas.html [ Crash Pass ] +crbug.com/591099 virtual/gpu-rasterization/images/pixelated-svg-image.html [ Crash Pass ] crbug.com/591099 virtual/gpu-rasterization/images/png-extra-row-crash.html [ Failure ] crbug.com/591099 virtual/gpu-rasterization/images/png-suite/test.html [ Crash Failure ] crbug.com/591099 virtual/gpu-rasterization/images/png_per_row_alpha_decoding.html [ Failure ] @@ -20807,17 +20952,21 @@ crbug.com/591099 virtual/gpu-rasterization/images/rendering-broken-block-flow-images.html [ Crash Failure ] crbug.com/591099 virtual/gpu-rasterization/images/rendering-broken-images-empty-alt.html [ Crash Failure ] crbug.com/591099 virtual/gpu-rasterization/images/rendering-broken-images.html [ Crash Failure ] +crbug.com/591099 virtual/gpu-rasterization/images/rgb-jpeg-endian-pixels.html [ Crash Pass ] crbug.com/591099 virtual/gpu-rasterization/images/script-counter-imageDimensionChanged-crash.html [ Failure ] +crbug.com/591099 virtual/gpu-rasterization/images/size-failure.html [ Crash Pass ] crbug.com/591099 virtual/gpu-rasterization/images/sprite-no-bleed.html [ Failure ] crbug.com/591099 virtual/gpu-rasterization/images/style-access-during-imageChanged-crash.html [ Crash Failure ] crbug.com/591099 virtual/gpu-rasterization/images/style-access-during-imageChanged-style-freeze.html [ Crash Pass ] -crbug.com/591099 virtual/gpu-rasterization/images/text-content-crash-2.html [ Failure ] +crbug.com/591099 virtual/gpu-rasterization/images/text-content-crash-2.html [ Crash Failure ] crbug.com/591099 virtual/gpu-rasterization/images/text-content-crash.html [ Failure ] crbug.com/591099 virtual/gpu-rasterization/images/update-alt-text.html [ Crash Pass ] -crbug.com/591099 virtual/gpu-rasterization/images/viewport-in-standalone-image-document.html [ Failure ] +crbug.com/591099 virtual/gpu-rasterization/images/viewport-in-standalone-image-document.html [ Crash Failure ] crbug.com/591099 virtual/gpu-rasterization/images/webgl-teximage2d.html [ Crash Pass ] +crbug.com/591099 virtual/gpu-rasterization/images/webp-animation.html [ Crash Pass ] +crbug.com/591099 virtual/gpu-rasterization/images/webp-color-profile-lossless.html [ Crash Pass ] crbug.com/591099 virtual/gpu-rasterization/images/webp-flip.html [ Failure ] -crbug.com/591099 virtual/gpu-rasterization/images/zoomed-img-size.html [ Failure ] +crbug.com/591099 virtual/gpu-rasterization/images/zoomed-img-size.html [ Crash Failure ] crbug.com/591099 virtual/gpu-rasterization/images/zoomed-offset-size.html [ Crash Pass ] crbug.com/591099 virtual/gpu/fast/canvas/2d.composite.globalAlpha.fillPath.html [ Crash Pass ] crbug.com/591099 virtual/gpu/fast/canvas/2d.fillText.gradient.html [ Crash Pass ] @@ -20825,7 +20974,12 @@ crbug.com/591099 virtual/gpu/fast/canvas/2d.text.draw.fill.maxWidth.negative.html [ Crash Pass ] crbug.com/591099 virtual/gpu/fast/canvas/2d.text.draw.fill.maxWidth.veryLarge.html [ Crash Pass ] crbug.com/591099 virtual/gpu/fast/canvas/2d.text.draw.fill.maxWidth.verySmall.html [ Crash Pass ] +crbug.com/591099 virtual/gpu/fast/canvas/CanvasRendering2D-prototype-chain.html [ Crash Pass ] +crbug.com/591099 virtual/gpu/fast/canvas/OffscreenCanvas-ImageBitmapSource.html [ Crash Pass ] +crbug.com/591099 virtual/gpu/fast/canvas/OffscreenCanvas-commit-frameless-doc.html [ Crash Pass ] +crbug.com/591099 virtual/gpu/fast/canvas/OffscreenCanvas-commit-retains-backing.html [ Crash Pass ] crbug.com/591099 virtual/gpu/fast/canvas/OffscreenCanvas-constructor-in-worker.html [ Failure ] +crbug.com/591099 virtual/gpu/fast/canvas/OffscreenCanvas-filter-in-worker.html [ Crash Pass ] crbug.com/591099 virtual/gpu/fast/canvas/OffscreenCanvas-invalid-args-in-worker.html [ Failure ] crbug.com/591099 virtual/gpu/fast/canvas/OffscreenCanvas-transferable-exceptions.html [ Failure ] crbug.com/591099 virtual/gpu/fast/canvas/OffscreenCanvas-transferable.html [ Failure ] @@ -20833,6 +20987,8 @@ crbug.com/591099 virtual/gpu/fast/canvas/alpha.html [ Crash Pass ] crbug.com/591099 virtual/gpu/fast/canvas/arc-crash.html [ Crash Pass ] crbug.com/591099 virtual/gpu/fast/canvas/arc360.html [ Crash Pass ] +crbug.com/591099 virtual/gpu/fast/canvas/bidi-multi-run.html [ Crash Pass ] +crbug.com/591099 virtual/gpu/fast/canvas/bug445162.html [ Crash Pass ] crbug.com/591099 virtual/gpu/fast/canvas/bug544329.html [ Crash Pass ] crbug.com/591099 virtual/gpu/fast/canvas/canvas-2d-clip-anti-aliasing.html [ Crash Pass ] crbug.com/591099 virtual/gpu/fast/canvas/canvas-ImageBitmap-close.html [ Failure ] @@ -20842,8 +20998,12 @@ crbug.com/591099 virtual/gpu/fast/canvas/canvas-ImageData-workers.html [ Failure ] crbug.com/591099 virtual/gpu/fast/canvas/canvas-after-destroy-iframe.html [ Crash Pass ] crbug.com/591099 virtual/gpu/fast/canvas/canvas-alphaImageData-behavior.html [ Crash Pass ] +crbug.com/591099 virtual/gpu/fast/canvas/canvas-arc-connecting-line.html [ Crash Pass ] crbug.com/591099 virtual/gpu/fast/canvas/canvas-arc-zero-lineto.html [ Crash Pass ] crbug.com/591099 virtual/gpu/fast/canvas/canvas-bezier-same-endpoint.html [ Crash Pass ] +crbug.com/591099 virtual/gpu/fast/canvas/canvas-blending-color-over-image.html [ Crash Pass ] +crbug.com/591099 virtual/gpu/fast/canvas/canvas-blending-gradient-over-color.html [ Crash Pass ] +crbug.com/591099 virtual/gpu/fast/canvas/canvas-blending-gradient-over-pattern.html [ Crash Pass ] crbug.com/591099 virtual/gpu/fast/canvas/canvas-blending-image-over-image.html [ Failure ] crbug.com/591099 virtual/gpu/fast/canvas/canvas-blending-text.html [ Failure ] crbug.com/591099 virtual/gpu/fast/canvas/canvas-closePath-single-point.html [ Crash Pass ] @@ -20852,6 +21012,8 @@ crbug.com/591099 virtual/gpu/fast/canvas/canvas-composite-image.html [ Failure ] crbug.com/591099 virtual/gpu/fast/canvas/canvas-composite-stroke-alpha.html [ Crash Failure ] crbug.com/591099 virtual/gpu/fast/canvas/canvas-composite-text-alpha.html [ Crash Failure ] +crbug.com/591099 virtual/gpu/fast/canvas/canvas-context-attributes-default-value.html [ Crash Pass ] +crbug.com/591099 virtual/gpu/fast/canvas/canvas-createImageBitmap-animated.html [ Crash Pass ] crbug.com/591099 virtual/gpu/fast/canvas/canvas-createImageBitmap-blob-in-workers.html [ Failure ] crbug.com/591099 virtual/gpu/fast/canvas/canvas-createImageBitmap-createPattern.html [ Failure ] crbug.com/591099 virtual/gpu/fast/canvas/canvas-createImageBitmap-data-in-workers.html [ Failure ] @@ -20859,17 +21021,18 @@ crbug.com/591099 virtual/gpu/fast/canvas/canvas-createImageBitmap-drawImage-video.html [ Failure ] crbug.com/591099 virtual/gpu/fast/canvas/canvas-createImageBitmap-drawImage.html [ Timeout ] crbug.com/591099 virtual/gpu/fast/canvas/canvas-createImageBitmap-from-canvas-toBlob.html [ Failure ] +crbug.com/591099 virtual/gpu/fast/canvas/canvas-createImageBitmap-immutable.html [ Crash Pass ] crbug.com/591099 virtual/gpu/fast/canvas/canvas-createImageBitmap-invalid-args-in-workers.html [ Failure ] crbug.com/591099 virtual/gpu/fast/canvas/canvas-createImageBitmap-invalid-args.html [ Failure ] crbug.com/591099 virtual/gpu/fast/canvas/canvas-createImageBitmap-invalid-blob-in-workers.html [ Failure ] crbug.com/591099 virtual/gpu/fast/canvas/canvas-createImageBitmap-recursive.html [ Failure ] crbug.com/591099 virtual/gpu/fast/canvas/canvas-createImageBitmap-svg-no-intrinsic-size.html [ Failure ] -crbug.com/591099 virtual/gpu/fast/canvas/canvas-createImageBitmap-svg.html [ Failure ] +crbug.com/591099 virtual/gpu/fast/canvas/canvas-createImageBitmap-svg.html [ Crash Failure ] crbug.com/591099 virtual/gpu/fast/canvas/canvas-createPattern-fillRect-shadow.html [ Crash Pass ] crbug.com/591099 virtual/gpu/fast/canvas/canvas-currentColor.html [ Crash Pass ] crbug.com/591099 virtual/gpu/fast/canvas/canvas-direction.html [ Crash Pass ] crbug.com/591099 virtual/gpu/fast/canvas/canvas-draw-canvas-on-canvas-shadow.html [ Crash Pass ] -crbug.com/591099 virtual/gpu/fast/canvas/canvas-drawImage-animated-images.html [ Failure ] +crbug.com/591099 virtual/gpu/fast/canvas/canvas-drawImage-animated-images.html [ Crash Failure ] crbug.com/591099 virtual/gpu/fast/canvas/canvas-drawImage-animated.html [ Crash Pass ] crbug.com/591099 virtual/gpu/fast/canvas/canvas-drawImage-live-video.html [ Crash Pass ] crbug.com/591099 virtual/gpu/fast/canvas/canvas-drawImage-shadow.html [ Crash Pass ] @@ -20891,16 +21054,19 @@ crbug.com/591099 virtual/gpu/fast/canvas/canvas-filter-stroke-liveness.html [ Failure ] crbug.com/591099 virtual/gpu/fast/canvas/canvas-filter-stroke-paint-color.html [ Failure ] crbug.com/591099 virtual/gpu/fast/canvas/canvas-filter-stroke-paint-gradient.html [ Failure ] -crbug.com/591099 virtual/gpu/fast/canvas/canvas-filter-stroke-paint-pattern.html [ Failure ] +crbug.com/591099 virtual/gpu/fast/canvas/canvas-filter-stroke-paint-pattern.html [ Crash Failure ] crbug.com/591099 virtual/gpu/fast/canvas/canvas-filter-svg-bbox.html [ Failure ] crbug.com/591099 virtual/gpu/fast/canvas/canvas-filter-svg-inline.html [ Failure ] crbug.com/591099 virtual/gpu/fast/canvas/canvas-filter-svg-liveness.html [ Failure ] -crbug.com/591099 virtual/gpu/fast/canvas/canvas-filter-svg-off-screen.html [ Failure ] -crbug.com/591099 virtual/gpu/fast/canvas/canvas-filter-width-height-hidpi-scale.html [ Failure ] +crbug.com/591099 virtual/gpu/fast/canvas/canvas-filter-svg-off-screen.html [ Crash Failure ] +crbug.com/591099 virtual/gpu/fast/canvas/canvas-filter-width-height-hidpi-scale.html [ Crash Failure ] crbug.com/591099 virtual/gpu/fast/canvas/canvas-filter-width-height-hidpi.html [ Failure ] crbug.com/591099 virtual/gpu/fast/canvas/canvas-filter-width-height-scale.html [ Failure ] crbug.com/591099 virtual/gpu/fast/canvas/canvas-filter-width-height.html [ Failure ] crbug.com/591099 virtual/gpu/fast/canvas/canvas-font-cache.html [ Crash Pass ] +crbug.com/591099 virtual/gpu/fast/canvas/canvas-getImageData-invalid.html [ Crash Pass ] +crbug.com/591099 virtual/gpu/fast/canvas/canvas-getImageData-negative-source.html [ Crash Pass ] +crbug.com/591099 virtual/gpu/fast/canvas/canvas-gradient-without-path.html [ Crash Pass ] crbug.com/591099 virtual/gpu/fast/canvas/canvas-hides-fallback.html [ Failure ] crbug.com/591099 virtual/gpu/fast/canvas/canvas-hit-regions-accessibility-test.html [ Crash Pass ] crbug.com/591099 virtual/gpu/fast/canvas/canvas-hit-regions-basic-test.html [ Crash Pass ] @@ -20920,6 +21086,7 @@ crbug.com/591099 virtual/gpu/fast/canvas/canvas-hit-regions-transform-test.html [ Crash Pass ] crbug.com/591099 virtual/gpu/fast/canvas/canvas-imageSmoothingEnabled-repaint.html [ Crash Pass ] crbug.com/591099 virtual/gpu/fast/canvas/canvas-imageSmoothingQuality.html [ Crash Failure ] +crbug.com/591099 virtual/gpu/fast/canvas/canvas-incremental-repaint-3.html [ Crash Pass ] crbug.com/591099 virtual/gpu/fast/canvas/canvas-invalid-fillstyle.html [ Crash Pass ] crbug.com/591099 virtual/gpu/fast/canvas/canvas-invalid-strokestyle.html [ Crash Pass ] crbug.com/591099 virtual/gpu/fast/canvas/canvas-invalid-video.html [ Failure ] @@ -20961,11 +21128,18 @@ crbug.com/591099 virtual/gpu/fast/canvas/canvas-strokeRect-alpha-shadow.html [ Crash Pass ] crbug.com/591099 virtual/gpu/fast/canvas/canvas-strokeRect-gradient-shadow.html [ Crash Pass ] crbug.com/591099 virtual/gpu/fast/canvas/canvas-text-baseline-tiny-fonts.html [ Failure Pass ] +crbug.com/591099 virtual/gpu/fast/canvas/canvas-text-ideographic-space.html [ Crash Pass ] crbug.com/591099 virtual/gpu/fast/canvas/canvas-text-space-characters.html [ Crash Pass ] crbug.com/591099 virtual/gpu/fast/canvas/canvas-textMetrics-width.html [ Failure ] +crbug.com/591099 virtual/gpu/fast/canvas/canvas-toBlob-jpeg-medium-quality.html [ Crash Pass ] +crbug.com/591099 virtual/gpu/fast/canvas/canvas-toDataURL-jpeg-maximum-quality.html [ Crash Pass ] +crbug.com/591099 virtual/gpu/fast/canvas/canvas-toDataURL-webp-alpha.html [ Crash Pass ] crbug.com/591099 virtual/gpu/fast/canvas/canvas-transforms-during-path.html [ Failure ] crbug.com/591099 virtual/gpu/fast/canvas/canvas-transforms-fillRect-shadow.html [ Crash Pass ] -crbug.com/591099 virtual/gpu/fast/canvas/currentTransform-null.html [ Failure ] +crbug.com/591099 virtual/gpu/fast/canvas/canvas-with-illegal-args.html [ Crash Pass ] +crbug.com/591099 virtual/gpu/fast/canvas/color-space/display_linear-rgb.html [ Crash Pass ] +crbug.com/591099 virtual/gpu/fast/canvas/currentTransform-null.html [ Crash Failure ] +crbug.com/591099 virtual/gpu/fast/canvas/downsample-quality.html [ Crash Pass ] crbug.com/591099 virtual/gpu/fast/canvas/draw-focus-if-needed-invisible-crash.html [ Crash Pass ] crbug.com/591099 virtual/gpu/fast/canvas/draw-focus-if-needed-on-event.html [ Crash Pass ] crbug.com/591099 virtual/gpu/fast/canvas/draw-focus-if-needed-with-path2d.html [ Crash Pass ] @@ -20978,10 +21152,15 @@ crbug.com/591099 virtual/gpu/fast/canvas/fillText-shadow.html [ Crash Pass ] crbug.com/591099 virtual/gpu/fast/canvas/fillrect_gradient.html [ Failure ] crbug.com/591099 virtual/gpu/fast/canvas/font-no-zoom.html [ Crash Pass ] +crbug.com/591099 virtual/gpu/fast/canvas/font-update.html [ Crash Pass ] +crbug.com/591099 virtual/gpu/fast/canvas/gradient-addColorStop-with-invalid-offset.html [ Crash Pass ] crbug.com/591099 virtual/gpu/fast/canvas/gradient-with-clip.html [ Crash Pass ] crbug.com/591099 virtual/gpu/fast/canvas/image-object-in-canvas.html [ Failure ] +crbug.com/591099 virtual/gpu/fast/canvas/image-pattern-rotate.html [ Crash Pass ] crbug.com/591099 virtual/gpu/fast/canvas/image-with-foreignobject-taint-canvas-2.html [ Crash Pass ] crbug.com/591099 virtual/gpu/fast/canvas/image-with-foreignobject-taint-canvas.html [ Crash Pass ] +crbug.com/591099 virtual/gpu/fast/canvas/invalid-set-font-crash.html [ Crash Pass ] +crbug.com/591099 virtual/gpu/fast/canvas/linearGradient-infinite-values.html [ Crash Pass ] crbug.com/591099 virtual/gpu/fast/canvas/painting-on-bad-canvas.html [ Crash Pass ] crbug.com/591099 virtual/gpu/fast/canvas/pattern-with-transform.html [ Crash Pass ] crbug.com/591099 virtual/gpu/fast/canvas/quadraticCurveTo.xml [ Failure ] @@ -20989,7 +21168,8 @@ crbug.com/591099 virtual/gpu/fast/canvas/set-empty-font-crash.html [ Crash Pass ] crbug.com/591099 virtual/gpu/fast/canvas/setWidthResetAfterForcedRender.html [ Failure ] crbug.com/591099 virtual/gpu/fast/canvas/shadow-huge-blur.html [ Crash Pass ] -crbug.com/591099 virtual/gpu/fast/canvas/shadow-offset-1.html [ Failure ] +crbug.com/591099 virtual/gpu/fast/canvas/shadow-offset-1.html [ Crash Failure ] +crbug.com/591099 virtual/gpu/fast/canvas/text-globalAlpha.html [ Crash Pass ] crbug.com/591099 virtual/gpu/fast/canvas/toDataURL-alpha.html [ Failure ] crbug.com/591099 virtual/gpu/fast/canvas/toDataURL-noData.html [ Crash Pass ] crbug.com/591099 virtual/gpu/fast/canvas/toDataURL-supportedTypes.html [ Failure ] @@ -20997,21 +21177,99 @@ crbug.com/591099 virtual/gpu/fast/canvas/unclosed-canvas-1.html [ Failure ] crbug.com/591099 virtual/gpu/fast/canvas/unclosed-canvas-3.html [ Crash Failure ] crbug.com/591099 virtual/gpu/fast/canvas/unclosed-canvas-4.html [ Failure ] -crbug.com/591099 virtual/gpu/fast/canvas/webgl/canvas-getContext-crash.html [ Failure ] +crbug.com/591099 virtual/gpu/fast/canvas/webgl/canvas-getContext-crash.html [ Crash Failure ] crbug.com/591099 virtual/gpu/fast/canvas/webgl/canvas-resize-crash.html [ Failure ] crbug.com/591099 virtual/gpu/fast/canvas/webgl/compressed-tex-image.html [ Failure ] crbug.com/591099 virtual/gpu/fast/canvas/webgl/context-gc-custom-properties.html [ Failure ] +crbug.com/591099 virtual/gpu/fast/canvas/webgl/draw-webgl-to-canvas-2d.html [ Crash Pass ] +crbug.com/591099 virtual/gpu/fast/canvas/webgl/offscreenCanvas-context-lost.html [ Crash Pass ] +crbug.com/591099 virtual/gpu/fast/canvas/webgl/offscreenCanvas-transferToImageBitmap-invalid-mailbox.html [ Crash Pass ] crbug.com/591099 virtual/gpu/fast/canvas/webgl/renderer-and-vendor-strings.html [ Failure ] crbug.com/591099 virtual/gpu/fast/canvas/webgl/shader-deleted-by-accessor.html [ Failure ] crbug.com/591099 virtual/gpu/fast/canvas/webgl/tex-sub-image-cube-maps.html [ Failure ] crbug.com/591099 virtual/gpu/fast/canvas/webgl/texImage-imageBitmap-from-canvas-resize.html [ Crash Pass ] -crbug.com/591099 virtual/gpu/fast/canvas/webgl/texture-color-profile.html [ Failure ] +crbug.com/591099 virtual/gpu/fast/canvas/webgl/texImage-imageBitmap-from-imageBitmap-from-blob.html [ Crash Pass ] +crbug.com/591099 virtual/gpu/fast/canvas/webgl/texImage-imageBitmap-from-imageBitmap-from-image.html [ Crash Pass ] +crbug.com/591099 virtual/gpu/fast/canvas/webgl/texImage-imageBitmap-from-imageData.html [ Crash Pass ] +crbug.com/591099 virtual/gpu/fast/canvas/webgl/texImage-imageBitmap-from-video-resize.html [ Crash Pass ] +crbug.com/591099 virtual/gpu/fast/canvas/webgl/texImage-imageBitmap-transferable.html [ Crash Pass ] +crbug.com/591099 virtual/gpu/fast/canvas/webgl/texture-color-profile.html [ Crash Failure ] crbug.com/591099 virtual/gpu/fast/canvas/webgl/webgl-texture-binding-preserved.html [ Failure ] crbug.com/591099 virtual/gpu/fast/canvas/webgl/webgl-viewport-parameters-preserved.html [ Failure ] crbug.com/591099 virtual/gpu/fast/canvas/zero-size-fill-rect.html [ Crash Pass ] +crbug.com/591099 virtual/high-contrast-mode/paint/high-contrast-mode/image-filter-all/image-invert.html [ Crash Pass ] crbug.com/591099 virtual/high-contrast-mode/paint/high-contrast-mode/image-filter-all/text-on-backgrounds.html [ Failure ] +crbug.com/591099 virtual/layout_ng/external/wpt/css/CSS2/abspos/abspos-containing-block-initial-005a.xht [ Crash Pass ] +crbug.com/591099 virtual/layout_ng/external/wpt/css/CSS2/floats-clear/clear-002.xht [ Crash Pass ] +crbug.com/591099 virtual/layout_ng/external/wpt/css/CSS2/floats-clear/clear-applies-to-009.xht [ Crash Pass ] +crbug.com/591099 virtual/layout_ng/external/wpt/css/CSS2/floats-clear/clear-applies-to-012.xht [ Crash Failure ] +crbug.com/591099 virtual/layout_ng/external/wpt/css/CSS2/floats-clear/clear-float-003.xht [ Crash Pass ] +crbug.com/591099 virtual/layout_ng/external/wpt/css/CSS2/floats-clear/clear-float-004.xht [ Crash Pass ] +crbug.com/591099 virtual/layout_ng/external/wpt/css/CSS2/floats-clear/clear-float-007.xht [ Crash Pass ] +crbug.com/591099 virtual/layout_ng/external/wpt/css/CSS2/floats-clear/float-applies-to-009.xht [ Crash Pass ] +crbug.com/591099 virtual/layout_ng/external/wpt/css/CSS2/floats-clear/float-non-replaced-width-009.xht [ Crash Pass ] +crbug.com/591099 virtual/layout_ng/external/wpt/css/CSS2/floats-clear/float-replaced-height-001.xht [ Crash Pass ] +crbug.com/591099 virtual/layout_ng/external/wpt/css/CSS2/floats-clear/float-replaced-height-003.xht [ Crash Pass ] +crbug.com/591099 virtual/layout_ng/external/wpt/css/CSS2/floats-clear/float-replaced-height-007.xht [ Crash Pass ] +crbug.com/591099 virtual/layout_ng/external/wpt/css/CSS2/floats-clear/float-replaced-width-006.xht [ Crash Pass ] +crbug.com/591099 virtual/layout_ng/external/wpt/css/CSS2/floats-clear/floats-005.xht [ Crash Failure ] +crbug.com/591099 virtual/layout_ng/external/wpt/css/CSS2/floats-clear/floats-007.xht [ Crash Pass ] +crbug.com/591099 virtual/layout_ng/external/wpt/css/CSS2/floats-clear/floats-026.xht [ Crash Pass ] +crbug.com/591099 virtual/layout_ng/external/wpt/css/CSS2/floats-clear/floats-031.xht [ Crash Failure ] +crbug.com/591099 virtual/layout_ng/external/wpt/css/CSS2/floats-clear/floats-112.xht [ Crash Pass ] +crbug.com/591099 virtual/layout_ng/external/wpt/css/CSS2/floats-clear/floats-122.xht [ Crash Pass ] +crbug.com/591099 virtual/layout_ng/external/wpt/css/CSS2/floats-clear/floats-139.xht [ Crash Pass ] +crbug.com/591099 virtual/layout_ng/external/wpt/css/CSS2/floats-clear/floats-149.xht [ Crash Pass ] +crbug.com/591099 virtual/layout_ng/external/wpt/css/CSS2/floats-clear/margin-collapse-024.xht [ Crash Pass ] +crbug.com/591099 virtual/layout_ng/external/wpt/css/CSS2/floats-clear/margin-collapse-035.xht [ Crash Failure ] +crbug.com/591099 virtual/layout_ng/external/wpt/css/CSS2/floats-clear/margin-collapse-166.xht [ Crash Pass ] +crbug.com/591099 virtual/layout_ng/external/wpt/css/CSS2/floats-clear/margin-collapse-clear-003.xht [ Crash Failure ] +crbug.com/591099 virtual/layout_ng/external/wpt/css/CSS2/floats-clear/margin-collapse-clear-016.xht [ Crash Pass ] +crbug.com/591099 virtual/layout_ng/external/wpt/css/CSS2/floats/floats-placement-vertical-001a.xht [ Crash Failure ] +crbug.com/591099 virtual/layout_ng/external/wpt/css/CSS2/floats/floats-placement-vertical-001c.xht [ Crash Failure ] +crbug.com/591099 virtual/layout_ng/external/wpt/css/CSS2/floats/floats-placement-vertical-003.xht [ Crash Pass ] +crbug.com/591099 virtual/layout_ng/external/wpt/css/CSS2/floats/floats-placement-vertical-004.xht [ Crash Pass ] +crbug.com/591099 virtual/layout_ng/external/wpt/css/CSS2/floats/floats-rule3-outside-right-001.xht [ Crash Pass ] +crbug.com/591099 virtual/layout_ng/external/wpt/css/CSS2/floats/floats-wrap-bfc-003-left-table.xht [ Crash Pass ] +crbug.com/591099 virtual/layout_ng/external/wpt/css/CSS2/floats/floats-wrap-bfc-004.xht [ Crash Failure ] +crbug.com/591099 virtual/layout_ng/external/wpt/css/CSS2/floats/floats-wrap-bfc-005.xht [ Crash Failure ] +crbug.com/591099 virtual/layout_ng/external/wpt/css/CSS2/floats/floats-wrap-top-below-bfc-001r.xht [ Crash Failure ] +crbug.com/591099 virtual/layout_ng/external/wpt/css/CSS2/floats/floats-wrap-top-below-bfc-003r.xht [ Crash Pass ] crbug.com/591099 virtual/layout_ng/external/wpt/css/CSS2/floats/floats-wrap-top-below-inline-003r.xht [ Failure Pass ] +crbug.com/591099 virtual/layout_ng/external/wpt/css/CSS2/linebox/inline-formatting-context-011.xht [ Crash Pass ] +crbug.com/591099 virtual/layout_ng/external/wpt/css/CSS2/linebox/inline-formatting-context-015.xht [ Crash Pass ] +crbug.com/591099 virtual/layout_ng/external/wpt/css/CSS2/linebox/line-height-016.xht [ Crash Pass ] +crbug.com/591099 virtual/layout_ng/external/wpt/css/CSS2/linebox/line-height-018.xht [ Crash Pass ] +crbug.com/591099 virtual/layout_ng/external/wpt/css/CSS2/linebox/line-height-035.xht [ Crash Pass ] +crbug.com/591099 virtual/layout_ng/external/wpt/css/CSS2/linebox/line-height-037.xht [ Crash Pass ] +crbug.com/591099 virtual/layout_ng/external/wpt/css/CSS2/linebox/line-height-040.xht [ Crash Pass ] +crbug.com/591099 virtual/layout_ng/external/wpt/css/CSS2/linebox/line-height-050.xht [ Crash Pass ] +crbug.com/591099 virtual/layout_ng/external/wpt/css/CSS2/linebox/line-height-applies-to-006.xht [ Crash Pass ] +crbug.com/591099 virtual/layout_ng/external/wpt/css/CSS2/linebox/line-height-applies-to-013.xht [ Crash Pass ] +crbug.com/591099 virtual/layout_ng/external/wpt/css/CSS2/linebox/vertical-align-019.xht [ Crash Pass ] +crbug.com/591099 virtual/layout_ng/external/wpt/css/CSS2/linebox/vertical-align-020.xht [ Crash Pass ] +crbug.com/591099 virtual/layout_ng/external/wpt/css/CSS2/linebox/vertical-align-067.xht [ Crash Pass ] +crbug.com/591099 virtual/layout_ng/external/wpt/css/CSS2/linebox/vertical-align-088.xht [ Crash Pass ] +crbug.com/591099 virtual/layout_ng/external/wpt/css/CSS2/linebox/vertical-align-089.xht [ Crash Pass ] +crbug.com/591099 virtual/layout_ng/external/wpt/css/CSS2/linebox/vertical-align-109.xht [ Crash Pass ] +crbug.com/591099 virtual/layout_ng/external/wpt/css/CSS2/linebox/vertical-align-applies-to-001.xht [ Crash Pass ] +crbug.com/591099 virtual/layout_ng/external/wpt/css/CSS2/linebox/vertical-align-baseline-008.xht [ Crash Pass ] +crbug.com/591099 virtual/layout_ng/external/wpt/css/CSS2/linebox/vertical-align-sub-001.xht [ Crash Failure ] +crbug.com/591099 virtual/layout_ng/external/wpt/css/CSS2/linebox/vertical-align-super-001.xht [ Crash Failure ] +crbug.com/591099 virtual/layout_ng/external/wpt/css/CSS2/normal-flow/block-in-inline-empty-004.xht [ Crash Pass ] +crbug.com/591099 virtual/layout_ng/external/wpt/css/CSS2/normal-flow/block-in-inline-insert-001c.xht [ Crash Pass ] +crbug.com/591099 virtual/layout_ng/external/wpt/css/CSS2/normal-flow/block-replaced-height-007.xht [ Crash Pass ] crbug.com/591099 virtual/layout_ng/external/wpt/css/CSS2/normal-flow/block-replaced-width-006.xht [ Failure ] +crbug.com/591099 virtual/layout_ng/external/wpt/css/CSS2/normal-flow/height-084.xht [ Crash Pass ] +crbug.com/591099 virtual/layout_ng/external/wpt/css/CSS2/normal-flow/inlines-016.xht [ Crash Pass ] +crbug.com/591099 virtual/layout_ng/external/wpt/css/CSS2/normal-flow/max-width-083.xht [ Crash Pass ] +crbug.com/591099 virtual/layout_ng/external/wpt/css/CSS2/normal-flow/min-height-024.xht [ Crash Pass ] +crbug.com/591099 virtual/layout_ng/external/wpt/css/CSS2/normal-flow/min-height-111.xht [ Crash Pass ] +crbug.com/591099 virtual/layout_ng/external/wpt/css/CSS2/normal-flow/min-width-049.xht [ Crash Pass ] +crbug.com/591099 virtual/layout_ng/external/wpt/css/CSS2/normal-flow/min-width-applies-to-016.xht [ Crash Pass ] +crbug.com/591099 virtual/layout_ng/external/wpt/css/CSS2/normal-flow/root-box-001.xht [ Crash Failure ] +crbug.com/591099 virtual/layout_ng/external/wpt/css/CSS2/normal-flow/width-006.xht [ Crash Pass ] +crbug.com/591099 virtual/layout_ng/external/wpt/css/CSS2/positioning/right-101.xht [ Crash Pass ] crbug.com/591099 virtual/layout_ng/external/wpt/css/CSS2/positioning/top-019.xht [ Crash Failure ] crbug.com/591099 virtual/layout_ng/external/wpt/css/CSS2/positioning/top-020.xht [ Crash Failure ] crbug.com/591099 virtual/layout_ng/external/wpt/css/CSS2/positioning/top-031.xht [ Crash Failure ] @@ -21042,6 +21300,65 @@ crbug.com/591099 virtual/layout_ng/fast/block/float/rubybase-children-moved-crash.html [ Failure ] crbug.com/591099 virtual/layout_ng/fast/block/margin-collapse/line-beside-float-complex-margin-collapsing.html [ Failure ] crbug.com/591099 virtual/layout_ng/fast/block/margin-collapse/self-collapsing-block-creates-block-formatting-context.html [ Failure ] +crbug.com/591099 virtual/mojo-loading/http/tests/canvas/canvas-filter-svg-external-multiple.html [ Crash Pass ] +crbug.com/591099 virtual/mojo-loading/http/tests/cookies/multiple-cookies.html [ Crash Pass ] +crbug.com/591099 virtual/mojo-loading/http/tests/credentialmanager/credentialscontainer-frame-errors.html [ Crash Pass ] +crbug.com/591099 virtual/mojo-loading/http/tests/dom/mutationobserver-parserappend-childlist.php [ Crash Pass ] +crbug.com/591099 virtual/mojo-loading/http/tests/dom/script-module-load-incomplete-no-crash.html [ Crash Pass ] +crbug.com/591099 virtual/mojo-loading/http/tests/download/default-encoding.html [ Crash Pass ] +crbug.com/591099 virtual/mojo-loading/http/tests/eventsource/eventsource-cors-redirect.html [ Crash Pass ] +crbug.com/591099 virtual/mojo-loading/http/tests/eventsource/eventsource-reconnect-during-navigate-crash.html [ Crash Pass ] +crbug.com/591099 virtual/mojo-loading/http/tests/eventsource/eventsource-retry-precision.html [ Crash Pass ] +crbug.com/591099 virtual/mojo-loading/http/tests/feature-policy/fullscreen-allowed-by-container-policy-relocate.html [ Crash Pass ] +crbug.com/591099 virtual/mojo-loading/http/tests/feature-policy/fullscreen-disabled.php [ Crash Pass ] +crbug.com/591099 virtual/mojo-loading/http/tests/feature-policy/payment-enabledforself.php [ Crash Pass ] +crbug.com/591099 virtual/mojo-loading/http/tests/fetch/chromium/data-saver.html [ Crash Pass ] +crbug.com/591099 virtual/mojo-loading/http/tests/fetch/chromium/mime-sniffing.html [ Crash Pass ] +crbug.com/591099 virtual/mojo-loading/http/tests/fetch/serviceworker-proxied/thorough/access-control-base-https-other-https.html [ Crash Pass ] +crbug.com/591099 virtual/mojo-loading/http/tests/fetch/serviceworker-proxied/thorough/access-control.html [ Crash Pass ] +crbug.com/591099 virtual/mojo-loading/http/tests/fetch/serviceworker-proxied/thorough/auth-nocors-other-https.html [ Crash Pass ] +crbug.com/591099 virtual/mojo-loading/http/tests/fetch/serviceworker-proxied/thorough/auth-other-https.html [ Crash Pass ] +crbug.com/591099 virtual/mojo-loading/http/tests/fetch/serviceworker-proxied/thorough/auth.html [ Crash Pass ] +crbug.com/591099 virtual/mojo-loading/http/tests/fetch/serviceworker-proxied/thorough/cookie-base-https-other-https.html [ Crash Pass ] +crbug.com/591099 virtual/mojo-loading/http/tests/fetch/serviceworker-proxied/thorough/cookie-nocors-other-https.html [ Crash Pass ] +crbug.com/591099 virtual/mojo-loading/http/tests/fetch/serviceworker-proxied/thorough/cookie.html [ Crash Pass ] +crbug.com/591099 virtual/mojo-loading/http/tests/fetch/serviceworker-proxied/thorough/cors-preflight.html [ Crash Pass ] +crbug.com/591099 virtual/mojo-loading/http/tests/fetch/serviceworker-proxied/thorough/cors-preflight2.html [ Crash Pass ] +crbug.com/591099 virtual/mojo-loading/http/tests/fetch/serviceworker-proxied/thorough/cors.html [ Crash Pass ] +crbug.com/591099 virtual/mojo-loading/http/tests/fetch/serviceworker-proxied/thorough/nocors.html [ Crash Pass ] +crbug.com/591099 virtual/mojo-loading/http/tests/fetch/serviceworker-proxied/thorough/redirect-loop-base-https-other-https.html [ Crash Pass ] +crbug.com/591099 virtual/mojo-loading/http/tests/fetch/serviceworker-proxied/thorough/redirect-nocors-other-https.html [ Crash Pass ] +crbug.com/591099 virtual/mojo-loading/http/tests/fetch/serviceworker-proxied/thorough/scheme-blob.html [ Crash Pass ] +crbug.com/591099 virtual/mojo-loading/http/tests/fetch/serviceworker/request-base-https-other-https.html [ Crash Pass ] +crbug.com/591099 virtual/mojo-loading/http/tests/fetch/serviceworker/response.html [ Crash Pass ] +crbug.com/591099 virtual/mojo-loading/http/tests/fetch/serviceworker/stream-reader.html [ Crash Pass ] +crbug.com/591099 virtual/mojo-loading/http/tests/fetch/serviceworker/thorough/access-control-base-https-other-https.html [ Crash Pass ] +crbug.com/591099 virtual/mojo-loading/http/tests/fetch/serviceworker/thorough/auth.html [ Crash Pass ] +crbug.com/591099 virtual/mojo-loading/http/tests/fetch/serviceworker/thorough/cookie-other-https.html [ Crash Pass ] +crbug.com/591099 virtual/mojo-loading/http/tests/fetch/serviceworker/thorough/cors-preflight2-base-https-other-https.html [ Crash Pass ] +crbug.com/591099 virtual/mojo-loading/http/tests/fetch/serviceworker/thorough/nocors-other-https.html [ Crash Pass ] +crbug.com/591099 virtual/mojo-loading/http/tests/fetch/serviceworker/thorough/nocors.html [ Crash Pass ] +crbug.com/591099 virtual/mojo-loading/http/tests/fetch/serviceworker/thorough/redirect-loop.html [ Crash Pass ] +crbug.com/591099 virtual/mojo-loading/http/tests/fetch/serviceworker/thorough/redirect-nocors-other-https.html [ Crash Pass ] +crbug.com/591099 virtual/mojo-loading/http/tests/fetch/serviceworker/thorough/redirect-password-base-https-other-https.html [ Crash Pass ] +crbug.com/591099 virtual/mojo-loading/http/tests/fetch/serviceworker/thorough/scheme-data.html [ Crash Pass ] +crbug.com/591099 virtual/mojo-loading/http/tests/fetch/window/block-mixed-content-nocors-base-https.html [ Crash Pass ] +crbug.com/591099 virtual/mojo-loading/http/tests/fetch/window/body-mixin-base-https-other-https.html [ Crash Pass ] +crbug.com/591099 virtual/mojo-loading/http/tests/fetch/window/fetch.html [ Crash Pass ] +crbug.com/591099 virtual/mojo-loading/http/tests/fetch/window/filtered-response-base-https-other-https.html [ Crash Pass ] +crbug.com/591099 virtual/mojo-loading/http/tests/fetch/window/referrer-base-https-other-https.html [ Crash Pass ] +crbug.com/591099 virtual/mojo-loading/http/tests/fetch/window/referrer.html [ Crash Pass ] +crbug.com/591099 virtual/mojo-loading/http/tests/fetch/window/stream-reader-base-https-other-https.html [ Crash Pass ] +crbug.com/591099 virtual/mojo-loading/http/tests/fetch/window/thorough/cors-preflight-other-https.html [ Crash Pass ] +crbug.com/591099 virtual/mojo-loading/http/tests/fetch/window/thorough/cors.html [ Crash Pass ] +crbug.com/591099 virtual/mojo-loading/http/tests/fetch/window/thorough/redirect-other-https.html [ Crash Pass ] +crbug.com/591099 virtual/mojo-loading/http/tests/fetch/window/thorough/redirect-password-base-https-other-https.html [ Crash Pass ] +crbug.com/591099 virtual/mojo-loading/http/tests/fetch/window/thorough/redirect-password-other-https.html [ Crash Pass ] +crbug.com/591099 virtual/mojo-loading/http/tests/fetch/window/thorough/scheme-blob-other-https.html [ Crash Pass ] +crbug.com/591099 virtual/mojo-loading/http/tests/fetch/workers/headers-base-https-other-https.html [ Crash Pass ] +crbug.com/591099 virtual/mojo-loading/http/tests/fetch/workers/request-base-https-other-https.html [ Crash Pass ] +crbug.com/591099 virtual/mojo-loading/http/tests/fetch/workers/request.html [ Crash Pass ] +crbug.com/591099 virtual/mojo-loading/http/tests/fetch/workers/thorough/cors.html [ Crash Pass ] crbug.com/591099 virtual/mojo-loading/http/tests/inspector-protocol/network/disable-interception-midway.html [ Failure Pass Timeout ] crbug.com/591099 virtual/mojo-loading/http/tests/inspector/appcache/appcache-iframe-manifests.html [ Pass Timeout ] crbug.com/591099 virtual/mojo-loading/http/tests/inspector/application-panel/storage-view-reports-quota.html [ Failure Pass Timeout ] @@ -21625,23 +21942,23 @@ crbug.com/591099 virtual/threaded/animations/3d/change-transform-in-end-event.html [ Failure Pass ] crbug.com/591099 virtual/threaded/animations/3d/state-at-end-event-transform.html [ Failure Pass ] crbug.com/591099 virtual/threaded/animations/animation-css-rule-types.html [ Failure ] -crbug.com/591099 virtual/threaded/animations/events/animation-events-create.html [ Failure ] crbug.com/591099 virtual/threaded/animations/animations-parsing.html [ Timeout ] -crbug.com/591099 virtual/threaded/animations/responsive/animations-responsive-to-color-change.html [ Crash Pass ] -crbug.com/591099 virtual/threaded/animations/svg/clear-svg-animation-effects.html [ Crash Pass ] crbug.com/591099 virtual/threaded/animations/composition/background-position-composition.html [ Crash Pass ] crbug.com/591099 virtual/threaded/animations/composition/caret-color-composition.html [ Crash Pass ] crbug.com/591099 virtual/threaded/animations/composition/stroke-dasharray-composition.html [ Crash Pass ] crbug.com/591099 virtual/threaded/animations/computed-style.html [ Failure ] -crbug.com/591099 virtual/threaded/animations/svg/css-animation-overrides-svg-presentation-attribute-animation.html [ Crash Pass ] -crbug.com/591099 virtual/threaded/animations/events/delay-start-event.html [ Failure ] crbug.com/591099 virtual/threaded/animations/display-change-does-not-terminate-animation.html [ Crash Failure ] crbug.com/591099 virtual/threaded/animations/display-inline-style-adjust.html [ Failure Timeout ] crbug.com/591099 virtual/threaded/animations/display-none-cancel-computedstyle.html [ Failure ] crbug.com/591099 virtual/threaded/animations/display-none-terminates-animation.html [ Failure ] +crbug.com/591099 virtual/threaded/animations/events/animation-events-create.html [ Failure ] +crbug.com/591099 virtual/threaded/animations/events/delay-start-event.html [ Failure ] +crbug.com/591099 virtual/threaded/animations/events/negative-delay-events.html [ Failure ] +crbug.com/591099 virtual/threaded/animations/events/play-state-initially-paused-start-event.html [ Failure ] +crbug.com/591099 virtual/threaded/animations/font-size-using-ems.html [ Failure ] +crbug.com/591099 virtual/threaded/animations/hit-testing/inline-element-animation-end-hit-test.html [ Failure ] crbug.com/591099 virtual/threaded/animations/img-element-transform.html [ Crash Pass Timeout ] crbug.com/591099 virtual/threaded/animations/inline-block-transform.html [ Crash Pass ] -crbug.com/591099 virtual/threaded/animations/hit-testing/inline-element-animation-end-hit-test.html [ Failure ] crbug.com/591099 virtual/threaded/animations/interpolation/backdrop-filter-interpolation.html [ Crash Timeout ] crbug.com/591099 virtual/threaded/animations/interpolation/background-color-interpolation.html [ Crash Pass ] crbug.com/591099 virtual/threaded/animations/interpolation/background-image-interpolation.html [ Crash Timeout ] @@ -21728,14 +22045,19 @@ crbug.com/591099 virtual/threaded/animations/interpolation/webkit-transform-origin-interpolation.html [ Crash Pass ] crbug.com/591099 virtual/threaded/animations/keyframes-rule.html [ Failure ] crbug.com/591099 virtual/threaded/animations/lazy-detached-animation-stop.html [ Failure ] -crbug.com/591099 virtual/threaded/animations/events/negative-delay-events.html [ Failure ] -crbug.com/591099 virtual/threaded/animations/events/play-state-initially-paused-start-event.html [ Failure ] crbug.com/591099 virtual/threaded/animations/play-state.html [ Failure ] crbug.com/591099 virtual/threaded/animations/prefixed/animation-inherit-initial-unprefixed.html [ Failure ] crbug.com/591099 virtual/threaded/animations/prefixed/keyframes-cssom-prefixed-02.html [ Failure ] crbug.com/591099 virtual/threaded/animations/prefixed/keyframes-cssom-unprefixed-02.html [ Failure ] +crbug.com/591099 virtual/threaded/animations/responsive/animations-responsive-to-color-change.html [ Crash Pass ] crbug.com/591099 virtual/threaded/animations/responsive/interpolation/d-responsive.html [ Crash Pass ] crbug.com/591099 virtual/threaded/animations/responsive/interpolation/line-height-responsive.html [ Pass Timeout ] +crbug.com/591099 virtual/threaded/animations/responsive/interpolation/svg-d-responsive.html [ Crash Pass ] +crbug.com/591099 virtual/threaded/animations/responsive/interpolation/svg-points-responsive.html [ Crash Pass ] +crbug.com/591099 virtual/threaded/animations/responsive/interpolation/svg-tableValues-responsive.html [ Crash Pass ] +crbug.com/591099 virtual/threaded/animations/responsive/interpolation/svg-transform-responsive.html [ Crash Pass ] +crbug.com/591099 virtual/threaded/animations/responsive/interpolation/svg-x-list-responsive.html [ Crash Pass ] +crbug.com/591099 virtual/threaded/animations/responsive/svg-responsive-to-timing-updates.html [ Crash Pass ] crbug.com/591099 virtual/threaded/animations/rotate-transform-equivalent.html [ Failure Timeout ] crbug.com/591099 virtual/threaded/animations/skew-notsequential-compositor.html [ Failure Timeout ] crbug.com/591099 virtual/threaded/animations/stability/animation-end-event-destroy-renderer.html [ Failure ] @@ -21900,13 +22222,9 @@ crbug.com/591099 virtual/threaded/animations/svg-attribute-interpolation/svg-xChannelSelector-interpolation.html [ Crash Pass ] crbug.com/591099 virtual/threaded/animations/svg-attribute-interpolation/svg-y-list-interpolation.html [ Crash Pass ] crbug.com/591099 virtual/threaded/animations/svg-attribute-interpolation/svg-z-interpolation.html [ Crash Pass ] -crbug.com/591099 virtual/threaded/animations/responsive/interpolation/svg-d-responsive.html [ Crash Pass ] -crbug.com/591099 virtual/threaded/animations/responsive/interpolation/svg-points-responsive.html [ Crash Pass ] -crbug.com/591099 virtual/threaded/animations/responsive/interpolation/svg-tableValues-responsive.html [ Crash Pass ] -crbug.com/591099 virtual/threaded/animations/responsive/interpolation/svg-transform-responsive.html [ Crash Pass ] -crbug.com/591099 virtual/threaded/animations/responsive/interpolation/svg-x-list-responsive.html [ Crash Pass ] +crbug.com/591099 virtual/threaded/animations/svg/clear-svg-animation-effects.html [ Crash Pass ] +crbug.com/591099 virtual/threaded/animations/svg/css-animation-overrides-svg-presentation-attribute-animation.html [ Crash Pass ] crbug.com/591099 virtual/threaded/animations/svg/svg-presentation-attribute-animation.html [ Crash Pass ] -crbug.com/591099 virtual/threaded/animations/responsive/svg-responsive-to-timing-updates.html [ Crash Pass ] crbug.com/591099 virtual/threaded/animations/timing/timing-model.html [ Pass Timeout ] crbug.com/591099 virtual/threaded/compositing/visibility/compositing-and-visibility-turned-off-together.html [ Failure ] crbug.com/591099 virtual/threaded/compositing/visibility/hidden-iframe.html [ Failure ] @@ -21956,7 +22274,7 @@ crbug.com/591099 virtual/threaded/inspector/tracing/timeline-js/timeline-js-line-level-profile.html [ Crash Pass ] crbug.com/591099 virtual/threaded/inspector/tracing/timeline-js/timeline-microtasks.html [ Crash Failure ] crbug.com/591099 virtual/threaded/inspector/tracing/timeline-js/timeline-open-function-call.html [ Failure ] -crbug.com/591099 virtual/threaded/inspector/tracing/timeline-js/timeline-runtime-stats.html [ Crash Failure ] +crbug.com/591099 virtual/threaded/inspector/tracing/timeline-js/timeline-runtime-stats.html [ Crash Failure Pass ] crbug.com/591099 virtual/threaded/inspector/tracing/timeline-js/timeline-script-id.html [ Crash Failure ] crbug.com/591099 virtual/threaded/inspector/tracing/timeline-js/timeline-script-tag-1.html [ Crash Failure ] crbug.com/591099 virtual/threaded/inspector/tracing/timeline-js/timeline-script-tag-2.html [ Crash Failure ]
diff --git a/third_party/WebKit/LayoutTests/NeverFixTests b/third_party/WebKit/LayoutTests/NeverFixTests index e9406fde..f92cde6 100644 --- a/third_party/WebKit/LayoutTests/NeverFixTests +++ b/third_party/WebKit/LayoutTests/NeverFixTests
@@ -824,7 +824,6 @@ external/wpt/viewport/viewport-scale-manual.html [ WontFix ] external/wpt/viewport/viewport-scroll-event-manual.html [ WontFix ] external/wpt/web-share/share-cancel-manual.html [ WontFix ] -external/wpt/web-share/share-empty-manual.html [ WontFix ] external/wpt/web-share/share-extra-argument-manual.html [ WontFix ] external/wpt/web-share/share-extra-field-manual.html [ WontFix ] external/wpt/web-share/share-non-string-manual.html [ WontFix ]
diff --git a/third_party/WebKit/LayoutTests/external/WPT_BASE_MANIFEST.json b/third_party/WebKit/LayoutTests/external/WPT_BASE_MANIFEST.json index 91fc5cf..92f98e3 100644 --- a/third_party/WebKit/LayoutTests/external/WPT_BASE_MANIFEST.json +++ b/third_party/WebKit/LayoutTests/external/WPT_BASE_MANIFEST.json
@@ -115,6 +115,30 @@ {} ] ], + "clipboard-apis/async-write-dttext-read-dttext-manual.https.html": [ + [ + "/clipboard-apis/async-write-dttext-read-dttext-manual.https.html", + {} + ] + ], + "clipboard-apis/async-write-dttext-read-text-manual.https.html": [ + [ + "/clipboard-apis/async-write-dttext-read-text-manual.https.html", + {} + ] + ], + "clipboard-apis/async-write-text-read-dttext-manual.https.html": [ + [ + "/clipboard-apis/async-write-text-read-dttext-manual.https.html", + {} + ] + ], + "clipboard-apis/async-write-text-read-text-manual.https.html": [ + [ + "/clipboard-apis/async-write-text-read-text-manual.https.html", + {} + ] + ], "console/console-count-logging-manual.html": [ [ "/console/console-count-logging-manual.html", @@ -4099,12 +4123,6 @@ {} ] ], - "web-share/share-empty-manual.html": [ - [ - "/web-share/share-empty-manual.html", - {} - ] - ], "web-share/share-extra-argument-manual.html": [ [ "/web-share/share-extra-argument-manual.html", @@ -4959,6 +4977,138 @@ {} ] ], + "css-paint-api/geometry-background-image-001.html": [ + [ + "/css-paint-api/geometry-background-image-001.html", + [ + [ + "/css-paint-api/geometry-background-image-001-ref.html", + "==" + ] + ], + {} + ] + ], + "css-paint-api/geometry-background-image-002.html": [ + [ + "/css-paint-api/geometry-background-image-002.html", + [ + [ + "/css-paint-api/geometry-background-image-002-ref.html", + "==" + ] + ], + {} + ] + ], + "css-paint-api/geometry-background-image-003.html": [ + [ + "/css-paint-api/geometry-background-image-003.html", + [ + [ + "/css-paint-api/geometry-background-image-003-ref.html", + "==" + ] + ], + {} + ] + ], + "css-paint-api/geometry-background-image-tiled-001.html": [ + [ + "/css-paint-api/geometry-background-image-tiled-001.html", + [ + [ + "/css-paint-api/geometry-background-image-tiled-001-ref.html", + "==" + ] + ], + {} + ] + ], + "css-paint-api/geometry-background-image-tiled-002.html": [ + [ + "/css-paint-api/geometry-background-image-tiled-002.html", + [ + [ + "/css-paint-api/geometry-background-image-tiled-002-ref.html", + "==" + ] + ], + {} + ] + ], + "css-paint-api/geometry-background-image-tiled-003.html": [ + [ + "/css-paint-api/geometry-background-image-tiled-003.html", + [ + [ + "/css-paint-api/geometry-background-image-tiled-003-ref.html", + "==" + ] + ], + {} + ] + ], + "css-paint-api/geometry-border-image-001.html": [ + [ + "/css-paint-api/geometry-border-image-001.html", + [ + [ + "/css-paint-api/geometry-border-image-001-ref.html", + "==" + ] + ], + {} + ] + ], + "css-paint-api/geometry-border-image-002.html": [ + [ + "/css-paint-api/geometry-border-image-002.html", + [ + [ + "/css-paint-api/geometry-border-image-002-ref.html", + "==" + ] + ], + {} + ] + ], + "css-paint-api/geometry-border-image-003.html": [ + [ + "/css-paint-api/geometry-border-image-003.html", + [ + [ + "/css-paint-api/geometry-border-image-003-ref.html", + "==" + ] + ], + {} + ] + ], + "css-paint-api/geometry-border-image-004.html": [ + [ + "/css-paint-api/geometry-border-image-004.html", + [ + [ + "/css-paint-api/geometry-border-image-004-ref.html", + "==" + ] + ], + {} + ] + ], + "css-paint-api/geometry-border-image-005.html": [ + [ + "/css-paint-api/geometry-border-image-005.html", + [ + [ + "/css-paint-api/geometry-border-image-005-ref.html", + "==" + ] + ], + {} + ] + ], "css-paint-api/invalid-image-constructor-error.html": [ [ "/css-paint-api/invalid-image-constructor-error.html", @@ -5127,6 +5277,270 @@ {} ] ], + "css-paint-api/paint2d-zoom.html": [ + [ + "/css-paint-api/paint2d-zoom.html", + [ + [ + "/css-paint-api/paint2d-zoom-ref.html", + "==" + ] + ], + {} + ] + ], + "css-paint-api/parse-input-arguments-001.html": [ + [ + "/css-paint-api/parse-input-arguments-001.html", + [ + [ + "/css-paint-api/parse-input-arguments-ref.html", + "==" + ] + ], + {} + ] + ], + "css-paint-api/parse-input-arguments-002.html": [ + [ + "/css-paint-api/parse-input-arguments-002.html", + [ + [ + "/css-paint-api/parse-input-arguments-ref.html", + "==" + ] + ], + {} + ] + ], + "css-paint-api/parse-input-arguments-003.html": [ + [ + "/css-paint-api/parse-input-arguments-003.html", + [ + [ + "/css-paint-api/parse-input-arguments-ref.html", + "==" + ] + ], + {} + ] + ], + "css-paint-api/parse-input-arguments-004.html": [ + [ + "/css-paint-api/parse-input-arguments-004.html", + [ + [ + "/css-paint-api/parse-input-arguments-ref.html", + "==" + ] + ], + {} + ] + ], + "css-paint-api/parse-input-arguments-005.html": [ + [ + "/css-paint-api/parse-input-arguments-005.html", + [ + [ + "/css-paint-api/parse-input-arguments-ref.html", + "==" + ] + ], + {} + ] + ], + "css-paint-api/parse-input-arguments-006.html": [ + [ + "/css-paint-api/parse-input-arguments-006.html", + [ + [ + "/css-paint-api/parse-input-arguments-ref.html", + "==" + ] + ], + {} + ] + ], + "css-paint-api/parse-input-arguments-007.html": [ + [ + "/css-paint-api/parse-input-arguments-007.html", + [ + [ + "/css-paint-api/parse-input-arguments-ref.html", + "==" + ] + ], + {} + ] + ], + "css-paint-api/parse-input-arguments-008.html": [ + [ + "/css-paint-api/parse-input-arguments-008.html", + [ + [ + "/css-paint-api/parse-input-arguments-ref.html", + "==" + ] + ], + {} + ] + ], + "css-paint-api/parse-input-arguments-009.html": [ + [ + "/css-paint-api/parse-input-arguments-009.html", + [ + [ + "/css-paint-api/parse-input-arguments-ref.html", + "==" + ] + ], + {} + ] + ], + "css-paint-api/parse-input-arguments-010.html": [ + [ + "/css-paint-api/parse-input-arguments-010.html", + [ + [ + "/css-paint-api/parse-input-arguments-ref.html", + "==" + ] + ], + {} + ] + ], + "css-paint-api/parse-input-arguments-011.html": [ + [ + "/css-paint-api/parse-input-arguments-011.html", + [ + [ + "/css-paint-api/parse-input-arguments-ref.html", + "==" + ] + ], + {} + ] + ], + "css-paint-api/parse-input-arguments-012.html": [ + [ + "/css-paint-api/parse-input-arguments-012.html", + [ + [ + "/css-paint-api/parse-input-arguments-ref.html", + "==" + ] + ], + {} + ] + ], + "css-paint-api/parse-input-arguments-013.html": [ + [ + "/css-paint-api/parse-input-arguments-013.html", + [ + [ + "/css-paint-api/parse-input-arguments-ref.html", + "==" + ] + ], + {} + ] + ], + "css-paint-api/parse-input-arguments-014.html": [ + [ + "/css-paint-api/parse-input-arguments-014.html", + [ + [ + "/css-paint-api/parse-input-arguments-ref.html", + "==" + ] + ], + {} + ] + ], + "css-paint-api/parse-input-arguments-015.html": [ + [ + "/css-paint-api/parse-input-arguments-015.html", + [ + [ + "/css-paint-api/parse-input-arguments-ref.html", + "==" + ] + ], + {} + ] + ], + "css-paint-api/parse-input-arguments-016.html": [ + [ + "/css-paint-api/parse-input-arguments-016.html", + [ + [ + "/css-paint-api/parse-input-arguments-ref.html", + "==" + ] + ], + {} + ] + ], + "css-paint-api/parse-input-arguments-017.html": [ + [ + "/css-paint-api/parse-input-arguments-017.html", + [ + [ + "/css-paint-api/parse-input-arguments-ref.html", + "==" + ] + ], + {} + ] + ], + "css-paint-api/registered-properties-in-custom-paint.html": [ + [ + "/css-paint-api/registered-properties-in-custom-paint.html", + [ + [ + "/css-paint-api/parse-input-arguments-ref.html", + "==" + ] + ], + {} + ] + ], + "css-paint-api/style-background-image.html": [ + [ + "/css-paint-api/style-background-image.html", + [ + [ + "/css-paint-api/style-background-image-ref.html", + "==" + ] + ], + {} + ] + ], + "css-paint-api/style-before-pseudo.html": [ + [ + "/css-paint-api/style-before-pseudo.html", + [ + [ + "/css-paint-api/style-before-pseudo-ref.html", + "==" + ] + ], + {} + ] + ], + "css-paint-api/style-first-letter-pseudo.html": [ + [ + "/css-paint-api/style-first-letter-pseudo.html", + [ + [ + "/css-paint-api/style-first-letter-pseudo-ref.html", + "==" + ] + ], + {} + ] + ], "css-paint-api/valid-image-after-load.html": [ [ "/css-paint-api/valid-image-after-load.html", @@ -33371,6 +33785,18 @@ {} ] ], + "css/css-position-3/position-sticky-grid.html": [ + [ + "/css/css-position-3/position-sticky-grid.html", + [ + [ + "/css/css-position-3/position-sticky-grid-ref.html", + "==" + ] + ], + {} + ] + ], "css/css-position-3/position-sticky-left.html": [ [ "/css/css-position-3/position-sticky-left.html", @@ -65933,21 +66359,6 @@ {} ] ], - "WebIDL/ecmascript-binding/es-exceptions/DOMException-constructor-expected.txt": [ - [ - {} - ] - ], - "WebIDL/ecmascript-binding/es-exceptions/constructor-object-expected.txt": [ - [ - {} - ] - ], - "WebIDL/ecmascript-binding/es-exceptions/constructor-object.js": [ - [ - {} - ] - ], "WebIDL/ecmascript-binding/es-exceptions/exceptions-expected.txt": [ [ {} @@ -65958,6 +66369,11 @@ {} ] ], + "WebIDL/ecmascript-binding/legacy-platform-object-expected.txt": [ + [ + {} + ] + ], "WebIDL/ecmascript-binding/sequence-conversion-expected.txt": [ [ {} @@ -68633,6 +69049,61 @@ {} ] ], + "css-paint-api/geometry-background-image-001-ref.html": [ + [ + {} + ] + ], + "css-paint-api/geometry-background-image-002-ref.html": [ + [ + {} + ] + ], + "css-paint-api/geometry-background-image-003-ref.html": [ + [ + {} + ] + ], + "css-paint-api/geometry-background-image-tiled-001-ref.html": [ + [ + {} + ] + ], + "css-paint-api/geometry-background-image-tiled-002-ref.html": [ + [ + {} + ] + ], + "css-paint-api/geometry-background-image-tiled-003-ref.html": [ + [ + {} + ] + ], + "css-paint-api/geometry-border-image-001-ref.html": [ + [ + {} + ] + ], + "css-paint-api/geometry-border-image-002-ref.html": [ + [ + {} + ] + ], + "css-paint-api/geometry-border-image-003-ref.html": [ + [ + {} + ] + ], + "css-paint-api/geometry-border-image-004-ref.html": [ + [ + {} + ] + ], + "css-paint-api/geometry-border-image-005-ref.html": [ + [ + {} + ] + ], "css-paint-api/invalid-image-constructor-error-ref.html": [ [ {} @@ -68703,6 +69174,31 @@ {} ] ], + "css-paint-api/paint2d-zoom-ref.html": [ + [ + {} + ] + ], + "css-paint-api/parse-input-arguments-ref.html": [ + [ + {} + ] + ], + "css-paint-api/style-background-image-ref.html": [ + [ + {} + ] + ], + "css-paint-api/style-before-pseudo-ref.html": [ + [ + {} + ] + ], + "css-paint-api/style-first-letter-pseudo-ref.html": [ + [ + {} + ] + ], "css-paint-api/valid-image-after-load-ref.html": [ [ {} @@ -74363,6 +74859,11 @@ {} ] ], + "css/css-position-3/position-sticky-grid-ref.html": [ + [ + {} + ] + ], "css/css-position-3/position-sticky-left-ref.html": [ [ {} @@ -81943,11 +82444,6 @@ {} ] ], - "css/geometry-1/historical-expected.txt": [ - [ - {} - ] - ], "css/geometry-1/interfaces-expected.txt": [ [ {} @@ -83228,11 +83724,6 @@ {} ] ], - "cssom-view/cssom-getBoundingClientRect-002-expected.txt": [ - [ - {} - ] - ], "cssom-view/cssom-getClientRects-002-expected.txt": [ [ {} @@ -94993,16 +95484,6 @@ {} ] ], - "html/semantics/embedded-content/media-elements/interfaces/TextTrackCueList/getter-expected.txt": [ - [ - {} - ] - ], - "html/semantics/embedded-content/media-elements/interfaces/TextTrackList/getter-expected.txt": [ - [ - {} - ] - ], "html/semantics/embedded-content/media-elements/interfaces/TrackEvent/createEvent-expected.txt": [ [ {} @@ -96573,11 +97054,26 @@ {} ] ], + "html/semantics/scripting-1/the-script-element/resources/load-error-events-helpers.js": [ + [ + {} + ] + ], + "html/semantics/scripting-1/the-script-element/resources/load-error-events.py": [ + [ + {} + ] + ], "html/semantics/scripting-1/the-script-element/resources/set-script-executed.js": [ [ {} ] ], + "html/semantics/scripting-1/the-script-element/resources/slow.py": [ + [ + {} + ] + ], "html/semantics/scripting-1/the-script-element/script-charset-01-expected.txt": [ [ {} @@ -98318,6 +98814,11 @@ {} ] ], + "interfaces/clipboard.idl": [ + [ + {} + ] + ], "interfaces/cssom.idl": [ [ {} @@ -100153,6 +100654,11 @@ {} ] ], + "page-visibility/resources/iframe-with-subframes.html": [ + [ + {} + ] + ], "page-visibility/resources/pagevistestharness.js": [ [ {} @@ -100198,11 +100704,6 @@ {} ] ], - "payment-request/payment-request-canmakepayment-method.https.http": [ - [ - {} - ] - ], "payment-request/payment-request-response-id.html": [ [ {} @@ -100238,6 +100739,16 @@ {} ] ], + "performance-timeline/resources/worker-with-performance-observer.js": [ + [ + {} + ] + ], + "performance-timeline/worker-with-performance-observer-expected.txt": [ + [ + {} + ] + ], "pointerevents/OWNERS": [ [ {} @@ -117077,27 +117588,43 @@ {} ] ], - "WebIDL/ecmascript-binding/es-exceptions/DOMException-constants.html": [ + "WebIDL/ecmascript-binding/es-exceptions/DOMException-constants.any.js": [ [ - "/WebIDL/ecmascript-binding/es-exceptions/DOMException-constants.html", + "/WebIDL/ecmascript-binding/es-exceptions/DOMException-constants.any.html", + {} + ], + [ + "/WebIDL/ecmascript-binding/es-exceptions/DOMException-constants.any.worker.html", {} ] ], - "WebIDL/ecmascript-binding/es-exceptions/DOMException-constructor.html": [ + "WebIDL/ecmascript-binding/es-exceptions/DOMException-constructor-and-prototype.any.js": [ [ - "/WebIDL/ecmascript-binding/es-exceptions/DOMException-constructor.html", + "/WebIDL/ecmascript-binding/es-exceptions/DOMException-constructor-and-prototype.any.html", + {} + ], + [ + "/WebIDL/ecmascript-binding/es-exceptions/DOMException-constructor-and-prototype.any.worker.html", {} ] ], - "WebIDL/ecmascript-binding/es-exceptions/constructor-object.html": [ + "WebIDL/ecmascript-binding/es-exceptions/DOMException-constructor-behavior.any.js": [ [ - "/WebIDL/ecmascript-binding/es-exceptions/constructor-object.html", + "/WebIDL/ecmascript-binding/es-exceptions/DOMException-constructor-behavior.any.html", + {} + ], + [ + "/WebIDL/ecmascript-binding/es-exceptions/DOMException-constructor-behavior.any.worker.html", {} ] ], - "WebIDL/ecmascript-binding/es-exceptions/constructor-object.worker.js": [ + "WebIDL/ecmascript-binding/es-exceptions/DOMException-custom-bindings.any.js": [ [ - "/WebIDL/ecmascript-binding/es-exceptions/constructor-object.worker.html", + "/WebIDL/ecmascript-binding/es-exceptions/DOMException-custom-bindings.any.html", + {} + ], + [ + "/WebIDL/ecmascript-binding/es-exceptions/DOMException-custom-bindings.any.worker.html", {} ] ], @@ -117131,6 +117658,12 @@ {} ] ], + "WebIDL/ecmascript-binding/legacy-platform-object.html": [ + [ + "/WebIDL/ecmascript-binding/legacy-platform-object.html", + {} + ] + ], "WebIDL/ecmascript-binding/put-forwards.html": [ [ "/WebIDL/ecmascript-binding/put-forwards.html", @@ -118629,9 +119162,27 @@ {} ] ], - "clear-site-data/navigation.html": [ + "clear-site-data/navigation-insecure.html": [ [ - "/clear-site-data/navigation.html", + "/clear-site-data/navigation-insecure.html", + {} + ] + ], + "clear-site-data/navigation.https.html": [ + [ + "/clear-site-data/navigation.https.html", + {} + ] + ], + "clipboard-apis/async-interfaces.https.html": [ + [ + "/clipboard-apis/async-interfaces.https.html", + {} + ] + ], + "clipboard-apis/async-navigator-clipboard-basics.https.html": [ + [ + "/clipboard-apis/async-navigator-clipboard-basics.https.html", {} ] ], @@ -124729,6 +125280,16 @@ {} ] ], + "dom/events/EventTarget-constructible.any.js": [ + [ + "/dom/events/EventTarget-constructible.any.html", + {} + ], + [ + "/dom/events/EventTarget-constructible.any.worker.html", + {} + ] + ], "dom/events/EventTarget-dispatchEvent-returnvalue.html": [ [ "/dom/events/EventTarget-dispatchEvent-returnvalue.html", @@ -129525,6 +130086,12 @@ {} ] ], + "hr-time/timing-attack.html": [ + [ + "/hr-time/timing-attack.html", + {} + ] + ], "hr-time/window-worker-time-origin.html": [ [ "/hr-time/window-worker-time-origin.html", @@ -135019,9 +135586,21 @@ {} ] ], - "html/semantics/scripting-1/the-script-element/load-event.html": [ + "html/semantics/scripting-1/the-script-element/load-error-events-1.html": [ [ - "/html/semantics/scripting-1/the-script-element/load-event.html", + "/html/semantics/scripting-1/the-script-element/load-error-events-1.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/load-error-events-2.html": [ + [ + "/html/semantics/scripting-1/the-script-element/load-error-events-2.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/load-error-events-3.html": [ + [ + "/html/semantics/scripting-1/the-script-element/load-error-events-3.html", {} ] ], @@ -135171,6 +135750,18 @@ {} ] ], + "html/semantics/scripting-1/the-script-element/module/load-error-events-inline.html": [ + [ + "/html/semantics/scripting-1/the-script-element/module/load-error-events-inline.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/module/load-error-events.html": [ + [ + "/html/semantics/scripting-1/the-script-element/module/load-error-events.html", + {} + ] + ], "html/semantics/scripting-1/the-script-element/module/module-vs-script-1.html": [ [ "/html/semantics/scripting-1/the-script-element/module/module-vs-script-1.html", @@ -149551,6 +150142,12 @@ {} ] ], + "page-visibility/iframe-unload.html": [ + [ + "/page-visibility/iframe-unload.html", + {} + ] + ], "page-visibility/prerender_call.html": [ [ "/page-visibility/prerender_call.html", @@ -149695,6 +150292,12 @@ {} ] ], + "payment-request/payment-request-canmakepayment-method.https.html": [ + [ + "/payment-request/payment-request-canmakepayment-method.https.html", + {} + ] + ], "payment-request/payment-request-constructor-crash.https.html": [ [ "/payment-request/payment-request-constructor-crash.https.html", @@ -149831,6 +150434,12 @@ {} ] ], + "performance-timeline/worker-with-performance-observer.html": [ + [ + "/performance-timeline/worker-with-performance-observer.html", + {} + ] + ], "pointerevents/extension/idlharness.html": [ [ "/pointerevents/extension/idlharness.html", @@ -162405,6 +163014,12 @@ {} ] ], + "web-share/share-empty.https.html": [ + [ + "/web-share/share-empty.https.html", + {} + ] + ], "web-share/share-securecontext.http.html": [ [ "/web-share/share-securecontext.http.html", @@ -163149,6 +163764,12 @@ {} ] ], + "webrtc/RTCConfiguration-bundlePolicy.html": [ + [ + "/webrtc/RTCConfiguration-bundlePolicy.html", + {} + ] + ], "webrtc/RTCConfiguration-iceCandidatePoolSize.html": [ [ "/webrtc/RTCConfiguration-iceCandidatePoolSize.html", @@ -163245,6 +163866,12 @@ {} ] ], + "webrtc/RTCPeerConnection-getDefaultIceServers.html": [ + [ + "/webrtc/RTCPeerConnection-getDefaultIceServers.html", + {} + ] + ], "webrtc/RTCPeerConnection-getTransceivers.html": [ [ "/webrtc/RTCPeerConnection-getTransceivers.html", @@ -163311,6 +163938,12 @@ {} ] ], + "webrtc/RTCRtpTransceiver-setDirection.html": [ + [ + "/webrtc/RTCRtpTransceiver-setDirection.html", + {} + ] + ], "webrtc/RTCSctpTransport-constructor.html": [ [ "/webrtc/RTCSctpTransport-constructor.html", @@ -177746,32 +178379,20 @@ "167c7c1f53ae2bf457f6b3f917f0ef988c585c7c", "testharness" ], - "WebIDL/ecmascript-binding/es-exceptions/DOMException-constants.html": [ - "9ae0ceb48cac77c8470b114576ab17c2e7c1a88c", + "WebIDL/ecmascript-binding/es-exceptions/DOMException-constants.any.js": [ + "34432979f039c4e1ba4eb90d4f2acc96d1d441d8", "testharness" ], - "WebIDL/ecmascript-binding/es-exceptions/DOMException-constructor-expected.txt": [ - "911eb6c33539be782926705760d10c58ea540f16", - "support" - ], - "WebIDL/ecmascript-binding/es-exceptions/DOMException-constructor.html": [ - "24f79517a695477aa4af4b1005ff24977fe44b72", + "WebIDL/ecmascript-binding/es-exceptions/DOMException-constructor-and-prototype.any.js": [ + "7fc6412ffa2a2586e5ea2dca7f5cdafba38c7585", "testharness" ], - "WebIDL/ecmascript-binding/es-exceptions/constructor-object-expected.txt": [ - "7f0da6ca4e04455ec18cccdbb75520f19b74aa15", - "support" - ], - "WebIDL/ecmascript-binding/es-exceptions/constructor-object.html": [ - "480d5c2f21d8f18e5231e8293cf44d1050b9106a", + "WebIDL/ecmascript-binding/es-exceptions/DOMException-constructor-behavior.any.js": [ + "d297d4c52ecf1667cb79ddb076260f9005ee5df4", "testharness" ], - "WebIDL/ecmascript-binding/es-exceptions/constructor-object.js": [ - "3d637243f719e2df7ecc9af4e44522e746f38ab7", - "support" - ], - "WebIDL/ecmascript-binding/es-exceptions/constructor-object.worker.js": [ - "b986594f41fc9df68ee2d3a3aaccae51bf7dd3e9", + "WebIDL/ecmascript-binding/es-exceptions/DOMException-custom-bindings.any.js": [ + "f20cbaff1efb774748241b90778a0964f5671fee", "testharness" ], "WebIDL/ecmascript-binding/es-exceptions/exceptions-expected.txt": [ @@ -177779,7 +178400,7 @@ "support" ], "WebIDL/ecmascript-binding/es-exceptions/exceptions.html": [ - "15537c428eeb22a3addb13497ff02181666a1de1", + "fc4d6cf93ff64192ee325d7309ac267cf8ff5d6c", "testharness" ], "WebIDL/ecmascript-binding/has-instance.html": [ @@ -177802,6 +178423,14 @@ "4eac8c853a0627577d2bd96ed76c45bd187a5734", "testharness" ], + "WebIDL/ecmascript-binding/legacy-platform-object-expected.txt": [ + "6590f7ecb08504332e418020ebd7543630c72a1e", + "support" + ], + "WebIDL/ecmascript-binding/legacy-platform-object.html": [ + "952b388d06c804b0a145fba585aa81dc533ff0c2", + "testharness" + ], "WebIDL/ecmascript-binding/put-forwards.html": [ "95fcfc28dae32ab9aadf21d2512a519d6a9fd5ab", "testharness" @@ -179354,18 +179983,46 @@ "5d4d8278b1f24798765974c35777f70fcbfc9cfa", "testharness" ], - "clear-site-data/navigation.html": [ - "daf340429ca71997c7d9c6021354522f0285c4d1", + "clear-site-data/navigation-insecure.html": [ + "4e1b422168f236cff16fd2a03b8baad179be1836", + "testharness" + ], + "clear-site-data/navigation.https.html": [ + "d984555fcc5e26f7647c816a5b37bd9370d1dcfb", "testharness" ], "clear-site-data/support/echo-clear-site-data.py": [ - "d8768caed378b9a3eadeb7a566bcd099f6c2e9de", + "87087d99371d829cd627224379d2970602a434aa", "support" ], "clear-site-data/support/test_utils.js": [ - "6980ed5592440f13bccbd83afdf6c6aa0b55e2f2", + "c48c8340e1360e9203a8b5f865d0816298ec71ea", "support" ], + "clipboard-apis/async-interfaces.https.html": [ + "68a1ea255a72e54e6a2147797d4213914a79aece", + "testharness" + ], + "clipboard-apis/async-navigator-clipboard-basics.https.html": [ + "59f25a9968d47079857989146e26562c3784be34", + "testharness" + ], + "clipboard-apis/async-write-dttext-read-dttext-manual.https.html": [ + "7b2a4d7f1e1e918f8a96694f6619875b746d0255", + "manual" + ], + "clipboard-apis/async-write-dttext-read-text-manual.https.html": [ + "d0fbfc54f1d1a68aaf5a2b96e25101dfe9aec883", + "manual" + ], + "clipboard-apis/async-write-text-read-dttext-manual.https.html": [ + "4b0df740f9f8fa6f3831b1255dde491b83e3ef6c", + "manual" + ], + "clipboard-apis/async-write-text-read-text-manual.https.html": [ + "e69933ca4cdc42105d469b7ffb105aa60a8e0875", + "manual" + ], "common/PrefixedLocalStorage.js": [ "0516e849d40a16e82e1bb800372df28ed802aa8d", "support" @@ -182430,6 +183087,94 @@ "03aff62fc21832b44d9de15805232d87d0089ed3", "reftest" ], + "css-paint-api/geometry-background-image-001-ref.html": [ + "bca138ca3ce5b6dee10f935fd2ff9756d18b12ef", + "support" + ], + "css-paint-api/geometry-background-image-001.html": [ + "a1f6d2148bfcdb68e4ca437b396b0ccbada101a9", + "reftest" + ], + "css-paint-api/geometry-background-image-002-ref.html": [ + "4d33168e6298c1ed7d44ff431791615cdaf9038f", + "support" + ], + "css-paint-api/geometry-background-image-002.html": [ + "f48a940cfc7b3654ee92b655330ae30af5315e17", + "reftest" + ], + "css-paint-api/geometry-background-image-003-ref.html": [ + "e5b4098a1f1b9aab0a27c7bdae0532db4dc26a92", + "support" + ], + "css-paint-api/geometry-background-image-003.html": [ + "98eac1f4d92084ebee4c26d87706bc394d8d5a79", + "reftest" + ], + "css-paint-api/geometry-background-image-tiled-001-ref.html": [ + "df994fa58244f5e8d4b4aac7f0ad335fe8570dcc", + "support" + ], + "css-paint-api/geometry-background-image-tiled-001.html": [ + "f89e6c4f164c10a64037a3feefd915d760a99765", + "reftest" + ], + "css-paint-api/geometry-background-image-tiled-002-ref.html": [ + "c5363f4f7843ff8025ae5457524c0c9f4aac144c", + "support" + ], + "css-paint-api/geometry-background-image-tiled-002.html": [ + "051788b53366cffcc10debdf2d678d50bffd1f54", + "reftest" + ], + "css-paint-api/geometry-background-image-tiled-003-ref.html": [ + "d4f9428be3b8f9003eb9373b3eb87ebed0c55c15", + "support" + ], + "css-paint-api/geometry-background-image-tiled-003.html": [ + "29141ae2c9c87237ed3406dd43c6b3a7a1a5aa36", + "reftest" + ], + "css-paint-api/geometry-border-image-001-ref.html": [ + "81026e756ea8e3be653e176c09f1762507915cb8", + "support" + ], + "css-paint-api/geometry-border-image-001.html": [ + "d8f948af1254c810496739e4c7cc570ba96cf64f", + "reftest" + ], + "css-paint-api/geometry-border-image-002-ref.html": [ + "076c1f3e3b5cfd3a434e94f33872f5f598a7225b", + "support" + ], + "css-paint-api/geometry-border-image-002.html": [ + "57b518eb310db31c40f0db37637b0f8199ee9734", + "reftest" + ], + "css-paint-api/geometry-border-image-003-ref.html": [ + "141bf94dcd935420b95ee4da52139bf51318196d", + "support" + ], + "css-paint-api/geometry-border-image-003.html": [ + "9d01df8817d9e5beb27d3439789cbe914c418b2c", + "reftest" + ], + "css-paint-api/geometry-border-image-004-ref.html": [ + "d730b44bd1020305b70da095a15f9a4f7e9f262a", + "support" + ], + "css-paint-api/geometry-border-image-004.html": [ + "368a9d855ffc46457e6c54cddfbc934e92096ee0", + "reftest" + ], + "css-paint-api/geometry-border-image-005-ref.html": [ + "b401ed261976a4acd2408a84fda9d63d27d1c3a4", + "support" + ], + "css-paint-api/geometry-border-image-005.html": [ + "a2d9214ac53508c5e551547be9beb953be7ab141", + "reftest" + ], "css-paint-api/invalid-image-constructor-error-ref.html": [ "b0c34ee1480fe1108fe8dc53f2bbb2f3ffa1c408", "support" @@ -182542,6 +183287,114 @@ "f840916bab6d10cff1b08d1cfaecee97699d80cb", "reftest" ], + "css-paint-api/paint2d-zoom-ref.html": [ + "37354f2479a070eadd2a571ff6207953cad3597d", + "support" + ], + "css-paint-api/paint2d-zoom.html": [ + "4d790b6ab70a3a80dc11a08677ea2a1f1cfbadf6", + "reftest" + ], + "css-paint-api/parse-input-arguments-001.html": [ + "0ba1a9978d295825784a2909447e565701e6fc09", + "reftest" + ], + "css-paint-api/parse-input-arguments-002.html": [ + "d35b4e39d8b0f54935571ee62fe7255e93c917dd", + "reftest" + ], + "css-paint-api/parse-input-arguments-003.html": [ + "f6c8cb6feba2b14349bc3fa3170b278e698df526", + "reftest" + ], + "css-paint-api/parse-input-arguments-004.html": [ + "1dd64759c041d9633ce04add066f4e1573fd05e5", + "reftest" + ], + "css-paint-api/parse-input-arguments-005.html": [ + "25d32d33e5de6d289d0e8c776876cb66f03e7c2e", + "reftest" + ], + "css-paint-api/parse-input-arguments-006.html": [ + "effa515567b0212403d83588c335d8fc72c056f6", + "reftest" + ], + "css-paint-api/parse-input-arguments-007.html": [ + "f2f837e7c82462f17d9ebb1a8ab5346e5b8c945c", + "reftest" + ], + "css-paint-api/parse-input-arguments-008.html": [ + "60034209a8984ac0be807494fc4373329d3792eb", + "reftest" + ], + "css-paint-api/parse-input-arguments-009.html": [ + "d57e2370218d385a02e2021219869b5dec0e45c4", + "reftest" + ], + "css-paint-api/parse-input-arguments-010.html": [ + "9d4ef380f3596a73ea7816d13b3913b541ec05b9", + "reftest" + ], + "css-paint-api/parse-input-arguments-011.html": [ + "15edc8fc44d339514911566fe7cf07ec899cf04a", + "reftest" + ], + "css-paint-api/parse-input-arguments-012.html": [ + "0cc064f143a0b1bed6b6e3b79f9a95754eb60ea3", + "reftest" + ], + "css-paint-api/parse-input-arguments-013.html": [ + "e4a99687b156723308ed27a9e863754cb6dcdbd2", + "reftest" + ], + "css-paint-api/parse-input-arguments-014.html": [ + "c10d44a53a00e6a9745d6ea1c359298723a0aee1", + "reftest" + ], + "css-paint-api/parse-input-arguments-015.html": [ + "a78c728b67af31e47c8d46e60e33ba437769a020", + "reftest" + ], + "css-paint-api/parse-input-arguments-016.html": [ + "e06d4a98a350f1cd2ba3bacf132f1ada83f750c1", + "reftest" + ], + "css-paint-api/parse-input-arguments-017.html": [ + "6a16052f0435cc615447b548c598a6da5ce7d49b", + "reftest" + ], + "css-paint-api/parse-input-arguments-ref.html": [ + "6133bd65ef569456f58f1e501d81e088256bdc0a", + "support" + ], + "css-paint-api/registered-properties-in-custom-paint.html": [ + "3855c8c28ea3a24bade81080f3f288ef75243dce", + "reftest" + ], + "css-paint-api/style-background-image-ref.html": [ + "0985e20363c8aac715c534ad59f1209889244fb0", + "support" + ], + "css-paint-api/style-background-image.html": [ + "a3202db04922cc2527436fa319ea9e8432eecdcd", + "reftest" + ], + "css-paint-api/style-before-pseudo-ref.html": [ + "6dcbe78ab89343178e18e3e92744b25759ec8241", + "support" + ], + "css-paint-api/style-before-pseudo.html": [ + "7808e4e86a0556202a0e2ea5574d60c94bf2c537", + "reftest" + ], + "css-paint-api/style-first-letter-pseudo-ref.html": [ + "c6a94e5bafa098b8f4023312db97abebe992abc3", + "support" + ], + "css-paint-api/style-first-letter-pseudo.html": [ + "034cc6ebdf18ea4d346a2a363be69eb8added8e7", + "reftest" + ], "css-paint-api/valid-image-after-load-ref.html": [ "b0c34ee1480fe1108fe8dc53f2bbb2f3ffa1c408", "support" @@ -200182,6 +201035,14 @@ "5b9a1a29084f46228749c1b2b1a664be3ce02c43", "testharness" ], + "css/css-position-3/position-sticky-grid-ref.html": [ + "9748c25d3db9b5ec2753ff53ceb0b82db9453cdc", + "support" + ], + "css/css-position-3/position-sticky-grid.html": [ + "a06a40f39b4a748c111dc01281261c5451204f95", + "reftest" + ], "css/css-position-3/position-sticky-left-ref.html": [ "9de7a8ba6019395d729b32e514cc3bd9fee25d2b", "support" @@ -215130,10 +215991,6 @@ "35d9a1d1a7f655b55d94d0b409e9562a3fd08db5", "testharness" ], - "css/geometry-1/historical-expected.txt": [ - "8511b6d1ffa140cd38cd68cd756c3d7b5e9afda5", - "support" - ], "css/geometry-1/historical.html": [ "f3462b981784755425a82ba050850ef8d3d36976", "testharness" @@ -217822,10 +218679,6 @@ "7118495560adadebcca98e6add47a74669f87788", "testharness" ], - "cssom-view/cssom-getBoundingClientRect-002-expected.txt": [ - "3a77f2a2a04d37ae64ca7c4fb1a47534faa8bdee", - "support" - ], "cssom-view/cssom-getBoundingClientRect-002.html": [ "8dfaa313b4abad30281d07ce22ac06a61754cc06", "testharness" @@ -218847,7 +219700,7 @@ "testharness" ], "dom/collections/HTMLCollection-supported-property-indices-expected.txt": [ - "f13683da962c681b75b4d33fee384ab7580a0846", + "4fd8dc6c2e84f32bb94460a4e38b9854262ea66b", "support" ], "dom/collections/HTMLCollection-supported-property-indices.html": [ @@ -219050,6 +219903,10 @@ "85dea0178b16b5c3e8ddbfa9a8b4bd8424bc0a3d", "testharness" ], + "dom/events/EventTarget-constructible.any.js": [ + "cd6977c89454651d094f8679c71b5ba512dd687f", + "testharness" + ], "dom/events/EventTarget-dispatchEvent-returnvalue.html": [ "70fedeb118930fdc57292ce5f2bfe621f63c2563", "testharness" @@ -219075,7 +219932,7 @@ "testharness" ], "dom/interfaces.html": [ - "f8eb7f5fcfdc9ca4a500d5e43855a24a169c81cf", + "aae8f328bc52cbb17f47f78ace6d20c25a9c3acc", "testharness" ], "dom/lists/DOMTokenList-Iterable.html": [ @@ -219563,7 +220420,7 @@ "testharness" ], "dom/nodes/Document-getElementsByTagName-expected.txt": [ - "a7e42a7152761f5974f193d2f390822cd0fc1838", + "e184b2d38e6ee7b78316115879b057b3db515117", "support" ], "dom/nodes/Document-getElementsByTagName-xhtml.xhtml": [ @@ -219723,7 +220580,7 @@ "testharness" ], "dom/nodes/Element-getElementsByTagName-expected.txt": [ - "838fa4636275a4656766c3c68f73457c39c34d4b", + "96af851083113bfd7dc2267dd9c4c99377fe746b", "support" ], "dom/nodes/Element-getElementsByTagName.html": [ @@ -224203,7 +225060,7 @@ "testharness" ], "hr-time/idlharness.html": [ - "b56993b32650d40226e08beee147bc28c76cfa22", + "2f10557869a4841ec9d826906d542109f606df43", "testharness" ], "hr-time/monotonic-clock.any.js": [ @@ -224218,6 +225075,10 @@ "289c39cd0c74f3ca28fe5087b75ef01135396594", "testharness" ], + "hr-time/timing-attack.html": [ + "1d3d88e71fb886374b50c6dc2c1141a80c8c0a06", + "testharness" + ], "hr-time/window-worker-time-origin.html": [ "556079c9d81c55df55c69738384991d31cad2c77", "testharness" @@ -226555,11 +227416,11 @@ "testharness" ], "html/browsers/the-window-object/window-indexed-properties-expected.txt": [ - "993d4ee44994a8a0d06d354abe3aa596946dd72a", + "56b31c55fc865b08b89c82207990ea00e1b45240", "support" ], "html/browsers/the-window-object/window-indexed-properties-strict-expected.txt": [ - "624baff00a9efae0597ae657ed81dfd2403248d4", + "afb98a47953d8fec2b1fe4e11647cd826192ec9a", "support" ], "html/browsers/the-window-object/window-indexed-properties-strict.html": [ @@ -228663,7 +229524,7 @@ "support" ], "html/dom/interfaces-expected.txt": [ - "f3a223067481ba42ffbbf26aa314da421b787ab5", + "f49e7e627e4802214f110a1a838b17385a8198b2", "support" ], "html/dom/interfaces.html": [ @@ -234386,10 +235247,6 @@ "075014da26e3a5571feb7af16656f83aa0d5df1f", "testharness" ], - "html/semantics/embedded-content/media-elements/interfaces/TextTrackCueList/getter-expected.txt": [ - "85045b646926dc16ac2bf42d0d93d27365c7d483", - "support" - ], "html/semantics/embedded-content/media-elements/interfaces/TextTrackCueList/getter.html": [ "119472b70b588c3032529a7959e6b3e3ef8fcb88", "testharness" @@ -234402,10 +235259,6 @@ "cb76121ffc7f6d4a8cb434c375468742007e0673", "testharness" ], - "html/semantics/embedded-content/media-elements/interfaces/TextTrackList/getter-expected.txt": [ - "e1ceedeec4428cbcdfcf5fa1d4aa1cbd171e7ae4", - "support" - ], "html/semantics/embedded-content/media-elements/interfaces/TextTrackList/getter.html": [ "38f55a09a5d33c2e46e5ff2c60dd5d7c7b73ca37", "testharness" @@ -236762,8 +237615,16 @@ "5d5e954fd50f3d474e69875d11e03ade7c80d7cd", "testharness" ], - "html/semantics/scripting-1/the-script-element/load-event.html": [ - "e702aa5d09183d147850f61503d2e18f78a0a660", + "html/semantics/scripting-1/the-script-element/load-error-events-1.html": [ + "f97f03f6a6e73665eb2f5c4c61801f432f75a59d", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/load-error-events-2.html": [ + "a20dbe60fad2827bc97fb647c3a29ec1c54cfd0c", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/load-error-events-3.html": [ + "a2dd0a60944fb8785493a50ad802f7793355a385", "testharness" ], "html/semantics/scripting-1/the-script-element/log.py": [ @@ -237058,6 +237919,14 @@ "2fd8c4ee6fcc66a8ddc2100a0840ebcc324a7d58", "testharness" ], + "html/semantics/scripting-1/the-script-element/module/load-error-events-inline.html": [ + "9b35d8d7ba6bb4826274c9570056cc962660d715", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/module/load-error-events.html": [ + "304dc3a7e9cd48699742b0a1431adda1d0f253c0", + "testharness" + ], "html/semantics/scripting-1/the-script-element/module/missing-export-nested.js": [ "5c6c1dae178b88b42ce87964e372f7d7db99ba70", "support" @@ -237214,10 +238083,22 @@ "5797045ac8591d2662a6714367ae5fb257881793", "support" ], + "html/semantics/scripting-1/the-script-element/resources/load-error-events-helpers.js": [ + "57a043fff23635ce04b62672429b6abb088cdb9b", + "support" + ], + "html/semantics/scripting-1/the-script-element/resources/load-error-events.py": [ + "0a9007a17bed4635d7f384d3a32a6d2dff11738c", + "support" + ], "html/semantics/scripting-1/the-script-element/resources/set-script-executed.js": [ "87f80eee703965c88f2bf7015bfa76233d459d06", "support" ], + "html/semantics/scripting-1/the-script-element/resources/slow.py": [ + "200bd721dadd0eb50d0b7734b17a081505697cc9", + "support" + ], "html/semantics/scripting-1/the-script-element/script-charset-01-expected.txt": [ "89ed2800022ff8f95d94bd1f5035de488b8c75f1", "support" @@ -239175,7 +240056,7 @@ "manual" ], "html/webappapis/scripting/events/event-handler-all-global-events-expected.txt": [ - "5c8a11538bc70d93f3a7f4cbd33710bac3a34bc0", + "4f354373460dfe647b47cf902259e84a4d3da481", "support" ], "html/webappapis/scripting/events/event-handler-all-global-events.html": [ @@ -240094,6 +240975,10 @@ "f94325d74e69fbd62bfdff3c0f4676a3d2c50d09", "manual" ], + "interfaces/clipboard.idl": [ + "5af2846c7f9ff93f2f4f13780d0356cdac6a0d4f", + "support" + ], "interfaces/cssom.idl": [ "bb17bbe93776dbeb33f061a7a90889e922e3138e", "support" @@ -240103,7 +240988,7 @@ "support" ], "interfaces/dom.idl": [ - "86f2e15d4b32af7b5127283eb3cfab5a78b46c0a", + "2b94c6332d8535bbcfd605bc3ed46ba6f705de62", "support" ], "interfaces/fullscreen.idl": [ @@ -240135,7 +241020,7 @@ "support" ], "interfaces/web-share.idl": [ - "0f43a814700a62e8f5ea54056ae901e1bdb3a610", + "d3ab33fa078f1b3bd4b29e174369073aab3963d5", "support" ], "interfaces/webrtc-pc.idl": [ @@ -242863,7 +243748,7 @@ "support" ], "navigation-timing/nav2_idlharness.html": [ - "6931ae3947e9f6553890c4c7895b774faad02102", + "ffc5d6f4a11a4bf2ad72404fc62d88be1c45a5f5", "testharness" ], "navigation-timing/nav2_test_attributes_exist.html": [ @@ -242971,7 +243856,7 @@ "support" ], "navigation-timing/resources/webperftestharness.js": [ - "670154a84de50de0c6b310edfeb23a1f3d0d72d1", + "c149cde434fc6e82e9e50936308ec0ad9b3c2997", "support" ], "navigation-timing/test_document_open.html": [ @@ -249351,7 +250236,11 @@ "support" ], "page-visibility/idlharness.html": [ - "6bbcc548a783a56340aa256e5f51ca51c1b3f4d3", + "d6d16a7aed48659afaf14acd5e21271a8ce8cec0", + "testharness" + ], + "page-visibility/iframe-unload.html": [ + "b97bb09efe6a8e410f6bfd71dc92f041d1b980bf", "testharness" ], "page-visibility/prerender_call-expected.txt": [ @@ -249366,8 +250255,12 @@ "2d6d55d85e17a9fe978db6dbe25ae35a599d5683", "support" ], + "page-visibility/resources/iframe-with-subframes.html": [ + "17615ac4c33fd7f2e49c3b5357de3b976eb2963b", + "support" + ], "page-visibility/resources/pagevistestharness.js": [ - "63604473eabaa8d3b9b410a1a0087d9b4b2e7b90", + "1c77f9af66e2d39e97056273c35197827f03bb06", "support" ], "page-visibility/resources/prerender_target.html": [ @@ -249443,7 +250336,7 @@ "testharness" ], "payment-request/allowpaymentrequest/removing-allowpaymentrequest.https.sub.html": [ - "9452392f0dc2b4feb4ee87f09952819998b9e39c", + "41265b7c3d0e8d4c8f462f957627139f8aa5a3a3", "testharness" ], "payment-request/allowpaymentrequest/setting-allowpaymentrequest-timing.https.sub-expected.txt": [ @@ -249451,11 +250344,11 @@ "support" ], "payment-request/allowpaymentrequest/setting-allowpaymentrequest-timing.https.sub.html": [ - "b8c0121e830a6b2c8897d98ee8cbd381802d4735", + "5eb37c0c6ad39187c4505a8cbe113c4b68e51c92", "testharness" ], "payment-request/allowpaymentrequest/setting-allowpaymentrequest.https.sub.html": [ - "6e4028440fff617d6a0e9abb06625891eb53b28a", + "e5be539c1b0ca1c571df1fc979fde5bf6482b43d", "testharness" ], "payment-request/historical.https.html": [ @@ -249502,9 +250395,9 @@ "c9ee5af2ccd5ad364090807c8427f1d4624d3747", "testharness" ], - "payment-request/payment-request-canmakepayment-method.https.http": [ + "payment-request/payment-request-canmakepayment-method.https.html": [ "b20131bc3f2717212f9940920183d650ee111333", - "support" + "testharness" ], "payment-request/payment-request-constructor-crash.https.html": [ "dd2f95bd4d94a819c507e942b19a60de05a16971", @@ -249567,7 +250460,7 @@ "testharness" ], "performance-timeline/idlharness.html": [ - "14c5244fdb2af22bdad8b5333d2dd5b9696a9e49", + "b021a9528875942d44b33c3fc3f4cd643194fad5", "testharness" ], "performance-timeline/performanceobservers.js": [ @@ -249610,6 +250503,18 @@ "f2f3c2b3cef895f514f595932b767299cd6dade0", "support" ], + "performance-timeline/resources/worker-with-performance-observer.js": [ + "6536127a1136f45cd59f62a9851fe61ceabe3d5b", + "support" + ], + "performance-timeline/worker-with-performance-observer-expected.txt": [ + "0956fee8c746137cf4a2bbf3d247ee424ba7c42e", + "support" + ], + "performance-timeline/worker-with-performance-observer.html": [ + "dc978fd8669d67118109fcab245010fdd7d799b0", + "testharness" + ], "pointerevents/OWNERS": [ "a4fed30c25d50d5ce774e4e5b431efa99f73ecf3", "support" @@ -257839,7 +258744,7 @@ "support" ], "resource-timing/idlharness.html": [ - "c2582fcd7d9cf40d10d86589c341789ba94a68bd", + "60e2a57792827713ffd1176a0793da97c1ccf599", "testharness" ], "resource-timing/iframe-setdomain.sub.html": [ @@ -262639,7 +263544,7 @@ "testharness" ], "url/urlsearchparams-delete.html": [ - "eaeaab453fb90ba939c4dca0db11a07d50acce26", + "b1fcda755e2a9e3308a222fe213abf0a255f0777", "testharness" ], "url/urlsearchparams-foreach-expected.txt": [ @@ -263374,9 +264279,9 @@ "b4dcc0ac05c2a14907d55058f7d51190842fe0d3", "manual" ], - "web-share/share-empty-manual.html": [ - "0a465dc66c930601d611ea3cfef0a271b6cc0b0a", - "manual" + "web-share/share-empty.https.html": [ + "aa25dc3fef3c62d9b128866a2c48df204bfaa548", + "testharness" ], "web-share/share-extra-argument-manual.html": [ "d0d2e67e49c16b874e5c5cbe4d1c6920b6b70a17", @@ -263439,7 +264344,7 @@ "manual" ], "web-share/share-without-user-gesture.https.html": [ - "aaa84c716125c6332b3a5c114a97d5986af38c37", + "d883b2469759722cf76c4624a1a81908c9aa5ae0", "testharness" ], "webaudio/.gitignore": [ @@ -264126,6 +265031,10 @@ "76e0c5f601c8ba4aefb06d1ebab8454c78fe07df", "testharness" ], + "webrtc/RTCConfiguration-bundlePolicy.html": [ + "260ead036b3f4facd720dafbcaaa11040c145228", + "testharness" + ], "webrtc/RTCConfiguration-iceCandidatePoolSize-expected.txt": [ "a3c6a87b158deb84be0f56e8467b1f9bf16aba71", "support" @@ -264207,7 +265116,7 @@ "support" ], "webrtc/RTCPeerConnection-constructor.html": [ - "60e9ec4bec3e3d3b785568be8cf089c959e71813", + "785610c964c8ed95a3b4f65c68a2612c2442145a", "testharness" ], "webrtc/RTCPeerConnection-createAnswer-expected.txt": [ @@ -264238,6 +265147,10 @@ "27fb46922255203da0fc26a63808aeb98a60b640", "testharness" ], + "webrtc/RTCPeerConnection-getDefaultIceServers.html": [ + "3b8f625e068cfd6ec3fe80bab276b2216fa8eda5", + "testharness" + ], "webrtc/RTCPeerConnection-getTransceivers-expected.txt": [ "c2256fadf711bf5daa8ee81af75c269e15e7c34d", "support" @@ -264267,7 +265180,7 @@ "testharness" ], "webrtc/RTCPeerConnection-idl-expected.txt": [ - "a8578ee98585cababd679ff4569850e81bf439ee", + "b0a742082027191a583c2982b3245cb18fa3aaad", "support" ], "webrtc/RTCPeerConnection-idl.html": [ @@ -264318,6 +265231,10 @@ "9e8eca4fa11cc72471bc48d98bec8e5936111334", "testharness" ], + "webrtc/RTCRtpTransceiver-setDirection.html": [ + "539eaba516eef7419c5e543d7218a41f850f5e7b", + "testharness" + ], "webrtc/RTCSctpTransport-constructor-expected.txt": [ "b3ab3dc6b944a3273263ffb739fbb0b7c37ce8d2", "support" @@ -264351,7 +265268,7 @@ "testharness" ], "webrtc/interfaces-expected.txt": [ - "9fb4c9aa96921b2099227fe2294c0c7799bb1ebb", + "24a06be7ff2b7bcbf6bd857dc91f39ec5869206d", "support" ], "webrtc/interfaces.html": [ @@ -265611,7 +266528,7 @@ "support" ], "webusb/resources/usb-helpers.js": [ - "41af64a414c353777e67eb9b57d08fd96a6fa88c", + "164413453b70ea42f885481cc3ed839a4314527e", "support" ], "webusb/usb-allowed-by-feature-policy-attribute-redirect-on-load.https.sub.html": [ @@ -265667,7 +266584,7 @@ "testharness" ], "webusb/usbIsochronousInTransferResult.https.html": [ - "bf85d36769b9f52c0d8f69027875199669eb64e0", + "131e36c8782adf4c02198b1905d233159295d5aa", "testharness" ], "webusb/usbIsochronousOutTransferPacket.https.html": [
diff --git a/third_party/WebKit/LayoutTests/external/wpt/WebIDL/ecmascript-binding/es-exceptions/DOMException-constants.html b/third_party/WebKit/LayoutTests/external/wpt/WebIDL/ecmascript-binding/es-exceptions/DOMException-constants.any.js similarity index 66% rename from third_party/WebKit/LayoutTests/external/wpt/WebIDL/ecmascript-binding/es-exceptions/DOMException-constants.html rename to third_party/WebKit/LayoutTests/external/wpt/WebIDL/ecmascript-binding/es-exceptions/DOMException-constants.any.js index 450b4b3..bb846a4 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/WebIDL/ecmascript-binding/es-exceptions/DOMException-constants.html +++ b/third_party/WebKit/LayoutTests/external/wpt/WebIDL/ecmascript-binding/es-exceptions/DOMException-constants.any.js
@@ -1,12 +1,5 @@ -<!doctype html> -<meta charset=utf-8> -<title>DOMException constants</title> -<link rel=help href="https://heycam.github.io/webidl/#es-DOMException-constructor-object"> -<link rel=help href="https://heycam.github.io/webidl/#es-DOMException-prototype-object"> -<script src="/resources/testharness.js"></script> -<script src="/resources/testharnessreport.js"></script> -<div id="log"></div> -<script> +'use strict'; + test(function() { // https://www.w3.org/Bugs/Public/show_bug.cgi?id=27732 var constants = [ @@ -47,13 +40,12 @@ assert_equals(object[name], i + 1, name) assert_own_property(object, name) var pd = Object.getOwnPropertyDescriptor(object, name) - assert_false("get" in pd, "property has getter") - assert_false("set" in pd, "property has setter") - assert_false(pd.writable, "not writable") + assert_false("get" in pd, "get") + assert_false("set" in pd, "set") + assert_false(pd.writable, "writable") assert_true(pd.enumerable, "enumerable") - assert_false(pd.configurable, "not configurable") + assert_false(pd.configurable, "configurable") }, "Constant " + name + " on " + description) }) }) }) -</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/WebIDL/ecmascript-binding/es-exceptions/DOMException-constructor-and-prototype.any.js b/third_party/WebKit/LayoutTests/external/wpt/WebIDL/ecmascript-binding/es-exceptions/DOMException-constructor-and-prototype.any.js new file mode 100644 index 0000000..a015470 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/WebIDL/ecmascript-binding/es-exceptions/DOMException-constructor-and-prototype.any.js
@@ -0,0 +1,32 @@ +test(function() { + assert_own_property(self, "DOMException", "property of global"); + + var desc = Object.getOwnPropertyDescriptor(self, "DOMException"); + assert_false("get" in desc, "get"); + assert_false("set" in desc, "set"); + assert_true(desc.writable, "writable"); + assert_false(desc.enumerable, "enumerable"); + assert_true(desc.configurable, "configurable"); +}, "existence and property descriptor of DOMException"); + +test(function() { + assert_own_property(self.DOMException, "prototype", "prototype property"); + + var desc = Object.getOwnPropertyDescriptor(self.DOMException, "prototype"); + assert_false("get" in desc, "get"); + assert_false("set" in desc, "set"); + assert_false(desc.writable, "writable"); + assert_false(desc.enumerable, "enumerable"); + assert_false(desc.configurable, "configurable"); +}, "existence and property descriptor of DOMException.prototype"); + +test(function() { + assert_own_property(self.DOMException.prototype, "constructor", "property of prototype"); + var desc = Object.getOwnPropertyDescriptor(self.DOMException.prototype, "constructor"); + assert_false("get" in desc, "get"); + assert_false("set" in desc, "set"); + assert_true(desc.writable, "writable"); + assert_false(desc.enumerable, "enumerable"); + assert_true(desc.configurable, "configurable"); + assert_equals(self.DOMException.prototype.constructor, self.DOMException, "equality with actual constructor"); +}, "existence and property descriptor of DOMException.prototype.constructor");
diff --git a/third_party/WebKit/LayoutTests/external/wpt/WebIDL/ecmascript-binding/es-exceptions/DOMException-constructor.html b/third_party/WebKit/LayoutTests/external/wpt/WebIDL/ecmascript-binding/es-exceptions/DOMException-constructor-behavior.any.js similarity index 75% rename from third_party/WebKit/LayoutTests/external/wpt/WebIDL/ecmascript-binding/es-exceptions/DOMException-constructor.html rename to third_party/WebKit/LayoutTests/external/wpt/WebIDL/ecmascript-binding/es-exceptions/DOMException-constructor-behavior.any.js index 0e5ffea7..d6e1cdd 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/WebIDL/ecmascript-binding/es-exceptions/DOMException-constructor.html +++ b/third_party/WebKit/LayoutTests/external/wpt/WebIDL/ecmascript-binding/es-exceptions/DOMException-constructor-behavior.any.js
@@ -1,13 +1,5 @@ -<!doctype html> -<meta charset=utf-8> -<title>DOMException constructor</title> -<link rel=help href="https://heycam.github.io/webidl/#es-DOMException-constructor-object"> -<link rel=help href="https://people.mozilla.org/~jorendorff/es6-draft.html#sec-error.prototype.message"> -<link rel=help href="https://people.mozilla.org/~jorendorff/es6-draft.html#sec-error.prototype.name"> -<script src="/resources/testharness.js"></script> -<script src="/resources/testharnessreport.js"></script> -<div id="log"></div> -<script> +'use strict'; + test(function() { var ex = new DOMException(); assert_equals(ex.name, "Error", @@ -22,7 +14,7 @@ "The name property should be inherited"); assert_false(ex.hasOwnProperty("message"), "The message property should be inherited"); -}, 'new DOMException(): own-ness'); +}, 'new DOMException(): inherited-ness'); test(function() { var ex = new DOMException(null); @@ -46,7 +38,7 @@ "The name property should be inherited"); assert_false(ex.hasOwnProperty("message"), "The message property should be inherited"); -}, 'new DOMException(undefined): own-ness'); +}, 'new DOMException(undefined): inherited-ness'); test(function() { var ex = new DOMException("foo"); @@ -59,9 +51,9 @@ var ex = new DOMException("foo"); assert_false(ex.hasOwnProperty("name"), "The name property should be inherited"); - assert_true(ex.hasOwnProperty("message"), - "The message property should be own"); -}, 'new DOMException("foo"): own-ness'); + assert_false(ex.hasOwnProperty("message"), + "The message property should be inherited"); +}, 'new DOMException("foo"): inherited-ness'); test(function() { var ex = new DOMException("bar", undefined); @@ -80,11 +72,11 @@ test(function() { var ex = new DOMException("bar", "NotSupportedError"); - assert_true(ex.hasOwnProperty("name"), - "The name property should be own"); - assert_true(ex.hasOwnProperty("message"), - "The message property should be own"); -}, 'new DOMException("bar", "NotSupportedError"): own-ness'); + assert_false(ex.hasOwnProperty("name"), + "The name property should be inherited"); + assert_false(ex.hasOwnProperty("message"), + "The message property should be inherited"); +}, 'new DOMException("bar", "NotSupportedError"): inherited-ness'); test(function() { var ex = new DOMException("bar", "foo"); @@ -127,13 +119,3 @@ "Should have matching legacy code from error names table"); },'new DOMexception("msg", "' + test_case.name + '")'); }); - -test(function() { - var ex = new DOMException("bar", "UnknownError"); - assert_equals(ex.name, "UnknownError", "Should be using the passed-in name"); - assert_equals(ex.message, "bar", "Should still be using passed-in message"); - assert_equals(ex.code, 0, - "Should have 0 for code for a name in the exception names table with no legacy code"); -}, 'new DOMException("bar", "UnknownError")'); - -</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/WebIDL/ecmascript-binding/es-exceptions/DOMException-constructor-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/WebIDL/ecmascript-binding/es-exceptions/DOMException-constructor-expected.txt deleted file mode 100644 index b38cc07..0000000 --- a/third_party/WebKit/LayoutTests/external/wpt/WebIDL/ecmascript-binding/es-exceptions/DOMException-constructor-expected.txt +++ /dev/null
@@ -1,36 +0,0 @@ -This is a testharness.js-based test. -PASS new DOMException() -PASS new DOMException(): own-ness -PASS new DOMException(null) -PASS new DOMException(undefined) -PASS new DOMException(undefined): own-ness -PASS new DOMException("foo") -FAIL new DOMException("foo"): own-ness assert_true: The message property should be own expected true got false -PASS new DOMException("bar", undefined) -PASS new DOMException("bar", "NotSupportedError") -FAIL new DOMException("bar", "NotSupportedError"): own-ness assert_true: The name property should be own expected true got false -PASS new DOMException("bar", "foo") -PASS new DOMexception("msg", "IndexSizeError") -PASS new DOMexception("msg", "HierarchyRequestError") -PASS new DOMexception("msg", "WrongDocumentError") -PASS new DOMexception("msg", "InvalidCharacterError") -PASS new DOMexception("msg", "NoModificationAllowedError") -PASS new DOMexception("msg", "NotFoundError") -PASS new DOMexception("msg", "NotSupportedError") -PASS new DOMexception("msg", "InUseAttributeError") -PASS new DOMexception("msg", "InvalidStateError") -PASS new DOMexception("msg", "SyntaxError") -PASS new DOMexception("msg", "InvalidModificationError") -PASS new DOMexception("msg", "NamespaceError") -PASS new DOMexception("msg", "InvalidAccessError") -PASS new DOMexception("msg", "SecurityError") -PASS new DOMexception("msg", "NetworkError") -PASS new DOMexception("msg", "AbortError") -PASS new DOMexception("msg", "URLMismatchError") -PASS new DOMexception("msg", "QuotaExceededError") -PASS new DOMexception("msg", "TimeoutError") -PASS new DOMexception("msg", "InvalidNodeTypeError") -PASS new DOMexception("msg", "DataCloneError") -PASS new DOMException("bar", "UnknownError") -Harness: the test ran to completion. -
diff --git a/third_party/WebKit/LayoutTests/external/wpt/WebIDL/ecmascript-binding/es-exceptions/DOMException-custom-bindings.any-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/WebIDL/ecmascript-binding/es-exceptions/DOMException-custom-bindings.any-expected.txt new file mode 100644 index 0000000..2a61639 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/WebIDL/ecmascript-binding/es-exceptions/DOMException-custom-bindings.any-expected.txt
@@ -0,0 +1,18 @@ +This is a testharness.js-based test. +PASS Cannot construct without new +PASS inherits from Error: prototype-side +PASS does not inherit from Error: class-side +PASS message property descriptor +PASS message getter performs brand checks (i.e. is not [LenientThis] +PASS name property descriptor +PASS name getter performs brand checks (i.e. is not [LenientThis] +PASS code property descriptor +PASS code getter performs brand checks (i.e. is not [LenientThis] +PASS code property is not affected by shadowing the name property +PASS Object.prototype.toString behavior is like other interfaces +FAIL Inherits its toString() from Error.prototype assert_false: toString must not exist on DOMException.prototype expected false got true +FAIL toString() behavior from Error.prototype applies as expected assert_equals: The default Error.prototype.toString() behavior must work on shadowed names and messages expected "new name: new message" but got "name: message" +PASS DOMException.prototype.toString() applied to DOMException.prototype throws because of name/message brand checks +FAIL If the implementation has a stack property on normal errors, it also does on DOMExceptions assert_equals: The typeof values must match expected "string" but got "undefined" +Harness: the test ran to completion. +
diff --git a/third_party/WebKit/LayoutTests/external/wpt/WebIDL/ecmascript-binding/es-exceptions/DOMException-custom-bindings.any.js b/third_party/WebKit/LayoutTests/external/wpt/WebIDL/ecmascript-binding/es-exceptions/DOMException-custom-bindings.any.js new file mode 100644 index 0000000..8d69c6e --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/WebIDL/ecmascript-binding/es-exceptions/DOMException-custom-bindings.any.js
@@ -0,0 +1,120 @@ +"use strict"; + +test(() => { + assert_throws(new TypeError(), () => DOMException()); +}, "Cannot construct without new"); + +test(() => { + assert_equals(Object.getPrototypeOf(DOMException.prototype), Error.prototype); +}, "inherits from Error: prototype-side"); + +test(() => { + assert_equals(Object.getPrototypeOf(DOMException), Function.prototype); +}, "does not inherit from Error: class-side"); + +test(() => { + const e = new DOMException("message", "name"); + assert_false(e.hasOwnProperty("message"), "property is not own"); + + const propDesc = Object.getOwnPropertyDescriptor(DOMException.prototype, "message"); + assert_equals(typeof propDesc.get, "function", "property descriptor is a getter"); + assert_equals(propDesc.set, undefined, "property descriptor is not a setter"); + assert_true(propDesc.enumerable, "property descriptor enumerable"); + assert_true(propDesc.configurable, "property descriptor configurable"); +}, "message property descriptor"); + +test(() => { + const getter = Object.getOwnPropertyDescriptor(DOMException.prototype, "message").get; + + assert_throws(new TypeError(), () => getter.apply({})); +}, "message getter performs brand checks (i.e. is not [LenientThis]"); + +test(() => { + const e = new DOMException("message", "name"); + assert_false(e.hasOwnProperty("name"), "property is not own"); + + const propDesc = Object.getOwnPropertyDescriptor(DOMException.prototype, "name"); + assert_equals(typeof propDesc.get, "function", "property descriptor is a getter"); + assert_equals(propDesc.set, undefined, "property descriptor is not a setter"); + assert_true(propDesc.enumerable, "property descriptor enumerable"); + assert_true(propDesc.configurable, "property descriptor configurable"); +}, "name property descriptor"); + +test(() => { + const getter = Object.getOwnPropertyDescriptor(DOMException.prototype, "name").get; + + assert_throws(new TypeError(), () => getter.apply({})); +}, "name getter performs brand checks (i.e. is not [LenientThis]"); + +test(() => { + const e = new DOMException("message", "name"); + assert_false(e.hasOwnProperty("code"), "property is not own"); + + const propDesc = Object.getOwnPropertyDescriptor(DOMException.prototype, "code"); + assert_equals(typeof propDesc.get, "function", "property descriptor is a getter"); + assert_equals(propDesc.set, undefined, "property descriptor is not a setter"); + assert_true(propDesc.enumerable, "property descriptor enumerable"); + assert_true(propDesc.configurable, "property descriptor configurable"); +}, "code property descriptor"); + +test(() => { + const getter = Object.getOwnPropertyDescriptor(DOMException.prototype, "code").get; + + assert_throws(new TypeError(), () => getter.apply({})); +}, "code getter performs brand checks (i.e. is not [LenientThis]"); + +test(() => { + const e = new DOMException("message", "InvalidCharacterError"); + assert_equals(e.code, 5, "Initially the code is set to 5"); + + Object.defineProperty(e, "name", { + value: "WrongDocumentError" + }); + + assert_equals(e.code, 5, "The code is still set to 5"); +}, "code property is not affected by shadowing the name property"); + +test(() => { + const e = new DOMException("message", "name"); + assert_equals(Object.prototype.toString.call(e), "[object DOMException]"); +}, "Object.prototype.toString behavior is like other interfaces"); + +test(() => { + const e = new DOMException("message", "name"); + assert_false(e.hasOwnProperty("toString"), "toString must not exist on the instance"); + assert_false(DOMException.prototype.hasOwnProperty("toString"), "toString must not exist on DOMException.prototype"); + assert_equals(typeof e.toString, "function", "toString must still exist (via Error.prototype)"); +}, "Inherits its toString() from Error.prototype"); + +test(() => { + const e = new DOMException("message", "name"); + assert_equals(e.toString(), "name: message", + "The default Error.prototype.toString() behavior must work on supplied name and message"); + + Object.defineProperty(e, "name", { value: "new name" }); + Object.defineProperty(e, "message", { value: "new message" }); + assert_equals(e.toString(), "new name: new message", + "The default Error.prototype.toString() behavior must work on shadowed names and messages"); +}, "toString() behavior from Error.prototype applies as expected"); + +test(() => { + assert_throws(new TypeError(), () => DOMException.prototype.toString()); +}, "DOMException.prototype.toString() applied to DOMException.prototype throws because of name/message brand checks"); + +test(() => { + let stackOnNormalErrors; + try { + throw new Error("normal error"); + } catch (e) { + stackOnNormalErrors = e.stack; + } + + let stackOnDOMException; + try { + throw new DOMException("message", "name"); + } catch (e) { + stackOnDOMException = e.stack; + } + + assert_equals(typeof stackOnDOMException, typeof stackOnNormalErrors, "The typeof values must match"); +}, "If the implementation has a stack property on normal errors, it also does on DOMExceptions");
diff --git a/third_party/WebKit/LayoutTests/external/wpt/WebIDL/ecmascript-binding/es-exceptions/DOMException-custom-bindings.any.worker-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/WebIDL/ecmascript-binding/es-exceptions/DOMException-custom-bindings.any.worker-expected.txt new file mode 100644 index 0000000..2a61639 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/WebIDL/ecmascript-binding/es-exceptions/DOMException-custom-bindings.any.worker-expected.txt
@@ -0,0 +1,18 @@ +This is a testharness.js-based test. +PASS Cannot construct without new +PASS inherits from Error: prototype-side +PASS does not inherit from Error: class-side +PASS message property descriptor +PASS message getter performs brand checks (i.e. is not [LenientThis] +PASS name property descriptor +PASS name getter performs brand checks (i.e. is not [LenientThis] +PASS code property descriptor +PASS code getter performs brand checks (i.e. is not [LenientThis] +PASS code property is not affected by shadowing the name property +PASS Object.prototype.toString behavior is like other interfaces +FAIL Inherits its toString() from Error.prototype assert_false: toString must not exist on DOMException.prototype expected false got true +FAIL toString() behavior from Error.prototype applies as expected assert_equals: The default Error.prototype.toString() behavior must work on shadowed names and messages expected "new name: new message" but got "name: message" +PASS DOMException.prototype.toString() applied to DOMException.prototype throws because of name/message brand checks +FAIL If the implementation has a stack property on normal errors, it also does on DOMExceptions assert_equals: The typeof values must match expected "string" but got "undefined" +Harness: the test ran to completion. +
diff --git a/third_party/WebKit/LayoutTests/external/wpt/WebIDL/ecmascript-binding/es-exceptions/constructor-object-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/WebIDL/ecmascript-binding/es-exceptions/constructor-object-expected.txt deleted file mode 100644 index 65f0523..0000000 --- a/third_party/WebKit/LayoutTests/external/wpt/WebIDL/ecmascript-binding/es-exceptions/constructor-object-expected.txt +++ /dev/null
@@ -1,7 +0,0 @@ -This is a testharness.js-based test. -FAIL existence and properties of DOMException assert_equals: prototype of self's property "DOMException" is not Error expected function "function Error() { [native code] }" but got function "function () { [native code] }" -FAIL existence and properties of DOMException.prototype assert_equals: class string of DOMException.prototype expected "[object DOMExceptionPrototype]" but got "[object DOMException]" -FAIL existence of name and code properties on DOMException.prototype assert_false: DOMException.prototype should not have an own "name" property. expected false got true -PASS existence and properties of exception interface prototype object's "constructor" property -Harness: the test ran to completion. -
diff --git a/third_party/WebKit/LayoutTests/external/wpt/WebIDL/ecmascript-binding/es-exceptions/constructor-object.html b/third_party/WebKit/LayoutTests/external/wpt/WebIDL/ecmascript-binding/es-exceptions/constructor-object.html deleted file mode 100644 index ddb40f4..0000000 --- a/third_party/WebKit/LayoutTests/external/wpt/WebIDL/ecmascript-binding/es-exceptions/constructor-object.html +++ /dev/null
@@ -1,11 +0,0 @@ -<!doctype html> -<meta charset=utf-8> -<title>DOMException constructor and prototype object</title> -<script src="/resources/testharness.js"></script> -<script src="/resources/testharnessreport.js"></script> -<script src=constructor-object.js></script> -<div id="log"></div> -<script> -setup({ explicit_done: true }) -run_test() -</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/WebIDL/ecmascript-binding/es-exceptions/constructor-object.js b/third_party/WebKit/LayoutTests/external/wpt/WebIDL/ecmascript-binding/es-exceptions/constructor-object.js deleted file mode 100644 index e539d85db..0000000 --- a/third_party/WebKit/LayoutTests/external/wpt/WebIDL/ecmascript-binding/es-exceptions/constructor-object.js +++ /dev/null
@@ -1,111 +0,0 @@ -function run_test() { - test(function() { - // "There MUST exist a property on the ECMAScript global object whose - // name is “DOMException” and value is an object called the - // DOMException constructor object, which provides access to legacy - // DOMException code constants. The property has the attributes - // { [[Writable]]: true, [[Enumerable]]: false, - // [[Configurable]]: true }." - assert_own_property(self, "DOMException", - "self does not have own property \"DOMException\""); - var desc = Object.getOwnPropertyDescriptor(self, "DOMException"); - assert_false("get" in desc, "self's property \"DOMException\" has getter"); - assert_false("set" in desc, "self's property \"DOMException\" has setter"); - assert_true(desc.writable, "self's property \"DOMException\" is not writable"); - assert_false(desc.enumerable, "self's property \"DOMException\" is enumerable"); - assert_true(desc.configurable, "self's property \"DOMException\" is not configurable"); - - // "The DOMException constructor object MUST be a function object but - // with a [[Prototype]] value of %Error% ([ECMA-262], section 6.1.7.4)." - assert_equals(Object.getPrototypeOf(self.DOMException), Error, - "prototype of self's property \"DOMException\" is not Error"); - - // "Its [[Get]] internal property is set as described in ECMA-262 - // section 9.1.8." - // Not much to test for this. - // "Its [[Construct]] internal property is set as described in ECMA-262 - // section 19.2.2.3." - // "Its @@hasInstance property is set as described in ECMA-262 section - // 19.2.3.8, unless otherwise specified." - - // String() returns something implementation-dependent, because it - // calls Function#toString. - assert_class_string(self.DOMException, "Function", - "class string of DOMException"); - - // "For every legacy code listed in the error names table, there MUST - // be a property on the DOMException constructor object whose name and - // value are as indicated in the table. The property has attributes - // { [[Writable]]: false, [[Enumerable]]: true, - // [[Configurable]]: false }." - // See DOMException-constants.html. - }, "existence and properties of DOMException"); - - test(function() { - assert_own_property(self, "DOMException", - "self does not have own property \"DOMException\""); - - // "The DOMException constructor object MUST also have a property named - // “prototype” with attributes { [[Writable]]: false, - // [[Enumerable]]: false, [[Configurable]]: false } whose value is an - // object called the DOMException prototype object. This object also - // provides access to the legacy code values." - assert_own_property(self.DOMException, "prototype", - 'exception "DOMException" does not have own property "prototype"'); - var desc = Object.getOwnPropertyDescriptor(self.DOMException, "prototype"); - assert_false("get" in desc, "DOMException.prototype has getter"); - assert_false("set" in desc, "DOMException.prototype has setter"); - assert_false(desc.writable, "DOMException.prototype is writable"); - assert_false(desc.enumerable, "DOMException.prototype is enumerable"); - assert_false(desc.configurable, "DOMException.prototype is configurable"); - - // "The DOMException prototype object MUST have an internal - // [[Prototype]] property whose value is %ErrorPrototype% ([ECMA-262], - // section 6.1.7.4)." - assert_own_property(self, "Error", - 'should inherit from Error, but self has no such property'); - assert_own_property(self.Error, "prototype", - 'should inherit from Error, but that object has no "prototype" property'); - assert_equals(Object.getPrototypeOf(self.DOMException.prototype), - self.Error.prototype, - 'prototype of DOMException.prototype is not Error.prototype'); - - // "The class string of the DOMException prototype object is - // “DOMExceptionPrototype”." - assert_class_string(self.DOMException.prototype, "DOMExceptionPrototype", - "class string of DOMException.prototype"); - }, "existence and properties of DOMException.prototype"); - - test(function() { - assert_false(self.DOMException.prototype.hasOwnProperty("name"), - "DOMException.prototype should not have an own \"name\" " + - "property."); - assert_false(self.DOMException.prototype.hasOwnProperty("code"), - "DOMException.prototype should not have an own \"name\" " + - "property."); - }, "existence of name and code properties on DOMException.prototype"); - - test(function() { - assert_own_property(self, "DOMException", - "self does not have own property \"DOMException\""); - assert_own_property(self.DOMException, "prototype", - 'interface "DOMException" does not have own property "prototype"'); - - // "There MUST be a property named “constructor” on the DOMException - // prototype object with attributes { [[Writable]]: true, - // [[Enumerable]]: false, [[Configurable]]: true } and whose value is - // the DOMException constructor object." - assert_own_property(self.DOMException.prototype, "constructor", - "DOMException" + '.prototype does not have own property "constructor"'); - var desc = Object.getOwnPropertyDescriptor(self.DOMException.prototype, "constructor"); - assert_false("get" in desc, "DOMException.prototype.constructor has getter"); - assert_false("set" in desc, "DOMException.prototype.constructor has setter"); - assert_true(desc.writable, "DOMException.prototype.constructor is not writable"); - assert_false(desc.enumerable, "DOMException.prototype.constructor is enumerable"); - assert_true(desc.configurable, "DOMException.prototype.constructor in not configurable"); - assert_equals(self.DOMException.prototype.constructor, self.DOMException, - "DOMException.prototype.constructor is not the same object as DOMException"); - }, "existence and properties of exception interface prototype object's \"constructor\" property"); - - done(); -}
diff --git a/third_party/WebKit/LayoutTests/external/wpt/WebIDL/ecmascript-binding/es-exceptions/constructor-object.worker.js b/third_party/WebKit/LayoutTests/external/wpt/WebIDL/ecmascript-binding/es-exceptions/constructor-object.worker.js deleted file mode 100644 index 7514924..0000000 --- a/third_party/WebKit/LayoutTests/external/wpt/WebIDL/ecmascript-binding/es-exceptions/constructor-object.worker.js +++ /dev/null
@@ -1,3 +0,0 @@ -importScripts("/resources/testharness.js") -importScripts("constructor-object.js") -run_test();
diff --git a/third_party/WebKit/LayoutTests/external/wpt/WebIDL/ecmascript-binding/es-exceptions/exceptions-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/WebIDL/ecmascript-binding/es-exceptions/exceptions-expected.txt deleted file mode 100644 index 97ca4bd6..0000000 --- a/third_party/WebKit/LayoutTests/external/wpt/WebIDL/ecmascript-binding/es-exceptions/exceptions-expected.txt +++ /dev/null
@@ -1,21 +0,0 @@ -This is a testharness.js-based test. -PASS Object.getPrototypeOf(exception) === DOMException.prototype -FAIL exception.hasOwnProperty("name") assert_true: expected true got false -PASS exception.name === "HierarchyRequestError" -FAIL Object.getOwnPropertyDescriptor(exception, "name") Cannot read property 'writable' of undefined -PASS Object.getOwnPropertyDescriptor(exception, "message") -FAIL typeof exception.message === "string" assert_equals: expected "" but got "Failed to execute 'appendChild' on 'Node': The new child element contains the parent." -PASS Object.prototype.toString.call(exception) === "[object DOMException]" -PASS exception.code === DOMException.HIERARCHY_REQUEST_ERR -FAIL Object.getOwnPropertyDescriptor(exception, "code") Cannot read property 'writable' of undefined -PASS In iframe: Object.getPrototypeOf(exception) === DOMException.prototype -FAIL In iframe: exception.hasOwnProperty("name") assert_true: expected true got false -PASS In iframe: exception.name === "HierarchyRequestError" -FAIL In iframe: Object.getOwnPropertyDescriptor(exception, "name") Cannot read property 'writable' of undefined -PASS In iframe: Object.getOwnPropertyDescriptor(exception, "message") -FAIL In iframe: typeof exception.message === "string" assert_equals: expected "" but got "Failed to execute 'appendChild' on 'Node': The new child element contains the parent." -PASS In iframe: Object.prototype.toString.call(exception) === "[object DOMException]" -PASS In iframe: exception.code === DOMException.HIERARCHY_REQUEST_ERR -FAIL In iframe: Object.getOwnPropertyDescriptor(exception, "code") Cannot read property 'writable' of undefined -Harness: the test ran to completion. -
diff --git a/third_party/WebKit/LayoutTests/external/wpt/WebIDL/ecmascript-binding/es-exceptions/exceptions.html b/third_party/WebKit/LayoutTests/external/wpt/WebIDL/ecmascript-binding/es-exceptions/exceptions.html index 06c196ef..396d0a4c 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/WebIDL/ecmascript-binding/es-exceptions/exceptions.html +++ b/third_party/WebKit/LayoutTests/external/wpt/WebIDL/ecmascript-binding/es-exceptions/exceptions.html
@@ -20,90 +20,31 @@ setup({explicit_done: true}); function testException(exception, global, desc) { - // https://heycam.github.io/webidl/#es-exception-objects - // (as of 2015-01-03): "The value of the internal [[Prototype]] property of a - // DOMException object MUST be the DOMException prototype object from the - // global environment the exception object is associated with." test(function() { assert_equals(global.Object.getPrototypeOf(exception), global.DOMException.prototype); }, desc + "Object.getPrototypeOf(exception) === DOMException.prototype"); - // https://heycam.github.io/webidl/#es-creating-throwing-exceptions - // (as of 2015-01-03): "Call the [[DefineOwnProperty]] internal method of /O/ - // passing “name”, Property Descriptor { [[Value]]: /N/, [[Writable]]: true, - // [[Enumerable]]: true, [[Configurable]]: true }, and false as arguments." test(function() { - assert_true(exception.hasOwnProperty("name")); + assert_false(exception.hasOwnProperty("name")); }, desc + "exception.hasOwnProperty(\"name\")"); + test(function() { + assert_false(exception.hasOwnProperty("message")); + }, desc + "exception.hasOwnProperty(\"message\")"); test(function() { assert_equals(exception.name, "HierarchyRequestError"); }, desc + "exception.name === \"HierarchyRequestError\""); test(function() { - var desc = global.Object.getOwnPropertyDescriptor(exception, "name"); - assert_true(desc.writable, "must be writable"); - assert_true(desc.enumerable, "must be enumerable"); - assert_true(desc.configurable, "must be configurable"); - }, desc + "Object.getOwnPropertyDescriptor(exception, \"name\")"); - - - // https://heycam.github.io/webidl/#es-creating-throwing-exceptions - // (as of 2015-01-03): "If the optional user agent-defined message /M/ was - // specified, then this list has a single element whose value is the result - // of converting /M/ to a String value. Otherwise, the list is empty." - // - // https://heycam.github.io/webidl/#es-DOMException-constructor-object - // (as of 2015-01-03): "Call the [[DefineOwnProperty]] internal method of /O/ - // passing “message”, Property Descriptor { [[Value]]: /S/, - // [[Writable]]: true, [[Enumerable]]: false, [[Configurable]]: true }, and - // false as arguments." - test(function() { - if (exception.hasOwnProperty("message")) { - var desc = global.Object.getOwnPropertyDescriptor(exception, "message"); - assert_true(desc.writable, "must be writable"); - assert_false(desc.enumerable, "must not be enumerable"); - assert_true(desc.configurable, "must be configurable"); - } - }, desc + "Object.getOwnPropertyDescriptor(exception, \"message\")"); - - test(function() { - if (exception.hasOwnProperty("message")) { - // Can't test anything more specific, since it's implementation-defined :( - assert_equals(typeof exception.message, "string"); - } else { - // Error.prototype.message - assert_equals(exception.message, ""); - } - }, desc + "typeof exception.message === \"string\""); - - - // https://heycam.github.io/webidl/#es-exception-objects - // (as of 2015-01-03): "The class string of a DOMException object MUST be - // “DOMException”." - test(function() { - assert_equals(global.Object.prototype.toString.call(exception), - "[object DOMException]"); - }, desc + "Object.prototype.toString.call(exception) === \"[object DOMException]\""); - - - // https://heycam.github.io/webidl/#es-creating-throwing-exceptions - // (as of 2015-01-03): "Call the [[DefineOwnProperty]] internal method of /O/ - // passing “code”, Property Descriptor { [[Value]]: /code/, - // [[Writable]]: true, [[Enumerable]]: true, [[Configurable]]: true }, and - // false as arguments." - test(function() { assert_equals(exception.code, global.DOMException.HIERARCHY_REQUEST_ERR); }, desc + "exception.code === DOMException.HIERARCHY_REQUEST_ERR"); test(function() { - var desc = global.Object.getOwnPropertyDescriptor(exception, "name"); - assert_true(desc.writable, "must be writable"); - assert_true(desc.enumerable, "must be enumerable"); - assert_true(desc.configurable, "must be configurable"); - }, desc + "Object.getOwnPropertyDescriptor(exception, \"code\")"); + assert_equals(global.Object.prototype.toString.call(exception), + "[object DOMException]"); + }, desc + "Object.prototype.toString.call(exception) === \"[object DOMException]\""); }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/dom/events/EventTarget-constructible.any-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/dom/events/EventTarget-constructible.any-expected.txt new file mode 100644 index 0000000..a19cf28 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/dom/events/EventTarget-constructible.any-expected.txt
@@ -0,0 +1,5 @@ +This is a testharness.js-based test. +FAIL A constructed EventTarget can be used as expected Illegal constructor +FAIL EventTarget can be subclassed Illegal constructor +Harness: the test ran to completion. +
diff --git a/third_party/WebKit/LayoutTests/external/wpt/dom/events/EventTarget-constructible.any.js b/third_party/WebKit/LayoutTests/external/wpt/dom/events/EventTarget-constructible.any.js new file mode 100644 index 0000000..b0e7614 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/dom/events/EventTarget-constructible.any.js
@@ -0,0 +1,62 @@ +"use strict"; + +test(() => { + const target = new EventTarget(); + const event = new Event("foo", { bubbles: true, cancelable: false }); + let callCount = 0; + + function listener(e) { + assert_equals(e, event); + ++callCount; + } + + target.addEventListener("foo", listener); + + target.dispatchEvent(event); + assert_equals(callCount, 1); + + target.dispatchEvent(event); + assert_equals(callCount, 2); + + target.removeEventListener("foo", listener); + target.dispatchEvent(event); + assert_equals(callCount, 2); +}, "A constructed EventTarget can be used as expected"); + +test(() => { + class NicerEventTarget extends EventTarget { + on(...args) { + this.addEventListener(...args); + } + + off(...args) { + this.removeEventListener(...args); + } + + dispatch(type, detail) { + this.dispatchEvent(new CustomEvent(type, { detail })); + } + } + + const target = new NicerEventTarget(); + const event = new Event("foo", { bubbles: true, cancelable: false }); + const detail = "some data"; + let callCount = 0; + + function listener(e) { + assert_equals(e.detail, detail); + ++callCount; + } + + target.on("foo", listener); + + target.dispatch("foo", detail); + assert_equals(callCount, 1); + + target.dispatch("foo", detail); + assert_equals(callCount, 2); + + target.off("foo", listener); + target.dispatch("foo", detail); + assert_equals(callCount, 2); +}, "EventTarget can be subclassed");
diff --git a/third_party/WebKit/LayoutTests/external/wpt/dom/events/EventTarget-constructible.any.worker-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/dom/events/EventTarget-constructible.any.worker-expected.txt new file mode 100644 index 0000000..a19cf28 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/dom/events/EventTarget-constructible.any.worker-expected.txt
@@ -0,0 +1,5 @@ +This is a testharness.js-based test. +FAIL A constructed EventTarget can be used as expected Illegal constructor +FAIL EventTarget can be subclassed Illegal constructor +Harness: the test ran to completion. +
diff --git a/third_party/WebKit/LayoutTests/external/wpt/dom/interfaces-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/dom/interfaces-expected.txt new file mode 100644 index 0000000..a5f71f6 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/dom/interfaces-expected.txt
@@ -0,0 +1,1622 @@ +This is a testharness.js-based test. +Found 1618 tests; 1610 PASS, 8 FAIL, 0 TIMEOUT, 0 NOTRUN. +PASS Test driver +PASS Event interface: existence and properties of interface object +PASS Event interface object length +PASS Event interface object name +PASS Event interface: existence and properties of interface prototype object +PASS Event interface: existence and properties of interface prototype object's "constructor" property +PASS Event interface: attribute type +PASS Event interface: attribute target +PASS Event interface: attribute currentTarget +PASS Event interface: constant NONE on interface object +PASS Event interface: constant NONE on interface prototype object +PASS Event interface: constant CAPTURING_PHASE on interface object +PASS Event interface: constant CAPTURING_PHASE on interface prototype object +PASS Event interface: constant AT_TARGET on interface object +PASS Event interface: constant AT_TARGET on interface prototype object +PASS Event interface: constant BUBBLING_PHASE on interface object +PASS Event interface: constant BUBBLING_PHASE on interface prototype object +PASS Event interface: attribute eventPhase +PASS Event interface: operation stopPropagation() +PASS Event interface: operation stopImmediatePropagation() +PASS Event interface: attribute bubbles +PASS Event interface: attribute cancelable +PASS Event interface: operation preventDefault() +PASS Event interface: attribute defaultPrevented +PASS Event interface: attribute timeStamp +PASS Event interface: operation initEvent(DOMString,boolean,boolean) +PASS Event must be primary interface of document.createEvent("Event") +PASS Stringification of document.createEvent("Event") +PASS Event interface: document.createEvent("Event") must inherit property "type" with the proper type (0) +PASS Event interface: document.createEvent("Event") must inherit property "target" with the proper type (1) +PASS Event interface: document.createEvent("Event") must inherit property "currentTarget" with the proper type (2) +PASS Event interface: document.createEvent("Event") must inherit property "NONE" with the proper type (3) +PASS Event interface: document.createEvent("Event") must inherit property "CAPTURING_PHASE" with the proper type (4) +PASS Event interface: document.createEvent("Event") must inherit property "AT_TARGET" with the proper type (5) +PASS Event interface: document.createEvent("Event") must inherit property "BUBBLING_PHASE" with the proper type (6) +PASS Event interface: document.createEvent("Event") must inherit property "eventPhase" with the proper type (7) +PASS Event interface: document.createEvent("Event") must inherit property "stopPropagation" with the proper type (8) +PASS Event interface: document.createEvent("Event") must inherit property "stopImmediatePropagation" with the proper type (9) +PASS Event interface: document.createEvent("Event") must inherit property "bubbles" with the proper type (10) +PASS Event interface: document.createEvent("Event") must inherit property "cancelable" with the proper type (11) +PASS Event interface: document.createEvent("Event") must inherit property "preventDefault" with the proper type (12) +PASS Event interface: document.createEvent("Event") must inherit property "defaultPrevented" with the proper type (13) +PASS Event interface: document.createEvent("Event") must have own property "isTrusted" +PASS Event interface: document.createEvent("Event") must inherit property "timeStamp" with the proper type (15) +PASS Event interface: document.createEvent("Event") must inherit property "initEvent" with the proper type (16) +PASS Event interface: calling initEvent(DOMString,boolean,boolean) on document.createEvent("Event") with too few arguments must throw TypeError +PASS Event must be primary interface of new Event("foo") +PASS Stringification of new Event("foo") +PASS Event interface: new Event("foo") must inherit property "type" with the proper type (0) +PASS Event interface: new Event("foo") must inherit property "target" with the proper type (1) +PASS Event interface: new Event("foo") must inherit property "currentTarget" with the proper type (2) +PASS Event interface: new Event("foo") must inherit property "NONE" with the proper type (3) +PASS Event interface: new Event("foo") must inherit property "CAPTURING_PHASE" with the proper type (4) +PASS Event interface: new Event("foo") must inherit property "AT_TARGET" with the proper type (5) +PASS Event interface: new Event("foo") must inherit property "BUBBLING_PHASE" with the proper type (6) +PASS Event interface: new Event("foo") must inherit property "eventPhase" with the proper type (7) +PASS Event interface: new Event("foo") must inherit property "stopPropagation" with the proper type (8) +PASS Event interface: new Event("foo") must inherit property "stopImmediatePropagation" with the proper type (9) +PASS Event interface: new Event("foo") must inherit property "bubbles" with the proper type (10) +PASS Event interface: new Event("foo") must inherit property "cancelable" with the proper type (11) +PASS Event interface: new Event("foo") must inherit property "preventDefault" with the proper type (12) +PASS Event interface: new Event("foo") must inherit property "defaultPrevented" with the proper type (13) +PASS Event interface: new Event("foo") must have own property "isTrusted" +PASS Event interface: new Event("foo") must inherit property "timeStamp" with the proper type (15) +PASS Event interface: new Event("foo") must inherit property "initEvent" with the proper type (16) +PASS Event interface: calling initEvent(DOMString,boolean,boolean) on new Event("foo") with too few arguments must throw TypeError +PASS CustomEvent interface: existence and properties of interface object +PASS CustomEvent interface object length +PASS CustomEvent interface object name +PASS CustomEvent interface: existence and properties of interface prototype object +PASS CustomEvent interface: existence and properties of interface prototype object's "constructor" property +PASS CustomEvent interface: attribute detail +PASS CustomEvent interface: operation initCustomEvent(DOMString,boolean,boolean,any) +PASS CustomEvent must be primary interface of new CustomEvent("foo") +PASS Stringification of new CustomEvent("foo") +PASS CustomEvent interface: new CustomEvent("foo") must inherit property "detail" with the proper type (0) +PASS CustomEvent interface: new CustomEvent("foo") must inherit property "initCustomEvent" with the proper type (1) +PASS CustomEvent interface: calling initCustomEvent(DOMString,boolean,boolean,any) on new CustomEvent("foo") with too few arguments must throw TypeError +PASS Event interface: new CustomEvent("foo") must inherit property "type" with the proper type (0) +PASS Event interface: new CustomEvent("foo") must inherit property "target" with the proper type (1) +PASS Event interface: new CustomEvent("foo") must inherit property "currentTarget" with the proper type (2) +PASS Event interface: new CustomEvent("foo") must inherit property "NONE" with the proper type (3) +PASS Event interface: new CustomEvent("foo") must inherit property "CAPTURING_PHASE" with the proper type (4) +PASS Event interface: new CustomEvent("foo") must inherit property "AT_TARGET" with the proper type (5) +PASS Event interface: new CustomEvent("foo") must inherit property "BUBBLING_PHASE" with the proper type (6) +PASS Event interface: new CustomEvent("foo") must inherit property "eventPhase" with the proper type (7) +PASS Event interface: new CustomEvent("foo") must inherit property "stopPropagation" with the proper type (8) +PASS Event interface: new CustomEvent("foo") must inherit property "stopImmediatePropagation" with the proper type (9) +PASS Event interface: new CustomEvent("foo") must inherit property "bubbles" with the proper type (10) +PASS Event interface: new CustomEvent("foo") must inherit property "cancelable" with the proper type (11) +PASS Event interface: new CustomEvent("foo") must inherit property "preventDefault" with the proper type (12) +PASS Event interface: new CustomEvent("foo") must inherit property "defaultPrevented" with the proper type (13) +PASS Event interface: new CustomEvent("foo") must have own property "isTrusted" +PASS Event interface: new CustomEvent("foo") must inherit property "timeStamp" with the proper type (15) +PASS Event interface: new CustomEvent("foo") must inherit property "initEvent" with the proper type (16) +PASS Event interface: calling initEvent(DOMString,boolean,boolean) on new CustomEvent("foo") with too few arguments must throw TypeError +PASS EventTarget interface: existence and properties of interface object +PASS EventTarget interface object length +PASS EventTarget interface object name +PASS EventTarget interface: existence and properties of interface prototype object +PASS EventTarget interface: existence and properties of interface prototype object's "constructor" property +PASS EventTarget interface: operation addEventListener(DOMString,EventListener,[object Object],[object Object]) +PASS EventTarget interface: operation removeEventListener(DOMString,EventListener,[object Object],[object Object]) +PASS EventTarget interface: operation dispatchEvent(Event) +FAIL EventTarget must be primary interface of new EventTarget() assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Illegal constructor" +FAIL Stringification of new EventTarget() assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Illegal constructor" +FAIL EventTarget interface: new EventTarget() must inherit property "addEventListener" with the proper type (0) assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Illegal constructor" +FAIL EventTarget interface: calling addEventListener(DOMString,EventListener,[object Object],[object Object]) on new EventTarget() with too few arguments must throw TypeError assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Illegal constructor" +FAIL EventTarget interface: new EventTarget() must inherit property "removeEventListener" with the proper type (1) assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Illegal constructor" +FAIL EventTarget interface: calling removeEventListener(DOMString,EventListener,[object Object],[object Object]) on new EventTarget() with too few arguments must throw TypeError assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Illegal constructor" +FAIL EventTarget interface: new EventTarget() must inherit property "dispatchEvent" with the proper type (2) assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Illegal constructor" +FAIL EventTarget interface: calling dispatchEvent(Event) on new EventTarget() with too few arguments must throw TypeError assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Illegal constructor" +PASS EventListener interface: existence and properties of interface object +PASS EventListener interface: existence and properties of interface prototype object +PASS EventListener interface: existence and properties of interface prototype object's "constructor" property +PASS EventListener interface: operation handleEvent(Event) +PASS NodeList interface: existence and properties of interface object +PASS NodeList interface object length +PASS NodeList interface object name +PASS NodeList interface: existence and properties of interface prototype object +PASS NodeList interface: existence and properties of interface prototype object's "constructor" property +PASS NodeList interface: operation item(unsigned long) +PASS NodeList interface: attribute length +PASS NodeList must be primary interface of document.querySelectorAll("script") +PASS Stringification of document.querySelectorAll("script") +PASS NodeList interface: document.querySelectorAll("script") must inherit property "item" with the proper type (0) +PASS NodeList interface: calling item(unsigned long) on document.querySelectorAll("script") with too few arguments must throw TypeError +PASS NodeList interface: document.querySelectorAll("script") must inherit property "length" with the proper type (1) +PASS HTMLCollection interface: existence and properties of interface object +PASS HTMLCollection interface object length +PASS HTMLCollection interface object name +PASS HTMLCollection interface: existence and properties of interface prototype object +PASS HTMLCollection interface: existence and properties of interface prototype object's "constructor" property +PASS HTMLCollection interface: attribute length +PASS HTMLCollection interface: operation item(unsigned long) +PASS HTMLCollection interface: operation namedItem(DOMString) +PASS HTMLCollection must be primary interface of document.body.children +PASS Stringification of document.body.children +PASS HTMLCollection interface: document.body.children must inherit property "length" with the proper type (0) +PASS HTMLCollection interface: document.body.children must inherit property "item" with the proper type (1) +PASS HTMLCollection interface: calling item(unsigned long) on document.body.children with too few arguments must throw TypeError +PASS HTMLCollection interface: document.body.children must inherit property "namedItem" with the proper type (2) +PASS HTMLCollection interface: calling namedItem(DOMString) on document.body.children with too few arguments must throw TypeError +PASS MutationObserver interface: existence and properties of interface object +PASS MutationObserver interface object length +PASS MutationObserver interface object name +PASS MutationObserver interface: existence and properties of interface prototype object +PASS MutationObserver interface: existence and properties of interface prototype object's "constructor" property +PASS MutationObserver interface: operation observe(Node,MutationObserverInit) +PASS MutationObserver interface: operation disconnect() +PASS MutationObserver interface: operation takeRecords() +PASS MutationRecord interface: existence and properties of interface object +PASS MutationRecord interface object length +PASS MutationRecord interface object name +PASS MutationRecord interface: existence and properties of interface prototype object +PASS MutationRecord interface: existence and properties of interface prototype object's "constructor" property +PASS MutationRecord interface: attribute type +PASS MutationRecord interface: attribute target +PASS MutationRecord interface: attribute addedNodes +PASS MutationRecord interface: attribute removedNodes +PASS MutationRecord interface: attribute previousSibling +PASS MutationRecord interface: attribute nextSibling +PASS MutationRecord interface: attribute attributeName +PASS MutationRecord interface: attribute attributeNamespace +PASS MutationRecord interface: attribute oldValue +PASS Node interface: existence and properties of interface object +PASS Node interface object length +PASS Node interface object name +PASS Node interface: existence and properties of interface prototype object +PASS Node interface: existence and properties of interface prototype object's "constructor" property +PASS Node interface: constant ELEMENT_NODE on interface object +PASS Node interface: constant ELEMENT_NODE on interface prototype object +PASS Node interface: constant ATTRIBUTE_NODE on interface object +PASS Node interface: constant ATTRIBUTE_NODE on interface prototype object +PASS Node interface: constant TEXT_NODE on interface object +PASS Node interface: constant TEXT_NODE on interface prototype object +PASS Node interface: constant CDATA_SECTION_NODE on interface object +PASS Node interface: constant CDATA_SECTION_NODE on interface prototype object +PASS Node interface: constant ENTITY_REFERENCE_NODE on interface object +PASS Node interface: constant ENTITY_REFERENCE_NODE on interface prototype object +PASS Node interface: constant ENTITY_NODE on interface object +PASS Node interface: constant ENTITY_NODE on interface prototype object +PASS Node interface: constant PROCESSING_INSTRUCTION_NODE on interface object +PASS Node interface: constant PROCESSING_INSTRUCTION_NODE on interface prototype object +PASS Node interface: constant COMMENT_NODE on interface object +PASS Node interface: constant COMMENT_NODE on interface prototype object +PASS Node interface: constant DOCUMENT_NODE on interface object +PASS Node interface: constant DOCUMENT_NODE on interface prototype object +PASS Node interface: constant DOCUMENT_TYPE_NODE on interface object +PASS Node interface: constant DOCUMENT_TYPE_NODE on interface prototype object +PASS Node interface: constant DOCUMENT_FRAGMENT_NODE on interface object +PASS Node interface: constant DOCUMENT_FRAGMENT_NODE on interface prototype object +PASS Node interface: constant NOTATION_NODE on interface object +PASS Node interface: constant NOTATION_NODE on interface prototype object +PASS Node interface: attribute nodeType +PASS Node interface: attribute nodeName +PASS Node interface: attribute baseURI +PASS Node interface: attribute isConnected +PASS Node interface: attribute ownerDocument +PASS Node interface: operation getRootNode(GetRootNodeOptions) +PASS Node interface: attribute parentNode +PASS Node interface: attribute parentElement +PASS Node interface: operation hasChildNodes() +PASS Node interface: attribute childNodes +PASS Node interface: attribute firstChild +PASS Node interface: attribute lastChild +PASS Node interface: attribute previousSibling +PASS Node interface: attribute nextSibling +PASS Node interface: attribute nodeValue +PASS Node interface: attribute textContent +PASS Node interface: operation normalize() +PASS Node interface: operation cloneNode(boolean) +PASS Node interface: operation isEqualNode(Node) +PASS Node interface: operation isSameNode(Node) +PASS Node interface: constant DOCUMENT_POSITION_DISCONNECTED on interface object +PASS Node interface: constant DOCUMENT_POSITION_DISCONNECTED on interface prototype object +PASS Node interface: constant DOCUMENT_POSITION_PRECEDING on interface object +PASS Node interface: constant DOCUMENT_POSITION_PRECEDING on interface prototype object +PASS Node interface: constant DOCUMENT_POSITION_FOLLOWING on interface object +PASS Node interface: constant DOCUMENT_POSITION_FOLLOWING on interface prototype object +PASS Node interface: constant DOCUMENT_POSITION_CONTAINS on interface object +PASS Node interface: constant DOCUMENT_POSITION_CONTAINS on interface prototype object +PASS Node interface: constant DOCUMENT_POSITION_CONTAINED_BY on interface object +PASS Node interface: constant DOCUMENT_POSITION_CONTAINED_BY on interface prototype object +PASS Node interface: constant DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC on interface object +PASS Node interface: constant DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC on interface prototype object +PASS Node interface: operation compareDocumentPosition(Node) +PASS Node interface: operation contains(Node) +PASS Node interface: operation lookupPrefix(DOMString) +PASS Node interface: operation lookupNamespaceURI(DOMString) +PASS Node interface: operation isDefaultNamespace(DOMString) +PASS Node interface: operation insertBefore(Node,Node) +PASS Node interface: operation appendChild(Node) +PASS Node interface: operation replaceChild(Node,Node) +PASS Node interface: operation removeChild(Node) +PASS Document interface: existence and properties of interface object +PASS Document interface object length +PASS Document interface object name +PASS Document interface: existence and properties of interface prototype object +PASS Document interface: existence and properties of interface prototype object's "constructor" property +PASS Document interface: attribute implementation +PASS Document interface: attribute URL +PASS Document interface: attribute documentURI +PASS Document interface: attribute origin +PASS Document interface: attribute compatMode +PASS Document interface: attribute characterSet +PASS Document interface: attribute charset +PASS Document interface: attribute inputEncoding +PASS Document interface: attribute contentType +PASS Document interface: attribute doctype +PASS Document interface: attribute documentElement +PASS Document interface: operation getElementsByTagName(DOMString) +PASS Document interface: operation getElementsByTagNameNS(DOMString,DOMString) +PASS Document interface: operation getElementsByClassName(DOMString) +PASS Document interface: operation createElement(DOMString,ElementCreationOptions) +PASS Document interface: operation createElementNS(DOMString,DOMString,ElementCreationOptions) +PASS Document interface: operation createDocumentFragment() +PASS Document interface: operation createTextNode(DOMString) +PASS Document interface: operation createCDATASection(DOMString) +PASS Document interface: operation createComment(DOMString) +PASS Document interface: operation createProcessingInstruction(DOMString,DOMString) +PASS Document interface: operation importNode(Node,boolean) +PASS Document interface: operation adoptNode(Node) +PASS Document interface: operation createAttribute(DOMString) +PASS Document interface: operation createAttributeNS(DOMString,DOMString) +PASS Document interface: operation createEvent(DOMString) +PASS Document interface: operation createRange() +PASS Document interface: operation createNodeIterator(Node,unsigned long,NodeFilter) +PASS Document interface: operation createTreeWalker(Node,unsigned long,NodeFilter) +PASS Document interface: operation getElementById(DOMString) +PASS Document interface: attribute children +PASS Document interface: attribute firstElementChild +PASS Document interface: attribute lastElementChild +PASS Document interface: attribute childElementCount +PASS Document interface: operation prepend([object Object],[object Object]) +PASS Document interface: operation append([object Object],[object Object]) +PASS Document interface: operation querySelector(DOMString) +PASS Document interface: operation querySelectorAll(DOMString) +PASS Document must be primary interface of new Document() +PASS Stringification of new Document() +PASS Document interface: new Document() must inherit property "implementation" with the proper type (0) +PASS Document interface: new Document() must inherit property "URL" with the proper type (1) +PASS Document interface: new Document() must inherit property "documentURI" with the proper type (2) +PASS Document interface: new Document() must inherit property "origin" with the proper type (3) +PASS Document interface: new Document() must inherit property "compatMode" with the proper type (4) +PASS Document interface: new Document() must inherit property "characterSet" with the proper type (5) +PASS Document interface: new Document() must inherit property "charset" with the proper type (6) +PASS Document interface: new Document() must inherit property "inputEncoding" with the proper type (7) +PASS Document interface: new Document() must inherit property "contentType" with the proper type (8) +PASS Document interface: new Document() must inherit property "doctype" with the proper type (9) +PASS Document interface: new Document() must inherit property "documentElement" with the proper type (10) +PASS Document interface: new Document() must inherit property "getElementsByTagName" with the proper type (11) +PASS Document interface: calling getElementsByTagName(DOMString) on new Document() with too few arguments must throw TypeError +PASS Document interface: new Document() must inherit property "getElementsByTagNameNS" with the proper type (12) +PASS Document interface: calling getElementsByTagNameNS(DOMString,DOMString) on new Document() with too few arguments must throw TypeError +PASS Document interface: new Document() must inherit property "getElementsByClassName" with the proper type (13) +PASS Document interface: calling getElementsByClassName(DOMString) on new Document() with too few arguments must throw TypeError +PASS Document interface: new Document() must inherit property "createElement" with the proper type (14) +PASS Document interface: calling createElement(DOMString,ElementCreationOptions) on new Document() with too few arguments must throw TypeError +PASS Document interface: new Document() must inherit property "createElementNS" with the proper type (15) +PASS Document interface: calling createElementNS(DOMString,DOMString,ElementCreationOptions) on new Document() with too few arguments must throw TypeError +PASS Document interface: new Document() must inherit property "createDocumentFragment" with the proper type (16) +PASS Document interface: new Document() must inherit property "createTextNode" with the proper type (17) +PASS Document interface: calling createTextNode(DOMString) on new Document() with too few arguments must throw TypeError +PASS Document interface: new Document() must inherit property "createCDATASection" with the proper type (18) +PASS Document interface: calling createCDATASection(DOMString) on new Document() with too few arguments must throw TypeError +PASS Document interface: new Document() must inherit property "createComment" with the proper type (19) +PASS Document interface: calling createComment(DOMString) on new Document() with too few arguments must throw TypeError +PASS Document interface: new Document() must inherit property "createProcessingInstruction" with the proper type (20) +PASS Document interface: calling createProcessingInstruction(DOMString,DOMString) on new Document() with too few arguments must throw TypeError +PASS Document interface: new Document() must inherit property "importNode" with the proper type (21) +PASS Document interface: calling importNode(Node,boolean) on new Document() with too few arguments must throw TypeError +PASS Document interface: new Document() must inherit property "adoptNode" with the proper type (22) +PASS Document interface: calling adoptNode(Node) on new Document() with too few arguments must throw TypeError +PASS Document interface: new Document() must inherit property "createAttribute" with the proper type (23) +PASS Document interface: calling createAttribute(DOMString) on new Document() with too few arguments must throw TypeError +PASS Document interface: new Document() must inherit property "createAttributeNS" with the proper type (24) +PASS Document interface: calling createAttributeNS(DOMString,DOMString) on new Document() with too few arguments must throw TypeError +PASS Document interface: new Document() must inherit property "createEvent" with the proper type (25) +PASS Document interface: calling createEvent(DOMString) on new Document() with too few arguments must throw TypeError +PASS Document interface: new Document() must inherit property "createRange" with the proper type (26) +PASS Document interface: new Document() must inherit property "createNodeIterator" with the proper type (27) +PASS Document interface: calling createNodeIterator(Node,unsigned long,NodeFilter) on new Document() with too few arguments must throw TypeError +PASS Document interface: new Document() must inherit property "createTreeWalker" with the proper type (28) +PASS Document interface: calling createTreeWalker(Node,unsigned long,NodeFilter) on new Document() with too few arguments must throw TypeError +PASS Document interface: new Document() must inherit property "getElementById" with the proper type (29) +PASS Document interface: calling getElementById(DOMString) on new Document() with too few arguments must throw TypeError +PASS Document interface: new Document() must inherit property "children" with the proper type (30) +PASS Document interface: new Document() must inherit property "firstElementChild" with the proper type (31) +PASS Document interface: new Document() must inherit property "lastElementChild" with the proper type (32) +PASS Document interface: new Document() must inherit property "childElementCount" with the proper type (33) +PASS Document interface: new Document() must inherit property "prepend" with the proper type (34) +PASS Document interface: calling prepend([object Object],[object Object]) on new Document() with too few arguments must throw TypeError +PASS Document interface: new Document() must inherit property "append" with the proper type (35) +PASS Document interface: calling append([object Object],[object Object]) on new Document() with too few arguments must throw TypeError +PASS Document interface: new Document() must inherit property "querySelector" with the proper type (36) +PASS Document interface: calling querySelector(DOMString) on new Document() with too few arguments must throw TypeError +PASS Document interface: new Document() must inherit property "querySelectorAll" with the proper type (37) +PASS Document interface: calling querySelectorAll(DOMString) on new Document() with too few arguments must throw TypeError +PASS Node interface: new Document() must inherit property "ELEMENT_NODE" with the proper type (0) +PASS Node interface: new Document() must inherit property "ATTRIBUTE_NODE" with the proper type (1) +PASS Node interface: new Document() must inherit property "TEXT_NODE" with the proper type (2) +PASS Node interface: new Document() must inherit property "CDATA_SECTION_NODE" with the proper type (3) +PASS Node interface: new Document() must inherit property "ENTITY_REFERENCE_NODE" with the proper type (4) +PASS Node interface: new Document() must inherit property "ENTITY_NODE" with the proper type (5) +PASS Node interface: new Document() must inherit property "PROCESSING_INSTRUCTION_NODE" with the proper type (6) +PASS Node interface: new Document() must inherit property "COMMENT_NODE" with the proper type (7) +PASS Node interface: new Document() must inherit property "DOCUMENT_NODE" with the proper type (8) +PASS Node interface: new Document() must inherit property "DOCUMENT_TYPE_NODE" with the proper type (9) +PASS Node interface: new Document() must inherit property "DOCUMENT_FRAGMENT_NODE" with the proper type (10) +PASS Node interface: new Document() must inherit property "NOTATION_NODE" with the proper type (11) +PASS Node interface: new Document() must inherit property "nodeType" with the proper type (12) +PASS Node interface: new Document() must inherit property "nodeName" with the proper type (13) +PASS Node interface: new Document() must inherit property "baseURI" with the proper type (14) +PASS Node interface: new Document() must inherit property "isConnected" with the proper type (15) +PASS Node interface: new Document() must inherit property "ownerDocument" with the proper type (16) +PASS Node interface: new Document() must inherit property "getRootNode" with the proper type (17) +PASS Node interface: calling getRootNode(GetRootNodeOptions) on new Document() with too few arguments must throw TypeError +PASS Node interface: new Document() must inherit property "parentNode" with the proper type (18) +PASS Node interface: new Document() must inherit property "parentElement" with the proper type (19) +PASS Node interface: new Document() must inherit property "hasChildNodes" with the proper type (20) +PASS Node interface: new Document() must inherit property "childNodes" with the proper type (21) +PASS Node interface: new Document() must inherit property "firstChild" with the proper type (22) +PASS Node interface: new Document() must inherit property "lastChild" with the proper type (23) +PASS Node interface: new Document() must inherit property "previousSibling" with the proper type (24) +PASS Node interface: new Document() must inherit property "nextSibling" with the proper type (25) +PASS Node interface: new Document() must inherit property "nodeValue" with the proper type (26) +PASS Node interface: new Document() must inherit property "textContent" with the proper type (27) +PASS Node interface: new Document() must inherit property "normalize" with the proper type (28) +PASS Node interface: new Document() must inherit property "cloneNode" with the proper type (29) +PASS Node interface: calling cloneNode(boolean) on new Document() with too few arguments must throw TypeError +PASS Node interface: new Document() must inherit property "isEqualNode" with the proper type (30) +PASS Node interface: calling isEqualNode(Node) on new Document() with too few arguments must throw TypeError +PASS Node interface: new Document() must inherit property "isSameNode" with the proper type (31) +PASS Node interface: calling isSameNode(Node) on new Document() with too few arguments must throw TypeError +PASS Node interface: new Document() must inherit property "DOCUMENT_POSITION_DISCONNECTED" with the proper type (32) +PASS Node interface: new Document() must inherit property "DOCUMENT_POSITION_PRECEDING" with the proper type (33) +PASS Node interface: new Document() must inherit property "DOCUMENT_POSITION_FOLLOWING" with the proper type (34) +PASS Node interface: new Document() must inherit property "DOCUMENT_POSITION_CONTAINS" with the proper type (35) +PASS Node interface: new Document() must inherit property "DOCUMENT_POSITION_CONTAINED_BY" with the proper type (36) +PASS Node interface: new Document() must inherit property "DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC" with the proper type (37) +PASS Node interface: new Document() must inherit property "compareDocumentPosition" with the proper type (38) +PASS Node interface: calling compareDocumentPosition(Node) on new Document() with too few arguments must throw TypeError +PASS Node interface: new Document() must inherit property "contains" with the proper type (39) +PASS Node interface: calling contains(Node) on new Document() with too few arguments must throw TypeError +PASS Node interface: new Document() must inherit property "lookupPrefix" with the proper type (40) +PASS Node interface: calling lookupPrefix(DOMString) on new Document() with too few arguments must throw TypeError +PASS Node interface: new Document() must inherit property "lookupNamespaceURI" with the proper type (41) +PASS Node interface: calling lookupNamespaceURI(DOMString) on new Document() with too few arguments must throw TypeError +PASS Node interface: new Document() must inherit property "isDefaultNamespace" with the proper type (42) +PASS Node interface: calling isDefaultNamespace(DOMString) on new Document() with too few arguments must throw TypeError +PASS Node interface: new Document() must inherit property "insertBefore" with the proper type (43) +PASS Node interface: calling insertBefore(Node,Node) on new Document() with too few arguments must throw TypeError +PASS Node interface: new Document() must inherit property "appendChild" with the proper type (44) +PASS Node interface: calling appendChild(Node) on new Document() with too few arguments must throw TypeError +PASS Node interface: new Document() must inherit property "replaceChild" with the proper type (45) +PASS Node interface: calling replaceChild(Node,Node) on new Document() with too few arguments must throw TypeError +PASS Node interface: new Document() must inherit property "removeChild" with the proper type (46) +PASS Node interface: calling removeChild(Node) on new Document() with too few arguments must throw TypeError +PASS EventTarget interface: new Document() must inherit property "addEventListener" with the proper type (0) +PASS EventTarget interface: calling addEventListener(DOMString,EventListener,[object Object],[object Object]) on new Document() with too few arguments must throw TypeError +PASS EventTarget interface: new Document() must inherit property "removeEventListener" with the proper type (1) +PASS EventTarget interface: calling removeEventListener(DOMString,EventListener,[object Object],[object Object]) on new Document() with too few arguments must throw TypeError +PASS EventTarget interface: new Document() must inherit property "dispatchEvent" with the proper type (2) +PASS EventTarget interface: calling dispatchEvent(Event) on new Document() with too few arguments must throw TypeError +PASS XMLDocument interface: existence and properties of interface object +PASS XMLDocument interface object length +PASS XMLDocument interface object name +PASS XMLDocument interface: existence and properties of interface prototype object +PASS XMLDocument interface: existence and properties of interface prototype object's "constructor" property +PASS XMLDocument must be primary interface of xmlDoc +PASS Stringification of xmlDoc +PASS Document interface: xmlDoc must inherit property "implementation" with the proper type (0) +PASS Document interface: xmlDoc must inherit property "URL" with the proper type (1) +PASS Document interface: xmlDoc must inherit property "documentURI" with the proper type (2) +PASS Document interface: xmlDoc must inherit property "origin" with the proper type (3) +PASS Document interface: xmlDoc must inherit property "compatMode" with the proper type (4) +PASS Document interface: xmlDoc must inherit property "characterSet" with the proper type (5) +PASS Document interface: xmlDoc must inherit property "charset" with the proper type (6) +PASS Document interface: xmlDoc must inherit property "inputEncoding" with the proper type (7) +PASS Document interface: xmlDoc must inherit property "contentType" with the proper type (8) +PASS Document interface: xmlDoc must inherit property "doctype" with the proper type (9) +PASS Document interface: xmlDoc must inherit property "documentElement" with the proper type (10) +PASS Document interface: xmlDoc must inherit property "getElementsByTagName" with the proper type (11) +PASS Document interface: calling getElementsByTagName(DOMString) on xmlDoc with too few arguments must throw TypeError +PASS Document interface: xmlDoc must inherit property "getElementsByTagNameNS" with the proper type (12) +PASS Document interface: calling getElementsByTagNameNS(DOMString,DOMString) on xmlDoc with too few arguments must throw TypeError +PASS Document interface: xmlDoc must inherit property "getElementsByClassName" with the proper type (13) +PASS Document interface: calling getElementsByClassName(DOMString) on xmlDoc with too few arguments must throw TypeError +PASS Document interface: xmlDoc must inherit property "createElement" with the proper type (14) +PASS Document interface: calling createElement(DOMString,ElementCreationOptions) on xmlDoc with too few arguments must throw TypeError +PASS Document interface: xmlDoc must inherit property "createElementNS" with the proper type (15) +PASS Document interface: calling createElementNS(DOMString,DOMString,ElementCreationOptions) on xmlDoc with too few arguments must throw TypeError +PASS Document interface: xmlDoc must inherit property "createDocumentFragment" with the proper type (16) +PASS Document interface: xmlDoc must inherit property "createTextNode" with the proper type (17) +PASS Document interface: calling createTextNode(DOMString) on xmlDoc with too few arguments must throw TypeError +PASS Document interface: xmlDoc must inherit property "createCDATASection" with the proper type (18) +PASS Document interface: calling createCDATASection(DOMString) on xmlDoc with too few arguments must throw TypeError +PASS Document interface: xmlDoc must inherit property "createComment" with the proper type (19) +PASS Document interface: calling createComment(DOMString) on xmlDoc with too few arguments must throw TypeError +PASS Document interface: xmlDoc must inherit property "createProcessingInstruction" with the proper type (20) +PASS Document interface: calling createProcessingInstruction(DOMString,DOMString) on xmlDoc with too few arguments must throw TypeError +PASS Document interface: xmlDoc must inherit property "importNode" with the proper type (21) +PASS Document interface: calling importNode(Node,boolean) on xmlDoc with too few arguments must throw TypeError +PASS Document interface: xmlDoc must inherit property "adoptNode" with the proper type (22) +PASS Document interface: calling adoptNode(Node) on xmlDoc with too few arguments must throw TypeError +PASS Document interface: xmlDoc must inherit property "createAttribute" with the proper type (23) +PASS Document interface: calling createAttribute(DOMString) on xmlDoc with too few arguments must throw TypeError +PASS Document interface: xmlDoc must inherit property "createAttributeNS" with the proper type (24) +PASS Document interface: calling createAttributeNS(DOMString,DOMString) on xmlDoc with too few arguments must throw TypeError +PASS Document interface: xmlDoc must inherit property "createEvent" with the proper type (25) +PASS Document interface: calling createEvent(DOMString) on xmlDoc with too few arguments must throw TypeError +PASS Document interface: xmlDoc must inherit property "createRange" with the proper type (26) +PASS Document interface: xmlDoc must inherit property "createNodeIterator" with the proper type (27) +PASS Document interface: calling createNodeIterator(Node,unsigned long,NodeFilter) on xmlDoc with too few arguments must throw TypeError +PASS Document interface: xmlDoc must inherit property "createTreeWalker" with the proper type (28) +PASS Document interface: calling createTreeWalker(Node,unsigned long,NodeFilter) on xmlDoc with too few arguments must throw TypeError +PASS Document interface: xmlDoc must inherit property "getElementById" with the proper type (29) +PASS Document interface: calling getElementById(DOMString) on xmlDoc with too few arguments must throw TypeError +PASS Document interface: xmlDoc must inherit property "children" with the proper type (30) +PASS Document interface: xmlDoc must inherit property "firstElementChild" with the proper type (31) +PASS Document interface: xmlDoc must inherit property "lastElementChild" with the proper type (32) +PASS Document interface: xmlDoc must inherit property "childElementCount" with the proper type (33) +PASS Document interface: xmlDoc must inherit property "prepend" with the proper type (34) +PASS Document interface: calling prepend([object Object],[object Object]) on xmlDoc with too few arguments must throw TypeError +PASS Document interface: xmlDoc must inherit property "append" with the proper type (35) +PASS Document interface: calling append([object Object],[object Object]) on xmlDoc with too few arguments must throw TypeError +PASS Document interface: xmlDoc must inherit property "querySelector" with the proper type (36) +PASS Document interface: calling querySelector(DOMString) on xmlDoc with too few arguments must throw TypeError +PASS Document interface: xmlDoc must inherit property "querySelectorAll" with the proper type (37) +PASS Document interface: calling querySelectorAll(DOMString) on xmlDoc with too few arguments must throw TypeError +PASS Node interface: xmlDoc must inherit property "ELEMENT_NODE" with the proper type (0) +PASS Node interface: xmlDoc must inherit property "ATTRIBUTE_NODE" with the proper type (1) +PASS Node interface: xmlDoc must inherit property "TEXT_NODE" with the proper type (2) +PASS Node interface: xmlDoc must inherit property "CDATA_SECTION_NODE" with the proper type (3) +PASS Node interface: xmlDoc must inherit property "ENTITY_REFERENCE_NODE" with the proper type (4) +PASS Node interface: xmlDoc must inherit property "ENTITY_NODE" with the proper type (5) +PASS Node interface: xmlDoc must inherit property "PROCESSING_INSTRUCTION_NODE" with the proper type (6) +PASS Node interface: xmlDoc must inherit property "COMMENT_NODE" with the proper type (7) +PASS Node interface: xmlDoc must inherit property "DOCUMENT_NODE" with the proper type (8) +PASS Node interface: xmlDoc must inherit property "DOCUMENT_TYPE_NODE" with the proper type (9) +PASS Node interface: xmlDoc must inherit property "DOCUMENT_FRAGMENT_NODE" with the proper type (10) +PASS Node interface: xmlDoc must inherit property "NOTATION_NODE" with the proper type (11) +PASS Node interface: xmlDoc must inherit property "nodeType" with the proper type (12) +PASS Node interface: xmlDoc must inherit property "nodeName" with the proper type (13) +PASS Node interface: xmlDoc must inherit property "baseURI" with the proper type (14) +PASS Node interface: xmlDoc must inherit property "isConnected" with the proper type (15) +PASS Node interface: xmlDoc must inherit property "ownerDocument" with the proper type (16) +PASS Node interface: xmlDoc must inherit property "getRootNode" with the proper type (17) +PASS Node interface: calling getRootNode(GetRootNodeOptions) on xmlDoc with too few arguments must throw TypeError +PASS Node interface: xmlDoc must inherit property "parentNode" with the proper type (18) +PASS Node interface: xmlDoc must inherit property "parentElement" with the proper type (19) +PASS Node interface: xmlDoc must inherit property "hasChildNodes" with the proper type (20) +PASS Node interface: xmlDoc must inherit property "childNodes" with the proper type (21) +PASS Node interface: xmlDoc must inherit property "firstChild" with the proper type (22) +PASS Node interface: xmlDoc must inherit property "lastChild" with the proper type (23) +PASS Node interface: xmlDoc must inherit property "previousSibling" with the proper type (24) +PASS Node interface: xmlDoc must inherit property "nextSibling" with the proper type (25) +PASS Node interface: xmlDoc must inherit property "nodeValue" with the proper type (26) +PASS Node interface: xmlDoc must inherit property "textContent" with the proper type (27) +PASS Node interface: xmlDoc must inherit property "normalize" with the proper type (28) +PASS Node interface: xmlDoc must inherit property "cloneNode" with the proper type (29) +PASS Node interface: calling cloneNode(boolean) on xmlDoc with too few arguments must throw TypeError +PASS Node interface: xmlDoc must inherit property "isEqualNode" with the proper type (30) +PASS Node interface: calling isEqualNode(Node) on xmlDoc with too few arguments must throw TypeError +PASS Node interface: xmlDoc must inherit property "isSameNode" with the proper type (31) +PASS Node interface: calling isSameNode(Node) on xmlDoc with too few arguments must throw TypeError +PASS Node interface: xmlDoc must inherit property "DOCUMENT_POSITION_DISCONNECTED" with the proper type (32) +PASS Node interface: xmlDoc must inherit property "DOCUMENT_POSITION_PRECEDING" with the proper type (33) +PASS Node interface: xmlDoc must inherit property "DOCUMENT_POSITION_FOLLOWING" with the proper type (34) +PASS Node interface: xmlDoc must inherit property "DOCUMENT_POSITION_CONTAINS" with the proper type (35) +PASS Node interface: xmlDoc must inherit property "DOCUMENT_POSITION_CONTAINED_BY" with the proper type (36) +PASS Node interface: xmlDoc must inherit property "DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC" with the proper type (37) +PASS Node interface: xmlDoc must inherit property "compareDocumentPosition" with the proper type (38) +PASS Node interface: calling compareDocumentPosition(Node) on xmlDoc with too few arguments must throw TypeError +PASS Node interface: xmlDoc must inherit property "contains" with the proper type (39) +PASS Node interface: calling contains(Node) on xmlDoc with too few arguments must throw TypeError +PASS Node interface: xmlDoc must inherit property "lookupPrefix" with the proper type (40) +PASS Node interface: calling lookupPrefix(DOMString) on xmlDoc with too few arguments must throw TypeError +PASS Node interface: xmlDoc must inherit property "lookupNamespaceURI" with the proper type (41) +PASS Node interface: calling lookupNamespaceURI(DOMString) on xmlDoc with too few arguments must throw TypeError +PASS Node interface: xmlDoc must inherit property "isDefaultNamespace" with the proper type (42) +PASS Node interface: calling isDefaultNamespace(DOMString) on xmlDoc with too few arguments must throw TypeError +PASS Node interface: xmlDoc must inherit property "insertBefore" with the proper type (43) +PASS Node interface: calling insertBefore(Node,Node) on xmlDoc with too few arguments must throw TypeError +PASS Node interface: xmlDoc must inherit property "appendChild" with the proper type (44) +PASS Node interface: calling appendChild(Node) on xmlDoc with too few arguments must throw TypeError +PASS Node interface: xmlDoc must inherit property "replaceChild" with the proper type (45) +PASS Node interface: calling replaceChild(Node,Node) on xmlDoc with too few arguments must throw TypeError +PASS Node interface: xmlDoc must inherit property "removeChild" with the proper type (46) +PASS Node interface: calling removeChild(Node) on xmlDoc with too few arguments must throw TypeError +PASS EventTarget interface: xmlDoc must inherit property "addEventListener" with the proper type (0) +PASS EventTarget interface: calling addEventListener(DOMString,EventListener,[object Object],[object Object]) on xmlDoc with too few arguments must throw TypeError +PASS EventTarget interface: xmlDoc must inherit property "removeEventListener" with the proper type (1) +PASS EventTarget interface: calling removeEventListener(DOMString,EventListener,[object Object],[object Object]) on xmlDoc with too few arguments must throw TypeError +PASS EventTarget interface: xmlDoc must inherit property "dispatchEvent" with the proper type (2) +PASS EventTarget interface: calling dispatchEvent(Event) on xmlDoc with too few arguments must throw TypeError +PASS DOMImplementation interface: existence and properties of interface object +PASS DOMImplementation interface object length +PASS DOMImplementation interface object name +PASS DOMImplementation interface: existence and properties of interface prototype object +PASS DOMImplementation interface: existence and properties of interface prototype object's "constructor" property +PASS DOMImplementation interface: operation createDocumentType(DOMString,DOMString,DOMString) +PASS DOMImplementation interface: operation createDocument(DOMString,DOMString,DocumentType) +PASS DOMImplementation interface: operation createHTMLDocument(DOMString) +PASS DOMImplementation interface: operation hasFeature() +PASS DOMImplementation must be primary interface of document.implementation +PASS Stringification of document.implementation +PASS DOMImplementation interface: document.implementation must inherit property "createDocumentType" with the proper type (0) +PASS DOMImplementation interface: calling createDocumentType(DOMString,DOMString,DOMString) on document.implementation with too few arguments must throw TypeError +PASS DOMImplementation interface: document.implementation must inherit property "createDocument" with the proper type (1) +PASS DOMImplementation interface: calling createDocument(DOMString,DOMString,DocumentType) on document.implementation with too few arguments must throw TypeError +PASS DOMImplementation interface: document.implementation must inherit property "createHTMLDocument" with the proper type (2) +PASS DOMImplementation interface: calling createHTMLDocument(DOMString) on document.implementation with too few arguments must throw TypeError +PASS DOMImplementation interface: document.implementation must inherit property "hasFeature" with the proper type (3) +PASS DocumentType interface: existence and properties of interface object +PASS DocumentType interface object length +PASS DocumentType interface object name +PASS DocumentType interface: existence and properties of interface prototype object +PASS DocumentType interface: existence and properties of interface prototype object's "constructor" property +PASS DocumentType interface: attribute name +PASS DocumentType interface: attribute publicId +PASS DocumentType interface: attribute systemId +PASS DocumentType interface: operation before([object Object],[object Object]) +PASS DocumentType interface: operation after([object Object],[object Object]) +PASS DocumentType interface: operation replaceWith([object Object],[object Object]) +PASS DocumentType interface: operation remove() +PASS DocumentType must be primary interface of document.doctype +PASS Stringification of document.doctype +PASS DocumentType interface: document.doctype must inherit property "name" with the proper type (0) +PASS DocumentType interface: document.doctype must inherit property "publicId" with the proper type (1) +PASS DocumentType interface: document.doctype must inherit property "systemId" with the proper type (2) +PASS DocumentType interface: document.doctype must inherit property "before" with the proper type (3) +PASS DocumentType interface: calling before([object Object],[object Object]) on document.doctype with too few arguments must throw TypeError +PASS DocumentType interface: document.doctype must inherit property "after" with the proper type (4) +PASS DocumentType interface: calling after([object Object],[object Object]) on document.doctype with too few arguments must throw TypeError +PASS DocumentType interface: document.doctype must inherit property "replaceWith" with the proper type (5) +PASS DocumentType interface: calling replaceWith([object Object],[object Object]) on document.doctype with too few arguments must throw TypeError +PASS DocumentType interface: document.doctype must inherit property "remove" with the proper type (6) +PASS Node interface: document.doctype must inherit property "ELEMENT_NODE" with the proper type (0) +PASS Node interface: document.doctype must inherit property "ATTRIBUTE_NODE" with the proper type (1) +PASS Node interface: document.doctype must inherit property "TEXT_NODE" with the proper type (2) +PASS Node interface: document.doctype must inherit property "CDATA_SECTION_NODE" with the proper type (3) +PASS Node interface: document.doctype must inherit property "ENTITY_REFERENCE_NODE" with the proper type (4) +PASS Node interface: document.doctype must inherit property "ENTITY_NODE" with the proper type (5) +PASS Node interface: document.doctype must inherit property "PROCESSING_INSTRUCTION_NODE" with the proper type (6) +PASS Node interface: document.doctype must inherit property "COMMENT_NODE" with the proper type (7) +PASS Node interface: document.doctype must inherit property "DOCUMENT_NODE" with the proper type (8) +PASS Node interface: document.doctype must inherit property "DOCUMENT_TYPE_NODE" with the proper type (9) +PASS Node interface: document.doctype must inherit property "DOCUMENT_FRAGMENT_NODE" with the proper type (10) +PASS Node interface: document.doctype must inherit property "NOTATION_NODE" with the proper type (11) +PASS Node interface: document.doctype must inherit property "nodeType" with the proper type (12) +PASS Node interface: document.doctype must inherit property "nodeName" with the proper type (13) +PASS Node interface: document.doctype must inherit property "baseURI" with the proper type (14) +PASS Node interface: document.doctype must inherit property "isConnected" with the proper type (15) +PASS Node interface: document.doctype must inherit property "ownerDocument" with the proper type (16) +PASS Node interface: document.doctype must inherit property "getRootNode" with the proper type (17) +PASS Node interface: calling getRootNode(GetRootNodeOptions) on document.doctype with too few arguments must throw TypeError +PASS Node interface: document.doctype must inherit property "parentNode" with the proper type (18) +PASS Node interface: document.doctype must inherit property "parentElement" with the proper type (19) +PASS Node interface: document.doctype must inherit property "hasChildNodes" with the proper type (20) +PASS Node interface: document.doctype must inherit property "childNodes" with the proper type (21) +PASS Node interface: document.doctype must inherit property "firstChild" with the proper type (22) +PASS Node interface: document.doctype must inherit property "lastChild" with the proper type (23) +PASS Node interface: document.doctype must inherit property "previousSibling" with the proper type (24) +PASS Node interface: document.doctype must inherit property "nextSibling" with the proper type (25) +PASS Node interface: document.doctype must inherit property "nodeValue" with the proper type (26) +PASS Node interface: document.doctype must inherit property "textContent" with the proper type (27) +PASS Node interface: document.doctype must inherit property "normalize" with the proper type (28) +PASS Node interface: document.doctype must inherit property "cloneNode" with the proper type (29) +PASS Node interface: calling cloneNode(boolean) on document.doctype with too few arguments must throw TypeError +PASS Node interface: document.doctype must inherit property "isEqualNode" with the proper type (30) +PASS Node interface: calling isEqualNode(Node) on document.doctype with too few arguments must throw TypeError +PASS Node interface: document.doctype must inherit property "isSameNode" with the proper type (31) +PASS Node interface: calling isSameNode(Node) on document.doctype with too few arguments must throw TypeError +PASS Node interface: document.doctype must inherit property "DOCUMENT_POSITION_DISCONNECTED" with the proper type (32) +PASS Node interface: document.doctype must inherit property "DOCUMENT_POSITION_PRECEDING" with the proper type (33) +PASS Node interface: document.doctype must inherit property "DOCUMENT_POSITION_FOLLOWING" with the proper type (34) +PASS Node interface: document.doctype must inherit property "DOCUMENT_POSITION_CONTAINS" with the proper type (35) +PASS Node interface: document.doctype must inherit property "DOCUMENT_POSITION_CONTAINED_BY" with the proper type (36) +PASS Node interface: document.doctype must inherit property "DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC" with the proper type (37) +PASS Node interface: document.doctype must inherit property "compareDocumentPosition" with the proper type (38) +PASS Node interface: calling compareDocumentPosition(Node) on document.doctype with too few arguments must throw TypeError +PASS Node interface: document.doctype must inherit property "contains" with the proper type (39) +PASS Node interface: calling contains(Node) on document.doctype with too few arguments must throw TypeError +PASS Node interface: document.doctype must inherit property "lookupPrefix" with the proper type (40) +PASS Node interface: calling lookupPrefix(DOMString) on document.doctype with too few arguments must throw TypeError +PASS Node interface: document.doctype must inherit property "lookupNamespaceURI" with the proper type (41) +PASS Node interface: calling lookupNamespaceURI(DOMString) on document.doctype with too few arguments must throw TypeError +PASS Node interface: document.doctype must inherit property "isDefaultNamespace" with the proper type (42) +PASS Node interface: calling isDefaultNamespace(DOMString) on document.doctype with too few arguments must throw TypeError +PASS Node interface: document.doctype must inherit property "insertBefore" with the proper type (43) +PASS Node interface: calling insertBefore(Node,Node) on document.doctype with too few arguments must throw TypeError +PASS Node interface: document.doctype must inherit property "appendChild" with the proper type (44) +PASS Node interface: calling appendChild(Node) on document.doctype with too few arguments must throw TypeError +PASS Node interface: document.doctype must inherit property "replaceChild" with the proper type (45) +PASS Node interface: calling replaceChild(Node,Node) on document.doctype with too few arguments must throw TypeError +PASS Node interface: document.doctype must inherit property "removeChild" with the proper type (46) +PASS Node interface: calling removeChild(Node) on document.doctype with too few arguments must throw TypeError +PASS EventTarget interface: document.doctype must inherit property "addEventListener" with the proper type (0) +PASS EventTarget interface: calling addEventListener(DOMString,EventListener,[object Object],[object Object]) on document.doctype with too few arguments must throw TypeError +PASS EventTarget interface: document.doctype must inherit property "removeEventListener" with the proper type (1) +PASS EventTarget interface: calling removeEventListener(DOMString,EventListener,[object Object],[object Object]) on document.doctype with too few arguments must throw TypeError +PASS EventTarget interface: document.doctype must inherit property "dispatchEvent" with the proper type (2) +PASS EventTarget interface: calling dispatchEvent(Event) on document.doctype with too few arguments must throw TypeError +PASS DocumentFragment interface: existence and properties of interface object +PASS DocumentFragment interface object length +PASS DocumentFragment interface object name +PASS DocumentFragment interface: existence and properties of interface prototype object +PASS DocumentFragment interface: existence and properties of interface prototype object's "constructor" property +PASS DocumentFragment interface: operation getElementById(DOMString) +PASS DocumentFragment interface: attribute children +PASS DocumentFragment interface: attribute firstElementChild +PASS DocumentFragment interface: attribute lastElementChild +PASS DocumentFragment interface: attribute childElementCount +PASS DocumentFragment interface: operation prepend([object Object],[object Object]) +PASS DocumentFragment interface: operation append([object Object],[object Object]) +PASS DocumentFragment interface: operation querySelector(DOMString) +PASS DocumentFragment interface: operation querySelectorAll(DOMString) +PASS DocumentFragment must be primary interface of document.createDocumentFragment() +PASS Stringification of document.createDocumentFragment() +PASS DocumentFragment interface: document.createDocumentFragment() must inherit property "getElementById" with the proper type (0) +PASS DocumentFragment interface: calling getElementById(DOMString) on document.createDocumentFragment() with too few arguments must throw TypeError +PASS DocumentFragment interface: document.createDocumentFragment() must inherit property "children" with the proper type (1) +PASS DocumentFragment interface: document.createDocumentFragment() must inherit property "firstElementChild" with the proper type (2) +PASS DocumentFragment interface: document.createDocumentFragment() must inherit property "lastElementChild" with the proper type (3) +PASS DocumentFragment interface: document.createDocumentFragment() must inherit property "childElementCount" with the proper type (4) +PASS DocumentFragment interface: document.createDocumentFragment() must inherit property "prepend" with the proper type (5) +PASS DocumentFragment interface: calling prepend([object Object],[object Object]) on document.createDocumentFragment() with too few arguments must throw TypeError +PASS DocumentFragment interface: document.createDocumentFragment() must inherit property "append" with the proper type (6) +PASS DocumentFragment interface: calling append([object Object],[object Object]) on document.createDocumentFragment() with too few arguments must throw TypeError +PASS DocumentFragment interface: document.createDocumentFragment() must inherit property "querySelector" with the proper type (7) +PASS DocumentFragment interface: calling querySelector(DOMString) on document.createDocumentFragment() with too few arguments must throw TypeError +PASS DocumentFragment interface: document.createDocumentFragment() must inherit property "querySelectorAll" with the proper type (8) +PASS DocumentFragment interface: calling querySelectorAll(DOMString) on document.createDocumentFragment() with too few arguments must throw TypeError +PASS Node interface: document.createDocumentFragment() must inherit property "ELEMENT_NODE" with the proper type (0) +PASS Node interface: document.createDocumentFragment() must inherit property "ATTRIBUTE_NODE" with the proper type (1) +PASS Node interface: document.createDocumentFragment() must inherit property "TEXT_NODE" with the proper type (2) +PASS Node interface: document.createDocumentFragment() must inherit property "CDATA_SECTION_NODE" with the proper type (3) +PASS Node interface: document.createDocumentFragment() must inherit property "ENTITY_REFERENCE_NODE" with the proper type (4) +PASS Node interface: document.createDocumentFragment() must inherit property "ENTITY_NODE" with the proper type (5) +PASS Node interface: document.createDocumentFragment() must inherit property "PROCESSING_INSTRUCTION_NODE" with the proper type (6) +PASS Node interface: document.createDocumentFragment() must inherit property "COMMENT_NODE" with the proper type (7) +PASS Node interface: document.createDocumentFragment() must inherit property "DOCUMENT_NODE" with the proper type (8) +PASS Node interface: document.createDocumentFragment() must inherit property "DOCUMENT_TYPE_NODE" with the proper type (9) +PASS Node interface: document.createDocumentFragment() must inherit property "DOCUMENT_FRAGMENT_NODE" with the proper type (10) +PASS Node interface: document.createDocumentFragment() must inherit property "NOTATION_NODE" with the proper type (11) +PASS Node interface: document.createDocumentFragment() must inherit property "nodeType" with the proper type (12) +PASS Node interface: document.createDocumentFragment() must inherit property "nodeName" with the proper type (13) +PASS Node interface: document.createDocumentFragment() must inherit property "baseURI" with the proper type (14) +PASS Node interface: document.createDocumentFragment() must inherit property "isConnected" with the proper type (15) +PASS Node interface: document.createDocumentFragment() must inherit property "ownerDocument" with the proper type (16) +PASS Node interface: document.createDocumentFragment() must inherit property "getRootNode" with the proper type (17) +PASS Node interface: calling getRootNode(GetRootNodeOptions) on document.createDocumentFragment() with too few arguments must throw TypeError +PASS Node interface: document.createDocumentFragment() must inherit property "parentNode" with the proper type (18) +PASS Node interface: document.createDocumentFragment() must inherit property "parentElement" with the proper type (19) +PASS Node interface: document.createDocumentFragment() must inherit property "hasChildNodes" with the proper type (20) +PASS Node interface: document.createDocumentFragment() must inherit property "childNodes" with the proper type (21) +PASS Node interface: document.createDocumentFragment() must inherit property "firstChild" with the proper type (22) +PASS Node interface: document.createDocumentFragment() must inherit property "lastChild" with the proper type (23) +PASS Node interface: document.createDocumentFragment() must inherit property "previousSibling" with the proper type (24) +PASS Node interface: document.createDocumentFragment() must inherit property "nextSibling" with the proper type (25) +PASS Node interface: document.createDocumentFragment() must inherit property "nodeValue" with the proper type (26) +PASS Node interface: document.createDocumentFragment() must inherit property "textContent" with the proper type (27) +PASS Node interface: document.createDocumentFragment() must inherit property "normalize" with the proper type (28) +PASS Node interface: document.createDocumentFragment() must inherit property "cloneNode" with the proper type (29) +PASS Node interface: calling cloneNode(boolean) on document.createDocumentFragment() with too few arguments must throw TypeError +PASS Node interface: document.createDocumentFragment() must inherit property "isEqualNode" with the proper type (30) +PASS Node interface: calling isEqualNode(Node) on document.createDocumentFragment() with too few arguments must throw TypeError +PASS Node interface: document.createDocumentFragment() must inherit property "isSameNode" with the proper type (31) +PASS Node interface: calling isSameNode(Node) on document.createDocumentFragment() with too few arguments must throw TypeError +PASS Node interface: document.createDocumentFragment() must inherit property "DOCUMENT_POSITION_DISCONNECTED" with the proper type (32) +PASS Node interface: document.createDocumentFragment() must inherit property "DOCUMENT_POSITION_PRECEDING" with the proper type (33) +PASS Node interface: document.createDocumentFragment() must inherit property "DOCUMENT_POSITION_FOLLOWING" with the proper type (34) +PASS Node interface: document.createDocumentFragment() must inherit property "DOCUMENT_POSITION_CONTAINS" with the proper type (35) +PASS Node interface: document.createDocumentFragment() must inherit property "DOCUMENT_POSITION_CONTAINED_BY" with the proper type (36) +PASS Node interface: document.createDocumentFragment() must inherit property "DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC" with the proper type (37) +PASS Node interface: document.createDocumentFragment() must inherit property "compareDocumentPosition" with the proper type (38) +PASS Node interface: calling compareDocumentPosition(Node) on document.createDocumentFragment() with too few arguments must throw TypeError +PASS Node interface: document.createDocumentFragment() must inherit property "contains" with the proper type (39) +PASS Node interface: calling contains(Node) on document.createDocumentFragment() with too few arguments must throw TypeError +PASS Node interface: document.createDocumentFragment() must inherit property "lookupPrefix" with the proper type (40) +PASS Node interface: calling lookupPrefix(DOMString) on document.createDocumentFragment() with too few arguments must throw TypeError +PASS Node interface: document.createDocumentFragment() must inherit property "lookupNamespaceURI" with the proper type (41) +PASS Node interface: calling lookupNamespaceURI(DOMString) on document.createDocumentFragment() with too few arguments must throw TypeError +PASS Node interface: document.createDocumentFragment() must inherit property "isDefaultNamespace" with the proper type (42) +PASS Node interface: calling isDefaultNamespace(DOMString) on document.createDocumentFragment() with too few arguments must throw TypeError +PASS Node interface: document.createDocumentFragment() must inherit property "insertBefore" with the proper type (43) +PASS Node interface: calling insertBefore(Node,Node) on document.createDocumentFragment() with too few arguments must throw TypeError +PASS Node interface: document.createDocumentFragment() must inherit property "appendChild" with the proper type (44) +PASS Node interface: calling appendChild(Node) on document.createDocumentFragment() with too few arguments must throw TypeError +PASS Node interface: document.createDocumentFragment() must inherit property "replaceChild" with the proper type (45) +PASS Node interface: calling replaceChild(Node,Node) on document.createDocumentFragment() with too few arguments must throw TypeError +PASS Node interface: document.createDocumentFragment() must inherit property "removeChild" with the proper type (46) +PASS Node interface: calling removeChild(Node) on document.createDocumentFragment() with too few arguments must throw TypeError +PASS EventTarget interface: document.createDocumentFragment() must inherit property "addEventListener" with the proper type (0) +PASS EventTarget interface: calling addEventListener(DOMString,EventListener,[object Object],[object Object]) on document.createDocumentFragment() with too few arguments must throw TypeError +PASS EventTarget interface: document.createDocumentFragment() must inherit property "removeEventListener" with the proper type (1) +PASS EventTarget interface: calling removeEventListener(DOMString,EventListener,[object Object],[object Object]) on document.createDocumentFragment() with too few arguments must throw TypeError +PASS EventTarget interface: document.createDocumentFragment() must inherit property "dispatchEvent" with the proper type (2) +PASS EventTarget interface: calling dispatchEvent(Event) on document.createDocumentFragment() with too few arguments must throw TypeError +PASS ShadowRoot interface: existence and properties of interface object +PASS ShadowRoot interface object length +PASS ShadowRoot interface object name +PASS ShadowRoot interface: existence and properties of interface prototype object +PASS ShadowRoot interface: existence and properties of interface prototype object's "constructor" property +PASS ShadowRoot interface: attribute mode +PASS ShadowRoot interface: attribute host +PASS Element interface: existence and properties of interface object +PASS Element interface object length +PASS Element interface object name +PASS Element interface: existence and properties of interface prototype object +PASS Element interface: existence and properties of interface prototype object's "constructor" property +PASS Element interface: attribute namespaceURI +PASS Element interface: attribute prefix +PASS Element interface: attribute localName +PASS Element interface: attribute tagName +PASS Element interface: attribute id +PASS Element interface: attribute className +PASS Element interface: attribute classList +PASS Element interface: attribute slot +PASS Element interface: operation hasAttributes() +PASS Element interface: attribute attributes +PASS Element interface: operation getAttributeNames() +PASS Element interface: operation getAttribute(DOMString) +PASS Element interface: operation getAttributeNS(DOMString,DOMString) +PASS Element interface: operation setAttribute(DOMString,DOMString) +PASS Element interface: operation setAttributeNS(DOMString,DOMString,DOMString) +PASS Element interface: operation removeAttribute(DOMString) +PASS Element interface: operation removeAttributeNS(DOMString,DOMString) +PASS Element interface: operation hasAttribute(DOMString) +PASS Element interface: operation hasAttributeNS(DOMString,DOMString) +PASS Element interface: operation getAttributeNode(DOMString) +PASS Element interface: operation getAttributeNodeNS(DOMString,DOMString) +PASS Element interface: operation setAttributeNode(Attr) +PASS Element interface: operation setAttributeNodeNS(Attr) +PASS Element interface: operation removeAttributeNode(Attr) +PASS Element interface: operation attachShadow(ShadowRootInit) +PASS Element interface: attribute shadowRoot +PASS Element interface: operation closest(DOMString) +PASS Element interface: operation matches(DOMString) +PASS Element interface: operation webkitMatchesSelector(DOMString) +PASS Element interface: operation getElementsByTagName(DOMString) +PASS Element interface: operation getElementsByTagNameNS(DOMString,DOMString) +PASS Element interface: operation getElementsByClassName(DOMString) +PASS Element interface: operation insertAdjacentElement(DOMString,Element) +PASS Element interface: operation insertAdjacentText(DOMString,DOMString) +PASS Element interface: attribute children +PASS Element interface: attribute firstElementChild +PASS Element interface: attribute lastElementChild +PASS Element interface: attribute childElementCount +PASS Element interface: operation prepend([object Object],[object Object]) +PASS Element interface: operation append([object Object],[object Object]) +PASS Element interface: operation querySelector(DOMString) +PASS Element interface: operation querySelectorAll(DOMString) +PASS Element interface: attribute previousElementSibling +PASS Element interface: attribute nextElementSibling +PASS Element interface: operation before([object Object],[object Object]) +PASS Element interface: operation after([object Object],[object Object]) +PASS Element interface: operation replaceWith([object Object],[object Object]) +PASS Element interface: operation remove() +PASS Element interface: attribute assignedSlot +PASS Element must be primary interface of element +PASS Stringification of element +PASS Element interface: element must inherit property "namespaceURI" with the proper type (0) +PASS Element interface: element must inherit property "prefix" with the proper type (1) +PASS Element interface: element must inherit property "localName" with the proper type (2) +PASS Element interface: element must inherit property "tagName" with the proper type (3) +PASS Element interface: element must inherit property "id" with the proper type (4) +PASS Element interface: element must inherit property "className" with the proper type (5) +PASS Element interface: element must inherit property "classList" with the proper type (6) +PASS Element interface: element must inherit property "slot" with the proper type (7) +PASS Element interface: element must inherit property "hasAttributes" with the proper type (8) +PASS Element interface: element must inherit property "attributes" with the proper type (9) +PASS Element interface: element must inherit property "getAttributeNames" with the proper type (10) +PASS Element interface: element must inherit property "getAttribute" with the proper type (11) +PASS Element interface: calling getAttribute(DOMString) on element with too few arguments must throw TypeError +PASS Element interface: element must inherit property "getAttributeNS" with the proper type (12) +PASS Element interface: calling getAttributeNS(DOMString,DOMString) on element with too few arguments must throw TypeError +PASS Element interface: element must inherit property "setAttribute" with the proper type (13) +PASS Element interface: calling setAttribute(DOMString,DOMString) on element with too few arguments must throw TypeError +PASS Element interface: element must inherit property "setAttributeNS" with the proper type (14) +PASS Element interface: calling setAttributeNS(DOMString,DOMString,DOMString) on element with too few arguments must throw TypeError +PASS Element interface: element must inherit property "removeAttribute" with the proper type (15) +PASS Element interface: calling removeAttribute(DOMString) on element with too few arguments must throw TypeError +PASS Element interface: element must inherit property "removeAttributeNS" with the proper type (16) +PASS Element interface: calling removeAttributeNS(DOMString,DOMString) on element with too few arguments must throw TypeError +PASS Element interface: element must inherit property "hasAttribute" with the proper type (17) +PASS Element interface: calling hasAttribute(DOMString) on element with too few arguments must throw TypeError +PASS Element interface: element must inherit property "hasAttributeNS" with the proper type (18) +PASS Element interface: calling hasAttributeNS(DOMString,DOMString) on element with too few arguments must throw TypeError +PASS Element interface: element must inherit property "getAttributeNode" with the proper type (19) +PASS Element interface: calling getAttributeNode(DOMString) on element with too few arguments must throw TypeError +PASS Element interface: element must inherit property "getAttributeNodeNS" with the proper type (20) +PASS Element interface: calling getAttributeNodeNS(DOMString,DOMString) on element with too few arguments must throw TypeError +PASS Element interface: element must inherit property "setAttributeNode" with the proper type (21) +PASS Element interface: calling setAttributeNode(Attr) on element with too few arguments must throw TypeError +PASS Element interface: element must inherit property "setAttributeNodeNS" with the proper type (22) +PASS Element interface: calling setAttributeNodeNS(Attr) on element with too few arguments must throw TypeError +PASS Element interface: element must inherit property "removeAttributeNode" with the proper type (23) +PASS Element interface: calling removeAttributeNode(Attr) on element with too few arguments must throw TypeError +PASS Element interface: element must inherit property "attachShadow" with the proper type (24) +PASS Element interface: calling attachShadow(ShadowRootInit) on element with too few arguments must throw TypeError +PASS Element interface: element must inherit property "shadowRoot" with the proper type (25) +PASS Element interface: element must inherit property "closest" with the proper type (26) +PASS Element interface: calling closest(DOMString) on element with too few arguments must throw TypeError +PASS Element interface: element must inherit property "matches" with the proper type (27) +PASS Element interface: calling matches(DOMString) on element with too few arguments must throw TypeError +PASS Element interface: element must inherit property "webkitMatchesSelector" with the proper type (28) +PASS Element interface: calling webkitMatchesSelector(DOMString) on element with too few arguments must throw TypeError +PASS Element interface: element must inherit property "getElementsByTagName" with the proper type (29) +PASS Element interface: calling getElementsByTagName(DOMString) on element with too few arguments must throw TypeError +PASS Element interface: element must inherit property "getElementsByTagNameNS" with the proper type (30) +PASS Element interface: calling getElementsByTagNameNS(DOMString,DOMString) on element with too few arguments must throw TypeError +PASS Element interface: element must inherit property "getElementsByClassName" with the proper type (31) +PASS Element interface: calling getElementsByClassName(DOMString) on element with too few arguments must throw TypeError +PASS Element interface: element must inherit property "insertAdjacentElement" with the proper type (32) +PASS Element interface: calling insertAdjacentElement(DOMString,Element) on element with too few arguments must throw TypeError +PASS Element interface: element must inherit property "insertAdjacentText" with the proper type (33) +PASS Element interface: calling insertAdjacentText(DOMString,DOMString) on element with too few arguments must throw TypeError +PASS Element interface: element must inherit property "children" with the proper type (34) +PASS Element interface: element must inherit property "firstElementChild" with the proper type (35) +PASS Element interface: element must inherit property "lastElementChild" with the proper type (36) +PASS Element interface: element must inherit property "childElementCount" with the proper type (37) +PASS Element interface: element must inherit property "prepend" with the proper type (38) +PASS Element interface: calling prepend([object Object],[object Object]) on element with too few arguments must throw TypeError +PASS Element interface: element must inherit property "append" with the proper type (39) +PASS Element interface: calling append([object Object],[object Object]) on element with too few arguments must throw TypeError +PASS Element interface: element must inherit property "querySelector" with the proper type (40) +PASS Element interface: calling querySelector(DOMString) on element with too few arguments must throw TypeError +PASS Element interface: element must inherit property "querySelectorAll" with the proper type (41) +PASS Element interface: calling querySelectorAll(DOMString) on element with too few arguments must throw TypeError +PASS Element interface: element must inherit property "previousElementSibling" with the proper type (42) +PASS Element interface: element must inherit property "nextElementSibling" with the proper type (43) +PASS Element interface: element must inherit property "before" with the proper type (44) +PASS Element interface: calling before([object Object],[object Object]) on element with too few arguments must throw TypeError +PASS Element interface: element must inherit property "after" with the proper type (45) +PASS Element interface: calling after([object Object],[object Object]) on element with too few arguments must throw TypeError +PASS Element interface: element must inherit property "replaceWith" with the proper type (46) +PASS Element interface: calling replaceWith([object Object],[object Object]) on element with too few arguments must throw TypeError +PASS Element interface: element must inherit property "remove" with the proper type (47) +PASS Element interface: element must inherit property "assignedSlot" with the proper type (48) +PASS Node interface: element must inherit property "ELEMENT_NODE" with the proper type (0) +PASS Node interface: element must inherit property "ATTRIBUTE_NODE" with the proper type (1) +PASS Node interface: element must inherit property "TEXT_NODE" with the proper type (2) +PASS Node interface: element must inherit property "CDATA_SECTION_NODE" with the proper type (3) +PASS Node interface: element must inherit property "ENTITY_REFERENCE_NODE" with the proper type (4) +PASS Node interface: element must inherit property "ENTITY_NODE" with the proper type (5) +PASS Node interface: element must inherit property "PROCESSING_INSTRUCTION_NODE" with the proper type (6) +PASS Node interface: element must inherit property "COMMENT_NODE" with the proper type (7) +PASS Node interface: element must inherit property "DOCUMENT_NODE" with the proper type (8) +PASS Node interface: element must inherit property "DOCUMENT_TYPE_NODE" with the proper type (9) +PASS Node interface: element must inherit property "DOCUMENT_FRAGMENT_NODE" with the proper type (10) +PASS Node interface: element must inherit property "NOTATION_NODE" with the proper type (11) +PASS Node interface: element must inherit property "nodeType" with the proper type (12) +PASS Node interface: element must inherit property "nodeName" with the proper type (13) +PASS Node interface: element must inherit property "baseURI" with the proper type (14) +PASS Node interface: element must inherit property "isConnected" with the proper type (15) +PASS Node interface: element must inherit property "ownerDocument" with the proper type (16) +PASS Node interface: element must inherit property "getRootNode" with the proper type (17) +PASS Node interface: calling getRootNode(GetRootNodeOptions) on element with too few arguments must throw TypeError +PASS Node interface: element must inherit property "parentNode" with the proper type (18) +PASS Node interface: element must inherit property "parentElement" with the proper type (19) +PASS Node interface: element must inherit property "hasChildNodes" with the proper type (20) +PASS Node interface: element must inherit property "childNodes" with the proper type (21) +PASS Node interface: element must inherit property "firstChild" with the proper type (22) +PASS Node interface: element must inherit property "lastChild" with the proper type (23) +PASS Node interface: element must inherit property "previousSibling" with the proper type (24) +PASS Node interface: element must inherit property "nextSibling" with the proper type (25) +PASS Node interface: element must inherit property "nodeValue" with the proper type (26) +PASS Node interface: element must inherit property "textContent" with the proper type (27) +PASS Node interface: element must inherit property "normalize" with the proper type (28) +PASS Node interface: element must inherit property "cloneNode" with the proper type (29) +PASS Node interface: calling cloneNode(boolean) on element with too few arguments must throw TypeError +PASS Node interface: element must inherit property "isEqualNode" with the proper type (30) +PASS Node interface: calling isEqualNode(Node) on element with too few arguments must throw TypeError +PASS Node interface: element must inherit property "isSameNode" with the proper type (31) +PASS Node interface: calling isSameNode(Node) on element with too few arguments must throw TypeError +PASS Node interface: element must inherit property "DOCUMENT_POSITION_DISCONNECTED" with the proper type (32) +PASS Node interface: element must inherit property "DOCUMENT_POSITION_PRECEDING" with the proper type (33) +PASS Node interface: element must inherit property "DOCUMENT_POSITION_FOLLOWING" with the proper type (34) +PASS Node interface: element must inherit property "DOCUMENT_POSITION_CONTAINS" with the proper type (35) +PASS Node interface: element must inherit property "DOCUMENT_POSITION_CONTAINED_BY" with the proper type (36) +PASS Node interface: element must inherit property "DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC" with the proper type (37) +PASS Node interface: element must inherit property "compareDocumentPosition" with the proper type (38) +PASS Node interface: calling compareDocumentPosition(Node) on element with too few arguments must throw TypeError +PASS Node interface: element must inherit property "contains" with the proper type (39) +PASS Node interface: calling contains(Node) on element with too few arguments must throw TypeError +PASS Node interface: element must inherit property "lookupPrefix" with the proper type (40) +PASS Node interface: calling lookupPrefix(DOMString) on element with too few arguments must throw TypeError +PASS Node interface: element must inherit property "lookupNamespaceURI" with the proper type (41) +PASS Node interface: calling lookupNamespaceURI(DOMString) on element with too few arguments must throw TypeError +PASS Node interface: element must inherit property "isDefaultNamespace" with the proper type (42) +PASS Node interface: calling isDefaultNamespace(DOMString) on element with too few arguments must throw TypeError +PASS Node interface: element must inherit property "insertBefore" with the proper type (43) +PASS Node interface: calling insertBefore(Node,Node) on element with too few arguments must throw TypeError +PASS Node interface: element must inherit property "appendChild" with the proper type (44) +PASS Node interface: calling appendChild(Node) on element with too few arguments must throw TypeError +PASS Node interface: element must inherit property "replaceChild" with the proper type (45) +PASS Node interface: calling replaceChild(Node,Node) on element with too few arguments must throw TypeError +PASS Node interface: element must inherit property "removeChild" with the proper type (46) +PASS Node interface: calling removeChild(Node) on element with too few arguments must throw TypeError +PASS EventTarget interface: element must inherit property "addEventListener" with the proper type (0) +PASS EventTarget interface: calling addEventListener(DOMString,EventListener,[object Object],[object Object]) on element with too few arguments must throw TypeError +PASS EventTarget interface: element must inherit property "removeEventListener" with the proper type (1) +PASS EventTarget interface: calling removeEventListener(DOMString,EventListener,[object Object],[object Object]) on element with too few arguments must throw TypeError +PASS EventTarget interface: element must inherit property "dispatchEvent" with the proper type (2) +PASS EventTarget interface: calling dispatchEvent(Event) on element with too few arguments must throw TypeError +PASS NamedNodeMap interface: existence and properties of interface object +PASS NamedNodeMap interface object length +PASS NamedNodeMap interface object name +PASS NamedNodeMap interface: existence and properties of interface prototype object +PASS NamedNodeMap interface: existence and properties of interface prototype object's "constructor" property +PASS NamedNodeMap interface: attribute length +PASS NamedNodeMap interface: operation item(unsigned long) +PASS NamedNodeMap interface: operation getNamedItem(DOMString) +PASS NamedNodeMap interface: operation getNamedItemNS(DOMString,DOMString) +PASS NamedNodeMap interface: operation setNamedItem(Attr) +PASS NamedNodeMap interface: operation setNamedItemNS(Attr) +PASS NamedNodeMap interface: operation removeNamedItem(DOMString) +PASS NamedNodeMap interface: operation removeNamedItemNS(DOMString,DOMString) +PASS Attr interface: existence and properties of interface object +PASS Attr interface object length +PASS Attr interface object name +PASS Attr interface: existence and properties of interface prototype object +PASS Attr interface: existence and properties of interface prototype object's "constructor" property +PASS Attr interface: attribute namespaceURI +PASS Attr interface: attribute prefix +PASS Attr interface: attribute localName +PASS Attr interface: attribute name +PASS Attr interface: attribute value +PASS Attr interface: attribute ownerElement +PASS Attr interface: attribute specified +PASS Attr must be primary interface of document.querySelector("[id]").attributes[0] +PASS Stringification of document.querySelector("[id]").attributes[0] +PASS Attr interface: document.querySelector("[id]").attributes[0] must inherit property "namespaceURI" with the proper type (0) +PASS Attr interface: document.querySelector("[id]").attributes[0] must inherit property "prefix" with the proper type (1) +PASS Attr interface: document.querySelector("[id]").attributes[0] must inherit property "localName" with the proper type (2) +PASS Attr interface: document.querySelector("[id]").attributes[0] must inherit property "name" with the proper type (3) +PASS Attr interface: document.querySelector("[id]").attributes[0] must inherit property "value" with the proper type (4) +PASS Attr interface: document.querySelector("[id]").attributes[0] must inherit property "ownerElement" with the proper type (5) +PASS Attr interface: document.querySelector("[id]").attributes[0] must inherit property "specified" with the proper type (6) +PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "ELEMENT_NODE" with the proper type (0) +PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "ATTRIBUTE_NODE" with the proper type (1) +PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "TEXT_NODE" with the proper type (2) +PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "CDATA_SECTION_NODE" with the proper type (3) +PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "ENTITY_REFERENCE_NODE" with the proper type (4) +PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "ENTITY_NODE" with the proper type (5) +PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "PROCESSING_INSTRUCTION_NODE" with the proper type (6) +PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "COMMENT_NODE" with the proper type (7) +PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "DOCUMENT_NODE" with the proper type (8) +PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "DOCUMENT_TYPE_NODE" with the proper type (9) +PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "DOCUMENT_FRAGMENT_NODE" with the proper type (10) +PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "NOTATION_NODE" with the proper type (11) +PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "nodeType" with the proper type (12) +PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "nodeName" with the proper type (13) +PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "baseURI" with the proper type (14) +PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "isConnected" with the proper type (15) +PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "ownerDocument" with the proper type (16) +PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "getRootNode" with the proper type (17) +PASS Node interface: calling getRootNode(GetRootNodeOptions) on document.querySelector("[id]").attributes[0] with too few arguments must throw TypeError +PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "parentNode" with the proper type (18) +PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "parentElement" with the proper type (19) +PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "hasChildNodes" with the proper type (20) +PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "childNodes" with the proper type (21) +PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "firstChild" with the proper type (22) +PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "lastChild" with the proper type (23) +PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "previousSibling" with the proper type (24) +PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "nextSibling" with the proper type (25) +PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "nodeValue" with the proper type (26) +PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "textContent" with the proper type (27) +PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "normalize" with the proper type (28) +PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "cloneNode" with the proper type (29) +PASS Node interface: calling cloneNode(boolean) on document.querySelector("[id]").attributes[0] with too few arguments must throw TypeError +PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "isEqualNode" with the proper type (30) +PASS Node interface: calling isEqualNode(Node) on document.querySelector("[id]").attributes[0] with too few arguments must throw TypeError +PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "isSameNode" with the proper type (31) +PASS Node interface: calling isSameNode(Node) on document.querySelector("[id]").attributes[0] with too few arguments must throw TypeError +PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "DOCUMENT_POSITION_DISCONNECTED" with the proper type (32) +PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "DOCUMENT_POSITION_PRECEDING" with the proper type (33) +PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "DOCUMENT_POSITION_FOLLOWING" with the proper type (34) +PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "DOCUMENT_POSITION_CONTAINS" with the proper type (35) +PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "DOCUMENT_POSITION_CONTAINED_BY" with the proper type (36) +PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC" with the proper type (37) +PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "compareDocumentPosition" with the proper type (38) +PASS Node interface: calling compareDocumentPosition(Node) on document.querySelector("[id]").attributes[0] with too few arguments must throw TypeError +PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "contains" with the proper type (39) +PASS Node interface: calling contains(Node) on document.querySelector("[id]").attributes[0] with too few arguments must throw TypeError +PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "lookupPrefix" with the proper type (40) +PASS Node interface: calling lookupPrefix(DOMString) on document.querySelector("[id]").attributes[0] with too few arguments must throw TypeError +PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "lookupNamespaceURI" with the proper type (41) +PASS Node interface: calling lookupNamespaceURI(DOMString) on document.querySelector("[id]").attributes[0] with too few arguments must throw TypeError +PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "isDefaultNamespace" with the proper type (42) +PASS Node interface: calling isDefaultNamespace(DOMString) on document.querySelector("[id]").attributes[0] with too few arguments must throw TypeError +PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "insertBefore" with the proper type (43) +PASS Node interface: calling insertBefore(Node,Node) on document.querySelector("[id]").attributes[0] with too few arguments must throw TypeError +PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "appendChild" with the proper type (44) +PASS Node interface: calling appendChild(Node) on document.querySelector("[id]").attributes[0] with too few arguments must throw TypeError +PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "replaceChild" with the proper type (45) +PASS Node interface: calling replaceChild(Node,Node) on document.querySelector("[id]").attributes[0] with too few arguments must throw TypeError +PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "removeChild" with the proper type (46) +PASS Node interface: calling removeChild(Node) on document.querySelector("[id]").attributes[0] with too few arguments must throw TypeError +PASS EventTarget interface: document.querySelector("[id]").attributes[0] must inherit property "addEventListener" with the proper type (0) +PASS EventTarget interface: calling addEventListener(DOMString,EventListener,[object Object],[object Object]) on document.querySelector("[id]").attributes[0] with too few arguments must throw TypeError +PASS EventTarget interface: document.querySelector("[id]").attributes[0] must inherit property "removeEventListener" with the proper type (1) +PASS EventTarget interface: calling removeEventListener(DOMString,EventListener,[object Object],[object Object]) on document.querySelector("[id]").attributes[0] with too few arguments must throw TypeError +PASS EventTarget interface: document.querySelector("[id]").attributes[0] must inherit property "dispatchEvent" with the proper type (2) +PASS EventTarget interface: calling dispatchEvent(Event) on document.querySelector("[id]").attributes[0] with too few arguments must throw TypeError +PASS CharacterData interface: existence and properties of interface object +PASS CharacterData interface object length +PASS CharacterData interface object name +PASS CharacterData interface: existence and properties of interface prototype object +PASS CharacterData interface: existence and properties of interface prototype object's "constructor" property +PASS CharacterData interface: attribute data +PASS CharacterData interface: attribute length +PASS CharacterData interface: operation substringData(unsigned long,unsigned long) +PASS CharacterData interface: operation appendData(DOMString) +PASS CharacterData interface: operation insertData(unsigned long,DOMString) +PASS CharacterData interface: operation deleteData(unsigned long,unsigned long) +PASS CharacterData interface: operation replaceData(unsigned long,unsigned long,DOMString) +PASS CharacterData interface: attribute previousElementSibling +PASS CharacterData interface: attribute nextElementSibling +PASS CharacterData interface: operation before([object Object],[object Object]) +PASS CharacterData interface: operation after([object Object],[object Object]) +PASS CharacterData interface: operation replaceWith([object Object],[object Object]) +PASS CharacterData interface: operation remove() +PASS Text interface: existence and properties of interface object +PASS Text interface object length +PASS Text interface object name +PASS Text interface: existence and properties of interface prototype object +PASS Text interface: existence and properties of interface prototype object's "constructor" property +PASS Text interface: operation splitText(unsigned long) +PASS Text interface: attribute wholeText +PASS Text interface: attribute assignedSlot +PASS Text must be primary interface of document.createTextNode("abc") +PASS Stringification of document.createTextNode("abc") +PASS Text interface: document.createTextNode("abc") must inherit property "splitText" with the proper type (0) +PASS Text interface: calling splitText(unsigned long) on document.createTextNode("abc") with too few arguments must throw TypeError +PASS Text interface: document.createTextNode("abc") must inherit property "wholeText" with the proper type (1) +PASS Text interface: document.createTextNode("abc") must inherit property "assignedSlot" with the proper type (2) +PASS CharacterData interface: document.createTextNode("abc") must inherit property "data" with the proper type (0) +PASS CharacterData interface: document.createTextNode("abc") must inherit property "length" with the proper type (1) +PASS CharacterData interface: document.createTextNode("abc") must inherit property "substringData" with the proper type (2) +PASS CharacterData interface: calling substringData(unsigned long,unsigned long) on document.createTextNode("abc") with too few arguments must throw TypeError +PASS CharacterData interface: document.createTextNode("abc") must inherit property "appendData" with the proper type (3) +PASS CharacterData interface: calling appendData(DOMString) on document.createTextNode("abc") with too few arguments must throw TypeError +PASS CharacterData interface: document.createTextNode("abc") must inherit property "insertData" with the proper type (4) +PASS CharacterData interface: calling insertData(unsigned long,DOMString) on document.createTextNode("abc") with too few arguments must throw TypeError +PASS CharacterData interface: document.createTextNode("abc") must inherit property "deleteData" with the proper type (5) +PASS CharacterData interface: calling deleteData(unsigned long,unsigned long) on document.createTextNode("abc") with too few arguments must throw TypeError +PASS CharacterData interface: document.createTextNode("abc") must inherit property "replaceData" with the proper type (6) +PASS CharacterData interface: calling replaceData(unsigned long,unsigned long,DOMString) on document.createTextNode("abc") with too few arguments must throw TypeError +PASS CharacterData interface: document.createTextNode("abc") must inherit property "previousElementSibling" with the proper type (7) +PASS CharacterData interface: document.createTextNode("abc") must inherit property "nextElementSibling" with the proper type (8) +PASS CharacterData interface: document.createTextNode("abc") must inherit property "before" with the proper type (9) +PASS CharacterData interface: calling before([object Object],[object Object]) on document.createTextNode("abc") with too few arguments must throw TypeError +PASS CharacterData interface: document.createTextNode("abc") must inherit property "after" with the proper type (10) +PASS CharacterData interface: calling after([object Object],[object Object]) on document.createTextNode("abc") with too few arguments must throw TypeError +PASS CharacterData interface: document.createTextNode("abc") must inherit property "replaceWith" with the proper type (11) +PASS CharacterData interface: calling replaceWith([object Object],[object Object]) on document.createTextNode("abc") with too few arguments must throw TypeError +PASS CharacterData interface: document.createTextNode("abc") must inherit property "remove" with the proper type (12) +PASS Node interface: document.createTextNode("abc") must inherit property "ELEMENT_NODE" with the proper type (0) +PASS Node interface: document.createTextNode("abc") must inherit property "ATTRIBUTE_NODE" with the proper type (1) +PASS Node interface: document.createTextNode("abc") must inherit property "TEXT_NODE" with the proper type (2) +PASS Node interface: document.createTextNode("abc") must inherit property "CDATA_SECTION_NODE" with the proper type (3) +PASS Node interface: document.createTextNode("abc") must inherit property "ENTITY_REFERENCE_NODE" with the proper type (4) +PASS Node interface: document.createTextNode("abc") must inherit property "ENTITY_NODE" with the proper type (5) +PASS Node interface: document.createTextNode("abc") must inherit property "PROCESSING_INSTRUCTION_NODE" with the proper type (6) +PASS Node interface: document.createTextNode("abc") must inherit property "COMMENT_NODE" with the proper type (7) +PASS Node interface: document.createTextNode("abc") must inherit property "DOCUMENT_NODE" with the proper type (8) +PASS Node interface: document.createTextNode("abc") must inherit property "DOCUMENT_TYPE_NODE" with the proper type (9) +PASS Node interface: document.createTextNode("abc") must inherit property "DOCUMENT_FRAGMENT_NODE" with the proper type (10) +PASS Node interface: document.createTextNode("abc") must inherit property "NOTATION_NODE" with the proper type (11) +PASS Node interface: document.createTextNode("abc") must inherit property "nodeType" with the proper type (12) +PASS Node interface: document.createTextNode("abc") must inherit property "nodeName" with the proper type (13) +PASS Node interface: document.createTextNode("abc") must inherit property "baseURI" with the proper type (14) +PASS Node interface: document.createTextNode("abc") must inherit property "isConnected" with the proper type (15) +PASS Node interface: document.createTextNode("abc") must inherit property "ownerDocument" with the proper type (16) +PASS Node interface: document.createTextNode("abc") must inherit property "getRootNode" with the proper type (17) +PASS Node interface: calling getRootNode(GetRootNodeOptions) on document.createTextNode("abc") with too few arguments must throw TypeError +PASS Node interface: document.createTextNode("abc") must inherit property "parentNode" with the proper type (18) +PASS Node interface: document.createTextNode("abc") must inherit property "parentElement" with the proper type (19) +PASS Node interface: document.createTextNode("abc") must inherit property "hasChildNodes" with the proper type (20) +PASS Node interface: document.createTextNode("abc") must inherit property "childNodes" with the proper type (21) +PASS Node interface: document.createTextNode("abc") must inherit property "firstChild" with the proper type (22) +PASS Node interface: document.createTextNode("abc") must inherit property "lastChild" with the proper type (23) +PASS Node interface: document.createTextNode("abc") must inherit property "previousSibling" with the proper type (24) +PASS Node interface: document.createTextNode("abc") must inherit property "nextSibling" with the proper type (25) +PASS Node interface: document.createTextNode("abc") must inherit property "nodeValue" with the proper type (26) +PASS Node interface: document.createTextNode("abc") must inherit property "textContent" with the proper type (27) +PASS Node interface: document.createTextNode("abc") must inherit property "normalize" with the proper type (28) +PASS Node interface: document.createTextNode("abc") must inherit property "cloneNode" with the proper type (29) +PASS Node interface: calling cloneNode(boolean) on document.createTextNode("abc") with too few arguments must throw TypeError +PASS Node interface: document.createTextNode("abc") must inherit property "isEqualNode" with the proper type (30) +PASS Node interface: calling isEqualNode(Node) on document.createTextNode("abc") with too few arguments must throw TypeError +PASS Node interface: document.createTextNode("abc") must inherit property "isSameNode" with the proper type (31) +PASS Node interface: calling isSameNode(Node) on document.createTextNode("abc") with too few arguments must throw TypeError +PASS Node interface: document.createTextNode("abc") must inherit property "DOCUMENT_POSITION_DISCONNECTED" with the proper type (32) +PASS Node interface: document.createTextNode("abc") must inherit property "DOCUMENT_POSITION_PRECEDING" with the proper type (33) +PASS Node interface: document.createTextNode("abc") must inherit property "DOCUMENT_POSITION_FOLLOWING" with the proper type (34) +PASS Node interface: document.createTextNode("abc") must inherit property "DOCUMENT_POSITION_CONTAINS" with the proper type (35) +PASS Node interface: document.createTextNode("abc") must inherit property "DOCUMENT_POSITION_CONTAINED_BY" with the proper type (36) +PASS Node interface: document.createTextNode("abc") must inherit property "DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC" with the proper type (37) +PASS Node interface: document.createTextNode("abc") must inherit property "compareDocumentPosition" with the proper type (38) +PASS Node interface: calling compareDocumentPosition(Node) on document.createTextNode("abc") with too few arguments must throw TypeError +PASS Node interface: document.createTextNode("abc") must inherit property "contains" with the proper type (39) +PASS Node interface: calling contains(Node) on document.createTextNode("abc") with too few arguments must throw TypeError +PASS Node interface: document.createTextNode("abc") must inherit property "lookupPrefix" with the proper type (40) +PASS Node interface: calling lookupPrefix(DOMString) on document.createTextNode("abc") with too few arguments must throw TypeError +PASS Node interface: document.createTextNode("abc") must inherit property "lookupNamespaceURI" with the proper type (41) +PASS Node interface: calling lookupNamespaceURI(DOMString) on document.createTextNode("abc") with too few arguments must throw TypeError +PASS Node interface: document.createTextNode("abc") must inherit property "isDefaultNamespace" with the proper type (42) +PASS Node interface: calling isDefaultNamespace(DOMString) on document.createTextNode("abc") with too few arguments must throw TypeError +PASS Node interface: document.createTextNode("abc") must inherit property "insertBefore" with the proper type (43) +PASS Node interface: calling insertBefore(Node,Node) on document.createTextNode("abc") with too few arguments must throw TypeError +PASS Node interface: document.createTextNode("abc") must inherit property "appendChild" with the proper type (44) +PASS Node interface: calling appendChild(Node) on document.createTextNode("abc") with too few arguments must throw TypeError +PASS Node interface: document.createTextNode("abc") must inherit property "replaceChild" with the proper type (45) +PASS Node interface: calling replaceChild(Node,Node) on document.createTextNode("abc") with too few arguments must throw TypeError +PASS Node interface: document.createTextNode("abc") must inherit property "removeChild" with the proper type (46) +PASS Node interface: calling removeChild(Node) on document.createTextNode("abc") with too few arguments must throw TypeError +PASS EventTarget interface: document.createTextNode("abc") must inherit property "addEventListener" with the proper type (0) +PASS EventTarget interface: calling addEventListener(DOMString,EventListener,[object Object],[object Object]) on document.createTextNode("abc") with too few arguments must throw TypeError +PASS EventTarget interface: document.createTextNode("abc") must inherit property "removeEventListener" with the proper type (1) +PASS EventTarget interface: calling removeEventListener(DOMString,EventListener,[object Object],[object Object]) on document.createTextNode("abc") with too few arguments must throw TypeError +PASS EventTarget interface: document.createTextNode("abc") must inherit property "dispatchEvent" with the proper type (2) +PASS EventTarget interface: calling dispatchEvent(Event) on document.createTextNode("abc") with too few arguments must throw TypeError +PASS CDATASection interface: existence and properties of interface object +PASS CDATASection interface object length +PASS CDATASection interface object name +PASS CDATASection interface: existence and properties of interface prototype object +PASS CDATASection interface: existence and properties of interface prototype object's "constructor" property +PASS ProcessingInstruction interface: existence and properties of interface object +PASS ProcessingInstruction interface object length +PASS ProcessingInstruction interface object name +PASS ProcessingInstruction interface: existence and properties of interface prototype object +PASS ProcessingInstruction interface: existence and properties of interface prototype object's "constructor" property +PASS ProcessingInstruction interface: attribute target +PASS ProcessingInstruction must be primary interface of xmlDoc.createProcessingInstruction("abc", "def") +PASS Stringification of xmlDoc.createProcessingInstruction("abc", "def") +PASS ProcessingInstruction interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "target" with the proper type (0) +PASS CharacterData interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "data" with the proper type (0) +PASS CharacterData interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "length" with the proper type (1) +PASS CharacterData interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "substringData" with the proper type (2) +PASS CharacterData interface: calling substringData(unsigned long,unsigned long) on xmlDoc.createProcessingInstruction("abc", "def") with too few arguments must throw TypeError +PASS CharacterData interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "appendData" with the proper type (3) +PASS CharacterData interface: calling appendData(DOMString) on xmlDoc.createProcessingInstruction("abc", "def") with too few arguments must throw TypeError +PASS CharacterData interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "insertData" with the proper type (4) +PASS CharacterData interface: calling insertData(unsigned long,DOMString) on xmlDoc.createProcessingInstruction("abc", "def") with too few arguments must throw TypeError +PASS CharacterData interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "deleteData" with the proper type (5) +PASS CharacterData interface: calling deleteData(unsigned long,unsigned long) on xmlDoc.createProcessingInstruction("abc", "def") with too few arguments must throw TypeError +PASS CharacterData interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "replaceData" with the proper type (6) +PASS CharacterData interface: calling replaceData(unsigned long,unsigned long,DOMString) on xmlDoc.createProcessingInstruction("abc", "def") with too few arguments must throw TypeError +PASS CharacterData interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "previousElementSibling" with the proper type (7) +PASS CharacterData interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "nextElementSibling" with the proper type (8) +PASS CharacterData interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "before" with the proper type (9) +PASS CharacterData interface: calling before([object Object],[object Object]) on xmlDoc.createProcessingInstruction("abc", "def") with too few arguments must throw TypeError +PASS CharacterData interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "after" with the proper type (10) +PASS CharacterData interface: calling after([object Object],[object Object]) on xmlDoc.createProcessingInstruction("abc", "def") with too few arguments must throw TypeError +PASS CharacterData interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "replaceWith" with the proper type (11) +PASS CharacterData interface: calling replaceWith([object Object],[object Object]) on xmlDoc.createProcessingInstruction("abc", "def") with too few arguments must throw TypeError +PASS CharacterData interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "remove" with the proper type (12) +PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "ELEMENT_NODE" with the proper type (0) +PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "ATTRIBUTE_NODE" with the proper type (1) +PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "TEXT_NODE" with the proper type (2) +PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "CDATA_SECTION_NODE" with the proper type (3) +PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "ENTITY_REFERENCE_NODE" with the proper type (4) +PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "ENTITY_NODE" with the proper type (5) +PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "PROCESSING_INSTRUCTION_NODE" with the proper type (6) +PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "COMMENT_NODE" with the proper type (7) +PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "DOCUMENT_NODE" with the proper type (8) +PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "DOCUMENT_TYPE_NODE" with the proper type (9) +PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "DOCUMENT_FRAGMENT_NODE" with the proper type (10) +PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "NOTATION_NODE" with the proper type (11) +PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "nodeType" with the proper type (12) +PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "nodeName" with the proper type (13) +PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "baseURI" with the proper type (14) +PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "isConnected" with the proper type (15) +PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "ownerDocument" with the proper type (16) +PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "getRootNode" with the proper type (17) +PASS Node interface: calling getRootNode(GetRootNodeOptions) on xmlDoc.createProcessingInstruction("abc", "def") with too few arguments must throw TypeError +PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "parentNode" with the proper type (18) +PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "parentElement" with the proper type (19) +PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "hasChildNodes" with the proper type (20) +PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "childNodes" with the proper type (21) +PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "firstChild" with the proper type (22) +PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "lastChild" with the proper type (23) +PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "previousSibling" with the proper type (24) +PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "nextSibling" with the proper type (25) +PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "nodeValue" with the proper type (26) +PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "textContent" with the proper type (27) +PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "normalize" with the proper type (28) +PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "cloneNode" with the proper type (29) +PASS Node interface: calling cloneNode(boolean) on xmlDoc.createProcessingInstruction("abc", "def") with too few arguments must throw TypeError +PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "isEqualNode" with the proper type (30) +PASS Node interface: calling isEqualNode(Node) on xmlDoc.createProcessingInstruction("abc", "def") with too few arguments must throw TypeError +PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "isSameNode" with the proper type (31) +PASS Node interface: calling isSameNode(Node) on xmlDoc.createProcessingInstruction("abc", "def") with too few arguments must throw TypeError +PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "DOCUMENT_POSITION_DISCONNECTED" with the proper type (32) +PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "DOCUMENT_POSITION_PRECEDING" with the proper type (33) +PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "DOCUMENT_POSITION_FOLLOWING" with the proper type (34) +PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "DOCUMENT_POSITION_CONTAINS" with the proper type (35) +PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "DOCUMENT_POSITION_CONTAINED_BY" with the proper type (36) +PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC" with the proper type (37) +PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "compareDocumentPosition" with the proper type (38) +PASS Node interface: calling compareDocumentPosition(Node) on xmlDoc.createProcessingInstruction("abc", "def") with too few arguments must throw TypeError +PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "contains" with the proper type (39) +PASS Node interface: calling contains(Node) on xmlDoc.createProcessingInstruction("abc", "def") with too few arguments must throw TypeError +PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "lookupPrefix" with the proper type (40) +PASS Node interface: calling lookupPrefix(DOMString) on xmlDoc.createProcessingInstruction("abc", "def") with too few arguments must throw TypeError +PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "lookupNamespaceURI" with the proper type (41) +PASS Node interface: calling lookupNamespaceURI(DOMString) on xmlDoc.createProcessingInstruction("abc", "def") with too few arguments must throw TypeError +PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "isDefaultNamespace" with the proper type (42) +PASS Node interface: calling isDefaultNamespace(DOMString) on xmlDoc.createProcessingInstruction("abc", "def") with too few arguments must throw TypeError +PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "insertBefore" with the proper type (43) +PASS Node interface: calling insertBefore(Node,Node) on xmlDoc.createProcessingInstruction("abc", "def") with too few arguments must throw TypeError +PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "appendChild" with the proper type (44) +PASS Node interface: calling appendChild(Node) on xmlDoc.createProcessingInstruction("abc", "def") with too few arguments must throw TypeError +PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "replaceChild" with the proper type (45) +PASS Node interface: calling replaceChild(Node,Node) on xmlDoc.createProcessingInstruction("abc", "def") with too few arguments must throw TypeError +PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "removeChild" with the proper type (46) +PASS Node interface: calling removeChild(Node) on xmlDoc.createProcessingInstruction("abc", "def") with too few arguments must throw TypeError +PASS EventTarget interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "addEventListener" with the proper type (0) +PASS EventTarget interface: calling addEventListener(DOMString,EventListener,[object Object],[object Object]) on xmlDoc.createProcessingInstruction("abc", "def") with too few arguments must throw TypeError +PASS EventTarget interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "removeEventListener" with the proper type (1) +PASS EventTarget interface: calling removeEventListener(DOMString,EventListener,[object Object],[object Object]) on xmlDoc.createProcessingInstruction("abc", "def") with too few arguments must throw TypeError +PASS EventTarget interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "dispatchEvent" with the proper type (2) +PASS EventTarget interface: calling dispatchEvent(Event) on xmlDoc.createProcessingInstruction("abc", "def") with too few arguments must throw TypeError +PASS Comment interface: existence and properties of interface object +PASS Comment interface object length +PASS Comment interface object name +PASS Comment interface: existence and properties of interface prototype object +PASS Comment interface: existence and properties of interface prototype object's "constructor" property +PASS Comment must be primary interface of document.createComment("abc") +PASS Stringification of document.createComment("abc") +PASS CharacterData interface: document.createComment("abc") must inherit property "data" with the proper type (0) +PASS CharacterData interface: document.createComment("abc") must inherit property "length" with the proper type (1) +PASS CharacterData interface: document.createComment("abc") must inherit property "substringData" with the proper type (2) +PASS CharacterData interface: calling substringData(unsigned long,unsigned long) on document.createComment("abc") with too few arguments must throw TypeError +PASS CharacterData interface: document.createComment("abc") must inherit property "appendData" with the proper type (3) +PASS CharacterData interface: calling appendData(DOMString) on document.createComment("abc") with too few arguments must throw TypeError +PASS CharacterData interface: document.createComment("abc") must inherit property "insertData" with the proper type (4) +PASS CharacterData interface: calling insertData(unsigned long,DOMString) on document.createComment("abc") with too few arguments must throw TypeError +PASS CharacterData interface: document.createComment("abc") must inherit property "deleteData" with the proper type (5) +PASS CharacterData interface: calling deleteData(unsigned long,unsigned long) on document.createComment("abc") with too few arguments must throw TypeError +PASS CharacterData interface: document.createComment("abc") must inherit property "replaceData" with the proper type (6) +PASS CharacterData interface: calling replaceData(unsigned long,unsigned long,DOMString) on document.createComment("abc") with too few arguments must throw TypeError +PASS CharacterData interface: document.createComment("abc") must inherit property "previousElementSibling" with the proper type (7) +PASS CharacterData interface: document.createComment("abc") must inherit property "nextElementSibling" with the proper type (8) +PASS CharacterData interface: document.createComment("abc") must inherit property "before" with the proper type (9) +PASS CharacterData interface: calling before([object Object],[object Object]) on document.createComment("abc") with too few arguments must throw TypeError +PASS CharacterData interface: document.createComment("abc") must inherit property "after" with the proper type (10) +PASS CharacterData interface: calling after([object Object],[object Object]) on document.createComment("abc") with too few arguments must throw TypeError +PASS CharacterData interface: document.createComment("abc") must inherit property "replaceWith" with the proper type (11) +PASS CharacterData interface: calling replaceWith([object Object],[object Object]) on document.createComment("abc") with too few arguments must throw TypeError +PASS CharacterData interface: document.createComment("abc") must inherit property "remove" with the proper type (12) +PASS Node interface: document.createComment("abc") must inherit property "ELEMENT_NODE" with the proper type (0) +PASS Node interface: document.createComment("abc") must inherit property "ATTRIBUTE_NODE" with the proper type (1) +PASS Node interface: document.createComment("abc") must inherit property "TEXT_NODE" with the proper type (2) +PASS Node interface: document.createComment("abc") must inherit property "CDATA_SECTION_NODE" with the proper type (3) +PASS Node interface: document.createComment("abc") must inherit property "ENTITY_REFERENCE_NODE" with the proper type (4) +PASS Node interface: document.createComment("abc") must inherit property "ENTITY_NODE" with the proper type (5) +PASS Node interface: document.createComment("abc") must inherit property "PROCESSING_INSTRUCTION_NODE" with the proper type (6) +PASS Node interface: document.createComment("abc") must inherit property "COMMENT_NODE" with the proper type (7) +PASS Node interface: document.createComment("abc") must inherit property "DOCUMENT_NODE" with the proper type (8) +PASS Node interface: document.createComment("abc") must inherit property "DOCUMENT_TYPE_NODE" with the proper type (9) +PASS Node interface: document.createComment("abc") must inherit property "DOCUMENT_FRAGMENT_NODE" with the proper type (10) +PASS Node interface: document.createComment("abc") must inherit property "NOTATION_NODE" with the proper type (11) +PASS Node interface: document.createComment("abc") must inherit property "nodeType" with the proper type (12) +PASS Node interface: document.createComment("abc") must inherit property "nodeName" with the proper type (13) +PASS Node interface: document.createComment("abc") must inherit property "baseURI" with the proper type (14) +PASS Node interface: document.createComment("abc") must inherit property "isConnected" with the proper type (15) +PASS Node interface: document.createComment("abc") must inherit property "ownerDocument" with the proper type (16) +PASS Node interface: document.createComment("abc") must inherit property "getRootNode" with the proper type (17) +PASS Node interface: calling getRootNode(GetRootNodeOptions) on document.createComment("abc") with too few arguments must throw TypeError +PASS Node interface: document.createComment("abc") must inherit property "parentNode" with the proper type (18) +PASS Node interface: document.createComment("abc") must inherit property "parentElement" with the proper type (19) +PASS Node interface: document.createComment("abc") must inherit property "hasChildNodes" with the proper type (20) +PASS Node interface: document.createComment("abc") must inherit property "childNodes" with the proper type (21) +PASS Node interface: document.createComment("abc") must inherit property "firstChild" with the proper type (22) +PASS Node interface: document.createComment("abc") must inherit property "lastChild" with the proper type (23) +PASS Node interface: document.createComment("abc") must inherit property "previousSibling" with the proper type (24) +PASS Node interface: document.createComment("abc") must inherit property "nextSibling" with the proper type (25) +PASS Node interface: document.createComment("abc") must inherit property "nodeValue" with the proper type (26) +PASS Node interface: document.createComment("abc") must inherit property "textContent" with the proper type (27) +PASS Node interface: document.createComment("abc") must inherit property "normalize" with the proper type (28) +PASS Node interface: document.createComment("abc") must inherit property "cloneNode" with the proper type (29) +PASS Node interface: calling cloneNode(boolean) on document.createComment("abc") with too few arguments must throw TypeError +PASS Node interface: document.createComment("abc") must inherit property "isEqualNode" with the proper type (30) +PASS Node interface: calling isEqualNode(Node) on document.createComment("abc") with too few arguments must throw TypeError +PASS Node interface: document.createComment("abc") must inherit property "isSameNode" with the proper type (31) +PASS Node interface: calling isSameNode(Node) on document.createComment("abc") with too few arguments must throw TypeError +PASS Node interface: document.createComment("abc") must inherit property "DOCUMENT_POSITION_DISCONNECTED" with the proper type (32) +PASS Node interface: document.createComment("abc") must inherit property "DOCUMENT_POSITION_PRECEDING" with the proper type (33) +PASS Node interface: document.createComment("abc") must inherit property "DOCUMENT_POSITION_FOLLOWING" with the proper type (34) +PASS Node interface: document.createComment("abc") must inherit property "DOCUMENT_POSITION_CONTAINS" with the proper type (35) +PASS Node interface: document.createComment("abc") must inherit property "DOCUMENT_POSITION_CONTAINED_BY" with the proper type (36) +PASS Node interface: document.createComment("abc") must inherit property "DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC" with the proper type (37) +PASS Node interface: document.createComment("abc") must inherit property "compareDocumentPosition" with the proper type (38) +PASS Node interface: calling compareDocumentPosition(Node) on document.createComment("abc") with too few arguments must throw TypeError +PASS Node interface: document.createComment("abc") must inherit property "contains" with the proper type (39) +PASS Node interface: calling contains(Node) on document.createComment("abc") with too few arguments must throw TypeError +PASS Node interface: document.createComment("abc") must inherit property "lookupPrefix" with the proper type (40) +PASS Node interface: calling lookupPrefix(DOMString) on document.createComment("abc") with too few arguments must throw TypeError +PASS Node interface: document.createComment("abc") must inherit property "lookupNamespaceURI" with the proper type (41) +PASS Node interface: calling lookupNamespaceURI(DOMString) on document.createComment("abc") with too few arguments must throw TypeError +PASS Node interface: document.createComment("abc") must inherit property "isDefaultNamespace" with the proper type (42) +PASS Node interface: calling isDefaultNamespace(DOMString) on document.createComment("abc") with too few arguments must throw TypeError +PASS Node interface: document.createComment("abc") must inherit property "insertBefore" with the proper type (43) +PASS Node interface: calling insertBefore(Node,Node) on document.createComment("abc") with too few arguments must throw TypeError +PASS Node interface: document.createComment("abc") must inherit property "appendChild" with the proper type (44) +PASS Node interface: calling appendChild(Node) on document.createComment("abc") with too few arguments must throw TypeError +PASS Node interface: document.createComment("abc") must inherit property "replaceChild" with the proper type (45) +PASS Node interface: calling replaceChild(Node,Node) on document.createComment("abc") with too few arguments must throw TypeError +PASS Node interface: document.createComment("abc") must inherit property "removeChild" with the proper type (46) +PASS Node interface: calling removeChild(Node) on document.createComment("abc") with too few arguments must throw TypeError +PASS EventTarget interface: document.createComment("abc") must inherit property "addEventListener" with the proper type (0) +PASS EventTarget interface: calling addEventListener(DOMString,EventListener,[object Object],[object Object]) on document.createComment("abc") with too few arguments must throw TypeError +PASS EventTarget interface: document.createComment("abc") must inherit property "removeEventListener" with the proper type (1) +PASS EventTarget interface: calling removeEventListener(DOMString,EventListener,[object Object],[object Object]) on document.createComment("abc") with too few arguments must throw TypeError +PASS EventTarget interface: document.createComment("abc") must inherit property "dispatchEvent" with the proper type (2) +PASS EventTarget interface: calling dispatchEvent(Event) on document.createComment("abc") with too few arguments must throw TypeError +PASS Range interface: existence and properties of interface object +PASS Range interface object length +PASS Range interface object name +PASS Range interface: existence and properties of interface prototype object +PASS Range interface: existence and properties of interface prototype object's "constructor" property +PASS Range interface: attribute startContainer +PASS Range interface: attribute startOffset +PASS Range interface: attribute endContainer +PASS Range interface: attribute endOffset +PASS Range interface: attribute collapsed +PASS Range interface: attribute commonAncestorContainer +PASS Range interface: operation setStart(Node,unsigned long) +PASS Range interface: operation setEnd(Node,unsigned long) +PASS Range interface: operation setStartBefore(Node) +PASS Range interface: operation setStartAfter(Node) +PASS Range interface: operation setEndBefore(Node) +PASS Range interface: operation setEndAfter(Node) +PASS Range interface: operation collapse(boolean) +PASS Range interface: operation selectNode(Node) +PASS Range interface: operation selectNodeContents(Node) +PASS Range interface: constant START_TO_START on interface object +PASS Range interface: constant START_TO_START on interface prototype object +PASS Range interface: constant START_TO_END on interface object +PASS Range interface: constant START_TO_END on interface prototype object +PASS Range interface: constant END_TO_END on interface object +PASS Range interface: constant END_TO_END on interface prototype object +PASS Range interface: constant END_TO_START on interface object +PASS Range interface: constant END_TO_START on interface prototype object +PASS Range interface: operation compareBoundaryPoints(unsigned short,Range) +PASS Range interface: operation deleteContents() +PASS Range interface: operation extractContents() +PASS Range interface: operation cloneContents() +PASS Range interface: operation insertNode(Node) +PASS Range interface: operation surroundContents(Node) +PASS Range interface: operation cloneRange() +PASS Range interface: operation detach() +PASS Range interface: operation isPointInRange(Node,unsigned long) +PASS Range interface: operation comparePoint(Node,unsigned long) +PASS Range interface: operation intersectsNode(Node) +PASS Range interface: stringifier +PASS Range must be primary interface of document.createRange() +PASS Stringification of document.createRange() +PASS Range interface: document.createRange() must inherit property "startContainer" with the proper type (0) +PASS Range interface: document.createRange() must inherit property "startOffset" with the proper type (1) +PASS Range interface: document.createRange() must inherit property "endContainer" with the proper type (2) +PASS Range interface: document.createRange() must inherit property "endOffset" with the proper type (3) +PASS Range interface: document.createRange() must inherit property "collapsed" with the proper type (4) +PASS Range interface: document.createRange() must inherit property "commonAncestorContainer" with the proper type (5) +PASS Range interface: document.createRange() must inherit property "setStart" with the proper type (6) +PASS Range interface: calling setStart(Node,unsigned long) on document.createRange() with too few arguments must throw TypeError +PASS Range interface: document.createRange() must inherit property "setEnd" with the proper type (7) +PASS Range interface: calling setEnd(Node,unsigned long) on document.createRange() with too few arguments must throw TypeError +PASS Range interface: document.createRange() must inherit property "setStartBefore" with the proper type (8) +PASS Range interface: calling setStartBefore(Node) on document.createRange() with too few arguments must throw TypeError +PASS Range interface: document.createRange() must inherit property "setStartAfter" with the proper type (9) +PASS Range interface: calling setStartAfter(Node) on document.createRange() with too few arguments must throw TypeError +PASS Range interface: document.createRange() must inherit property "setEndBefore" with the proper type (10) +PASS Range interface: calling setEndBefore(Node) on document.createRange() with too few arguments must throw TypeError +PASS Range interface: document.createRange() must inherit property "setEndAfter" with the proper type (11) +PASS Range interface: calling setEndAfter(Node) on document.createRange() with too few arguments must throw TypeError +PASS Range interface: document.createRange() must inherit property "collapse" with the proper type (12) +PASS Range interface: calling collapse(boolean) on document.createRange() with too few arguments must throw TypeError +PASS Range interface: document.createRange() must inherit property "selectNode" with the proper type (13) +PASS Range interface: calling selectNode(Node) on document.createRange() with too few arguments must throw TypeError +PASS Range interface: document.createRange() must inherit property "selectNodeContents" with the proper type (14) +PASS Range interface: calling selectNodeContents(Node) on document.createRange() with too few arguments must throw TypeError +PASS Range interface: document.createRange() must inherit property "START_TO_START" with the proper type (15) +PASS Range interface: document.createRange() must inherit property "START_TO_END" with the proper type (16) +PASS Range interface: document.createRange() must inherit property "END_TO_END" with the proper type (17) +PASS Range interface: document.createRange() must inherit property "END_TO_START" with the proper type (18) +PASS Range interface: document.createRange() must inherit property "compareBoundaryPoints" with the proper type (19) +PASS Range interface: calling compareBoundaryPoints(unsigned short,Range) on document.createRange() with too few arguments must throw TypeError +PASS Range interface: document.createRange() must inherit property "deleteContents" with the proper type (20) +PASS Range interface: document.createRange() must inherit property "extractContents" with the proper type (21) +PASS Range interface: document.createRange() must inherit property "cloneContents" with the proper type (22) +PASS Range interface: document.createRange() must inherit property "insertNode" with the proper type (23) +PASS Range interface: calling insertNode(Node) on document.createRange() with too few arguments must throw TypeError +PASS Range interface: document.createRange() must inherit property "surroundContents" with the proper type (24) +PASS Range interface: calling surroundContents(Node) on document.createRange() with too few arguments must throw TypeError +PASS Range interface: document.createRange() must inherit property "cloneRange" with the proper type (25) +PASS Range interface: document.createRange() must inherit property "detach" with the proper type (26) +PASS Range interface: document.createRange() must inherit property "isPointInRange" with the proper type (27) +PASS Range interface: calling isPointInRange(Node,unsigned long) on document.createRange() with too few arguments must throw TypeError +PASS Range interface: document.createRange() must inherit property "comparePoint" with the proper type (28) +PASS Range interface: calling comparePoint(Node,unsigned long) on document.createRange() with too few arguments must throw TypeError +PASS Range interface: document.createRange() must inherit property "intersectsNode" with the proper type (29) +PASS Range interface: calling intersectsNode(Node) on document.createRange() with too few arguments must throw TypeError +PASS Range must be primary interface of detachedRange +PASS Stringification of detachedRange +PASS Range interface: detachedRange must inherit property "startContainer" with the proper type (0) +PASS Range interface: detachedRange must inherit property "startOffset" with the proper type (1) +PASS Range interface: detachedRange must inherit property "endContainer" with the proper type (2) +PASS Range interface: detachedRange must inherit property "endOffset" with the proper type (3) +PASS Range interface: detachedRange must inherit property "collapsed" with the proper type (4) +PASS Range interface: detachedRange must inherit property "commonAncestorContainer" with the proper type (5) +PASS Range interface: detachedRange must inherit property "setStart" with the proper type (6) +PASS Range interface: calling setStart(Node,unsigned long) on detachedRange with too few arguments must throw TypeError +PASS Range interface: detachedRange must inherit property "setEnd" with the proper type (7) +PASS Range interface: calling setEnd(Node,unsigned long) on detachedRange with too few arguments must throw TypeError +PASS Range interface: detachedRange must inherit property "setStartBefore" with the proper type (8) +PASS Range interface: calling setStartBefore(Node) on detachedRange with too few arguments must throw TypeError +PASS Range interface: detachedRange must inherit property "setStartAfter" with the proper type (9) +PASS Range interface: calling setStartAfter(Node) on detachedRange with too few arguments must throw TypeError +PASS Range interface: detachedRange must inherit property "setEndBefore" with the proper type (10) +PASS Range interface: calling setEndBefore(Node) on detachedRange with too few arguments must throw TypeError +PASS Range interface: detachedRange must inherit property "setEndAfter" with the proper type (11) +PASS Range interface: calling setEndAfter(Node) on detachedRange with too few arguments must throw TypeError +PASS Range interface: detachedRange must inherit property "collapse" with the proper type (12) +PASS Range interface: calling collapse(boolean) on detachedRange with too few arguments must throw TypeError +PASS Range interface: detachedRange must inherit property "selectNode" with the proper type (13) +PASS Range interface: calling selectNode(Node) on detachedRange with too few arguments must throw TypeError +PASS Range interface: detachedRange must inherit property "selectNodeContents" with the proper type (14) +PASS Range interface: calling selectNodeContents(Node) on detachedRange with too few arguments must throw TypeError +PASS Range interface: detachedRange must inherit property "START_TO_START" with the proper type (15) +PASS Range interface: detachedRange must inherit property "START_TO_END" with the proper type (16) +PASS Range interface: detachedRange must inherit property "END_TO_END" with the proper type (17) +PASS Range interface: detachedRange must inherit property "END_TO_START" with the proper type (18) +PASS Range interface: detachedRange must inherit property "compareBoundaryPoints" with the proper type (19) +PASS Range interface: calling compareBoundaryPoints(unsigned short,Range) on detachedRange with too few arguments must throw TypeError +PASS Range interface: detachedRange must inherit property "deleteContents" with the proper type (20) +PASS Range interface: detachedRange must inherit property "extractContents" with the proper type (21) +PASS Range interface: detachedRange must inherit property "cloneContents" with the proper type (22) +PASS Range interface: detachedRange must inherit property "insertNode" with the proper type (23) +PASS Range interface: calling insertNode(Node) on detachedRange with too few arguments must throw TypeError +PASS Range interface: detachedRange must inherit property "surroundContents" with the proper type (24) +PASS Range interface: calling surroundContents(Node) on detachedRange with too few arguments must throw TypeError +PASS Range interface: detachedRange must inherit property "cloneRange" with the proper type (25) +PASS Range interface: detachedRange must inherit property "detach" with the proper type (26) +PASS Range interface: detachedRange must inherit property "isPointInRange" with the proper type (27) +PASS Range interface: calling isPointInRange(Node,unsigned long) on detachedRange with too few arguments must throw TypeError +PASS Range interface: detachedRange must inherit property "comparePoint" with the proper type (28) +PASS Range interface: calling comparePoint(Node,unsigned long) on detachedRange with too few arguments must throw TypeError +PASS Range interface: detachedRange must inherit property "intersectsNode" with the proper type (29) +PASS Range interface: calling intersectsNode(Node) on detachedRange with too few arguments must throw TypeError +PASS NodeIterator interface: existence and properties of interface object +PASS NodeIterator interface object length +PASS NodeIterator interface object name +PASS NodeIterator interface: existence and properties of interface prototype object +PASS NodeIterator interface: existence and properties of interface prototype object's "constructor" property +PASS NodeIterator interface: attribute root +PASS NodeIterator interface: attribute referenceNode +PASS NodeIterator interface: attribute pointerBeforeReferenceNode +PASS NodeIterator interface: attribute whatToShow +PASS NodeIterator interface: attribute filter +PASS NodeIterator interface: operation nextNode() +PASS NodeIterator interface: operation previousNode() +PASS NodeIterator interface: operation detach() +PASS NodeIterator must be primary interface of document.createNodeIterator(document.body, NodeFilter.SHOW_ALL, null, false) +PASS Stringification of document.createNodeIterator(document.body, NodeFilter.SHOW_ALL, null, false) +PASS NodeIterator interface: document.createNodeIterator(document.body, NodeFilter.SHOW_ALL, null, false) must inherit property "root" with the proper type (0) +PASS NodeIterator interface: document.createNodeIterator(document.body, NodeFilter.SHOW_ALL, null, false) must inherit property "referenceNode" with the proper type (1) +PASS NodeIterator interface: document.createNodeIterator(document.body, NodeFilter.SHOW_ALL, null, false) must inherit property "pointerBeforeReferenceNode" with the proper type (2) +PASS NodeIterator interface: document.createNodeIterator(document.body, NodeFilter.SHOW_ALL, null, false) must inherit property "whatToShow" with the proper type (3) +PASS NodeIterator interface: document.createNodeIterator(document.body, NodeFilter.SHOW_ALL, null, false) must inherit property "filter" with the proper type (4) +PASS NodeIterator interface: document.createNodeIterator(document.body, NodeFilter.SHOW_ALL, null, false) must inherit property "nextNode" with the proper type (5) +PASS NodeIterator interface: document.createNodeIterator(document.body, NodeFilter.SHOW_ALL, null, false) must inherit property "previousNode" with the proper type (6) +PASS NodeIterator interface: document.createNodeIterator(document.body, NodeFilter.SHOW_ALL, null, false) must inherit property "detach" with the proper type (7) +PASS TreeWalker interface: existence and properties of interface object +PASS TreeWalker interface object length +PASS TreeWalker interface object name +PASS TreeWalker interface: existence and properties of interface prototype object +PASS TreeWalker interface: existence and properties of interface prototype object's "constructor" property +PASS TreeWalker interface: attribute root +PASS TreeWalker interface: attribute whatToShow +PASS TreeWalker interface: attribute filter +PASS TreeWalker interface: attribute currentNode +PASS TreeWalker interface: operation parentNode() +PASS TreeWalker interface: operation firstChild() +PASS TreeWalker interface: operation lastChild() +PASS TreeWalker interface: operation previousSibling() +PASS TreeWalker interface: operation nextSibling() +PASS TreeWalker interface: operation previousNode() +PASS TreeWalker interface: operation nextNode() +PASS TreeWalker must be primary interface of document.createTreeWalker(document.body, NodeFilter.SHOW_ALL, null, false) +PASS Stringification of document.createTreeWalker(document.body, NodeFilter.SHOW_ALL, null, false) +PASS TreeWalker interface: document.createTreeWalker(document.body, NodeFilter.SHOW_ALL, null, false) must inherit property "root" with the proper type (0) +PASS TreeWalker interface: document.createTreeWalker(document.body, NodeFilter.SHOW_ALL, null, false) must inherit property "whatToShow" with the proper type (1) +PASS TreeWalker interface: document.createTreeWalker(document.body, NodeFilter.SHOW_ALL, null, false) must inherit property "filter" with the proper type (2) +PASS TreeWalker interface: document.createTreeWalker(document.body, NodeFilter.SHOW_ALL, null, false) must inherit property "currentNode" with the proper type (3) +PASS TreeWalker interface: document.createTreeWalker(document.body, NodeFilter.SHOW_ALL, null, false) must inherit property "parentNode" with the proper type (4) +PASS TreeWalker interface: document.createTreeWalker(document.body, NodeFilter.SHOW_ALL, null, false) must inherit property "firstChild" with the proper type (5) +PASS TreeWalker interface: document.createTreeWalker(document.body, NodeFilter.SHOW_ALL, null, false) must inherit property "lastChild" with the proper type (6) +PASS TreeWalker interface: document.createTreeWalker(document.body, NodeFilter.SHOW_ALL, null, false) must inherit property "previousSibling" with the proper type (7) +PASS TreeWalker interface: document.createTreeWalker(document.body, NodeFilter.SHOW_ALL, null, false) must inherit property "nextSibling" with the proper type (8) +PASS TreeWalker interface: document.createTreeWalker(document.body, NodeFilter.SHOW_ALL, null, false) must inherit property "previousNode" with the proper type (9) +PASS TreeWalker interface: document.createTreeWalker(document.body, NodeFilter.SHOW_ALL, null, false) must inherit property "nextNode" with the proper type (10) +PASS NodeFilter interface: existence and properties of interface object +PASS NodeFilter interface object name +PASS NodeFilter interface: existence and properties of interface prototype object +PASS NodeFilter interface: existence and properties of interface prototype object's "constructor" property +PASS NodeFilter interface: constant FILTER_ACCEPT on interface object +PASS NodeFilter interface: constant FILTER_ACCEPT on interface prototype object +PASS NodeFilter interface: constant FILTER_REJECT on interface object +PASS NodeFilter interface: constant FILTER_REJECT on interface prototype object +PASS NodeFilter interface: constant FILTER_SKIP on interface object +PASS NodeFilter interface: constant FILTER_SKIP on interface prototype object +PASS NodeFilter interface: constant SHOW_ALL on interface object +PASS NodeFilter interface: constant SHOW_ALL on interface prototype object +PASS NodeFilter interface: constant SHOW_ELEMENT on interface object +PASS NodeFilter interface: constant SHOW_ELEMENT on interface prototype object +PASS NodeFilter interface: constant SHOW_ATTRIBUTE on interface object +PASS NodeFilter interface: constant SHOW_ATTRIBUTE on interface prototype object +PASS NodeFilter interface: constant SHOW_TEXT on interface object +PASS NodeFilter interface: constant SHOW_TEXT on interface prototype object +PASS NodeFilter interface: constant SHOW_CDATA_SECTION on interface object +PASS NodeFilter interface: constant SHOW_CDATA_SECTION on interface prototype object +PASS NodeFilter interface: constant SHOW_ENTITY_REFERENCE on interface object +PASS NodeFilter interface: constant SHOW_ENTITY_REFERENCE on interface prototype object +PASS NodeFilter interface: constant SHOW_ENTITY on interface object +PASS NodeFilter interface: constant SHOW_ENTITY on interface prototype object +PASS NodeFilter interface: constant SHOW_PROCESSING_INSTRUCTION on interface object +PASS NodeFilter interface: constant SHOW_PROCESSING_INSTRUCTION on interface prototype object +PASS NodeFilter interface: constant SHOW_COMMENT on interface object +PASS NodeFilter interface: constant SHOW_COMMENT on interface prototype object +PASS NodeFilter interface: constant SHOW_DOCUMENT on interface object +PASS NodeFilter interface: constant SHOW_DOCUMENT on interface prototype object +PASS NodeFilter interface: constant SHOW_DOCUMENT_TYPE on interface object +PASS NodeFilter interface: constant SHOW_DOCUMENT_TYPE on interface prototype object +PASS NodeFilter interface: constant SHOW_DOCUMENT_FRAGMENT on interface object +PASS NodeFilter interface: constant SHOW_DOCUMENT_FRAGMENT on interface prototype object +PASS NodeFilter interface: constant SHOW_NOTATION on interface object +PASS NodeFilter interface: constant SHOW_NOTATION on interface prototype object +PASS NodeFilter interface: operation acceptNode(Node) +PASS DOMTokenList interface: existence and properties of interface object +PASS DOMTokenList interface object length +PASS DOMTokenList interface object name +PASS DOMTokenList interface: existence and properties of interface prototype object +PASS DOMTokenList interface: existence and properties of interface prototype object's "constructor" property +PASS DOMTokenList interface: attribute length +PASS DOMTokenList interface: operation item(unsigned long) +PASS DOMTokenList interface: operation contains(DOMString) +PASS DOMTokenList interface: operation add(DOMString) +PASS DOMTokenList interface: operation remove(DOMString) +PASS DOMTokenList interface: operation toggle(DOMString,boolean) +PASS DOMTokenList interface: operation replace(DOMString,DOMString) +PASS DOMTokenList interface: operation supports(DOMString) +PASS DOMTokenList interface: attribute value +PASS DOMTokenList interface: stringifier +PASS DOMTokenList must be primary interface of document.body.classList +PASS Stringification of document.body.classList +PASS DOMTokenList interface: document.body.classList must inherit property "length" with the proper type (0) +PASS DOMTokenList interface: document.body.classList must inherit property "item" with the proper type (1) +PASS DOMTokenList interface: calling item(unsigned long) on document.body.classList with too few arguments must throw TypeError +PASS DOMTokenList interface: document.body.classList must inherit property "contains" with the proper type (2) +PASS DOMTokenList interface: calling contains(DOMString) on document.body.classList with too few arguments must throw TypeError +PASS DOMTokenList interface: document.body.classList must inherit property "add" with the proper type (3) +PASS DOMTokenList interface: calling add(DOMString) on document.body.classList with too few arguments must throw TypeError +PASS DOMTokenList interface: document.body.classList must inherit property "remove" with the proper type (4) +PASS DOMTokenList interface: calling remove(DOMString) on document.body.classList with too few arguments must throw TypeError +PASS DOMTokenList interface: document.body.classList must inherit property "toggle" with the proper type (5) +PASS DOMTokenList interface: calling toggle(DOMString,boolean) on document.body.classList with too few arguments must throw TypeError +PASS DOMTokenList interface: document.body.classList must inherit property "replace" with the proper type (6) +PASS DOMTokenList interface: calling replace(DOMString,DOMString) on document.body.classList with too few arguments must throw TypeError +PASS DOMTokenList interface: document.body.classList must inherit property "supports" with the proper type (7) +PASS DOMTokenList interface: calling supports(DOMString) on document.body.classList with too few arguments must throw TypeError +PASS DOMTokenList interface: document.body.classList must inherit property "value" with the proper type (8) +Harness: the test ran to completion. +
diff --git a/third_party/WebKit/LayoutTests/external/wpt/dom/interfaces.html b/third_party/WebKit/LayoutTests/external/wpt/dom/interfaces.html index e6b12e3c..8b4140d 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/dom/interfaces.html +++ b/third_party/WebKit/LayoutTests/external/wpt/dom/interfaces.html
@@ -21,6 +21,7 @@ function doTest(idl) { idlArray.add_idls(idl); idlArray.add_objects({ + EventTarget: ['new EventTarget()'], Event: ['document.createEvent("Event")', 'new Event("foo")'], CustomEvent: ['new CustomEvent("foo")'], Document: ['new Document()'],
diff --git a/third_party/WebKit/LayoutTests/external/wpt/hr-time/idlharness-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/hr-time/idlharness-expected.txt new file mode 100644 index 0000000..cbdd61f6 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/hr-time/idlharness-expected.txt
@@ -0,0 +1,17 @@ +This is a testharness.js-based test. +PASS Window interface: attribute performance +PASS WorkerGlobalScope interface: existence and properties of interface object +PASS Performance interface: existence and properties of interface object +PASS Performance interface object length +PASS Performance interface object name +PASS Performance interface: existence and properties of interface prototype object +PASS Performance interface: existence and properties of interface prototype object's "constructor" property +PASS Performance interface: operation now() +PASS Performance interface: operation toJSON() +FAIL Test default toJSON operation of Performance Illegal invocation +PASS Performance must be primary interface of window.performance +PASS Stringification of window.performance +PASS Performance interface: window.performance must inherit property "now" with the proper type (0) +PASS Performance interface: window.performance must inherit property "toJSON" with the proper type (1) +Harness: the test ran to completion. +
diff --git a/third_party/WebKit/LayoutTests/external/wpt/hr-time/idlharness.html b/third_party/WebKit/LayoutTests/external/wpt/hr-time/idlharness.html index 9dfea66..30b6c268 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/hr-time/idlharness.html +++ b/third_party/WebKit/LayoutTests/external/wpt/hr-time/idlharness.html
@@ -34,7 +34,7 @@ [Exposed=(Window,Worker)] interface Performance : EventTarget { DOMHighResTimeStamp now(); - serializer = {attribute}; + [Default] object toJSON(); }; [NoInterfaceObject,
diff --git a/third_party/WebKit/LayoutTests/external/wpt/hr-time/timing-attack.html b/third_party/WebKit/LayoutTests/external/wpt/hr-time/timing-attack.html new file mode 100644 index 0000000..71ade4a8 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/hr-time/timing-attack.html
@@ -0,0 +1,55 @@ +<!DOCTYPE html> +<html> +<head> +<meta charset="utf-8" /> +<title>window.performance.now should not enable timing attacks</title> +<link rel="author" title="W3C" href="http://www.w3.org/" /> +<link rel="help" href="http://w3c.github.io/hr-time/#privacy-security"/> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script> +test(function() { + function check_resolutions(times, length) { + var end = length - 2; + + // we compare each value with the following ones + for (var i = 0; i < end; i++) { + var h1 = times[i]; + for (var j = i+1; j < end; j++) { + var h2 = times[j]; + var diff = h2 - h1; + assert_true((diff === 0) || ((diff * 1000) >= 5), + "Differences smaller than 5 microseconds: " + diff); + } + } + return true; + } + + var times = new Array(10); + var index = 0; + var hrt1, hrt2, hrt; + + // rapid firing of performance.now + hrt1 = performance.now(); + hrt2 = performance.now(); + times[index++] = hrt1; + times[index++] = hrt2; + + // ensure that we get performance.now() to return a different value + do { + hrt = performance.now(); + times[index++] = hrt; + } while ((hrt - hrt1) === 0); + + assert_true(check_resolutions(times, index), 'Difference should be at least 5 microseconds.'); +}, 'The recommended minimum resolution of the Performance interface has been set to 5 microseconds'); +</script> +</head> +<body> +<h1>Description</h1> +<p>The recommended minimum resolution of the Performance interface should be set to 5 microseconds.</p> + +<div id="log"></div> + +</body> +</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/interfaces/dom.idl b/third_party/WebKit/LayoutTests/external/wpt/interfaces/dom.idl index 7e2667ff..9ca270ea 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/interfaces/dom.idl +++ b/third_party/WebKit/LayoutTests/external/wpt/interfaces/dom.idl
@@ -44,7 +44,7 @@ }; -//[Exposed=(Window,Worker)] +[Constructor/*, Exposed=(Window,Worker)*/] interface EventTarget { void addEventListener(DOMString type, EventListener? callback, optional (EventListenerOptions or boolean) options); void removeEventListener(DOMString type, EventListener? callback, optional (EventListenerOptions or boolean) options);
diff --git a/third_party/WebKit/LayoutTests/external/wpt/interfaces/web-share.idl b/third_party/WebKit/LayoutTests/external/wpt/interfaces/web-share.idl index df0bd88..cf19b7e9 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/interfaces/web-share.idl +++ b/third_party/WebKit/LayoutTests/external/wpt/interfaces/web-share.idl
@@ -2,7 +2,7 @@ partial interface Navigator { [SecureContext] - Promise<void> share(ShareData data); + Promise<void> share(optional ShareData data); }; dictionary ShareData {
diff --git a/third_party/WebKit/LayoutTests/external/wpt/navigation-timing/nav2_idlharness-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/navigation-timing/nav2_idlharness-expected.txt index 3388f2c..31d3c5e4 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/navigation-timing/nav2_idlharness-expected.txt +++ b/third_party/WebKit/LayoutTests/external/wpt/navigation-timing/nav2_idlharness-expected.txt
@@ -14,5 +14,6 @@ PASS PerformanceNavigationTiming interface: attribute loadEventEnd PASS PerformanceNavigationTiming interface: attribute type PASS PerformanceNavigationTiming interface: attribute redirectCount +FAIL PerformanceNavigationTiming interface: operation toJSON() undefined PerformanceEntry not found (inherited by PerformanceResourceTiming) Harness: the test ran to completion.
diff --git a/third_party/WebKit/LayoutTests/external/wpt/navigation-timing/nav2_idlharness.html b/third_party/WebKit/LayoutTests/external/wpt/navigation-timing/nav2_idlharness.html index 7bdd5d50..eb7d94b 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/navigation-timing/nav2_idlharness.html +++ b/third_party/WebKit/LayoutTests/external/wpt/navigation-timing/nav2_idlharness.html
@@ -53,6 +53,7 @@ readonly attribute DOMHighResTimeStamp loadEventEnd; readonly attribute NavigationType type; readonly attribute unsigned short redirectCount; + [Default] object toJSON(); }; </pre>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/navigation-timing/resources/webperftestharness.js b/third_party/WebKit/LayoutTests/external/wpt/navigation-timing/resources/webperftestharness.js index f9b56d9..afdfa2a7 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/navigation-timing/resources/webperftestharness.js +++ b/third_party/WebKit/LayoutTests/external/wpt/navigation-timing/resources/webperftestharness.js
@@ -72,6 +72,11 @@ // ensure it's in the right order msg = "window.performance.timing." + attribute_name + " >= window.performance.timing." + greater_than_attribute; wp_test(function() { assert_true(performanceNamespace.timing[attribute_name] >= performanceNamespace.timing[greater_than_attribute], msg); }, msg, properties); + + // ensure we have at least 5 microseconds difference or it's 0 + msg = "window.performance.timing." + attribute_name + " difference with window.performance.timing." + greater_than_attribute + " is 0 or at least 5 microseconds"; + var diff = performanceNamespace.timing[attribute_name] - performanceNamespace.timing[greater_than_attribute]; + wp_test(function() { assert_true((diff === 0) || ((diff * 1000) >= 5), msg); }, msg, properties); } function test_timing_greater_than(attribute_name, greater_than, properties)
diff --git a/third_party/WebKit/LayoutTests/external/wpt/page-visibility/idlharness.html b/third_party/WebKit/LayoutTests/external/wpt/page-visibility/idlharness.html index f5999eaa7eb..a4356ce 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/page-visibility/idlharness.html +++ b/third_party/WebKit/LayoutTests/external/wpt/page-visibility/idlharness.html
@@ -4,7 +4,7 @@ <meta charset="utf-8"> <title>Page Visibility IDL tests</title> <link rel="author" title="W3C" href="http://www.w3.org/" /> -<link rel="help" href="http://www.w3.org/TR/page-visibility/#sec-document-interface"/> +<link rel="help" href="https://w3c.github.io/page-visibility/"/> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/resources/WebIDLParser.js"></script> @@ -16,6 +16,10 @@ <pre id='untested_idl' style='display:none'> interface Document { }; + +[TreatNonObjectAsNull] +callback EventHandlerNonNull = any (Event event); +typedef EventHandlerNonNull? EventHandler; </pre> <pre id='idl'>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/page-visibility/iframe-unload.html b/third_party/WebKit/LayoutTests/external/wpt/page-visibility/iframe-unload.html new file mode 100644 index 0000000..6d049a8 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/page-visibility/iframe-unload.html
@@ -0,0 +1,49 @@ +<html> +<title>visibilitychange fires on unload with iframes</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<div id="log"></div> +<script> + +var frameDocs = []; +var docsLoaded = 0; +var numFrames = 3; + +var ast = new async_test("visibilitychange fires on unload with iframes"); + +function startTest() { + if (++docsLoaded < numFrames) + return; + + ast.step(function () { + frameDocs.push(window[0].document); + frameDocs.push(window[0][0].document); + frameDocs.push(window[0][1].document); + + for (var i = 0; i < frameDocs.length; ++i) { + frameDocs[i].addEventListener( + "visibilitychange", + onVisibilityChange.bind(null, i), false); + } + + document.body.removeChild(document.getElementById("frame1")); + }); +} + +var checkedFrames = 0; + +function onVisibilityChange(i) { + ast.step(function () { + assert_equals(frameDocs[i].visibilityState, "hidden"); + }); + if (++checkedFrames >= numFrames) { + ast.done(); + } +} + + + +</script> +<iframe id="frame1" src="resources/iframe-with-subframes.html"></iframe> +</body> +</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/page-visibility/resources/iframe-with-subframes.html b/third_party/WebKit/LayoutTests/external/wpt/page-visibility/resources/iframe-with-subframes.html new file mode 100644 index 0000000..febb954 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/page-visibility/resources/iframe-with-subframes.html
@@ -0,0 +1,6 @@ +<html> +<body onload="parent.startTest()"> +<iframe id="subIframe1" onload="parent.parent.startTest()"></iframe> +<iframe id="subIframe2" onload="parent.parent.startTest()"></iframe> +</body> +</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/page-visibility/resources/pagevistestharness.js b/third_party/WebKit/LayoutTests/external/wpt/page-visibility/resources/pagevistestharness.js index d53d73b..bfc4deb 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/page-visibility/resources/pagevistestharness.js +++ b/third_party/WebKit/LayoutTests/external/wpt/page-visibility/resources/pagevistestharness.js
@@ -117,5 +117,5 @@ { //var open_link = window.open("http://www.bing.com"); open_link = window.open('', '_blank'); - setTimeout(function() { open_link.close(); }, 2000); + step_timeout(function() { open_link.close(); }, 2000); }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/payment-request/allowpaymentrequest/removing-allowpaymentrequest.https.sub-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/payment-request/allowpaymentrequest/removing-allowpaymentrequest.https.sub-expected.txt new file mode 100644 index 0000000..533d6d6 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/payment-request/allowpaymentrequest/removing-allowpaymentrequest.https.sub-expected.txt
@@ -0,0 +1,4 @@ +This is a testharness.js-based test. +FAIL PaymentRequest removing allowpaymentrequest after load and then navigating assert_equals: after navigation expected "Exception" but got "Success" +Harness: the test ran to completion. +
diff --git a/third_party/WebKit/LayoutTests/external/wpt/payment-request/allowpaymentrequest/removing-allowpaymentrequest.https.sub.html b/third_party/WebKit/LayoutTests/external/wpt/payment-request/allowpaymentrequest/removing-allowpaymentrequest.https.sub.html index 048b93a..fcd7f1d 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/payment-request/allowpaymentrequest/removing-allowpaymentrequest.https.sub.html +++ b/third_party/WebKit/LayoutTests/external/wpt/payment-request/allowpaymentrequest/removing-allowpaymentrequest.https.sub.html
@@ -13,7 +13,7 @@ const path = location.pathname.substring(0, location.pathname.lastIndexOf('/') + 1); iframe.src = "https://{{domains[www1]}}:{{ports[https][0]}}" + path + "echo-PaymentRequest.html"; iframe.onload = t.step_func(() => { - if (i === 0) { + if (i === 1) { iframe.allowPaymentRequest = false; } iframe.contentWindow.postMessage('What is the result of new PaymentRequest(...)?', '*');
diff --git a/third_party/WebKit/LayoutTests/external/wpt/payment-request/allowpaymentrequest/setting-allowpaymentrequest-timing.https.sub-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/payment-request/allowpaymentrequest/setting-allowpaymentrequest-timing.https.sub-expected.txt deleted file mode 100644 index 2103791b..0000000 --- a/third_party/WebKit/LayoutTests/external/wpt/payment-request/allowpaymentrequest/setting-allowpaymentrequest-timing.https.sub-expected.txt +++ /dev/null
@@ -1,4 +0,0 @@ -This is a testharness.js-based test. -FAIL PaymentRequest setting allowpaymentrequest after document creation, before response assert_equals: expected "Exception" but got "Success" -Harness: the test ran to completion. -
diff --git a/third_party/WebKit/LayoutTests/external/wpt/payment-request/allowpaymentrequest/setting-allowpaymentrequest-timing.https.sub.html b/third_party/WebKit/LayoutTests/external/wpt/payment-request/allowpaymentrequest/setting-allowpaymentrequest-timing.https.sub.html index c7ed3ae..6a12214 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/payment-request/allowpaymentrequest/setting-allowpaymentrequest-timing.https.sub.html +++ b/third_party/WebKit/LayoutTests/external/wpt/payment-request/allowpaymentrequest/setting-allowpaymentrequest-timing.https.sub.html
@@ -18,8 +18,7 @@ }); window.onmessage = t.step_func_done((e) => { - assert_equals(e.data.message, 'Exception'); - assert_array_equals(e.data.details, [true /* ex instanceof DOMException*/, 18 /* ex.code */, 'SecurityError' /* ex.name */]); + assert_equals(e.data.message, 'Success'); }); document.body.appendChild(iframe);
diff --git a/third_party/WebKit/LayoutTests/external/wpt/payment-request/allowpaymentrequest/setting-allowpaymentrequest.https.sub-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/payment-request/allowpaymentrequest/setting-allowpaymentrequest.https.sub-expected.txt new file mode 100644 index 0000000..b1372064 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/payment-request/allowpaymentrequest/setting-allowpaymentrequest.https.sub-expected.txt
@@ -0,0 +1,4 @@ +This is a testharness.js-based test. +FAIL PaymentRequest setting allowpaymentrequest after load and then navigating assert_equals: after navigation expected "Success" but got "Exception" +Harness: the test ran to completion. +
diff --git a/third_party/WebKit/LayoutTests/external/wpt/payment-request/allowpaymentrequest/setting-allowpaymentrequest.https.sub.html b/third_party/WebKit/LayoutTests/external/wpt/payment-request/allowpaymentrequest/setting-allowpaymentrequest.https.sub.html index 4564d264..bf6fe14 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/payment-request/allowpaymentrequest/setting-allowpaymentrequest.https.sub.html +++ b/third_party/WebKit/LayoutTests/external/wpt/payment-request/allowpaymentrequest/setting-allowpaymentrequest.https.sub.html
@@ -13,7 +13,7 @@ const path = location.pathname.substring(0, location.pathname.lastIndexOf('/') + 1); iframe.src = "https://{{domains[www1]}}:{{ports[https][0]}}" + path + "echo-PaymentRequest.html"; iframe.onload = t.step_func(() => { - if (i === 0) { + if (i === 1) { iframe.allowPaymentRequest = true; } iframe.contentWindow.postMessage('What is the result of new PaymentRequest(...)?', '*');
diff --git a/third_party/WebKit/LayoutTests/external/wpt/payment-request/payment-request-canmakepayment-method.https-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/payment-request/payment-request-canmakepayment-method.https-expected.txt new file mode 100644 index 0000000..26436ee --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/payment-request/payment-request-canmakepayment-method.https-expected.txt
@@ -0,0 +1,10 @@ +This is a testharness.js-based test. +Harness Error. harness_status.status = 1 , harness_status.message = Request failed +FAIL If request.[[state]] is "created", then return a promise that resolves to true for known method. promise_test: Unhandled rejection with value: object "ReferenceError: assert_equal is not defined" +FAIL If request.[[state]] is "interactive", then return a promise rejected with an "InvalidStateError" DOMException. promise_test: Unhandled rejection with value: object "InvalidStateError: Never called show(), so nothing to abort" +FAIL If request.[[state]] is "closed", then return a promise rejected with an "InvalidStateError" DOMException. promise_test: Unhandled rejection with value: object "UnknownError: Request failed" +FAIL If payment method identifier and serialized parts are supported, resolve promise with true. promise_test: Unhandled rejection with value: object "UnknownError: Request failed" +FAIL If payment method identifier is unknown, resolve promise with false. assert_true: Unexpected exception testing method this-is-not-supported, expected false. See error console. expected true got false +FAIL Optionally, at the user agent's discretion, return a promise rejected with a "NotAllowedError" DOMException. promise_test: Unhandled rejection with value: object "ReferenceError: assert_equal is not defined" +Harness: the test ran to completion. +
diff --git a/third_party/WebKit/LayoutTests/external/wpt/payment-request/payment-request-canmakepayment-method.https.http b/third_party/WebKit/LayoutTests/external/wpt/payment-request/payment-request-canmakepayment-method.https.html similarity index 100% rename from third_party/WebKit/LayoutTests/external/wpt/payment-request/payment-request-canmakepayment-method.https.http rename to third_party/WebKit/LayoutTests/external/wpt/payment-request/payment-request-canmakepayment-method.https.html
diff --git a/third_party/WebKit/LayoutTests/external/wpt/performance-timeline/idlharness-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/performance-timeline/idlharness-expected.txt new file mode 100644 index 0000000..61a1522 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/performance-timeline/idlharness-expected.txt
@@ -0,0 +1,37 @@ +This is a testharness.js-based test. +PASS Performance interface: operation getEntries(PerformanceEntryFilterOptions) +PASS Performance interface: operation getEntriesByType(DOMString) +PASS Performance interface: operation getEntriesByName(DOMString,DOMString) +PASS Performance interface: window.performance must inherit property "getEntries" with the proper type (0) +PASS Performance interface: calling getEntries(PerformanceEntryFilterOptions) on window.performance with too few arguments must throw TypeError +PASS Performance interface: window.performance must inherit property "getEntriesByType" with the proper type (1) +PASS Performance interface: calling getEntriesByType(DOMString) on window.performance with too few arguments must throw TypeError +PASS Performance interface: window.performance must inherit property "getEntriesByName" with the proper type (2) +PASS Performance interface: calling getEntriesByName(DOMString,DOMString) on window.performance with too few arguments must throw TypeError +PASS PerformanceEntry interface: existence and properties of interface object +PASS PerformanceEntry interface object length +PASS PerformanceEntry interface object name +PASS PerformanceEntry interface: existence and properties of interface prototype object +PASS PerformanceEntry interface: existence and properties of interface prototype object's "constructor" property +PASS PerformanceEntry interface: attribute name +PASS PerformanceEntry interface: attribute entryType +PASS PerformanceEntry interface: attribute startTime +PASS PerformanceEntry interface: attribute duration +FAIL PerformanceEntry interface: operation toJSON() Type DOMHighResTimeStamp not found +PASS PerformanceObserverEntryList interface: existence and properties of interface object +PASS PerformanceObserverEntryList interface object length +PASS PerformanceObserverEntryList interface object name +PASS PerformanceObserverEntryList interface: existence and properties of interface prototype object +PASS PerformanceObserverEntryList interface: existence and properties of interface prototype object's "constructor" property +PASS PerformanceObserverEntryList interface: operation getEntries(PerformanceEntryFilterOptions) +PASS PerformanceObserverEntryList interface: operation getEntriesByType(DOMString) +PASS PerformanceObserverEntryList interface: operation getEntriesByName(DOMString,DOMString) +PASS PerformanceObserver interface: existence and properties of interface object +PASS PerformanceObserver interface object length +PASS PerformanceObserver interface object name +PASS PerformanceObserver interface: existence and properties of interface prototype object +PASS PerformanceObserver interface: existence and properties of interface prototype object's "constructor" property +PASS PerformanceObserver interface: operation observe(PerformanceObserverInit) +PASS PerformanceObserver interface: operation disconnect() +Harness: the test ran to completion. +
diff --git a/third_party/WebKit/LayoutTests/external/wpt/performance-timeline/idlharness.html b/third_party/WebKit/LayoutTests/external/wpt/performance-timeline/idlharness.html index 0500b3e..7d6741d2 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/performance-timeline/idlharness.html +++ b/third_party/WebKit/LayoutTests/external/wpt/performance-timeline/idlharness.html
@@ -28,7 +28,7 @@ readonly attribute DOMString entryType; readonly attribute DOMHighResTimeStamp startTime; readonly attribute DOMHighResTimeStamp duration; - serializer = {attribute}; + [Default] object toJSON(); }; dictionary PerformanceEntryFilterOptions {
diff --git a/third_party/WebKit/LayoutTests/external/wpt/resource-timing/idlharness-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/resource-timing/idlharness-expected.txt new file mode 100644 index 0000000..451d5a9 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/resource-timing/idlharness-expected.txt
@@ -0,0 +1,28 @@ +This is a testharness.js-based test. +PASS Performance interface: operation clearResourceTimings() +PASS Performance interface: operation setResourceTimingBufferSize(unsigned long) +PASS Performance interface: attribute onresourcetimingbufferfull +PASS Performance interface: window.performance must inherit property "clearResourceTimings" with the proper type (3) +PASS Performance interface: window.performance must inherit property "setResourceTimingBufferSize" with the proper type (4) +PASS Performance interface: calling setResourceTimingBufferSize(unsigned long) on window.performance with too few arguments must throw TypeError +PASS Performance interface: window.performance must inherit property "onresourcetimingbufferfull" with the proper type (5) +PASS PerformanceResourceTiming interface: existence and properties of interface object +PASS PerformanceResourceTiming interface object length +PASS PerformanceResourceTiming interface object name +PASS PerformanceResourceTiming interface: existence and properties of interface prototype object +PASS PerformanceResourceTiming interface: existence and properties of interface prototype object's "constructor" property +PASS PerformanceResourceTiming interface: attribute initiatorType +PASS PerformanceResourceTiming interface: attribute redirectStart +PASS PerformanceResourceTiming interface: attribute redirectEnd +PASS PerformanceResourceTiming interface: attribute fetchStart +PASS PerformanceResourceTiming interface: attribute domainLookupStart +PASS PerformanceResourceTiming interface: attribute domainLookupEnd +PASS PerformanceResourceTiming interface: attribute connectStart +PASS PerformanceResourceTiming interface: attribute connectEnd +PASS PerformanceResourceTiming interface: attribute secureConnectionStart +PASS PerformanceResourceTiming interface: attribute requestStart +PASS PerformanceResourceTiming interface: attribute responseStart +PASS PerformanceResourceTiming interface: attribute responseEnd +FAIL PerformanceResourceTiming interface: operation toJSON() assert_own_property: interface prototype object missing non-static operation expected property "toJSON" missing +Harness: the test ran to completion. +
diff --git a/third_party/WebKit/LayoutTests/external/wpt/resource-timing/idlharness.html b/third_party/WebKit/LayoutTests/external/wpt/resource-timing/idlharness.html index 15afd094..8daf946 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/resource-timing/idlharness.html +++ b/third_party/WebKit/LayoutTests/external/wpt/resource-timing/idlharness.html
@@ -54,7 +54,7 @@ readonly attribute DOMHighResTimeStamp requestStart; readonly attribute DOMHighResTimeStamp responseStart; readonly attribute DOMHighResTimeStamp responseEnd; - serializer = {inherit, attribute}; + [Default] object toJSON(); }; partial interface Performance { void clearResourceTimings();
diff --git a/third_party/WebKit/LayoutTests/external/wpt/url/urlsearchparams-delete-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/url/urlsearchparams-delete-expected.txt new file mode 100644 index 0000000..f3a9421 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/url/urlsearchparams-delete-expected.txt
@@ -0,0 +1,6 @@ +This is a testharness.js-based test. +PASS Delete basics +PASS Deleting appended multiple +FAIL Deleting all params keeps ? in URL assert_equals: url.href has ? expected "http://example.com/?" but got "http://example.com/" +Harness: the test ran to completion. +
diff --git a/third_party/WebKit/LayoutTests/external/wpt/url/urlsearchparams-delete.html b/third_party/WebKit/LayoutTests/external/wpt/url/urlsearchparams-delete.html index fca64621..afc9c60 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/url/urlsearchparams-delete.html +++ b/third_party/WebKit/LayoutTests/external/wpt/url/urlsearchparams-delete.html
@@ -36,6 +36,14 @@ params.delete('first'); assert_false(params.has('first'), 'Search params object has no "first" name'); }, 'Deleting appended multiple'); + +test(function() { + var url = new URL('http://example.com/?param1¶m2'); + url.searchParams.delete('param1'); + url.searchParams.delete('param2'); + assert_equals(url.href, 'http://example.com/?', 'url.href has ?'); + assert_equals(url.search, '', 'url.search does not have ?'); +}, 'Deleting all params keeps ? in URL'); </script> </head> </html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/web-share/idlharness.https-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/web-share/idlharness.https-expected.txt new file mode 100644 index 0000000..95f8804d --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/web-share/idlharness.https-expected.txt
@@ -0,0 +1,7 @@ +This is a testharness.js-based test. +PASS Test driver +FAIL Navigator interface: operation share(ShareData) assert_equals: property has wrong .length expected 0 but got 1 +PASS Navigator interface: navigator must inherit property "share" with the proper type (0) +PASS Navigator interface: calling share(ShareData) on navigator with too few arguments must throw TypeError +Harness: the test ran to completion. +
diff --git a/third_party/WebKit/LayoutTests/external/wpt/web-share/share-empty-manual.html b/third_party/WebKit/LayoutTests/external/wpt/web-share/share-empty-manual.html deleted file mode 100644 index 63b2d4d..0000000 --- a/third_party/WebKit/LayoutTests/external/wpt/web-share/share-empty-manual.html +++ /dev/null
@@ -1,18 +0,0 @@ -<!DOCTYPE html> -<html> - <head> - <meta charset="utf-8"> - <title>WebShare Test: Share with empty ShareData</title> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src="resources/manual-helper.js"></script> - </head> - <body> - <script> - setup({explicit_timeout: true}); - - setupManualShareTest({title: '', text: '', url: ''}); - callWhenButtonClicked(() => navigator.share({})); - </script> - </body> -</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/web-share/share-empty.https-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/web-share/share-empty.https-expected.txt new file mode 100644 index 0000000..cad8a4d --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/web-share/share-empty.https-expected.txt
@@ -0,0 +1,8 @@ +This is a testharness.js-based test. +PASS share with no arguments (same as empty dictionary) +FAIL share with an empty dictionary assert_throws: function "function () { throw e }" threw object "SecurityError: Must be handling a user gesture to perform a share request." ("SecurityError") expected object "TypeError" ("TypeError") +FAIL share with a undefined argument (same as empty dictionary) assert_throws: function "function () { throw e }" threw object "SecurityError: Must be handling a user gesture to perform a share request." ("SecurityError") expected object "TypeError" ("TypeError") +FAIL share with a null argument (same as empty dictionary) assert_throws: function "function () { throw e }" threw object "SecurityError: Must be handling a user gesture to perform a share request." ("SecurityError") expected object "TypeError" ("TypeError") +FAIL share with a dictionary containing only surplus fields assert_throws: function "function () { throw e }" threw object "SecurityError: Must be handling a user gesture to perform a share request." ("SecurityError") expected object "TypeError" ("TypeError") +Harness: the test ran to completion. +
diff --git a/third_party/WebKit/LayoutTests/external/wpt/web-share/share-empty.https.html b/third_party/WebKit/LayoutTests/external/wpt/web-share/share-empty.https.html new file mode 100644 index 0000000..ee10518 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/web-share/share-empty.https.html
@@ -0,0 +1,34 @@ +<!DOCTYPE html> +<html> + <head> + <meta charset="utf-8"> + <title>WebShare Test: Share no known fields</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="resources/manual-helper.js"></script> + </head> + <body> + <script> + promise_test(t => { + return promise_rejects(t, new TypeError(), navigator.share()); + }, 'share with no arguments (same as empty dictionary)'); + + promise_test(t => { + return promise_rejects(t, new TypeError(), navigator.share({})); + }, 'share with an empty dictionary'); + + promise_test(t => { + return promise_rejects(t, new TypeError(), navigator.share(undefined)); + }, 'share with a undefined argument (same as empty dictionary)'); + + promise_test(t => { + return promise_rejects(t, new TypeError(), navigator.share(null)); + }, 'share with a null argument (same as empty dictionary)'); + + promise_test(t => { + return promise_rejects(t, + new TypeError(), navigator.share({unused: 'unexpected field'})); + }, 'share with a dictionary containing only surplus fields'); + </script> + </body> +</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/web-share/share-without-user-gesture.https-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/web-share/share-without-user-gesture.https-expected.txt new file mode 100644 index 0000000..c230bd5 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/web-share/share-without-user-gesture.https-expected.txt
@@ -0,0 +1,4 @@ +This is a testharness.js-based test. +FAIL share without a user gesture assert_throws: function "function () { throw e }" threw object "SecurityError: Must be handling a user gesture to perform a share request." that is not a DOMException NotAllowedError: property "code" is equal to 18, expected 0 +Harness: the test ran to completion. +
diff --git a/third_party/WebKit/LayoutTests/external/wpt/web-share/share-without-user-gesture.https.html b/third_party/WebKit/LayoutTests/external/wpt/web-share/share-without-user-gesture.https.html index fc87a4af..cf933b8 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/web-share/share-without-user-gesture.https.html +++ b/third_party/WebKit/LayoutTests/external/wpt/web-share/share-without-user-gesture.https.html
@@ -10,7 +10,7 @@ <script> promise_test(t => { return promise_rejects( - t, 'SecurityError', + t, 'NotAllowedError', navigator.share({title: 'the title', text: 'the message', url: 'data:the url'})); }, 'share without a user gesture');
diff --git a/third_party/WebKit/LayoutTests/external/wpt/webrtc/RTCConfiguration-bundlePolicy-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/webrtc/RTCConfiguration-bundlePolicy-expected.txt new file mode 100644 index 0000000..c031d6e --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/webrtc/RTCConfiguration-bundlePolicy-expected.txt
@@ -0,0 +1,18 @@ +This is a testharness.js-based test. +FAIL Default bundlePolicy should be balanced pc.getConfiguration is not a function +FAIL new RTCPeerConnection({ bundlePolicy: undefined }) should have bundlePolicy balanced pc.getConfiguration is not a function +FAIL new RTCPeerConnection({ bundlePolicy: 'balanced' }) should succeed pc.getConfiguration is not a function +FAIL new RTCPeerConnection({ bundlePolicy: 'max-compat' }) should succeed pc.getConfiguration is not a function +FAIL new RTCPeerConnection({ bundlePolicy: 'max-bundle' }) should succeed pc.getConfiguration is not a function +PASS setConfiguration({}) with initial default bundlePolicy balanced should succeed +PASS setConfiguration({}) with initial bundlePolicy balanced should succeed +PASS setConfiguration({ bundlePolicy: balanced }) with initial default bundlePolicy balanced should succeed +PASS setConfiguration({ bundlePolicy: 'balanced' }) with initial bundlePolicy balanced should succeed +PASS setConfiguration({ bundlePolicy: 'max-compat' }) with initial bundlePolicy max-compat should succeed +PASS setConfiguration({ bundlePolicy: 'max-bundle' }) with initial bundlePolicy max-bundle should succeed +PASS new RTCPeerConnection({ bundlePolicy: null }) should throw TypeError +PASS new RTCPeerConnection({ bundlePolicy: 'invalid' }) should throw TypeError +FAIL setConfiguration({ bundlePolicy: 'max-compat' }) with initial bundlePolicy max-bundle should throw InvalidModificationError assert_own_property: expected property "setConfiguration" missing +FAIL setConfiguration({}) with initial bundlePolicy max-bundle should throw InvalidModificationError assert_own_property: expected property "setConfiguration" missing +Harness: the test ran to completion. +
diff --git a/third_party/WebKit/LayoutTests/external/wpt/webrtc/RTCConfiguration-bundlePolicy.html b/third_party/WebKit/LayoutTests/external/wpt/webrtc/RTCConfiguration-bundlePolicy.html new file mode 100644 index 0000000..e609ce4 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/webrtc/RTCConfiguration-bundlePolicy.html
@@ -0,0 +1,128 @@ +<!doctype html> +<meta charset=utf-8> +<title>RTCConfiguration bundlePolicy</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script> + 'use strict'; + + // Test is based on the following editor draft: + // https://w3c.github.io/webrtc-pc/archives/20170605/webrtc.html + + /* + 4.3.2. Interface Definition + [Constructor(optional RTCConfiguration configuration)] + interface RTCPeerConnection : EventTarget { + ... + RTCConfiguration getConfiguration(); + void setConfiguration(RTCConfiguration configuration); + }; + + 4.2.1. RTCConfiguration Dictionary + dictionary RTCConfiguration { + RTCBundlePolicy bundlePolicy = "balanced"; + ... + }; + + 4.2.6. RTCBundlePolicy Enum + enum RTCBundlePolicy { + "balanced", + "max-compat", + "max-bundle" + }; + */ + + test(() => { + const pc = new RTCPeerConnection(); + assert_equals(pc.getConfiguration().bundlePolicy, 'balanced'); + }, 'Default bundlePolicy should be balanced'); + + test(() => { + const pc = new RTCPeerConnection({ bundlePolicy: undefined }); + assert_equals(pc.getConfiguration().bundlePolicy, 'balanced'); + }, `new RTCPeerConnection({ bundlePolicy: undefined }) should have bundlePolicy balanced`); + + test(() => { + const pc = new RTCPeerConnection({ bundlePolicy: 'balanced' }); + assert_equals(pc.getConfiguration().bundlePolicy, 'balanced'); + }, `new RTCPeerConnection({ bundlePolicy: 'balanced' }) should succeed`); + + test(() => { + const pc = new RTCPeerConnection({ bundlePolicy: 'max-compat' }); + assert_equals(pc.getConfiguration().bundlePolicy, 'max-compat'); + }, `new RTCPeerConnection({ bundlePolicy: 'max-compat' }) should succeed`); + + test(() => { + const pc = new RTCPeerConnection({ bundlePolicy: 'max-bundle' }); + assert_equals(pc.getConfiguration().bundlePolicy, 'max-bundle'); + }, `new RTCPeerConnection({ bundlePolicy: 'max-bundle' }) should succeed`); + + test(() => { + const pc = new RTCPeerConnection(); + pc.setConfiguration({}); + }, 'setConfiguration({}) with initial default bundlePolicy balanced should succeed'); + + test(() => { + const pc = new RTCPeerConnection({ bundlePolicy: 'balanced' }); + pc.setConfiguration({}); + }, 'setConfiguration({}) with initial bundlePolicy balanced should succeed'); + + test(() => { + const pc = new RTCPeerConnection(); + pc.setConfiguration({ bundlePolicy: 'balanced' }); + }, 'setConfiguration({ bundlePolicy: balanced }) with initial default bundlePolicy balanced should succeed'); + + test(() => { + const pc = new RTCPeerConnection({ bundlePolicy: 'balanced' }); + pc.setConfiguration({ bundlePolicy: 'balanced' }); + }, `setConfiguration({ bundlePolicy: 'balanced' }) with initial bundlePolicy balanced should succeed`); + + test(() => { + const pc = new RTCPeerConnection({ bundlePolicy: 'max-compat' }); + pc.setConfiguration({ bundlePolicy: 'max-compat' }); + }, `setConfiguration({ bundlePolicy: 'max-compat' }) with initial bundlePolicy max-compat should succeed`); + + test(() => { + const pc = new RTCPeerConnection({ bundlePolicy: 'max-bundle' }); + pc.setConfiguration({ bundlePolicy: 'max-bundle' }); + }, `setConfiguration({ bundlePolicy: 'max-bundle' }) with initial bundlePolicy max-bundle should succeed`); + + test(() => { + assert_throws(new TypeError(), () => + new RTCPeerConnection({ bundlePolicy: null })); + }, `new RTCPeerConnection({ bundlePolicy: null }) should throw TypeError`); + + test(() => { + assert_throws(new TypeError(), () => + new RTCPeerConnection({ bundlePolicy: 'invalid' })); + }, `new RTCPeerConnection({ bundlePolicy: 'invalid' }) should throw TypeError`); + + /* + 4.3.2. Interface Definition + To set a configuration + 5. If configuration.bundlePolicy is set and its value differs from the + connection's bundle policy, throw an InvalidModificationError. + */ + test(() => { + const pc = new RTCPeerConnection({ bundlePolicy: 'max-bundle' }); + assert_own_property(pc, 'setConfiguration'); + + assert_throws('InvalidModificationError', () => + pc.setConfiguration({ bundlePolicy: 'max-compat' })); + }, `setConfiguration({ bundlePolicy: 'max-compat' }) with initial bundlePolicy max-bundle should throw InvalidModificationError`); + + test(() => { + const pc = new RTCPeerConnection({ bundlePolicy: 'max-bundle' }); + assert_own_property(pc, 'setConfiguration'); + + // the default value for bundlePolicy is balanced + assert_throws('InvalidModificationError', () => + pc.setConfiguration({})); + }, `setConfiguration({}) with initial bundlePolicy max-bundle should throw InvalidModificationError`); + + /* + Coverage Report + Tested 2 + Total 2 + */ +</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/webrtc/RTCPeerConnection-constructor-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/webrtc/RTCPeerConnection-constructor-expected.txt index e5236ea..2621126a 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/webrtc/RTCPeerConnection-constructor-expected.txt +++ b/third_party/WebKit/LayoutTests/external/wpt/webrtc/RTCPeerConnection-constructor-expected.txt
@@ -1,5 +1,5 @@ This is a testharness.js-based test. -Found 71 tests; 60 PASS, 11 FAIL, 0 TIMEOUT, 0 NOTRUN. +Found 65 tests; 54 PASS, 11 FAIL, 0 TIMEOUT, 0 NOTRUN. PASS RTCPeerConnection.length PASS new RTCPeerConnection() PASS new RTCPeerConnection(null) @@ -46,12 +46,6 @@ PASS new RTCPeerConnection({ iceTransportPolicy: "none" }) FAIL new RTCPeerConnection({ iceTransports: "invalid" }) Failed to construct 'RTCPeerConnection': The provided value 'invalid' is not a valid enum value of type RTCIceTransportPolicy. FAIL new RTCPeerConnection({ iceTransports: "none" }) Failed to construct 'RTCPeerConnection': The provided value 'none' is not a valid enum value of type RTCIceTransportPolicy. -PASS new RTCPeerConnection({ bundlePolicy: null }) -PASS new RTCPeerConnection({ bundlePolicy: undefined }) -PASS new RTCPeerConnection({ bundlePolicy: "balanced" }) -PASS new RTCPeerConnection({ bundlePolicy: "max-compat" }) -PASS new RTCPeerConnection({ bundlePolicy: "max-bundle" }) -PASS new RTCPeerConnection({ bundlePolicy: "invalid" }) PASS new RTCPeerConnection({ rtcpMuxPolicy: null }) PASS new RTCPeerConnection({ rtcpMuxPolicy: undefined }) PASS new RTCPeerConnection({ rtcpMuxPolicy: "negotiate" })
diff --git a/third_party/WebKit/LayoutTests/external/wpt/webrtc/RTCPeerConnection-constructor.html b/third_party/WebKit/LayoutTests/external/wpt/webrtc/RTCPeerConnection-constructor.html index 97cc200b..d14afaf 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/webrtc/RTCPeerConnection-constructor.html +++ b/third_party/WebKit/LayoutTests/external/wpt/webrtc/RTCPeerConnection-constructor.html
@@ -70,14 +70,6 @@ '{ iceTransports: "invalid" }': false, '{ iceTransports: "none" }': false, - // bundlePolicy - '{ bundlePolicy: null }': new TypeError, - '{ bundlePolicy: undefined }': false, - '{ bundlePolicy: "balanced" }': false, - '{ bundlePolicy: "max-compat" }': false, - '{ bundlePolicy: "max-bundle" }': false, - '{ bundlePolicy: "invalid" }': new TypeError, - // rtcpMuxPolicy '{ rtcpMuxPolicy: null }': new TypeError, '{ rtcpMuxPolicy: undefined }': false,
diff --git a/third_party/WebKit/LayoutTests/external/wpt/webrtc/RTCPeerConnection-getDefaultIceServers-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/webrtc/RTCPeerConnection-getDefaultIceServers-expected.txt new file mode 100644 index 0000000..559d50c3 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/webrtc/RTCPeerConnection-getDefaultIceServers-expected.txt
@@ -0,0 +1,4 @@ +This is a testharness.js-based test. +FAIL RTCPeerConnection.getDefaultIceServers() should return array of RTCIceServer assert_own_property: expected property "getDefaultIceServers" missing +Harness: the test ran to completion. +
diff --git a/third_party/WebKit/LayoutTests/external/wpt/webrtc/RTCPeerConnection-getDefaultIceServers.html b/third_party/WebKit/LayoutTests/external/wpt/webrtc/RTCPeerConnection-getDefaultIceServers.html new file mode 100644 index 0000000..8d06f08 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/webrtc/RTCPeerConnection-getDefaultIceServers.html
@@ -0,0 +1,99 @@ +<!doctype html> +<meta charset=utf-8> +<title>RTCPeerConnection.getDefaultIceServers</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script> + 'use strict'; + + // Test is based on the following editor draft: + // https://w3c.github.io/webrtc-pc/archives/20170605/webrtc.html + + /* + [Constructor(optional RTCConfiguration configuration)] + interface RTCPeerConnection : EventTarget { + static sequence<RTCIceServer> getDefaultIceServers(); + ... + }; + + dictionary RTCIceServer { + required (DOMString or sequence<DOMString>) urls; + DOMString username; + (DOMString or RTCOAuthCredential) credential; + RTCIceCredentialType credentialType = "password"; + }; + + dictionary RTCOAuthCredential { + required DOMString macKey; + required DOMString accessToken; + }; + + enum RTCIceCredentialType { + "password", + "oauth" + }; + */ + + test(() => { + assert_own_property(RTCPeerConnection, 'getDefaultIceServers'); + const iceServers = RTCPeerConnection.getDefaultIceServers(); + + assert_true(Array.isArray(iceServers), + 'Expect iceServers to be an array'); + + // dictionary IDL cannot be tested automatically using idlharness + for(const server of iceServers) { + const { urls, username, credential, credentialType } = server; + + if(Array.isArray(urls)) { + for(const url of urls) { + assert_equals(typeof url, 'string', + 'Expect elements in urls array to be string'); + } + } else { + assert_equals(typeof urls, 'string', + 'Expect urls to be either string or array'); + } + + if(username !== undefined) { + assert_equals(typeof username, 'string', + 'Expect username to be either undefined or string'); + } + + assert_true(credentialType === 'password' || credentialType === 'oauth', + 'Expect credentialType to be either password or oauth') + + if(credential) { + if(typeof(credential) === 'object') { + const { macKey, accessToken } = credential; + assert_equals(typeof macKey, 'string', + 'Expect macKey to be string'); + + assert_equals(typeof accessToken, 'string', + 'Expect accessToken to be string'); + + } else { + assert_equals(typeof credential, 'string', + 'Expect credential to be either undefined, string, or RTCOauthCredential dictionary'); + } + } + } + + // Expect default ice servers to be accepted as valid configuration + const pc = new RTCPeerConnection({ iceServers }); + + // Only make sure there are same number of ice servers configured + // and not do any deep equality checking + assert_equals(pc.getConfiguration().iceServers.length, iceServers.length); + + }, 'RTCPeerConnection.getDefaultIceServers() should return array of RTCIceServer'); + + /* + Coverage Report + Since there is no steps involved and we are only checking basic call, + This is counted as 1 trivial test coverage. + + Tested 1 + Total 1 + */ +</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/webrtc/RTCRtpTransceiver-setDirection-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/webrtc/RTCRtpTransceiver-setDirection-expected.txt new file mode 100644 index 0000000..f871d9e1 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/webrtc/RTCRtpTransceiver-setDirection-expected.txt
@@ -0,0 +1,6 @@ +This is a testharness.js-based test. +FAIL setDirection should change transceiver.direction pc.addTransceiver is not a function +FAIL setDirection with same direction should have no effect pc.addTransceiver is not a function +FAIL setDirection should change transceiver.direction independent of transceiver.currentDirection pc.addTransceiver is not a function +Harness: the test ran to completion. +
diff --git a/third_party/WebKit/LayoutTests/external/wpt/webrtc/RTCRtpTransceiver-setDirection.html b/third_party/WebKit/LayoutTests/external/wpt/webrtc/RTCRtpTransceiver-setDirection.html new file mode 100644 index 0000000..00cddce --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/webrtc/RTCRtpTransceiver-setDirection.html
@@ -0,0 +1,94 @@ +<!doctype html> +<meta charset=utf-8> +<title>RTCRtpTransceiver.prototype.setDirection</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="RTCPeerConnection-helper.js"></script> +<script> + 'use strict'; + + // Test is based on the following editor draft: + // https://rawgit.com/w3c/webrtc-pc/cc8d80f455b86c8041d63bceb8b457f45c72aa89/webrtc.html + + // The following helper functions are called from RTCPeerConnection-helper.js: + // generateAnswer + + /* + 5.4. RTCRtpTransceiver Interface + interface RTCRtpTransceiver { + readonly attribute RTCRtpTransceiverDirection direction; + readonly attribute RTCRtpTransceiverDirection? currentDirection; + void setDirection(RTCRtpTransceiverDirection direction); + ... + }; + */ + + /* + 5.4. setDirection + 4. Set transceiver's [[Direction]] slot to newDirection. + */ + test(t => { + const pc = new RTCPeerConnection(); + const transceiver = pc.addTransceiver('audio'); + assert_equals(transceiver.direction, 'sendrecv'); + assert_equals(transceiver.currentDirection, null); + + transceiver.setDirection('recvonly'); + assert_equals(transceiver.direction, 'recvonly'); + assert_equals(transceiver.currentDirection, null, + 'Expect transceiver.currentDirection to not change'); + + }, 'setDirection should change transceiver.direction'); + + /* + 5.4. setDirection + 3. If newDirection is equal to transceiver's [[Direction]] slot, abort + these steps. + */ + test(t => { + const pc = new RTCPeerConnection(); + const transceiver = pc.addTransceiver('audio', { direction: 'sendonly' }); + assert_equals(transceiver.direction, 'sendonly'); + transceiver.setDirection('sendonly'); + assert_equals(transceiver.direction, 'sendonly'); + + }, 'setDirection with same direction should have no effect'); + + promise_test(t => { + const pc = new RTCPeerConnection(); + const transceiver = pc.addTransceiver('audio', { direction: 'recvonly' }); + assert_equals(transceiver.direction, 'recvonly'); + assert_equals(transceiver.currentDirection, null); + + return pc.createOffer() + .then(offer => + pc.setLocalDescription(offer) + .then(() => generateAnswer(offer))) + .then(answer => pc.setRemoteDescription(answer)) + .then(() => { + assert_equals(transceiver.currentDirection, 'recvonly'); + transceiver.setDirection('sendrecv'); + assert_equals(transceiver.direction, 'sendrecv'); + assert_equals(transceiver.currentDirection, 'recvonly'); + }); + }, 'setDirection should change transceiver.direction independent of transceiver.currentDirection'); + + /* + TODO + Calls to setDirection() do not take effect immediately. Instead, future calls + to createOffer and createAnswer mark the corresponding media description as + sendrecv, sendonly, recvonly or inactive as defined in [JSEP] (section 5.2.2. + and section 5.3.2.). + + Tested in RTCPeerConnection-onnegotiationneeded.html + 5.4. setDirection + 6. Update the negotiation-needed flag for connection. + + Coverage Report + Tested 6 + Not Tested 1 + Untestable 0 + Total 7 + */ + +</script>
diff --git a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-02-t.svg b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-02-t.svg index ce7bdc9..3c8f3a53 100644 --- a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-02-t.svg +++ b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-02-t.svg
@@ -90,4 +90,8 @@ <text id="revision" x="10" y="340" font-size="40" stroke="none" fill="black">$Revision: 1.8 $</text> <rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000000"/> </g> + <script> + // Pause the animation at t=0. + document.documentElement.pauseAnimations(); + </script> </svg>
diff --git a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-03-t.svg b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-03-t.svg index 51c8e899..27cdf90 100644 --- a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-03-t.svg +++ b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-03-t.svg
@@ -85,4 +85,8 @@ </g> <text id="revision" x="10" y="340" font-size="40" stroke="none" fill="black">$Revision: 1.10 $</text> <rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000000"/> + <script> + // Pause the animation at t=0. + document.documentElement.pauseAnimations(); + </script> </svg>
diff --git a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-04-t.svg b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-04-t.svg index ac3cdee..cee696b 100644 --- a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-04-t.svg +++ b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-04-t.svg
@@ -50,4 +50,8 @@ </g> <text id="revision" x="5" y="57" font-size="6" stroke="none" fill="black">$Revision: 1.7 $</text> <rect id="test-frame" x="1" y="1" width="78" height="58" fill="none" stroke="#000000"/> + <script> + // Pause the animation at t=0. + document.documentElement.pauseAnimations(); + </script> </svg>
diff --git a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-05-t.svg b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-05-t.svg index 5cb72ad..e1a2c3c6b 100644 --- a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-05-t.svg +++ b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-05-t.svg
@@ -52,4 +52,8 @@ </g> <text id="revision" x="5" y="57" font-size="6" stroke="none" fill="black">$Revision: 1.8 $</text> <rect id="test-frame" x="1" y="1" width="78" height="58" fill="none" stroke="#000000"/> + <script> + // Pause the animation at t=0. + document.documentElement.pauseAnimations(); + </script> </svg>
diff --git a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-06-t.svg b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-06-t.svg index 1cb3f5b..d17c878 100644 --- a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-06-t.svg +++ b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-06-t.svg
@@ -51,4 +51,8 @@ </g> <text id="revision" x="5" y="57" font-size="6" stroke="none" fill="black">$Revision: 1.9 $</text> <rect id="test-frame" x="1" y="1" width="78" height="58" fill="none" stroke="#000000"/> + <script> + // Pause the animation at t=0. + document.documentElement.pauseAnimations(); + </script> </svg>
diff --git a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-07-t.svg b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-07-t.svg index 44867325..92409b6 100644 --- a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-07-t.svg +++ b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-07-t.svg
@@ -53,4 +53,8 @@ </g> <text id="revision" x="5" y="57" font-size="6" stroke="none" fill="black">$Revision: 1.8 $</text> <rect id="test-frame" x="1" y="1" width="78" height="58" fill="none" stroke="#000000"/> + <script> + // Pause the animation at t=0. + document.documentElement.pauseAnimations(); + </script> </svg>
diff --git a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-08-t.svg b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-08-t.svg index 588d5c6..6e2c45c 100644 --- a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-08-t.svg +++ b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-08-t.svg
@@ -68,4 +68,8 @@ </g> <text id="revision" x="10" y="340" font-size="40" stroke="none" fill="black">$Revision: 1.8 $</text> <rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000000"/> + <script> + // Pause the animation at t=0. + document.documentElement.pauseAnimations(); + </script> </svg>
diff --git a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-09-t.svg b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-09-t.svg index 16401ca..3162bcf9 100644 --- a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-09-t.svg +++ b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-09-t.svg
@@ -87,4 +87,8 @@ </g> <text id="revision" x="10" y="340" font-size="40" stroke="none" fill="black">$Revision: 1.8 $</text> <rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000000"/> + <script> + // Pause the animation at t=0. + document.documentElement.pauseAnimations(); + </script> </svg>
diff --git a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-10-t.svg b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-10-t.svg index 7c3473ea..ae29af8 100644 --- a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-10-t.svg +++ b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-10-t.svg
@@ -84,4 +84,8 @@ </g> <text id="revision" x="10" y="340" font-size="40" stroke="none" fill="black">$Revision: 1.8 $</text> <rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000000"/> + <script> + // Pause the animation at t=0. + document.documentElement.pauseAnimations(); + </script> </svg>
diff --git a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-11-t.svg b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-11-t.svg index 783ac15..5b1c63e7 100644 --- a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-11-t.svg +++ b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-11-t.svg
@@ -83,4 +83,8 @@ </g> <text id="revision" x="10" y="340" font-size="40" stroke="none" fill="black">$Revision: 1.9 $</text> <rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000000"/> + <script> + // Pause the animation at t=0. + document.documentElement.pauseAnimations(); + </script> </svg>
diff --git a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-12-t.svg b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-12-t.svg index 7f8b3c56..613e85bb 100644 --- a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-12-t.svg +++ b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-12-t.svg
@@ -83,4 +83,8 @@ </g> <text id="revision" x="10" y="340" font-size="40" stroke="none" fill="black">$Revision: 1.8 $</text> <rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000000"/> + <script> + // Pause the animation at t=0. + document.documentElement.pauseAnimations(); + </script> </svg>
diff --git a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-13-t.svg b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-13-t.svg index 8f0aff07f..98d6ab1 100644 --- a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-13-t.svg +++ b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-13-t.svg
@@ -91,4 +91,8 @@ <text id="revision" x="10" y="340" font-size="40" stroke="none" fill="black">$Revision: 1.8 $</text> <rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000000"/> + <script> + // Pause the animation at t=0. + document.documentElement.pauseAnimations(); + </script> </svg>
diff --git a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-14-t.svg b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-14-t.svg index 6809fd47..782ca91 100644 --- a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-14-t.svg +++ b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-14-t.svg
@@ -72,5 +72,9 @@ </g> <text id="revision" x="10" y="340" font-size="40" stroke="none" fill="black">$Revision: 1.6 $</text> <rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000000"/> + <script> + // Pause the animation at t=0. + document.documentElement.pauseAnimations(); + </script> </svg>
diff --git a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-15-t.svg b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-15-t.svg index c075c15..1f57eaa 100644 --- a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-15-t.svg +++ b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-15-t.svg
@@ -73,5 +73,9 @@ </g> <text id="revision" x="10" y="340" font-size="40" stroke="none" fill="black">$Revision: 1.5 $</text> <rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000000"/> + <script> + // Pause the animation at t=0. + document.documentElement.pauseAnimations(); + </script> </svg>
diff --git a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-16-t.svg b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-16-t.svg index c5d8d15..f00afe0 100644 --- a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-16-t.svg +++ b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-16-t.svg
@@ -73,5 +73,9 @@ </g> <text id="revision" x="10" y="340" font-size="40" stroke="none" fill="black">$Revision: 1.1 $</text> <rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000000"/> + <script> + // Pause the animation at t=0. + document.documentElement.pauseAnimations(); + </script> </svg>
diff --git a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-17-t.svg b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-17-t.svg index b1d378f7..d84c63b5 100644 --- a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-17-t.svg +++ b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-17-t.svg
@@ -73,5 +73,9 @@ </g> <text id="revision" x="10" y="340" font-size="40" stroke="none" fill="black">$Revision: 1.6 $</text> <rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000000"/> + <script> + // Pause the animation at t=0. + document.documentElement.pauseAnimations(); + </script> </svg>
diff --git a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-18-t.svg b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-18-t.svg index af4c139..f63d5ce 100644 --- a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-18-t.svg +++ b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-18-t.svg
@@ -72,5 +72,9 @@ </g> <text id="revision" x="10" y="340" font-size="40" stroke="none" fill="black">$Revision: 1.1 $</text> <rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000000"/> + <script> + // Pause the animation at t=0. + document.documentElement.pauseAnimations(); + </script> </svg>
diff --git a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-19-t.svg b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-19-t.svg index f01c31e..2d8fa90 100644 --- a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-19-t.svg +++ b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-19-t.svg
@@ -73,5 +73,9 @@ </g> <text id="revision" x="10" y="340" font-size="40" stroke="none" fill="black">$Revision: 1.6 $</text> <rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000000"/> + <script> + // Pause the animation at t=0. + document.documentElement.pauseAnimations(); + </script> </svg>
diff --git a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-20-t.svg b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-20-t.svg index 3aa6b057..431f4527 100644 --- a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-20-t.svg +++ b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-20-t.svg
@@ -72,4 +72,8 @@ </g> <text id="revision" x="10" y="340" font-size="40" stroke="none" fill="black">$Revision: 1.8 $</text> <rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000000"/> + <script> + // Pause the animation at t=0. + document.documentElement.pauseAnimations(); + </script> </svg>
diff --git a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-21-t.svg b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-21-t.svg index 05b36deb..e2baa0b 100644 --- a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-21-t.svg +++ b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-21-t.svg
@@ -84,4 +84,8 @@ </g> <text id="revision" x="10" y="340" font-size="40" stroke="none" fill="black">$Revision: 1.8 $</text> <rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000000"/> + <script> + // Pause the animation at t=0. + document.documentElement.pauseAnimations(); + </script> </svg>
diff --git a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-22-b.svg b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-22-b.svg index c2fc11d..cba1ecb 100644 --- a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-22-b.svg +++ b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-22-b.svg
@@ -76,5 +76,9 @@ </g> <text id="revision" x="10" y="340" font-size="40" stroke="none" fill="black">$Revision: 1.6 $</text> <rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000000"/> + <script> + // Pause the animation at t=0. + document.documentElement.pauseAnimations(); + </script> </svg>
diff --git a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-23-t.svg b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-23-t.svg index fbfa958..03eef70a 100644 --- a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-23-t.svg +++ b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-23-t.svg
@@ -83,5 +83,9 @@ </g> <text id="revision" x="10" y="340" font-size="40" stroke="none" fill="black">$Revision: 1.7 $</text> <rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000000"/> + <script> + // Pause the animation at t=0. + document.documentElement.pauseAnimations(); + </script> </svg>
diff --git a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-24-t.svg b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-24-t.svg index 2d2f041..3415fdc 100644 --- a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-24-t.svg +++ b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-24-t.svg
@@ -102,4 +102,8 @@ </g> <text id="revision" x="10" y="340" font-size="40" stroke="none" fill="black">$Revision: 1.7 $</text> <rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000000"/> + <script> + // Pause the animation at t=0. + document.documentElement.pauseAnimations(); + </script> </svg>
diff --git a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-25-t.svg b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-25-t.svg index f515038f..1d400ad2 100644 --- a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-25-t.svg +++ b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-25-t.svg
@@ -56,4 +56,8 @@ </g> <text id="revision" x="10" y="340" font-size="40" stroke="none" fill="black">$Revision: 1.7 $</text> <rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000000"/> + <script> + // Pause the animation at t=0. + document.documentElement.pauseAnimations(); + </script> </svg>
diff --git a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-26-t.svg b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-26-t.svg index 02f0116..53a1d7a9 100644 --- a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-26-t.svg +++ b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-26-t.svg
@@ -56,4 +56,8 @@ </g> <text id="revision" x="10" y="340" font-size="40" stroke="none" fill="black">$Revision: 1.7 $</text> <rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000000"/> + <script> + // Pause the animation at t=0. + document.documentElement.pauseAnimations(); + </script> </svg>
diff --git a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-27-t.svg b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-27-t.svg index d6e36db5..3e0ef48 100644 --- a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-27-t.svg +++ b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-27-t.svg
@@ -73,5 +73,9 @@ </g> <text id="revision" x="10" y="340" font-size="40" stroke="none" fill="black">$Revision: 1.7 $</text> <rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000000"/> + <script> + // Pause the animation at t=0. + document.documentElement.pauseAnimations(); + </script> </svg>
diff --git a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-28-t.svg b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-28-t.svg index c99306e..16ad4b6 100644 --- a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-28-t.svg +++ b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-28-t.svg
@@ -50,4 +50,8 @@ <text id="revision" x="10" y="340" font-size="40" stroke="none" fill="black">$Revision: 1.6 $</text> <rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000000"/> </g> + <script> + // Pause the animation at t=0. + document.documentElement.pauseAnimations(); + </script> </svg>
diff --git a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-29-b.svg b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-29-b.svg index 10f46659..d171d1c 100644 --- a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-29-b.svg +++ b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-29-b.svg
@@ -95,4 +95,8 @@ </g> <text id="revision" x="10" y="340" font-size="40" stroke="none" fill="black">$Revision: 1.5 $</text> <rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000000"/> + <script> + // Pause the animation at t=0. + document.documentElement.pauseAnimations(); + </script> </svg>
diff --git a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-30-t.svg b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-30-t.svg index 191a42b..40e3942b 100644 --- a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-30-t.svg +++ b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-30-t.svg
@@ -131,4 +131,8 @@ <text id="revision" x="10" y="340" font-size="40" stroke="none" fill="black">$Revision: 1.6 $</text> <rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000000"/> + <script> + // Pause the animation at t=0. + document.documentElement.pauseAnimations(); + </script> </svg>
diff --git a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-31-t.svg b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-31-t.svg index 42306e3d..142fafc 100644 --- a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-31-t.svg +++ b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-31-t.svg
@@ -94,4 +94,8 @@ <text id="revision" x="10" y="340" font-size="40" stroke="none" fill="black">$Revision: 1.6 $</text> <rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000000"/> + <script> + // Pause the animation at t=0. + document.documentElement.pauseAnimations(); + </script> </svg>
diff --git a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-32-t.svg b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-32-t.svg index 3b6be56..ae199495 100644 --- a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-32-t.svg +++ b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-32-t.svg
@@ -134,4 +134,8 @@ </g> <text id="revision" x="10" y="340" font-size="40" stroke="none" fill="black">$Revision: 1.16 $</text> <rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000000"/> + <script> + // Pause the animation at t=0. + document.documentElement.pauseAnimations(); + </script> </svg>
diff --git a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-33-t.svg b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-33-t.svg index 491f623..6c8babb86 100644 --- a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-33-t.svg +++ b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-33-t.svg
@@ -110,4 +110,8 @@ <text x="5" y="265" font-size="18">Number indicates the circle's passing time in seconds.</text> <text id="revision" x="10" y="340" font-size="40" stroke="none" fill="black">$Revision: 1.8 $</text> <rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000000"/> + <script> + // Pause the animation at t=0. + document.documentElement.pauseAnimations(); + </script> </svg>
diff --git a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-34-t.svg b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-34-t.svg index 4aef8951..b0551ddf 100644 --- a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-34-t.svg +++ b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-34-t.svg
@@ -78,4 +78,8 @@ <text id="revision" x="10" y="340" font-size="40" stroke="none" fill="black">$Revision: 1.7 $</text> <rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000000"/> + <script> + // Pause the animation at t=0. + document.documentElement.pauseAnimations(); + </script> </svg>
diff --git a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-36-t.svg b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-36-t.svg index 9f06e85..2a88f14 100644 --- a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-36-t.svg +++ b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-36-t.svg
@@ -118,4 +118,8 @@ </g> </g> + <script> + // Pause the animation at t=0. + document.documentElement.pauseAnimations(); + </script> </svg>
diff --git a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-37-t.svg b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-37-t.svg index 2c774b47..d0a9775 100644 --- a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-37-t.svg +++ b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-37-t.svg
@@ -75,4 +75,8 @@ <text y="60" text-anchor="middle"><polygon></text> </g> </g> + <script> + // Pause the animation at t=0. + document.documentElement.pauseAnimations(); + </script> </svg>
diff --git a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-39-t.svg b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-39-t.svg index 48e7384..7825a5d 100644 --- a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-39-t.svg +++ b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-39-t.svg
@@ -120,4 +120,8 @@ </g> + <script> + // Pause the animation at t=0. + document.documentElement.pauseAnimations(); + </script> </svg>
diff --git a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-40-t.svg b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-40-t.svg index e9be779..ee39a99 100644 --- a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-40-t.svg +++ b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-40-t.svg
@@ -198,4 +198,8 @@ <text id="revision" x="10" y="340" font-size="40" stroke="none" fill="black">$Revision: 1.8 $</text> <rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000000"/> + <script> + // Pause the animation at t=0. + document.documentElement.pauseAnimations(); + </script> </svg>
diff --git a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-41-t.svg b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-41-t.svg index 50cc3bf..d02f14b8 100644 --- a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-41-t.svg +++ b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-41-t.svg
@@ -403,4 +403,8 @@ </g> <text id="revision" x="10" y="340" font-size="40" stroke="none" fill="black">$Revision: 1.9 $</text> <rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000000"/> + <script> + // Pause the animation at t=0. + document.documentElement.pauseAnimations(); + </script> </svg>
diff --git a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-44-t.svg b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-44-t.svg index 7090a96f..eaf740a 100644 --- a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-44-t.svg +++ b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-44-t.svg
@@ -52,4 +52,8 @@ <text x="5" y="275" font-size="18">Filled circle should follow morphing digit discretely.</text> <text id="revision" x="10" y="340" font-size="40" stroke="none" fill="black">$Revision: 1.7 $</text> <rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000000"/> + <script> + // Pause the animation at t=0. + document.documentElement.pauseAnimations(); + </script> </svg>
diff --git a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-46-t.svg b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-46-t.svg index 4f90f63..35246d1 100644 --- a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-46-t.svg +++ b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-46-t.svg
@@ -218,4 +218,8 @@ </g> <text id="revision" x="10" y="340" font-size="40" stroke="none" fill="black">$Revision: 1.8 $</text> <rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000000"/> + <script> + // Pause the animation at t=0. + document.documentElement.pauseAnimations(); + </script> </svg>
diff --git a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-52-t.svg b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-52-t.svg index 1a5e7ec..4153b98 100644 --- a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-52-t.svg +++ b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-52-t.svg
@@ -76,4 +76,8 @@ <text id="revision" x="10" y="340" font-size="40" stroke="none" fill="black">$Revision: 1.8 $</text> <rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000000"/> + <script> + // Pause the animation at t=0. + document.documentElement.pauseAnimations(); + </script> </svg>
diff --git a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-60-t.svg b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-60-t.svg index 3a0ad69..f3abd75 100644 --- a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-60-t.svg +++ b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-60-t.svg
@@ -432,4 +432,8 @@ </g> + <script> + // Pause the animation at t=0. + document.documentElement.pauseAnimations(); + </script> </svg>
diff --git a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-61-t.svg b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-61-t.svg index 3c203c5..3beb5a96 100644 --- a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-61-t.svg +++ b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-61-t.svg
@@ -312,4 +312,8 @@ </g> + <script> + // Pause the animation at t=0. + document.documentElement.pauseAnimations(); + </script> </svg>
diff --git a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-62-t.svg b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-62-t.svg index 3e33ed6..b41a998 100644 --- a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-62-t.svg +++ b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-62-t.svg
@@ -438,4 +438,8 @@ </g> + <script> + // Pause the animation at t=0. + document.documentElement.pauseAnimations(); + </script> </svg>
diff --git a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-63-t.svg b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-63-t.svg index 956d962..b5d6ec1 100644 --- a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-63-t.svg +++ b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-63-t.svg
@@ -320,4 +320,8 @@ </g> + <script> + // Pause the animation at t=0. + document.documentElement.pauseAnimations(); + </script> </svg>
diff --git a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-64-t.svg b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-64-t.svg index 1b16073..31271bf 100644 --- a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-64-t.svg +++ b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-64-t.svg
@@ -102,4 +102,8 @@ </g> </g> </g> + <script> + // Pause the animation at t=0. + document.documentElement.pauseAnimations(); + </script> </svg>
diff --git a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-65-t.svg b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-65-t.svg index b4579a1..2e6def4 100644 --- a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-65-t.svg +++ b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-65-t.svg
@@ -183,4 +183,8 @@ </g> </g> </g> + <script> + // Pause the animation at t=0. + document.documentElement.pauseAnimations(); + </script> </svg>
diff --git a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-66-t.svg b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-66-t.svg index 049781e..8270d882 100644 --- a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-66-t.svg +++ b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-66-t.svg
@@ -185,4 +185,8 @@ </g> </g> + <script> + // Pause the animation at t=0. + document.documentElement.pauseAnimations(); + </script> </svg>
diff --git a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-67-t.svg b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-67-t.svg index d834ee8..ea013a1 100644 --- a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-67-t.svg +++ b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-67-t.svg
@@ -147,4 +147,8 @@ </g> </g> </g> + <script> + // Pause the animation at t=0. + document.documentElement.pauseAnimations(); + </script> </svg>
diff --git a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-68-t.svg b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-68-t.svg index dd83fdc..5f1c312 100644 --- a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-68-t.svg +++ b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-68-t.svg
@@ -112,4 +112,8 @@ </g> </g> + <script> + // Pause the animation at t=0. + document.documentElement.pauseAnimations(); + </script> </svg>
diff --git a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-69-t.svg b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-69-t.svg index ab50778b3..55b87c99 100644 --- a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-69-t.svg +++ b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-69-t.svg
@@ -129,4 +129,8 @@ </g> </g> </g> + <script> + // Pause the animation at t=0. + document.documentElement.pauseAnimations(); + </script> </svg>
diff --git a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-70-t.svg b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-70-t.svg index b1c2204..10198df 100644 --- a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-70-t.svg +++ b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-70-t.svg
@@ -123,4 +123,8 @@ </g> </g> </g> + <script> + // Pause the animation at t=0. + document.documentElement.pauseAnimations(); + </script> </svg>
diff --git a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-77-t.svg b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-77-t.svg index 930e54e..b26417a 100644 --- a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-77-t.svg +++ b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-77-t.svg
@@ -292,4 +292,8 @@ </g> </g> </g> + <script> + // Pause the animation at t=0. + document.documentElement.pauseAnimations(); + </script> </svg>
diff --git a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-78-t.svg b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-78-t.svg index 96dc8b1f..c1b4ecca 100644 --- a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-78-t.svg +++ b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-78-t.svg
@@ -501,4 +501,8 @@ </g> </g> + <script> + // Pause the animation at t=0. + document.documentElement.pauseAnimations(); + </script> </svg>
diff --git a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-80-t.svg b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-80-t.svg index 4201236..cf6c974 100644 --- a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-80-t.svg +++ b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-80-t.svg
@@ -251,4 +251,8 @@ </g> </g> + <script> + // Pause the animation at t=0. + document.documentElement.pauseAnimations(); + </script> </svg>
diff --git a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-81-t.svg b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-81-t.svg index 4decb7b..7adda2b1 100644 --- a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-81-t.svg +++ b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-81-t.svg
@@ -135,4 +135,8 @@ </g> </g> + <script> + // Pause the animation at t=0. + document.documentElement.pauseAnimations(); + </script> </svg>
diff --git a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-82-t.svg b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-82-t.svg index a81ef55..fea4d78 100644 --- a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-82-t.svg +++ b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-82-t.svg
@@ -284,4 +284,8 @@ </g> + <script> + // Pause the animation at t=0. + document.documentElement.pauseAnimations(); + </script> </svg>
diff --git a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-83-t.svg b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-83-t.svg index 6503558..5cd3c193 100644 --- a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-83-t.svg +++ b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-83-t.svg
@@ -191,4 +191,8 @@ </g> </g> + <script> + // Pause the animation at t=0. + document.documentElement.pauseAnimations(); + </script> </svg>
diff --git a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-84-t.svg b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-84-t.svg index 1749453..ab740ac 100644 --- a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-84-t.svg +++ b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-84-t.svg
@@ -62,4 +62,8 @@ </g> <text id="revision" x="10" y="340" font-size="40" stroke="none" fill="black">$Revision: 1.4 $</text> <rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000"/> + <script> + // Pause the animation at t=0. + document.documentElement.pauseAnimations(); + </script> </svg>
diff --git a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-85-t.svg b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-85-t.svg index 122c9f3..3fa506d 100644 --- a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-85-t.svg +++ b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/animate-elem-85-t.svg
@@ -66,4 +66,8 @@ </g> <text id="revision" x="10" y="340" font-size="40" stroke="none" fill="black">$Revision: 1.2 $</text> <rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000"/> + <script> + // Pause the animation at t=0. + document.documentElement.pauseAnimations(); + </script> </svg>
diff --git a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/filters-light-04-f.svg b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/filters-light-04-f.svg index bd3ee58b..b1f176f 100644 --- a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/filters-light-04-f.svg +++ b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/filters-light-04-f.svg
@@ -133,4 +133,8 @@ <text font-family="SVGFreeSansASCII,sans-serif" font-weight="bold" font-size="20" x="240" text-anchor="middle" y="18" stroke-width="0.5" stroke="black" fill="white">DRAFT</text> </g>--> + <script> + // Pause the animation at t=0. + document.documentElement.pauseAnimations(); + </script> </svg>
diff --git a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/pservers-grad-19-b.svg b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/pservers-grad-19-b.svg index 12d62929..90110ece 100644 --- a/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/pservers-grad-19-b.svg +++ b/third_party/WebKit/LayoutTests/svg/W3C-SVG-1.1/pservers-grad-19-b.svg
@@ -78,4 +78,8 @@ </g> <text id="revision" x="10" y="340" font-size="40" stroke="none" fill="black">$Revision: 1.6 $</text> <rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000"/> + <script> + // Pause the animation at t=0. + document.documentElement.pauseAnimations(); + </script> </svg>
diff --git a/tools/perf/benchmark.csv b/tools/perf/benchmark.csv index 81b19a1..767f75a0 100644 --- a/tools/perf/benchmark.csv +++ b/tools/perf/benchmark.csv
@@ -127,8 +127,6 @@ v8.browsing_desktop,ulan@chromium.org, v8.browsing_mobile,ulan@chromium.org, v8.detached_context_age_in_gc,ulan@chromium.org, -v8.infinite_scroll_tbmv2,ulan@chromium.org, -v8.mobile_infinite_scroll_tbmv2,ulan@chromium.org, v8.runtime_stats.top_25,cbruni@chromium.org, v8.runtimestats.browsing_desktop,mythria@chromium.org, v8.runtimestats.browsing_mobile,mythria@chromium.org,
diff --git a/tools/perf/benchmarks/system_health_smoke_test.py b/tools/perf/benchmarks/system_health_smoke_test.py index fb8dead..4e80dd2 100644 --- a/tools/perf/benchmarks/system_health_smoke_test.py +++ b/tools/perf/benchmarks/system_health_smoke_test.py
@@ -65,14 +65,6 @@ # crbug.com/699966 'benchmarks.system_health_smoke_test.SystemHealthBenchmarkSmokeTest.system_health.memory_desktop.multitab:misc:typical24', # pylint: disable=line-too-long - # crbug.com/725923 - 'benchmarks.system_health_smoke_test.SystemHealthBenchmarkSmokeTest.system_health.memory_desktop.load:social:facebook', # pylint: disable=line-too-long - 'benchmarks.system_health_smoke_test.SystemHealthBenchmarkSmokeTest.system_health.memory_desktop.load:media:flickr', # pylint: disable=line-too-long - 'benchmarks.system_health_smoke_test.SystemHealthBenchmarkSmokeTest.system_health.memory_desktop.load:social:tumblr', # pylint: disable=line-too-long - 'benchmarks.system_health_smoke_test.SystemHealthBenchmarkSmokeTest.system_health.memory_desktop.load:social:twitter', # pylint: disable=line-too-long - 'benchmarks.system_health_smoke_test.SystemHealthBenchmarkSmokeTest.system_health.memory_mobile.load:social:facebook', # pylint: disable=line-too-long - 'benchmarks.system_health_smoke_test.SystemHealthBenchmarkSmokeTest.system_health.memory_mobile.load:social:tumblr', # pylint: disable=line-too-long - 'benchmarks.system_health_smoke_test.SystemHealthBenchmarkSmokeTest.system_health.memory_mobile.load:social:pinterest', # pylint: disable=line-too-long # crbug.com/725386 'benchmarks.system_health_smoke_test.SystemHealthBenchmarkSmokeTest.system_health.memory_desktop.browse:social:twitter', # pylint: disable=line-too-long })
diff --git a/tools/perf/benchmarks/v8.py b/tools/perf/benchmarks/v8.py index f285662..f5d8241 100644 --- a/tools/perf/benchmarks/v8.py +++ b/tools/perf/benchmarks/v8.py
@@ -3,7 +3,6 @@ # found in the LICENSE file. from core import perf_benchmark -from benchmarks import v8_helper from measurements import v8_detached_context_age_in_gc import page_sets @@ -11,7 +10,6 @@ from telemetry import benchmark from telemetry import story from telemetry.timeline import chrome_trace_category_filter -from telemetry.timeline import chrome_trace_config from telemetry.web_perf import timeline_based_measurement @@ -40,95 +38,6 @@ pass # Nothing not disabled. return StoryExpectations() -class _InfiniteScrollBenchmark(perf_benchmark.PerfBenchmark): - """ Base class for infinite scroll benchmarks. - """ - - def SetExtraBrowserOptions(self, options): - options.AppendExtraBrowserArgs([ - # Disable push notifications for Facebook. - '--disable-notifications', - ]) - v8_helper.AppendJSFlags(options, '--heap-growing-percent=10') - - def CreateTimelineBasedMeasurementOptions(self): - categories = [ - # Disable all categories by default. - '-*', - # Memory categories. - 'disabled-by-default-memory-infra', - # EQT categories. - 'blink.user_timing', - 'loading', - 'navigation', - 'toplevel', - # V8 categories. - 'blink.console', - 'disabled-by-default-v8.compile', - 'disabled-by-default-v8.gc', - 'renderer.scheduler', - 'v8', - 'webkit.console' - ] - category_filter = chrome_trace_category_filter.ChromeTraceCategoryFilter( - ','.join(categories)) - options = timeline_based_measurement.Options(category_filter) - # TODO(ulan): Add frame time discrepancy once it is ported to TBMv2, - # see crbug.com/606841. - options.SetTimelineBasedMetrics([ - 'expectedQueueingTimeMetric', 'v8AndMemoryMetrics']) - # Setting an empty memory dump config disables periodic dumps. - options.config.chrome_trace_config.SetMemoryDumpConfig( - chrome_trace_config.MemoryDumpConfig()) - return options - - @classmethod - def ValueCanBeAddedPredicate(cls, value, _): - return ('v8' in value.name) or ('eqt' in value.name) - - @classmethod - def ShouldTearDownStateAfterEachStoryRun(cls): - return True - - -@benchmark.Disabled('android') # Android runs V8MobileInfiniteScroll. -@benchmark.Owner(emails=['ulan@chromium.org']) -class V8InfiniteScroll(_InfiniteScrollBenchmark): - """Measures V8 GC metrics and memory usage while scrolling the top web pages. - http://www.chromium.org/developers/design-documents/rendering-benchmarks""" - - page_set = page_sets.InfiniteScrollStorySet - - @classmethod - def Name(cls): - return 'v8.infinite_scroll_tbmv2' - - def GetExpectations(self): - class StoryExpectations(story.expectations.StoryExpectations): - def SetExpectations(self): - pass # blank_page.html not disabled. - return StoryExpectations() - - -@benchmark.Enabled('android') -@benchmark.Owner(emails=['ulan@chromium.org']) -class V8MobileInfiniteScroll(_InfiniteScrollBenchmark): - """Measures V8 GC metrics and memory usage while scrolling the top mobile - web pages. - http://www.chromium.org/developers/design-documents/rendering-benchmarks""" - - page_set = page_sets.MobileInfiniteScrollStorySet - - @classmethod - def Name(cls): - return 'v8.mobile_infinite_scroll_tbmv2' - - def GetExpectations(self): - class StoryExpectations(story.expectations.StoryExpectations): - def SetExpectations(self): - pass # blank_page.html not disabled. - return StoryExpectations() - class _Top25RuntimeStats(perf_benchmark.PerfBenchmark): options = {'pageset_repeat': 3}
diff --git a/tools/perf/page_sets/data/infinite_scroll.json b/tools/perf/page_sets/data/infinite_scroll.json deleted file mode 100644 index 53f53c3..0000000 --- a/tools/perf/page_sets/data/infinite_scroll.json +++ /dev/null
@@ -1,27 +0,0 @@ -{ - "archives": { - "discourse": { - "DEFAULT": "infinite_scroll_004.wpr" - }, - "espn": { - "DEFAULT": "infinite_scroll_000.wpr" - }, - "facebook": { - "DEFAULT": "infinite_scroll_001.wpr" - }, - "flickr": { - "DEFAULT": "infinite_scroll_003.wpr" - }, - "tumblr": { - "DEFAULT": "infinite_scroll_002.wpr" - }, - "twitter": { - "DEFAULT": "infinite_scroll_000.wpr" - }, - "yahoo": { - "DEFAULT": "infinite_scroll_000.wpr" - } - }, - "description": "Describes the Web Page Replay archives for a story set. Don't edit by hand! Use record_wpr for updating.", - "platform_specific": true -} \ No newline at end of file
diff --git a/tools/perf/page_sets/data/infinite_scroll_000.wpr.sha1 b/tools/perf/page_sets/data/infinite_scroll_000.wpr.sha1 deleted file mode 100644 index 94829170..0000000 --- a/tools/perf/page_sets/data/infinite_scroll_000.wpr.sha1 +++ /dev/null
@@ -1 +0,0 @@ -1c02c0cf53e6e39316e75dbb26e78585f21695ea \ No newline at end of file
diff --git a/tools/perf/page_sets/data/infinite_scroll_001.wpr.sha1 b/tools/perf/page_sets/data/infinite_scroll_001.wpr.sha1 deleted file mode 100644 index 20348f8e..0000000 --- a/tools/perf/page_sets/data/infinite_scroll_001.wpr.sha1 +++ /dev/null
@@ -1 +0,0 @@ -8837d917d8d14b17442ec7bf1fe18cb7cbfaac0a \ No newline at end of file
diff --git a/tools/perf/page_sets/data/infinite_scroll_002.wpr.sha1 b/tools/perf/page_sets/data/infinite_scroll_002.wpr.sha1 deleted file mode 100644 index 10295d73..0000000 --- a/tools/perf/page_sets/data/infinite_scroll_002.wpr.sha1 +++ /dev/null
@@ -1 +0,0 @@ -16b472c2033ce5682584f7182f1962e49792a943 \ No newline at end of file
diff --git a/tools/perf/page_sets/data/infinite_scroll_003.wpr.sha1 b/tools/perf/page_sets/data/infinite_scroll_003.wpr.sha1 deleted file mode 100644 index ee6af776..0000000 --- a/tools/perf/page_sets/data/infinite_scroll_003.wpr.sha1 +++ /dev/null
@@ -1 +0,0 @@ -ddb456bd12709473e0aee8821d5d7af1b18e9b1a \ No newline at end of file
diff --git a/tools/perf/page_sets/data/infinite_scroll_004.wpr.sha1 b/tools/perf/page_sets/data/infinite_scroll_004.wpr.sha1 deleted file mode 100644 index 62b9e54..0000000 --- a/tools/perf/page_sets/data/infinite_scroll_004.wpr.sha1 +++ /dev/null
@@ -1 +0,0 @@ -404375ec3af6383b273e6745b0f885e99cbcf9bc \ No newline at end of file
diff --git a/tools/perf/page_sets/data/mobile_infinite_scroll.json b/tools/perf/page_sets/data/mobile_infinite_scroll.json deleted file mode 100644 index a8bd5f7..0000000 --- a/tools/perf/page_sets/data/mobile_infinite_scroll.json +++ /dev/null
@@ -1,24 +0,0 @@ -{ - "archives": { - "discourse": { - "DEFAULT": "mobile_infinite_scroll_000.wpr" - }, - "facebook": { - "DEFAULT": "mobile_infinite_scroll_000.wpr" - }, - "flickr": { - "DEFAULT": "mobile_infinite_scroll_000.wpr" - }, - "pinterest": { - "DEFAULT": "mobile_infinite_scroll_001.wpr" - }, - "tumblr": { - "DEFAULT": "mobile_infinite_scroll_000.wpr" - }, - "twitter": { - "DEFAULT": "mobile_infinite_scroll_000.wpr" - } - }, - "description": "Describes the Web Page Replay archives for a story set. Don't edit by hand! Use record_wpr for updating.", - "platform_specific": true -}
diff --git a/tools/perf/page_sets/data/mobile_infinite_scroll_000.wpr.sha1 b/tools/perf/page_sets/data/mobile_infinite_scroll_000.wpr.sha1 deleted file mode 100644 index 55d18b8b..0000000 --- a/tools/perf/page_sets/data/mobile_infinite_scroll_000.wpr.sha1 +++ /dev/null
@@ -1 +0,0 @@ -36df7ee7e6088363f3743ad28b467cba4c54b328 \ No newline at end of file
diff --git a/tools/perf/page_sets/data/mobile_infinite_scroll_001.wpr.sha1 b/tools/perf/page_sets/data/mobile_infinite_scroll_001.wpr.sha1 deleted file mode 100644 index 16f9bab..0000000 --- a/tools/perf/page_sets/data/mobile_infinite_scroll_001.wpr.sha1 +++ /dev/null
@@ -1 +0,0 @@ -29b293f9d8bbe10577858fd9104c0811028d66be \ No newline at end of file
diff --git a/tools/perf/page_sets/infinite_scroll_cases.py b/tools/perf/page_sets/infinite_scroll_cases.py deleted file mode 100644 index ebde46a..0000000 --- a/tools/perf/page_sets/infinite_scroll_cases.py +++ /dev/null
@@ -1,158 +0,0 @@ -# Copyright 2017 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 sys - -from page_sets.login_helpers import facebook_login -from page_sets.system_health import platforms -from telemetry.page import page -from telemetry.page import shared_page_state -from telemetry import story - -from py_utils import discover - -class _InfiniteScrollStory(page.Page): - """ Base class for infinite scroll stories.""" - - NAME = NotImplemented - URL = NotImplemented - SUPPORTED_PLATFORMS = platforms.ALL_PLATFORMS - - SCROLL_DISTANCE = 25000 - SCROLL_STEP = 1000 - MAX_SCROLL_RETRIES = 5 - TIME_BEFORE_SCROLL_RETRY_IN_SECONDS = 2 - TIME_TO_WAIT_BEFORE_STARTING_IN_SECONDS = 5 - - def __init__(self, story_set): - super(_InfiniteScrollStory, self).__init__( - page_set=story_set, url=self.URL, name=self.NAME, - shared_page_state_class=shared_page_state.SharedPageState, - credentials_path='data/credentials.json') - # TODO(ulan): Remove this once crbug.com/541508 is fixed. - self.script_to_evaluate_on_commit = ''' - window.WebSocket = undefined; - window.Worker = undefined; - window.performance = undefined;''' - - def RunPageInteractions(self, action_runner): - with action_runner.CreateInteraction('Load'): - action_runner.WaitForJavaScriptCondition( - 'document.body != null && ' - 'document.body.scrollHeight > window.innerHeight && ' - '!document.body.addEventListener("touchstart", function() {})') - with action_runner.CreateInteraction('Wait'): - action_runner.Wait(self.TIME_TO_WAIT_BEFORE_STARTING_IN_SECONDS) - with action_runner.CreateInteraction('GC'): - action_runner.ForceGarbageCollection() - with action_runner.CreateInteraction('Begin'): - action_runner.tab.browser.DumpMemory() - with action_runner.CreateInteraction('Scrolling'): - self._Scroll(action_runner, self.SCROLL_DISTANCE, self.SCROLL_STEP) - with action_runner.CreateInteraction('End'): - action_runner.tab.browser.DumpMemory() - - def _Scroll(self, action_runner, distance, step_size): - """ This function scrolls the webpage by the given scroll distance in - multiple steps, where each step (except the last one) has the given size. - - If scrolling gets stuck, the functions retries scrolling MAX_SCROLL_RETRIES - times waiting TIME_BEFORE_SCROLL_RETRY_IN_SECONDS seconds between retries. - """ - remaining = distance - action_runner.EvaluateJavaScript('window.scrollY') - retry_count = 0 - # Scroll until the window.scrollY is within 1 pixel of the target distance. - while remaining > 1: - action_runner.ScrollPage(distance=min(remaining, step_size) + 1) - new_remaining = (distance - - action_runner.EvaluateJavaScript('window.scrollY')) - if remaining == new_remaining: - # Scrolling is stuck. This can happen if the page is loading - # resources. Give the page some time and retry scrolling. - if retry_count == self.MAX_SCROLL_RETRIES: - raise Exception('Scrolling stuck at %d' % remaining) - retry_count += 1 - action_runner.Wait(self.TIME_BEFORE_SCROLL_RETRY_IN_SECONDS) - else: - retry_count = 0 - remaining = new_remaining - -class DiscourseDesktopStory(_InfiniteScrollStory): - NAME = 'discourse' - URL = ('https://meta.discourse.org/t/the-official-discourse-tags-plugin' + - '-discourse-tagging/26482') - SUPPORTED_PLATFORMS = platforms.DESKTOP_ONLY - -class DiscourseMobileStory(_InfiniteScrollStory): - NAME = 'discourse' - URL = ('https://meta.discourse.org/t/the-official-discourse-tags-plugin' + - '-discourse-tagging/26482') - SUPPORTED_PLATFORMS = platforms.MOBILE_ONLY - SCROLL_DISTANCE = 15000 - -class FacebookDesktopStory(_InfiniteScrollStory): - NAME = 'facebook' - URL = 'https://www.facebook.com/shakira' - SUPPORTED_PLATFORMS = platforms.DESKTOP_ONLY - -class FacebookMobileStory(_InfiniteScrollStory): - NAME = 'facebook' - URL = 'https://m.facebook.com/shakira' - SUPPORTED_PLATFORMS = platforms.MOBILE_ONLY - def RunNavigateSteps(self, action_runner): - facebook_login.LoginWithMobileSite( - action_runner, 'facebook3', self.credentials_path) - super(FacebookMobileStory, self).RunNavigateSteps(action_runner) - -class FlickrDesktopStory(_InfiniteScrollStory): - NAME = 'flickr' - URL = 'https://www.flickr.com/explore' - SUPPORTED_PLATFORMS = platforms.DESKTOP_ONLY - -class FlickrMobileStory(_InfiniteScrollStory): - NAME = 'flickr' - URL = 'https://www.flickr.com/explore' - SUPPORTED_PLATFORMS = platforms.MOBILE_ONLY - SCROLL_DISTANCE = 10000 - -class PinterestMobileStory(_InfiniteScrollStory): - NAME = 'pinterest' - URL = 'https://www.pinterest.com/all' - SUPPORTED_PLATFORMS = platforms.MOBILE_ONLY - -class TumblrStory(_InfiniteScrollStory): - NAME = 'tumblr' - URL = 'http://techcrunch.tumblr.com/' - -class TwitterDesktopStory(_InfiniteScrollStory): - NAME = 'twitter' - URL = 'https://twitter.com/taylorswift13' - SUPPORTED_PLATFORMS = platforms.DESKTOP_ONLY - -class InfiniteScrollStorySet(story.StorySet): - """ Desktop story set. """ - def __init__(self): - super(InfiniteScrollStorySet, self).__init__( - archive_data_file='data/infinite_scroll.json', - cloud_storage_bucket=story.PARTNER_BUCKET) - for story_class in _FindInfiniteScrollStoryClasses(platforms.DESKTOP): - self.AddStory(story_class(self)) - -class MobileInfiniteScrollStorySet(story.StorySet): - """ Mobile story set. """ - def __init__(self): - super(MobileInfiniteScrollStorySet, self).__init__( - archive_data_file='data/mobile_infinite_scroll.json', - cloud_storage_bucket=story.PARTNER_BUCKET) - for story_class in _FindInfiniteScrollStoryClasses(platforms.MOBILE): - self.AddStory(story_class(self)) - -def _FindInfiniteScrollStoryClasses(platform): - # Sort the classes by their names so that their order is stable and - # deterministic. - for unused_cls_name, cls in sorted(discover.DiscoverClassesInModule( - module=sys.modules[__name__], base_class=_InfiniteScrollStory, - index_by_class_name=True).iteritems()): - if platform in cls.SUPPORTED_PLATFORMS: - yield cls
diff --git a/tools/perf/page_sets/system_health/browsing_stories.py b/tools/perf/page_sets/system_health/browsing_stories.py index c9bd4c67..8667896 100644 --- a/tools/perf/page_sets/system_health/browsing_stories.py +++ b/tools/perf/page_sets/system_health/browsing_stories.py
@@ -893,7 +893,7 @@ class TumblrStory(_InfiniteScrollStory): NAME = 'browse:social:tumblr_infinite_scroll' URL = 'http://techcrunch.tumblr.com/' # This page doesn't support HTTPS. - TAGS = [story_tags.INFINITE_SCROLL] + TAGS = [story_tags.INFINITE_SCROLL, story_tags.JAVASCRIPT_HEAVY] class TwitterScrollDesktopStory(_InfiniteScrollStory):
diff --git a/tools/perf/page_sets/system_health/loading_stories.py b/tools/perf/page_sets/system_health/loading_stories.py index 828af12..1000951 100644 --- a/tools/perf/page_sets/system_health/loading_stories.py +++ b/tools/perf/page_sets/system_health/loading_stories.py
@@ -79,16 +79,14 @@ ################################################################################ -class LoadFacebookStory(_LoadingStory): - # Using Facebook login often causes "404 Not Found" with WPR. - NAME = 'load:social:facebook' - URL = 'https://www.facebook.com/rihanna' - - class LoadTwitterStory(_LoadingStory): NAME = 'load:social:twitter' URL = 'https://www.twitter.com/nasa' + # Desktop version is already covered by + # 'browse:social:twitter_infinite_scroll' + SUPPORTED_PLATFORMS = platforms.MOBILE_ONLY + class LoadVkStory(_LoadingStory): NAME = 'load:social:vk' @@ -111,13 +109,9 @@ NAME = 'load:social:pinterest' URL = 'https://uk.pinterest.com/categories/popular/' TAGS = [story_tags.JAVASCRIPT_HEAVY] - - -class LoadTumblrStory(_LoadingStory): - NAME = 'load:social:tumblr' - # Redirects to the "http://" version. - URL = 'https://50thousand.tumblr.com/' - TAGS = [story_tags.JAVASCRIPT_HEAVY] + # Mobile story is already covered by + # 'browse:social:pinterest_infinite_scroll'. + SUPPORTED_PLATFORMS = platforms.DESKTOP_ONLY ################################################################################ @@ -252,19 +246,6 @@ SUPPORTED_PLATFORMS = platforms.DESKTOP_ONLY -class LoadFlickrDesktopStory(_LoadingStory): - NAME = 'load:media:flickr' - URL = 'https://www.flickr.com/photos/tags/farm' - SUPPORTED_PLATFORMS = platforms.DESKTOP_ONLY - - def _DidLoadDocument(self, action_runner): - # Wait until the 'Recently tagged' view loads. - action_runner.WaitForJavaScriptCondition(''' - document.querySelector( - '.search-photos-everyone-trending-view .photo-list-view') - !== null''') - - class LoadImgurStory(_LoadingStory): NAME = 'load:media:imgur' URL = 'http://imgur.com/gallery/5UlBN'
diff --git a/tools/resources/OWNERS b/tools/resources/OWNERS index cf28eeea..fb33baa 100644 --- a/tools/resources/OWNERS +++ b/tools/resources/OWNERS
@@ -1,2 +1,4 @@ per-file generate_resource_whitelist.*=agrieve@chromium.org per-file generate_resource_whitelist.*=estevenson@chromium.org +per-file filter_resource_whitelist.*=agrieve@chromium.org +per-file filter_resource_whitelist.*=zpeng@chromium.org
diff --git a/tools/resources/filter_resource_whitelist.py b/tools/resources/filter_resource_whitelist.py new file mode 100755 index 0000000..415444e --- /dev/null +++ b/tools/resources/filter_resource_whitelist.py
@@ -0,0 +1,50 @@ +#!/usr/bin/env python +# Copyright 2017 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. + +__doc__ = """filter_resource_whitelist.py [-h] [--input INPUT] +[--filter FILTER] [--output OUTPUT] + +INPUT specifies a resource whitelist file containing resource IDs that should +be whitelisted, where each line of INPUT contains a single resource ID. + +FILTER specifies a resource whitelist file containing resource IDs that should +not be whitelisted, where each line of FILTER contains a single resource ID. + +Filters a resource whitelist by removing resource IDs that are contained in a +another resource whitelist. + +This script is used to generate Monochrome's locale paks. +""" + +import argparse +import sys + + +def main(): + parser = argparse.ArgumentParser(usage=__doc__) + parser.add_argument( + '--input', type=argparse.FileType('r'), required=True, + help='A resource whitelist where each line contains one resource ID. ' + 'These IDs, excluding the ones in FILTER, are to be included.') + parser.add_argument( + '--filter', type=argparse.FileType('r'), required=True, + help='A resource whitelist where each line contains one resource ID. ' + 'These IDs are to be excluded.') + parser.add_argument( + '--output', type=argparse.FileType('w'), default=sys.stdout, + help='The resource list path to write (default stdout)') + + args = parser.parse_args() + + input_resources = list(int(resource_id) for resource_id in args.input) + filter_resources = set(int(resource_id) for resource_id in args.filter) + output_resources = [resource_id for resource_id in input_resources + if resource_id not in filter_resources] + + for resource_id in sorted(output_resources): + args.output.write('%d\n' % resource_id) + +if __name__ == '__main__': + main()
diff --git a/ui/base/resource/resource_bundle.cc b/ui/base/resource/resource_bundle.cc index 7e66615..a3c31f07 100644 --- a/ui/base/resource/resource_bundle.cc +++ b/ui/base/resource/resource_bundle.cc
@@ -211,7 +211,7 @@ base::File pak_file, const base::MemoryMappedFile::Region& region) { InitSharedInstance(NULL); - std::unique_ptr<DataPack> data_pack(new DataPack(SCALE_FACTOR_100P)); + auto data_pack = base::MakeUnique<DataPack>(SCALE_FACTOR_100P); if (!data_pack->LoadFromFileRegion(std::move(pak_file), region)) { NOTREACHED() << "failed to load pak file"; return; @@ -248,6 +248,17 @@ return *g_shared_instance_; } +void ResourceBundle::LoadSecondaryLocaleDataWithPakFileRegion( + base::File pak_file, + const base::MemoryMappedFile::Region& region) { + auto data_pack = base::MakeUnique<DataPack>(SCALE_FACTOR_100P); + if (!data_pack->LoadFromFileRegion(std::move(pak_file), region)) { + NOTREACHED() << "failed to load secondary pak file"; + return; + } + secondary_locale_resources_data_ = std::move(data_pack); +} + #if !defined(OS_ANDROID) bool ResourceBundle::LocaleDataPakExists(const std::string& locale) { return !GetLocaleFilePath(locale, true).empty(); @@ -389,6 +400,7 @@ void ResourceBundle::UnloadLocaleResources() { locale_resources_data_.reset(); + secondary_locale_resources_data_.reset(); } void ResourceBundle::OverrideLocalePakForTest(const base::FilePath& pak_path) { @@ -551,20 +563,27 @@ } base::StringPiece data; + ResourceHandle::TextEncodingType encoding = + locale_resources_data_->GetTextEncodingType(); if (!locale_resources_data_->GetStringPiece(static_cast<uint16_t>(message_id), &data)) { - // Fall back on the main data pack (shouldn't be any strings here except in - // unittests). - data = GetRawDataResource(message_id); - if (data.empty()) { - NOTREACHED() << "unable to find resource: " << message_id; - return base::string16(); + if (secondary_locale_resources_data_.get() && + secondary_locale_resources_data_->GetStringPiece( + static_cast<uint16_t>(message_id), &data)) { + // Fall back on the secondary locale pak if it exists. + encoding = secondary_locale_resources_data_->GetTextEncodingType(); + } else { + // Fall back on the main data pack (shouldn't be any strings here except + // in unittests). + data = GetRawDataResource(message_id); + if (data.empty()) { + NOTREACHED() << "unable to find resource: " << message_id; + return base::string16(); + } } } // Strings should not be loaded from a data pack that contains binary data. - ResourceHandle::TextEncodingType encoding = - locale_resources_data_->GetTextEncodingType(); DCHECK(encoding == ResourceHandle::UTF16 || encoding == ResourceHandle::UTF8) << "requested localized string from binary pack file"; @@ -584,12 +603,20 @@ { base::AutoLock lock_scope(*locale_resources_data_lock_); base::StringPiece data; + if (locale_resources_data_.get() && locale_resources_data_->GetStringPiece( static_cast<uint16_t>(resource_id), &data) && !data.empty()) { return new base::RefCountedStaticMemory(data.data(), data.length()); } + + if (secondary_locale_resources_data_.get() && + secondary_locale_resources_data_->GetStringPiece( + static_cast<uint16_t>(resource_id), &data) && + !data.empty()) { + return new base::RefCountedStaticMemory(data.data(), data.length()); + } } // Release lock_scope and fall back to main data pack. return LoadDataResourceBytes(resource_id);
diff --git a/ui/base/resource/resource_bundle.h b/ui/base/resource/resource_bundle.h index d0401d9..47112f6 100644 --- a/ui/base/resource/resource_bundle.h +++ b/ui/base/resource/resource_bundle.h
@@ -151,6 +151,11 @@ // Return the global resource loader instance. static ResourceBundle& GetSharedInstance(); + // Loads a secondary locale data pack using the given file region. + void LoadSecondaryLocaleDataWithPakFileRegion( + base::File pak_file, + const base::MemoryMappedFile::Region& region); + // Check if the .pak for the given locale exists. bool LocaleDataPakExists(const std::string& locale); @@ -399,6 +404,7 @@ // Handles for data sources. std::unique_ptr<ResourceHandle> locale_resources_data_; + std::unique_ptr<ResourceHandle> secondary_locale_resources_data_; std::vector<std::unique_ptr<ResourceHandle>> data_packs_; // The maximum scale factor currently loaded.
diff --git a/ui/base/resource/resource_bundle_android.cc b/ui/base/resource/resource_bundle_android.cc index 9b0ae24..68c8c47 100644 --- a/ui/base/resource/resource_bundle_android.cc +++ b/ui/base/resource/resource_bundle_android.cc
@@ -8,6 +8,7 @@ #include "base/android/jni_android.h" #include "base/android/jni_string.h" #include "base/logging.h" +#include "base/memory/ptr_util.h" #include "base/path_service.h" #include "jni/ResourceBundle_jni.h" #include "ui/base/l10n/l10n_util.h" @@ -20,36 +21,63 @@ namespace { bool g_locale_paks_in_apk = false; +bool g_load_secondary_locale_paks = false; // It is okay to cache and share these file descriptors since the // ResourceBundle singleton never closes the handles. int g_chrome_100_percent_fd = -1; int g_resources_pack_fd = -1; int g_locale_pack_fd = -1; +int g_secondary_locale_pack_fd = -1; base::MemoryMappedFile::Region g_chrome_100_percent_region; base::MemoryMappedFile::Region g_resources_pack_region; base::MemoryMappedFile::Region g_locale_pack_region; +base::MemoryMappedFile::Region g_secondary_locale_pack_region; bool LoadFromApkOrFile(const char* apk_path, const base::FilePath* disk_path, - int* fd_out, - base::MemoryMappedFile::Region* region_out) { - DCHECK_EQ(*fd_out, -1) << "Attempt to load " << apk_path << " twice."; + int* out_fd, + base::MemoryMappedFile::Region* out_region) { + DCHECK_EQ(*out_fd, -1) << "Attempt to load " << apk_path << " twice."; if (apk_path != nullptr) { - *fd_out = base::android::OpenApkAsset(apk_path, region_out); + *out_fd = base::android::OpenApkAsset(apk_path, out_region); } // For unit tests, the file exists on disk. - if (*fd_out < 0 && disk_path != nullptr) { + if (*out_fd < 0 && disk_path != nullptr) { int flags = base::File::FLAG_OPEN | base::File::FLAG_READ; - *fd_out = base::File(*disk_path, flags).TakePlatformFile(); - *region_out = base::MemoryMappedFile::Region::kWholeFile; + *out_fd = base::File(*disk_path, flags).TakePlatformFile(); + *out_region = base::MemoryMappedFile::Region::kWholeFile; } - bool success = *fd_out >= 0; + bool success = *out_fd >= 0; if (!success) { LOG(ERROR) << "Failed to open pak file: " << apk_path; } return success; } +int LoadLocalePakFromApk(const std::string& app_locale, + base::MemoryMappedFile::Region* out_region) { + std::string locale_path_within_apk = + GetPathForAndroidLocalePakWithinApk(app_locale); + if (locale_path_within_apk.empty()) { + LOG(ERROR) << "locale_path_within_apk.empty() for locale " + << app_locale; + return -1; + } + return base::android::OpenApkAsset(locale_path_within_apk, out_region); +} + +std::unique_ptr<DataPack> LoadDataPackFromLocalePak( + int locale_pack_fd, + const base::MemoryMappedFile::Region& region) { + auto data_pack = base::MakeUnique<DataPack>(SCALE_FACTOR_100P); + if (!data_pack->LoadFromFileRegion(base::File(locale_pack_fd), region)) { + LOG(ERROR) << "failed to load locale.pak"; + NOTREACHED(); + return nullptr; + } + return data_pack; +} + } // namespace void ResourceBundle::LoadCommonResources() { @@ -74,22 +102,18 @@ std::string ResourceBundle::LoadLocaleResources( const std::string& pref_locale) { - DCHECK(!locale_resources_data_.get()) << "locale.pak already loaded"; + DCHECK(!locale_resources_data_.get() && + !secondary_locale_resources_data_.get()) + << "locale.pak already loaded"; if (g_locale_pack_fd != -1) { LOG(WARNING) << "Unexpected (outside of tests): Loading a second locale pak file."; } std::string app_locale = l10n_util::GetApplicationLocale(pref_locale); + + // Load primary locale .pak file. if (g_locale_paks_in_apk) { - std::string locale_path_within_apk = - GetPathForAndroidLocalePakWithinApk(app_locale); - if (locale_path_within_apk.empty()) { - LOG(WARNING) << "locale_path_within_apk.empty() for locale " - << app_locale; - return std::string(); - } - g_locale_pack_fd = base::android::OpenApkAsset(locale_path_within_apk, - &g_locale_pack_region); + g_locale_pack_fd = LoadLocalePakFromApk(app_locale, &g_locale_pack_region); } else { base::FilePath locale_file_path = GetOverriddenPakPath(); if (locale_file_path.empty()) @@ -105,15 +129,27 @@ g_locale_pack_region = base::MemoryMappedFile::Region::kWholeFile; } - std::unique_ptr<DataPack> data_pack(new DataPack(SCALE_FACTOR_100P)); - if (!data_pack->LoadFromFileRegion(base::File(g_locale_pack_fd), - g_locale_pack_region)) { - LOG(ERROR) << "failed to load locale.pak"; - NOTREACHED(); + locale_resources_data_ = LoadDataPackFromLocalePak( + g_locale_pack_fd, g_locale_pack_region); + + if (!locale_resources_data_.get()) return std::string(); + + // Load secondary locale .pak file if it exists. For debug build monochrome, + // a secondary locale pak will always be loaded; however, it should be + // unnecessary for loading locale resources because the primary locale pak + // would have a copy of all the resources in the secondary locale pak. + if (g_load_secondary_locale_paks) { + g_secondary_locale_pack_fd = LoadLocalePakFromApk( + app_locale, &g_secondary_locale_pack_region); + + secondary_locale_resources_data_ = LoadDataPackFromLocalePak( + g_secondary_locale_pack_fd, g_secondary_locale_pack_region); + + if (!secondary_locale_resources_data_.get()) + return std::string(); } - locale_resources_data_ = std::move(data_pack); return app_locale; } @@ -125,6 +161,10 @@ g_locale_paks_in_apk = value; } +void SetLoadSecondaryLocalePaks(bool value) { + g_load_secondary_locale_paks = value; +} + void LoadMainAndroidPackFile(const char* path_within_apk, const base::FilePath& disk_file_path) { if (LoadFromApkOrFile(path_within_apk, @@ -155,6 +195,11 @@ return g_locale_pack_fd; } +int GetSecondaryLocalePackFd(base::MemoryMappedFile::Region* out_region) { + *out_region = g_secondary_locale_pack_region; + return g_secondary_locale_pack_fd; +} + std::string GetPathForAndroidLocalePakWithinApk(const std::string& locale) { JNIEnv* env = base::android::AttachCurrentThread(); base::android::ScopedJavaLocalRef<jstring> ret =
diff --git a/ui/base/resource/resource_bundle_android.h b/ui/base/resource/resource_bundle_android.h index 2123eb0..57059b0 100644 --- a/ui/base/resource/resource_bundle_android.h +++ b/ui/base/resource/resource_bundle_android.h
@@ -31,10 +31,17 @@ UI_BASE_EXPORT int GetLocalePackFd( base::MemoryMappedFile::Region* out_region); +// Returns the file descriptor and region for the secondary locale .pak file. +UI_BASE_EXPORT int GetSecondaryLocalePackFd( + base::MemoryMappedFile::Region* out_region); + // Tell ResourceBundle to locate locale pak files via // GetPathForAndroidLocalePakWithinApk rather than looking for them on disk. UI_BASE_EXPORT void SetLocalePaksStoredInApk(bool value); +// Tell ResourceBundle to load secondary locale .pak files. +UI_BASE_EXPORT void SetLoadSecondaryLocalePaks(bool value); + // Returns the path within the apk for the given locale's .pak file, or an // empty string if it doesn't exist. // Only locale paks for the active Android language can be retrieved.