diff --git a/AUTHORS b/AUTHORS index bdeda8f..08f8c059 100644 --- a/AUTHORS +++ b/AUTHORS
@@ -753,6 +753,7 @@ Thomas Butter <tbutter@gmail.com> Thomas Conti <tomc@amazon.com> Tiago Vignatti <tiago.vignatti@intel.com> +Tibor Dusnoki <tibor.dusnoki.91@gmail.com> Tim Ansell <mithro@mithis.com> Tim Niederhausen <tim@rnc-ag.de> Timo Reimann <ttr314@googlemail.com>
diff --git a/DEPS b/DEPS index c39d9328a..78da55b4 100644 --- a/DEPS +++ b/DEPS
@@ -45,11 +45,11 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling Skia # and whatever else without interference from each other. - 'skia_revision': 'b437351d880fd17ea2bb8fd0997da7754a32903c', + 'skia_revision': 'dd7ffa5a557bcaa1daebd0f056a8f1bafb992d4d', # 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': 'c3f9870e4b04b40d5c70feb27fae31d537cd46ec', + 'v8_revision': '11f53821f3d1d81d4ea6e884bbe1eacf0e96e698', # 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. @@ -101,7 +101,7 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling catapult # and whatever else without interference from each other. - 'catapult_revision': '3f41f93f9154b9acb9e5ff9347827355a27341e9', + 'catapult_revision': '117560741b21ecaefedf407c216ea24e65e6bc83', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling libFuzzer # and whatever else without interference from each other. @@ -580,7 +580,7 @@ Var('chromium_git') + '/external/khronosgroup/webgl.git' + '@' + '34842fa3c36988840c89f5bc6a68503175acf7d9', 'src/third_party/webrtc': - Var('webrtc_git') + '/src.git' + '@' + 'bbceb76f540159e2dba0701ac03c514f01624130', # commit position 20032 + Var('webrtc_git') + '/src.git' + '@' + 'a9a277185ece36414a85881dfbfcacf01175993d', # commit position 20103 'src/third_party/xdg-utils': { 'url': Var('chromium_git') + '/chromium/deps/xdg-utils.git' + '@' + 'd80274d5869b17b8c9067a1022e4416ee7ed5e0d',
diff --git a/android_webview/glue/java/src/com/android/webview/chromium/WebViewChromiumFactoryProvider.java b/android_webview/glue/java/src/com/android/webview/chromium/WebViewChromiumFactoryProvider.java index cdcbe9a..3e6869ea0 100644 --- a/android_webview/glue/java/src/com/android/webview/chromium/WebViewChromiumFactoryProvider.java +++ b/android_webview/glue/java/src/com/android/webview/chromium/WebViewChromiumFactoryProvider.java
@@ -249,32 +249,32 @@ final PackageInfo packageInfo = WebViewFactory.getLoadedPackageInfo(); - // Load glue-layer support library. - System.loadLibrary("webviewchromium_plat_support"); - - // Use shared preference to check for package downgrade. - // Since N, getSharedPreferences creates the preference dir if it doesn't exist, - // causing a disk write. StrictMode.ThreadPolicy oldPolicy = StrictMode.allowThreadDiskWrites(); try { + // Load glue-layer support library. + System.loadLibrary("webviewchromium_plat_support"); + + // Use shared preference to check for package downgrade. + // Since N, getSharedPreferences creates the preference dir if it doesn't exist, + // causing a disk write. mWebViewPrefs = ContextUtils.getApplicationContext().getSharedPreferences( CHROMIUM_PREFS_NAME, Context.MODE_PRIVATE); + int lastVersion = mWebViewPrefs.getInt(VERSION_CODE_PREF, 0); + int currentVersion = packageInfo.versionCode; + if (!versionCodeGE(currentVersion, lastVersion)) { + // The WebView package has been downgraded since we last ran in this application. + // Delete the WebView data directory's contents. + String dataDir = PathUtils.getDataDirectory(); + Log.i(TAG, "WebView package downgraded from " + lastVersion + + " to " + currentVersion + "; deleting contents of " + dataDir); + deleteContents(new File(dataDir)); + } + if (lastVersion != currentVersion) { + mWebViewPrefs.edit().putInt(VERSION_CODE_PREF, currentVersion).apply(); + } } finally { StrictMode.setThreadPolicy(oldPolicy); } - int lastVersion = mWebViewPrefs.getInt(VERSION_CODE_PREF, 0); - int currentVersion = packageInfo.versionCode; - if (!versionCodeGE(currentVersion, lastVersion)) { - // The WebView package has been downgraded since we last ran in this application. - // Delete the WebView data directory's contents. - String dataDir = PathUtils.getDataDirectory(); - Log.i(TAG, "WebView package downgraded from " + lastVersion + " to " + currentVersion - + "; deleting contents of " + dataDir); - deleteContents(new File(dataDir)); - } - if (lastVersion != currentVersion) { - mWebViewPrefs.edit().putInt(VERSION_CODE_PREF, currentVersion).apply(); - } mShouldDisableThreadChecking = shouldDisableThreadChecking(ContextUtils.getApplicationContext());
diff --git a/android_webview/java/src/org/chromium/android_webview/AwBrowserProcess.java b/android_webview/java/src/org/chromium/android_webview/AwBrowserProcess.java index 25d6d16..98001a3 100644 --- a/android_webview/java/src/org/chromium/android_webview/AwBrowserProcess.java +++ b/android_webview/java/src/org/chromium/android_webview/AwBrowserProcess.java
@@ -61,6 +61,7 @@ */ public static void loadLibrary() { PathUtils.setPrivateDataDirectorySuffix(PRIVATE_DATA_DIRECTORY_SUFFIX); + StrictMode.ThreadPolicy oldPolicy = StrictMode.allowThreadDiskReads(); try { LibraryLoader libraryLoader = LibraryLoader.get(LibraryProcessType.PROCESS_WEBVIEW); libraryLoader.loadNow(); @@ -70,6 +71,8 @@ libraryLoader.switchCommandLineForWebView(); } catch (ProcessInitException e) { throw new RuntimeException("Cannot load WebView", e); + } finally { + StrictMode.setThreadPolicy(oldPolicy); } }
diff --git a/ash/resources/vector_icons/BUILD.gn b/ash/resources/vector_icons/BUILD.gn index b7dbd7c..95971f78 100644 --- a/ash/resources/vector_icons/BUILD.gn +++ b/ash/resources/vector_icons/BUILD.gn
@@ -64,19 +64,15 @@ "network_ethernet.icon", "network_vpn.1x.icon", "network_vpn.icon", - "notification_accessibility.1x.icon", "notification_accessibility.icon", "notification_accessibility_braille.icon", "notification_battery_critical.icon", "notification_battery_fluctuating.icon", "notification_battery_low.icon", - "notification_bluetooth_battery_warning.1x.icon", "notification_bluetooth_battery_warning.icon", "notification_bluetooth.icon", - "notification_capslock.1x.icon", "notification_capslock.icon", "notification_charging_usb_c.icon", - "notification_chromevox.1x.icon", "notification_chromevox.icon", "notification_display_error.icon", "notification_feedback_button.1x.icon", @@ -84,12 +80,9 @@ "notification_low_power_battery.icon", "notification_monitor_warning.icon", "notification_screen.icon", - "notification_screenshare.1x.icon", "notification_screenshare.icon", "notification_settings.icon", - "notification_sms_sync.1x.icon", "notification_sms_sync.icon", - "notification_stylus_battery_warning.1x.icon", "notification_stylus_battery_warning.icon", "notification_supervised.icon", "notification_timer.icon",
diff --git a/ash/resources/vector_icons/notification_accessibility.1x.icon b/ash/resources/vector_icons/notification_accessibility.1x.icon deleted file mode 100644 index 317ab60..0000000 --- a/ash/resources/vector_icons/notification_accessibility.1x.icon +++ /dev/null
@@ -1,26 +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. - -CANVAS_DIMENSIONS, 18, -MOVE_TO, 9, 2, -R_CUBIC_TO, 0.83f, 0, 1.5f, 0.68f, 1.5f, 1.5f, -CUBIC_TO_SHORTHAND, 9.82f, 5, 9, 5, -R_CUBIC_TO, -0.82f, 0, -1.5f, -0.67f, -1.5f, -1.5f, -CUBIC_TO_SHORTHAND, 8.18f, 2, 9, 2, -CLOSE, -R_MOVE_TO, 6, 5, -R_H_LINE_TO, -4, -R_V_LINE_TO, 9, -R_H_LINE_TO, -1, -R_V_LINE_TO, -4, -H_LINE_TO, 8, -R_V_LINE_TO, 4, -H_LINE_TO, 7, -V_LINE_TO, 7, -H_LINE_TO, 3, -V_LINE_TO, 6, -R_H_LINE_TO, 12, -R_V_LINE_TO, 1, -CLOSE, -END
diff --git a/ash/resources/vector_icons/notification_accessibility.icon b/ash/resources/vector_icons/notification_accessibility.icon index 40309fe3..f421616 100644 --- a/ash/resources/vector_icons/notification_accessibility.icon +++ b/ash/resources/vector_icons/notification_accessibility.icon
@@ -2,25 +2,25 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -CANVAS_DIMENSIONS, 36, -MOVE_TO, 18, 4, -R_CUBIC_TO, 1.65f, 0, 3, 1.35f, 3, 3, -R_CUBIC_TO, 0, 1.65f, -1.35f, 3, -3, 3, -R_CUBIC_TO, -1.65f, 0, -3, -1.35f, -3, -3, -R_CUBIC_TO, 0, -1.65f, 1.35f, -3, 3, -3, +CANVAS_DIMENSIONS, 96, +MOVE_TO, 48, 8, +R_CUBIC_TO, 4.4f, 0, 8, 3.6f, 8, 8, +R_CUBIC_TO, 0, 4.4f, -3.6f, 8, -8, 8, +R_CUBIC_TO, -4.4f, 0, -8, -3.6f, -8, -8, +R_CUBIC_TO, 0, -4.4f, 3.6f, -8, 8, -8, CLOSE, -R_MOVE_TO, 12, 10, +R_MOVE_TO, 36, 28, +H_LINE_TO, 60, +R_V_LINE_TO, 52, R_H_LINE_TO, -8, -R_V_LINE_TO, 18, -R_H_LINE_TO, -2, +V_LINE_TO, 64, +R_H_LINE_TO, -8, +R_V_LINE_TO, 24, +R_H_LINE_TO, -8, +V_LINE_TO, 36, +H_LINE_TO, 12, R_V_LINE_TO, -8, -R_H_LINE_TO, -4, +R_H_LINE_TO, 72, R_V_LINE_TO, 8, -R_H_LINE_TO, -2, -V_LINE_TO, 14, -H_LINE_TO, 6, -R_V_LINE_TO, -2, -R_H_LINE_TO, 24, -R_V_LINE_TO, 2, CLOSE, END
diff --git a/ash/resources/vector_icons/notification_battery_critical.icon b/ash/resources/vector_icons/notification_battery_critical.icon index b9acb16..9dd6787 100644 --- a/ash/resources/vector_icons/notification_battery_critical.icon +++ b/ash/resources/vector_icons/notification_battery_critical.icon
@@ -2,40 +2,44 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -CANVAS_DIMENSIONS, 36, +CANVAS_DIMENSIONS, 96, PATH_COLOR_ARGB, 0x4C, 0xC5, 0x39, 0x29, -MOVE_TO, 12, 4, -R_H_LINE_TO, 12, -R_CUBIC_TO, 1.11f, 0, 2, 0.9f, 2, 2, -R_V_LINE_TO, 26, -R_CUBIC_TO, 0, 1.11f, -0.89f, 2, -2, 2, -H_LINE_TO, 12, -R_CUBIC_TO, -1.1f, 0, -2, -0.89f, -2, -2, -V_LINE_TO, 6, -R_CUBIC_TO, 0, -1.1f, 0.9f, -2, 2, -2, +MOVE_TO, 32.33f, 13, +R_H_LINE_TO, 29.33f, +CUBIC_TO, 64.61f, 13, 67, 15.39f, 67, 18.33f, +R_V_LINE_TO, 64.33f, +CUBIC_TO, 67, 85.61f, 64.61f, 88, 61.67f, 88, +H_LINE_TO, 32.33f, +CUBIC_TO, 29.39f, 88, 27, 85.61f, 27, 82.67f, +V_LINE_TO, 18.33f, +CUBIC_TO, 27, 15.39f, 29.39f, 13, 32.33f, 13, CLOSE, -R_MOVE_TO, 2, -2, -R_H_LINE_TO, 8, -R_V_LINE_TO, 2, -R_H_LINE_TO, -8, -V_LINE_TO, 2, +MOVE_TO, 37, 8, +R_H_LINE_TO, 20, +R_V_LINE_TO, 5, +H_LINE_TO, 37, +V_LINE_TO, 8, CLOSE, NEW_PATH, PATH_COLOR_ARGB, 0xFF, 0xC5, 0x39, 0x29, -MOVE_TO, 26, 30, -R_CUBIC_TO, 0, 2.21f, -1.79f, 4, -4, 4, +MOVE_TO, 43, 28, +R_H_LINE_TO, 8, +R_V_LINE_TO, 20, R_H_LINE_TO, -8, -R_CUBIC_TO, -2.21f, 0, -4, -1.79f, -4, -4, -R_H_LINE_TO, 16, +V_LINE_TO, 28, CLOSE, -MOVE_TO, 16, 8, -R_H_LINE_TO, 4, +R_MOVE_TO, 0, 28, +R_H_LINE_TO, 8, +R_V_LINE_TO, 8, +R_H_LINE_TO, -8, +R_V_LINE_TO, -8, +CLOSE, +MOVE_TO, 27, 72, +R_H_LINE_TO, 40, R_V_LINE_TO, 10, -R_H_LINE_TO, -4, -CLOSE, -MOVE_TO, 16, 22, -R_H_LINE_TO, 4, -R_V_LINE_TO, 4, -R_H_LINE_TO, -4, +R_CUBIC_TO, 0, 3.31f, -2.69f, 6, -6, 6, +H_LINE_TO, 33, +R_CUBIC_TO, -3.31f, 0, -6, -2.69f, -6, -6, +V_LINE_TO, 72, CLOSE, END
diff --git a/ash/resources/vector_icons/notification_battery_fluctuating.icon b/ash/resources/vector_icons/notification_battery_fluctuating.icon index 5bb4c9e..5ec16fc8 100644 --- a/ash/resources/vector_icons/notification_battery_fluctuating.icon +++ b/ash/resources/vector_icons/notification_battery_fluctuating.icon
@@ -2,50 +2,50 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -CANVAS_DIMENSIONS, 36, +CANVAS_DIMENSIONS, 96, PATH_COLOR_ARGB, 0x4C, 0xEA, 0x61, 0x0, -MOVE_TO, 12, 4, -R_H_LINE_TO, 12, -R_CUBIC_TO, 1.11f, 0, 2, 0.9f, 2, 2, -R_V_LINE_TO, 26, -R_CUBIC_TO, 0, 1.11f, -0.89f, 2, -2, 2, -H_LINE_TO, 12, -R_CUBIC_TO, -1.1f, 0, -2, -0.89f, -2, -2, -V_LINE_TO, 6, -R_CUBIC_TO, 0, -1.1f, 0.9f, -2, 2, -2, +MOVE_TO, 32.33f, 13, +H_LINE_TO, 60.64f, +R_CUBIC_TO, 2.95f, 0, 5.33f, 2.39f, 5.33f, 5.33f, +R_V_LINE_TO, 64.33f, +R_CUBIC_TO, 0, 2.95f, -2.39f, 5.33f, -5.33f, 5.33f, +H_LINE_TO, 32.33f, +CUBIC_TO, 29.39f, 88, 27, 85.61f, 27, 82.67f, +V_LINE_TO, 18.33f, +CUBIC_TO, 27, 15.39f, 29.39f, 13, 32.33f, 13, CLOSE, -R_MOVE_TO, 2, -2, -R_H_LINE_TO, 8, -R_V_LINE_TO, 2, -R_H_LINE_TO, -8, -V_LINE_TO, 2, +R_MOVE_TO, 4.41f, -5, +R_H_LINE_TO, 19.49f, +R_V_LINE_TO, 5, +H_LINE_TO, 36.74f, +V_LINE_TO, 8, CLOSE, NEW_PATH, PATH_COLOR_ARGB, 0xFF, 0xEA, 0x61, 0x0, -MOVE_TO, 26, 24, -R_V_LINE_TO, 6, -R_CUBIC_TO, 0, 2.21f, -1.79f, 4, -4, 4, -R_H_LINE_TO, -8, -R_CUBIC_TO, -2.21f, 0, -4, -1.79f, -4, -4, -R_V_LINE_TO, -6, -R_H_LINE_TO, 16, +MOVE_TO, 27, 64, +R_H_LINE_TO, 39, +R_V_LINE_TO, 18, +R_CUBIC_TO, 0, 3.31f, -2.69f, 6, -6, 6, +H_LINE_TO, 33, +R_CUBIC_TO, -3.31f, 0, -6, -2.69f, -6, -6, +V_LINE_TO, 64, CLOSE, -R_MOVE_TO, 2.63f, -6, -R_CUBIC_TO, -0.8f, 0, -1.54f, -0.13f, -2.22f, -0.38f, -R_CUBIC_TO, -0.68f, -0.25f, -1.47f, -0.73f, -2.37f, -1.43f, -R_CUBIC_TO, -0.28f, -0.22f, -0.56f, -0.4f, -0.83f, -0.55f, -R_CUBIC_TO, -0.11f, -0.07f, -0.23f, -0.13f, -0.35f, -0.18f, -R_CUBIC_TO, -0.06f, -0.03f, -0.12f, -0.05f, -0.17f, -0.08f, -R_CUBIC_TO, -0.67f, -0.3f, -1.42f, -0.48f, -2.24f, -0.48f, -R_CUBIC_TO, -2.05f, 0, -3.78f, 1.08f, -4.44f, 2.58f, -R_CUBIC_TO, -0.01f, -1.65f, 0.48f, -2.97f, 1.45f, -3.97f, -R_CUBIC_TO, 0.98f, -1, 2.27f, -1.5f, 3.89f, -1.5f, -R_CUBIC_TO, 0.84f, 0, 1.61f, 0.13f, 2.3f, 0.4f, -R_CUBIC_TO, 0.69f, 0.27f, 1.48f, 0.74f, 2.35f, 1.43f, -R_CUBIC_TO, 0.02f, 0.02f, 0.04f, 0.02f, 0.06f, 0.03f, -R_CUBIC_TO, 0.87f, 0.77f, 2.1f, 1.26f, 3.48f, 1.26f, -R_CUBIC_TO, 2.1f, 0, 3.85f, -1.12f, 4.48f, -2.67f, -R_CUBIC_TO, 0.01f, 1.65f, -0.49f, 2.98f, -1.49f, 4.01f, -R_CUBIC_TO, -1, 1.03f, -2.3f, 1.54f, -3.88f, 1.54f, +R_MOVE_TO, 45.68f, -16, +R_CUBIC_TO, -2.12f, 0, -4.1f, -0.34f, -5.92f, -1.01f, +R_CUBIC_TO, -1.83f, -0.67f, -3.93f, -1.95f, -6.32f, -3.82f, +R_CUBIC_TO, -0.76f, -0.59f, -1.49f, -1.06f, -2.21f, -1.47f, +R_CUBIC_TO, -0.3f, -0.18f, -0.62f, -0.34f, -0.94f, -0.49f, +R_CUBIC_TO, -0.15f, -0.07f, -0.31f, -0.14f, -0.47f, -0.21f, +R_CUBIC_TO, -1.79f, -0.79f, -3.79f, -1.28f, -5.96f, -1.28f, +R_CUBIC_TO, -5.47f, 0, -10.09f, 2.87f, -11.85f, 6.87f, +R_CUBIC_TO, -0.03f, -4.39f, 1.26f, -7.92f, 3.87f, -10.58f, +R_CUBIC_TO, 2.6f, -2.67f, 6.05f, -4, 10.37f, -4, +R_CUBIC_TO, 2.24f, 0, 4.28f, 0.36f, 6.12f, 1.06f, +R_CUBIC_TO, 1.84f, 0.71f, 3.93f, 1.98f, 6.27f, 3.81f, +R_CUBIC_TO, 0.06f, 0.04f, 0.11f, 0.05f, 0.16f, 0.09f, +R_CUBIC_TO, 2.31f, 2.06f, 5.59f, 3.37f, 9.27f, 3.37f, +R_CUBIC_TO, 5.59f, 0, 10.28f, -2.99f, 11.94f, -7.13f, +R_CUBIC_TO, 0.03f, 4.39f, -1.3f, 7.95f, -3.97f, 10.69f, +CUBIC_TO, 80.35f, 46.63f, 76.91f, 48, 72.68f, 48, CLOSE, END
diff --git a/ash/resources/vector_icons/notification_battery_low.icon b/ash/resources/vector_icons/notification_battery_low.icon index 8fc94865..4396e48 100644 --- a/ash/resources/vector_icons/notification_battery_low.icon +++ b/ash/resources/vector_icons/notification_battery_low.icon
@@ -2,40 +2,44 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -CANVAS_DIMENSIONS, 36, +CANVAS_DIMENSIONS, 96, PATH_COLOR_ARGB, 0x4C, 0xEA, 0x61, 0x0, -MOVE_TO, 12, 4, -R_H_LINE_TO, 12, -R_CUBIC_TO, 1.11f, 0, 2, 0.9f, 2, 2, -R_V_LINE_TO, 26, -R_CUBIC_TO, 0, 1.11f, -0.89f, 2, -2, 2, -H_LINE_TO, 12, -R_CUBIC_TO, -1.1f, 0, -2, -0.89f, -2, -2, -V_LINE_TO, 6, -R_CUBIC_TO, 0, -1.1f, 0.9f, -2, 2, -2, +MOVE_TO, 32.33f, 13, +R_H_LINE_TO, 29.33f, +CUBIC_TO, 64.61f, 13, 67, 15.39f, 67, 18.33f, +R_V_LINE_TO, 64.33f, +CUBIC_TO, 67, 85.61f, 64.61f, 88, 61.67f, 88, +H_LINE_TO, 32.33f, +CUBIC_TO, 29.39f, 88, 27, 85.61f, 27, 82.67f, +V_LINE_TO, 18.33f, +CUBIC_TO, 27, 15.39f, 29.39f, 13, 32.33f, 13, CLOSE, -R_MOVE_TO, 2, -2, -R_H_LINE_TO, 8, -R_V_LINE_TO, 2, -R_H_LINE_TO, -8, -V_LINE_TO, 2, +MOVE_TO, 37, 8, +R_H_LINE_TO, 20, +R_V_LINE_TO, 5, +H_LINE_TO, 37, +V_LINE_TO, 8, CLOSE, NEW_PATH, PATH_COLOR_ARGB, 0xFF, 0xEA, 0x61, 0x0, -MOVE_TO, 26, 30, -R_CUBIC_TO, 0, 2.21f, -1.79f, 4, -4, 4, +MOVE_TO, 43, 28, +R_H_LINE_TO, 8, +R_V_LINE_TO, 20, R_H_LINE_TO, -8, -R_CUBIC_TO, -2.21f, 0, -4, -1.79f, -4, -4, -R_H_LINE_TO, 16, +V_LINE_TO, 28, CLOSE, -MOVE_TO, 16, 8, -R_H_LINE_TO, 4, +R_MOVE_TO, 0, 28, +R_H_LINE_TO, 8, +R_V_LINE_TO, 8, +R_H_LINE_TO, -8, +R_V_LINE_TO, -8, +CLOSE, +MOVE_TO, 27, 72, +R_H_LINE_TO, 40, R_V_LINE_TO, 10, -R_H_LINE_TO, -4, -CLOSE, -MOVE_TO, 16, 22, -R_H_LINE_TO, 4, -R_V_LINE_TO, 4, -R_H_LINE_TO, -4, +R_CUBIC_TO, 0, 3.31f, -2.69f, 6, -6, 6, +H_LINE_TO, 33, +R_CUBIC_TO, -3.31f, 0, -6, -2.69f, -6, -6, +V_LINE_TO, 72, CLOSE, END
diff --git a/ash/resources/vector_icons/notification_bluetooth.icon b/ash/resources/vector_icons/notification_bluetooth.icon index f42ca9e0..e60c6c32e 100644 --- a/ash/resources/vector_icons/notification_bluetooth.icon +++ b/ash/resources/vector_icons/notification_bluetooth.icon
@@ -2,37 +2,37 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -CANVAS_DIMENSIONS, 36, -MOVE_TO, 18, 34, -R_CUBIC_TO, -7.1f, 0, -12, -3.32f, -12, -16, -CUBIC_TO_SHORTHAND, 10.9f, 2, 18, 2, -R_CUBIC_TO, 7.1f, 0, 12, 3.32f, 12, 16, -R_CUBIC_TO, 0, 12.68f, -4.9f, 16, -12, 16, +CANVAS_DIMENSIONS, 96, +MOVE_TO, 48, 88, +CUBIC_TO, 30.24f, 88, 18, 79.7f, 18, 48, +CUBIC_TO, 18, 16.3f, 30.24f, 8, 48, 8, +CUBIC_TO, 65.76f, 8, 78, 16.3f, 78, 48, +CUBIC_TO, 78, 79.7f, 65.76f, 88, 48, 88, CLOSE, -MOVE_TO, 11.96f, 12.64f, -R_LINE_TO, 5.59f, 5.71f, -R_LINE_TO, -5.59f, 5.71f, -R_LINE_TO, 1.41f, 1.44f, -R_LINE_TO, 4.59f, -4.69f, -R_V_LINE_TO, 7.76f, -R_H_LINE_TO, 1, -R_LINE_TO, 5.71f, -5.83f, -R_LINE_TO, -4.3f, -4.38f, -R_LINE_TO, 4.3f, -4.38f, -R_LINE_TO, -5.7f, -5.83f, -R_H_LINE_TO, -1, -R_V_LINE_TO, 7.75f, -R_LINE_TO, -4.59f, -4.69f, -R_LINE_TO, -1.41f, 1.44f, +MOVE_TO, 32.9f, 34.59f, +R_LINE_TO, 13.97f, 14.28f, +R_LINE_TO, -13.97f, 14.28f, +R_LINE_TO, 3.52f, 3.6f, +R_LINE_TO, 11.47f, -11.72f, +R_V_LINE_TO, 19.39f, +R_H_LINE_TO, 2.5f, +R_LINE_TO, 14.27f, -14.58f, +R_LINE_TO, -10.74f, -10.96f, +LINE_TO, 64.65f, 37.91f, +LINE_TO, 50.39f, 23.32f, +R_H_LINE_TO, -2.5f, +V_LINE_TO, 42.71f, +R_LINE_TO, -11.47f, -11.72f, +R_LINE_TO, -3.52f, 3.6f, CLOSE, -R_MOVE_TO, 7.75f, -0.53f, -R_LINE_TO, 1.88f, 1.92f, -R_LINE_TO, -1.88f, 1.92f, -R_V_LINE_TO, -3.84f, +R_MOVE_TO, 19.36f, -1.33f, +R_LINE_TO, 4.7f, 4.8f, +R_LINE_TO, -4.7f, 4.8f, +R_V_LINE_TO, -9.6f, CLOSE, -R_MOVE_TO, 0, 8.42f, -R_LINE_TO, 1.88f, 1.92f, -R_LINE_TO, -1.88f, 1.92f, -R_V_LINE_TO, -3.84f, +R_MOVE_TO, 0, 21.05f, +R_LINE_TO, 4.7f, 4.8f, +R_LINE_TO, -4.7f, 4.8f, +R_V_LINE_TO, -9.6f, CLOSE, END
diff --git a/ash/resources/vector_icons/notification_bluetooth_battery_warning.1x.icon b/ash/resources/vector_icons/notification_bluetooth_battery_warning.1x.icon deleted file mode 100644 index ec23efb..0000000 --- a/ash/resources/vector_icons/notification_bluetooth_battery_warning.1x.icon +++ /dev/null
@@ -1,67 +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. - -CANVAS_DIMENSIONS, 18, -PATH_COLOR_ARGB, 0x4C, 0xC5, 0x39, 0x29, -MOVE_TO, 6, 2, -R_H_LINE_TO, 6, -R_CUBIC_TO, 0.55f, 0, 1, 0.45f, 1, 1, -R_V_LINE_TO, 13, -R_CUBIC_TO, 0, 0.55f, -0.45f, 1, -1, 1, -H_LINE_TO, 6, -R_CUBIC_TO, -0.55f, 0, -1, -0.45f, -1, -1, -V_LINE_TO, 3, -R_CUBIC_TO, 0, -0.55f, 0.45f, -1, 1, -1, -CLOSE, -R_MOVE_TO, 1, -1, -R_H_LINE_TO, 4, -R_V_LINE_TO, 1, -H_LINE_TO, 7, -V_LINE_TO, 1, -CLOSE, -NEW_PATH, -PATH_COLOR_ARGB, 0xFF, 0xC5, 0x39, 0x29, -MOVE_TO, 13, 15, -R_CUBIC_TO, 0, 1.11f, -0.89f, 2, -2, 2, -H_LINE_TO, 7, -CUBIC_TO, 5.9f, 17, 5, 16.1f, 5, 15, -R_H_LINE_TO, 8, -CLOSE, -MOVE_TO, 8, 4, -R_H_LINE_TO, 2, -R_V_LINE_TO, 5, -H_LINE_TO, 8, -CLOSE, -MOVE_TO, 8, 11, -R_H_LINE_TO, 2, -R_V_LINE_TO, 2, -H_LINE_TO, 8, -CLOSE, -MOVE_TO, 0, 5.65f, -LINE_TO, 0.78f, 4.8f, -R_LINE_TO, 2.53f, 2.75f, -V_LINE_TO, 3, -R_H_LINE_TO, 0.55f, -LINE_TO, 7, 6.43f, -LINE_TO, 4.63f, 9, -LINE_TO, 7, 11.57f, -LINE_TO, 3.86f, 15, -R_H_LINE_TO, -0.55f, -R_V_LINE_TO, -4.55f, -LINE_TO, 0.77f, 13.2f, -LINE_TO, 0, 12.35f, -LINE_TO, 3.08f, 9, -LINE_TO, 0, 5.65f, -CLOSE, -R_MOVE_TO, 4.2f, -0.4f, -R_V_LINE_TO, 2.63f, -R_LINE_TO, 1.4f, -1.5f, -LINE_TO, 4.2f, 5.25f, -CLOSE, -R_MOVE_TO, 0, 4.5f, -R_V_LINE_TO, 2.63f, -R_LINE_TO, 1.4f, -1.12f, -R_LINE_TO, -1.4f, -1.5f, -CLOSE, -END
diff --git a/ash/resources/vector_icons/notification_bluetooth_battery_warning.icon b/ash/resources/vector_icons/notification_bluetooth_battery_warning.icon index a4f9a74..4fe7b39 100644 --- a/ash/resources/vector_icons/notification_bluetooth_battery_warning.icon +++ b/ash/resources/vector_icons/notification_bluetooth_battery_warning.icon
@@ -2,66 +2,70 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -CANVAS_DIMENSIONS, 36, +CANVAS_DIMENSIONS, 96, PATH_COLOR_ARGB, 0x4C, 0xC5, 0x39, 0x29, -MOVE_TO, 12, 4, -R_H_LINE_TO, 12, -R_CUBIC_TO, 1.11f, 0, 2, 0.9f, 2, 2, -R_V_LINE_TO, 26, -R_CUBIC_TO, 0, 1.11f, -0.89f, 2, -2, 2, -H_LINE_TO, 12, -R_CUBIC_TO, -1.1f, 0, -2, -0.89f, -2, -2, -V_LINE_TO, 6, -R_CUBIC_TO, 0, -1.1f, 0.9f, -2, 2, -2, +MOVE_TO, 32.33f, 13, +R_H_LINE_TO, 29.33f, +CUBIC_TO, 64.61f, 13, 67, 15.39f, 67, 18.33f, +R_V_LINE_TO, 64.33f, +CUBIC_TO, 67, 85.61f, 64.61f, 88, 61.67f, 88, +H_LINE_TO, 32.33f, +CUBIC_TO, 29.39f, 88, 27, 85.61f, 27, 82.67f, +V_LINE_TO, 18.33f, +CUBIC_TO, 27, 15.39f, 29.39f, 13, 32.33f, 13, CLOSE, -R_MOVE_TO, 2, -2, -R_H_LINE_TO, 8, -R_V_LINE_TO, 2, -R_H_LINE_TO, -8, -V_LINE_TO, 2, +MOVE_TO, 37, 8, +R_H_LINE_TO, 20, +R_V_LINE_TO, 5, +H_LINE_TO, 37, +V_LINE_TO, 8, CLOSE, NEW_PATH, PATH_COLOR_ARGB, 0xFF, 0xC5, 0x39, 0x29, -MOVE_TO, 26, 30, -R_CUBIC_TO, 0, 2.21f, -1.79f, 4, -4, 4, +MOVE_TO, 43, 28, +R_H_LINE_TO, 8, +R_V_LINE_TO, 20, R_H_LINE_TO, -8, -R_CUBIC_TO, -2.21f, 0, -4, -1.79f, -4, -4, -R_H_LINE_TO, 16, +V_LINE_TO, 28, CLOSE, -MOVE_TO, 16, 8, -R_H_LINE_TO, 4, +R_MOVE_TO, 0, 28, +R_H_LINE_TO, 8, +R_V_LINE_TO, 8, +R_H_LINE_TO, -8, +R_V_LINE_TO, -8, +CLOSE, +MOVE_TO, 27, 72, +R_H_LINE_TO, 40, R_V_LINE_TO, 10, -R_H_LINE_TO, -4, +R_CUBIC_TO, 0, 3.31f, -2.69f, 6, -6, 6, +H_LINE_TO, 33, +R_CUBIC_TO, -3.31f, 0, -6, -2.69f, -6, -6, +V_LINE_TO, 72, CLOSE, -MOVE_TO, 16, 22, -R_H_LINE_TO, 4, -R_V_LINE_TO, 4, -R_H_LINE_TO, -4, +MOVE_TO, 38, 35.13f, +LINE_TO, 24.52f, 22, +R_H_LINE_TO, -2.36f, +R_V_LINE_TO, 17.46f, +LINE_TO, 11.33f, 28.9f, +LINE_TO, 8, 32.14f, +LINE_TO, 21.19f, 45, +LINE_TO, 8, 57.86f, +R_LINE_TO, 3.33f, 3.24f, +R_LINE_TO, 10.83f, -10.56f, +V_LINE_TO, 68, +R_H_LINE_TO, 2.36f, +LINE_TO, 38, 54.87f, +LINE_TO, 27.85f, 45, +LINE_TO, 38, 35.13f, CLOSE, -MOVE_TO, 0, 11.29f, -R_LINE_TO, 1.55f, -1.69f, -R_LINE_TO, 5.06f, 5.51f, -V_LINE_TO, 6, -R_H_LINE_TO, 1.1f, -LINE_TO, 14, 12.85f, -LINE_TO, 9.26f, 18, -LINE_TO, 14, 23.15f, -LINE_TO, 7.71f, 30, -R_H_LINE_TO, -1.1f, -R_V_LINE_TO, -9.11f, -LINE_TO, 1.55f, 26.4f, -LINE_TO, 0, 24.71f, -LINE_TO, 6.16f, 18, -LINE_TO, 0, 11.29f, +MOVE_TO, 26.88f, 30.81f, +R_LINE_TO, 4.44f, 4.32f, +R_LINE_TO, -4.44f, 4.32f, +V_LINE_TO, 30.81f, CLOSE, -R_MOVE_TO, 8.4f, -0.79f, -R_V_LINE_TO, 5.25f, -R_LINE_TO, 2.8f, -3, -R_LINE_TO, -2.8f, -2.25f, -CLOSE, -R_MOVE_TO, 0, 9, -R_V_LINE_TO, 5.25f, -R_LINE_TO, 2.8f, -2.25f, -R_LINE_TO, -2.8f, -3, +R_MOVE_TO, 4.44f, 24.06f, +R_LINE_TO, -4.44f, 4.32f, +R_V_LINE_TO, -8.65f, +R_LINE_TO, 4.44f, 4.32f, CLOSE, END
diff --git a/ash/resources/vector_icons/notification_capslock.1x.icon b/ash/resources/vector_icons/notification_capslock.1x.icon deleted file mode 100644 index 46a3de9..0000000 --- a/ash/resources/vector_icons/notification_capslock.1x.icon +++ /dev/null
@@ -1,30 +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. - -CANVAS_DIMENSIONS, 18, -MOVE_TO, 3.8f, 2, -R_H_LINE_TO, 10.4f, -R_CUBIC_TO, 0.99f, 0, 1.8f, 0.81f, 1.8f, 1.8f, -R_V_LINE_TO, 10.4f, -R_CUBIC_TO, 0, 0.99f, -0.81f, 1.8f, -1.8f, 1.8f, -H_LINE_TO, 3.8f, -R_CUBIC_TO, -0.99f, 0, -1.8f, -0.81f, -1.8f, -1.8f, -V_LINE_TO, 3.8f, -CUBIC_TO, 2, 2.81f, 2.81f, 2, 3.8f, 2, -CLOSE, -MOVE_TO, 9, 6.9f, -LINE_TO, 12.06f, 10, -R_LINE_TO, 0.94f, -0.95f, -LINE_TO, 9, 5, -LINE_TO, 5, 9.05f, -R_LINE_TO, 0.94f, 0.95f, -LINE_TO, 9, 6.9f, -CLOSE, -MOVE_TO, 13, 13, -R_V_LINE_TO, -1, -H_LINE_TO, 5, -R_V_LINE_TO, 1, -R_H_LINE_TO, 8, -CLOSE, -END
diff --git a/ash/resources/vector_icons/notification_capslock.icon b/ash/resources/vector_icons/notification_capslock.icon index 28927ef..adc9730 100644 --- a/ash/resources/vector_icons/notification_capslock.icon +++ b/ash/resources/vector_icons/notification_capslock.icon
@@ -2,29 +2,29 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -CANVAS_DIMENSIONS, 36, -MOVE_TO, 8, 4, -R_H_LINE_TO, 20, -R_CUBIC_TO, 2.21f, 0, 4, 1.79f, 4, 4, -R_V_LINE_TO, 20, -R_CUBIC_TO, 0, 2.21f, -1.79f, 4, -4, 4, -H_LINE_TO, 8, -R_CUBIC_TO, -2.21f, 0, -4, -1.79f, -4, -4, -V_LINE_TO, 8, -R_CUBIC_TO, 0, -2.21f, 1.79f, -4, 4, -4, +CANVAS_DIMENSIONS, 96, +MOVE_TO, 24, 12, +R_H_LINE_TO, 48, +R_CUBIC_TO, 6.63f, 0, 12, 5.37f, 12, 12, +R_V_LINE_TO, 48, +R_CUBIC_TO, 0, 6.63f, -5.37f, 12, -12, 12, +H_LINE_TO, 24, +R_CUBIC_TO, -6.63f, 0, -12, -5.37f, -12, -12, +V_LINE_TO, 24, +R_CUBIC_TO, 0, -6.63f, 5.37f, -12, 12, -12, CLOSE, -R_MOVE_TO, 10, 9.81f, -LINE_TO, 24.12f, 20, -LINE_TO, 26, 18.1f, -LINE_TO, 18, 10, -R_LINE_TO, -8, 8.1f, -LINE_TO, 11.88f, 20, -LINE_TO, 18, 13.81f, +R_MOVE_TO, 24, 25.9f, +LINE_TO, 63.3f, 54, +R_LINE_TO, 4.7f, -4.95f, +LINE_TO, 48, 28, +LINE_TO, 28, 49.05f, +LINE_TO, 32.7f, 54, +LINE_TO, 48, 37.9f, CLOSE, -MOVE_TO, 26, 26, -R_V_LINE_TO, -2, -H_LINE_TO, 10, -R_V_LINE_TO, 2, -R_H_LINE_TO, 16, +MOVE_TO, 68, 68, +R_V_LINE_TO, -6, +H_LINE_TO, 28, +R_V_LINE_TO, 6, +R_H_LINE_TO, 40, CLOSE, END
diff --git a/ash/resources/vector_icons/notification_charging_usb_c.icon b/ash/resources/vector_icons/notification_charging_usb_c.icon index 81cd8562..00901903 100644 --- a/ash/resources/vector_icons/notification_charging_usb_c.icon +++ b/ash/resources/vector_icons/notification_charging_usb_c.icon
@@ -2,37 +2,37 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -CANVAS_DIMENSIONS, 18, -MOVE_TO, 6, 2, -R_H_LINE_TO, 6, -R_CUBIC_TO, 0.55f, 0, 1, 0.45f, 1, 1, -R_V_LINE_TO, 13, -R_CUBIC_TO, 0, 0.55f, -0.45f, 1, -1, 1, -H_LINE_TO, 6, -R_CUBIC_TO, -0.55f, 0, -1, -0.45f, -1, -1, -V_LINE_TO, 3, -R_CUBIC_TO, 0, -0.55f, 0.45f, -1, 1, -1, +CANVAS_DIMENSIONS, 96, +MOVE_TO, 33.33f, 13, +R_H_LINE_TO, 29.33f, +R_CUBIC_TO, 2.95f, 0, 5.33f, 2.39f, 5.33f, 5.33f, +R_V_LINE_TO, 64.33f, +R_CUBIC_TO, 0, 2.95f, -2.39f, 5.33f, -5.33f, 5.33f, +R_H_LINE_TO, -29.33f, +CUBIC_TO, 30.39f, 88, 28, 85.61f, 28, 82.67f, +V_LINE_TO, 18.33f, +CUBIC_TO, 28, 15.39f, 30.39f, 13, 33.33f, 13, CLOSE, -R_MOVE_TO, 1, -1, -R_H_LINE_TO, 4, -R_V_LINE_TO, 1, -H_LINE_TO, 7, -V_LINE_TO, 1, -CLOSE, -R_MOVE_TO, 2, 4, -R_CUBIC_TO, -1.1f, 0, -2, 0.9f, -2, 2, +MOVE_TO, 38, 8, +R_H_LINE_TO, 20, R_V_LINE_TO, 5, -R_CUBIC_TO, 0, 1.11f, 0.9f, 2, 2, 2, -R_CUBIC_TO, 1.1f, 0, 2, -0.89f, 2, -2, -V_LINE_TO, 7, -R_CUBIC_TO, 0, -1.1f, -0.89f, -2, -2, -2, +H_LINE_TO, 38, +V_LINE_TO, 8, CLOSE, -R_MOVE_TO, 0, 1, -R_CUBIC_TO, 0.55f, 0, 1, 0.45f, 1, 1, -R_V_LINE_TO, 5, -R_CUBIC_TO, 0, 0.55f, -0.45f, 1, -1, 1, -R_CUBIC_TO, -0.55f, 0, -1, -0.45f, -1, -1, -V_LINE_TO, 7, -R_CUBIC_TO, 0, -0.55f, 0.45f, -1, 1, -1, +R_MOVE_TO, 10, 17, +R_CUBIC_TO, -6.07f, 0, -11, 4.93f, -11, 11, +R_V_LINE_TO, 29, +R_CUBIC_TO, 0, 6.08f, 4.93f, 11, 11, 11, +R_CUBIC_TO, 6.07f, 0, 11, -4.92f, 11, -11, +V_LINE_TO, 36, +R_CUBIC_TO, 0, -6.07f, -4.92f, -11, -11, -11, +CLOSE, +R_MOVE_TO, 0, 4, +R_CUBIC_TO, 3.87f, 0, 7, 3.13f, 7, 7, +R_V_LINE_TO, 29, +R_CUBIC_TO, 0, 3.87f, -3.13f, 7, -7, 7, +R_CUBIC_TO, -3.87f, 0, -7, -3.13f, -7, -7, +V_LINE_TO, 36, +R_CUBIC_TO, 0, -3.87f, 3.13f, -7, 7, -7, CLOSE, END
diff --git a/ash/resources/vector_icons/notification_chromevox.1x.icon b/ash/resources/vector_icons/notification_chromevox.1x.icon deleted file mode 100644 index c61d402..0000000 --- a/ash/resources/vector_icons/notification_chromevox.1x.icon +++ /dev/null
@@ -1,42 +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. - -CANVAS_DIMENSIONS, 18, -MOVE_TO, 9, 17, -R_CUBIC_TO, -4.42f, 0, -8, -3.58f, -8, -8, -R_CUBIC_TO, 0, -4.42f, 3.58f, -8, 8, -8, -R_CUBIC_TO, 4.42f, 0, 8, 3.58f, 8, 8, -R_CUBIC_TO, 0, 4.42f, -3.58f, 8, -8, 8, -CLOSE, -R_MOVE_TO, 1.9f, -10.76f, -R_CUBIC_TO, 0.71f, 0.79f, 1.51f, 1.66f, 1.45f, 2.78f, -R_CUBIC_TO, 0.07f, 1.13f, -0.67f, 2.05f, -1.43f, 2.81f, -R_CUBIC_TO, 0.22f, 0.29f, 0.44f, 0.57f, 0.65f, 0.86f, -R_CUBIC_TO, 1.26f, -0.84f, 2.04f, -2.31f, 1.94f, -3.81f, -R_CUBIC_TO, -0.02f, -1.36f, -0.8f, -2.58f, -1.84f, -3.42f, -R_CUBIC_TO, -0.26f, 0.26f, -0.51f, 0.52f, -0.76f, 0.79f, -CLOSE, -R_MOVE_TO, 4.53f, 4.56f, -R_CUBIC_TO, 0.7f, -2.52f, -0.23f, -5.5f, -2.49f, -6.97f, -R_CUBIC_TO, -0.24f, 0.31f, -0.47f, 0.61f, -0.7f, 0.92f, -R_CUBIC_TO, 0.52f, 0.54f, 1.08f, 1.04f, 1.46f, 1.68f, -R_CUBIC_TO, 0.92f, 1.54f, 0.97f, 3.54f, 0.1f, 5.1f, -R_CUBIC_TO, -0.4f, 0.73f, -1.02f, 1.31f, -1.61f, 1.9f, -R_CUBIC_TO, 0.22f, 0.32f, 0.45f, 0.63f, 0.68f, 0.94f, -R_CUBIC_TO, 1.23f, -0.86f, 2.15f, -2.11f, 2.56f, -3.57f, -CLOSE, -MOVE_TO, 7.42f, 2.67f, -R_CUBIC_TO, -2.92f, 0.7f, -5.09f, 3.28f, -5.09f, 6.36f, -R_CUBIC_TO, 0, 2.66f, 1.62f, 4.94f, 3.93f, 5.97f, -R_CUBIC_TO, 0.55f, -0.16f, 1.06f, -0.3f, 1.48f, -0.39f, -R_CUBIC_TO, 0.21f, -1.04f, 0.33f, -2.1f, 0.38f, -3.16f, -R_CUBIC_TO, -0.7f, -0.4f, -1.44f, -0.73f, -2.16f, -1.1f, -R_CUBIC_TO, 0.84f, -0.16f, 1.68f, -0.29f, 2.5f, -0.52f, -R_CUBIC_TO, 0.04f, -0.51f, 0.06f, -1.01f, 0.1f, -1.52f, -R_CUBIC_TO, 0.51f, -0.33f, 1.03f, -0.66f, 1.55f, -0.98f, -R_CUBIC_TO, -0.22f, -0.61f, -0.5f, -1.2f, -0.81f, -1.77f, -R_CUBIC_TO, -0.53f, -0.95f, -0.95f, -1.96f, -1.54f, -2.88f, -R_LINE_TO, -0.34f, -0.01f, -CLOSE, -END
diff --git a/ash/resources/vector_icons/notification_chromevox.icon b/ash/resources/vector_icons/notification_chromevox.icon index 576a732d4..3f3370d 100644 --- a/ash/resources/vector_icons/notification_chromevox.icon +++ b/ash/resources/vector_icons/notification_chromevox.icon
@@ -2,41 +2,41 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -CANVAS_DIMENSIONS, 36, -MOVE_TO, 18, 34, -CUBIC_TO, 9.16f, 34, 2, 26.84f, 2, 18, -CUBIC_TO_SHORTHAND, 9.16f, 2, 18, 2, -R_CUBIC_TO, 8.84f, 0, 16, 7.16f, 16, 16, -R_CUBIC_TO, 0, 8.84f, -7.16f, 16, -16, 16, +CANVAS_DIMENSIONS, 96, +MOVE_TO, 48, 88, +CUBIC_TO, 25.91f, 88, 8, 70.09f, 8, 48, +CUBIC_TO_SHORTHAND, 25.91f, 8, 48, 8, +R_CUBIC_TO, 22.09f, 0, 40, 17.91f, 40, 40, +R_CUBIC_TO, 0, 22.09f, -17.91f, 40, -40, 40, CLOSE, -R_MOVE_TO, 3.81f, -21.52f, -R_CUBIC_TO, 1.41f, 1.57f, 3.01f, 3.31f, 2.9f, 5.56f, -R_CUBIC_TO, 0.14f, 2.25f, -1.34f, 4.11f, -2.87f, 5.61f, -R_CUBIC_TO, 0.43f, 0.57f, 0.87f, 1.14f, 1.31f, 1.71f, -R_CUBIC_TO, 2.52f, -1.68f, 4.08f, -4.63f, 3.87f, -7.62f, -R_CUBIC_TO, -0.04f, -2.71f, -1.6f, -5.16f, -3.69f, -6.83f, -R_CUBIC_TO, -0.52f, 0.52f, -1.02f, 1.04f, -1.52f, 1.58f, +R_MOVE_TO, 9.52f, -53.8f, +R_CUBIC_TO, 3.53f, 3.93f, 7.53f, 8.28f, 7.26f, 13.9f, +R_CUBIC_TO, 0.34f, 5.63f, -3.35f, 10.27f, -7.17f, 14.03f, +R_CUBIC_TO, 1.08f, 1.43f, 2.17f, 2.85f, 3.26f, 4.28f, +R_CUBIC_TO, 6.29f, -4.19f, 10.19f, -11.57f, 9.69f, -19.06f, +R_CUBIC_TO, -0.1f, -6.77f, -3.99f, -12.9f, -9.23f, -17.09f, +R_CUBIC_TO, -1.29f, 1.29f, -2.56f, 2.61f, -3.81f, 3.95f, CLOSE, -R_MOVE_TO, 9.07f, 9.12f, -R_CUBIC_TO, 1.41f, -5.05f, -0.45f, -11, -4.98f, -13.94f, -R_CUBIC_TO, -0.47f, 0.61f, -0.94f, 1.22f, -1.41f, 1.83f, -R_CUBIC_TO, 1.03f, 1.07f, 2.16f, 2.09f, 2.93f, 3.36f, -R_CUBIC_TO, 1.83f, 3.07f, 1.94f, 7.08f, 0.2f, 10.21f, -R_CUBIC_TO, -0.79f, 1.47f, -2.04f, 2.62f, -3.22f, 3.79f, -R_CUBIC_TO, 0.44f, 0.64f, 0.89f, 1.26f, 1.36f, 1.88f, -R_CUBIC_TO, 2.45f, -1.71f, 4.29f, -4.22f, 5.12f, -7.13f, +R_MOVE_TO, 22.67f, 22.8f, +CUBIC_TO, 83.7f, 44.38f, 79.05f, 29.5f, 67.74f, 22.16f, +R_CUBIC_TO, -1.19f, 1.52f, -2.36f, 3.04f, -3.52f, 4.57f, +R_CUBIC_TO, 2.58f, 2.68f, 5.4f, 5.21f, 7.32f, 8.41f, +R_CUBIC_TO, 4.58f, 7.67f, 4.84f, 17.69f, 0.49f, 25.51f, +R_CUBIC_TO, -1.98f, 3.67f, -5.11f, 6.55f, -8.04f, 9.48f, +R_CUBIC_TO, 1.1f, 1.59f, 2.23f, 3.16f, 3.39f, 4.71f, +R_CUBIC_TO, 6.13f, -4.28f, 10.72f, -10.54f, 12.81f, -17.83f, CLOSE, -MOVE_TO, 14.85f, 5.33f, -CUBIC_TO, 9, 6.73f, 4.67f, 11.9f, 4.67f, 18.06f, -R_CUBIC_TO, 0, 5.32f, 3.23f, 9.89f, 7.87f, 11.94f, -R_CUBIC_TO, 1.09f, -0.31f, 2.11f, -0.59f, 2.96f, -0.77f, -R_CUBIC_TO, 0.41f, -2.08f, 0.66f, -4.2f, 0.76f, -6.32f, -R_CUBIC_TO, -1.4f, -0.8f, -2.88f, -1.47f, -4.33f, -2.2f, -R_CUBIC_TO, 1.67f, -0.32f, 3.36f, -0.59f, 5, -1.04f, -R_CUBIC_TO, 0.07f, -1.01f, 0.13f, -2.02f, 0.21f, -3.04f, -R_CUBIC_TO, 1.02f, -0.67f, 2.05f, -1.32f, 3.09f, -1.96f, -R_CUBIC_TO, -0.43f, -1.23f, -0.99f, -2.4f, -1.62f, -3.54f, -R_CUBIC_TO, -1.05f, -1.91f, -1.9f, -3.93f, -3.07f, -5.77f, -R_CUBIC_TO, -0.22f, -0.01f, -0.45f, -0.02f, -0.69f, -0.03f, +R_MOVE_TO, -40.07f, -40.67f, +R_CUBIC_TO, -14.61f, 3.49f, -25.45f, 16.41f, -25.45f, 31.81f, +R_CUBIC_TO, 0, 13.29f, 8.07f, 24.73f, 19.67f, 29.86f, +R_CUBIC_TO, 2.74f, -0.79f, 5.29f, -1.48f, 7.4f, -1.93f, +R_CUBIC_TO, 1.03f, -5.21f, 1.64f, -10.5f, 1.9f, -15.81f, +R_CUBIC_TO, -3.5f, -2.01f, -7.2f, -3.67f, -10.81f, -5.49f, +R_CUBIC_TO, 4.18f, -0.8f, 8.4f, -1.47f, 12.51f, -2.6f, +R_CUBIC_TO, 0.18f, -2.53f, 0.32f, -5.06f, 0.52f, -7.59f, +R_CUBIC_TO, 2.56f, -1.67f, 5.13f, -3.31f, 7.74f, -4.89f, +R_CUBIC_TO, -1.09f, -3.06f, -2.49f, -6.01f, -4.06f, -8.85f, +R_CUBIC_TO, -2.63f, -4.77f, -4.74f, -9.81f, -7.68f, -14.42f, +R_CUBIC_TO, -0.55f, -0.02f, -1.13f, -0.04f, -1.73f, -0.08f, CLOSE, END
diff --git a/ash/resources/vector_icons/notification_low_power_battery.icon b/ash/resources/vector_icons/notification_low_power_battery.icon index 5bb4c9e..5ec16fc8 100644 --- a/ash/resources/vector_icons/notification_low_power_battery.icon +++ b/ash/resources/vector_icons/notification_low_power_battery.icon
@@ -2,50 +2,50 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -CANVAS_DIMENSIONS, 36, +CANVAS_DIMENSIONS, 96, PATH_COLOR_ARGB, 0x4C, 0xEA, 0x61, 0x0, -MOVE_TO, 12, 4, -R_H_LINE_TO, 12, -R_CUBIC_TO, 1.11f, 0, 2, 0.9f, 2, 2, -R_V_LINE_TO, 26, -R_CUBIC_TO, 0, 1.11f, -0.89f, 2, -2, 2, -H_LINE_TO, 12, -R_CUBIC_TO, -1.1f, 0, -2, -0.89f, -2, -2, -V_LINE_TO, 6, -R_CUBIC_TO, 0, -1.1f, 0.9f, -2, 2, -2, +MOVE_TO, 32.33f, 13, +H_LINE_TO, 60.64f, +R_CUBIC_TO, 2.95f, 0, 5.33f, 2.39f, 5.33f, 5.33f, +R_V_LINE_TO, 64.33f, +R_CUBIC_TO, 0, 2.95f, -2.39f, 5.33f, -5.33f, 5.33f, +H_LINE_TO, 32.33f, +CUBIC_TO, 29.39f, 88, 27, 85.61f, 27, 82.67f, +V_LINE_TO, 18.33f, +CUBIC_TO, 27, 15.39f, 29.39f, 13, 32.33f, 13, CLOSE, -R_MOVE_TO, 2, -2, -R_H_LINE_TO, 8, -R_V_LINE_TO, 2, -R_H_LINE_TO, -8, -V_LINE_TO, 2, +R_MOVE_TO, 4.41f, -5, +R_H_LINE_TO, 19.49f, +R_V_LINE_TO, 5, +H_LINE_TO, 36.74f, +V_LINE_TO, 8, CLOSE, NEW_PATH, PATH_COLOR_ARGB, 0xFF, 0xEA, 0x61, 0x0, -MOVE_TO, 26, 24, -R_V_LINE_TO, 6, -R_CUBIC_TO, 0, 2.21f, -1.79f, 4, -4, 4, -R_H_LINE_TO, -8, -R_CUBIC_TO, -2.21f, 0, -4, -1.79f, -4, -4, -R_V_LINE_TO, -6, -R_H_LINE_TO, 16, +MOVE_TO, 27, 64, +R_H_LINE_TO, 39, +R_V_LINE_TO, 18, +R_CUBIC_TO, 0, 3.31f, -2.69f, 6, -6, 6, +H_LINE_TO, 33, +R_CUBIC_TO, -3.31f, 0, -6, -2.69f, -6, -6, +V_LINE_TO, 64, CLOSE, -R_MOVE_TO, 2.63f, -6, -R_CUBIC_TO, -0.8f, 0, -1.54f, -0.13f, -2.22f, -0.38f, -R_CUBIC_TO, -0.68f, -0.25f, -1.47f, -0.73f, -2.37f, -1.43f, -R_CUBIC_TO, -0.28f, -0.22f, -0.56f, -0.4f, -0.83f, -0.55f, -R_CUBIC_TO, -0.11f, -0.07f, -0.23f, -0.13f, -0.35f, -0.18f, -R_CUBIC_TO, -0.06f, -0.03f, -0.12f, -0.05f, -0.17f, -0.08f, -R_CUBIC_TO, -0.67f, -0.3f, -1.42f, -0.48f, -2.24f, -0.48f, -R_CUBIC_TO, -2.05f, 0, -3.78f, 1.08f, -4.44f, 2.58f, -R_CUBIC_TO, -0.01f, -1.65f, 0.48f, -2.97f, 1.45f, -3.97f, -R_CUBIC_TO, 0.98f, -1, 2.27f, -1.5f, 3.89f, -1.5f, -R_CUBIC_TO, 0.84f, 0, 1.61f, 0.13f, 2.3f, 0.4f, -R_CUBIC_TO, 0.69f, 0.27f, 1.48f, 0.74f, 2.35f, 1.43f, -R_CUBIC_TO, 0.02f, 0.02f, 0.04f, 0.02f, 0.06f, 0.03f, -R_CUBIC_TO, 0.87f, 0.77f, 2.1f, 1.26f, 3.48f, 1.26f, -R_CUBIC_TO, 2.1f, 0, 3.85f, -1.12f, 4.48f, -2.67f, -R_CUBIC_TO, 0.01f, 1.65f, -0.49f, 2.98f, -1.49f, 4.01f, -R_CUBIC_TO, -1, 1.03f, -2.3f, 1.54f, -3.88f, 1.54f, +R_MOVE_TO, 45.68f, -16, +R_CUBIC_TO, -2.12f, 0, -4.1f, -0.34f, -5.92f, -1.01f, +R_CUBIC_TO, -1.83f, -0.67f, -3.93f, -1.95f, -6.32f, -3.82f, +R_CUBIC_TO, -0.76f, -0.59f, -1.49f, -1.06f, -2.21f, -1.47f, +R_CUBIC_TO, -0.3f, -0.18f, -0.62f, -0.34f, -0.94f, -0.49f, +R_CUBIC_TO, -0.15f, -0.07f, -0.31f, -0.14f, -0.47f, -0.21f, +R_CUBIC_TO, -1.79f, -0.79f, -3.79f, -1.28f, -5.96f, -1.28f, +R_CUBIC_TO, -5.47f, 0, -10.09f, 2.87f, -11.85f, 6.87f, +R_CUBIC_TO, -0.03f, -4.39f, 1.26f, -7.92f, 3.87f, -10.58f, +R_CUBIC_TO, 2.6f, -2.67f, 6.05f, -4, 10.37f, -4, +R_CUBIC_TO, 2.24f, 0, 4.28f, 0.36f, 6.12f, 1.06f, +R_CUBIC_TO, 1.84f, 0.71f, 3.93f, 1.98f, 6.27f, 3.81f, +R_CUBIC_TO, 0.06f, 0.04f, 0.11f, 0.05f, 0.16f, 0.09f, +R_CUBIC_TO, 2.31f, 2.06f, 5.59f, 3.37f, 9.27f, 3.37f, +R_CUBIC_TO, 5.59f, 0, 10.28f, -2.99f, 11.94f, -7.13f, +R_CUBIC_TO, 0.03f, 4.39f, -1.3f, 7.95f, -3.97f, 10.69f, +CUBIC_TO, 80.35f, 46.63f, 76.91f, 48, 72.68f, 48, CLOSE, END
diff --git a/ash/resources/vector_icons/notification_screen.icon b/ash/resources/vector_icons/notification_screen.icon index c94e88e..1c94d63 100644 --- a/ash/resources/vector_icons/notification_screen.icon +++ b/ash/resources/vector_icons/notification_screen.icon
@@ -2,25 +2,25 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -CANVAS_DIMENSIONS, 36, -MOVE_TO, 29.45f, 6, -H_LINE_TO, 6.54f, -CUBIC_TO, 5.15f, 6, 4, 7.2f, 4, 8.67f, -R_V_LINE_TO, 14, -CUBIC_TO, 4, 24.13f, 5.15f, 26, 6.55f, 26, -H_LINE_TO, 12, -R_V_LINE_TO, 4, -R_H_LINE_TO, 12, -R_V_LINE_TO, -4, -R_H_LINE_TO, 6, -R_CUBIC_TO, 1.4f, 0, 1.99f, -1.87f, 1.99f, -3.33f, -R_LINE_TO, 0.01f, -14, -CUBIC_TO, 32, 7.2f, 30.85f, 6, 29.45f, 6, +CANVAS_DIMENSIONS, 96, +MOVE_TO, 64, 69, +R_V_LINE_TO, 11, +H_LINE_TO, 32, +V_LINE_TO, 69, +H_LINE_TO, 16, +R_CUBIC_TO, -4.42f, 0, -8, -3.58f, -8, -8, +V_LINE_TO, 24, +R_CUBIC_TO, 0, -4.42f, 3.58f, -8, 8, -8, +R_H_LINE_TO, 64, +R_CUBIC_TO, 4.42f, 0, 8, 3.58f, 8, 8, +R_V_LINE_TO, 37, +R_CUBIC_TO, 0, 4.42f, -3.58f, 8, -8, 8, +H_LINE_TO, 64, CLOSE, -MOVE_TO, 30, 24, -H_LINE_TO, 6, -V_LINE_TO, 8, -R_H_LINE_TO, 24, -R_V_LINE_TO, 16, +MOVE_TO, 16, 24, +R_V_LINE_TO, 37, +R_H_LINE_TO, 64, +V_LINE_TO, 24, +H_LINE_TO, 16, CLOSE, END
diff --git a/ash/resources/vector_icons/notification_screenshare.1x.icon b/ash/resources/vector_icons/notification_screenshare.1x.icon deleted file mode 100644 index 945b8b71..0000000 --- a/ash/resources/vector_icons/notification_screenshare.1x.icon +++ /dev/null
@@ -1,30 +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. - -CANVAS_DIMENSIONS, 18, -MOVE_TO, 2.5f, 3, -R_H_LINE_TO, 13.01f, -CUBIC_TO, 16.33f, 3, 17, 3.69f, 17, 4.52f, -R_V_LINE_TO, 9.14f, -R_CUBIC_TO, 0, 0.84f, -0.67f, 1.34f, -1.49f, 1.34f, -H_LINE_TO, 2.5f, -CUBIC_TO, 1.67f, 15, 1, 14.34f, 1, 13.5f, -V_LINE_TO, 4.52f, -CUBIC_TO, 1, 3.69f, 1.67f, 3, 2.5f, 3, -CLOSE, -MOVE_TO, 2, 14, -R_H_LINE_TO, 14, -V_LINE_TO, 4, -H_LINE_TO, 2, -R_V_LINE_TO, 10, -CLOSE, -R_MOVE_TO, 8.09f, -4.08f, -R_CUBIC_TO, -2.35f, -0.04f, -4.01f, 0.45f, -5.09f, 1.74f, -R_CUBIC_TO, 0.43f, -1.85f, 1.88f, -3.59f, 5.09f, -3.59f, -V_LINE_TO, 6, -LINE_TO, 13, 9, -R_LINE_TO, -2.91f, 3, -V_LINE_TO, 9.92f, -CLOSE, -END
diff --git a/ash/resources/vector_icons/notification_screenshare.icon b/ash/resources/vector_icons/notification_screenshare.icon index 64e30fbf..248789d 100644 --- a/ash/resources/vector_icons/notification_screenshare.icon +++ b/ash/resources/vector_icons/notification_screenshare.icon
@@ -2,29 +2,29 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -CANVAS_DIMENSIONS, 36, -MOVE_TO, 4.99f, 6, -R_H_LINE_TO, 26.02f, -CUBIC_TO, 32.66f, 6, 34, 7.37f, 34, 9.05f, -R_V_LINE_TO, 18.28f, -CUBIC_TO, 34, 29, 32.66f, 30, 31.01f, 30, -H_LINE_TO, 4.99f, -CUBIC_TO, 3.35f, 30, 2, 28.68f, 2, 27, -V_LINE_TO, 9.05f, -CUBIC_TO, 2, 7.37f, 3.35f, 6, 4.99f, 6, +CANVAS_DIMENSIONS, 96, +MOVE_TO, 16, 18, +R_H_LINE_TO, 64, +R_CUBIC_TO, 4.42f, 0, 8, 3.58f, 8, 8, +R_V_LINE_TO, 44, +R_CUBIC_TO, 0, 4.42f, -3.58f, 8, -8, 8, +H_LINE_TO, 16, +R_CUBIC_TO, -4.42f, 0, -8, -3.58f, -8, -8, +V_LINE_TO, 26, +R_CUBIC_TO, 0, -4.42f, 3.58f, -8, 8, -8, CLOSE, -MOVE_TO, 4, 28, -R_H_LINE_TO, 28, -V_LINE_TO, 8, -H_LINE_TO, 4, -R_V_LINE_TO, 20, +R_MOVE_TO, 0, 52, +R_H_LINE_TO, 64, +V_LINE_TO, 26, +H_LINE_TO, 16, +R_V_LINE_TO, 44, CLOSE, -R_MOVE_TO, 16.18f, -8.15f, -R_CUBIC_TO, -4.7f, -0.07f, -8.02f, 0.9f, -10.18f, 3.49f, -R_CUBIC_TO, 0.87f, -3.7f, 3.76f, -7.17f, 10.18f, -7.18f, -V_LINE_TO, 12, -LINE_TO, 26, 18, -R_LINE_TO, -5.82f, 6, -R_V_LINE_TO, -4.15f, +R_MOVE_TO, 37.46f, -17.39f, +CUBIC_TO, 41.7f, 52.43f, 33.39f, 54.86f, 28, 61.33f, +R_CUBIC_TO, 2.17f, -9.24f, 9.4f, -17.94f, 25.46f, -17.95f, +V_LINE_TO, 33, +LINE_TO, 68, 48, +LINE_TO, 53.46f, 63, +V_LINE_TO, 52.62f, CLOSE, END
diff --git a/ash/resources/vector_icons/notification_sms_sync.1x.icon b/ash/resources/vector_icons/notification_sms_sync.1x.icon deleted file mode 100644 index 7c57390..0000000 --- a/ash/resources/vector_icons/notification_sms_sync.1x.icon +++ /dev/null
@@ -1,34 +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. - -CANVAS_DIMENSIONS, 18, -MOVE_TO, 14.6f, 2, -R_CUBIC_TO, 0.77f, 0, 1.4f, 0.63f, 1.4f, 1.4f, -R_V_LINE_TO, 8.4f, -R_CUBIC_TO, 0, 0.77f, -0.63f, 1.2f, -1.4f, 1.2f, -H_LINE_TO, 4.75f, -LINE_TO, 2, 16, -R_LINE_TO, 0.01f, -12.6f, -R_CUBIC_TO, 0, -0.77f, 0.62f, -1.4f, 1.39f, -1.4f, -R_H_LINE_TO, 11.2f, -CLOSE, -MOVE_TO, 6.5f, 6, -R_LINE_TO, -3, 2.5f, -R_LINE_TO, 3, 2.5f, -V_LINE_TO, 9, -H_LINE_TO, 10, -V_LINE_TO, 8, -H_LINE_TO, 6.5f, -V_LINE_TO, 6, -CLOSE, -R_MOVE_TO, 8, 0.5f, -R_LINE_TO, -3, -2.5f, -R_V_LINE_TO, 2, -H_LINE_TO, 8, -R_V_LINE_TO, 1, -R_H_LINE_TO, 3.5f, -R_V_LINE_TO, 2, -R_LINE_TO, 3, -2.5f, -CLOSE, -END
diff --git a/ash/resources/vector_icons/notification_sms_sync.icon b/ash/resources/vector_icons/notification_sms_sync.icon index d20a3f3..ea0b8778 100644 --- a/ash/resources/vector_icons/notification_sms_sync.icon +++ b/ash/resources/vector_icons/notification_sms_sync.icon
@@ -2,33 +2,33 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -CANVAS_DIMENSIONS, 36, -MOVE_TO, 29.2f, 4, -CUBIC_TO, 30.74f, 4, 32, 5.26f, 32, 6.8f, -R_V_LINE_TO, 16.8f, -R_CUBIC_TO, 0, 1.54f, -1.26f, 2.4f, -2.8f, 2.4f, -H_LINE_TO, 9.5f, -LINE_TO, 4, 32, -R_LINE_TO, 0.01f, -25.2f, -CUBIC_TO, 4.01f, 5.26f, 5.26f, 4, 6.8f, 4, -R_H_LINE_TO, 22.4f, +CANVAS_DIMENSIONS, 96, +MOVE_TO, 76.8f, 12, +R_CUBIC_TO, 3.96f, 0, 7.2f, 3.24f, 7.2f, 7.2f, +R_V_LINE_TO, 46.2f, +R_CUBIC_TO, 0, 3.96f, -3.24f, 6.6f, -7.2f, 6.6f, +H_LINE_TO, 26, +LINE_TO, 12, 88, +R_LINE_TO, 0.04f, -68.8f, +R_CUBIC_TO, 0, -3.96f, 3.2f, -7.2f, 7.16f, -7.2f, +R_H_LINE_TO, 57.6f, CLOSE, -MOVE_TO, 13, 12, -R_LINE_TO, -6, 5.5f, -R_LINE_TO, 6, 5.5f, -R_V_LINE_TO, -4, -R_H_LINE_TO, 8, -R_V_LINE_TO, -3, -R_H_LINE_TO, -8, -R_V_LINE_TO, -4, +MOVE_TO, 35, 36, +LINE_TO, 20, 50, +R_LINE_TO, 15, 14, +V_LINE_TO, 54, +R_H_LINE_TO, 18, +R_V_LINE_TO, -8, +H_LINE_TO, 35, +V_LINE_TO, 36, CLOSE, -R_MOVE_TO, 16, 0.5f, -LINE_TO, 23, 7, -R_V_LINE_TO, 4, -R_H_LINE_TO, -8, -R_V_LINE_TO, 3, -R_H_LINE_TO, 8, -R_V_LINE_TO, 4, -R_LINE_TO, 6, -5.5f, +R_MOVE_TO, 26, 12, +R_LINE_TO, 15, -14, +R_LINE_TO, -15, -14, +R_V_LINE_TO, 10, +H_LINE_TO, 43, +R_V_LINE_TO, 8, +R_H_LINE_TO, 18, +R_V_LINE_TO, 10, CLOSE, END
diff --git a/ash/resources/vector_icons/notification_stylus_battery_warning.1x.icon b/ash/resources/vector_icons/notification_stylus_battery_warning.1x.icon deleted file mode 100644 index ca08290d..0000000 --- a/ash/resources/vector_icons/notification_stylus_battery_warning.1x.icon +++ /dev/null
@@ -1,69 +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. - -CANVAS_DIMENSIONS, 18, -PATH_COLOR_ARGB, 0xFF, 0xC5, 0x39, 0x29, -MOVE_TO, 10.01f, 9.29f, -R_CUBIC_TO, -0.01f, 0.07f, -0.01f, 0.14f, -0.01f, 0.21f, -R_V_LINE_TO, 1.83f, -LINE_TO, 4.32f, 17, -H_LINE_TO, 1, -R_V_LINE_TO, -3.33f, -R_LINE_TO, 6.69f, -6.69f, -R_LINE_TO, 2.32f, 2.32f, -CLOSE, -MOVE_TO, 14.34f, 7, -H_LINE_TO, 12.5f, -R_CUBIC_TO, -0.79f, 0, -1.49f, 0.37f, -1.95f, 0.94f, -LINE_TO, 8.63f, 6.02f, -R_LINE_TO, 2.25f, -2.25f, -R_LINE_TO, -0.65f, -0.65f, -R_LINE_TO, -5.03f, 5.03f, -LINE_TO, 3.96f, 6.91f, -R_LINE_TO, 5.66f, -5.65f, -R_CUBIC_TO, 0.35f, -0.35f, 0.92f, -0.34f, 1.26f, 0.01f, -R_LINE_TO, 1.26f, 1.25f, -R_LINE_TO, 1.26f, -1.25f, -R_CUBIC_TO, 0.34f, -0.35f, 0.91f, -0.35f, 1.25f, 0, -R_LINE_TO, 2.08f, 2.07f, -R_CUBIC_TO, 0.35f, 0.35f, 0.36f, 0.92f, 0.01f, 1.26f, -LINE_TO, 14.34f, 7, -CLOSE, -NEW_PATH, -PATH_COLOR_ARGB, 0x4C, 0xC5, 0x39, 0x29, -MOVE_TO, 12, 9, -R_H_LINE_TO, 3, -R_CUBIC_TO, 0.55f, 0, 1, 0.45f, 1, 1, -R_V_LINE_TO, 6, -R_CUBIC_TO, 0, 0.55f, -0.45f, 1, -1, 1, -R_H_LINE_TO, -3, -R_CUBIC_TO, -0.55f, 0, -1, -0.45f, -1, -1, -R_V_LINE_TO, -6, -R_CUBIC_TO, 0, -0.55f, 0.45f, -1, 1, -1, -CLOSE, -R_MOVE_TO, 0, -1, -R_H_LINE_TO, 3, -R_V_LINE_TO, 1, -R_H_LINE_TO, -3, -V_LINE_TO, 8, -CLOSE, -NEW_PATH, -PATH_COLOR_ARGB, 0xFF, 0xC5, 0x39, 0x29, -MOVE_TO, 13, 10, -R_H_LINE_TO, 1, -R_V_LINE_TO, 3, -R_H_LINE_TO, -1, -CLOSE, -MOVE_TO, 13, 14, -R_H_LINE_TO, 1, -R_V_LINE_TO, 1, -R_H_LINE_TO, -1, -CLOSE, -MOVE_TO, 16, 16, -R_CUBIC_TO, 0, 0.74f, -0.45f, 1, -1, 1, -R_H_LINE_TO, -3, -R_CUBIC_TO, -0.55f, 0, -1, -0.26f, -1, -1, -R_H_LINE_TO, 5, -CLOSE, -END
diff --git a/ash/resources/vector_icons/notification_stylus_battery_warning.icon b/ash/resources/vector_icons/notification_stylus_battery_warning.icon index dfb4c502..1944e8a8 100644 --- a/ash/resources/vector_icons/notification_stylus_battery_warning.icon +++ b/ash/resources/vector_icons/notification_stylus_battery_warning.icon
@@ -2,73 +2,73 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -CANVAS_DIMENSIONS, 36, +CANVAS_DIMENSIONS, 96, PATH_COLOR_ARGB, 0xFF, 0xC5, 0x39, 0x29, -MOVE_TO, 29, 13.68f, -V_LINE_TO, 13, -R_H_LINE_TO, -4, -R_V_LINE_TO, 1, -R_H_LINE_TO, 1.84f, -H_LINE_TO, 23, -R_CUBIC_TO, -1.03f, 0, -1.93f, 0.52f, -2.47f, 1.3f, -R_LINE_TO, -3.26f, -3.26f, -R_LINE_TO, 4.5f, -4.5f, -R_LINE_TO, -1.3f, -1.3f, -LINE_TO, 10.41f, 16.31f, -R_LINE_TO, -2.49f, -2.49f, -R_LINE_TO, 11.32f, -11.31f, -R_CUBIC_TO, 0.69f, -0.69f, 1.85f, -0.67f, 2.52f, 0.02f, -R_LINE_TO, 2.52f, 2.51f, -R_LINE_TO, 2.52f, -2.51f, -R_CUBIC_TO, 0.68f, -0.69f, 1.81f, -0.69f, 2.51f, 0, -LINE_TO, 33.47f, 6.67f, -R_CUBIC_TO, 0.69f, 0.69f, 0.71f, 1.83f, 0.02f, 2.53f, -LINE_TO, 29, 13.68f, +MOVE_TO, 74, 37.03f, +V_LINE_TO, 37, +H_LINE_TO, 64, +R_V_LINE_TO, 2, +R_H_LINE_TO, 4.01f, +R_H_LINE_TO, -8.76f, +R_CUBIC_TO, -2.31f, 0, -4.35f, 1.16f, -5.57f, 2.93f, +R_LINE_TO, -7.34f, -7.34f, +R_LINE_TO, 10.12f, -10.12f, +R_LINE_TO, -2.92f, -2.92f, +LINE_TO, 30.91f, 44.19f, +R_LINE_TO, -5.6f, -5.6f, +LINE_TO, 50.78f, 13.15f, +R_CUBIC_TO, 1.56f, -1.56f, 4.16f, -1.52f, 5.68f, 0.04f, +R_LINE_TO, 5.68f, 5.64f, +R_LINE_TO, 5.68f, -5.64f, +R_CUBIC_TO, 1.52f, -1.56f, 4.08f, -1.56f, 5.64f, 0, +R_LINE_TO, 9.36f, 9.32f, +R_CUBIC_TO, 1.56f, 1.56f, 1.6f, 4.12f, 0.04f, 5.68f, +LINE_TO, 74, 37.03f, CLOSE, -R_MOVE_TO, -9, 4.89f, -R_V_LINE_TO, 4.09f, -LINE_TO, 8.65f, 34, -H_LINE_TO, 2, -R_V_LINE_TO, -6.67f, -R_LINE_TO, 13.38f, -13.39f, -R_LINE_TO, 4.62f, 4.62f, +MOVE_TO, 52.5f, 49.27f, +R_V_LINE_TO, 9.2f, +LINE_TO, 26.95f, 84, +H_LINE_TO, 12, +V_LINE_TO, 69, +LINE_TO, 42.11f, 38.87f, +R_LINE_TO, 10.39f, 10.4f, CLOSE, NEW_PATH, PATH_COLOR_ARGB, 0x4C, 0xC5, 0x39, 0x29, -MOVE_TO, 24, 16, -R_H_LINE_TO, 6, -R_CUBIC_TO, 1.11f, 0, 2, 0.9f, 2, 2, -R_V_LINE_TO, 14, -R_CUBIC_TO, 0, 1.11f, -0.89f, 2, -2, 2, -R_H_LINE_TO, -6, -R_CUBIC_TO, -1.1f, 0, -2, -0.89f, -2, -2, -V_LINE_TO, 18, -R_CUBIC_TO, 0, -1.1f, 0.9f, -2, 2, -2, -CLOSE, -R_MOVE_TO, 1, -1, -R_H_LINE_TO, 4, -R_V_LINE_TO, 1, -R_H_LINE_TO, -4, -R_V_LINE_TO, -1, +MOVE_TO, 61.5f, 43, +R_H_LINE_TO, 15, +R_CUBIC_TO, 2.49f, 0, 4.5f, 2.01f, 4.5f, 4.5f, +R_V_LINE_TO, 33, +R_CUBIC_TO, 0, 2.49f, -2.01f, 4.5f, -4.5f, 4.5f, +R_H_LINE_TO, -15, +R_CUBIC_TO, -2.49f, 0, -4.5f, -2.01f, -4.5f, -4.5f, +R_V_LINE_TO, -33, +R_CUBIC_TO, 0, -2.49f, 2.01f, -4.5f, 4.5f, -4.5f, CLOSE, NEW_PATH, PATH_COLOR_ARGB, 0xFF, 0xC5, 0x39, 0x29, -MOVE_TO, 26, 19, -R_H_LINE_TO, 2, -R_V_LINE_TO, 6, -R_H_LINE_TO, -2, -CLOSE, -MOVE_TO, 26, 27, -R_H_LINE_TO, 2, -R_V_LINE_TO, 2, -R_H_LINE_TO, -2, -CLOSE, -MOVE_TO, 32, 31, -R_V_LINE_TO, 1, -R_CUBIC_TO, 0, 1.11f, -0.89f, 2, -2, 2, -R_H_LINE_TO, -6, -R_CUBIC_TO, -1.1f, 0, -2, -0.89f, -2, -2, -R_V_LINE_TO, -1, +R_MOVE_TO, 2.5f, -2, R_H_LINE_TO, 10, +R_V_LINE_TO, 2, +H_LINE_TO, 64, +R_V_LINE_TO, -2, +CLOSE, +MOVE_TO, 67, 50, +R_H_LINE_TO, 4, +R_V_LINE_TO, 14, +R_H_LINE_TO, -4, +CLOSE, +MOVE_TO, 67, 68, +R_H_LINE_TO, 4, +R_V_LINE_TO, 4, +R_H_LINE_TO, -4, +CLOSE, +MOVE_TO, 81, 77, +R_V_LINE_TO, 2.67f, +CUBIC_TO, 81, 82.61f, 78.85f, 85, 76.2f, 85, +H_LINE_TO, 61.8f, +R_CUBIC_TO, -2.65f, 0, -4.8f, -2.39f, -4.8f, -5.33f, +V_LINE_TO, 77, +R_H_LINE_TO, 24, CLOSE, END
diff --git a/ash/resources/vector_icons/notification_supervised.icon b/ash/resources/vector_icons/notification_supervised.icon index 399d5a63..72b44e7d 100644 --- a/ash/resources/vector_icons/notification_supervised.icon +++ b/ash/resources/vector_icons/notification_supervised.icon
@@ -2,40 +2,40 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -CANVAS_DIMENSIONS, 18, -MOVE_TO, 9, 1, -R_CUBIC_TO, 4.42f, 0, 8, 3.58f, 8, 8, -R_CUBIC_TO, 0, 4.42f, -3.58f, 8, -8, 8, -R_CUBIC_TO, -4.42f, 0, -8, -3.58f, -8, -8, -R_CUBIC_TO, 0, -4.42f, 3.58f, -8, 8, -8, +CANVAS_DIMENSIONS, 96, +MOVE_TO, 48, 8, +R_CUBIC_TO, 22.08f, 0, 40, 17.92f, 40, 40, +CUBIC_TO_SHORTHAND, 70.08f, 88, 48, 88, +CUBIC_TO_SHORTHAND, 8, 70.08f, 8, 48, +CUBIC_TO_SHORTHAND, 25.92f, 8, 48, 8, CLOSE, -R_MOVE_TO, 0, 1.6f, -R_CUBIC_TO, -1.1f, 0, -2, 0.9f, -2, 2, -R_CUBIC_TO, 0, 1.1f, 0.9f, 2, 2, 2, -R_CUBIC_TO, 1.1f, 0, 2, -0.9f, 2, -2, -R_CUBIC_TO, 0, -1.1f, -0.9f, -2, -2, -2, +R_MOVE_TO, 0, 8, +R_CUBIC_TO, -5.52f, 0, -10, 4.48f, -10, 10, +R_CUBIC_TO, 0, 5.52f, 4.48f, 10, 10, 10, +R_CUBIC_TO, 5.52f, 0, 10, -4.48f, 10, -10, +R_CUBIC_TO, 0, -5.52f, -4.48f, -10, -10, -10, CLOSE, -R_MOVE_TO, 4, 10.58f, -V_LINE_TO, 9.62f, -CUBIC_TO, 13, 8.36f, 10.9f, 7.4f, 9, 7.4f, -R_CUBIC_TO, -1.9f, 0, -4, 0.96f, -4, 2.22f, -R_V_LINE_TO, 3.55f, -R_CUBIC_TO, 0, 0.72f, 0.67f, 1.34f, 1.6f, 1.74f, -R_CUBIC_TO, 0.71f, 0.3f, 1.58f, 0.49f, 2.4f, 0.49f, -R_CUBIC_TO, 0.26f, 0, 0.54f, -0.02f, 0.8f, -0.06f, -R_V_LINE_TO, -1.6f, -R_CUBIC_TO, -0.26f, 0.04f, -0.54f, 0.06f, -0.8f, 0.06f, -R_CUBIC_TO, -0.81f, 0, -1.66f, -0.18f, -2.36f, -0.48f, -R_CUBIC_TO, 0.2f, -0.65f, 1.33f, -1.12f, 2.36f, -1.12f, -R_CUBIC_TO, 0.26f, 0, 0.54f, 0.03f, 0.8f, 0.1f, -R_CUBIC_TO, 0.86f, 0.18f, 1.6f, 0.66f, 1.6f, 1.24f, -R_V_LINE_TO, 1.38f, -R_CUBIC_TO, 0.93f, -0.41f, 1.6f, -1.02f, 1.6f, -1.74f, +R_MOVE_TO, 20, 52.88f, +V_LINE_TO, 51.12f, +CUBIC_TO, 68, 44.8f, 57.48f, 40, 48, 40, +R_CUBIC_TO, -9.48f, 0, -20, 4.8f, -20, 11.12f, +R_V_LINE_TO, 17.76f, +R_CUBIC_TO, 0, 3.6f, 3.36f, 6.68f, 8, 8.68f, +CUBIC_TO, 39.56f, 79.08f, 43.88f, 80, 48, 80, +R_CUBIC_TO, 1.32f, 0, 2.68f, -0.12f, 4, -0.32f, +R_V_LINE_TO, -8, +R_CUBIC_TO, -1.32f, 0.2f, -2.68f, 0.32f, -4, 0.32f, +R_CUBIC_TO, -4.04f, 0, -8.28f, -0.88f, -11.8f, -2.4f, +R_CUBIC_TO, 1, -3.24f, 6.64f, -5.6f, 11.8f, -5.6f, +R_CUBIC_TO, 1.32f, 0, 2.68f, 0.16f, 4, 0.48f, +R_CUBIC_TO, 4.28f, 0.92f, 8, 3.28f, 8, 6.2f, +R_V_LINE_TO, 6.88f, +R_CUBIC_TO, 4.64f, -2.04f, 8, -5.12f, 8, -8.68f, CLOSE, -MOVE_TO, 9.25f, 11.5f, -R_CUBIC_TO, -0.69f, 0, -1.25f, -0.56f, -1.25f, -1.25f, -CUBIC_TO_SHORTHAND, 8.56f, 9, 9.25f, 9, -R_CUBIC_TO, 0.69f, 0, 1.25f, 0.56f, 1.25f, 1.25f, -R_CUBIC_TO, 0, 0.69f, -0.56f, 1.25f, -1.25f, 1.25f, +MOVE_TO, 49.25f, 60.5f, +R_CUBIC_TO, -3.45f, 0, -6.25f, -2.8f, -6.25f, -6.25f, +CUBIC_TO_SHORTHAND, 45.8f, 48, 49.25f, 48, +R_CUBIC_TO, 3.45f, 0, 6.25f, 2.8f, 6.25f, 6.25f, +R_CUBIC_TO, 0, 3.45f, -2.8f, 6.25f, -6.25f, 6.25f, CLOSE, END
diff --git a/ash/resources/vector_icons/notification_timer.icon b/ash/resources/vector_icons/notification_timer.icon index 36c5738..c98846d 100644 --- a/ash/resources/vector_icons/notification_timer.icon +++ b/ash/resources/vector_icons/notification_timer.icon
@@ -2,32 +2,33 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -CANVAS_DIMENSIONS, 36, -MOVE_TO, 18, 30, -R_CUBIC_TO, -6.39f, 0, -10, -3.67f, -10, -10.14f, -CUBIC_TO_SHORTHAND, 11.61f, 10, 18, 10, -R_CUBIC_TO, 6.39f, 0, 10, 3.4f, 10, 9.86f, -CUBIC_TO_SHORTHAND, 24.39f, 30, 18, 30, -CLOSE, -MOVE_TO, 31.14f, 8.82f, -R_CUBIC_TO, -0.67f, -0.8f, -1.4f, -1.56f, -2.19f, -2.22f, -R_LINE_TO, -2.21f, 2.23f, -R_CUBIC_TO, -2.41f, -1.95f, -5.44f, -3.11f, -8.74f, -3.11f, -R_CUBIC_TO, -7.73f, 0, -14, 6.33f, -14, 14.14f, -CUBIC_TO, 4, 27.67f, 10.25f, 34, 18, 34, -R_CUBIC_TO, 7.75f, 0, 14, -6.33f, 14, -14.14f, -R_CUBIC_TO, 0, -3.33f, -1.15f, -6.39f, -3.06f, -8.81f, -R_LINE_TO, 2.21f, -2.23f, -CLOSE, -MOVE_TO, 13.37f, 4, -R_H_LINE_TO, 9.26f, -V_LINE_TO, 2, -R_H_LINE_TO, -9.26f, -R_V_LINE_TO, 2, -CLOSE, -MOVE_TO, 18, 20, -R_H_LINE_TO, 8, -R_CUBIC_TO, 0, -4.76f, -3.29f, -8, -8, -8, + +CANVAS_DIMENSIONS, 96, +MOVE_TO, 60, 4, R_V_LINE_TO, 8, +H_LINE_TO, 36, +V_LINE_TO, 4, +R_H_LINE_TO, 24, +CLOSE, +R_MOVE_TO, 8, 48, +H_LINE_TO, 48, +V_LINE_TO, 32, +R_CUBIC_TO, 11.05f, 0, 20, 8.95f, 20, 20, +CLOSE, +R_MOVE_TO, 8.12f, -22.44f, +R_LINE_TO, 5.68f, -5.68f, +R_CUBIC_TO, -1.72f, -2.04f, -3.6f, -3.96f, -5.64f, -5.64f, +R_LINE_TO, -5.68f, 5.68f, +CUBIC_TO, 64.28f, 18.96f, 56.48f, 16, 48, 16, +R_CUBIC_TO, -19.88f, 0, -36, 16.12f, -36, 36, +R_CUBIC_TO, 0, 19.88f, 16.08f, 36, 36, 36, +R_CUBIC_TO, 19.92f, 0, 36, -16.12f, 36, -36, +R_CUBIC_TO, 0, -8.48f, -2.96f, -16.28f, -7.88f, -22.44f, +CLOSE, +MOVE_TO, 48, 80, +R_CUBIC_TO, -15.48f, 0, -28, -12.52f, -28, -28, +R_CUBIC_TO, 0, -15.48f, 12.52f, -28, 28, -28, +R_CUBIC_TO, 15.48f, 0, 28, 12.52f, 28, 28, +R_CUBIC_TO, 0, 15.48f, -12.52f, 28, -28, 28, CLOSE, END
diff --git a/ash/wm/resize_handle_window_targeter.cc b/ash/wm/resize_handle_window_targeter.cc index 52a303e..146be4b 100644 --- a/ash/wm/resize_handle_window_targeter.cc +++ b/ash/wm/resize_handle_window_targeter.cc
@@ -47,41 +47,10 @@ window_ = NULL; } -aura::Window* ResizeHandleWindowTargeter::FindTargetForLocatedEvent( +bool ResizeHandleWindowTargeter::GetHitTestRects( aura::Window* window, - ui::LocatedEvent* event) { - if (window == window_) { - gfx::Insets insets; - if (immersive_controller_ && immersive_controller_->IsEnabled() && - !immersive_controller_->IsRevealed() && event->IsTouchEvent()) { - // If the window is in immersive fullscreen, and top-of-window views are - // not revealed, then touch events towards the top of the window - // should not reach the child window so that touch gestures can be used to - // reveal the top-of-windows views. This is needed because the child - // window may consume touch events and prevent touch-scroll gesture from - // being generated. - insets = gfx::Insets( - ImmersiveFullscreenController::kImmersiveFullscreenTopEdgeInset, 0, 0, - 0); - } else { - // If the event falls very close to the inside of the frame border, then - // target the window itself, so that the window can be resized easily. - insets = frame_border_inset_; - } - - if (!insets.IsEmpty()) { - gfx::Rect bounds = gfx::Rect(window_->bounds().size()); - bounds.Inset(insets); - if (!bounds.Contains(event->location())) - return window_; - } - } - return aura::WindowTargeter::FindTargetForLocatedEvent(window, event); -} - -bool ResizeHandleWindowTargeter::SubtreeShouldBeExploredForEvent( - aura::Window* window, - const ui::LocatedEvent& event) { + gfx::Rect* hit_test_rect_mouse, + gfx::Rect* hit_test_rect_touch) const { if (window == window_) { // Defer to the parent's targeter on whether |window_| should be able to // receive the event. @@ -90,11 +59,40 @@ if (parent) { aura::WindowTargeter* targeter = static_cast<aura::WindowTargeter*>(parent->GetEventTargeter()); - if (targeter) - return targeter->SubtreeShouldBeExploredForEvent(window, event); + if (targeter) { + return targeter->GetHitTestRects(window, hit_test_rect_mouse, + hit_test_rect_touch); + } } } - return aura::WindowTargeter::SubtreeShouldBeExploredForEvent(window, event); + + bool got_rects = WindowTargeter::GetHitTestRects(window, hit_test_rect_mouse, + hit_test_rect_touch); + if (!got_rects || !window->parent() || window->parent() != window_) + return got_rects; + + // If the event falls very close to the inside of the frame border, then + // target the window itself, so that the window can be resized easily. + // This is achieved by insetting the child (NativeViewHost). + gfx::Insets mouse_insets; + gfx::Insets touch_insets; + touch_insets = mouse_insets = frame_border_inset_; + + // If the window is in immersive fullscreen, and top-of-window views are + // not revealed, then touch events towards the top of the window + // should not reach the child window so that touch gestures can be used + // to reveal the top-of-windows views. This is needed because the child + // window may consume touch events and prevent touch-scroll gesture from + // being generated. + if (immersive_controller_ && immersive_controller_->IsEnabled() && + !immersive_controller_->IsRevealed()) { + touch_insets = gfx::Insets( + ImmersiveFullscreenController::kImmersiveFullscreenTopEdgeInset, 0, 0, + 0); + } + hit_test_rect_mouse->Inset(mouse_insets); + hit_test_rect_touch->Inset(touch_insets); + return got_rects; } } // namespace ash
diff --git a/ash/wm/resize_handle_window_targeter.h b/ash/wm/resize_handle_window_targeter.h index 4957bdf..ffe5ccd 100644 --- a/ash/wm/resize_handle_window_targeter.h +++ b/ash/wm/resize_handle_window_targeter.h
@@ -36,10 +36,9 @@ void OnWindowDestroying(aura::Window* window) override; // aura::WindowTargeter: - aura::Window* FindTargetForLocatedEvent(aura::Window* window, - ui::LocatedEvent* event) override; - bool SubtreeShouldBeExploredForEvent(aura::Window* window, - const ui::LocatedEvent& event) override; + bool GetHitTestRects(aura::Window* window, + gfx::Rect* hit_test_rect_mouse, + gfx::Rect* hit_test_rect_touch) const override; // The targeter does not take ownership of |window_| or // |immersive_controller_|.
diff --git a/build/android/apk_operations.py b/build/android/apk_operations.py index c7fef4a2..1343924 100755 --- a/build/android/apk_operations.py +++ b/build/android/apk_operations.py
@@ -81,7 +81,7 @@ def _LaunchUrl(devices, input_args, device_args_file, url, apk, - wait_for_debugger): + wait_for_java_debugger): if input_args and device_args_file is None: raise Exception('This apk does not support any flags.') if url: @@ -92,8 +92,10 @@ def launch(device): # Set debug app in order to enable reading command line flags on user # builds. - cmd = ['am', 'set-debug-app', '--persistent', apk.GetPackageName()] - if wait_for_debugger: + cmd = ['am', 'set-debug-app', apk.GetPackageName()] + if wait_for_java_debugger: + # To wait for debugging on a non-primary process: + # am set-debug-app org.chromium.chrome:privileged_process0 cmd[-1:-1] = ['-w'] # Ignore error since it will fail if apk is not debuggable. device.RunShellCommand(cmd, check_return=False) @@ -844,13 +846,15 @@ all_devices_by_default = True def _RegisterExtraArgs(self, group): - group.add_argument('-w', '--wait-for-debugger', action='store_true', - help='Pause execution until debugger attaches.') + group.add_argument('-w', '--wait-for-java-debugger', action='store_true', + help='Pause execution until debugger attaches. Applies ' + 'only to the main process. To have renderers wait, ' + 'use --args="--renderer-wait-for-java-debugger"') group.add_argument('url', nargs='?', help='A URL to launch with.') def Run(self): _LaunchUrl(self.devices, self.args.args, self.args.command_line_flags_file, - self.args.url, self.apk_helper, self.args.wait_for_debugger) + self.args.url, self.apk_helper, self.args.wait_for_java_debugger) class _StopCommand(_Command):
diff --git a/build/android/pylib/gtest/gtest_test_instance.py b/build/android/pylib/gtest/gtest_test_instance.py index 26fedbf..4de7c81 100644 --- a/build/android/pylib/gtest/gtest_test_instance.py +++ b/build/android/pylib/gtest/gtest_test_instance.py
@@ -293,6 +293,7 @@ self._suite = args.suite_name[0] self._symbolizer = stack_symbolizer.Symbolizer(None, False) self._gs_test_artifacts_bucket = args.gs_test_artifacts_bucket + self._wait_for_java_debugger = args.wait_for_java_debugger # GYP: if args.executable_dist_dir: @@ -327,6 +328,8 @@ self._extras[_EXTRA_SHARD_SIZE_LIMIT] = 1 self._extras[EXTRA_SHARD_NANO_TIMEOUT] = int(1e9 * self._shard_timeout) self._shard_timeout = 10 * self._shard_timeout + if args.wait_for_java_debugger: + self._extras[EXTRA_SHARD_NANO_TIMEOUT] = int(1e15) # Forever if not self._apk_helper and not self._exe_dist_dir: error_func('Could not find apk or executable for %s' % self._suite) @@ -469,6 +472,10 @@ def total_external_shards(self): return self._total_external_shards + @property + def wait_for_java_debugger(self): + return self._wait_for_java_debugger + #override def TestType(self): return 'gtest'
diff --git a/build/android/pylib/local/device/local_device_environment.py b/build/android/pylib/local/device/local_device_environment.py index 1bae4a0..6f1d0389 100644 --- a/build/android/pylib/local/device/local_device_environment.py +++ b/build/android/pylib/local/device/local_device_environment.py
@@ -145,6 +145,10 @@ self._trace_all = None if hasattr(args, 'trace_all'): self._trace_all = args.trace_all + self._wait_for_java_debugger = args.wait_for_java_debugger + + if self._wait_for_java_debugger: + self._max_tries = 1 devil_chromium.Initialize( output_directory=constants.GetOutDirectory(), @@ -250,6 +254,10 @@ def trace_output(self): return self._trace_output + @property + def wait_for_java_debugger(self): + return self._wait_for_java_debugger + #override def TearDown(self): if self.trace_output:
diff --git a/build/android/pylib/local/device/local_device_gtest_run.py b/build/android/pylib/local/device/local_device_gtest_run.py index 22794a43..6d9ae3a 100644 --- a/build/android/pylib/local/device/local_device_gtest_run.py +++ b/build/android/pylib/local/device/local_device_gtest_run.py
@@ -118,6 +118,7 @@ self._suite = test_instance.suite self._component = '%s/%s' % (self._package, self._runner) self._extras = test_instance.extras + self._wait_for_java_debugger = test_instance.wait_for_java_debugger def GetTestDataRoot(self, device): # pylint: disable=no-self-use @@ -169,6 +170,10 @@ device.adb, dir=device.GetExternalStoragePath(), suffix='.gtest_out') extras[_EXTRA_STDOUT_FILE] = stdout_file.name + if self._wait_for_java_debugger: + cmd = ['am', 'set-debug-app', '-w', self._package] + device.RunShellCommand(cmd, check_return=True) + with command_line_file, test_list_file, stdout_file: try: device.StartInstrumentation( @@ -370,9 +375,12 @@ @local_device_environment.handle_shard_failures_with( on_failure=self._env.BlacklistDevice) def list_tests(dev): + timeout = 30 + if self._test_instance.wait_for_java_debugger: + timeout = None raw_test_list = crash_handler.RetryOnSystemCrash( lambda d: self._delegate.Run( - None, d, flags='--gtest_list_tests', timeout=30), + None, d, flags='--gtest_list_tests', timeout=timeout), device=dev) tests = gtest_test_instance.ParseGTestListTests(raw_test_list) if not tests: @@ -420,6 +428,8 @@ # Run the test. timeout = (self._test_instance.shard_timeout * self.GetTool(device).GetTimeoutScale()) + if self._test_instance.wait_for_java_debugger: + timeout = None if self._test_instance.store_tombstones: tombstones.ClearAllTombstones(device) with device_temp_file.DeviceTempFile(
diff --git a/build/android/pylib/local/device/local_device_instrumentation_test_run.py b/build/android/pylib/local/device/local_device_instrumentation_test_run.py index 2c781791f..94ff92b 100644 --- a/build/android/pylib/local/device/local_device_instrumentation_test_run.py +++ b/build/android/pylib/local/device/local_device_instrumentation_test_run.py
@@ -202,15 +202,16 @@ def set_debug_app(dev): # Set debug app in order to enable reading command line flags on user # builds - if self._test_instance.flags: - if not self._test_instance.package_info: - logging.error("Couldn't set debug app: no package info") - elif not self._test_instance.package_info.package: - logging.error("Couldn't set debug app: no package defined") - else: - dev.RunShellCommand(['am', 'set-debug-app', '--persistent', - self._test_instance.package_info.package], - check_return=True) + if not self._test_instance.package_info: + logging.error("Couldn't set debug app: no package info") + elif not self._test_instance.package_info.package: + logging.error("Couldn't set debug app: no package defined") + else: + cmd = ['am', 'set-debug-app', '--persistent'] + if self._env.wait_for_java_debugger: + cmd.append('-w') + cmd.append(self._test_instance.package_info.package) + dev.RunShellCommand(cmd, check_return=True) @trace_event.traced def edit_shared_prefs(dev): @@ -421,6 +422,8 @@ valgrind_tools.SetChromeTimeoutScale( device, test_timeout_scale * self._test_instance.timeout_scale) + if self._env.wait_for_java_debugger: + timeout = None logging.info('preparing to run %s: %s', test_display_name, test) render_tests_device_output_dir = None @@ -611,8 +614,11 @@ extras['log'] = 'true' extras[_EXTRA_TEST_LIST] = dev_test_list_json.name target = '%s/%s' % (test_package, junit4_runner_class) + kwargs = {} + if self._env.wait_for_java_debugger: + kwargs['timeout'] = None test_list_run_output = dev.StartInstrumentation( - target, extras=extras) + target, extras=extras, retries=0, **kwargs) if any(test_list_run_output): logging.error('Unexpected output while listing tests:') for line in test_list_run_output:
diff --git a/build/android/test_runner.py b/build/android/test_runner.py index ae2275c..edfa8c5c 100755 --- a/build/android/test_runner.py +++ b/build/android/test_runner.py
@@ -334,6 +334,10 @@ '--test-apk-incremental-install-json', type=os.path.realpath, help='Path to install json for the test apk.') + parser.add_argument( + '-w', '--wait-for-java-debugger', action='store_true', + help='Wait for java debugger to attach before running any application ' + 'code. Also disables test timeouts and sets retries=0.') filter_group = parser.add_mutually_exclusive_group() filter_group.add_argument( @@ -481,6 +485,10 @@ '--ui-screenshot-directory', dest='ui_screenshot_dir', type=os.path.realpath, help='Destination for screenshots captured by the tests') + parser.add_argument( + '-w', '--wait-for-java-debugger', action='store_true', + help='Wait for java debugger to attach before running any application ' + 'code. Also disables test timeouts and sets retries=0.') # These arguments are suppressed from the help text because they should # only ever be specified by an intermediate script.
diff --git a/build/toolchain/mac/compile_xcassets.py b/build/toolchain/mac/compile_xcassets.py index c407a3fa..b9e1a16 100644 --- a/build/toolchain/mac/compile_xcassets.py +++ b/build/toolchain/mac/compile_xcassets.py
@@ -29,6 +29,15 @@ # Name of the section containing informational messages that can be ignored. NOTICE_SECTION = 'com.apple.actool.compilation-results' +# Regular expressions matching spurious messages from actool that should be +# ignored (as they are bogus). Generally a bug should be filed with Apple +# when adding a pattern here. +SPURIOUS_PATTERNS = map(re.compile, [ + # crbug.com/770634, likely a bug in Xcode 9.1 beta, remove once build + # requires a version of Xcode with a fix. + r'\[\]\[ipad\]\[76x76\]\[\]\[\]\[1x\]\[\]\[\]: notice: \(null\)', +]) + # Map special type of asset catalog to the corresponding command-line # parameter that need to be passed to actool. ACTOOL_FLAG_FOR_ASSET_TYPE = { @@ -37,6 +46,15 @@ } +def IsSpuriousMessage(line): + """Returns whether line contains a spurious message that should be ignored.""" + for pattern in SPURIOUS_PATTERNS: + match = pattern.search(line) + if match is not None: + return True + return False + + def FilterCompilerOutput(compiler_output, relative_paths): """Filers actool compilation output. @@ -49,8 +67,8 @@ com.apple.actool.document.warnings sections (as spurious messages comes before any section of the output). - See crbug.com/730054 and crbug.com/739163 for some example messages that - pollute the output of actool and cause flaky builds. + See crbug.com/730054, crbug.com/739163 and crbug.com/770634 for some example + messages that pollute the output of actool and cause flaky builds. Args: compiler_output: string containing the output generated by the @@ -67,18 +85,23 @@ filtered_output = [] current_section = None + data_in_section = False for line in compiler_output.splitlines(): match = SECTION_HEADER.search(line) if match is not None: + data_in_section = False current_section = match.group(1) - if current_section != NOTICE_SECTION: - filtered_output.append(line + '\n') continue if current_section and current_section != NOTICE_SECTION: + if IsSpuriousMessage(line): + continue absolute_path = line.split(':')[0] relative_path = relative_paths.get(absolute_path, absolute_path) if absolute_path != relative_path: line = relative_path + line[len(absolute_path):] + if not data_in_section: + data_in_section = True + filtered_output.append('/* %s */\n' % current_section) filtered_output.append(line + '\n') return ''.join(filtered_output)
diff --git a/build/toolchain/mac/compile_xcassets_unittests.py b/build/toolchain/mac/compile_xcassets_unittests.py index 6fa41ab..7655df8c 100644 --- a/build/toolchain/mac/compile_xcassets_unittests.py +++ b/build/toolchain/mac/compile_xcassets_unittests.py
@@ -64,6 +64,21 @@ '/* com.apple.actool.compilation-results */\n', self.relative_paths)) + def testSpurious(self): + self.assertEquals( + '/* com.apple.actool.document.warnings */\n' + '../../Chromium.xcassets:./AppIcon.appiconset: warning: A 1024x1024 ap' + 'p store icon is required for iOS apps\n', + compile_xcassets.FilterCompilerOutput( + '/* com.apple.actool.document.warnings */\n' + '/Users/janedoe/chromium/src/Chromium.xcassets:./AppIcon.appiconse' + 't: warning: A 1024x1024 app store icon is required for iOS ap' + 'ps\n' + '/* com.apple.actool.document.notices */\n' + '/Users/janedoe/chromium/src/Chromium.xcassets:./AppIcon.appiconse' + 't/[][ipad][76x76][][][1x][][]: notice: (null)\n', + self.relative_paths)) + def testComplexError(self): self.assertEquals( '/* com.apple.actool.errors */\n'
diff --git a/cc/animation/animation_host.cc b/cc/animation/animation_host.cc index 992ef5b..6f7fdc4e 100644 --- a/cc/animation/animation_host.cc +++ b/cc/animation/animation_host.cc
@@ -347,13 +347,6 @@ return true; } -base::Closure AnimationHost::TakeMutations() { - if (mutator_) - return mutator_->TakeMutations(); - - return base::Closure(); -} - std::unique_ptr<MutatorEvents> AnimationHost::CreateEvents() { return std::make_unique<AnimationEvents>(); }
diff --git a/cc/animation/animation_host.h b/cc/animation/animation_host.h index 1ada563..c2381fb 100644 --- a/cc/animation/animation_host.h +++ b/cc/animation/animation_host.h
@@ -105,8 +105,6 @@ bool UpdateAnimationState(bool start_ready_animations, MutatorEvents* events) override; - base::Closure TakeMutations() override; - std::unique_ptr<MutatorEvents> CreateEvents() override; void SetAnimationEvents(std::unique_ptr<MutatorEvents> events) override;
diff --git a/cc/test/cc_test_suite.cc b/cc/test/cc_test_suite.cc index 1d997c9..bda6256 100644 --- a/cc/test/cc_test_suite.cc +++ b/cc/test/cc_test_suite.cc
@@ -18,11 +18,10 @@ void CCTestSuite::Initialize() { base::TestSuite::Initialize(); + message_loop_ = std::make_unique<base::MessageLoop>(); gl::GLSurfaceTestSupport::InitializeOneOff(); viz::Paths::RegisterPathProvider(); - message_loop_.reset(new base::MessageLoop); - base::ThreadIdNameManager::GetInstance()->SetName( base::PlatformThread::CurrentId(), "Main");
diff --git a/cc/test/pixel_test.cc b/cc/test/pixel_test.cc index d24650f49..da67f14 100644 --- a/cc/test/pixel_test.cc +++ b/cc/test/pixel_test.cc
@@ -11,6 +11,7 @@ #include "base/threading/thread_task_runner_handle.h" #include "cc/base/switches.h" #include "cc/raster/raster_buffer_provider.h" +#include "cc/resources/layer_tree_resource_provider.h" #include "cc/resources/resource_provider.h" #include "cc/test/fake_output_surface_client.h" #include "cc/test/pixel_test_output_surface.h" @@ -175,6 +176,14 @@ settings_.enable_color_correct_rasterization, settings_.resource_settings); + child_context_provider_ = new TestInProcessContextProvider(nullptr); + child_context_provider_->BindToCurrentThread(); + child_resource_provider_ = std::make_unique<LayerTreeResourceProvider>( + child_context_provider_.get(), shared_bitmap_manager_.get(), + gpu_memory_buffer_manager_.get(), true, + settings_.enable_color_correct_rasterization, + settings_.resource_settings); + texture_mailbox_deleter_ = std::make_unique<viz::TextureMailboxDeleter>( base::ThreadTaskRunnerHandle::Get());
diff --git a/cc/test/pixel_test.h b/cc/test/pixel_test.h index 33a0437..4019aebf 100644 --- a/cc/test/pixel_test.h +++ b/cc/test/pixel_test.h
@@ -26,7 +26,9 @@ namespace cc { class DisplayResourceProvider; class FakeOutputSurfaceClient; +class LayerTreeResourceProvider; class OutputSurface; +class TestInProcessContextProvider; class TestSharedBitmapManager; class PixelTest : public testing::Test { @@ -66,6 +68,8 @@ std::unique_ptr<TestSharedBitmapManager> shared_bitmap_manager_; std::unique_ptr<viz::TestGpuMemoryBufferManager> gpu_memory_buffer_manager_; std::unique_ptr<DisplayResourceProvider> resource_provider_; + scoped_refptr<TestInProcessContextProvider> child_context_provider_; + std::unique_ptr<LayerTreeResourceProvider> child_resource_provider_; std::unique_ptr<viz::TextureMailboxDeleter> texture_mailbox_deleter_; std::unique_ptr<viz::DirectRenderer> renderer_; viz::SoftwareRenderer* software_renderer_ = nullptr;
diff --git a/cc/trees/layer_tree_host_impl.cc b/cc/trees/layer_tree_host_impl.cc index 62f7a1d..a446128 100644 --- a/cc/trees/layer_tree_host_impl.cc +++ b/cc/trees/layer_tree_host_impl.cc
@@ -3840,15 +3840,6 @@ SetNeedsRedraw(); } -std::unique_ptr<BeginFrameCallbackList> -LayerTreeHostImpl::ProcessLayerTreeMutations() { - std::unique_ptr<BeginFrameCallbackList> callbacks(new BeginFrameCallbackList); - const base::Closure& callback = mutator_host_->TakeMutations(); - if (!callback.is_null()) - callbacks->push_back(callback); - return callbacks; -} - static void CollectScrollDeltas(ScrollAndScaleSet* scroll_info, LayerTreeImpl* tree_impl) { if (tree_impl->LayerListIsEmpty())
diff --git a/cc/trees/layer_tree_host_impl.h b/cc/trees/layer_tree_host_impl.h index 571d6bac..f264898 100644 --- a/cc/trees/layer_tree_host_impl.h +++ b/cc/trees/layer_tree_host_impl.h
@@ -484,8 +484,6 @@ const gfx::Transform& DrawTransform() const; - std::unique_ptr<BeginFrameCallbackList> ProcessLayerTreeMutations(); - std::unique_ptr<ScrollAndScaleSet> ProcessScrollDeltas(); FrameRateCounter* fps_counter() { return fps_counter_.get(); } MemoryHistory* memory_history() { return memory_history_.get(); }
diff --git a/cc/trees/layer_tree_mutator.h b/cc/trees/layer_tree_mutator.h index 84fbeb5..b0e1e11 100644 --- a/cc/trees/layer_tree_mutator.h +++ b/cc/trees/layer_tree_mutator.h
@@ -27,10 +27,6 @@ // Returns true if the mutator should be rescheduled. virtual bool Mutate(base::TimeTicks now) = 0; virtual void SetClient(LayerTreeMutatorClient* client) = 0; - - // Returns a callback which is responsible for applying layer tree mutations - // to DOM elements. - virtual base::Closure TakeMutations() = 0; }; } // namespace cc
diff --git a/cc/trees/mutator_host.h b/cc/trees/mutator_host.h index bd055a7..992c641 100644 --- a/cc/trees/mutator_host.h +++ b/cc/trees/mutator_host.h
@@ -64,17 +64,6 @@ virtual bool UpdateAnimationState(bool start_ready_animations, MutatorEvents* events) = 0; - // Returns a callback which is responsible for applying layer tree mutations - // to DOM elements. The callback are transfered to main thread when we begin - // main frame and should only be invoked on the main thread. - // - // TODO(majidvp): http://crbug.com/756539 Eliminate this. Once we implement - // syncing animation local times from animation worklet to cc then we should - // not directly send mutations to main thread and eliminate of this method. - // Instead the animation local times should be send to main thread via - // existing cc->main plumbing for animations which is |SetAnimationEvents|. - virtual base::Closure TakeMutations() = 0; - virtual std::unique_ptr<MutatorEvents> CreateEvents() = 0; virtual void SetAnimationEvents(std::unique_ptr<MutatorEvents> events) = 0;
diff --git a/cc/trees/proxy_common.h b/cc/trees/proxy_common.h index 200b8eab..3d82f01 100644 --- a/cc/trees/proxy_common.h +++ b/cc/trees/proxy_common.h
@@ -22,7 +22,6 @@ unsigned int begin_frame_id = 0; viz::BeginFrameArgs begin_frame_args; - std::unique_ptr<BeginFrameCallbackList> begin_frame_callbacks; std::unique_ptr<ScrollAndScaleSet> scroll_info; size_t memory_allocation_limit_bytes = 0; bool evicted_ui_resources = false;
diff --git a/cc/trees/proxy_impl.cc b/cc/trees/proxy_impl.cc index daeb884..508ad01 100644 --- a/cc/trees/proxy_impl.cc +++ b/cc/trees/proxy_impl.cc
@@ -506,8 +506,6 @@ new BeginMainFrameAndCommitState); begin_main_frame_state->begin_frame_id = begin_frame_id; begin_main_frame_state->begin_frame_args = args; - begin_main_frame_state->begin_frame_callbacks = - host_impl_->ProcessLayerTreeMutations(); begin_main_frame_state->scroll_info = host_impl_->ProcessScrollDeltas(); begin_main_frame_state->evicted_ui_resources = host_impl_->EvictedUIResourcesExist();
diff --git a/cc/trees/proxy_main.cc b/cc/trees/proxy_main.cc index 7fb5a2d..c0e8699 100644 --- a/cc/trees/proxy_main.cc +++ b/cc/trees/proxy_main.cc
@@ -177,11 +177,6 @@ layer_tree_host_->ApplyScrollAndScale( begin_main_frame_state->scroll_info.get()); - if (begin_main_frame_state->begin_frame_callbacks) { - for (auto& callback : *begin_main_frame_state->begin_frame_callbacks) - callback.Run(); - } - layer_tree_host_->WillBeginMainFrame(); // See LayerTreeHostClient::BeginMainFrame for more documentation on
diff --git a/chrome/android/java/res/layout/content_suggestions_action_card_modern.xml b/chrome/android/java/res/layout/content_suggestions_action_card_modern.xml index e7c0e41..d845cf76 100644 --- a/chrome/android/java/res/layout/content_suggestions_action_card_modern.xml +++ b/chrome/android/java/res/layout/content_suggestions_action_card_modern.xml
@@ -3,8 +3,7 @@ xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" - android:layout_height="wrap_content" - android:padding="8dp"> + android:layout_height="wrap_content"> <Button style="@style/SuggestionCardAction"
diff --git a/chrome/android/java/res/layout/content_suggestions_all_dismissed_card_modern.xml b/chrome/android/java/res/layout/content_suggestions_all_dismissed_card_modern.xml new file mode 100644 index 0000000..582a204 --- /dev/null +++ b/chrome/android/java/res/layout/content_suggestions_all_dismissed_card_modern.xml
@@ -0,0 +1,39 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- 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. --> + +<RelativeLayout + xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:chrome="http://schemas.android.com/apk/res-auto" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:padding="@dimen/snippets_padding" + android:paddingTop="0dp" + android:paddingBottom="4dp"> + + <ImageView + android:id="@+id/image" + android:layout_width="112dp" + android:layout_height="112dp" + android:layout_alignParentTop="true" + android:layout_centerHorizontal="true" + android:layout_marginBottom="18dp" + android:layout_marginStart="8dp" + android:layout_marginEnd="8dp" + android:contentDescription="@null" + android:importantForAccessibility="no" + android:src="@drawable/ntp_all_dismissed_white" /> + + <org.chromium.ui.widget.TextViewWithLeading + android:id="@+id/body_text" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_below="@id/image" + android:layout_alignParentStart="true" + android:gravity="center_horizontal" + android:text="@string/ntp_all_dismissed_body_text_morning" + android:textSize="14sp" + android:textColor="@color/snippets_text_color" + chrome:leading="20dp" /> +</RelativeLayout>
diff --git a/chrome/android/java/res/layout/new_tab_page_all_dismissed.xml b/chrome/android/java/res/layout/new_tab_page_all_dismissed.xml index 63219aa0..17277293 100644 --- a/chrome/android/java/res/layout/new_tab_page_all_dismissed.xml +++ b/chrome/android/java/res/layout/new_tab_page_all_dismissed.xml
@@ -21,7 +21,8 @@ android:layout_marginStart="8dp" android:layout_marginEnd="8dp" android:contentDescription="@null" - android:importantForAccessibility="no" /> + android:importantForAccessibility="no" + android:src="@drawable/ntp_all_dismissed_gray" /> <org.chromium.ui.widget.TextViewWithLeading android:id="@+id/title_text" @@ -60,4 +61,4 @@ android:textColor="@color/light_active_color" android:textSize="15sp" /> -</RelativeLayout> +</RelativeLayout> \ No newline at end of file
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/cards/AllDismissedItem.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/cards/AllDismissedItem.java index 65e65a0..2171b9a 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/cards/AllDismissedItem.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/cards/AllDismissedItem.java
@@ -4,12 +4,10 @@ package org.chromium.chrome.browser.ntp.cards; +import android.support.annotation.LayoutRes; import android.support.annotation.StringRes; import android.view.LayoutInflater; -import android.view.View; import android.view.ViewGroup; -import android.widget.Button; -import android.widget.ImageView; import android.widget.TextView; import org.chromium.chrome.R; @@ -32,7 +30,7 @@ @Override public void onBindViewHolder(NewTabPageViewHolder holder) { - ((ViewHolder) holder).onBindViewHolder(); + ((ViewHolder) holder).onBindViewHolder(Calendar.getInstance().get(Calendar.HOUR_OF_DAY)); } @Override @@ -51,42 +49,37 @@ private final TextView mBodyTextView; public ViewHolder(ViewGroup root, final SectionList sections) { - super(LayoutInflater.from(root.getContext()) - .inflate(R.layout.new_tab_page_all_dismissed, root, false)); + super(LayoutInflater.from(root.getContext()).inflate(getLayout(), root, false)); mBodyTextView = itemView.findViewById(R.id.body_text); - Button refreshButton = itemView.findViewById(R.id.action_button); - ImageView backgroundView = itemView.findViewById(R.id.image); - if (FeatureUtilities.isChromeHomeEnabled()) { - ((ViewGroup) itemView).removeView(refreshButton); - - // Hide the view instead of removing it, because it is used to layout subsequent - // views. - itemView.findViewById(R.id.title_text).setVisibility(View.GONE); - backgroundView.setImageResource(R.drawable.ntp_all_dismissed_white); - } else { - refreshButton.setOnClickListener(v -> { + if (!FeatureUtilities.isChromeHomeEnabled()) { + itemView.findViewById(R.id.action_button).setOnClickListener(v -> { NewTabPageUma.recordAction(NewTabPageUma.ACTION_CLICKED_ALL_DISMISSED_REFRESH); sections.restoreDismissedSections(); }); - backgroundView.setImageResource(R.drawable.ntp_all_dismissed_gray); } } - public void onBindViewHolder() { - int hour = Calendar.getInstance().get(Calendar.HOUR_OF_DAY); + public void onBindViewHolder(int hourOfDay) { @StringRes final int messageId; if (FeatureUtilities.isChromeHomeEnabled()) { messageId = R.string.ntp_all_dismissed_body_text_modern; - } else if (hour >= 0 && hour < 12) { + } else if (hourOfDay >= 0 && hourOfDay < 12) { messageId = R.string.ntp_all_dismissed_body_text_morning; - } else if (hour >= 12 && hour < 17) { + } else if (hourOfDay >= 12 && hourOfDay < 17) { messageId = R.string.ntp_all_dismissed_body_text_afternoon; } else { messageId = R.string.ntp_all_dismissed_body_text_evening; } mBodyTextView.setText(messageId); } + + @LayoutRes + private static int getLayout() { + return FeatureUtilities.isChromeHomeEnabled() + ? R.layout.content_suggestions_all_dismissed_card_modern + : R.layout.new_tab_page_all_dismissed; + } } }
diff --git a/chrome/android/java_sources.gni b/chrome/android/java_sources.gni index 7be267d..4849498 100644 --- a/chrome/android/java_sources.gni +++ b/chrome/android/java_sources.gni
@@ -1554,6 +1554,7 @@ "javatests/src/org/chromium/chrome/browser/ntp/NtpUiCaptureTestData.java", "javatests/src/org/chromium/chrome/browser/ntp/RecentTabsPageTest.java", "javatests/src/org/chromium/chrome/browser/ntp/cards/NewTabPageRecyclerViewTest.java", + "javatests/src/org/chromium/chrome/browser/ntp/cards/AllDismissedItemTest.java", "javatests/src/org/chromium/chrome/browser/ntp/snippets/ArticleSnippetsTest.java", "javatests/src/org/chromium/chrome/browser/infobar/InfoBarAppearanceTest.java", "javatests/src/org/chromium/chrome/browser/offlinepages/OfflinePageBridgeTest.java",
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/PopupTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/PopupTest.java index b46fccc..b16ae945 100644 --- a/chrome/android/javatests/src/org/chromium/chrome/browser/PopupTest.java +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/PopupTest.java
@@ -18,6 +18,7 @@ import org.chromium.base.ThreadUtils; import org.chromium.base.test.util.CommandLineFlags; import org.chromium.base.test.util.Feature; +import org.chromium.base.test.util.FlakyTest; import org.chromium.base.test.util.RetryOnFailure; import org.chromium.chrome.R; import org.chromium.chrome.browser.infobar.InfoBar; @@ -80,6 +81,7 @@ @Test @MediumTest @Feature({"Popup"}) + @FlakyTest(message = "crbug.com/771103") public void testPopupWindowsAppearWhenAllowed() throws Exception { final TabModelSelector selector = mActivityTestRule.getActivity().getTabModelSelector();
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/ntp/cards/AllDismissedItemTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/ntp/cards/AllDismissedItemTest.java new file mode 100644 index 0000000..baea0808 --- /dev/null +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/ntp/cards/AllDismissedItemTest.java
@@ -0,0 +1,95 @@ +// 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.ntp.cards; + +import android.support.test.filters.MediumTest; +import android.widget.FrameLayout; + +import org.junit.Before; +import org.junit.Rule; +import org.junit.Test; +import org.junit.rules.TestRule; +import org.junit.runner.RunWith; + +import org.chromium.base.ThreadUtils; +import org.chromium.base.test.util.CommandLineFlags; +import org.chromium.base.test.util.Feature; +import org.chromium.chrome.browser.ChromeActivity; +import org.chromium.chrome.browser.ChromeSwitches; +import org.chromium.chrome.browser.ntp.cards.AllDismissedItem.ViewHolder; +import org.chromium.chrome.test.ChromeActivityTestRule; +import org.chromium.chrome.test.ChromeJUnit4ClassRunner; +import org.chromium.chrome.test.util.RenderTestRule; +import org.chromium.chrome.test.util.browser.ChromeHome; + +import java.io.IOException; + + +/** + * Tests for the appearance and behaviour of AllDismissedItem. + */ +@RunWith(ChromeJUnit4ClassRunner.class) +@CommandLineFlags.Add({ + ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE, + ChromeActivityTestRule.DISABLE_NETWORK_PREDICTION_FLAG +}) +public class AllDismissedItemTest { + @Rule + public ChromeActivityTestRule<ChromeActivity> mActivityTestRule = + new ChromeActivityTestRule<>(ChromeActivity.class); + + @Rule + public RenderTestRule mRenderTestRule = new RenderTestRule(); + + @Rule + public TestRule mChromeHomeStateRule = new ChromeHome.Processor(); + + private FrameLayout mContentView; + + @Before + public void setUp() throws Exception { + mActivityTestRule.startMainActivityOnBlankPage(); + + ThreadUtils.runOnUiThreadBlocking(() -> { + mContentView = new FrameLayout(mActivityTestRule.getActivity()); + mActivityTestRule.getActivity().setContentView(mContentView); + }); + } + + @Test + @MediumTest + @Feature({"Cards", "RenderTest"}) + @ChromeHome(false) + public void testNewTabPageAppearance() throws IOException { + SectionList sectionList = null; // The SectionList is only used if the item is clicked on. + ViewHolder viewHolder = new ViewHolder(mContentView, sectionList); + + renderAtHour(viewHolder, 9, "morning"); + renderAtHour(viewHolder, 14, "afternoon"); + renderAtHour(viewHolder, 20, "evening"); + } + + @Test + @MediumTest + @Feature({"Cards", "RenderTest"}) + @ChromeHome + public void testChromeHomeAppearance() throws IOException { + renderAtHour(new ViewHolder(mContentView, null), 0, "modern"); + } + + private void renderAtHour(ViewHolder viewHolder, int hour, String renderId) throws IOException { + // TODO(peconn): Extract common code between this and ArticleSnippetsTest for rendering + // views in isolation. + ThreadUtils.runOnUiThreadBlocking(() -> { + viewHolder.onBindViewHolder(hour); + mContentView.addView(viewHolder.itemView); + }); + mRenderTestRule.render(viewHolder.itemView, renderId); + ThreadUtils.runOnUiThreadBlocking(() -> { + mContentView.removeView(viewHolder.itemView); + viewHolder.recycle(); + }); + } +}
diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources.grd index cabb1930..a18c800 100644 --- a/chrome/app/generated_resources.grd +++ b/chrome/app/generated_resources.grd
@@ -9784,6 +9784,26 @@ <message name="IDS_CAMERA_BLOCKED" desc="Camera usage status text that is used as tooltip text for the location bar icon and as status text of the media settings bubble when a page is blocked from using the camera."> This page has been blocked from accessing your camera. </message> + + <message name="IDS_MICROPHONE_CAMERA_ALLOWED_TITLE" desc="Title for the media status bubble when a page is allowed to use the camera and microphone."> + Camera and microphone allowed + </message> + <message name="IDS_MICROPHONE_CAMERA_BLOCKED_TITLE" desc="Title for the media status bubble when a page is blocked from using the camera and microphone."> + Camera and microphone blocked + </message> + <message name="IDS_MICROPHONE_ACCESSED_TITLE" desc="Title for the media status bubble when a page is allowed to use the microphone."> + Microphone allowed + </message> + <message name="IDS_CAMERA_ACCESSED_TITLE" desc="Title for the media status bubble when a page is allowed to use the camera."> + Camera allowed + </message> + <message name="IDS_MICROPHONE_BLOCKED_TITLE" desc="Title for the media status bubble when a page is blocked from using the microphone."> + Microphone blocked + </message> + <message name="IDS_CAMERA_BLOCKED_TITLE" desc="Title for the media status bubble when a page is blocked from using the camera."> + Camera blocked + </message> + <message name="IDS_MEDIASTREAM_SETTING_CHANGED_MESSAGE" desc="Message that is used to suggest reloading when media (camera, microphone) settings was changed by the user. These settings are immediately effective, but the web page might not know how to deal with the new settings."> This page may need to be reloaded before the new settings take effect. </message>
diff --git a/chrome/app/vector_icons/BUILD.gn b/chrome/app/vector_icons/BUILD.gn index 23874a30..5cf04cd 100644 --- a/chrome/app/vector_icons/BUILD.gn +++ b/chrome/app/vector_icons/BUILD.gn
@@ -63,11 +63,6 @@ "navigate_home.icon", "navigate_stop.1x.icon", "navigate_stop.icon", - "notification_download.icon", - "notification_end_of_support.icon", - "notification_image.1x.icon", - "notification_image.icon", - "notification_installed.icon", "overflow_chevron.1x.icon", "overflow_chevron.icon", "paintbrush.icon", @@ -123,7 +118,11 @@ icons += [ "arc_migrate_encryption_notification.icon", "notification_captive_portal.icon", + "notification_download.icon", + "notification_end_of_support.icon", "notification_google.icon", + "notification_image.icon", + "notification_installed.icon", "notification_mobile_data.icon", "notification_play_prism.icon", "notification_printing.icon",
diff --git a/chrome/app/vector_icons/notification_captive_portal.icon b/chrome/app/vector_icons/notification_captive_portal.icon index 14321ff..74a3f8ae 100644 --- a/chrome/app/vector_icons/notification_captive_portal.icon +++ b/chrome/app/vector_icons/notification_captive_portal.icon
@@ -2,61 +2,62 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -CANVAS_DIMENSIONS, 36, -MOVE_TO, 17.99f, 23.8f, -R_H_LINE_TO, -2.66f, -R_CUBIC_TO, 0.54f, 1.79f, 1.58f, 3.5f, 2.66f, 4.81f, -V_LINE_TO, 32, -CUBIC_TO, 10.36f, 32, 4, 25.63f, 4, 18.01f, -CUBIC_TO, 4, 10.28f, 10.26f, 4, 17.99f, 4, -CUBIC_TO, 25.74f, 4, 32, 10.27f, 32, 18.01f, -R_H_LINE_TO, -2.81f, -R_CUBIC_TO, -0.03f, -0.87f, -0.11f, -1.36f, -0.34f, -2.35f, -R_H_LINE_TO, -4.74f, -R_CUBIC_TO, 0.11f, 1.02f, 0.2f, 1.27f, 0.2f, 2.35f, -R_CUBIC_TO, 0, 0, -3.18f, 0, -3.18f, 0, -R_CUBIC_TO, 0, -0.95f, -0.01f, -1.35f, -0.13f, -2.35f, -H_LINE_TO, 14.73f, -R_CUBIC_TO, -0.13f, 1.01f, -0.22f, 1.4f, -0.22f, 2.35f, -R_CUBIC_TO, 0, 0.95f, 0.1f, 1.41f, 0.22f, 2.33f, -R_H_LINE_TO, 3.26f, -R_V_LINE_TO, 3.46f, +CANVAS_DIMENSIONS, 96, +MOVE_TO, 88, 48, +R_H_LINE_TO, -8, +R_CUBIC_TO, 0, -2.76f, -0.4f, -5.44f, -1.04f, -8, +H_LINE_TO, 65.44f, +R_CUBIC_TO, 0.32f, 2.64f, 0.56f, 5.28f, 0.56f, 8, +R_H_LINE_TO, -8, +R_CUBIC_TO, 0, -2.72f, -0.28f, -5.4f, -0.64f, -8, +H_LINE_TO, 38.64f, +R_CUBIC_TO, -0.36f, 2.6f, -0.64f, 5.28f, -0.64f, 8, +R_CUBIC_TO, 0, 2.72f, 0.28f, 5.36f, 0.64f, 8, +H_LINE_TO, 48, +R_V_LINE_TO, 8, +R_H_LINE_TO, -7.64f, +R_CUBIC_TO, 1.72f, 5.72f, 4.32f, 11.04f, 7.64f, 15.84f, +V_LINE_TO, 88, +R_H_LINE_TO, -0.04f, +CUBIC_TO, 25.88f, 88, 8, 70.08f, 8, 48, +CUBIC_TO_SHORTHAND, 25.88f, 8, 47.96f, 8, +CUBIC_TO, 70.08f, 8, 88, 25.92f, 88, 48, CLOSE, -R_MOVE_TO, -9.68f, -11.63f, -R_H_LINE_TO, 4.13f, -R_CUBIC_TO, 0.45f, -1.73f, 1.09f, -3.1f, 1.93f, -4.63f, -R_CUBIC_TO, -2.58f, 0.87f, -4.72f, 2.34f, -6.07f, 4.63f, +MOVE_TO, 75.68f, 32, +R_CUBIC_TO, -3.84f, -6.6f, -9.96f, -11.72f, -17.32f, -14.24f, +CUBIC_TO, 60.76f, 22.2f, 62.6f, 27, 63.88f, 32, +R_H_LINE_TO, 11.8f, CLOSE, -R_MOVE_TO, 15.26f, 0, -R_H_LINE_TO, 4.13f, -R_CUBIC_TO, -1.34f, -2.31f, -3.49f, -3.87f, -6.06f, -4.76f, -R_CUBIC_TO, 0.84f, 1.56f, 1.49f, 3.01f, 1.94f, 4.76f, +MOVE_TO, 48, 16.16f, +R_CUBIC_TO, -3.32f, 4.8f, -5.92f, 10.12f, -7.64f, 15.84f, +R_H_LINE_TO, 15.28f, +R_CUBIC_TO, -1.72f, -5.72f, -4.32f, -11.04f, -7.64f, -15.84f, CLOSE, -R_MOVE_TO, -2.89f, 0, -R_CUBIC_TO, -0.6f, -2.06f, -1.51f, -3.63f, -2.68f, -5.32f, -R_CUBIC_TO, -1.16f, 1.68f, -2.07f, 3.26f, -2.65f, 5.32f, -R_H_LINE_TO, 5.32f, +MOVE_TO, 17.04f, 56, +R_H_LINE_TO, 13.52f, +R_CUBIC_TO, -0.32f, -2.64f, -0.56f, -5.28f, -0.56f, -8, +R_CUBIC_TO, 0, -2.72f, 0.24f, -5.36f, 0.56f, -8, +H_LINE_TO, 17.04f, +CUBIC_TO, 16.4f, 42.56f, 16, 45.24f, 16, 48, +R_CUBIC_TO, 0, 2.76f, 0.4f, 5.44f, 1.04f, 8, CLOSE, -R_MOVE_TO, -8.24f, 11.64f, -H_LINE_TO, 8.31f, -R_CUBIC_TO, 1.35f, 2.32f, 3.62f, 4.21f, 6.19f, 5.1f, -R_CUBIC_TO, -0.84f, -1.55f, -1.61f, -3.35f, -2.06f, -5.1f, +R_MOVE_TO, 3.28f, 8, +R_CUBIC_TO, 3.84f, 6.64f, 9.96f, 11.72f, 17.32f, 14.24f, +CUBIC_TO, 35.24f, 73.8f, 33.4f, 69, 32.12f, 64, +R_H_LINE_TO, -11.8f, CLOSE, -R_MOVE_TO, -5.28f, -3.47f, -R_H_LINE_TO, 4.74f, -R_CUBIC_TO, -0.11f, -0.87f, -0.19f, -1.3f, -0.19f, -2.2f, -R_CUBIC_TO, 0, -0.9f, 0.08f, -1.61f, 0.2f, -2.48f, -H_LINE_TO, 7.17f, -R_CUBIC_TO, -0.22f, 0.85f, -0.36f, 1.57f, -0.36f, 2.48f, -R_CUBIC_TO, 0, 0.91f, 0.14f, 1.36f, 0.36f, 2.2f, +R_MOVE_TO, 11.8f, -32, +R_CUBIC_TO, 1.28f, -5, 3.12f, -9.8f, 5.52f, -14.24f, +R_CUBIC_TO, -7.36f, 2.52f, -13.48f, 7.6f, -17.32f, 14.24f, +R_H_LINE_TO, 11.8f, CLOSE, -R_MOVE_TO, 19.85f, 10.49f, -LINE_TO, 23.2f, 27.02f, -LINE_TO, 20, 30, -V_LINE_TO, 20, -R_H_LINE_TO, 10, -R_LINE_TO, -2.98f, 3.2f, -R_LINE_TO, 3.82f, 3.82f, -R_LINE_TO, -3.82f, 3.82f, +R_MOVE_TO, 43.64f, 54.67f, +LINE_TO, 64.85f, 75.76f, +LINE_TO, 56, 84, +V_LINE_TO, 56, +R_H_LINE_TO, 28, +R_LINE_TO, -8.24f, 8.85f, +LINE_TO, 86.67f, 75.76f, +LINE_TO, 75.76f, 86.67f, CLOSE, END
diff --git a/chrome/app/vector_icons/notification_download.icon b/chrome/app/vector_icons/notification_download.icon index 2c58b36a..6112097 100644 --- a/chrome/app/vector_icons/notification_download.icon +++ b/chrome/app/vector_icons/notification_download.icon
@@ -2,20 +2,20 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -CANVAS_DIMENSIONS, 36, -MOVE_TO, 28, 14, -R_H_LINE_TO, -6, -V_LINE_TO, 6, -R_H_LINE_TO, -8, -R_V_LINE_TO, 8, -H_LINE_TO, 8, -R_LINE_TO, 10, 10, -R_LINE_TO, 10, -10, +CANVAS_DIMENSIONS, 96, +MOVE_TO, 76, 36, +H_LINE_TO, 60, +V_LINE_TO, 12, +H_LINE_TO, 36, +R_V_LINE_TO, 24, +H_LINE_TO, 20, +R_LINE_TO, 28, 28, +R_LINE_TO, 28, -28, CLOSE, -MOVE_TO, 8, 26, -R_V_LINE_TO, 4, -R_H_LINE_TO, 20, -R_V_LINE_TO, -4, -H_LINE_TO, 8, +MOVE_TO, 20, 72, +R_V_LINE_TO, 8, +R_H_LINE_TO, 56, +R_V_LINE_TO, -8, +H_LINE_TO, 20, CLOSE, END
diff --git a/chrome/app/vector_icons/notification_end_of_support.icon b/chrome/app/vector_icons/notification_end_of_support.icon index 60df3ef1..78502ea 100644 --- a/chrome/app/vector_icons/notification_end_of_support.icon +++ b/chrome/app/vector_icons/notification_end_of_support.icon
@@ -2,43 +2,43 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -CANVAS_DIMENSIONS, 36, -MOVE_TO, 27.32f, 4.99f, -R_CUBIC_TO, 1.42f, 1.02f, 2.67f, 2.27f, 3.69f, 3.69f, -CUBIC_TO, 32.88f, 11.3f, 34, 14.5f, 34, 17.96f, -R_CUBIC_TO, 0, 3.47f, -1.12f, 6.67f, -3.01f, 9.31f, -R_LINE_TO, -7.31f, -7.31f, -R_H_LINE_TO, 2.34f, -LINE_TO, 18.04f, 9.98f, -R_LINE_TO, -1.93f, 2.41f, -CUBIC_TO_SHORTHAND, 8.76f, 5, 8.77f, 4.99f, -CUBIC_TO, 11.38f, 3.12f, 14.58f, 2, 18.04f, 2, -R_CUBIC_TO, 3.47f, 0, 6.66f, 1.12f, 9.28f, 2.99f, +CANVAS_DIMENSIONS, 96, +MOVE_TO, 71.34f, 15.46f, +R_CUBIC_TO, 3.55f, 2.54f, 6.65f, 5.65f, 9.2f, 9.2f, +R_CUBIC_TO, 4.68f, 6.52f, 7.46f, 14.5f, 7.46f, 23.14f, +CUBIC_TO, 88, 56.44f, 85.22f, 64.42f, 80.49f, 71, +LINE_TO, 62, 53, +R_H_LINE_TO, 6, +LINE_TO, 48.2f, 27.9f, +R_LINE_TO, -4.8f, 6.01f, +CUBIC_TO_SHORTHAND, 25.04f, 15.48f, 25.06f, 15.46f, +CUBIC_TO, 31.59f, 10.79f, 39.56f, 8, 48.2f, 8, +R_CUBIC_TO, 8.64f, 0, 16.61f, 2.79f, 23.14f, 7.46f, CLOSE, -R_MOVE_TO, 3.67f, 25.94f, -R_LINE_TO, 1.25f, 1.25f, -LINE_TO, 30.43f, 34, -R_LINE_TO, -3.11f, -3.07f, -R_CUBIC_TO, -2.61f, 1.88f, -5.81f, 2.99f, -9.28f, 2.99f, -R_CUBIC_TO, -3.46f, 0, -6.66f, -1.12f, -9.28f, -2.99f, -R_CUBIC_TO, -1.42f, -1.02f, -2.67f, -2.27f, -3.69f, -3.69f, -R_CUBIC_TO, -1.87f, -2.62f, -2.99f, -5.81f, -2.99f, -9.28f, -R_CUBIC_TO, 0, -3.47f, 1.12f, -6.66f, 2.99f, -9.32f, -LINE_TO, 2, 5.56f, -R_LINE_TO, 1.81f, -1.82f, -LINE_TO, 5.08f, 5.01f, -R_LINE_TO, 1.68f, 1.68f, -R_LINE_TO, 7.74f, 7.74f, -R_LINE_TO, 7.54f, 7.51f, -R_LINE_TO, 7.3f, 7.3f, -R_LINE_TO, 1.66f, 1.69f, +R_MOVE_TO, 9.51f, 64.84f, +LINE_TO, 84, 83.44f, +LINE_TO, 79.44f, 88, +R_LINE_TO, -7.81f, -7.7f, +R_CUBIC_TO, -6.57f, 4.72f, -14.61f, 7.52f, -23.31f, 7.52f, +R_CUBIC_TO, -8.71f, 0, -16.74f, -2.8f, -23.31f, -7.52f, +R_CUBIC_TO, -3.57f, -2.56f, -6.7f, -5.69f, -9.27f, -9.26f, +R_CUBIC_TO, -4.71f, -6.57f, -7.52f, -14.61f, -7.52f, -23.31f, +R_CUBIC_TO, 0, -8.71f, 2.8f, -16.74f, 7.52f, -23.42f, +LINE_TO, 8, 16.56f, +LINE_TO, 12.56f, 12, +R_LINE_TO, 3.18f, 3.18f, +R_LINE_TO, 4.21f, 4.21f, +LINE_TO, 39.39f, 38.83f, +R_LINE_TO, 18.95f, 18.87f, +LINE_TO, 76.69f, 76.05f, +R_LINE_TO, 4.17f, 4.25f, CLOSE, -R_MOVE_TO, -9.12f, -4.8f, -V_LINE_TO, 25.6f, -R_LINE_TO, -8.99f, -9.16f, -R_LINE_TO, -2.81f, 3.52f, -R_H_LINE_TO, 3.91f, -R_V_LINE_TO, 6.18f, -R_H_LINE_TO, 7.89f, +MOVE_TO, 57, 68, +R_V_LINE_TO, -1.33f, +LINE_TO, 34.91f, 44, +LINE_TO, 28, 53, +R_H_LINE_TO, 9, +R_V_LINE_TO, 15, +R_H_LINE_TO, 20, CLOSE, END
diff --git a/chrome/app/vector_icons/notification_google.icon b/chrome/app/vector_icons/notification_google.icon index fab0223..42135ac 100644 --- a/chrome/app/vector_icons/notification_google.icon +++ b/chrome/app/vector_icons/notification_google.icon
@@ -2,26 +2,26 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -CANVAS_DIMENSIONS, 18, -MOVE_TO, 9, 1, -CUBIC_TO, 4.58f, 1, 1, 4.58f, 1, 9, -R_CUBIC_TO, 0, 4.42f, 3.58f, 8, 8, 8, -R_CUBIC_TO, 4.42f, 0, 8, -3.58f, 8, -8, -R_CUBIC_TO, 0, -4.42f, -3.58f, -8, -8, -8, +CANVAS_DIMENSIONS, 96, +MOVE_TO, 48, 8, +R_CUBIC_TO, 22.09f, 0, 40, 17.91f, 40, 40, +CUBIC_TO_SHORTHAND, 70.09f, 88, 48, 88, +CUBIC_TO_SHORTHAND, 8, 70.09f, 8, 48, +CUBIC_TO_SHORTHAND, 25.91f, 8, 48, 8, CLOSE, -MOVE_TO, 9.11f, 14.5f, -CUBIC_TO, 6.01f, 14.5f, 3.5f, 12.04f, 3.5f, 9, -R_CUBIC_TO, 0, -3.04f, 2.51f, -5.5f, 5.61f, -5.5f, -R_CUBIC_TO, 1.51f, 0, 2.78f, 0.55f, 3.75f, 1.43f, -R_LINE_TO, -1.61f, 1.58f, -R_CUBIC_TO, -0.58f, -0.54f, -1.32f, -0.82f, -2.14f, -0.82f, -CUBIC_TO, 7.28f, 5.69f, 5.8f, 7.21f, 5.8f, 9, -R_CUBIC_TO, 0, 1.8f, 1.49f, 3.31f, 3.32f, 3.31f, -R_CUBIC_TO, 1.66f, 0, 2.79f, -0.93f, 3.02f, -2.21f, -H_LINE_TO, 9.11f, -V_LINE_TO, 7.99f, -R_H_LINE_TO, 5.29f, -R_CUBIC_TO, 0.07f, 0.36f, 0.1f, 0.74f, 0.1f, 1.13f, -R_CUBIC_TO, 0, 3.14f, -2.15f, 5.38f, -5.39f, 5.38f, +MOVE_TO, 20, 48, +R_CUBIC_TO, 0, 15.46f, 12.79f, 28, 28.57f, 28, +CUBIC_TO, 65.07f, 76, 76, 64.63f, 76, 48.64f, +R_CUBIC_TO, 0, -2, -0.19f, -3.92f, -0.52f, -5.77f, +LINE_TO, 49, 43, +R_V_LINE_TO, 10, +R_H_LINE_TO, 15, +R_CUBIC_TO, -1.17f, 6.52f, -6.97f, 11.86f, -15.43f, 11.86f, +R_CUBIC_TO, -9.32f, 0, -16.89f, -7.72f, -16.89f, -16.86f, +R_CUBIC_TO, 0, -9.13f, 7.56f, -16.86f, 16.88f, -16.86f, +R_CUBIC_TO, 4.19f, 0, 7.96f, 1.42f, 10.92f, 4.18f, +R_LINE_TO, 8.19f, -8.03f, +CUBIC_TO, 62.74f, 22.78f, 56.28f, 20, 48.57f, 20, +CUBIC_TO, 32.79f, 20, 20, 32.54f, 20, 48, CLOSE, END
diff --git a/chrome/app/vector_icons/notification_image.1x.icon b/chrome/app/vector_icons/notification_image.1x.icon deleted file mode 100644 index 86e4d71b..0000000 --- a/chrome/app/vector_icons/notification_image.1x.icon +++ /dev/null
@@ -1,23 +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. - -CANVAS_DIMENSIONS, 18, -MOVE_TO, 16, 14.44f, -V_LINE_TO, 3.56f, -CUBIC_TO, 16, 2.7f, 15.3f, 2, 14.44f, 2, -H_LINE_TO, 3.56f, -CUBIC_TO, 2.7f, 2, 2, 2.7f, 2, 3.56f, -R_V_LINE_TO, 10.89f, -CUBIC_TO, 2, 15.3f, 2.7f, 16, 3.56f, 16, -R_H_LINE_TO, 10.89f, -CUBIC_TO, 15.3f, 16, 16, 15.3f, 16, 14.44f, -CLOSE, -MOVE_TO, 6.5f, 10.25f, -R_LINE_TO, 1.79f, 2.51f, -LINE_TO, 10.79f, 9, -LINE_TO, 14, 14, -H_LINE_TO, 4, -R_LINE_TO, 2.5f, -3.75f, -CLOSE, -END
diff --git a/chrome/app/vector_icons/notification_image.icon b/chrome/app/vector_icons/notification_image.icon index 5e28a4f..b698f4c 100644 --- a/chrome/app/vector_icons/notification_image.icon +++ b/chrome/app/vector_icons/notification_image.icon
@@ -2,22 +2,22 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -CANVAS_DIMENSIONS, 36, -MOVE_TO, 32, 28.89f, -V_LINE_TO, 7.11f, -CUBIC_TO, 32, 5.4f, 30.6f, 4, 28.89f, 4, -H_LINE_TO, 7.11f, -CUBIC_TO, 5.4f, 4, 4, 5.4f, 4, 7.11f, -R_V_LINE_TO, 21.78f, -CUBIC_TO, 4, 30.6f, 5.4f, 32, 7.11f, 32, -R_H_LINE_TO, 21.78f, -CUBIC_TO, 30.6f, 32, 32, 30.6f, 32, 28.89f, +CANVAS_DIMENSIONS, 96, +MOVE_TO, 84, 76, +V_LINE_TO, 20, +R_CUBIC_TO, 0, -4.4f, -3.6f, -8, -8, -8, +H_LINE_TO, 20, +R_CUBIC_TO, -4.4f, 0, -8, 3.6f, -8, 8, +R_V_LINE_TO, 56, +R_CUBIC_TO, 0, 4.4f, 3.6f, 8, 8, 8, +R_H_LINE_TO, 56, +R_CUBIC_TO, 4.4f, 0, 8, -3.6f, 8, -8, CLOSE, -MOVE_TO, 13, 20.5f, -R_LINE_TO, 3.57f, 5.02f, -R_LINE_TO, 5, -7.52f, -LINE_TO, 28, 28, -H_LINE_TO, 8, -R_LINE_TO, 5, -7.5f, +MOVE_TO, 34, 54, +R_LINE_TO, 10, 12.04f, +LINE_TO, 58, 48, +R_LINE_TO, 18, 24, +H_LINE_TO, 20, +R_LINE_TO, 14, -18, CLOSE, END
diff --git a/chrome/app/vector_icons/notification_installed.icon b/chrome/app/vector_icons/notification_installed.icon index c53b34f..348d1db 100644 --- a/chrome/app/vector_icons/notification_installed.icon +++ b/chrome/app/vector_icons/notification_installed.icon
@@ -2,19 +2,19 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -CANVAS_DIMENSIONS, 36, -MOVE_TO, 18, 2, -CUBIC_TO, 9.17f, 2, 2, 9.17f, 2, 18, -R_CUBIC_TO, 0, 8.83f, 7.17f, 16, 16, 16, -R_CUBIC_TO, 8.83f, 0, 16, -7.17f, 16, -16, -CUBIC_TO_SHORTHAND, 26.83f, 2, 18, 2, +CANVAS_DIMENSIONS, 96, +MOVE_TO, 48, 8, +CUBIC_TO, 25.92f, 8, 8, 25.92f, 8, 48, +R_CUBIC_TO, 0, 22.08f, 17.92f, 40, 40, 40, +R_CUBIC_TO, 22.08f, 0, 40, -17.92f, 40, -40, +CUBIC_TO_SHORTHAND, 70.08f, 8, 48, 8, CLOSE, -R_MOVE_TO, -3.2f, 24, -R_LINE_TO, -8, -8, -R_LINE_TO, 2.26f, -2.26f, -R_LINE_TO, 5.74f, 5.73f, -LINE_TO, 26.94f, 9.33f, -LINE_TO, 29.2f, 11.6f, -LINE_TO, 14.8f, 26, +R_MOVE_TO, -8, 60, +LINE_TO, 20, 48, +R_LINE_TO, 5.64f, -5.64f, +LINE_TO, 40, 56.68f, +R_LINE_TO, 30.36f, -30.36f, +LINE_TO, 76, 32, +LINE_TO, 40, 68, CLOSE, END
diff --git a/chrome/app/vector_icons/notification_mobile_data.icon b/chrome/app/vector_icons/notification_mobile_data.icon index 9d61e2b1..7ab9e42 100644 --- a/chrome/app/vector_icons/notification_mobile_data.icon +++ b/chrome/app/vector_icons/notification_mobile_data.icon
@@ -2,9 +2,9 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -CANVAS_DIMENSIONS, 18, -MOVE_TO, 2, 16, -R_H_LINE_TO, 14, -V_LINE_TO, 2, +CANVAS_DIMENSIONS, 96, +MOVE_TO, 12, 84, +R_H_LINE_TO, 72, +V_LINE_TO, 12, CLOSE, END
diff --git a/chrome/app/vector_icons/notification_play_prism.icon b/chrome/app/vector_icons/notification_play_prism.icon index 0cbd9db..f7293f99 100644 --- a/chrome/app/vector_icons/notification_play_prism.icon +++ b/chrome/app/vector_icons/notification_play_prism.icon
@@ -2,36 +2,36 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -CANVAS_DIMENSIONS, 18, -MOVE_TO, 15.36f, 8.1f, -R_LINE_TO, -2.38f, -1.39f, -LINE_TO, 10.76f, 9, -R_LINE_TO, 2.22f, 2.29f, -R_LINE_TO, 2.38f, -1.39f, -CUBIC_TO, 15.79f, 9.65f, 16, 9.33f, 16, 9, -R_CUBIC_TO, 0, -0.33f, -0.21f, -0.65f, -0.64f, -0.9f, +CANVAS_DIMENSIONS, 96, +MOVE_TO, 77.08f, 44.91f, +R_LINE_TO, -10.88f, -6.35f, +LINE_TO, 56.04f, 49, +R_LINE_TO, 10.17f, 10.44f, +R_LINE_TO, 10.88f, -6.35f, +CUBIC_TO, 79.04f, 51.96f, 80, 50.5f, 80, 49, +R_CUBIC_TO, 0, -1.5f, -0.96f, -2.96f, -2.92f, -4.09f, CLOSE, -MOVE_TO, 3.33f, 1.36f, -R_LINE_TO, 6.55f, 6.74f, -R_LINE_TO, 1.98f, -2.04f, -LINE_TO, 3.54f, 1.21f, -R_CUBIC_TO, -0.05f, -0.03f, -0.11f, -0.06f, -0.16f, -0.08f, -R_CUBIC_TO, -0.13f, -0.06f, -0.23f, 0.04f, -0.12f, 0.17f, -R_CUBIC_TO, 0.02f, 0.02f, 0.05f, 0.04f, 0.07f, 0.06f, +MOVE_TO, 22.08f, 14.13f, +R_LINE_TO, 29.94f, 30.74f, +R_LINE_TO, 9.07f, -9.31f, +LINE_TO, 23.04f, 13.44f, +R_CUBIC_TO, -0.25f, -0.15f, -0.5f, -0.26f, -0.75f, -0.37f, +R_CUBIC_TO, -0.6f, -0.25f, -1.07f, 0.18f, -0.53f, 0.77f, +R_CUBIC_TO, 0.11f, 0.07f, 0.21f, 0.18f, 0.32f, 0.29f, CLOSE, -R_MOVE_TO, 0, 15.28f, -R_LINE_TO, -0.06f, 0.06f, -R_CUBIC_TO, -0.12f, 0.12f, -0.02f, 0.22f, 0.12f, 0.17f, -R_CUBIC_TO, 0.06f, -0.02f, 0.11f, -0.05f, 0.16f, -0.08f, -R_LINE_TO, 8.31f, -4.85f, -R_LINE_TO, -1.98f, -2.04f, -R_CUBIC_TO, 0, 0, -5.6f, 5.77f, -6.55f, 6.74f, +R_MOVE_TO, 0, 69.74f, +R_LINE_TO, -0.28f, 0.29f, +R_CUBIC_TO, -0.53f, 0.55f, -0.07f, 1.02f, 0.53f, 0.77f, +R_CUBIC_TO, 0.25f, -0.11f, 0.5f, -0.22f, 0.75f, -0.37f, +R_LINE_TO, 38.01f, -22.13f, +R_LINE_TO, -9.07f, -9.31f, +CUBIC_TO_SHORTHAND, 26.42f, 79.45f, 22.08f, 83.87f, CLOSE, -MOVE_TO, 9, 9, -LINE_TO, 2.3f, 2.1f, -CUBIC_TO, 2.15f, 1.95f, 2, 2.05f, 2, 2.26f, -R_V_LINE_TO, 13.49f, -R_CUBIC_TO, 0, 0.21f, 0.15f, 0.3f, 0.3f, 0.15f, -LINE_TO, 9, 9, +MOVE_TO, 48, 49, +LINE_TO, 17.35f, 17.53f, +R_CUBIC_TO, -0.67f, -0.69f, -1.35f, -0.26f, -1.35f, 0.69f, +V_LINE_TO, 79.78f, +R_CUBIC_TO, 0, 0.95f, 0.68f, 1.39f, 1.35f, 0.7f, +LINE_TO, 48, 49, CLOSE, END
diff --git a/chrome/app/vector_icons/notification_printing.icon b/chrome/app/vector_icons/notification_printing.icon index 5f1e21e..ff9384a 100644 --- a/chrome/app/vector_icons/notification_printing.icon +++ b/chrome/app/vector_icons/notification_printing.icon
@@ -2,35 +2,35 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -CANVAS_DIMENSIONS, 18, -MOVE_TO, 14.75f, 6, -H_LINE_TO, 3.25f, -CUBIC_TO, 2.01f, 6, 1, 7.03f, 1, 8.31f, -V_LINE_TO, 13, -R_H_LINE_TO, 3, -R_V_LINE_TO, 3, -R_H_LINE_TO, 10, -R_V_LINE_TO, -3, -R_H_LINE_TO, 3, -V_LINE_TO, 8.31f, -CUBIC_TO, 17, 7.03f, 16, 6, 14.75f, 6, +CANVAS_DIMENSIONS, 96, +MOVE_TO, 76, 32, +H_LINE_TO, 20, +R_CUBIC_TO, -6.64f, 0, -12, 5.36f, -12, 12, +R_V_LINE_TO, 24, +R_H_LINE_TO, 16, +R_V_LINE_TO, 16, +R_H_LINE_TO, 48, +V_LINE_TO, 68, +R_H_LINE_TO, 16, +V_LINE_TO, 44, +R_CUBIC_TO, 0, -6.64f, -5.36f, -12, -12, -12, CLOSE, -MOVE_TO, 12, 14, -H_LINE_TO, 6, -R_V_LINE_TO, -4, -R_H_LINE_TO, 6, -R_V_LINE_TO, 4, +MOVE_TO, 64, 76, +H_LINE_TO, 32, +V_LINE_TO, 56, +R_H_LINE_TO, 32, +R_V_LINE_TO, 20, CLOSE, -R_MOVE_TO, 2, -4, -R_CUBIC_TO, -0.55f, 0, -1, -0.45f, -1, -1, -R_CUBIC_TO, 0, -0.55f, 0.45f, -1, 1, -1, -R_CUBIC_TO, 0.55f, 0, 1, 0.45f, 1, 1, -R_CUBIC_TO, 0, 0.55f, -0.45f, 1, -1, 1, +R_MOVE_TO, 12, -28, +R_CUBIC_TO, -2.2f, 0, -4, -1.8f, -4, -4, +R_CUBIC_TO, 0, -2.2f, 1.8f, -4, 4, -4, +R_CUBIC_TO, 2.2f, 0, 4, 1.8f, 4, 4, +R_CUBIC_TO, 0, 2.2f, -1.8f, 4, -4, 4, CLOSE, -R_MOVE_TO, 0, -8, -H_LINE_TO, 4, -R_V_LINE_TO, 3, -R_H_LINE_TO, 10, -V_LINE_TO, 2, +R_MOVE_TO, -4, -36, +H_LINE_TO, 24, +R_V_LINE_TO, 16, +R_H_LINE_TO, 48, +V_LINE_TO, 12, CLOSE, END
diff --git a/chrome/app/vector_icons/notification_printing_done.icon b/chrome/app/vector_icons/notification_printing_done.icon index 85b4665f..626b6df 100644 --- a/chrome/app/vector_icons/notification_printing_done.icon +++ b/chrome/app/vector_icons/notification_printing_done.icon
@@ -2,42 +2,48 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -CANVAS_DIMENSIONS, 18, -MOVE_TO, 9, 14, -R_V_LINE_TO, 2, -H_LINE_TO, 4, -R_V_LINE_TO, -3.08f, -H_LINE_TO, 1, -V_LINE_TO, 8.31f, -CUBIC_TO, 1, 7.03f, 2.01f, 6, 3.25f, 6, -R_H_LINE_TO, 11.5f, -CUBIC_TO, 16, 6, 17, 7.03f, 17, 8.31f, -R_V_LINE_TO, 2.65f, -V_LINE_TO, 9, -H_LINE_TO, 9, -R_V_LINE_TO, 1, -H_LINE_TO, 6, +CANVAS_DIMENSIONS, 96, +MOVE_TO, 88, 60, +R_V_LINE_TO, -8, +H_LINE_TO, 52, R_V_LINE_TO, 4, -R_H_LINE_TO, 3, +H_LINE_TO, 32, +R_V_LINE_TO, 20, +R_H_LINE_TO, 20, +R_V_LINE_TO, 8, +H_LINE_TO, 24, +V_LINE_TO, 68, +H_LINE_TO, 8, +V_LINE_TO, 44, +R_CUBIC_TO, 0, -6.64f, 5.36f, -12, 12, -12, +R_H_LINE_TO, 56, +R_CUBIC_TO, 6.64f, 0, 12, 5.36f, 12, 12, +R_V_LINE_TO, 16, CLOSE, -R_MOVE_TO, 5, -12, -R_V_LINE_TO, 3, -H_LINE_TO, 4, -V_LINE_TO, 2, -R_H_LINE_TO, 10, +MOVE_TO, 76, 48, +R_CUBIC_TO, 2.2f, 0, 4, -1.8f, 4, -4, +R_CUBIC_TO, 0, -2.2f, -1.8f, -4, -4, -4, +R_CUBIC_TO, -2.2f, 0, -4, 1.8f, -4, 4, +R_CUBIC_TO, 0, 2.2f, 1.8f, 4, 4, 4, CLOSE, -R_MOVE_TO, -4, 8, -R_H_LINE_TO, 7, -R_V_LINE_TO, 7, -R_H_LINE_TO, -7, -R_V_LINE_TO, -7, +R_MOVE_TO, -4, -36, +R_V_LINE_TO, 16, +H_LINE_TO, 24, +V_LINE_TO, 12, +R_H_LINE_TO, 48, CLOSE, -R_MOVE_TO, 2.79f, 6, -LINE_TO, 16, 12.55f, -LINE_TO, 15.5f, 12, -R_LINE_TO, -2.71f, 2.91f, -R_LINE_TO, -1.28f, -1.37f, -R_LINE_TO, -0.5f, 0.54f, -LINE_TO, 12.79f, 16, +MOVE_TO, 56, 56, +R_H_LINE_TO, 32, +R_V_LINE_TO, 32, +H_LINE_TO, 56, +V_LINE_TO, 56, +CLOSE, +R_MOVE_TO, 13.14f, 24, +LINE_TO, 82, 66.18f, +LINE_TO, 79.99f, 64, +LINE_TO, 69.14f, 75.66f, +R_LINE_TO, -5.13f, -5.5f, +LINE_TO, 62, 72.32f, +LINE_TO, 69.14f, 80, CLOSE, END
diff --git a/chrome/app/vector_icons/notification_printing_warning.icon b/chrome/app/vector_icons/notification_printing_warning.icon index ec804987..984fc20 100644 --- a/chrome/app/vector_icons/notification_printing_warning.icon +++ b/chrome/app/vector_icons/notification_printing_warning.icon
@@ -2,46 +2,52 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -CANVAS_DIMENSIONS, 18, -MOVE_TO, 9, 14, -R_V_LINE_TO, 2, -H_LINE_TO, 4, -R_V_LINE_TO, -3.08f, -H_LINE_TO, 1, -V_LINE_TO, 8.31f, -CUBIC_TO, 1, 7.03f, 2.01f, 6, 3.25f, 6, -R_H_LINE_TO, 11.5f, -CUBIC_TO, 16, 6, 17, 7.03f, 17, 8.31f, -R_V_LINE_TO, 2.65f, -V_LINE_TO, 9, -H_LINE_TO, 9, -R_V_LINE_TO, 1, -H_LINE_TO, 6, +CANVAS_DIMENSIONS, 96, +MOVE_TO, 88, 60, +R_V_LINE_TO, -8, +H_LINE_TO, 52, R_V_LINE_TO, 4, -R_H_LINE_TO, 3, +H_LINE_TO, 32, +R_V_LINE_TO, 20, +R_H_LINE_TO, 20, +R_V_LINE_TO, 8, +H_LINE_TO, 24, +V_LINE_TO, 68, +H_LINE_TO, 8, +V_LINE_TO, 44, +R_CUBIC_TO, 0, -6.64f, 5.36f, -12, 12, -12, +R_H_LINE_TO, 56, +R_CUBIC_TO, 6.64f, 0, 12, 5.36f, 12, 12, +R_V_LINE_TO, 16, CLOSE, -R_MOVE_TO, 5, -12, -R_V_LINE_TO, 3, -H_LINE_TO, 4, -V_LINE_TO, 2, -R_H_LINE_TO, 10, +MOVE_TO, 76, 48, +R_CUBIC_TO, 2.2f, 0, 4, -1.8f, 4, -4, +R_CUBIC_TO, 0, -2.2f, -1.8f, -4, -4, -4, +R_CUBIC_TO, -2.2f, 0, -4, 1.8f, -4, 4, +R_CUBIC_TO, 0, 2.2f, 1.8f, 4, 4, 4, CLOSE, -R_MOVE_TO, -4, 8, -R_H_LINE_TO, 7, -R_V_LINE_TO, 7, -R_H_LINE_TO, -7, -R_V_LINE_TO, -7, +R_MOVE_TO, -4, -36, +R_V_LINE_TO, 16, +H_LINE_TO, 24, +V_LINE_TO, 12, +R_H_LINE_TO, 48, CLOSE, -R_MOVE_TO, 3, 1, -R_V_LINE_TO, 3, -R_H_LINE_TO, 1, -R_V_LINE_TO, -3, -R_H_LINE_TO, -1, +MOVE_TO, 56, 56, +R_H_LINE_TO, 32, +R_V_LINE_TO, 32, +H_LINE_TO, 56, +V_LINE_TO, 56, CLOSE, -R_MOVE_TO, 0, 4, -R_V_LINE_TO, 1, -R_H_LINE_TO, 1, -R_V_LINE_TO, -1, -R_H_LINE_TO, -1, +R_MOVE_TO, 14, 6, +R_V_LINE_TO, 12, +R_H_LINE_TO, 4, +V_LINE_TO, 62, +R_H_LINE_TO, -4, +CLOSE, +R_MOVE_TO, 0, 16, +R_V_LINE_TO, 4, +R_H_LINE_TO, 4, +R_V_LINE_TO, -4, +R_H_LINE_TO, -4, CLOSE, END
diff --git a/chrome/app/vector_icons/notification_storage_full.icon b/chrome/app/vector_icons/notification_storage_full.icon index 78dd4d2..c344066 100644 --- a/chrome/app/vector_icons/notification_storage_full.icon +++ b/chrome/app/vector_icons/notification_storage_full.icon
@@ -2,47 +2,45 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -CANVAS_DIMENSIONS, 36, -MOVE_TO, 32, 18, -H_LINE_TO, 18, +CANVAS_DIMENSIONS, 96, +MOVE_TO, 80, 19, +R_V_LINE_TO, 29, +H_LINE_TO, 44, +R_V_LINE_TO, 9, +H_LINE_TO, 16, R_V_LINE_TO, 4, -H_LINE_TO, 4, -V_LINE_TO, 6, -R_CUBIC_TO, 0, -2.21f, 1.79f, -4, 4, -4, -R_H_LINE_TO, 20, -R_CUBIC_TO, 2.21f, 0, 4, 1.79f, 4, 4, +R_H_LINE_TO, 28, +R_V_LINE_TO, 23, +R_H_LINE_TO, 15, +R_H_LINE_TO, -35, +R_CUBIC_TO, -4.42f, 0, -8, -3.58f, -8, -8, +V_LINE_TO, 19, +R_CUBIC_TO, 0, -4.42f, 3.58f, -8, 8, -8, +R_H_LINE_TO, 48, +R_CUBIC_TO, 4.42f, 0, 8, 3.58f, 8, 8, +CLOSE, +MOVE_TO, 24, 70, +R_V_LINE_TO, 4, +R_H_LINE_TO, 12, +R_V_LINE_TO, -4, +H_LINE_TO, 24, +CLOSE, +R_MOVE_TO, 24, -18, +R_H_LINE_TO, 32, +R_V_LINE_TO, 32, +H_LINE_TO, 48, +V_LINE_TO, 52, +CLOSE, +R_MOVE_TO, 14, 6, R_V_LINE_TO, 12, -CLOSE, -R_MOVE_TO, -9, 16, -H_LINE_TO, 8, -R_CUBIC_TO, -2.21f, 0, -4, -1.79f, -4, -4, -R_V_LINE_TO, -6, -R_H_LINE_TO, 14, -R_V_LINE_TO, 10, -R_H_LINE_TO, 5, -CLOSE, -R_MOVE_TO, -3, -14, -R_H_LINE_TO, 14, -R_V_LINE_TO, 14, -H_LINE_TO, 20, -V_LINE_TO, 20, -CLOSE, -R_MOVE_TO, 6, 2, -R_V_LINE_TO, 6, -R_H_LINE_TO, 2, -R_V_LINE_TO, -6, -R_H_LINE_TO, -2, -CLOSE, -R_MOVE_TO, 0, 8, -R_V_LINE_TO, 2, -R_H_LINE_TO, 2, -R_V_LINE_TO, -2, -R_H_LINE_TO, -2, -CLOSE, -MOVE_TO, 8, 28, -R_V_LINE_TO, 2, R_H_LINE_TO, 4, -R_V_LINE_TO, -2, -H_LINE_TO, 8, +V_LINE_TO, 58, +R_H_LINE_TO, -4, +CLOSE, +R_MOVE_TO, 0, 16, +R_V_LINE_TO, 4, +R_H_LINE_TO, 4, +R_V_LINE_TO, -4, +R_H_LINE_TO, -4, CLOSE, END
diff --git a/chrome/app/vector_icons/notification_warning.icon b/chrome/app/vector_icons/notification_warning.icon index 865173c2..b90da17 100644 --- a/chrome/app/vector_icons/notification_warning.icon +++ b/chrome/app/vector_icons/notification_warning.icon
@@ -2,23 +2,23 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -CANVAS_DIMENSIONS, 18, -MOVE_TO, 9, 1, -R_CUBIC_TO, 4.42f, 0, 8, 3.58f, 8, 8, -R_CUBIC_TO, 0, 4.42f, -3.58f, 8, -8, 8, -R_CUBIC_TO, -4.42f, 0, -8, -3.58f, -8, -8, -R_CUBIC_TO, 0, -4.42f, 3.58f, -8, 8, -8, +CANVAS_DIMENSIONS, 96, +MOVE_TO, 48, 8, +R_CUBIC_TO, 22.08f, 0, 40, 17.92f, 40, 40, +CUBIC_TO_SHORTHAND, 70.08f, 88, 48, 88, +CUBIC_TO_SHORTHAND, 8, 70.08f, 8, 48, +CUBIC_TO_SHORTHAND, 25.92f, 8, 48, 8, CLOSE, -MOVE_TO, 8, 4, -R_V_LINE_TO, 6, -R_H_LINE_TO, 2, -V_LINE_TO, 4, -H_LINE_TO, 8, +R_MOVE_TO, -4, 20, +R_V_LINE_TO, 24, +R_H_LINE_TO, 8, +V_LINE_TO, 28, +R_H_LINE_TO, -8, CLOSE, -R_MOVE_TO, 0, 8, -R_V_LINE_TO, 2, -R_H_LINE_TO, 2, -R_V_LINE_TO, -2, -H_LINE_TO, 8, +R_MOVE_TO, 0, 32, +R_V_LINE_TO, 8, +R_H_LINE_TO, 8, +R_V_LINE_TO, -8, +R_H_LINE_TO, -8, CLOSE, END
diff --git a/chrome/browser/file_select_helper.h b/chrome/browser/file_select_helper.h index 5237d4e8..d4672f1f 100644 --- a/chrome/browser/file_select_helper.h +++ b/chrome/browser/file_select_helper.h
@@ -158,9 +158,9 @@ void EnumerateDirectoryEnd(); #if defined(OS_MACOSX) - // Must be called on the FILE_USER_BLOCKING thread. Each selected file that is - // a package will be zipped, and the zip will be passed to the render view - // host in place of the package. + // Must be called from a MayBlock() task. Each selected file that is a package + // will be zipped, and the zip will be passed to the render view host in place + // of the package. void ProcessSelectedFilesMac(const std::vector<ui::SelectedFileInfo>& files); // Saves the paths of |zipped_files| for later deletion. Passes |files| to the
diff --git a/chrome/browser/password_manager/password_manager_util_win.cc b/chrome/browser/password_manager/password_manager_util_win.cc index 5f1965b..a8966b6 100644 --- a/chrome/browser/password_manager/password_manager_util_win.cc +++ b/chrome/browser/password_manager/password_manager_util_win.cc
@@ -5,19 +5,20 @@ // windows.h must be first otherwise Win8 SDK breaks. #include <windows.h> #include <LM.h> +#include <ntsecapi.h> #include <objbase.h> // For CoTaskMemFree() #include <stddef.h> #include <stdint.h> #include <wincred.h> -#include <memory> - // SECURITY_WIN32 must be defined in order to get // EXTENDED_NAME_FORMAT enumeration. #define SECURITY_WIN32 1 #include <security.h> #undef SECURITY_WIN32 +#include <memory> + #include "chrome/browser/password_manager/password_manager_util_win.h" #include "base/bind.h" @@ -74,23 +75,108 @@ bool blank_password_; }; -// A WCHAR string buffer that securely zeros itself out on desctruction. -class SecureStringBuffer { +// Validates whether a credential buffer contains the credentials for the +// currently signed in user. +class CredentialBufferValidator { public: - // Allocates a WCHAR string buffer of |length| characters. - explicit SecureStringBuffer(DWORD length) - : buffer_(new WCHAR[length]), length_(length) {} - ~SecureStringBuffer() { - SecureZeroMemory(buffer_.get(), length_ * sizeof(WCHAR)); - } + CredentialBufferValidator(); + ~CredentialBufferValidator(); - WCHAR* get() { return buffer_.get(); } + // Returns ERROR_SUCCESS if the credential buffer given matches the + // credentials of the user running Chrome. Otherwise an error describing + // the issue. + DWORD IsValid(ULONG auth_package, void* cred_buffer, ULONG cred_length); private: - std::unique_ptr<WCHAR[]> buffer_; - DWORD length_; + std::unique_ptr<char[]> GetTokenInformation(HANDLE token); + + // Name of app calling LsaLogonUser(). In this case, "chrome". + LSA_STRING name_; + + // Handle to LSA server. + HANDLE lsa_ = INVALID_HANDLE_VALUE; + + // Buffer holding information about the current process token. + std::unique_ptr<char[]> cur_token_info_; + + DISALLOW_COPY_AND_ASSIGN(CredentialBufferValidator); }; +CredentialBufferValidator::CredentialBufferValidator() { + cur_token_info_ = GetTokenInformation(GetCurrentProcessToken()); + if (!cur_token_info_) { + DLOG(ERROR) << "Unable to obtain current token info " << GetLastError(); + return; + } + + NTSTATUS sts = LsaConnectUntrusted(&lsa_); + if (sts != ERROR_SUCCESS) { + lsa_ = INVALID_HANDLE_VALUE; + return; + } + + name_.Buffer = const_cast<PCHAR>("Chrome"); + name_.Length = strlen(name_.Buffer); + name_.MaximumLength = name_.Length + 1; +} + +CredentialBufferValidator::~CredentialBufferValidator() { + if (lsa_ != INVALID_HANDLE_VALUE) + LsaDeregisterLogonProcess(lsa_); +} + +DWORD CredentialBufferValidator::IsValid(ULONG auth_package, + void* auth_buffer, + ULONG auth_length) { + if (lsa_ == INVALID_HANDLE_VALUE) + return ERROR_LOGON_FAILURE; + + NTSTATUS sts; + NTSTATUS substs; + TOKEN_SOURCE source; + void* profile_buffer = nullptr; + ULONG profile_buffer_length = 0; + QUOTA_LIMITS limits; + LUID luid; + HANDLE token; + + strcpy_s(source.SourceName, arraysize(source.SourceName), "Chrome"); + if (!AllocateLocallyUniqueId(&source.SourceIdentifier)) + return GetLastError(); + + sts = LsaLogonUser(lsa_, &name_, Interactive, auth_package, auth_buffer, + auth_length, nullptr, &source, &profile_buffer, + &profile_buffer_length, &luid, &token, &limits, &substs); + LsaFreeReturnBuffer(profile_buffer); + std::unique_ptr<char[]> logon_token_info = GetTokenInformation(token); + CloseHandle(token); + if (sts != S_OK) + return LsaNtStatusToWinError(sts); + if (!logon_token_info) + return ERROR_NOT_ENOUGH_MEMORY; + + PSID cur_sid = reinterpret_cast<TOKEN_USER*>(cur_token_info_.get())->User.Sid; + PSID logon_sid = + reinterpret_cast<TOKEN_USER*>(logon_token_info.get())->User.Sid; + return EqualSid(cur_sid, logon_sid) ? ERROR_SUCCESS : ERROR_LOGON_FAILURE; +} + +std::unique_ptr<char[]> CredentialBufferValidator::GetTokenInformation( + HANDLE token) { + DWORD token_info_length = 0; + ::GetTokenInformation(token, TokenUser, nullptr, 0, &token_info_length); + if (ERROR_INSUFFICIENT_BUFFER != GetLastError()) + return nullptr; + + std::unique_ptr<char[]> token_info_buffer(new char[token_info_length]); + if (!::GetTokenInformation(token, TokenUser, token_info_buffer.get(), + token_info_length, &token_info_length)) { + return nullptr; + } + + return token_info_buffer; +} + // TODO(crbug.com/574581) Remove this feature once this is confirmed to work // as expected. const base::Feature kCredUIPromptForWindowsCredentialsFeature{ @@ -114,7 +200,8 @@ LPUSER_INFO_1 user_info = NULL; DWORD age = 0; - NET_API_STATUS ret = NetUserGetInfo(NULL, username, 1, (LPBYTE*) &user_info); + NET_API_STATUS ret = NetUserGetInfo(NULL, username, 1, + reinterpret_cast<LPBYTE*>(&user_info)); if (ret == NERR_Success) { // Returns seconds since last password change. @@ -350,16 +437,13 @@ WCHAR cur_username[CREDUI_MAX_USERNAME_LENGTH + 1] = {}; DWORD cur_username_length = arraysize(cur_username); - // The SAM compatible username works on both standalone workstations and - // domain joined machines. The form is "DOMAIN\username", where DOMAIN is the - // the name of the machine for standalone workstations. + // If this is a standlone workstation, it's possible the current user has no + // password, so check here and allow it. if (!GetUserNameEx(NameSamCompatible, cur_username, &cur_username_length)) { DLOG(ERROR) << "Unable to obtain username " << GetLastError(); return false; } - // If this is a standlone workstation, it's possible the current user has no - // password, so check here and allow it. if (!base::win::IsEnrolledToDomain() && CheckBlankPassword(cur_username)) return true; @@ -376,6 +460,8 @@ cui.pszCaptionText = product_name.c_str(); cui.hbmBanner = nullptr; + CredentialBufferValidator validator; + DWORD err = 0; size_t tries = 0; do { @@ -392,92 +478,15 @@ if (err != ERROR_SUCCESS) break; - // Get the length of the required output buffers. Note that the length - // returned includes the null terminator. - DWORD cred_username_length = 0; - DWORD cred_domain_length = 0; - DWORD cred_password_length = 0; - BOOL ret = CredUnPackAuthenticationBuffer( - 0, cred_buffer, cred_buffer_size, nullptr, &cred_username_length, - nullptr, &cred_domain_length, nullptr, &cred_password_length); - DCHECK(!ret); - err = GetLastError(); - if (ERROR_INSUFFICIENT_BUFFER != err) { - SecureZeroMemory(cred_buffer, cred_buffer_size); - CoTaskMemFree(cred_buffer); - continue; - } - - // Try to unpack the authentication buffer. If this fails, try again. - // By not using the flag CRED_PACK_PROTECTED_CREDENTIALS, the password - // in |cred_password| remains encrypted. That's OK though, the call to - // LogonUser() below handles that correctly. - std::unique_ptr<WCHAR[]> cred_username(new WCHAR[cred_username_length]); - std::unique_ptr<WCHAR[]> cred_domain(new WCHAR[cred_domain_length]); - SecureStringBuffer cred_password(cred_password_length); - ret = CredUnPackAuthenticationBuffer( - 0, cred_buffer, cred_buffer_size, cred_username.get(), - &cred_username_length, cred_domain.get(), &cred_domain_length, - cred_password.get(), &cred_password_length); - SecureZeroMemory(cred_buffer, cred_buffer_size); - CoTaskMemFree(cred_buffer); - if (!ret) { - err = GetLastError(); - continue; - } - // While CredUIPromptForWindowsCredentials() shows the currently logged // on user by default, it can be changed at runtime. This is important, // as it allows users to change to a different type of authentication - // mechanism, such as PIN or smartcard. However, this also allows the user - // to change to a completely different account on the machine. Make sure - // the user authenticated with the credentials of the currently logged on - // user. - // - // When the buffer returned by CredUIPromptForWindowsCredentials() is - // unpacked, |cred_username| is of the form "DOMAIN\username" and - // |cred_domain| is empty. I have tested this on both standalone - // workstations and domain joined machines. This seems to be different - // behaviour than CredUIPromptForCredentials(). This makes |cred_username| - // comparable to |cur_username| above. - if (wcsicmp(cred_username.get(), cur_username) != 0) { - err = ERROR_LOGON_FAILURE; - continue; - } - - // As explained above, extract the domain from |cred_username|. - // TODO(rogerta): Figure out when |cred_domain| buffer is actually used, - // I could not find a case where it was. - LPWSTR username = nullptr; - LPWSTR domain = nullptr; - LPWSTR backslash = wcschr(cred_username.get(), L'\\'); - if ((cred_domain_length == 0 || wcslen(cred_domain.get()) == 0) && - backslash != nullptr) { - *backslash = 0; - domain = cred_username.get(); - username = backslash + 1; - } else { - DLOG(ERROR) << "Unexpected domain and/or username"; - break; - } - - // Validate the returned credentials by trying to logon. - HANDLE handle = INVALID_HANDLE_VALUE; - if (LogonUser(username, domain, cred_password.get(), - LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, - &handle)) { - retval = true; - CloseHandle(handle); - } else { - err = GetLastError(); - if (err == ERROR_ACCOUNT_RESTRICTION) { - // Password is blank, or there is some other restriction imposed on the - // account. However, the password has been validated, so permit. - retval = true; - } else { - DLOG(ERROR) << "Unable to authenticate " << GetLastError(); - } - } + // mechanism, such as PIN or smartcard. However, this also allows the + // user to change to a completely different account on the machine. Make + // sure the user authenticated with the credentials of the currently + // logged on user. + err = validator.IsValid(auth_package, cred_buffer, cred_buffer_size); + retval = err == ERROR_SUCCESS; } while (!retval && tries < kMaxPasswordRetries); return retval;
diff --git a/chrome/browser/previews/previews_service.cc b/chrome/browser/previews/previews_service.cc index c2a4ee2..b321e8e 100644 --- a/chrome/browser/previews/previews_service.cc +++ b/chrome/browser/previews/previews_service.cc
@@ -14,6 +14,7 @@ #include "components/data_reduction_proxy/core/common/data_reduction_proxy_params.h" #include "components/previews/core/previews_experiments.h" #include "components/previews/core/previews_io_data.h" +#include "components/previews/core/previews_log.h" #include "components/previews/core/previews_opt_out_store.h" #include "components/previews/core/previews_opt_out_store_sql.h" #include "components/previews/core/previews_ui_service.h" @@ -108,5 +109,6 @@ io_task_runner, background_task_runner, profile_path.Append(chrome::kPreviewsOptOutDBFilename), GetEnabledPreviews()), - base::Bind(&IsPreviewsTypeEnabled)); + base::Bind(&IsPreviewsTypeEnabled), + base::MakeUnique<previews::PreviewsLogger>()); }
diff --git a/chrome/browser/resource_coordinator/resource_coordinator_render_process_probe_browsertest.cc b/chrome/browser/resource_coordinator/resource_coordinator_render_process_probe_browsertest.cc index 7cd85475..7aaf5bb 100644 --- a/chrome/browser/resource_coordinator/resource_coordinator_render_process_probe_browsertest.cc +++ b/chrome/browser/resource_coordinator/resource_coordinator_render_process_probe_browsertest.cc
@@ -15,6 +15,7 @@ #include "chrome/browser/ui/tabs/tab_strip_model.h" #include "chrome/test/base/in_process_browser_test.h" #include "chrome/test/base/ui_test_utils.h" +#include "content/public/browser/render_frame_host.h" #include "content/public/browser/render_process_host.h" #include "content/public/test/test_utils.h" #include "services/resource_coordinator/public/cpp/resource_coordinator_features.h" @@ -98,7 +99,8 @@ EXPECT_TRUE(browser() ->tab_strip_model() ->GetActiveWebContents() - ->GetRenderProcessHost() + ->GetMainFrame() + ->GetProcess() ->FastShutdownIfPossible()); StartGatherCycleAndWait(); EXPECT_EQ(3u, probe.current_gather_cycle_for_testing());
diff --git a/chrome/browser/resource_coordinator/tab_manager.cc b/chrome/browser/resource_coordinator/tab_manager.cc index 8b15dc3..0db9bfc6 100644 --- a/chrome/browser/resource_coordinator/tab_manager.cc +++ b/chrome/browser/resource_coordinator/tab_manager.cc
@@ -745,9 +745,11 @@ stats.discard_count = GetWebContentsData(contents)->DiscardCount(); stats.last_active = contents->GetLastActiveTime(); stats.last_hidden = contents->GetLastHiddenTime(); - stats.render_process_host = contents->GetRenderProcessHost(); - stats.renderer_handle = contents->GetRenderProcessHost()->GetHandle(); - stats.child_process_host_id = contents->GetRenderProcessHost()->GetID(); + stats.render_process_host = contents->GetMainFrame()->GetProcess(); + stats.renderer_handle = + contents->GetMainFrame()->GetProcess()->GetHandle(); + stats.child_process_host_id = + contents->GetMainFrame()->GetProcess()->GetID(); #if defined(OS_CHROMEOS) stats.oom_score = delegate_->GetCachedOomScore(stats.renderer_handle); #endif @@ -869,7 +871,8 @@ // First try to fast-kill the process, if it's just running a single tab. bool fast_shutdown_success = - old_contents->GetRenderProcessHost()->FastShutdownIfPossible(1u, false); + old_contents->GetMainFrame()->GetProcess()->FastShutdownIfPossible(1u, + false); #ifdef OS_CHROMEOS if (!fast_shutdown_success && condition == kUrgentShutdown) { @@ -880,7 +883,7 @@ if (!main_frame->GetSuddenTerminationDisablerState( blink::kBeforeUnloadHandler)) { fast_shutdown_success = - old_contents->GetRenderProcessHost()->FastShutdownIfPossible( + old_contents->GetMainFrame()->GetProcess()->FastShutdownIfPossible( 1u, /* skip_unload_handlers */ true); } UMA_HISTOGRAM_BOOLEAN(
diff --git a/chrome/browser/resource_coordinator/tab_manager_browsertest.cc b/chrome/browser/resource_coordinator/tab_manager_browsertest.cc index 46fedde..98dbaaba 100644 --- a/chrome/browser/resource_coordinator/tab_manager_browsertest.cc +++ b/chrome/browser/resource_coordinator/tab_manager_browsertest.cc
@@ -28,6 +28,7 @@ #include "content/public/browser/navigation_entry.h" #include "content/public/browser/notification_service.h" #include "content/public/browser/notification_types.h" +#include "content/public/browser/render_frame_host.h" #include "content/public/browser/render_process_host.h" #include "content/public/common/content_switches.h" #include "content/public/test/test_utils.h" @@ -456,7 +457,7 @@ video_stream_ui->OnStarted(base::Closure()); // Should not be able to suspend a tab which plays a video. - int render_process_id = tab->GetRenderProcessHost()->GetID(); + int render_process_id = tab->GetMainFrame()->GetProcess()->GetID(); ASSERT_FALSE(tab_manager->CanSuspendBackgroundedRenderer(render_process_id)); // Remove the video stream.
diff --git a/chrome/browser/resource_coordinator/tab_manager_unittest.cc b/chrome/browser/resource_coordinator/tab_manager_unittest.cc index bff131e..f98c7ed 100644 --- a/chrome/browser/resource_coordinator/tab_manager_unittest.cc +++ b/chrome/browser/resource_coordinator/tab_manager_unittest.cc
@@ -33,6 +33,7 @@ #include "chrome/test/base/chrome_render_view_host_test_harness.h" #include "chrome/test/base/testing_profile.h" #include "components/variations/variations_associated_data.h" +#include "content/public/browser/render_frame_host.h" #include "content/public/browser/render_process_host.h" #include "content/public/browser/web_contents.h" #include "content/public/test/mock_render_process_host.h" @@ -608,9 +609,10 @@ tab_manager.GetWebContentsData(tab2)->SetLastInactiveTime( test_clock.NowTicks()); - static_cast<content::MockRenderProcessHost*>(tab2->GetRenderProcessHost()) + static_cast<content::MockRenderProcessHost*>( + tab2->GetMainFrame()->GetProcess()) ->set_is_process_backgrounded(true); - EXPECT_TRUE(tab2->GetRenderProcessHost()->IsProcessBackgrounded()); + EXPECT_TRUE(tab2->GetMainFrame()->GetProcess()->IsProcessBackgrounded()); // Initially PurgeAndSuspend state should be NOT_PURGED. EXPECT_FALSE(tab_manager.GetWebContentsData(tab2)->is_purged());
diff --git a/chrome/browser/resources/local_ntp/OWNERS b/chrome/browser/resources/local_ntp/OWNERS index 8d329af..9c2e2d6a 100644 --- a/chrome/browser/resources/local_ntp/OWNERS +++ b/chrome/browser/resources/local_ntp/OWNERS
@@ -1,5 +1,4 @@ jeremycho@chromium.org -samarth@chromium.org mathp@chromium.org fserb@chromium.org huangs@chromium.org
diff --git a/chrome/browser/resources/local_omnibox_popup/OWNERS b/chrome/browser/resources/local_omnibox_popup/OWNERS deleted file mode 100644 index 2037852..0000000 --- a/chrome/browser/resources/local_omnibox_popup/OWNERS +++ /dev/null
@@ -1 +0,0 @@ -samarth@chromium.org
diff --git a/chrome/browser/ui/content_settings/content_setting_bubble_model.cc b/chrome/browser/ui/content_settings/content_setting_bubble_model.cc index f8732c8..6dee40b 100644 --- a/chrome/browser/ui/content_settings/content_setting_bubble_model.cc +++ b/chrome/browser/ui/content_settings/content_setting_bubble_model.cc
@@ -658,6 +658,7 @@ DCHECK(CameraAccessed() || MicrophoneAccessed()); SetTitle(); + SetMessage(); SetRadioGroup(); SetMediaMenus(); SetManageText(); @@ -707,23 +708,54 @@ return (state_ & TabSpecificContentSettings::CAMERA_ACCESSED) != 0; } +bool ContentSettingMediaStreamBubbleModel::MicrophoneBlocked() const { + return (state_ & TabSpecificContentSettings::MICROPHONE_BLOCKED) != 0; +} + +bool ContentSettingMediaStreamBubbleModel::CameraBlocked() const { + return (state_ & TabSpecificContentSettings::CAMERA_BLOCKED) != 0; +} + void ContentSettingMediaStreamBubbleModel::SetTitle() { DCHECK(CameraAccessed() || MicrophoneAccessed()); int title_id = 0; - if (state_ & TabSpecificContentSettings::MICROPHONE_BLOCKED) { - title_id = (state_ & TabSpecificContentSettings::CAMERA_BLOCKED) ? - IDS_MICROPHONE_CAMERA_BLOCKED : IDS_MICROPHONE_BLOCKED; - } else if (state_ & TabSpecificContentSettings::CAMERA_BLOCKED) { - title_id = IDS_CAMERA_BLOCKED; - } else if (MicrophoneAccessed()) { - title_id = CameraAccessed() ? IDS_MICROPHONE_CAMERA_ALLOWED - : IDS_MICROPHONE_ACCESSED; - } else if (CameraAccessed()) { - title_id = IDS_CAMERA_ACCESSED; - } + if (MicrophoneBlocked() && CameraBlocked()) + title_id = IDS_MICROPHONE_CAMERA_BLOCKED_TITLE; + else if (MicrophoneBlocked()) + title_id = IDS_MICROPHONE_BLOCKED_TITLE; + else if (CameraBlocked()) + title_id = IDS_CAMERA_BLOCKED_TITLE; + else if (MicrophoneAccessed() && CameraAccessed()) + title_id = IDS_MICROPHONE_CAMERA_ALLOWED_TITLE; + else if (MicrophoneAccessed()) + title_id = IDS_MICROPHONE_ACCESSED_TITLE; + else if (CameraAccessed()) + title_id = IDS_CAMERA_ACCESSED_TITLE; + else + NOTREACHED(); set_title(l10n_util::GetStringUTF16(title_id)); } +void ContentSettingMediaStreamBubbleModel::SetMessage() { + DCHECK(CameraAccessed() || MicrophoneAccessed()); + int message_id = 0; + if (MicrophoneBlocked() && CameraBlocked()) + message_id = IDS_MICROPHONE_CAMERA_BLOCKED; + else if (MicrophoneBlocked()) + message_id = IDS_MICROPHONE_BLOCKED; + else if (CameraBlocked()) + message_id = IDS_CAMERA_BLOCKED; + else if (MicrophoneAccessed() && CameraAccessed()) + message_id = IDS_MICROPHONE_CAMERA_ALLOWED; + else if (MicrophoneAccessed()) + message_id = IDS_MICROPHONE_ACCESSED; + else if (CameraAccessed()) + message_id = IDS_CAMERA_ACCESSED; + else + NOTREACHED(); + set_message(l10n_util::GetStringUTF16(message_id)); +} + void ContentSettingMediaStreamBubbleModel::SetRadioGroup() { TabSpecificContentSettings* content_settings = TabSpecificContentSettings::FromWebContents(web_contents());
diff --git a/chrome/browser/ui/content_settings/content_setting_bubble_model.h b/chrome/browser/ui/content_settings/content_setting_bubble_model.h index 516e4ddad..414ae18 100644 --- a/chrome/browser/ui/content_settings/content_setting_bubble_model.h +++ b/chrome/browser/ui/content_settings/content_setting_bubble_model.h
@@ -377,7 +377,11 @@ bool MicrophoneAccessed() const; bool CameraAccessed() const; + bool MicrophoneBlocked() const; + bool CameraBlocked() const; + void SetTitle(); + void SetMessage(); void SetManageText(); // Sets the data for the radio buttons of the bubble.
diff --git a/chrome/browser/ui/content_settings/content_setting_bubble_model_unittest.cc b/chrome/browser/ui/content_settings/content_setting_bubble_model_unittest.cc index 97d7a22..8da9fd1 100644 --- a/chrome/browser/ui/content_settings/content_setting_bubble_model_unittest.cc +++ b/chrome/browser/ui/content_settings/content_setting_bubble_model_unittest.cc
@@ -166,6 +166,8 @@ const ContentSettingBubbleModel::BubbleContent& bubble_content = content_setting_bubble_model->bubble_content(); EXPECT_EQ(bubble_content.title, + l10n_util::GetStringUTF16(IDS_MICROPHONE_CAMERA_ALLOWED_TITLE)); + EXPECT_EQ(bubble_content.message, l10n_util::GetStringUTF16(IDS_MICROPHONE_CAMERA_ALLOWED)); EXPECT_EQ(2U, bubble_content.radio_group.radio_items.size()); EXPECT_EQ(bubble_content.radio_group.radio_items[0], @@ -527,6 +529,8 @@ const ContentSettingBubbleModel::BubbleContent& bubble_content = content_setting_bubble_model->bubble_content(); EXPECT_EQ(bubble_content.title, + l10n_util::GetStringUTF16(IDS_MICROPHONE_ACCESSED_TITLE)); + EXPECT_EQ(bubble_content.message, l10n_util::GetStringUTF16(IDS_MICROPHONE_ACCESSED)); EXPECT_EQ(2U, bubble_content.radio_group.radio_items.size()); EXPECT_EQ(bubble_content.radio_group.radio_items[0], @@ -557,6 +561,8 @@ const ContentSettingBubbleModel::BubbleContent& new_bubble_content = content_setting_bubble_model->bubble_content(); EXPECT_EQ(new_bubble_content.title, + l10n_util::GetStringUTF16(IDS_MICROPHONE_BLOCKED_TITLE)); + EXPECT_EQ(new_bubble_content.message, l10n_util::GetStringUTF16(IDS_MICROPHONE_BLOCKED)); EXPECT_EQ(2U, new_bubble_content.radio_group.radio_items.size()); EXPECT_EQ(new_bubble_content.radio_group.radio_items[0], @@ -598,6 +604,8 @@ const ContentSettingBubbleModel::BubbleContent& bubble_content = content_setting_bubble_model->bubble_content(); EXPECT_EQ(bubble_content.title, + l10n_util::GetStringUTF16(IDS_CAMERA_ACCESSED_TITLE)); + EXPECT_EQ(bubble_content.message, l10n_util::GetStringUTF16(IDS_CAMERA_ACCESSED)); EXPECT_EQ(2U, bubble_content.radio_group.radio_items.size()); EXPECT_EQ(bubble_content.radio_group.radio_items[0], @@ -628,6 +636,8 @@ const ContentSettingBubbleModel::BubbleContent& new_bubble_content = content_setting_bubble_model->bubble_content(); EXPECT_EQ(new_bubble_content.title, + l10n_util::GetStringUTF16(IDS_CAMERA_BLOCKED_TITLE)); + EXPECT_EQ(new_bubble_content.message, l10n_util::GetStringUTF16(IDS_CAMERA_BLOCKED)); EXPECT_EQ(2U, new_bubble_content.radio_group.radio_items.size()); EXPECT_EQ(new_bubble_content.radio_group.radio_items[0], @@ -672,6 +682,8 @@ const ContentSettingBubbleModel::BubbleContent& bubble_content = content_setting_bubble_model->bubble_content(); EXPECT_EQ(bubble_content.title, + l10n_util::GetStringUTF16(IDS_MICROPHONE_ACCESSED_TITLE)); + EXPECT_EQ(bubble_content.message, l10n_util::GetStringUTF16(IDS_MICROPHONE_ACCESSED)); EXPECT_EQ(2U, bubble_content.radio_group.radio_items.size()); EXPECT_EQ(bubble_content.radio_group.radio_items[0], @@ -700,6 +712,8 @@ const ContentSettingBubbleModel::BubbleContent& new_bubble_content = content_setting_bubble_model->bubble_content(); EXPECT_EQ(new_bubble_content.title, + l10n_util::GetStringUTF16(IDS_MICROPHONE_CAMERA_ALLOWED_TITLE)); + EXPECT_EQ(new_bubble_content.message, l10n_util::GetStringUTF16(IDS_MICROPHONE_CAMERA_ALLOWED)); EXPECT_EQ(2U, new_bubble_content.radio_group.radio_items.size()); EXPECT_EQ(new_bubble_content.radio_group.radio_items[0],
diff --git a/chrome/browser/ui/views/content_setting_bubble_contents.cc b/chrome/browser/ui/views/content_setting_bubble_contents.cc index 3f6587bc..c7f8903c6 100644 --- a/chrome/browser/ui/views/content_setting_bubble_contents.cc +++ b/chrome/browser/ui/views/content_setting_bubble_contents.cc
@@ -385,9 +385,10 @@ bool bubble_content_empty = true; if (!bubble_content.message.empty()) { - views::Label* message_label = new views::Label(bubble_content.message); - // For bubble's without titles there is no need for padding. - if (!bubble_content.title.empty()) + views::Label* message_label = new views::Label( + bubble_content.message, views::style::CONTEXT_LABEL, STYLE_SECONDARY); + // For bubbles without titles there is no need for padding. + if (!bubble_content.title.empty() && provider->UseExtraDialogPadding()) layout->AddPaddingRow(0, unrelated_control_vertical_spacing); message_label->SetMultiLine(true); message_label->SetHorizontalAlignment(gfx::ALIGN_LEFT);
diff --git a/chrome/browser/ui/views/omnibox/omnibox_view_views.cc b/chrome/browser/ui/views/omnibox/omnibox_view_views.cc index 98a8ac9..271a8f3 100644 --- a/chrome/browser/ui/views/omnibox/omnibox_view_views.cc +++ b/chrome/browser/ui/views/omnibox/omnibox_view_views.cc
@@ -570,9 +570,6 @@ GetInputMethod()->ShowImeIfNeeded(); } -void OmniboxViewViews::OnMatchOpened(AutocompleteMatch::Type match_type) { -} - int OmniboxViewViews::GetOmniboxTextLength() const { // TODO(oshima): Support IME. return static_cast<int>(text().length());
diff --git a/chrome/browser/ui/views/omnibox/omnibox_view_views.h b/chrome/browser/ui/views/omnibox/omnibox_view_views.h index ad029d23..853a2b8 100644 --- a/chrome/browser/ui/views/omnibox/omnibox_view_views.h +++ b/chrome/browser/ui/views/omnibox/omnibox_view_views.h
@@ -159,7 +159,6 @@ int GetWidth() const override; bool IsImeShowingPopup() const override; void ShowImeIfNeeded() override; - void OnMatchOpened(AutocompleteMatch::Type match_type) override; int GetOmniboxTextLength() const override; void EmphasizeURLComponents() override; void SetEmphasis(bool emphasize, const gfx::Range& range) override;
diff --git a/chrome/browser/ui/views/payments/payment_request_can_make_payment_browsertest.cc b/chrome/browser/ui/views/payments/payment_request_can_make_payment_browsertest.cc index 92dabd3..e9647f5 100644 --- a/chrome/browser/ui/views/payments/payment_request_can_make_payment_browsertest.cc +++ b/chrome/browser/ui/views/payments/payment_request_can_make_payment_browsertest.cc
@@ -42,7 +42,7 @@ ExpectBodyContains({"true"}); } -// Pages without a valid SSL cerificate always get "false" from +// Pages without a valid SSL certificate always get "false" from // .canMakePayment(). IN_PROC_BROWSER_TEST_F(PaymentRequestCanMakePaymentQueryTest, CanMakePayment_InvalidSSL) { @@ -104,6 +104,13 @@ : PaymentRequestBrowserTestBase( "/payment_request_can_make_payment_query_cc_test.html") {} + // If |visa| is true, then the method data is: + // + // [{supportedMethods: ['visa']}] + // + // If |visa| is false, then the method data is: + // + // [{supportedMethods: ['mastercard']}] void CallCanMakePayment(bool visa) { ResetEventObserverForSequence({DialogEvent::CAN_MAKE_PAYMENT_CALLED, DialogEvent::CAN_MAKE_PAYMENT_RETURNED}); @@ -145,36 +152,82 @@ ExpectBodyContains({"NotAllowedError"}); } +// canMakePayment() always returns true for credit cards in incognito mode, +// regardless of the query quota. +IN_PROC_BROWSER_TEST_F(PaymentRequestCanMakePaymentQueryCCTest, + NoQueryQuotaInIncognito) { + SetIncognito(); + + // Query "visa" payment method. + CallCanMakePayment(/*visa=*/true); + + ExpectBodyContains({"true"}); + + // Query "mastercard" payment method. + CallCanMakePayment(/*visa=*/false); + + ExpectBodyContains({"true"}); + + AddCreditCard(autofill::test::GetCreditCard()); // visa + + // Query "visa" payment method. + CallCanMakePayment(/*visa=*/true); + + ExpectBodyContains({"true"}); + + // Query "mastercard" payment method. + CallCanMakePayment(/*visa=*/false); + + ExpectBodyContains({"true"}); +} + class PaymentRequestCanMakePaymentQueryPMITest : public PaymentRequestBrowserTestBase { protected: + enum class CheckFor { + BASIC_VISA, + BASIC_CARD, + ALICE_PAY, + BOB_PAY, + BOB_PAY_AND_BASIC_CARD, + BOB_PAY_AND_VISA, + }; + PaymentRequestCanMakePaymentQueryPMITest() : PaymentRequestBrowserTestBase( - "/payment_request_payment_method_identifier_test.html") {} + "/payment_request_payment_method_identifier_test.html") { + script_[CheckFor::BASIC_VISA] = "checkBasicVisa();"; + script_[CheckFor::BASIC_CARD] = "checkBasicCard();"; + script_[CheckFor::ALICE_PAY] = "checkAlicePay();"; + script_[CheckFor::BOB_PAY] = "checkBobPay();"; + script_[CheckFor::BOB_PAY_AND_BASIC_CARD] = "checkBobPayAndBasicCard();"; + script_[CheckFor::BOB_PAY_AND_VISA] = "checkBobPayAndVisa();"; + } - void CallCanMakePayment(bool visa) { + void CallCanMakePayment(CheckFor check_for) { ResetEventObserverForSequence({DialogEvent::CAN_MAKE_PAYMENT_CALLED, DialogEvent::CAN_MAKE_PAYMENT_RETURNED}); - ASSERT_TRUE(content::ExecuteScript( - GetActiveWebContents(), - visa ? "checkBasicVisa();" : "checkBasicCard();")); + ASSERT_TRUE( + content::ExecuteScript(GetActiveWebContents(), script_[check_for])); WaitForObservedEvent(); } private: + std::map<CheckFor, std::string> script_; DISALLOW_COPY_AND_ASSIGN(PaymentRequestCanMakePaymentQueryPMITest); }; -IN_PROC_BROWSER_TEST_F(PaymentRequestCanMakePaymentQueryPMITest, QueryQuota) { +IN_PROC_BROWSER_TEST_F(PaymentRequestCanMakePaymentQueryPMITest, + QueryQuotaForBasicCards) { // Query "basic-card" payment method with "supportedNetworks": ["visa"] in the // payment method specific data. - CallCanMakePayment(/*visa=*/true); + CallCanMakePayment(CheckFor::BASIC_VISA); // User does not have a visa card. ExpectBodyContains({"false"}); // Query "basic-card" payment method without "supportedNetworks" parameter. - CallCanMakePayment(/*visa=*/false); + CallCanMakePayment(CheckFor::BASIC_CARD); // Query quota exceeded. ExpectBodyContains({"NotAllowedError"}); @@ -183,17 +236,151 @@ // Query "basic-card" payment method with "supportedNetworks": ["visa"] in the // payment method specific data. - CallCanMakePayment(/*visa=*/true); + CallCanMakePayment(CheckFor::BASIC_VISA); // User now has a visa card. The query is cached, but the result is always // fresh. ExpectBodyContains({"true"}); // Query "basic-card" payment method without "supportedNetworks" parameter. - CallCanMakePayment(/*visa=*/false); + CallCanMakePayment(CheckFor::BASIC_CARD); // Query quota exceeded. ExpectBodyContains({"NotAllowedError"}); } +// canMakePayment() always returns true for credit cards in incognito mode, +// regardless of the query quota. +IN_PROC_BROWSER_TEST_F(PaymentRequestCanMakePaymentQueryPMITest, + NoQueryQuotaForBasicCardsInIncognito) { + SetIncognito(); + + // Query "basic-card" payment method with "supportedNetworks": ["visa"] in the + // payment method specific data. + CallCanMakePayment(CheckFor::BASIC_VISA); + + ExpectBodyContains({"true"}); + + // Query "basic-card" payment method without "supportedNetworks" parameter. + CallCanMakePayment(CheckFor::BASIC_CARD); + + ExpectBodyContains({"true"}); + + AddCreditCard(autofill::test::GetCreditCard()); // visa + + // Query "basic-card" payment method with "supportedNetworks": ["visa"] in the + // payment method specific data. + CallCanMakePayment(CheckFor::BASIC_VISA); + + ExpectBodyContains({"true"}); + + // Query "basic-card" payment method without "supportedNetworks" parameter. + CallCanMakePayment(CheckFor::BASIC_CARD); + + ExpectBodyContains({"true"}); +} + +// If the device does not have any payment apps installed, canMakePayment() +// should return false for them. +IN_PROC_BROWSER_TEST_F(PaymentRequestCanMakePaymentQueryPMITest, + QueryQuotaForPaymentApps) { + CallCanMakePayment(CheckFor::ALICE_PAY); + + ExpectBodyContains({"false"}); + + CallCanMakePayment(CheckFor::BOB_PAY); + + ExpectBodyContains({"NotAllowedError"}); + + CallCanMakePayment(CheckFor::ALICE_PAY); + + ExpectBodyContains({"false"}); +} + +// If the device does not have any payment apps installed, canMakePayment() +// queries for both payment apps and basic-card depend only on what cards the +// user has on file. +IN_PROC_BROWSER_TEST_F(PaymentRequestCanMakePaymentQueryPMITest, + QueryQuotaForPaymentAppsAndCards) { + CallCanMakePayment(CheckFor::BOB_PAY_AND_VISA); + + ExpectBodyContains({"false"}); + + CallCanMakePayment(CheckFor::BOB_PAY_AND_BASIC_CARD); + + ExpectBodyContains({"NotAllowedError"}); + + AddCreditCard(autofill::test::GetCreditCard2()); // Amex + + CallCanMakePayment(CheckFor::BOB_PAY_AND_VISA); + + ExpectBodyContains({"false"}); + + CallCanMakePayment(CheckFor::BOB_PAY_AND_BASIC_CARD); + + ExpectBodyContains({"NotAllowedError"}); + + AddCreditCard(autofill::test::GetCreditCard()); // Visa + + CallCanMakePayment(CheckFor::BOB_PAY_AND_VISA); + + ExpectBodyContains({"true"}); + + CallCanMakePayment(CheckFor::BOB_PAY_AND_BASIC_CARD); + + ExpectBodyContains({"NotAllowedError"}); +} + +// If the device does not have any payment apps installed, canMakePayment() +// should return false for them in the incognito mode regardless of the query +// quota. +IN_PROC_BROWSER_TEST_F(PaymentRequestCanMakePaymentQueryPMITest, + NoQueryQuotaForPaymentAppsInIncognitoMode) { + SetIncognito(); + + CallCanMakePayment(CheckFor::ALICE_PAY); + + ExpectBodyContains({"false"}); + + CallCanMakePayment(CheckFor::BOB_PAY); + + ExpectBodyContains({"false"}); +} + +// If the device does not have any payment apps installed, canMakePayment() +// queries for both payment apps and basic-card always return true, regardless +// of the query quota. +IN_PROC_BROWSER_TEST_F(PaymentRequestCanMakePaymentQueryPMITest, + NoQueryQuotaForPaymentAppsAndCardsInIncognito) { + SetIncognito(); + + CallCanMakePayment(CheckFor::BOB_PAY_AND_VISA); + + ExpectBodyContains({"true"}); + + CallCanMakePayment(CheckFor::BOB_PAY_AND_BASIC_CARD); + + ExpectBodyContains({"true"}); + + AddCreditCard(autofill::test::GetCreditCard2()); // Amex + + CallCanMakePayment(CheckFor::BOB_PAY_AND_VISA); + + ExpectBodyContains({"true"}); + + CallCanMakePayment(CheckFor::BOB_PAY_AND_BASIC_CARD); + + ExpectBodyContains({"true"}); + + AddCreditCard(autofill::test::GetCreditCard()); // Visa + + CallCanMakePayment(CheckFor::BOB_PAY_AND_VISA); + + ExpectBodyContains({"true"}); + + CallCanMakePayment(CheckFor::BOB_PAY_AND_BASIC_CARD); + + ExpectBodyContains({"true"}); +} + } // namespace payments
diff --git a/chrome/renderer/autofill/form_autofill_browsertest.cc b/chrome/renderer/autofill/form_autofill_browsertest.cc index c82f0cb..c9f7d54f 100644 --- a/chrome/renderer/autofill/form_autofill_browsertest.cc +++ b/chrome/renderer/autofill/form_autofill_browsertest.cc
@@ -598,10 +598,8 @@ // Verify preview selection. WebInputElement firstname = GetInputElementById("firstname"); - // Since the suggestion is previewed as a placeholder, there should be no - // selected text. EXPECT_EQ(0, firstname.SelectionStart()); - EXPECT_EQ(0, firstname.SelectionEnd()); + EXPECT_EQ(19, firstname.SelectionEnd()); } void TestUnmatchedUnownedForm(const char* html, const char* url_override) { @@ -1150,10 +1148,8 @@ form.fields[1].is_autofilled = true; form.fields[2].is_autofilled = true; PreviewForm(form, input_element); - // Since the suggestion is previewed as a placeholder, there should be no - // selected text. - EXPECT_EQ(0, input_element.SelectionStart()); - EXPECT_EQ(0, input_element.SelectionEnd()); + EXPECT_EQ(2, input_element.SelectionStart()); + EXPECT_EQ(5, input_element.SelectionEnd()); // Fill the form. FillForm(form, input_element);
diff --git a/chrome/renderer/autofill/password_autofill_agent_browsertest.cc b/chrome/renderer/autofill/password_autofill_agent_browsertest.cc index ca7ebdd..81ddff0 100644 --- a/chrome/renderer/autofill/password_autofill_agent_browsertest.cc +++ b/chrome/renderer/autofill/password_autofill_agent_browsertest.cc
@@ -1351,18 +1351,16 @@ EXPECT_TRUE(password_autofill_agent_->PreviewSuggestion( selected_element, kAliceUsername, kAlicePassword)); CheckTextFieldsSuggestedState(kAliceUsername, true, kAlicePassword, true); - // Since the suggestion is previewed as a placeholder, there should be no - // selected text. - CheckUsernameSelection(0, 0); + int username_length = strlen(kAliceUsername); + CheckUsernameSelection(0, username_length); // Try previewing with a password different from the one that was initially // sent to the renderer. EXPECT_TRUE(password_autofill_agent_->PreviewSuggestion( selected_element, kBobUsername, kCarolPassword)); CheckTextFieldsSuggestedState(kBobUsername, true, kCarolPassword, true); - // Since the suggestion is previewed as a placeholder, there should be no - // selected text. - CheckUsernameSelection(0, 0); + username_length = strlen(kBobUsername); + CheckUsernameSelection(0, username_length); ClearUsernameAndPasswordFields(); } @@ -1435,9 +1433,8 @@ EXPECT_TRUE(password_autofill_agent_->PreviewSuggestion( selected_element, kAliceUsername, kAlicePassword)); CheckTextFieldsSuggestedState(kAliceUsername, true, kAlicePassword, true); - // Since the suggestion is previewed as a placeholder, there should be no - // selected text. - CheckUsernameSelection(0, 0); + int username_length = strlen(kAliceUsername); + CheckUsernameSelection(3, username_length); } }
diff --git a/chrome/test/data/android/render_tests/AllDismissedItemTest.afternoon.Nexus_5-19.png b/chrome/test/data/android/render_tests/AllDismissedItemTest.afternoon.Nexus_5-19.png new file mode 100644 index 0000000..3c75f8f0 --- /dev/null +++ b/chrome/test/data/android/render_tests/AllDismissedItemTest.afternoon.Nexus_5-19.png Binary files differ
diff --git a/chrome/test/data/android/render_tests/AllDismissedItemTest.evening.Nexus_5-19.png b/chrome/test/data/android/render_tests/AllDismissedItemTest.evening.Nexus_5-19.png new file mode 100644 index 0000000..b6b86417 --- /dev/null +++ b/chrome/test/data/android/render_tests/AllDismissedItemTest.evening.Nexus_5-19.png Binary files differ
diff --git a/chrome/test/data/android/render_tests/AllDismissedItemTest.modern.Nexus_5-19.png b/chrome/test/data/android/render_tests/AllDismissedItemTest.modern.Nexus_5-19.png new file mode 100644 index 0000000..eda9158 --- /dev/null +++ b/chrome/test/data/android/render_tests/AllDismissedItemTest.modern.Nexus_5-19.png Binary files differ
diff --git a/chrome/test/data/android/render_tests/AllDismissedItemTest.morning.Nexus_5-19.png b/chrome/test/data/android/render_tests/AllDismissedItemTest.morning.Nexus_5-19.png new file mode 100644 index 0000000..b3531d7 --- /dev/null +++ b/chrome/test/data/android/render_tests/AllDismissedItemTest.morning.Nexus_5-19.png Binary files differ
diff --git a/chrome/test/data/webui/extensions/cr_extensions_browsertest.js b/chrome/test/data/webui/extensions/cr_extensions_browsertest.js index 26c587e..e78f983 100644 --- a/chrome/test/data/webui/extensions/cr_extensions_browsertest.js +++ b/chrome/test/data/webui/extensions/cr_extensions_browsertest.js
@@ -197,11 +197,23 @@ } }; -TEST_F('CrExtensionsItemListTest', 'Filtering', function() { +// This test is flaky on Mac10.9 Tests (dbg). See https://crbug.com/771099. +GEN('#if defined(OS_MACOSX)'); +GEN('#define MAYBE_Filtering DISABLED_Filtering'); +GEN('#else'); +GEN('#define MAYBE_Filtering Filtering'); +GEN('#endif'); +TEST_F('CrExtensionsItemListTest', 'MAYBE_Filtering', function() { mocha.grep(assert(extension_item_list_tests.TestNames.Filtering)).run(); }); -TEST_F('CrExtensionsItemListTest', 'NoItems', function() { +// This test is flaky on Mac10.9 Tests (dbg). See https://crbug.com/771099. +GEN('#if defined(OS_MACOSX)'); +GEN('#define MAYBE_NoItems DISABLED_NoItems'); +GEN('#else'); +GEN('#define MAYBE_NoItems NoItems'); +GEN('#endif'); +TEST_F('CrExtensionsItemListTest', 'MAYBE_NoItems', function() { mocha.grep(assert(extension_item_list_tests.TestNames.NoItemsMsg)).run(); });
diff --git a/components/cronet/android/test/javatests/src/org/chromium/net/CronetUrlRequestTest.java b/components/cronet/android/test/javatests/src/org/chromium/net/CronetUrlRequestTest.java index 86fb1b8..3d108936 100644 --- a/components/cronet/android/test/javatests/src/org/chromium/net/CronetUrlRequestTest.java +++ b/components/cronet/android/test/javatests/src/org/chromium/net/CronetUrlRequestTest.java
@@ -249,7 +249,7 @@ UrlResponseInfo expected = createUrlResponseInfo(new String[] {NativeTestServer.getRedirectURL()}, "Found", - 302, 74, "Location", "/success.txt", "redirect-header", "header-value"); + 302, 73, "Location", "/success.txt", "redirect-header", "header-value"); mTestRule.assertResponseEquals(expected, callback.mRedirectResponseInfoList.get(0)); // Wait for an unrelated request to finish. The request should not @@ -297,7 +297,7 @@ UrlResponseInfo urlResponseInfo = createUrlResponseInfo( new String[] {NativeTestServer.getRedirectURL(), NativeTestServer.getSuccessURL()}, - "OK", 200, 260, "Content-Type", "text/plain", "Access-Control-Allow-Origin", "*", + "OK", 200, 258, "Content-Type", "text/plain", "Access-Control-Allow-Origin", "*", "header-name", "header-value", "multi-header-name", "header-value1", "multi-header-name", "header-value2"); @@ -627,7 +627,7 @@ // Check first redirect (multiredirect.html -> redirect.html) UrlResponseInfo firstExpectedResponseInfo = createUrlResponseInfo( - new String[] {NativeTestServer.getMultiRedirectURL()}, "Found", 302, 77, "Location", + new String[] {NativeTestServer.getMultiRedirectURL()}, "Found", 302, 76, "Location", "/redirect.html", "redirect-header0", "header-value"); UrlResponseInfo firstRedirectResponseInfo = callback.mRedirectResponseInfoList.get(0); mTestRule.assertResponseEquals(firstExpectedResponseInfo, firstRedirectResponseInfo); @@ -636,7 +636,7 @@ UrlResponseInfo secondExpectedResponseInfo = createUrlResponseInfo( new String[] {NativeTestServer.getMultiRedirectURL(), NativeTestServer.getRedirectURL(), NativeTestServer.getSuccessURL()}, - "OK", 200, 337, "Content-Type", "text/plain", "Access-Control-Allow-Origin", "*", + "OK", 200, 334, "Content-Type", "text/plain", "Access-Control-Allow-Origin", "*", "header-name", "header-value", "multi-header-name", "header-value1", "multi-header-name", "header-value2"); @@ -653,7 +653,7 @@ TestUrlRequestCallback callback = startAndWaitForComplete(NativeTestServer.getNotFoundURL()); UrlResponseInfo expected = createUrlResponseInfo( - new String[] {NativeTestServer.getNotFoundURL()}, "Not Found", 404, 121); + new String[] {NativeTestServer.getNotFoundURL()}, "Not Found", 404, 120); mTestRule.assertResponseEquals(expected, callback.mResponseInfo); assertTrue(callback.mHttpResponseDataLength != 0); assertEquals(0, callback.mRedirectCount);
diff --git a/components/omnibox/browser/omnibox_view.cc b/components/omnibox/browser/omnibox_view.cc index f0bcfc5..82432a9 100644 --- a/components/omnibox/browser/omnibox_view.cc +++ b/components/omnibox/browser/omnibox_view.cc
@@ -88,11 +88,8 @@ // Invalid URLs such as chrome://history can end up here. if (!match.destination_url.is_valid() || !model_) return; - const AutocompleteMatch::Type match_type = match.type; model_->OpenMatch( match, disposition, alternate_nav_url, pasted_text, selected_line); - // WARNING: |match| may refer to a deleted object at this point! - OnMatchOpened(match_type); } bool OmniboxView::IsEditingOrEmpty() const { @@ -148,9 +145,6 @@ return false; } -void OmniboxView::OnMatchOpened(AutocompleteMatch::Type match_type) { -} - void OmniboxView::GetState(State* state) { state->text = GetText(); state->keyword = model()->keyword();
diff --git a/components/omnibox/browser/omnibox_view.h b/components/omnibox/browser/omnibox_view.h index 9997df4..016b618 100644 --- a/components/omnibox/browser/omnibox_view.h +++ b/components/omnibox/browser/omnibox_view.h
@@ -211,9 +211,6 @@ // only ever return true on mobile ports. virtual bool IsIndicatingQueryRefinement() const; - // Called after a match has been opened. - virtual void OnMatchOpened(AutocompleteMatch::Type match_type); - // Returns |text| with any leading javascript schemas stripped. static base::string16 StripJavascriptSchemas(const base::string16& text);
diff --git a/components/payments/content/can_make_payment_query_factory.cc b/components/payments/content/can_make_payment_query_factory.cc index 2f881730..0d8adbb 100644 --- a/components/payments/content/can_make_payment_query_factory.cc +++ b/components/payments/content/can_make_payment_query_factory.cc
@@ -28,6 +28,12 @@ CanMakePaymentQueryFactory::~CanMakePaymentQueryFactory() {} +content::BrowserContext* CanMakePaymentQueryFactory::GetBrowserContextToUse( + content::BrowserContext* context) const { + // Create a separate instance of the service for the Incognito context. + return context; +} + KeyedService* CanMakePaymentQueryFactory::BuildServiceInstanceFor( content::BrowserContext* context) const { return new CanMakePaymentQuery;
diff --git a/components/payments/content/can_make_payment_query_factory.h b/components/payments/content/can_make_payment_query_factory.h index 3d67e03..068e42587 100644 --- a/components/payments/content/can_make_payment_query_factory.h +++ b/components/payments/content/can_make_payment_query_factory.h
@@ -35,6 +35,8 @@ ~CanMakePaymentQueryFactory() override; // BrowserContextKeyedServiceFactory: + content::BrowserContext* GetBrowserContextToUse( + content::BrowserContext* context) const override; KeyedService* BuildServiceInstanceFor( content::BrowserContext* context) const override;
diff --git a/components/payments/content/payment_request.cc b/components/payments/content/payment_request.cc index fc9f6a2..402e847 100644 --- a/components/payments/content/payment_request.cc +++ b/components/payments/content/payment_request.cc
@@ -7,6 +7,7 @@ #include <string> #include <utility> +#include "base/feature_list.h" #include "base/memory/ptr_util.h" #include "base/stl_util.h" #include "components/payments/content/can_make_payment_query_factory.h" @@ -22,6 +23,7 @@ #include "content/public/browser/browser_thread.h" #include "content/public/browser/render_frame_host.h" #include "content/public/browser/web_contents.h" +#include "content/public/common/content_features.h" namespace payments { @@ -250,35 +252,6 @@ observer_for_testing_->OnCanMakePaymentCalled(); } -void PaymentRequest::CanMakePaymentCallback(bool can_make_payment) { - if (delegate_->IsIncognito()) { - client_->OnCanMakePayment( - mojom::CanMakePaymentQueryResult::CAN_MAKE_PAYMENT); - journey_logger_.SetCanMakePaymentValue(true); - } else if (CanMakePaymentQueryFactory::GetInstance() - ->GetForContext(web_contents_->GetBrowserContext()) - ->CanQuery(top_level_origin_, frame_origin_, - spec()->stringified_method_data())) { - client_->OnCanMakePayment( - can_make_payment - ? mojom::CanMakePaymentQueryResult::CAN_MAKE_PAYMENT - : mojom::CanMakePaymentQueryResult::CANNOT_MAKE_PAYMENT); - journey_logger_.SetCanMakePaymentValue(can_make_payment); - } else if (OriginSecurityChecker::IsOriginLocalhostOrFile(frame_origin_)) { - client_->OnCanMakePayment( - can_make_payment - ? mojom::CanMakePaymentQueryResult::WARNING_CAN_MAKE_PAYMENT - : mojom::CanMakePaymentQueryResult::WARNING_CANNOT_MAKE_PAYMENT); - journey_logger_.SetCanMakePaymentValue(can_make_payment); - } else { - client_->OnCanMakePayment( - mojom::CanMakePaymentQueryResult::QUERY_QUOTA_EXCEEDED); - } - - if (observer_for_testing_) - observer_for_testing_->OnCanMakePaymentReturned(); -} - void PaymentRequest::OnPaymentResponseAvailable( mojom::PaymentResponsePtr response) { journey_logger_.SetEventOccurred( @@ -351,4 +324,36 @@ } } +void PaymentRequest::CanMakePaymentCallback(bool can_make_payment) { + if (delegate_->IsIncognito()) { + RespondToCanMakePaymentQuery( + spec()->HasBasicCardMethodName() || + base::FeatureList::IsEnabled(features::kServiceWorkerPaymentApps)); + } else if (CanMakePaymentQueryFactory::GetInstance() + ->GetForContext(web_contents_->GetBrowserContext()) + ->CanQuery(top_level_origin_, frame_origin_, + spec()->stringified_method_data())) { + RespondToCanMakePaymentQuery(can_make_payment); + } else if (OriginSecurityChecker::IsOriginLocalhostOrFile(frame_origin_)) { + client_->OnCanMakePayment( + can_make_payment + ? mojom::CanMakePaymentQueryResult::WARNING_CAN_MAKE_PAYMENT + : mojom::CanMakePaymentQueryResult::WARNING_CANNOT_MAKE_PAYMENT); + journey_logger_.SetCanMakePaymentValue(can_make_payment); + } else { + client_->OnCanMakePayment( + mojom::CanMakePaymentQueryResult::QUERY_QUOTA_EXCEEDED); + } + + if (observer_for_testing_) + observer_for_testing_->OnCanMakePaymentReturned(); +} + +void PaymentRequest::RespondToCanMakePaymentQuery(bool can_make_payment) { + client_->OnCanMakePayment( + can_make_payment ? mojom::CanMakePaymentQueryResult::CAN_MAKE_PAYMENT + : mojom::CanMakePaymentQueryResult::CANNOT_MAKE_PAYMENT); + journey_logger_.SetCanMakePaymentValue(can_make_payment); +} + } // namespace payments
diff --git a/components/payments/content/payment_request.h b/components/payments/content/payment_request.h index a43ee8e..83f9f70c 100644 --- a/components/payments/content/payment_request.h +++ b/components/payments/content/payment_request.h
@@ -106,9 +106,15 @@ // the first one being the most precise. void RecordFirstAbortReason(JourneyLogger::AbortReason completion_status); - // The PaymentRequestState::CanMakePaymentCallback. + // The PaymentRequestState::CanMakePaymentCallback. Checks for incognito mode + // and query quota and so may send QUERY_QUOTA_EXCEEDED. void CanMakePaymentCallback(bool can_make_payment); + // Sends either CAN_MAKE_PAYMENT or CANNOT_MAKE_PAYMENT to the renderer, + // depending on |can_make_payment| value. Never sends QUERY_QUOTA_EXCEEDED. + // Does not check quota or incognito mode. + void RespondToCanMakePaymentQuery(bool can_make_payment); + content::WebContents* web_contents_; std::unique_ptr<PaymentRequestDelegate> delegate_; // |manager_| owns this PaymentRequest.
diff --git a/components/payments/content/payment_request_spec.cc b/components/payments/content/payment_request_spec.cc index 5f1de17..5f2785745 100644 --- a/components/payments/content/payment_request_spec.cc +++ b/components/payments/content/payment_request_spec.cc
@@ -208,6 +208,10 @@ return details_->shipping_options; } +bool PaymentRequestSpec::HasBasicCardMethodName() const { + return !supported_card_networks_set_.empty(); +} + const mojom::PaymentDetailsModifierPtr* PaymentRequestSpec::GetApplicableModifier( PaymentInstrument* selected_instrument) const {
diff --git a/components/payments/content/payment_request_spec.h b/components/payments/content/payment_request_spec.h index 39ee7a75..23cc19de 100644 --- a/components/payments/content/payment_request_spec.h +++ b/components/payments/content/payment_request_spec.h
@@ -143,6 +143,10 @@ return method_data_; } + // Returns whether any of the payment method names are "basic-card" or one of + // the networks ("visa", "amex", "mastercard", etc). + bool HasBasicCardMethodName() const; + private: // Returns the first applicable modifier in the Payment Request for the // |selected_instrument|.
diff --git a/components/previews/core/BUILD.gn b/components/previews/core/BUILD.gn index 84d89fe..a3898f3 100644 --- a/components/previews/core/BUILD.gn +++ b/components/previews/core/BUILD.gn
@@ -17,6 +17,8 @@ "previews_features.h", "previews_io_data.cc", "previews_io_data.h", + "previews_log.cc", + "previews_log.h", "previews_opt_out_store.h", "previews_opt_out_store_sql.cc", "previews_opt_out_store_sql.h", @@ -42,6 +44,7 @@ "previews_black_list_unittest.cc", "previews_experiments_unittest.cc", "previews_io_data_unittest.cc", + "previews_log_unittest.cc", "previews_opt_out_store_sql_unittest.cc", "previews_ui_service_unittest.cc", ]
diff --git a/components/previews/core/previews_black_list.cc b/components/previews/core/previews_black_list.cc index c4f0570..82186b3 100644 --- a/components/previews/core/previews_black_list.cc +++ b/components/previews/core/previews_black_list.cc
@@ -70,9 +70,9 @@ PreviewsBlackList::~PreviewsBlackList() {} -void PreviewsBlackList::AddPreviewNavigation(const GURL& url, - bool opt_out, - PreviewsType type) { +base::Time PreviewsBlackList::AddPreviewNavigation(const GURL& url, + bool opt_out, + PreviewsType type) { DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(url.has_host()); @@ -81,39 +81,44 @@ GetStringNameForType(type).c_str()), base::HistogramBase::kUmaTargetedHistogramFlag) ->Add(opt_out); + + base::Time now = clock_->Now(); if (opt_out) { - last_opt_out_time_ = clock_->Now(); + last_opt_out_time_ = now; } // If the |black_list_item_map_| has been loaded from |opt_out_store_|, // synchronous operations will be accurate. Otherwise, queue the task to run // asynchronously. if (loaded_) { - AddPreviewNavigationSync(url, opt_out, type); + AddPreviewNavigationSync(url, opt_out, type, now); } else { QueuePendingTask(base::Bind(&PreviewsBlackList::AddPreviewNavigationSync, - base::Unretained(this), url, opt_out, type)); + base::Unretained(this), url, opt_out, type, + now)); } + + return now; } void PreviewsBlackList::AddPreviewNavigationSync(const GURL& url, bool opt_out, - PreviewsType type) { + PreviewsType type, + base::Time time) { DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(url.has_host()); DCHECK(loaded_); DCHECK(host_indifferent_black_list_item_); DCHECK(black_list_item_map_); std::string host_name = url.host(); - base::Time now = clock_->Now(); PreviewsBlackListItem* item = GetOrCreateBlackListItemForMap(black_list_item_map_.get(), host_name); - item->AddPreviewNavigation(opt_out, now); + item->AddPreviewNavigation(opt_out, time); DCHECK_LE(black_list_item_map_->size(), params::MaxInMemoryHostsInBlackList()); - host_indifferent_black_list_item_->AddPreviewNavigation(opt_out, now); + host_indifferent_black_list_item_->AddPreviewNavigation(opt_out, time); if (!opt_out_store_) return; - opt_out_store_->AddPreviewNavigation(opt_out, host_name, type, now); + opt_out_store_->AddPreviewNavigation(opt_out, host_name, type, time); } PreviewsEligibilityReason PreviewsBlackList::IsLoadedAndAllowed(
diff --git a/components/previews/core/previews_black_list.h b/components/previews/core/previews_black_list.h index b552283..5133450 100644 --- a/components/previews/core/previews_black_list.h +++ b/components/previews/core/previews_black_list.h
@@ -81,8 +81,11 @@ // navigated away from the page without opting out. |type| is only passed to // the backing store. If the in memory map has reached the max number of hosts // allowed, and |url| is a new host, a host will be evicted based on recency - // of the hosts most recent opt out. - void AddPreviewNavigation(const GURL& url, bool opt_out, PreviewsType type); + // of the hosts most recent opt out. It returns the time used for recording + // the moment when the navigation is added for logging. + base::Time AddPreviewNavigation(const GURL& url, + bool opt_out, + PreviewsType type); // Synchronously determines if |host_name| should be allowed to show previews. // Returns the reason the blacklist disallowed the preview, or @@ -108,10 +111,13 @@ CreateHostIndifferentBlackListItem(); private: - // Synchronous version of AddPreviewNavigation method. + // Synchronous version of AddPreviewNavigation method. |time| is the time + // stamp of when the navigation was determined to be an opt-out or non-opt + // out. void AddPreviewNavigationSync(const GURL& host_name, bool opt_out, - PreviewsType type); + PreviewsType type, + base::Time time); // Synchronous version of ClearBlackList method. void ClearBlackListSync(base::Time begin_time, base::Time end_time);
diff --git a/components/previews/core/previews_io_data.cc b/components/previews/core/previews_io_data.cc index 725f71c..2827735 100644 --- a/components/previews/core/previews_io_data.cc +++ b/components/previews/core/previews_io_data.cc
@@ -95,11 +95,22 @@ weak_factory_.GetWeakPtr())); } +void PreviewsIOData::LogPreviewNavigation(const GURL& url, + bool opt_out, + PreviewsType type, + base::Time time) { + ui_task_runner_->PostTask( + FROM_HERE, base::Bind(&PreviewsUIService::LogPreviewNavigation, + previews_ui_service_, url, type, opt_out, time)); +} + void PreviewsIOData::AddPreviewNavigation(const GURL& url, bool opt_out, PreviewsType type) { DCHECK(io_task_runner_->BelongsToCurrentThread()); - previews_black_list_->AddPreviewNavigation(url, opt_out, type); + base::Time time = + previews_black_list_->AddPreviewNavigation(url, opt_out, type); + LogPreviewNavigation(url, opt_out, type, time); } void PreviewsIOData::ClearBlackList(base::Time begin_time,
diff --git a/components/previews/core/previews_io_data.h b/components/previews/core/previews_io_data.h index 42e7349..081cca9 100644 --- a/components/previews/core/previews_io_data.h +++ b/components/previews/core/previews_io_data.h
@@ -17,6 +17,7 @@ #include "base/time/time.h" #include "components/previews/core/previews_decider.h" #include "components/previews/core/previews_experiments.h" +#include "components/previews/core/previews_log.h" #include "net/nqe/effective_connection_type.h" class GURL; @@ -49,6 +50,12 @@ std::unique_ptr<PreviewsOptOutStore> previews_opt_out_store, const PreviewsIsEnabledCallback& is_enabled_callback); + // Adds log message of the navigation asynchronously. + void LogPreviewNavigation(const GURL& url, + bool opt_out, + PreviewsType type, + base::Time time); + // Adds a navigation to |url| to the black list with result |opt_out|. void AddPreviewNavigation(const GURL& url, bool opt_out, PreviewsType type);
diff --git a/components/previews/core/previews_io_data_unittest.cc b/components/previews/core/previews_io_data_unittest.cc index 7b9f1ba..8e983a0 100644 --- a/components/previews/core/previews_io_data_unittest.cc +++ b/components/previews/core/previews_io_data_unittest.cc
@@ -25,6 +25,7 @@ #include "components/previews/core/previews_black_list.h" #include "components/previews/core/previews_black_list_item.h" #include "components/previews/core/previews_experiments.h" +#include "components/previews/core/previews_log.h" #include "components/previews/core/previews_opt_out_store.h" #include "components/previews/core/previews_ui_service.h" #include "components/variations/variations_associated_data.h" @@ -61,6 +62,53 @@ return false; } +// Stub class of PreviewsUIService to test logging functionalities in +// PreviewsIOData. +class TestPreviewsUIService : public PreviewsUIService { + public: + TestPreviewsUIService( + PreviewsIOData* previews_io_data, + const scoped_refptr<base::SingleThreadTaskRunner>& io_task_runner, + std::unique_ptr<PreviewsOptOutStore> previews_opt_out_store, + const PreviewsIsEnabledCallback& is_enabled_callback, + std::unique_ptr<PreviewsLogger> logger) + : PreviewsUIService(previews_io_data, + io_task_runner, + std::move(previews_opt_out_store), + is_enabled_callback, + std::move(logger)), + type_(PreviewsType::NONE) {} + + // Return the passed in url. + GURL url() const { return url_; } + + // Return the passed in opt_out. + bool opt_out() const { return opt_out_; } + + // Return the passed in type. + PreviewsType type() const { return type_; } + + // Return the passed in time. + base::Time time() const { return time_; } + + private: + // PreviewsUIService: + void LogPreviewNavigation(const GURL& url, + PreviewsType type, + bool opt_out, + base::Time time) override { + url_ = url; + opt_out_ = opt_out; + type_ = type; + time_ = base::Time(time); + } + + GURL url_; + bool opt_out_; + PreviewsType type_; + base::Time time_; +}; + class TestPreviewsIOData : public PreviewsIOData { public: TestPreviewsIOData( @@ -136,10 +184,11 @@ } void InitializeUIServiceWithoutWaitingForBlackList() { - ui_service_.reset(new PreviewsUIService( - &io_data_, loop_.task_runner(), - std::unique_ptr<TestPreviewsOptOutStore>(new TestPreviewsOptOutStore()), - base::Bind(&IsPreviewFieldTrialEnabled))); + ui_service_.reset( + new TestPreviewsUIService(&io_data_, loop_.task_runner(), + base::MakeUnique<TestPreviewsOptOutStore>(), + base::Bind(&IsPreviewFieldTrialEnabled), + base::MakeUnique<PreviewsLogger>())); } void InitializeUIService() { @@ -154,7 +203,7 @@ } TestPreviewsIOData* io_data() { return &io_data_; } - PreviewsUIService* ui_service() { return ui_service_.get(); } + TestPreviewsUIService* ui_service() { return ui_service_.get(); } net::TestURLRequestContext* context() { return &context_; } net::TestNetworkQualityEstimator* network_quality_estimator() { return &network_quality_estimator_; @@ -166,7 +215,7 @@ private: base::FieldTrialList field_trial_list_; TestPreviewsIOData io_data_; - std::unique_ptr<PreviewsUIService> ui_service_; + std::unique_ptr<TestPreviewsUIService> ui_service_; net::TestNetworkQualityEstimator network_quality_estimator_; net::TestURLRequestContext context_; }; @@ -447,6 +496,22 @@ variations::testing::ClearAllVariationParams(); } +TEST_F(PreviewsIODataTest, LogPreviewNavigationPassInCorrectParams) { + InitializeUIService(); + GURL url("http://www.url_a.com/url_a"); + bool opt_out = true; + PreviewsType type = PreviewsType::OFFLINE; + base::Time time = base::Time::Now(); + + io_data()->LogPreviewNavigation(url, opt_out, type, time); + base::RunLoop().RunUntilIdle(); + + EXPECT_EQ(url, ui_service()->url()); + EXPECT_EQ(opt_out, ui_service()->opt_out()); + EXPECT_EQ(type, ui_service()->type()); + EXPECT_EQ(time, ui_service()->time()); +} + } // namespace } // namespace previews
diff --git a/components/previews/core/previews_log.cc b/components/previews/core/previews_log.cc new file mode 100644 index 0000000..78f82095 --- /dev/null +++ b/components/previews/core/previews_log.cc
@@ -0,0 +1,69 @@ +// 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/previews/core/previews_log.h" + +#include "base/memory/ptr_util.h" +#include "base/strings/stringprintf.h" + +namespace previews { + +namespace { + +const char kPreviewNavigationEventType[] = "Navigation"; +const size_t kMaximumMessageLogs = 10; + +std::string GetPreviewNavigationDescription( + const PreviewsLogger::PreviewNavigation& navigation) { + return base::StringPrintf("%s preview navigation - user opt_out: %s", + GetStringNameForType(navigation.type).c_str(), + navigation.opt_out ? "True" : "False"); +} + +} // namespace + +PreviewsLogger::MessageLog::MessageLog(const std::string& event_type, + const std::string& event_description, + const GURL& url, + base::Time time) + : event_type(event_type), + event_description(event_description), + url(url), + time(time) {} + +PreviewsLogger::MessageLog::MessageLog(const MessageLog& other) + : event_type(other.event_type), + event_description(other.event_description), + url(other.url), + time(other.time) {} + +PreviewsLogger::PreviewsLogger() {} + +PreviewsLogger::~PreviewsLogger() {} + +std::vector<PreviewsLogger::MessageLog> PreviewsLogger::log_messages() const { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + return std::vector<MessageLog>(log_messages_.begin(), log_messages_.end()); +} + +void PreviewsLogger::LogMessage(const std::string& event_type, + const std::string& event_description, + const GURL& url, + base::Time time) { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + DCHECK_GE(kMaximumMessageLogs, log_messages_.size()); + if (log_messages_.size() >= kMaximumMessageLogs) { + log_messages_.pop_front(); + } + log_messages_.emplace_back(event_type, event_description, url, time); +} + +void PreviewsLogger::LogPreviewNavigation(const PreviewNavigation& navigation) { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + LogMessage(kPreviewNavigationEventType, + GetPreviewNavigationDescription(navigation), navigation.url, + navigation.time); +} + +} // namespace previews
diff --git a/components/previews/core/previews_log.h b/components/previews/core/previews_log.h new file mode 100644 index 0000000..6329d61 --- /dev/null +++ b/components/previews/core/previews_log.h
@@ -0,0 +1,94 @@ +// 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_PREVIEWS_CORE_PREVIEWS_LOG_H_ +#define COMPONENTS_PREVIEWS_CORE_PREVIEWS_LOG_H_ + +#include <list> +#include <string> + +#include "base/macros.h" +#include "base/sequence_checker.h" +#include "base/time/time.h" +#include "components/previews/core/previews_experiments.h" +#include "url/gurl.h" + +namespace previews { + +// Records information about previews and interventions events. The class only +// keeps the recent event logs. +class PreviewsLogger { + public: + // Information needed for a log message. This information will be used to + // display log messages on chrome://interventions-internals. + struct MessageLog { + MessageLog(const std::string& event_type, + const std::string& event_description, + const GURL& url, + base::Time time); + + MessageLog(const MessageLog& other); + + // The type of event associated with the log. + const std::string event_type; + + // Human readable description of the event. + const std::string event_description; + + // The url associated with the log. + const GURL url; + + // The time of when the event happened. + const base::Time time; + }; + + // Information about a preview navigation. + struct PreviewNavigation { + PreviewNavigation(const GURL& url, + PreviewsType type, + bool opt_out, + base::Time time) + : url(url), type(type), opt_out(opt_out), time(time) {} + + // The url associated with the log. + const GURL url; + + const PreviewsType type; + + // Opt out status of the navigation. + const bool opt_out; + + // Time stamp of when the navigation was determined to be an opt out non-opt + // out. + const base::Time time; + }; + + PreviewsLogger(); + virtual ~PreviewsLogger(); + + std::vector<MessageLog> log_messages() const; + + // Add MessageLog using the given information. Pop out the oldest log if the + // size of |log_messages_| grows larger than a threshold. + void LogMessage(const std::string& event_type, + const std::string& event_description, + const GURL& url, + base::Time time); + + // Convert |navigation| to a MessageLog, and add that message to + // |log_messages_|. Virtual for testing. + virtual void LogPreviewNavigation(const PreviewNavigation& navigation); + + private: + // Collection of recorded log messages. + std::list<MessageLog> log_messages_; + + SEQUENCE_CHECKER(sequence_checker_); + + DISALLOW_COPY_AND_ASSIGN(PreviewsLogger); +}; + +} // namespace previews + +#endif // COMPONENTS_PREVIEWS_CORE_PREVIEWS_LOG_H
diff --git a/components/previews/core/previews_log_unittest.cc b/components/previews/core/previews_log_unittest.cc new file mode 100644 index 0000000..cb09c4f --- /dev/null +++ b/components/previews/core/previews_log_unittest.cc
@@ -0,0 +1,119 @@ +// 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/previews/core/previews_log.h" + +#include <vector> + +#include "base/macros.h" +#include "base/memory/ptr_util.h" +#include "base/time/time.h" +#include "testing/gtest/include/gtest/gtest.h" + +namespace previews { + +namespace { + +const char kPreviewsNavigationEventType[] = "Navigation"; +const size_t kMaximumMessageLogs = 10; + +} // namespace + +class PreviewsLoggerTest : public testing::Test { + public: + PreviewsLoggerTest() {} + + ~PreviewsLoggerTest() override {} + + void SetUp() override { logger_ = base::MakeUnique<PreviewsLogger>(); } + + protected: + std::unique_ptr<PreviewsLogger> logger_; +}; + +TEST_F(PreviewsLoggerTest, AddLogMessageToLogger) { + size_t expected_size = 0; + EXPECT_EQ(expected_size, logger_->log_messages().size()); + + const PreviewsLogger::MessageLog expected_messages[] = { + PreviewsLogger::MessageLog("Event_a", "Some description a", + GURL("http://www.url_a.com/url_a"), + base::Time::Now()), + PreviewsLogger::MessageLog("Event_b", "Some description b", + GURL("http://www.url_b.com/url_b"), + base::Time::Now()), + PreviewsLogger::MessageLog("Event_c", "Some description c", + GURL("http://www.url_c.com/url_c"), + base::Time::Now()), + }; + + for (auto message : expected_messages) { + logger_->LogMessage(message.event_type, message.event_description, + message.url, message.time); + } + + std::vector<PreviewsLogger::MessageLog> actual = logger_->log_messages(); + + expected_size = 3; + EXPECT_EQ(expected_size, actual.size()); + + for (size_t i = 0; i < actual.size(); i++) { + EXPECT_EQ(expected_messages[i].event_type, actual[i].event_type); + EXPECT_EQ(expected_messages[i].event_description, + actual[i].event_description); + EXPECT_EQ(expected_messages[i].time, actual[i].time); + EXPECT_EQ(expected_messages[i].url, actual[i].url); + } +} + +TEST_F(PreviewsLoggerTest, LogPreviewNavigationLogMessage) { + const base::Time time = base::Time::Now(); + + PreviewsType type_a = PreviewsType::OFFLINE; + PreviewsType type_b = PreviewsType::LOFI; + const GURL url_a("http://www.url_a.com/url_a"); + const GURL url_b("http://www.url_b.com/url_b"); + + PreviewsLogger::PreviewNavigation navigation_a(url_a, type_a, + true /* opt_out */, time); + PreviewsLogger::PreviewNavigation navigation_b(url_b, type_b, + false /* opt_out */, time); + + logger_->LogPreviewNavigation(navigation_a); + logger_->LogPreviewNavigation(navigation_b); + + std::vector<PreviewsLogger::MessageLog> actual = logger_->log_messages(); + + const size_t expected_size = 2; + EXPECT_EQ(expected_size, actual.size()); + + std::string expected_description_a = + "Offline preview navigation - user opt_out: True"; + EXPECT_EQ(kPreviewsNavigationEventType, actual[0].event_type); + EXPECT_EQ(expected_description_a, actual[0].event_description); + EXPECT_EQ(url_a, actual[0].url); + EXPECT_EQ(time, actual[0].time); + + std::string expected_description_b = + "LoFi preview navigation - user opt_out: False"; + EXPECT_EQ(kPreviewsNavigationEventType, actual[1].event_type); + EXPECT_EQ(expected_description_b, actual[1].event_description); + EXPECT_EQ(url_b, actual[1].url); + EXPECT_EQ(time, actual[1].time); +} + +TEST_F(PreviewsLoggerTest, PreviewsLoggerOnlyKeepsCertainNumberOfMessageLogs) { + const std::string event_type = "Event"; + const std::string event_description = "Some description"; + const base::Time time = base::Time::Now(); + const GURL url("http://www.url_.com/url_"); + + for (size_t i = 0; i < 2 * kMaximumMessageLogs; i++) { + logger_->LogMessage(event_type, event_description, url, time); + } + + EXPECT_EQ(kMaximumMessageLogs, logger_->log_messages().size()); +} + +} // namespace previews
diff --git a/components/previews/core/previews_ui_service.cc b/components/previews/core/previews_ui_service.cc index 44cbb21..30754c73 100644 --- a/components/previews/core/previews_ui_service.cc +++ b/components/previews/core/previews_ui_service.cc
@@ -14,8 +14,12 @@ PreviewsIOData* previews_io_data, const scoped_refptr<base::SingleThreadTaskRunner>& io_task_runner, std::unique_ptr<PreviewsOptOutStore> previews_opt_out_store, - const PreviewsIsEnabledCallback& is_enabled_callback) - : io_task_runner_(io_task_runner), weak_factory_(this) { + const PreviewsIsEnabledCallback& is_enabled_callback, + std::unique_ptr<PreviewsLogger> logger) + : io_task_runner_(io_task_runner), + logger_(std::move(logger)), + weak_factory_(this) { + DCHECK(logger_); previews_io_data->Initialize(weak_factory_.GetWeakPtr(), std::move(previews_opt_out_store), is_enabled_callback); @@ -39,6 +43,15 @@ url, opt_out, type)); } +void PreviewsUIService::LogPreviewNavigation(const GURL& url, + PreviewsType type, + bool opt_out, + base::Time time) { + DCHECK(thread_checker_.CalledOnValidThread()); + logger_->LogPreviewNavigation( + PreviewsLogger::PreviewNavigation(url, type, opt_out, time)); +} + void PreviewsUIService::ClearBlackList(base::Time begin_time, base::Time end_time) { DCHECK(thread_checker_.CalledOnValidThread());
diff --git a/components/previews/core/previews_ui_service.h b/components/previews/core/previews_ui_service.h index 85dc8d1..4a220b8 100644 --- a/components/previews/core/previews_ui_service.h +++ b/components/previews/core/previews_ui_service.h
@@ -14,6 +14,7 @@ #include "base/time/time.h" #include "components/previews/core/previews_experiments.h" #include "components/previews/core/previews_io_data.h" +#include "components/previews/core/previews_log.h" #include "components/previews/core/previews_opt_out_store.h" class GURL; @@ -33,7 +34,8 @@ PreviewsIOData* previews_io_data, const scoped_refptr<base::SingleThreadTaskRunner>& io_task_runner, std::unique_ptr<PreviewsOptOutStore> previews_opt_out_store, - const PreviewsIsEnabledCallback& is_enabled_callback); + const PreviewsIsEnabledCallback& is_enabled_callback, + std::unique_ptr<PreviewsLogger> logger); virtual ~PreviewsUIService(); // Sets |io_data_| to |io_data| to allow calls from the UI thread to the IO @@ -46,6 +48,12 @@ // Clears the history of the black list between |begin_time| and |end_time|. void ClearBlackList(base::Time begin_time, base::Time end_time); + // Log the navigation to PreviewsLogger. Virtualized in testing. + virtual void LogPreviewNavigation(const GURL& url, + PreviewsType type, + bool opt_out, + base::Time time); + private: // The IO thread portion of the inter-thread communication for previews/. base::WeakPtr<previews::PreviewsIOData> io_data_; @@ -55,6 +63,9 @@ // The IO thread task runner. Used to post tasks to |io_data_|. scoped_refptr<base::SingleThreadTaskRunner> io_task_runner_; + // A log object to keep track of events such as previews navigations, + // blacklist actions, etc. + std::unique_ptr<PreviewsLogger> logger_; base::WeakPtrFactory<PreviewsUIService> weak_factory_; DISALLOW_COPY_AND_ASSIGN(PreviewsUIService);
diff --git a/components/previews/core/previews_ui_service_unittest.cc b/components/previews/core/previews_ui_service_unittest.cc index 0398ffd..b9aa322 100644 --- a/components/previews/core/previews_ui_service_unittest.cc +++ b/components/previews/core/previews_ui_service_unittest.cc
@@ -12,6 +12,7 @@ #include "base/run_loop.h" #include "base/single_thread_task_runner.h" #include "components/previews/core/previews_io_data.h" +#include "components/previews/core/previews_log.h" #include "testing/gtest/include/gtest/gtest.h" namespace previews { @@ -23,11 +24,13 @@ TestPreviewsUIService( PreviewsIOData* previews_io_data, const scoped_refptr<base::SingleThreadTaskRunner>& io_task_runner, - std::unique_ptr<PreviewsOptOutStore> previews_opt_out_store) + std::unique_ptr<PreviewsOptOutStore> previews_opt_out_store, + std::unique_ptr<PreviewsLogger> logger) : PreviewsUIService(previews_io_data, io_task_runner, std::move(previews_opt_out_store), - PreviewsIsEnabledCallback()), + PreviewsIsEnabledCallback(), + std::move(logger)), io_data_set_(false) {} ~TestPreviewsUIService() override {} @@ -45,12 +48,44 @@ bool io_data_set_; }; +// Mock class of PreviewsLogger for checking passed in parameters. +class TestPreviewsLogger : public PreviewsLogger { + public: + TestPreviewsLogger() {} + + void LogPreviewNavigation( + const PreviewsLogger::PreviewNavigation& navigation) override { + navigation_ = + base::MakeUnique<PreviewsLogger::PreviewNavigation>(navigation); + } + + // Return the passed in navigation. + PreviewsLogger::PreviewNavigation navigation() const { return *navigation_; } + + private: + std::unique_ptr<PreviewsLogger::PreviewNavigation> navigation_; +}; + class PreviewsUIServiceTest : public testing::Test { public: PreviewsUIServiceTest() {} ~PreviewsUIServiceTest() override {} + void SetUp() override { + std::unique_ptr<TestPreviewsLogger> logger = + base::MakeUnique<TestPreviewsLogger>(); + + // Use to testing logger data. + logger_ptr_ = logger.get(); + + set_io_data(base::WrapUnique( + new PreviewsIOData(loop_.task_runner(), loop_.task_runner()))); + set_ui_service(base::WrapUnique(new TestPreviewsUIService( + io_data(), loop_.task_runner(), nullptr, std::move(logger)))); + base::RunLoop().RunUntilIdle(); + } + void set_io_data(std::unique_ptr<PreviewsIOData> io_data) { io_data_ = std::move(io_data); } @@ -66,6 +101,7 @@ protected: // Run this test on a single thread. base::MessageLoopForIO loop_; + TestPreviewsLogger* logger_ptr_; private: std::unique_ptr<PreviewsIOData> io_data_; @@ -75,14 +111,36 @@ } // namespace TEST_F(PreviewsUIServiceTest, TestInitialization) { - set_io_data(base::WrapUnique( - new PreviewsIOData(loop_.task_runner(), loop_.task_runner()))); - set_ui_service(base::WrapUnique( - new TestPreviewsUIService(io_data(), loop_.task_runner(), nullptr))); - base::RunLoop().RunUntilIdle(); // After the outstanding posted tasks have run, SetIOData should have been // called for |ui_service_|. EXPECT_TRUE(ui_service()->io_data_set()); } +TEST_F(PreviewsUIServiceTest, TestLogPreviewNavigationPassInCorrectParams) { + const GURL url_a = GURL("http://www.url_a.com/url_a"); + PreviewsType lofi = PreviewsType::LOFI; + bool opt_out_a = true; + base::Time time = base::Time::Now(); + + ui_service()->LogPreviewNavigation(url_a, lofi, opt_out_a, time); + + PreviewsLogger::PreviewNavigation actual_a = logger_ptr_->navigation(); + EXPECT_EQ(url_a, actual_a.url); + EXPECT_EQ(lofi, actual_a.type); + EXPECT_EQ(opt_out_a, actual_a.opt_out); + EXPECT_EQ(time, actual_a.time); + + const GURL url_b = GURL("http://www.url_b.com/url_b"); + PreviewsType offline = PreviewsType::OFFLINE; + bool opt_out_b = false; + + ui_service()->LogPreviewNavigation(url_b, offline, opt_out_b, time); + + PreviewsLogger::PreviewNavigation actual_b = logger_ptr_->navigation(); + EXPECT_EQ(url_b, actual_b.url); + EXPECT_EQ(offline, actual_b.type); + EXPECT_EQ(opt_out_b, actual_b.opt_out); + EXPECT_EQ(time, actual_b.time); +} + } // namespace previews
diff --git a/components/search/OWNERS b/components/search/OWNERS index 9d7d94a..718b61f 100644 --- a/components/search/OWNERS +++ b/components/search/OWNERS
@@ -1,5 +1,5 @@ treib@chromium.org -# Original implementors of most of the code, but not active in Chromium anymore -jered@chromium.org -samarth@chromium.org +# Original implementors of most of the code, but not active in Chromium anymore: +# - jered@chromium.org +# - samarth@chromium.org
diff --git a/components/subresource_filter/core/browser/subresource_filter_features.cc b/components/subresource_filter/core/browser/subresource_filter_features.cc index 4e5bbf3f..8e07e3c 100644 --- a/components/subresource_filter/core/browser/subresource_filter_features.cc +++ b/components/subresource_filter/core/browser/subresource_filter_features.cc
@@ -4,10 +4,10 @@ #include "components/subresource_filter/core/browser/subresource_filter_features.h" +#include <algorithm> #include <map> #include <ostream> #include <sstream> -#include <string> #include <tuple> #include <utility> @@ -29,7 +29,7 @@ class CommaSeparatedStrings { public: - CommaSeparatedStrings(std::string comma_separated_strings) + explicit CommaSeparatedStrings(std::string comma_separated_strings) : backing_string_(comma_separated_strings), pieces_(base::SplitStringPiece(backing_string_, ",", @@ -129,7 +129,13 @@ {kPresetLiveRunOnPhishingSites, false, &Configuration::MakePresetForLiveRunOnPhishingSites}, {kPresetPerformanceTestingDryRunOnAllSites, false, - &Configuration::MakePresetForPerformanceTestingDryRunOnAllSites}}; + &Configuration::MakePresetForPerformanceTestingDryRunOnAllSites}, + {kPresetLiveRunForAbusiveAds, false, + &Configuration::MakePresetForLiveRunForAbusiveAds}, + {kPresetLiveRunForBetterAds, false, + &Configuration::MakePresetForLiveRunForBetterAds}, + {kPresetLiveRunForAllAds, false, + &Configuration::MakePresetForLiveRunForAllAds}}; CommaSeparatedStrings enabled_presets( TakeVariationParamOrReturnEmpty(params, kEnablePresetsParameterName)); @@ -286,6 +292,11 @@ const char kPresetLiveRunOnPhishingSites[] = "liverun_on_phishing_sites"; const char kPresetPerformanceTestingDryRunOnAllSites[] = "performance_testing_dryrun_on_all_sites"; +const char kPresetLiveRunForAbusiveAds[] = + "liverun_on_abusive_ad_violating_sites"; +const char kPresetLiveRunForBetterAds[] = + "liverun_on_better_ads_violating_sites"; +const char kPresetLiveRunForAllAds[] = "liverun_on_all_ads_violating_sites"; // Configuration -------------------------------------------------------------- @@ -316,6 +327,37 @@ return config; } +// static +Configuration Configuration::MakePresetForLiveRunForAbusiveAds() { + Configuration config(ActivationLevel::ENABLED, + ActivationScope::ACTIVATION_LIST, + ActivationList::ABUSIVE_ADS); + config.activation_options.should_disable_ruleset_rules = true; + config.activation_options.should_suppress_notifications = true; + config.activation_options.should_strengthen_popup_blocker = true; + config.activation_conditions.priority = 750; + return config; +} + +// static +Configuration Configuration::MakePresetForLiveRunForBetterAds() { + Configuration config(ActivationLevel::ENABLED, + ActivationScope::ACTIVATION_LIST, + ActivationList::BETTER_ADS); + config.activation_conditions.priority = 800; + return config; +} + +// static +Configuration Configuration::MakePresetForLiveRunForAllAds() { + Configuration config(ActivationLevel::ENABLED, + ActivationScope::ACTIVATION_LIST, + ActivationList::ALL_ADS); + config.activation_options.should_strengthen_popup_blocker = true; + config.activation_conditions.priority = 850; + return config; +} + Configuration::Configuration() = default; Configuration::Configuration(ActivationLevel activation_level, ActivationScope activation_scope,
diff --git a/components/subresource_filter/core/browser/subresource_filter_features.h b/components/subresource_filter/core/browser/subresource_filter_features.h index e01bdcb..e8b1062 100644 --- a/components/subresource_filter/core/browser/subresource_filter_features.h +++ b/components/subresource_filter/core/browser/subresource_filter_features.h
@@ -6,6 +6,7 @@ #define COMPONENTS_SUBRESOURCE_FILTER_CORE_BROWSER_SUBRESOURCE_FILTER_FEATURES_H_ #include <memory> +#include <string> #include <vector> #include "base/feature_list.h" @@ -133,6 +134,11 @@ // 4.) Update unittests to cover the new preset. static Configuration MakePresetForLiveRunOnPhishingSites(); static Configuration MakePresetForPerformanceTestingDryRunOnAllSites(); + static Configuration MakePresetForLiveRunForAbusiveAds(); + static Configuration MakePresetForLiveRunForBetterAds(); + + // Site violates abusive and better ads standards. + static Configuration MakePresetForLiveRunForAllAds(); // Not really a preset, but used as the configuration for forcing activation // (e.g. via devtools). @@ -236,6 +242,9 @@ extern const char kDisablePresetsParameterName[]; extern const char kPresetLiveRunOnPhishingSites[]; extern const char kPresetPerformanceTestingDryRunOnAllSites[]; +extern const char kPresetLiveRunForAbusiveAds[]; +extern const char kPresetLiveRunForBetterAds[]; +extern const char kPresetLiveRunForAllAds[]; } // namespace subresource_filter
diff --git a/components/subresource_filter/core/browser/subresource_filter_features_unittest.cc b/components/subresource_filter/core/browser/subresource_filter_features_unittest.cc index e52d6d5f..d004fd5 100644 --- a/components/subresource_filter/core/browser/subresource_filter_features_unittest.cc +++ b/components/subresource_filter/core/browser/subresource_filter_features_unittest.cc
@@ -582,6 +582,87 @@ {kPerformanceMeasurementRateParameterName, "1.0"}}); } +TEST(SubresourceFilterFeaturesTest, PresetForLiveRunOnAbusiveAdsSites) { + ExpectPresetCanBeEnabledByName( + Configuration::MakePresetForLiveRunForAbusiveAds(), + kPresetLiveRunForAbusiveAds); + const Configuration config = + Configuration::MakePresetForLiveRunForAbusiveAds(); + ExpectPresetIsEquivalentToVariationParams( + config, {{kActivationLevelParameterName, kActivationLevelEnabled}, + {kActivationScopeParameterName, kActivationScopeActivationList}, + {kActivationListsParameterName, kActivationListAbusiveAds}, + {kActivationPriorityParameterName, "750"}, + {kSuppressNotificationsParameterName, "true"}, + {kDisableRulesetRules, "true"}, + {kStrengthenPopupBlockerParameterName, "true"}}); + + EXPECT_EQ(ActivationList::ABUSIVE_ADS, + config.activation_conditions.activation_list); + EXPECT_EQ(ActivationScope::ACTIVATION_LIST, + config.activation_conditions.activation_scope); + EXPECT_EQ(750, config.activation_conditions.priority); + EXPECT_FALSE(config.activation_conditions.forced_activation); + EXPECT_EQ(ActivationLevel::ENABLED, + config.activation_options.activation_level); + EXPECT_EQ(0.0, config.activation_options.performance_measurement_rate); + EXPECT_TRUE(config.activation_options.should_suppress_notifications); + EXPECT_FALSE(config.activation_options.should_whitelist_site_on_reload); + EXPECT_TRUE(config.activation_options.should_strengthen_popup_blocker); + EXPECT_TRUE(config.activation_options.should_disable_ruleset_rules); +} + +TEST(SubresourceFilterFeaturesTest, PresetForLiveRunOnBetterAdsSites) { + ExpectPresetCanBeEnabledByName( + Configuration::MakePresetForLiveRunForBetterAds(), + kPresetLiveRunForBetterAds); + const Configuration config = + Configuration::MakePresetForLiveRunForBetterAds(); + ExpectPresetIsEquivalentToVariationParams( + config, {{kActivationLevelParameterName, kActivationLevelEnabled}, + {kActivationScopeParameterName, kActivationScopeActivationList}, + {kActivationListsParameterName, kActivationListBetterAds}, + {kActivationPriorityParameterName, "800"}}); + EXPECT_EQ(ActivationList::BETTER_ADS, + config.activation_conditions.activation_list); + EXPECT_EQ(ActivationScope::ACTIVATION_LIST, + config.activation_conditions.activation_scope); + EXPECT_EQ(800, config.activation_conditions.priority); + EXPECT_FALSE(config.activation_conditions.forced_activation); + EXPECT_EQ(ActivationLevel::ENABLED, + config.activation_options.activation_level); + EXPECT_EQ(0.0, config.activation_options.performance_measurement_rate); + EXPECT_FALSE(config.activation_options.should_suppress_notifications); + EXPECT_FALSE(config.activation_options.should_whitelist_site_on_reload); + EXPECT_FALSE(config.activation_options.should_strengthen_popup_blocker); + EXPECT_FALSE(config.activation_options.should_disable_ruleset_rules); +} + +TEST(SubresourceFilterFeaturesTest, PresetForLiveRunOnAllAdsSites) { + ExpectPresetCanBeEnabledByName(Configuration::MakePresetForLiveRunForAllAds(), + kPresetLiveRunForAllAds); + const Configuration config = Configuration::MakePresetForLiveRunForAllAds(); + ExpectPresetIsEquivalentToVariationParams( + config, {{kActivationLevelParameterName, kActivationLevelEnabled}, + {kActivationScopeParameterName, kActivationScopeActivationList}, + {kActivationListsParameterName, kActivationListAllAds}, + {kActivationPriorityParameterName, "850"}, + {kStrengthenPopupBlockerParameterName, "true"}}); + EXPECT_EQ(ActivationList::ALL_ADS, + config.activation_conditions.activation_list); + EXPECT_EQ(ActivationScope::ACTIVATION_LIST, + config.activation_conditions.activation_scope); + EXPECT_EQ(850, config.activation_conditions.priority); + EXPECT_FALSE(config.activation_conditions.forced_activation); + EXPECT_EQ(ActivationLevel::ENABLED, + config.activation_options.activation_level); + EXPECT_EQ(0.0, config.activation_options.performance_measurement_rate); + EXPECT_FALSE(config.activation_options.should_suppress_notifications); + EXPECT_FALSE(config.activation_options.should_whitelist_site_on_reload); + EXPECT_TRUE(config.activation_options.should_strengthen_popup_blocker); + EXPECT_FALSE(config.activation_options.should_disable_ruleset_rules); +} + TEST(SubresourceFilterFeaturesTest, ConfigurationPriorities) { const std::vector<Configuration> expected_order_by_decreasing_priority = { Configuration::MakePresetForLiveRunOnPhishingSites(),
diff --git a/components/test/data/payments/payment_method_identifier.js b/components/test/data/payments/payment_method_identifier.js index 6b04d0e..eb2c15e 100644 --- a/components/test/data/payments/payment_method_identifier.js +++ b/components/test/data/payments/payment_method_identifier.js
@@ -99,6 +99,48 @@ } /** + * Merchant checks for ability to pay using "https://alicepay.com/webpay". + */ +function checkAlicePay() { // eslint-disable-line no-unused-vars + canMakePaymentHelper([{ + supportedMethods: ['https://alicepay.com/webpay'], + }]); +} + +/** + * Merchant checks for ability to pay using "https://bobpay.com/webpay". + */ +function checkBobPay() { // eslint-disable-line no-unused-vars + canMakePaymentHelper([{ + supportedMethods: ['https://bobpay.com/webpay'], + }]); +} + +/** + * Merchant checks for ability to pay using "https://bobpay.com/webpay" or + * "basic-card". + */ +function checkBobPayAndBasicCard() { // eslint-disable-line no-unused-vars + canMakePaymentHelper([{ + supportedMethods: ['https://bobpay.com/webpay'], + }, { + supportedMethods: ['basic-card'], + }]); +} + +/** + * Merchant checks for ability to pay using "https://bobpay.com/webpay" or + * "visa". + */ +function checkBobPayAndVisa() { // eslint-disable-line no-unused-vars + canMakePaymentHelper([{ + supportedMethods: ['https://bobpay.com/webpay'], + }, { + supportedMethods: ['visa'], + }]); +} + +/** * Calls PaymentRequest.show() and prints out the result. * @param {sequence<PaymentMethodData>} methodData The supported methods. * @private
diff --git a/components/test/data/payments/payment_request_payment_method_identifier_test.html b/components/test/data/payments/payment_request_payment_method_identifier_test.html index 425e667..98a8725 100644 --- a/components/test/data/payments/payment_request_payment_method_identifier_test.html +++ b/components/test/data/payments/payment_request_payment_method_identifier_test.html
@@ -6,7 +6,7 @@ --> <html> <head> -<title>Basic Card Test</title> +<title>PMI Test</title> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> </head> @@ -17,6 +17,12 @@ <button onclick="checkBasicVisa()" id="checkBasicVisa">Check Basic Visa</button> <button onclick="checkMasterCard()" id="checkMasterCard">Check MasterCard</button> <button onclick="checkVisa()" id="checkVisa">Check Visa</button> +<button onclick="checkAlicePay()" id="checkAlicePay">Check AlicePay</button> +<button onclick="checkBobPay()" id="checkBobPay">Check BobPay</button> +<button onclick="checkBobPayAndBasicCard()" id="checkBobPayAndBasicCard">Check + BobPay and Basic Card</button> +<button onclick="checkBobPayAndVisa()" id="checkBobPayAndVisa">Check + BobPay and Visa</button> <button onclick="buy()" id="buy">Basic Card Test</button> <button onclick="buyBasicCard()" id="buyBasicCard">Buy With Basic Card</button> <button onclick="buyBasicDebit()" id="buyBasicDebit">Buy With Basic Debit Card</button>
diff --git a/components/ui_devtools/views/ui_devtools_dom_agent.cc b/components/ui_devtools/views/ui_devtools_dom_agent.cc index 7d92230..4c766f8 100644 --- a/components/ui_devtools/views/ui_devtools_dom_agent.cc +++ b/components/ui_devtools/views/ui_devtools_dom_agent.cc
@@ -318,6 +318,22 @@ render_text); } +void DrawR1BottomPartialLeftR2(const gfx::RectF& pinned_rect_f, + const gfx::RectF& hovered_rect_f, + const cc::PaintFlags& flags, + gfx::Canvas* canvas, + gfx::RenderText* render_text) { + float x1 = hovered_rect_f.x() + hovered_rect_f.width() / 2; + float y1 = pinned_rect_f.bottom(); + float x2 = x1; + float y2 = hovered_rect_f.y(); + + // Vertical left dotted line. + canvas->DrawLine(gfx::PointF(x1, y1), gfx::PointF(x2, y2), flags); + DrawTextWithAnyBounds(x1, y1, x2, y2, RectSide::LEFT_SIDE, canvas, + render_text); +} + } // namespace UIDevToolsDOMAgent::UIDevToolsDOMAgent() @@ -646,7 +662,8 @@ flags); return; case HighlightRectsConfiguration::R1_BOTTOM_PARTIAL_LEFT_R2: - NOTIMPLEMENTED(); + DrawR1BottomPartialLeftR2(pinned_rect_f, hovered_rect_f, flags, canvas, + render_text_.get()); return; case HighlightRectsConfiguration::R1_INTERSECTS_R2: NOTIMPLEMENTED();
diff --git a/components/ui_devtools/views/ui_devtools_unittest.cc b/components/ui_devtools/views/ui_devtools_unittest.cc index 40c1317..582e83f 100644 --- a/components/ui_devtools/views/ui_devtools_unittest.cc +++ b/components/ui_devtools/views/ui_devtools_unittest.cc
@@ -607,6 +607,50 @@ HighlightRectsConfiguration::R1_TOP_PARTIAL_LEFT_R2); } +// Test case R1_BOTTOM_PARTIAL_LEFT_R2. +TEST_F(UIDevToolsTest, OneUIElementStaysPartiallyBottomLeftOfAnother) { + const gfx::Rect bottom_left_rect(50, 200, 100, 100); + std::unique_ptr<views::Widget> widget_bottom_left( + CreateTestWidget(bottom_left_rect)); + + const gfx::Rect top_right_rect(100, 50, 50, 50); + std::unique_ptr<views::Widget> widget_top_right( + CreateTestWidget(top_right_rect)); + + std::unique_ptr<ui_devtools::protocol::DOM::Node> root; + dom_agent()->getDocument(&root); + + int bottom_left_rect_id = dom_agent()->FindElementIdTargetedByPoint( + bottom_left_rect.origin(), GetPrimaryRootWindow()); + int top_right_rect_id = dom_agent()->FindElementIdTargetedByPoint( + top_right_rect.origin(), GetPrimaryRootWindow()); + dom_agent()->ShowDistancesInHighlightOverlay(bottom_left_rect_id, + top_right_rect_id); + + HighlightRectsConfiguration highlight_rect_config = + dom_agent()->highlight_rect_config(); + + // Swapping R1 and R2 shouldn't change |highlight_rect_config|. + dom_agent()->ShowDistancesInHighlightOverlay(top_right_rect_id, + bottom_left_rect_id); + DCHECK_EQ(highlight_rect_config, dom_agent()->highlight_rect_config()); + + const std::pair<aura::Window*, gfx::Rect> element_bottom_left( + dom_agent() + ->GetElementFromNodeId(bottom_left_rect_id) + ->GetNodeWindowAndBounds()); + + const std::pair<aura::Window*, gfx::Rect> element_top_right( + dom_agent() + ->GetElementFromNodeId(top_right_rect_id) + ->GetNodeWindowAndBounds()); + + EXPECT_EQ(element_bottom_left.second, bottom_left_rect); + EXPECT_EQ(element_top_right.second, top_right_rect); + DCHECK_EQ(dom_agent()->highlight_rect_config(), + HighlightRectsConfiguration::R1_BOTTOM_PARTIAL_LEFT_R2); +} + // Tests that the correct Overlay events are dispatched to the frontend when // hovering and clicking over a UI element in inspect mode. TEST_F(UIDevToolsTest, MouseEventsGenerateFEEventsInInspectMode) {
diff --git a/components/viz/service/display/renderer_pixeltest.cc b/components/viz/service/display/renderer_pixeltest.cc index 405d8fe..5cabf64 100644 --- a/components/viz/service/display/renderer_pixeltest.cc +++ b/components/viz/service/display/renderer_pixeltest.cc
@@ -12,6 +12,7 @@ #include "cc/base/math_util.h" #include "cc/paint/paint_flags.h" #include "cc/paint/skia_paint_canvas.h" +#include "cc/resources/layer_tree_resource_provider.h" #include "cc/resources/video_resource_updater.h" #include "cc/test/fake_raster_source.h" #include "cc/test/fake_recording_source.h" @@ -210,6 +211,9 @@ resource_provider, render_pass); } +static void CollectResources(std::vector<ReturnedResource>* array, + const std::vector<ReturnedResource>& returned) {} + void CreateTestYUVVideoDrawQuad_FromVideoFrame( const SharedQuadState* shared_state, scoped_refptr<media::VideoFrame> video_frame, @@ -219,7 +223,8 @@ cc::VideoResourceUpdater* video_resource_updater, const gfx::Rect& rect, const gfx::Rect& visible_rect, - cc::ResourceProvider* resource_provider) { + cc::DisplayResourceProvider* resource_provider, + cc::LayerTreeResourceProvider* child_resource_provider) { const bool with_alpha = (video_frame->format() == media::PIXEL_FORMAT_YV12A); auto color_space = YUVVideoDrawQuad::REC_601; int video_frame_color_space; @@ -250,26 +255,53 @@ EXPECT_EQ(media::VideoFrame::NumPlanes(video_frame->format()), resources.release_callbacks.size()); - ResourceId y_resource = resource_provider->CreateResourceFromTextureMailbox( - resources.mailboxes[media::VideoFrame::kYPlane], - SingleReleaseCallback::Create( - resources.release_callbacks[media::VideoFrame::kYPlane])); - ResourceId u_resource = resource_provider->CreateResourceFromTextureMailbox( - resources.mailboxes[media::VideoFrame::kUPlane], - SingleReleaseCallback::Create( - resources.release_callbacks[media::VideoFrame::kUPlane])); - ResourceId v_resource = resource_provider->CreateResourceFromTextureMailbox( - resources.mailboxes[media::VideoFrame::kVPlane], - SingleReleaseCallback::Create( - resources.release_callbacks[media::VideoFrame::kVPlane])); - ResourceId a_resource = 0; + ResourceId resource_y = + child_resource_provider->CreateResourceFromTextureMailbox( + resources.mailboxes[media::VideoFrame::kYPlane], + SingleReleaseCallback::Create( + resources.release_callbacks[media::VideoFrame::kYPlane])); + ResourceId resource_u = + child_resource_provider->CreateResourceFromTextureMailbox( + resources.mailboxes[media::VideoFrame::kUPlane], + SingleReleaseCallback::Create( + resources.release_callbacks[media::VideoFrame::kUPlane])); + ResourceId resource_v = + child_resource_provider->CreateResourceFromTextureMailbox( + resources.mailboxes[media::VideoFrame::kVPlane], + SingleReleaseCallback::Create( + resources.release_callbacks[media::VideoFrame::kVPlane])); + ResourceId resource_a = 0; if (with_alpha) { - a_resource = resource_provider->CreateResourceFromTextureMailbox( + resource_a = child_resource_provider->CreateResourceFromTextureMailbox( resources.mailboxes[media::VideoFrame::kAPlane], SingleReleaseCallback::Create( resources.release_callbacks[media::VideoFrame::kAPlane])); } + // Transfer resources to the parent. + cc::ResourceProvider::ResourceIdArray resource_ids_to_transfer; + resource_ids_to_transfer.push_back(resource_y); + resource_ids_to_transfer.push_back(resource_u); + resource_ids_to_transfer.push_back(resource_v); + if (with_alpha) + resource_ids_to_transfer.push_back(resource_a); + std::vector<TransferableResource> list; + std::vector<ReturnedResource> returned_to_child; + int child_id = resource_provider->CreateChild( + base::Bind(&CollectResources, &returned_to_child)); + child_resource_provider->PrepareSendToParent(resource_ids_to_transfer, &list); + resource_provider->ReceiveFromChild(child_id, list); + + // Before create DrawQuad in DisplayResourceProvider's namespace, get the + // mapped resource id first. + cc::ResourceProvider::ResourceIdMap resource_map = + resource_provider->GetChildToParentMap(child_id); + ResourceId mapped_resource_y = resource_map[resource_y]; + ResourceId mapped_resource_u = resource_map[resource_u]; + ResourceId mapped_resource_v = resource_map[resource_v]; + ResourceId mapped_resource_a = 0; + if (with_alpha) + mapped_resource_a = resource_map[resource_a]; const gfx::Size ya_tex_size = video_frame->coded_size(); const gfx::Size uv_tex_size = media::VideoFrame::PlaneSize( video_frame->format(), media::VideoFrame::kUPlane, @@ -314,9 +346,9 @@ yuv_quad->SetNew(shared_state, rect, visible_rect, needs_blending, ya_tex_coord_rect, uv_tex_coord_rect, ya_tex_size, - uv_tex_size, y_resource, u_resource, v_resource, a_resource, - color_space, video_color_space, 0.0f, multiplier, - bits_per_channel); + uv_tex_size, mapped_resource_y, mapped_resource_u, + mapped_resource_v, mapped_resource_a, color_space, + video_color_space, 0.0f, multiplier, bits_per_channel); } void CreateTestY16TextureDrawQuad_FromVideoFrame( @@ -327,7 +359,8 @@ cc::VideoResourceUpdater* video_resource_updater, const gfx::Rect& rect, const gfx::Rect& visible_rect, - cc::ResourceProvider* resource_provider) { + cc::DisplayResourceProvider* resource_provider, + cc::LayerTreeResourceProvider* child_resource_provider) { cc::VideoFrameExternalResources resources = video_resource_updater->CreateExternalResourcesFromVideoFrame( video_frame); @@ -336,15 +369,32 @@ EXPECT_EQ(1u, resources.mailboxes.size()); EXPECT_EQ(1u, resources.release_callbacks.size()); - ResourceId y_resource = resource_provider->CreateResourceFromTextureMailbox( - resources.mailboxes[0], - SingleReleaseCallback::Create(resources.release_callbacks[0])); + ResourceId resource_y = + child_resource_provider->CreateResourceFromTextureMailbox( + resources.mailboxes[0], + SingleReleaseCallback::Create(resources.release_callbacks[0])); + + // Transfer resource to the parent. + cc::ResourceProvider::ResourceIdArray resource_ids_to_transfer; + resource_ids_to_transfer.push_back(resource_y); + std::vector<TransferableResource> list; + std::vector<ReturnedResource> returned_to_child; + int child_id = resource_provider->CreateChild( + base::Bind(&CollectResources, &returned_to_child)); + child_resource_provider->PrepareSendToParent(resource_ids_to_transfer, &list); + resource_provider->ReceiveFromChild(child_id, list); + + // Before create DrawQuad in DisplayResourceProvider's namespace, get the + // mapped resource id first. + cc::ResourceProvider::ResourceIdMap resource_map = + resource_provider->GetChildToParentMap(child_id); + ResourceId mapped_resource_y = resource_map[resource_y]; auto* quad = render_pass->CreateAndAppendDrawQuad<TextureDrawQuad>(); bool needs_blending = true; float vertex_opacity[4] = {1.0f, 1.0f, 1.0f, 1.0f}; - quad->SetNew(shared_state, rect, rect, needs_blending, y_resource, false, - tex_coord_rect.origin(), tex_coord_rect.bottom_right(), + quad->SetNew(shared_state, rect, rect, needs_blending, mapped_resource_y, + false, tex_coord_rect.origin(), tex_coord_rect.bottom_right(), SK_ColorBLACK, vertex_opacity, false, false, false); } @@ -404,7 +454,8 @@ cc::VideoResourceUpdater* video_resource_updater, const gfx::Rect& rect, const gfx::Rect& visible_rect, - cc::ResourceProvider* resource_provider) { + cc::DisplayResourceProvider* resource_provider, + cc::LayerTreeResourceProvider* child_resource_provider) { scoped_refptr<media::VideoFrame> video_frame = media::VideoFrame::CreateFrame( format, rect.size(), rect, rect.size(), base::TimeDelta()); @@ -441,7 +492,8 @@ CreateTestYUVVideoDrawQuad_FromVideoFrame( shared_state, video_frame, alpha_value, tex_coord_rect, render_pass, - video_resource_updater, rect, visible_rect, resource_provider); + video_resource_updater, rect, visible_rect, resource_provider, + child_resource_provider); } // Creates a video frame of size background_size filled with yuv_background, @@ -465,7 +517,8 @@ uint8_t v_foreground, RenderPass* render_pass, cc::VideoResourceUpdater* video_resource_updater, - cc::ResourceProvider* resource_provider) { + cc::DisplayResourceProvider* resource_provider, + cc::LayerTreeResourceProvider* child_resource_provider) { const gfx::Rect rect(background_size); scoped_refptr<media::VideoFrame> video_frame = @@ -508,7 +561,8 @@ uint8_t alpha_value = 255; CreateTestYUVVideoDrawQuad_FromVideoFrame( shared_state, video_frame, alpha_value, tex_coord_rect, render_pass, - video_resource_updater, rect, visible_rect, resource_provider); + video_resource_updater, rect, visible_rect, resource_provider, + child_resource_provider); } void CreateTestYUVVideoDrawQuad_Solid( @@ -524,7 +578,8 @@ cc::VideoResourceUpdater* video_resource_updater, const gfx::Rect& rect, const gfx::Rect& visible_rect, - cc::ResourceProvider* resource_provider) { + cc::DisplayResourceProvider* resource_provider, + cc::LayerTreeResourceProvider* child_resource_provider) { scoped_refptr<media::VideoFrame> video_frame = media::VideoFrame::CreateFrame( format, rect.size(), rect, rect.size(), base::TimeDelta()); video_frame->metadata()->SetInteger(media::VideoFrameMetadata::COLOR_SPACE, @@ -545,7 +600,8 @@ uint8_t alpha_value = is_transparent ? 0 : 128; CreateTestYUVVideoDrawQuad_FromVideoFrame( shared_state, video_frame, alpha_value, tex_coord_rect, render_pass, - video_resource_updater, rect, visible_rect, resource_provider); + video_resource_updater, rect, visible_rect, resource_provider, + child_resource_provider); } void CreateTestYUVVideoDrawQuad_NV12(const SharedQuadState* shared_state, @@ -615,7 +671,8 @@ const gfx::Rect& rect, const gfx::Rect& visible_rect, const gfx::Rect& foreground_rect, - cc::ResourceProvider* resource_provider) { + cc::DisplayResourceProvider* resource_provider, + cc::LayerTreeResourceProvider* child_resource_provider) { std::unique_ptr<unsigned char, base::AlignedFreeDeleter> memory( static_cast<unsigned char*>( base::AlignedAlloc(rect.size().GetArea() * 2, @@ -657,7 +714,8 @@ CreateTestY16TextureDrawQuad_FromVideoFrame( shared_state, video_frame, tex_coord_rect, render_pass, - video_resource_updater, rect, visible_rect, resource_provider); + video_resource_updater, rect, visible_rect, resource_provider, + child_resource_provider); } using RendererTypes = @@ -961,11 +1019,11 @@ IntersectingQuadPixelTest<TypeParam>::SetUp(); bool use_stream_video_draw_quad = false; video_resource_updater_ = std::make_unique<cc::VideoResourceUpdater>( - this->output_surface_->context_provider(), - this->resource_provider_.get(), use_stream_video_draw_quad); + this->child_context_provider_.get(), + this->child_resource_provider_.get(), use_stream_video_draw_quad); video_resource_updater2_ = std::make_unique<cc::VideoResourceUpdater>( - this->output_surface_->context_provider(), - this->resource_provider_.get(), use_stream_video_draw_quad); + this->child_context_provider_.get(), + this->child_resource_provider_.get(), use_stream_video_draw_quad); } protected: @@ -1142,14 +1200,14 @@ media::COLOR_SPACE_JPEG, false, gfx::RectF(0.0f, 0.0f, 1.0f, 1.0f), this->quad_rect_.size(), this->quad_rect_, 0, 128, 128, inner_rect, 29, 255, 107, this->render_pass_.get(), this->video_resource_updater_.get(), - this->resource_provider_.get()); + this->resource_provider_.get(), this->child_resource_provider_.get()); CreateTestYUVVideoDrawQuad_TwoColor( this->back_quad_state_, media::PIXEL_FORMAT_YV12, media::COLOR_SPACE_JPEG, false, gfx::RectF(0.0f, 0.0f, 1.0f, 1.0f), this->quad_rect_.size(), this->quad_rect_, 149, 43, 21, inner_rect, 0, 128, 128, this->render_pass_.get(), this->video_resource_updater2_.get(), - this->resource_provider_.get()); + this->resource_provider_.get(), this->child_resource_provider_.get()); SCOPED_TRACE("IntersectingVideoQuads"); this->AppendBackgroundAndRunTest( @@ -1169,13 +1227,13 @@ this->front_quad_state_, gfx::RectF(0.0f, 0.0f, 1.0f, 1.0f), 18, 0, this->render_pass_.get(), this->video_resource_updater_.get(), this->quad_rect_, this->quad_rect_, inner_rect, - this->resource_provider_.get()); + this->resource_provider_.get(), this->child_resource_provider_.get()); CreateTestY16TextureDrawQuad_TwoColor( this->back_quad_state_, gfx::RectF(0.0f, 0.0f, 1.0f, 1.0f), 0, 182, this->render_pass_.get(), this->video_resource_updater2_.get(), this->quad_rect_, this->quad_rect_, inner_rect, - this->resource_provider_.get()); + this->resource_provider_.get(), this->child_resource_provider_.get()); SCOPED_TRACE("IntersectingVideoQuads"); this->AppendBackgroundAndRunTest( @@ -1277,7 +1335,7 @@ shared_state, format, color_space, false, tex_coord_rect, background_size, gfx::Rect(background_size), 128, 128, 128, green_rect, 149, 43, 21, pass.get(), video_resource_updater_.get(), - resource_provider_.get()); + resource_provider_.get(), child_resource_provider_.get()); pass_list->push_back(std::move(pass)); } @@ -1341,7 +1399,8 @@ CreateTestYUVVideoDrawQuad_Striped( shared_state, media::PIXEL_FORMAT_YV12, media::COLOR_SPACE_SD_REC601, false, highbit, gfx::RectF(0.0f, 0.0f, 1.0f, 1.0f), pass.get(), - video_resource_updater_.get(), rect, rect, resource_provider_.get()); + video_resource_updater_.get(), rect, rect, resource_provider_.get(), + child_resource_provider_.get()); RenderPassList pass_list; pass_list.push_back(std::move(pass)); @@ -1373,7 +1432,7 @@ shared_state, media::PIXEL_FORMAT_YV12, media::COLOR_SPACE_SD_REC601, false, highbit, gfx::RectF(0.0f, 0.0f, 1.0f, 1.0f), pass.get(), video_resource_updater_.get(), draw_rect, viewport, - resource_provider_.get()); + resource_provider_.get(), child_resource_provider_.get()); RenderPassList pass_list; pass_list.push_back(std::move(pass)); @@ -1398,7 +1457,8 @@ CreateTestYUVVideoDrawQuad_Striped( shared_state, media::PIXEL_FORMAT_I420, media::COLOR_SPACE_SD_REC601, false, false, gfx::RectF(0.125f, 0.25f, 0.75f, 0.5f), pass.get(), - video_resource_updater_.get(), rect, rect, resource_provider_.get()); + video_resource_updater_.get(), rect, rect, resource_provider_.get(), + child_resource_provider_.get()); RenderPassList pass_list; pass_list.push_back(std::move(pass)); @@ -1424,7 +1484,8 @@ CreateTestYUVVideoDrawQuad_Solid( shared_state, media::PIXEL_FORMAT_YV12, media::COLOR_SPACE_SD_REC601, false, gfx::RectF(0.0f, 0.0f, 1.0f, 1.0f), 15, 128, 128, pass.get(), - video_resource_updater_.get(), rect, rect, resource_provider_.get()); + video_resource_updater_.get(), rect, rect, resource_provider_.get(), + child_resource_provider_.get()); RenderPassList pass_list; pass_list.push_back(std::move(pass)); @@ -1457,7 +1518,8 @@ CreateTestYUVVideoDrawQuad_Solid( shared_state, media::PIXEL_FORMAT_YV12, media::COLOR_SPACE_JPEG, false, gfx::RectF(0.0f, 0.0f, 1.0f, 1.0f), 149, 43, 21, pass.get(), - video_resource_updater_.get(), rect, rect, resource_provider_.get()); + video_resource_updater_.get(), rect, rect, resource_provider_.get(), + child_resource_provider_.get()); RenderPassList pass_list; pass_list.push_back(std::move(pass)); @@ -1527,7 +1589,8 @@ CreateTestYUVVideoDrawQuad_Solid( shared_state, media::PIXEL_FORMAT_YV12, media::COLOR_SPACE_JPEG, false, gfx::RectF(0.0f, 0.0f, 1.0f, 1.0f), 15, 128, 128, pass.get(), - video_resource_updater_.get(), rect, rect, resource_provider_.get()); + video_resource_updater_.get(), rect, rect, resource_provider_.get(), + child_resource_provider_.get()); RenderPassList pass_list; pass_list.push_back(std::move(pass)); @@ -1552,7 +1615,8 @@ CreateTestYUVVideoDrawQuad_Striped( shared_state, media::PIXEL_FORMAT_YV12A, media::COLOR_SPACE_SD_REC601, false, false, gfx::RectF(0.0f, 0.0f, 1.0f, 1.0f), pass.get(), - video_resource_updater_.get(), rect, rect, resource_provider_.get()); + video_resource_updater_.get(), rect, rect, resource_provider_.get(), + child_resource_provider_.get()); auto* color_quad = pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); color_quad->SetNew(shared_state, rect, rect, SK_ColorWHITE, false); @@ -1580,7 +1644,8 @@ CreateTestYUVVideoDrawQuad_Striped( shared_state, media::PIXEL_FORMAT_YV12A, media::COLOR_SPACE_SD_REC601, true, false, gfx::RectF(0.0f, 0.0f, 1.0f, 1.0f), pass.get(), - video_resource_updater_.get(), rect, rect, resource_provider_.get()); + video_resource_updater_.get(), rect, rect, resource_provider_.get(), + child_resource_provider_.get()); auto* color_quad = pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); color_quad->SetNew(shared_state, rect, rect, SK_ColorBLACK, false); @@ -1606,7 +1671,7 @@ CreateTestY16TextureDrawQuad_TwoColor( shared_state, gfx::RectF(0.0f, 0.0f, 1.0f, 1.0f), 68, 123, pass.get(), video_resource_updater_.get(), rect, rect, upper_rect, - resource_provider_.get()); + resource_provider_.get(), child_resource_provider_.get()); RenderPassList pass_list; pass_list.push_back(std::move(pass));
diff --git a/content/browser/indexed_db/indexed_db_browsertest.cc b/content/browser/indexed_db/indexed_db_browsertest.cc index c5768d2c..2ddcc64b1 100644 --- a/content/browser/indexed_db/indexed_db_browsertest.cc +++ b/content/browser/indexed_db/indexed_db_browsertest.cc
@@ -785,11 +785,12 @@ IN_PROC_BROWSER_TEST_F(IndexedDBBrowserTest, PRE_VersionChangeCrashResilience) { NavigateAndWaitForTitle(shell(), "version_change_crash.html", "#part2", "pass - part2 - crash me"); - // If we actually crash here then googletest will not run the next step - // (VersionChangeCrashResilience) as an optimization. googletest's - // ASSERT_DEATH/EXIT fails to work properly (on Windows) due to how we - // implement the PRE_* test mechanism. - exit(0); + // Previously this test would abruptly terminate the browser process + // to ensure that the version update was not partially committed, + // which was possible in the very early implementation (circa 2011). + // This test no longer abruptly terminates the process, but the + // commit scheme has changed so it's not plausible any more anyway. + // TODO(jsbell): Delete or rename the test. } // Fails to cleanup GPU processes on swarming.
diff --git a/content/browser/renderer_host/render_widget_host_view_child_frame.cc b/content/browser/renderer_host/render_widget_host_view_child_frame.cc index a1e3b0b..7bbfe6e 100644 --- a/content/browser/renderer_host/render_widget_host_view_child_frame.cc +++ b/content/browser/renderer_host/render_widget_host_view_child_frame.cc
@@ -8,6 +8,7 @@ #include <utility> #include <vector> +#include "base/debug/dump_without_crashing.h" #include "base/location.h" #include "base/memory/ptr_util.h" #include "base/single_thread_task_runner.h" @@ -120,6 +121,11 @@ auto* manager = root_view->GetTouchSelectionControllerClientManager(); if (manager) manager->RemoveObserver(this); + } else { + // We should never get here, but maybe we are? Test this out with a + // diagnostic we can track. If we do get here, it would explain + // https://crbug.com/760074. + base::debug::DumpWithoutCrashing(); } selection_controller_client_.reset();
diff --git a/content/browser/service_worker/service_worker_registration.cc b/content/browser/service_worker/service_worker_registration.cc index 98c16b7..6f55751 100644 --- a/content/browser/service_worker/service_worker_registration.cc +++ b/content/browser/service_worker/service_worker_registration.cc
@@ -4,7 +4,7 @@ #include "content/browser/service_worker/service_worker_registration.h" -#include <vector> +#include <utility> #include "base/threading/thread_task_runner_handle.h" #include "content/browser/service_worker/embedded_worker_status.h" @@ -411,15 +411,6 @@ scoped_refptr<ServiceWorkerRegistration> protect(this); UnsetVersion(version.get()); - - for (std::unique_ptr<ServiceWorkerContextCore::ProviderHostIterator> it = - context_->GetProviderHostIterator(); - !it->IsAtEnd(); it->Advance()) { - ServiceWorkerProviderHost* host = it->GetProviderHost(); - if (host->controller() == version) - host->NotifyControllerLost(); - } - version->Doom(); if (!active_version() && !waiting_version()) {
diff --git a/content/browser/service_worker/service_worker_version.cc b/content/browser/service_worker/service_worker_version.cc index 0bc434c..6255ba25 100644 --- a/content/browser/service_worker/service_worker_version.cc +++ b/content/browser/service_worker/service_worker_version.cc
@@ -741,7 +741,17 @@ } void ServiceWorkerVersion::Doom() { + // Tell controllees that this version is dead. Each controllee will call + // ServiceWorkerVersion::RemoveControllee(), so be careful with iterators. + auto iter = controllee_map_.begin(); + while (iter != controllee_map_.end()) { + ServiceWorkerProviderHost* host = iter->second; + ++iter; + host->NotifyControllerLost(); + } + // Any controllee this version had should have removed itself. DCHECK(!HasControllee()); + SetStatus(REDUNDANT); if (running_status() == EmbeddedWorkerStatus::STARTING || running_status() == EmbeddedWorkerStatus::RUNNING) {
diff --git a/content/browser/service_worker/service_worker_version.h b/content/browser/service_worker/service_worker_version.h index 259a6f9..18de8c9 100644 --- a/content/browser/service_worker/service_worker_version.h +++ b/content/browser/service_worker/service_worker_version.h
@@ -336,7 +336,6 @@ void SetStartWorkerStatusCode(ServiceWorkerStatusCode status); // Sets this version's status to REDUNDANT and deletes its resources. - // The version must not have controllees. void Doom(); bool is_redundant() const { return status_ == REDUNDANT; }
diff --git a/content/browser/service_worker/service_worker_version_unittest.cc b/content/browser/service_worker/service_worker_version_unittest.cc index afce9ef..6789c2b3 100644 --- a/content/browser/service_worker/service_worker_version_unittest.cc +++ b/content/browser/service_worker/service_worker_version_unittest.cc
@@ -144,7 +144,7 @@ } private: - explicit TestServiceImpl() {} + TestServiceImpl() {} }; } // namespace @@ -170,13 +170,13 @@ base::BindOnce(&base::DoNothing)); base::RunLoop().RunUntilIdle(); - pattern_ = GURL("http://www.example.com/test/"); + pattern_ = GURL("https://www.example.com/test/"); registration_ = new ServiceWorkerRegistration( blink::mojom::ServiceWorkerRegistrationOptions(pattern_), 1L, helper_->context()->AsWeakPtr()); version_ = new ServiceWorkerVersion( registration_.get(), - GURL("http://www.example.com/test/service_worker.js"), + GURL("https://www.example.com/test/service_worker.js"), helper_->context()->storage()->NewVersionId(), helper_->context()->AsWeakPtr()); std::vector<ServiceWorkerDatabase::ResourceRecord> records; @@ -594,6 +594,29 @@ ASSERT_EQ(ServiceWorkerVersion::REDUNDANT, statuses[4]); } +TEST_F(ServiceWorkerVersionTest, Doom) { + // Add a controllee. + version_->SetStatus(ServiceWorkerVersion::ACTIVATED); + registration_->SetActiveVersion(version_); + ServiceWorkerRemoteProviderEndpoint remote_endpoint; + std::unique_ptr<ServiceWorkerProviderHost> host = CreateProviderHostForWindow( + 33 /* dummy render process id */, 1 /* dummy provider_id */, + true /* is_parent_frame_secure */, helper_->context()->AsWeakPtr(), + &remote_endpoint); + host->SetDocumentUrl(registration_->pattern()); + host->AssociateRegistration(registration_.get(), false); + EXPECT_TRUE(version_->HasControllee()); + EXPECT_TRUE(host->controller()); + + // Doom the version. + version_->Doom(); + + // The controllee should have been removed. + EXPECT_EQ(ServiceWorkerVersion::REDUNDANT, version_->status()); + EXPECT_FALSE(version_->HasControllee()); + EXPECT_FALSE(host->controller()); +} + TEST_F(ServiceWorkerVersionTest, IdleTimeout) { // Used to reliably test when the idle time gets reset regardless of clock // granularity. @@ -734,7 +757,6 @@ // Test that staleness is detected when starting a worker. TEST_F(ServiceWorkerVersionTest, StaleUpdate_StartWorker) { - // Starting the worker marks it as stale. version_->SetStatus(ServiceWorkerVersion::ACTIVATED); registration_->SetActiveVersion(version_); @@ -1242,8 +1264,8 @@ EXPECT_EQ(EmbeddedWorkerStatus::RUNNING, version_->running_status()); EXPECT_EQ(0, helper_->mock_render_process_host()->bad_msg_count()); - GURL valid_scope_1("http://www.example.com/test/subscope"); - GURL valid_scope_2("http://www.example.com/test/othersubscope"); + GURL valid_scope_1("https://www.example.com/test/subscope"); + GURL valid_scope_2("https://www.example.com/test/othersubscope"); std::vector<GURL> valid_scopes; valid_scopes.push_back(valid_scope_1); valid_scopes.push_back(valid_scope_2); @@ -1263,7 +1285,7 @@ // Subscope outside the scope of the worker. version_->RegisterForeignFetchScopes( - std::vector<GURL>(1, GURL("http://www.example.com/wrong")), + std::vector<GURL>(1, GURL("https://www.example.com/wrong")), valid_origin_list); base::RunLoop().RunUntilIdle(); EXPECT_EQ(2, helper_->mock_render_process_host()->bad_msg_count()); @@ -1272,7 +1294,7 @@ // Subscope on wrong origin. version_->RegisterForeignFetchScopes( - std::vector<GURL>(1, GURL("http://example.com/test/")), + std::vector<GURL>(1, GURL("https://example.com/test/")), valid_origin_list); base::RunLoop().RunUntilIdle(); EXPECT_EQ(3, helper_->mock_render_process_host()->bad_msg_count());
diff --git a/content/browser/snapshot_browsertest.cc b/content/browser/snapshot_browsertest.cc index 555a69cc..48d181f 100644 --- a/content/browser/snapshot_browsertest.cc +++ b/content/browser/snapshot_browsertest.cc
@@ -236,7 +236,13 @@ } } -IN_PROC_BROWSER_TEST_F(SnapshotBrowserTest, SyncMultiWindowTest) { +// This test is flaky Mac10.9 Tests (dbg). See crbug.com/771119. +#if defined(OS_MACOSX) +#define MAYBE_SyncMultiWindowTest DISABLED_SyncMultiWindowTest +#else +#define MAYBE_SyncMultiWindowTest SyncMultiWindowTest +#endif +IN_PROC_BROWSER_TEST_F(SnapshotBrowserTest, MAYBE_SyncMultiWindowTest) { SetupTestServer(); for (int i = 0; i < 3; ++i) { @@ -289,7 +295,13 @@ } } -IN_PROC_BROWSER_TEST_F(SnapshotBrowserTest, AsyncMultiWindowTest) { +// This test is flaky Mac10.9 Tests (dbg). See crbug.com/771119. +#if defined(OS_MACOSX) +#define MAYBE_AsyncMultiWindowTest DISABLED_AsyncMultiWindowTest +#else +#define MAYBE_AsyncMultiWindowTest AsyncMultiWindowTest +#endif +IN_PROC_BROWSER_TEST_F(SnapshotBrowserTest, MAYBE_AsyncMultiWindowTest) { SetupTestServer(); for (int i = 0; i < 3; ++i) {
diff --git a/content/child/service_worker/service_worker_subresource_loader.cc b/content/child/service_worker/service_worker_subresource_loader.cc index 93eca998..cc73544 100644 --- a/content/child/service_worker/service_worker_subresource_loader.cc +++ b/content/child/service_worker/service_worker_subresource_loader.cc
@@ -130,6 +130,13 @@ const ServiceWorkerResponse& response, storage::mojom::BlobPtr body_as_blob, blink::mojom::ServiceWorkerStreamHandlePtr body_as_stream) { + // A response with status code 0 is Blink telling us to respond with network + // error. + if (response.status_code == 0) { + DeliverErrorResponse(); + return; + } + ServiceWorkerLoaderHelpers::SaveResponseInfo(response, &response_head_); ServiceWorkerLoaderHelpers::SaveResponseHeaders( response.status_code, response.status_text, response.headers,
diff --git a/content/child/service_worker/service_worker_subresource_loader_unittest.cc b/content/child/service_worker/service_worker_subresource_loader_unittest.cc index bfa5b48..d4b5a00 100644 --- a/content/child/service_worker/service_worker_subresource_loader_unittest.cc +++ b/content/child/service_worker/service_worker_subresource_loader_unittest.cc
@@ -95,6 +95,9 @@ stream_handle_->stream = std::move(consumer_handle); } + // Tells this controller to respond to fetch events with a error response. + void RespondWithError() { response_mode_ = ResponseMode::kErrorResponse; } + // mojom::ControllerServiceWorker: void DispatchFetchEvent( const ServiceWorkerFetchRequest& request, @@ -125,6 +128,22 @@ response_callback->OnFallback(base::Time::Now()); std::move(callback).Run(SERVICE_WORKER_OK, base::Time::Now()); return; + case ResponseMode::kErrorResponse: + response_callback->OnResponse( + ServiceWorkerResponse( + base::MakeUnique<std::vector<GURL>>(), 0 /* status_code */, + "" /* status_text */, + network::mojom::FetchResponseType::kDefault, + base::MakeUnique<ServiceWorkerHeaderMap>(), "" /* blob_uuid */, + 0 /* blob_size */, nullptr /* blob */, + blink::kWebServiceWorkerResponseErrorPromiseRejected, + base::Time(), false /* response_is_in_cache_storage */, + std::string() /* response_cache_storage_cache_name */, + base::MakeUnique< + ServiceWorkerHeaderList>() /* cors_exposed_header_names */), + base::Time::Now()); + std::move(callback).Run(SERVICE_WORKER_OK, base::Time::Now()); + return; } NOTREACHED(); } @@ -135,7 +154,12 @@ } private: - enum class ResponseMode { kDefault, kStream, kFallbackResponse }; + enum class ResponseMode { + kDefault, + kStream, + kFallbackResponse, + kErrorResponse + }; ResponseMode response_mode_ = ResponseMode::kDefault; @@ -361,6 +385,15 @@ // performed the fallback. } +TEST_F(ServiceWorkerSubresourceLoaderTest, ErrorResponse) { + fake_controller_.RespondWithError(); + + // Perform the request. + TestRequest(GURL("https://www.example.com/foo.html"), "GET"); + + EXPECT_EQ(net::ERR_FAILED, url_loader_client_.completion_status().error_code); +} + // TODO(kinuko): Add more tests. } // namespace content
diff --git a/content/public/test/test_launcher.cc b/content/public/test/test_launcher.cc index a9feb90..66620f1 100644 --- a/content/public/test/test_launcher.cc +++ b/content/public/test/test_launcher.cc
@@ -25,6 +25,7 @@ #include "base/strings/string_number_conversions.h" #include "base/strings/string_util.h" #include "base/strings/utf_string_conversions.h" +#include "base/test/gtest_xml_util.h" #include "base/test/launcher/test_launcher.h" #include "base/test/scoped_task_environment.h" #include "base/test/test_suite.h" @@ -156,9 +157,15 @@ const base::TestResult& pre_test_result); // Callback to receive result of a test. + // |output_file| is a path to xml file written by test-launcher + // child process. It contains information about test and failed + // EXPECT/ASSERT/DCHECK statements. Test launcher parses that + // file to get additional information about test run (status, + // error-messages, stack-traces and file/line for failures). void GTestCallback(base::TestLauncher* test_launcher, const std::vector<std::string>& test_names, const std::string& test_name, + const base::FilePath& output_file, std::unique_ptr<TestState> test_state, int exit_code, const base::TimeDelta& elapsed_time, @@ -368,6 +375,16 @@ // of the other tests. switches.erase(base::kGTestOutputFlag); + // Create a dedicated temporary directory to store the xml result data + // per run to ensure clean state and make it possible to launch multiple + // processes in parallel. + base::FilePath output_file; + CHECK(base::CreateTemporaryDirInDir( + temp_dir_.GetPath(), FILE_PATH_LITERAL("results"), &output_file)); + output_file = output_file.AppendASCII("test_results.xml"); + + new_cmd_line.AppendSwitchPath(switches::kTestLauncherOutput, output_file); + for (base::CommandLine::SwitchMap::const_iterator iter = switches.begin(); iter != switches.end(); ++iter) { new_cmd_line.AppendSwitchNative(iter->first, iter->second); @@ -387,7 +404,7 @@ TestTimeouts::action_max_timeout(), test_launch_options, base::Bind(&WrapperTestLauncherDelegate::GTestCallback, base::Unretained(this), test_launcher, test_names_copy, - test_name, base::Passed(&test_state_ptr)), + test_name, output_file, base::Passed(&test_state_ptr)), base::Bind(&CallChildProcessLaunched, base::Unretained(test_state))); } @@ -419,6 +436,7 @@ base::TestLauncher* test_launcher, const std::vector<std::string>& test_names, const std::string& test_name, + const base::FilePath& output_file, std::unique_ptr<TestState> test_state, int exit_code, const base::TimeDelta& elapsed_time, @@ -427,13 +445,45 @@ base::TestResult result; result.full_name = test_name; - // TODO(phajdan.jr): Recognize crashes. - if (exit_code == 0) - result.status = base::TestResult::TEST_SUCCESS; - else if (was_timeout) - result.status = base::TestResult::TEST_TIMEOUT; - else - result.status = base::TestResult::TEST_FAILURE; + bool crashed = false; + std::vector<base::TestResult> parsed_results; + bool have_test_results = + base::ProcessGTestOutput(output_file, &parsed_results, &crashed); + + if (!base::DeleteFile(output_file.DirName(), true)) { + LOG(WARNING) << "Failed to delete output file: " << output_file.value(); + } + + // Use GTest XML to determine test status. Fallback to exit code if + // parsing failed. + if (have_test_results && !parsed_results.empty()) { + // We expect only one test result here. + DCHECK_EQ(1U, parsed_results.size()); + DCHECK_EQ(test_name, parsed_results.front().full_name); + + result = parsed_results.front(); + + if (was_timeout) { + // Fix up test status: we forcibly kill the child process + // after the timeout, so from XML results it looks like + // a crash. + result.status = base::TestResult::TEST_TIMEOUT; + } else if (result.status == base::TestResult::TEST_SUCCESS && + exit_code != 0) { + // This is a bit surprising case: test is marked as successful, + // but the exit code was not zero. This can happen e.g. under + // memory tools that report leaks this way. Mark test as a + // failure on exit. + result.status = base::TestResult::TEST_FAILURE_ON_EXIT; + } + } else { + if (was_timeout) + result.status = base::TestResult::TEST_TIMEOUT; + else if (exit_code != 0) + result.status = base::TestResult::TEST_FAILURE; + else + result.status = base::TestResult::TEST_UNKNOWN; + } result.elapsed_time = elapsed_time;
diff --git a/docs/android_debugging_instructions.md b/docs/android_debugging_instructions.md index 705b538..62fd19fe 100644 --- a/docs/android_debugging_instructions.md +++ b/docs/android_debugging_instructions.md
@@ -106,8 +106,8 @@ ## Waiting for Java Debugger on Early Startup -* To debug early startup, pass `--wait-for-java-debugger` as a command line - flag. +* To debug early startup, pass `--wait-for-java-debugger` to the wrapper + scripts (works for both apk wrappers as well as test wrappers). ## Debugging C/C++
diff --git a/ios/chrome/app/resources/BUILD.gn b/ios/chrome/app/resources/BUILD.gn index f270ee36..1df3a16 100644 --- a/ios/chrome/app/resources/BUILD.gn +++ b/ios/chrome/app/resources/BUILD.gn
@@ -75,6 +75,7 @@ appiconset("chromium_icons") { sources = [ "chromium/AppIcon.appiconset/Contents.json", + "chromium/AppIcon.appiconset/Icon-1024.png", "chromium/AppIcon.appiconset/Icon-120.png", "chromium/AppIcon.appiconset/Icon-152.png", "chromium/AppIcon.appiconset/Icon-167.png",
diff --git a/ios/chrome/app/resources/chromium/AppIcon.appiconset/Contents.json b/ios/chrome/app/resources/chromium/AppIcon.appiconset/Contents.json index 77b86e8..929c8cb6 100644 --- a/ios/chrome/app/resources/chromium/AppIcon.appiconset/Contents.json +++ b/ios/chrome/app/resources/chromium/AppIcon.appiconset/Contents.json
@@ -101,6 +101,7 @@ { "idiom" : "ios-marketing", "size" : "1024x1024", + "filename" : "Icon-1024.png", "scale" : "1x" } ],
diff --git a/ios/chrome/app/resources/chromium/AppIcon.appiconset/Icon-1024.png b/ios/chrome/app/resources/chromium/AppIcon.appiconset/Icon-1024.png new file mode 100644 index 0000000..2276c75e --- /dev/null +++ b/ios/chrome/app/resources/chromium/AppIcon.appiconset/Icon-1024.png Binary files differ
diff --git a/ios/chrome/browser/ui/payments/payment_request_manager.mm b/ios/chrome/browser/ui/payments/payment_request_manager.mm index 572a9e2..e14f4cc4 100644 --- a/ios/chrome/browser/ui/payments/payment_request_manager.mm +++ b/ios/chrome/browser/ui/payments/payment_request_manager.mm
@@ -716,9 +716,15 @@ } if (paymentRequest->IsIncognito()) { - [_paymentRequestJsManager resolveCanMakePaymentPromiseWithValue:YES - completionHandler:nil]; - paymentRequest->journey_logger().SetCanMakePaymentValue(true); + BOOL privacyPreservingResponse = + !paymentRequest->supported_card_networks_set().empty() || + base::FeatureList::IsEnabled( + payments::features::kWebPaymentsNativeApps); + [_paymentRequestJsManager + resolveCanMakePaymentPromiseWithValue:privacyPreservingResponse + completionHandler:nil]; + paymentRequest->journey_logger().SetCanMakePaymentValue( + privacyPreservingResponse); return YES; }
diff --git a/ios/net/cookies/cookie_store_ios.mm b/ios/net/cookies/cookie_store_ios.mm index d8e021c..91130150 100644 --- a/ios/net/cookies/cookie_store_ios.mm +++ b/ios/net/cookies/cookie_store_ios.mm
@@ -763,7 +763,7 @@ NSArray* nscookies = system_store_->GetCookiesForURL(url); bool found_cookies = false; for (NSHTTPCookie* nscookie in nscookies) { - if (nscookie.name.UTF8String == name) { + if (base::SysNSStringToUTF8(nscookie.name) == name) { net::CanonicalCookie canonical_cookie = CanonicalCookieFromSystemCookie( nscookie, creation_time_manager_->GetCreationTime(nscookie)); cookies->push_back(canonical_cookie);
diff --git a/net/http/http_proxy_client_socket_wrapper.cc b/net/http/http_proxy_client_socket_wrapper.cc index a69f954..d67438d 100644 --- a/net/http/http_proxy_client_socket_wrapper.cc +++ b/net/http/http_proxy_client_socket_wrapper.cc
@@ -431,8 +431,7 @@ SpdySessionKey key(GetDestination().host_port_pair(), ProxyServer::Direct(), PRIVACY_MODE_DISABLED); if (spdy_session_pool_->FindAvailableSession( - key, GURL(), - /* enable_ip_based_pooling = */ true, net_log_)) { + key, /* enable_ip_based_pooling = */ true, net_log_)) { using_spdy_ = true; next_state_ = STATE_SPDY_PROXY_CREATE_STREAM; return OK; @@ -545,8 +544,7 @@ PRIVACY_MODE_DISABLED); base::WeakPtr<SpdySession> spdy_session = spdy_session_pool_->FindAvailableSession( - key, GURL(), - /* enable_ip_based_pooling = */ true, net_log_); + key, /* enable_ip_based_pooling = */ true, net_log_); // It's possible that a session to the proxy has recently been created if (spdy_session) { if (transport_socket_handle_.get()) {
diff --git a/net/http/http_stream_factory_impl_job.cc b/net/http/http_stream_factory_impl_job.cc index 56699bb3a..2822212 100644 --- a/net/http/http_stream_factory_impl_job.cc +++ b/net/http/http_stream_factory_impl_job.cc
@@ -547,7 +547,6 @@ int HttpStreamFactoryImpl::Job::OnHostResolution( SpdySessionPool* spdy_session_pool, const SpdySessionKey& spdy_session_key, - const GURL& origin_url, bool enable_ip_based_pooling, const AddressList& addresses, const NetLogWithSource& net_log) { @@ -555,7 +554,7 @@ // ClientSocketPoolManager will be destroyed in the same callback that // destroys the SpdySessionPool. return spdy_session_pool->FindAvailableSession( - spdy_session_key, origin_url, enable_ip_based_pooling, net_log) + spdy_session_key, enable_ip_based_pooling, net_log) ? ERR_SPDY_SESSION_ALREADY_EXISTS : OK; } @@ -923,12 +922,17 @@ return rv; } - // Check first if we have a spdy session for this group. If so, then go - // straight to using that. + // Check first if there is a pushed stream matching the request, or an HTTP/2 + // connection this request can pool to. If so, then go straight to using + // that. if (CanUseExistingSpdySession()) { base::WeakPtr<SpdySession> spdy_session = - session_->spdy_session_pool()->FindAvailableSession( - spdy_session_key_, origin_url_, enable_ip_based_pooling_, net_log_); + session_->spdy_session_pool()->push_promise_index()->Find( + spdy_session_key_, origin_url_); + if (!spdy_session) { + spdy_session = session_->spdy_session_pool()->FindAvailableSession( + spdy_session_key_, enable_ip_based_pooling_, net_log_); + } if (spdy_session) { // If we're preconnecting, but we already have a SpdySession, we don't // actually need to preconnect any sockets, so we're done. @@ -969,7 +973,7 @@ OnHostResolutionCallback resolution_callback = CanUseExistingSpdySession() ? base::Bind(&Job::OnHostResolution, session_->spdy_session_pool(), - spdy_session_key_, origin_url_, enable_ip_based_pooling_) + spdy_session_key_, enable_ip_based_pooling_) : OnHostResolutionCallback(); if (delegate_->for_websockets()) { SSLConfig websocket_server_ssl_config = server_ssl_config_; @@ -1003,7 +1007,7 @@ // probably an IP pooled connection. existing_spdy_session_ = session_->spdy_session_pool()->FindAvailableSession( - spdy_session_key_, origin_url_, enable_ip_based_pooling_, net_log_); + spdy_session_key_, enable_ip_based_pooling_, net_log_); if (existing_spdy_session_) { using_spdy_ = true; next_state_ = STATE_CREATE_STREAM; @@ -1191,10 +1195,19 @@ CHECK(!stream_.get()); + // It is possible that a pushed stream has been opened by a server since last + // time Job checked above. + if (!existing_spdy_session_) { + existing_spdy_session_ = + session_->spdy_session_pool()->push_promise_index()->Find( + spdy_session_key_, origin_url_); + } + // It is also possible that an HTTP/2 connection has been established since + // last time Job checked above. if (!existing_spdy_session_) { existing_spdy_session_ = session_->spdy_session_pool()->FindAvailableSession( - spdy_session_key_, origin_url_, enable_ip_based_pooling_, net_log_); + spdy_session_key_, enable_ip_based_pooling_, net_log_); } if (existing_spdy_session_.get()) { // We picked up an existing session, so we don't need our socket.
diff --git a/net/http/http_stream_factory_impl_job.h b/net/http/http_stream_factory_impl_job.h index ec80491..7bc00f0 100644 --- a/net/http/http_stream_factory_impl_job.h +++ b/net/http/http_stream_factory_impl_job.h
@@ -400,7 +400,6 @@ // session is found, and OK otherwise. static int OnHostResolution(SpdySessionPool* spdy_session_pool, const SpdySessionKey& spdy_session_key, - const GURL& origin_url, bool enable_ip_based_pooling, const AddressList& addresses, const NetLogWithSource& net_log);
diff --git a/net/spdy/chromium/http2_push_promise_index.h b/net/spdy/chromium/http2_push_promise_index.h index 1c149f1..451554a 100644 --- a/net/spdy/chromium/http2_push_promise_index.h +++ b/net/spdy/chromium/http2_push_promise_index.h
@@ -8,6 +8,7 @@ #include <map> #include <vector> +#include "base/macros.h" #include "base/memory/weak_ptr.h" #include "net/base/net_export.h" #include "net/spdy/chromium/spdy_session_key.h" @@ -21,7 +22,6 @@ public: Http2PushPromiseIndex(); ~Http2PushPromiseIndex(); - Http2PushPromiseIndex(const Http2PushPromiseIndex&) = delete; // If there is a session for |key| that has an unclaimed push stream for // |url|, return it. Otherwise return nullptr. @@ -44,6 +44,8 @@ // but it is possible that multiple SpdySessions have pushed streams for the // same GURL. UnclaimedPushedStreamMap unclaimed_pushed_streams_; + + DISALLOW_COPY_AND_ASSIGN(Http2PushPromiseIndex); }; } // namespace net
diff --git a/net/spdy/chromium/spdy_network_transaction_unittest.cc b/net/spdy/chromium/spdy_network_transaction_unittest.cc index 3a95020..7f53458 100644 --- a/net/spdy/chromium/spdy_network_transaction_unittest.cc +++ b/net/spdy/chromium/spdy_network_transaction_unittest.cc
@@ -432,14 +432,12 @@ // This lengthy block is reaching into the pool to dig out the active // session. Once we have the session, we verify that the streams are // all closed and not leaked at this point. - const GURL& url = helper.request().url; - SpdySessionKey key(HostPortPair::FromURL(url), ProxyServer::Direct(), - PRIVACY_MODE_DISABLED); + SpdySessionKey key(HostPortPair::FromURL(helper.request().url), + ProxyServer::Direct(), PRIVACY_MODE_DISABLED); HttpNetworkSession* session = helper.session(); base::WeakPtr<SpdySession> spdy_session = session->spdy_session_pool()->FindAvailableSession( - key, url, - /* enable_ip_based_pooling = */ true, log_); + key, /* enable_ip_based_pooling = */ true, log_); ASSERT_TRUE(spdy_session); EXPECT_EQ(0u, spdy_session->num_active_streams()); EXPECT_EQ(0u, spdy_session->num_unclaimed_pushed_streams()); @@ -4111,8 +4109,7 @@ PRIVACY_MODE_DISABLED); base::WeakPtr<SpdySession> spdy_session = spdy_session_pool->FindAvailableSession( - key, GURL(), - /* enable_ip_based_pooling = */ true, log_); + key, /* enable_ip_based_pooling = */ true, log_); EXPECT_TRUE(spdy_session); // Start second transaction. @@ -4143,8 +4140,7 @@ // Graceful GOAWAY was received, SpdySession should be unavailable. spdy_session = spdy_session_pool->FindAvailableSession( - key, GURL(), - /* enable_ip_based_pooling = */ true, log_); + key, /* enable_ip_based_pooling = */ true, log_); EXPECT_FALSE(spdy_session); helper.VerifyDataConsumed(); @@ -5078,8 +5074,7 @@ PRIVACY_MODE_DISABLED); base::WeakPtr<SpdySession> spdy_session = spdy_session_pool->FindAvailableSession( - key, GURL(), - /* enable_ip_based_pooling = */ true, log_); + key, /* enable_ip_based_pooling = */ true, log_); EXPECT_FALSE(spdy_session->unclaimed_pushed_streams_.empty()); EXPECT_EQ(1u, spdy_session->unclaimed_pushed_streams_.size()); @@ -5224,8 +5219,7 @@ PRIVACY_MODE_DISABLED); base::WeakPtr<SpdySession> spdy_session0 = spdy_session_pool->FindAvailableSession( - key0, GURL(), - /* enable_ip_based_pooling = */ true, log_); + key0, /* enable_ip_based_pooling = */ true, log_); EXPECT_TRUE(spdy_session0->unclaimed_pushed_streams_.empty()); EXPECT_EQ(0u, spdy_session0->unclaimed_pushed_streams_.size()); @@ -5235,8 +5229,7 @@ PRIVACY_MODE_DISABLED); base::WeakPtr<SpdySession> spdy_session1 = spdy_session_pool->FindAvailableSession( - key1, GURL(), - /* enable_ip_based_pooling = */ true, log_); + key1, /* enable_ip_based_pooling = */ true, log_); EXPECT_FALSE(spdy_session1->unclaimed_pushed_streams_.empty()); EXPECT_EQ(1u, spdy_session1->unclaimed_pushed_streams_.size());
diff --git a/net/spdy/chromium/spdy_session_pool.cc b/net/spdy/chromium/spdy_session_pool.cc index 0385182f..50dc011e 100644 --- a/net/spdy/chromium/spdy_session_pool.cc +++ b/net/spdy/chromium/spdy_session_pool.cc
@@ -133,14 +133,8 @@ base::WeakPtr<SpdySession> SpdySessionPool::FindAvailableSession( const SpdySessionKey& key, - const GURL& url, bool enable_ip_based_pooling, const NetLogWithSource& net_log) { - base::WeakPtr<SpdySession> session = push_promise_index_.Find(key, url); - if (session) { - return session; - } - AvailableSessionMap::iterator it = LookupAvailableSessionByKey(key); if (it != available_sessions_.end()) { if (key.Equals(it->second->spdy_session_key())) {
diff --git a/net/spdy/chromium/spdy_session_pool.h b/net/spdy/chromium/spdy_session_pool.h index 8b3ba5e..56e78fa 100644 --- a/net/spdy/chromium/spdy_session_pool.h +++ b/net/spdy/chromium/spdy_session_pool.h
@@ -87,9 +87,7 @@ std::unique_ptr<ClientSocketHandle> connection, const NetLogWithSource& net_log); - // If |url| is not empty and there is a session for |key| that has an - // unclaimed push stream for |url|, return it. - // Otherwise if there is an available session for |key|, return it. + // If there is an available session for |key|, return it. // Otherwise if there is a session to pool to based on IP address: // * if |enable_ip_based_pooling == true|, // then mark it as available for |key| and return it; @@ -98,7 +96,6 @@ // Otherwise return nullptr. base::WeakPtr<SpdySession> FindAvailableSession( const SpdySessionKey& key, - const GURL& url, bool enable_ip_based_pooling, const NetLogWithSource& net_log);
diff --git a/net/spdy/chromium/spdy_session_pool_unittest.cc b/net/spdy/chromium/spdy_session_pool_unittest.cc index 4d25d16c..7be3391d 100644 --- a/net/spdy/chromium/spdy_session_pool_unittest.cc +++ b/net/spdy/chromium/spdy_session_pool_unittest.cc
@@ -360,7 +360,7 @@ info, DEFAULT_PRIORITY, &test_hosts[i].addresses, CompletionCallback(), &request[i], NetLogWithSource()); - // Setup a SpdySessionKey + // Setup a SpdySessionKey. test_hosts[i].key = SpdySessionKey( HostPortPair(test_hosts[i].name, kTestPort), ProxyServer::Direct(), PRIVACY_MODE_DISABLED); @@ -396,8 +396,8 @@ // |session| for the second host. base::WeakPtr<SpdySession> session1 = spdy_session_pool_->FindAvailableSession( - test_hosts[1].key, GURL(test_hosts[1].url), - /* enable_ip_based_pooling = */ false, NetLogWithSource()); + test_hosts[1].key, /* enable_ip_based_pooling = */ false, + NetLogWithSource()); EXPECT_FALSE(session1); // Verify that the second host, through a proxy, won't share the IP. @@ -427,8 +427,8 @@ // Grab the session to host 1 and verify that it is the same session // we got with host 0, and that is a different from host 2's session. session1 = spdy_session_pool_->FindAvailableSession( - test_hosts[1].key, GURL(test_hosts[1].url), - /* enable_ip_based_pooling = */ true, NetLogWithSource()); + test_hosts[1].key, /* enable_ip_based_pooling = */ true, + NetLogWithSource()); EXPECT_EQ(session.get(), session1.get()); EXPECT_NE(session2.get(), session1.get()); @@ -570,8 +570,8 @@ base::HistogramTester histogram_tester; base::WeakPtr<SpdySession> session1 = spdy_session_pool_->FindAvailableSession( - test_hosts[1].key, GURL(), - /* enable_ip_based_pooling = */ true, net_log.bound()); + test_hosts[1].key, /* enable_ip_based_pooling = */ true, + net_log.bound()); EXPECT_EQ(session0.get(), session1.get()); ASSERT_EQ(1u, net_log.GetSize()); @@ -579,8 +579,7 @@ // A request to the second host should still pool to the existing connection. session1 = spdy_session_pool_->FindAvailableSession( - test_hosts[1].key, GURL(), - /* enable_ip_based_pooling = */ true, net_log.bound()); + test_hosts[1].key, /* enable_ip_based_pooling = */ true, net_log.bound()); EXPECT_EQ(session0.get(), session1.get()); ASSERT_EQ(2u, net_log.GetSize()); @@ -654,15 +653,15 @@ // A request to the second host should pool to the existing connection. base::WeakPtr<SpdySession> session1 = spdy_session_pool_->FindAvailableSession( - test_hosts[1].key, GURL(), - /* enable_ip_based_pooling = */ true, NetLogWithSource()); + test_hosts[1].key, /* enable_ip_based_pooling = */ true, + NetLogWithSource()); EXPECT_EQ(session0.get(), session1.get()); // A request to the second host should not pool to the existing connection if // IP based pooling is disabled. session1 = spdy_session_pool_->FindAvailableSession( - test_hosts[1].key, GURL(), - /* enable_ip_based_pooling = */ false, NetLogWithSource()); + test_hosts[1].key, /* enable_ip_based_pooling = */ false, + NetLogWithSource()); EXPECT_FALSE(session1); // It should be possible to open a new SpdySession, even if a previous call to @@ -799,46 +798,6 @@ #endif // defined(OS_ANDROID) || defined(OS_WIN) || defined(OS_IOS) } -TEST_F(SpdySessionPoolTest, FindAvailableSession) { - SpdySessionKey key(HostPortPair("www.example.org", 443), - ProxyServer::Direct(), PRIVACY_MODE_DISABLED); - - MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING)}; - StaticSocketDataProvider data(reads, arraysize(reads), nullptr, 0); - data.set_connect_data(MockConnect(SYNCHRONOUS, OK)); - session_deps_.socket_factory->AddSocketDataProvider(&data); - - SSLSocketDataProvider ssl(SYNCHRONOUS, OK); - session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl); - - CreateNetworkSession(); - - base::WeakPtr<SpdySession> session = - CreateSpdySession(http_session_.get(), key, NetLogWithSource()); - - // Flush the SpdySession::OnReadComplete() task. - base::RunLoop().RunUntilIdle(); - - EXPECT_TRUE(HasSpdySession(spdy_session_pool_, key)); - - // FindAvailableSession should return |session| if called with empty |url|. - base::WeakPtr<SpdySession> session1 = - spdy_session_pool_->FindAvailableSession( - key, GURL(), - /* enable_ip_based_pooling = */ true, NetLogWithSource()); - EXPECT_EQ(session.get(), session1.get()); - - // FindAvailableSession should return |session| if called with |url| for which - // there is no pushed stream on any sessions owned by |spdy_session_pool_|. - base::WeakPtr<SpdySession> session2 = - spdy_session_pool_->FindAvailableSession( - key, GURL("http://news.example.org/foo.html"), - /* enable_ip_based_pooling = */ true, NetLogWithSource()); - EXPECT_EQ(session.get(), session2.get()); - - spdy_session_pool_->CloseCurrentSessions(ERR_ABORTED); -} - class SpdySessionMemoryDumpTest : public SpdySessionPoolTest, public testing::WithParamInterface<
diff --git a/net/spdy/chromium/spdy_session_unittest.cc b/net/spdy/chromium/spdy_session_unittest.cc index e4c99ba..9d53792b 100644 --- a/net/spdy/chromium/spdy_session_unittest.cc +++ b/net/spdy/chromium/spdy_session_unittest.cc
@@ -3414,8 +3414,7 @@ // Get a session for |key2|, which should return the session created earlier. base::WeakPtr<SpdySession> session2 = spdy_session_pool_->FindAvailableSession( - key2, GURL(), - /* enable_ip_based_pooling = */ true, NetLogWithSource()); + key2, /* enable_ip_based_pooling = */ true, NetLogWithSource()); ASSERT_EQ(session1.get(), session2.get()); EXPECT_FALSE(pool->IsStalled());
diff --git a/net/spdy/chromium/spdy_test_util_common.cc b/net/spdy/chromium/spdy_test_util_common.cc index 213b208d..bf6365b 100644 --- a/net/spdy/chromium/spdy_test_util_common.cc +++ b/net/spdy/chromium/spdy_test_util_common.cc
@@ -490,8 +490,7 @@ bool HasSpdySession(SpdySessionPool* pool, const SpdySessionKey& key) { return static_cast<bool>(pool->FindAvailableSession( - key, GURL(), - /* enable_ip_based_pooling = */ true, NetLogWithSource())); + key, /* enable_ip_based_pooling = */ true, NetLogWithSource())); } namespace { @@ -503,7 +502,7 @@ Error expected_status, bool enable_ip_based_pooling) { EXPECT_FALSE(http_session->spdy_session_pool()->FindAvailableSession( - key, GURL(), enable_ip_based_pooling, NetLogWithSource())); + key, enable_ip_based_pooling, NetLogWithSource())); scoped_refptr<TransportSocketParams> transport_params( new TransportSocketParams(
diff --git a/testing/buildbot/chromium.perf.fyi.json b/testing/buildbot/chromium.perf.fyi.json index be82ffb..a9df6924 100644 --- a/testing/buildbot/chromium.perf.fyi.json +++ b/testing/buildbot/chromium.perf.fyi.json
@@ -2366,130 +2366,6 @@ }, { "args": [ - "service_worker.service_worker", - "-v", - "--upload-results", - "--browser=release_x64", - "--output-format=chartjson" - ], - "isolate_name": "telemetry_perf_tests", - "name": "service_worker.service_worker", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "8086:22b1", - "id": "build143-b1", - "os": "Windows-10-10586", - "pool": "Chrome-perf-fyi" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": false, - "io_timeout": 600, - "upload_test_results": true - } - }, - { - "args": [ - "service_worker.service_worker", - "-v", - "--upload-results", - "--browser=reference", - "--output-format=chartjson", - "--max-failures=5", - "--output-trace-tag=_ref" - ], - "isolate_name": "telemetry_perf_tests", - "name": "service_worker.service_worker.reference", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "8086:22b1", - "id": "build143-b1", - "os": "Windows-10-10586", - "pool": "Chrome-perf-fyi" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": true, - "io_timeout": 600, - "upload_test_results": false - } - }, - { - "args": [ - "service_worker.service_worker_micro_benchmark", - "-v", - "--upload-results", - "--browser=release_x64", - "--output-format=chartjson" - ], - "isolate_name": "telemetry_perf_tests", - "name": "service_worker.service_worker_micro_benchmark", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "8086:22b1", - "id": "build153-b1", - "os": "Windows-10-10586", - "pool": "Chrome-perf-fyi" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": false, - "io_timeout": 600, - "upload_test_results": false - } - }, - { - "args": [ - "service_worker.service_worker_micro_benchmark", - "-v", - "--upload-results", - "--browser=reference", - "--output-format=chartjson", - "--max-failures=5", - "--output-trace-tag=_ref" - ], - "isolate_name": "telemetry_perf_tests", - "name": "service_worker.service_worker_micro_benchmark.reference", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "8086:22b1", - "id": "build153-b1", - "os": "Windows-10-10586", - "pool": "Chrome-perf-fyi" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": true, - "io_timeout": 600, - "upload_test_results": false - } - }, - { - "args": [ "smoothness.gpu_rasterization.polymer", "-v", "--upload-results", @@ -6635,130 +6511,6 @@ }, { "args": [ - "service_worker.service_worker", - "-v", - "--upload-results", - "--browser=release_x64", - "--output-format=chartjson" - ], - "isolate_name": "telemetry_perf_tests", - "name": "service_worker.service_worker", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "1002:9874", - "id": "build207-b4", - "os": "Windows-10-10586", - "pool": "Chrome-perf-fyi" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": false, - "io_timeout": 600, - "upload_test_results": true - } - }, - { - "args": [ - "service_worker.service_worker", - "-v", - "--upload-results", - "--browser=reference", - "--output-format=chartjson", - "--max-failures=5", - "--output-trace-tag=_ref" - ], - "isolate_name": "telemetry_perf_tests", - "name": "service_worker.service_worker.reference", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "1002:9874", - "id": "build207-b4", - "os": "Windows-10-10586", - "pool": "Chrome-perf-fyi" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": true, - "io_timeout": 600, - "upload_test_results": false - } - }, - { - "args": [ - "service_worker.service_worker_micro_benchmark", - "-v", - "--upload-results", - "--browser=release_x64", - "--output-format=chartjson" - ], - "isolate_name": "telemetry_perf_tests", - "name": "service_worker.service_worker_micro_benchmark", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "1002:9874", - "id": "build217-b4", - "os": "Windows-10-10586", - "pool": "Chrome-perf-fyi" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": false, - "io_timeout": 600, - "upload_test_results": false - } - }, - { - "args": [ - "service_worker.service_worker_micro_benchmark", - "-v", - "--upload-results", - "--browser=reference", - "--output-format=chartjson", - "--max-failures=5", - "--output-trace-tag=_ref" - ], - "isolate_name": "telemetry_perf_tests", - "name": "service_worker.service_worker_micro_benchmark.reference", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "1002:9874", - "id": "build217-b4", - "os": "Windows-10-10586", - "pool": "Chrome-perf-fyi" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": true, - "io_timeout": 600, - "upload_test_results": false - } - }, - { - "args": [ "smoothness.gpu_rasterization.polymer", "-v", "--upload-results",
diff --git a/testing/buildbot/chromium.perf.json b/testing/buildbot/chromium.perf.json index 35ccc1d..91cb8cc2 100644 --- a/testing/buildbot/chromium.perf.json +++ b/testing/buildbot/chromium.perf.json
@@ -2148,126 +2148,6 @@ }, { "args": [ - "service_worker.service_worker", - "-v", - "--upload-results", - "--browser=android-chromium", - "--output-format=chartjson" - ], - "isolate_name": "telemetry_perf_tests", - "name": "service_worker.service_worker", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "id": "build48-b1--device1", - "os": "Android", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": false, - "io_timeout": 600, - "upload_test_results": true - } - }, - { - "args": [ - "service_worker.service_worker", - "-v", - "--upload-results", - "--browser=reference", - "--output-format=chartjson", - "--max-failures=5", - "--output-trace-tag=_ref" - ], - "isolate_name": "telemetry_perf_tests", - "name": "service_worker.service_worker.reference", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "id": "build48-b1--device1", - "os": "Android", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": true, - "io_timeout": 600, - "upload_test_results": false - } - }, - { - "args": [ - "service_worker.service_worker_micro_benchmark", - "-v", - "--upload-results", - "--browser=android-chromium", - "--output-format=chartjson" - ], - "isolate_name": "telemetry_perf_tests", - "name": "service_worker.service_worker_micro_benchmark", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "id": "build48-b1--device7", - "os": "Android", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": false, - "io_timeout": 600, - "upload_test_results": false - } - }, - { - "args": [ - "service_worker.service_worker_micro_benchmark", - "-v", - "--upload-results", - "--browser=reference", - "--output-format=chartjson", - "--max-failures=5", - "--output-trace-tag=_ref" - ], - "isolate_name": "telemetry_perf_tests", - "name": "service_worker.service_worker_micro_benchmark.reference", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "id": "build48-b1--device7", - "os": "Android", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": true, - "io_timeout": 600, - "upload_test_results": false - } - }, - { - "args": [ "smoothness.gpu_rasterization.polymer", "-v", "--upload-results", @@ -7139,126 +7019,6 @@ }, { "args": [ - "service_worker.service_worker", - "-v", - "--upload-results", - "--browser=android-chromium", - "--output-format=chartjson" - ], - "isolate_name": "telemetry_perf_tests", - "name": "service_worker.service_worker", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "id": "build75-b1--device1", - "os": "Android", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": false, - "io_timeout": 600, - "upload_test_results": true - } - }, - { - "args": [ - "service_worker.service_worker", - "-v", - "--upload-results", - "--browser=reference", - "--output-format=chartjson", - "--max-failures=5", - "--output-trace-tag=_ref" - ], - "isolate_name": "telemetry_perf_tests", - "name": "service_worker.service_worker.reference", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "id": "build75-b1--device1", - "os": "Android", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": true, - "io_timeout": 600, - "upload_test_results": false - } - }, - { - "args": [ - "service_worker.service_worker_micro_benchmark", - "-v", - "--upload-results", - "--browser=android-chromium", - "--output-format=chartjson" - ], - "isolate_name": "telemetry_perf_tests", - "name": "service_worker.service_worker_micro_benchmark", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "id": "build75-b1--device7", - "os": "Android", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": false, - "io_timeout": 600, - "upload_test_results": false - } - }, - { - "args": [ - "service_worker.service_worker_micro_benchmark", - "-v", - "--upload-results", - "--browser=reference", - "--output-format=chartjson", - "--max-failures=5", - "--output-trace-tag=_ref" - ], - "isolate_name": "telemetry_perf_tests", - "name": "service_worker.service_worker_micro_benchmark.reference", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "id": "build75-b1--device7", - "os": "Android", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": true, - "io_timeout": 600, - "upload_test_results": false - } - }, - { - "args": [ "smoothness.gpu_rasterization.polymer", "-v", "--upload-results", @@ -11002,66 +10762,6 @@ }, { "args": [ - "service_worker.service_worker", - "-v", - "--upload-results", - "--browser=android-webview", - "--output-format=chartjson", - "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk" - ], - "isolate_name": "telemetry_perf_webview_tests", - "name": "service_worker.service_worker", - "override_compile_targets": [ - "telemetry_perf_webview_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "id": "build166-b1--device5", - "os": "Android", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": false, - "io_timeout": 600, - "upload_test_results": true - } - }, - { - "args": [ - "service_worker.service_worker_micro_benchmark", - "-v", - "--upload-results", - "--browser=android-webview", - "--output-format=chartjson", - "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk" - ], - "isolate_name": "telemetry_perf_webview_tests", - "name": "service_worker.service_worker_micro_benchmark", - "override_compile_targets": [ - "telemetry_perf_webview_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "id": "build166-b1--device3", - "os": "Android", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": false, - "io_timeout": 600, - "upload_test_results": false - } - }, - { - "args": [ "smoothness.gpu_rasterization.polymer", "-v", "--upload-results", @@ -14554,126 +14254,6 @@ }, { "args": [ - "service_worker.service_worker", - "-v", - "--upload-results", - "--browser=android-chromium", - "--output-format=chartjson" - ], - "isolate_name": "telemetry_perf_tests", - "name": "service_worker.service_worker", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "id": "build45-b1--device1", - "os": "Android", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": false, - "io_timeout": 600, - "upload_test_results": true - } - }, - { - "args": [ - "service_worker.service_worker", - "-v", - "--upload-results", - "--browser=reference", - "--output-format=chartjson", - "--max-failures=5", - "--output-trace-tag=_ref" - ], - "isolate_name": "telemetry_perf_tests", - "name": "service_worker.service_worker.reference", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "id": "build45-b1--device1", - "os": "Android", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": true, - "io_timeout": 600, - "upload_test_results": false - } - }, - { - "args": [ - "service_worker.service_worker_micro_benchmark", - "-v", - "--upload-results", - "--browser=android-chromium", - "--output-format=chartjson" - ], - "isolate_name": "telemetry_perf_tests", - "name": "service_worker.service_worker_micro_benchmark", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "id": "build45-b1--device7", - "os": "Android", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": false, - "io_timeout": 600, - "upload_test_results": false - } - }, - { - "args": [ - "service_worker.service_worker_micro_benchmark", - "-v", - "--upload-results", - "--browser=reference", - "--output-format=chartjson", - "--max-failures=5", - "--output-trace-tag=_ref" - ], - "isolate_name": "telemetry_perf_tests", - "name": "service_worker.service_worker_micro_benchmark.reference", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "id": "build45-b1--device7", - "os": "Android", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": true, - "io_timeout": 600, - "upload_test_results": false - } - }, - { - "args": [ "smoothness.gpu_rasterization.polymer", "-v", "--upload-results", @@ -18417,66 +17997,6 @@ }, { "args": [ - "service_worker.service_worker", - "-v", - "--upload-results", - "--browser=android-webview", - "--output-format=chartjson", - "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk" - ], - "isolate_name": "telemetry_perf_webview_tests", - "name": "service_worker.service_worker", - "override_compile_targets": [ - "telemetry_perf_webview_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "id": "build114-b1--device5", - "os": "Android", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": false, - "io_timeout": 600, - "upload_test_results": true - } - }, - { - "args": [ - "service_worker.service_worker_micro_benchmark", - "-v", - "--upload-results", - "--browser=android-webview", - "--output-format=chartjson", - "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk" - ], - "isolate_name": "telemetry_perf_webview_tests", - "name": "service_worker.service_worker_micro_benchmark", - "override_compile_targets": [ - "telemetry_perf_webview_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "id": "build114-b1--device3", - "os": "Android", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": false, - "io_timeout": 600, - "upload_test_results": false - } - }, - { - "args": [ "smoothness.gpu_rasterization.polymer", "-v", "--upload-results", @@ -21969,126 +21489,6 @@ }, { "args": [ - "service_worker.service_worker", - "-v", - "--upload-results", - "--browser=android-chromium", - "--output-format=chartjson" - ], - "isolate_name": "telemetry_perf_tests", - "name": "service_worker.service_worker", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "id": "build49-b1--device1", - "os": "Android", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": false, - "io_timeout": 600, - "upload_test_results": true - } - }, - { - "args": [ - "service_worker.service_worker", - "-v", - "--upload-results", - "--browser=reference", - "--output-format=chartjson", - "--max-failures=5", - "--output-trace-tag=_ref" - ], - "isolate_name": "telemetry_perf_tests", - "name": "service_worker.service_worker.reference", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "id": "build49-b1--device1", - "os": "Android", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": true, - "io_timeout": 600, - "upload_test_results": false - } - }, - { - "args": [ - "service_worker.service_worker_micro_benchmark", - "-v", - "--upload-results", - "--browser=android-chromium", - "--output-format=chartjson" - ], - "isolate_name": "telemetry_perf_tests", - "name": "service_worker.service_worker_micro_benchmark", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "id": "build49-b1--device7", - "os": "Android", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": false, - "io_timeout": 600, - "upload_test_results": false - } - }, - { - "args": [ - "service_worker.service_worker_micro_benchmark", - "-v", - "--upload-results", - "--browser=reference", - "--output-format=chartjson", - "--max-failures=5", - "--output-trace-tag=_ref" - ], - "isolate_name": "telemetry_perf_tests", - "name": "service_worker.service_worker_micro_benchmark.reference", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "id": "build49-b1--device7", - "os": "Android", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": true, - "io_timeout": 600, - "upload_test_results": false - } - }, - { - "args": [ "smoothness.gpu_rasterization.polymer", "-v", "--upload-results", @@ -26960,126 +26360,6 @@ }, { "args": [ - "service_worker.service_worker", - "-v", - "--upload-results", - "--browser=android-chromium", - "--output-format=chartjson" - ], - "isolate_name": "telemetry_perf_tests", - "name": "service_worker.service_worker", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "id": "build18-b1--device7", - "os": "Android", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": false, - "io_timeout": 600, - "upload_test_results": true - } - }, - { - "args": [ - "service_worker.service_worker", - "-v", - "--upload-results", - "--browser=reference", - "--output-format=chartjson", - "--max-failures=5", - "--output-trace-tag=_ref" - ], - "isolate_name": "telemetry_perf_tests", - "name": "service_worker.service_worker.reference", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "id": "build18-b1--device7", - "os": "Android", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": true, - "io_timeout": 600, - "upload_test_results": false - } - }, - { - "args": [ - "service_worker.service_worker_micro_benchmark", - "-v", - "--upload-results", - "--browser=android-chromium", - "--output-format=chartjson" - ], - "isolate_name": "telemetry_perf_tests", - "name": "service_worker.service_worker_micro_benchmark", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "id": "build18-b1--device5", - "os": "Android", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": false, - "io_timeout": 600, - "upload_test_results": false - } - }, - { - "args": [ - "service_worker.service_worker_micro_benchmark", - "-v", - "--upload-results", - "--browser=reference", - "--output-format=chartjson", - "--max-failures=5", - "--output-trace-tag=_ref" - ], - "isolate_name": "telemetry_perf_tests", - "name": "service_worker.service_worker_micro_benchmark.reference", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "id": "build18-b1--device5", - "os": "Android", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": true, - "io_timeout": 600, - "upload_test_results": false - } - }, - { - "args": [ "smoothness.gpu_rasterization.polymer", "-v", "--upload-results", @@ -32074,130 +31354,6 @@ }, { "args": [ - "service_worker.service_worker", - "-v", - "--upload-results", - "--browser=release", - "--output-format=chartjson" - ], - "isolate_name": "telemetry_perf_tests", - "name": "service_worker.service_worker", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "10de:1cb3", - "id": "build30-a9", - "os": "Ubuntu-14.04", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": false, - "io_timeout": 600, - "upload_test_results": true - } - }, - { - "args": [ - "service_worker.service_worker", - "-v", - "--upload-results", - "--browser=reference", - "--output-format=chartjson", - "--max-failures=5", - "--output-trace-tag=_ref" - ], - "isolate_name": "telemetry_perf_tests", - "name": "service_worker.service_worker.reference", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "10de:1cb3", - "id": "build30-a9", - "os": "Ubuntu-14.04", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": true, - "io_timeout": 600, - "upload_test_results": false - } - }, - { - "args": [ - "service_worker.service_worker_micro_benchmark", - "-v", - "--upload-results", - "--browser=release", - "--output-format=chartjson" - ], - "isolate_name": "telemetry_perf_tests", - "name": "service_worker.service_worker_micro_benchmark", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "10de:1cb3", - "id": "build30-a9", - "os": "Ubuntu-14.04", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": false, - "io_timeout": 600, - "upload_test_results": false - } - }, - { - "args": [ - "service_worker.service_worker_micro_benchmark", - "-v", - "--upload-results", - "--browser=reference", - "--output-format=chartjson", - "--max-failures=5", - "--output-trace-tag=_ref" - ], - "isolate_name": "telemetry_perf_tests", - "name": "service_worker.service_worker_micro_benchmark.reference", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "10de:1cb3", - "id": "build30-a9", - "os": "Ubuntu-14.04", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": true, - "io_timeout": 600, - "upload_test_results": false - } - }, - { - "args": [ "smoothness.gpu_rasterization.polymer", "-v", "--upload-results", @@ -36550,130 +35706,6 @@ }, { "args": [ - "service_worker.service_worker", - "-v", - "--upload-results", - "--browser=release", - "--output-format=chartjson" - ], - "isolate_name": "telemetry_perf_tests", - "name": "service_worker.service_worker", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "8086:0166", - "id": "build105-b1", - "os": "Mac-10.11", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": false, - "io_timeout": 600, - "upload_test_results": true - } - }, - { - "args": [ - "service_worker.service_worker", - "-v", - "--upload-results", - "--browser=reference", - "--output-format=chartjson", - "--max-failures=5", - "--output-trace-tag=_ref" - ], - "isolate_name": "telemetry_perf_tests", - "name": "service_worker.service_worker.reference", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "8086:0166", - "id": "build105-b1", - "os": "Mac-10.11", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": true, - "io_timeout": 600, - "upload_test_results": false - } - }, - { - "args": [ - "service_worker.service_worker_micro_benchmark", - "-v", - "--upload-results", - "--browser=release", - "--output-format=chartjson" - ], - "isolate_name": "telemetry_perf_tests", - "name": "service_worker.service_worker_micro_benchmark", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "8086:0166", - "id": "build105-b1", - "os": "Mac-10.11", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": false, - "io_timeout": 600, - "upload_test_results": false - } - }, - { - "args": [ - "service_worker.service_worker_micro_benchmark", - "-v", - "--upload-results", - "--browser=reference", - "--output-format=chartjson", - "--max-failures=5", - "--output-trace-tag=_ref" - ], - "isolate_name": "telemetry_perf_tests", - "name": "service_worker.service_worker_micro_benchmark.reference", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "8086:0166", - "id": "build105-b1", - "os": "Mac-10.11", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": true, - "io_timeout": 600, - "upload_test_results": false - } - }, - { - "args": [ "smoothness.desktop_tough_pinch_zoom_cases", "-v", "--upload-results", @@ -40943,130 +39975,6 @@ }, { "args": [ - "service_worker.service_worker", - "-v", - "--upload-results", - "--browser=release", - "--output-format=chartjson" - ], - "isolate_name": "telemetry_perf_tests", - "name": "service_worker.service_worker", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "8086:0a2e", - "id": "build161-m1", - "os": "Mac-10.12", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": false, - "io_timeout": 600, - "upload_test_results": true - } - }, - { - "args": [ - "service_worker.service_worker", - "-v", - "--upload-results", - "--browser=reference", - "--output-format=chartjson", - "--max-failures=5", - "--output-trace-tag=_ref" - ], - "isolate_name": "telemetry_perf_tests", - "name": "service_worker.service_worker.reference", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "8086:0a2e", - "id": "build161-m1", - "os": "Mac-10.12", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": true, - "io_timeout": 600, - "upload_test_results": false - } - }, - { - "args": [ - "service_worker.service_worker_micro_benchmark", - "-v", - "--upload-results", - "--browser=release", - "--output-format=chartjson" - ], - "isolate_name": "telemetry_perf_tests", - "name": "service_worker.service_worker_micro_benchmark", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "8086:0a2e", - "id": "build161-m1", - "os": "Mac-10.12", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": false, - "io_timeout": 600, - "upload_test_results": false - } - }, - { - "args": [ - "service_worker.service_worker_micro_benchmark", - "-v", - "--upload-results", - "--browser=reference", - "--output-format=chartjson", - "--max-failures=5", - "--output-trace-tag=_ref" - ], - "isolate_name": "telemetry_perf_tests", - "name": "service_worker.service_worker_micro_benchmark.reference", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "8086:0a2e", - "id": "build161-m1", - "os": "Mac-10.12", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": true, - "io_timeout": 600, - "upload_test_results": false - } - }, - { - "args": [ "smoothness.desktop_tough_pinch_zoom_cases", "-v", "--upload-results", @@ -45336,130 +44244,6 @@ }, { "args": [ - "service_worker.service_worker", - "-v", - "--upload-results", - "--browser=release", - "--output-format=chartjson" - ], - "isolate_name": "telemetry_perf_tests", - "name": "service_worker.service_worker", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "8086:1626", - "id": "build126-b1", - "os": "Mac-10.11", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": false, - "io_timeout": 600, - "upload_test_results": true - } - }, - { - "args": [ - "service_worker.service_worker", - "-v", - "--upload-results", - "--browser=reference", - "--output-format=chartjson", - "--max-failures=5", - "--output-trace-tag=_ref" - ], - "isolate_name": "telemetry_perf_tests", - "name": "service_worker.service_worker.reference", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "8086:1626", - "id": "build126-b1", - "os": "Mac-10.11", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": true, - "io_timeout": 600, - "upload_test_results": false - } - }, - { - "args": [ - "service_worker.service_worker_micro_benchmark", - "-v", - "--upload-results", - "--browser=release", - "--output-format=chartjson" - ], - "isolate_name": "telemetry_perf_tests", - "name": "service_worker.service_worker_micro_benchmark", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "8086:1626", - "id": "build126-b1", - "os": "Mac-10.11", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": false, - "io_timeout": 600, - "upload_test_results": false - } - }, - { - "args": [ - "service_worker.service_worker_micro_benchmark", - "-v", - "--upload-results", - "--browser=reference", - "--output-format=chartjson", - "--max-failures=5", - "--output-trace-tag=_ref" - ], - "isolate_name": "telemetry_perf_tests", - "name": "service_worker.service_worker_micro_benchmark.reference", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "8086:1626", - "id": "build126-b1", - "os": "Mac-10.11", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": true, - "io_timeout": 600, - "upload_test_results": false - } - }, - { - "args": [ "smoothness.desktop_tough_pinch_zoom_cases", "-v", "--upload-results", @@ -49708,130 +48492,6 @@ }, { "args": [ - "service_worker.service_worker", - "-v", - "--upload-results", - "--browser=release", - "--output-format=chartjson" - ], - "isolate_name": "telemetry_perf_tests", - "name": "service_worker.service_worker", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "8086:0a26", - "id": "build27-b1", - "os": "Mac-10.12", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": false, - "io_timeout": 600, - "upload_test_results": true - } - }, - { - "args": [ - "service_worker.service_worker", - "-v", - "--upload-results", - "--browser=reference", - "--output-format=chartjson", - "--max-failures=5", - "--output-trace-tag=_ref" - ], - "isolate_name": "telemetry_perf_tests", - "name": "service_worker.service_worker.reference", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "8086:0a26", - "id": "build27-b1", - "os": "Mac-10.12", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": true, - "io_timeout": 600, - "upload_test_results": false - } - }, - { - "args": [ - "service_worker.service_worker_micro_benchmark", - "-v", - "--upload-results", - "--browser=release", - "--output-format=chartjson" - ], - "isolate_name": "telemetry_perf_tests", - "name": "service_worker.service_worker_micro_benchmark", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "8086:0a26", - "id": "build27-b1", - "os": "Mac-10.12", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": false, - "io_timeout": 600, - "upload_test_results": false - } - }, - { - "args": [ - "service_worker.service_worker_micro_benchmark", - "-v", - "--upload-results", - "--browser=reference", - "--output-format=chartjson", - "--max-failures=5", - "--output-trace-tag=_ref" - ], - "isolate_name": "telemetry_perf_tests", - "name": "service_worker.service_worker_micro_benchmark.reference", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "8086:0a26", - "id": "build27-b1", - "os": "Mac-10.12", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": true, - "io_timeout": 600, - "upload_test_results": false - } - }, - { - "args": [ "smoothness.desktop_tough_pinch_zoom_cases", "-v", "--upload-results", @@ -54101,130 +52761,6 @@ }, { "args": [ - "service_worker.service_worker", - "-v", - "--upload-results", - "--browser=release", - "--output-format=chartjson" - ], - "isolate_name": "telemetry_perf_tests", - "name": "service_worker.service_worker", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "1002:6821", - "id": "build131-b1", - "os": "Mac-10.11", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": false, - "io_timeout": 600, - "upload_test_results": true - } - }, - { - "args": [ - "service_worker.service_worker", - "-v", - "--upload-results", - "--browser=reference", - "--output-format=chartjson", - "--max-failures=5", - "--output-trace-tag=_ref" - ], - "isolate_name": "telemetry_perf_tests", - "name": "service_worker.service_worker.reference", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "1002:6821", - "id": "build131-b1", - "os": "Mac-10.11", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": true, - "io_timeout": 600, - "upload_test_results": false - } - }, - { - "args": [ - "service_worker.service_worker_micro_benchmark", - "-v", - "--upload-results", - "--browser=release", - "--output-format=chartjson" - ], - "isolate_name": "telemetry_perf_tests", - "name": "service_worker.service_worker_micro_benchmark", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "1002:6821", - "id": "build131-b1", - "os": "Mac-10.11", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": false, - "io_timeout": 600, - "upload_test_results": false - } - }, - { - "args": [ - "service_worker.service_worker_micro_benchmark", - "-v", - "--upload-results", - "--browser=reference", - "--output-format=chartjson", - "--max-failures=5", - "--output-trace-tag=_ref" - ], - "isolate_name": "telemetry_perf_tests", - "name": "service_worker.service_worker_micro_benchmark.reference", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "1002:6821", - "id": "build131-b1", - "os": "Mac-10.11", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": true, - "io_timeout": 600, - "upload_test_results": false - } - }, - { - "args": [ "smoothness.desktop_tough_pinch_zoom_cases", "-v", "--upload-results", @@ -58494,130 +57030,6 @@ }, { "args": [ - "service_worker.service_worker", - "-v", - "--upload-results", - "--browser=release", - "--output-format=chartjson" - ], - "isolate_name": "telemetry_perf_tests", - "name": "service_worker.service_worker", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "8086:0d26", - "id": "build7-b1", - "os": "Mac-10.11", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": false, - "io_timeout": 600, - "upload_test_results": true - } - }, - { - "args": [ - "service_worker.service_worker", - "-v", - "--upload-results", - "--browser=reference", - "--output-format=chartjson", - "--max-failures=5", - "--output-trace-tag=_ref" - ], - "isolate_name": "telemetry_perf_tests", - "name": "service_worker.service_worker.reference", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "8086:0d26", - "id": "build7-b1", - "os": "Mac-10.11", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": true, - "io_timeout": 600, - "upload_test_results": false - } - }, - { - "args": [ - "service_worker.service_worker_micro_benchmark", - "-v", - "--upload-results", - "--browser=release", - "--output-format=chartjson" - ], - "isolate_name": "telemetry_perf_tests", - "name": "service_worker.service_worker_micro_benchmark", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "8086:0d26", - "id": "build7-b1", - "os": "Mac-10.11", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": false, - "io_timeout": 600, - "upload_test_results": false - } - }, - { - "args": [ - "service_worker.service_worker_micro_benchmark", - "-v", - "--upload-results", - "--browser=reference", - "--output-format=chartjson", - "--max-failures=5", - "--output-trace-tag=_ref" - ], - "isolate_name": "telemetry_perf_tests", - "name": "service_worker.service_worker_micro_benchmark.reference", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "8086:0d26", - "id": "build7-b1", - "os": "Mac-10.11", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": true, - "io_timeout": 600, - "upload_test_results": false - } - }, - { - "args": [ "smoothness.desktop_tough_pinch_zoom_cases", "-v", "--upload-results", @@ -62742,130 +61154,6 @@ }, { "args": [ - "service_worker.service_worker", - "-v", - "--upload-results", - "--browser=release_x64", - "--output-format=chartjson" - ], - "isolate_name": "telemetry_perf_tests", - "name": "service_worker.service_worker", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "8086:1616", - "id": "build120-b1", - "os": "Windows-10-10240", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": false, - "io_timeout": 600, - "upload_test_results": true - } - }, - { - "args": [ - "service_worker.service_worker", - "-v", - "--upload-results", - "--browser=reference", - "--output-format=chartjson", - "--max-failures=5", - "--output-trace-tag=_ref" - ], - "isolate_name": "telemetry_perf_tests", - "name": "service_worker.service_worker.reference", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "8086:1616", - "id": "build120-b1", - "os": "Windows-10-10240", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": true, - "io_timeout": 600, - "upload_test_results": false - } - }, - { - "args": [ - "service_worker.service_worker_micro_benchmark", - "-v", - "--upload-results", - "--browser=release_x64", - "--output-format=chartjson" - ], - "isolate_name": "telemetry_perf_tests", - "name": "service_worker.service_worker_micro_benchmark", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "8086:1616", - "id": "build120-b1", - "os": "Windows-10-10240", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": false, - "io_timeout": 600, - "upload_test_results": false - } - }, - { - "args": [ - "service_worker.service_worker_micro_benchmark", - "-v", - "--upload-results", - "--browser=reference", - "--output-format=chartjson", - "--max-failures=5", - "--output-trace-tag=_ref" - ], - "isolate_name": "telemetry_perf_tests", - "name": "service_worker.service_worker_micro_benchmark.reference", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "8086:1616", - "id": "build120-b1", - "os": "Windows-10-10240", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": true, - "io_timeout": 600, - "upload_test_results": false - } - }, - { - "args": [ "smoothness.gpu_rasterization.polymer", "-v", "--upload-results", @@ -67011,130 +65299,6 @@ }, { "args": [ - "service_worker.service_worker", - "-v", - "--upload-results", - "--browser=release_x64", - "--output-format=chartjson" - ], - "isolate_name": "telemetry_perf_tests", - "name": "service_worker.service_worker", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "102b:0534", - "id": "build135-m1", - "os": "Windows-10-10240", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": false, - "io_timeout": 600, - "upload_test_results": true - } - }, - { - "args": [ - "service_worker.service_worker", - "-v", - "--upload-results", - "--browser=reference", - "--output-format=chartjson", - "--max-failures=5", - "--output-trace-tag=_ref" - ], - "isolate_name": "telemetry_perf_tests", - "name": "service_worker.service_worker.reference", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "102b:0534", - "id": "build135-m1", - "os": "Windows-10-10240", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": true, - "io_timeout": 600, - "upload_test_results": false - } - }, - { - "args": [ - "service_worker.service_worker_micro_benchmark", - "-v", - "--upload-results", - "--browser=release_x64", - "--output-format=chartjson" - ], - "isolate_name": "telemetry_perf_tests", - "name": "service_worker.service_worker_micro_benchmark", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "102b:0534", - "id": "build135-m1", - "os": "Windows-10-10240", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": false, - "io_timeout": 600, - "upload_test_results": false - } - }, - { - "args": [ - "service_worker.service_worker_micro_benchmark", - "-v", - "--upload-results", - "--browser=reference", - "--output-format=chartjson", - "--max-failures=5", - "--output-trace-tag=_ref" - ], - "isolate_name": "telemetry_perf_tests", - "name": "service_worker.service_worker_micro_benchmark.reference", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "102b:0534", - "id": "build135-m1", - "os": "Windows-10-10240", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": true, - "io_timeout": 600, - "upload_test_results": false - } - }, - { - "args": [ "smoothness.gpu_rasterization.polymer", "-v", "--upload-results", @@ -71343,130 +69507,6 @@ }, { "args": [ - "service_worker.service_worker", - "-v", - "--upload-results", - "--browser=release_x64", - "--output-format=chartjson" - ], - "isolate_name": "telemetry_perf_tests", - "name": "service_worker.service_worker", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "1002:6613", - "id": "build104-m1", - "os": "Windows-2008ServerR2-SP1", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": false, - "io_timeout": 600, - "upload_test_results": true - } - }, - { - "args": [ - "service_worker.service_worker", - "-v", - "--upload-results", - "--browser=reference", - "--output-format=chartjson", - "--max-failures=5", - "--output-trace-tag=_ref" - ], - "isolate_name": "telemetry_perf_tests", - "name": "service_worker.service_worker.reference", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "1002:6613", - "id": "build104-m1", - "os": "Windows-2008ServerR2-SP1", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": true, - "io_timeout": 600, - "upload_test_results": false - } - }, - { - "args": [ - "service_worker.service_worker_micro_benchmark", - "-v", - "--upload-results", - "--browser=release_x64", - "--output-format=chartjson" - ], - "isolate_name": "telemetry_perf_tests", - "name": "service_worker.service_worker_micro_benchmark", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "1002:6613", - "id": "build104-m1", - "os": "Windows-2008ServerR2-SP1", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": false, - "io_timeout": 600, - "upload_test_results": false - } - }, - { - "args": [ - "service_worker.service_worker_micro_benchmark", - "-v", - "--upload-results", - "--browser=reference", - "--output-format=chartjson", - "--max-failures=5", - "--output-trace-tag=_ref" - ], - "isolate_name": "telemetry_perf_tests", - "name": "service_worker.service_worker_micro_benchmark.reference", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "1002:6613", - "id": "build104-m1", - "os": "Windows-2008ServerR2-SP1", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": true, - "io_timeout": 600, - "upload_test_results": false - } - }, - { - "args": [ "smoothness.gpu_rasterization.polymer", "-v", "--upload-results", @@ -75654,130 +73694,6 @@ }, { "args": [ - "service_worker.service_worker", - "-v", - "--upload-results", - "--browser=release_x64", - "--output-format=chartjson" - ], - "isolate_name": "telemetry_perf_tests", - "name": "service_worker.service_worker", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "8086:041a", - "id": "build167-m1", - "os": "Windows-2008ServerR2-SP1", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": false, - "io_timeout": 600, - "upload_test_results": true - } - }, - { - "args": [ - "service_worker.service_worker", - "-v", - "--upload-results", - "--browser=reference", - "--output-format=chartjson", - "--max-failures=5", - "--output-trace-tag=_ref" - ], - "isolate_name": "telemetry_perf_tests", - "name": "service_worker.service_worker.reference", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "8086:041a", - "id": "build167-m1", - "os": "Windows-2008ServerR2-SP1", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": true, - "io_timeout": 600, - "upload_test_results": false - } - }, - { - "args": [ - "service_worker.service_worker_micro_benchmark", - "-v", - "--upload-results", - "--browser=release_x64", - "--output-format=chartjson" - ], - "isolate_name": "telemetry_perf_tests", - "name": "service_worker.service_worker_micro_benchmark", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "8086:041a", - "id": "build167-m1", - "os": "Windows-2008ServerR2-SP1", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": false, - "io_timeout": 600, - "upload_test_results": false - } - }, - { - "args": [ - "service_worker.service_worker_micro_benchmark", - "-v", - "--upload-results", - "--browser=reference", - "--output-format=chartjson", - "--max-failures=5", - "--output-trace-tag=_ref" - ], - "isolate_name": "telemetry_perf_tests", - "name": "service_worker.service_worker_micro_benchmark.reference", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "8086:041a", - "id": "build167-m1", - "os": "Windows-2008ServerR2-SP1", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": true, - "io_timeout": 600, - "upload_test_results": false - } - }, - { - "args": [ "smoothness.gpu_rasterization.polymer", "-v", "--upload-results", @@ -79965,130 +77881,6 @@ }, { "args": [ - "service_worker.service_worker", - "-v", - "--upload-results", - "--browser=release_x64", - "--output-format=chartjson" - ], - "isolate_name": "telemetry_perf_tests", - "name": "service_worker.service_worker", - "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": 600, - "upload_test_results": true - } - }, - { - "args": [ - "service_worker.service_worker", - "-v", - "--upload-results", - "--browser=reference", - "--output-format=chartjson", - "--max-failures=5", - "--output-trace-tag=_ref" - ], - "isolate_name": "telemetry_perf_tests", - "name": "service_worker.service_worker.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": 600, - "upload_test_results": false - } - }, - { - "args": [ - "service_worker.service_worker_micro_benchmark", - "-v", - "--upload-results", - "--browser=release_x64", - "--output-format=chartjson" - ], - "isolate_name": "telemetry_perf_tests", - "name": "service_worker.service_worker_micro_benchmark", - "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": 600, - "upload_test_results": false - } - }, - { - "args": [ - "service_worker.service_worker_micro_benchmark", - "-v", - "--upload-results", - "--browser=reference", - "--output-format=chartjson", - "--max-failures=5", - "--output-trace-tag=_ref" - ], - "isolate_name": "telemetry_perf_tests", - "name": "service_worker.service_worker_micro_benchmark.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": 600, - "upload_test_results": false - } - }, - { - "args": [ "smoothness.gpu_rasterization.polymer", "-v", "--upload-results", @@ -84255,130 +82047,6 @@ }, { "args": [ - "service_worker.service_worker", - "-v", - "--upload-results", - "--browser=release", - "--output-format=chartjson" - ], - "isolate_name": "telemetry_perf_tests", - "name": "service_worker.service_worker", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "102b:0532", - "id": "build188-m1", - "os": "Windows-2008ServerR2-SP1", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": false, - "io_timeout": 600, - "upload_test_results": true - } - }, - { - "args": [ - "service_worker.service_worker", - "-v", - "--upload-results", - "--browser=reference", - "--output-format=chartjson", - "--max-failures=5", - "--output-trace-tag=_ref" - ], - "isolate_name": "telemetry_perf_tests", - "name": "service_worker.service_worker.reference", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "102b:0532", - "id": "build188-m1", - "os": "Windows-2008ServerR2-SP1", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": true, - "io_timeout": 600, - "upload_test_results": false - } - }, - { - "args": [ - "service_worker.service_worker_micro_benchmark", - "-v", - "--upload-results", - "--browser=release", - "--output-format=chartjson" - ], - "isolate_name": "telemetry_perf_tests", - "name": "service_worker.service_worker_micro_benchmark", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "102b:0532", - "id": "build188-m1", - "os": "Windows-2008ServerR2-SP1", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": false, - "io_timeout": 600, - "upload_test_results": false - } - }, - { - "args": [ - "service_worker.service_worker_micro_benchmark", - "-v", - "--upload-results", - "--browser=reference", - "--output-format=chartjson", - "--max-failures=5", - "--output-trace-tag=_ref" - ], - "isolate_name": "telemetry_perf_tests", - "name": "service_worker.service_worker_micro_benchmark.reference", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "102b:0532", - "id": "build188-m1", - "os": "Windows-2008ServerR2-SP1", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": true, - "io_timeout": 600, - "upload_test_results": false - } - }, - { - "args": [ "smoothness.gpu_rasterization.polymer", "-v", "--upload-results", @@ -88545,130 +86213,6 @@ }, { "args": [ - "service_worker.service_worker", - "-v", - "--upload-results", - "--browser=release_x64", - "--output-format=chartjson" - ], - "isolate_name": "telemetry_perf_tests", - "name": "service_worker.service_worker", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "102b:0532", - "id": "build141-m1", - "os": "Windows-2008ServerR2-SP1", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": false, - "io_timeout": 600, - "upload_test_results": true - } - }, - { - "args": [ - "service_worker.service_worker", - "-v", - "--upload-results", - "--browser=reference", - "--output-format=chartjson", - "--max-failures=5", - "--output-trace-tag=_ref" - ], - "isolate_name": "telemetry_perf_tests", - "name": "service_worker.service_worker.reference", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "102b:0532", - "id": "build141-m1", - "os": "Windows-2008ServerR2-SP1", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": true, - "io_timeout": 600, - "upload_test_results": false - } - }, - { - "args": [ - "service_worker.service_worker_micro_benchmark", - "-v", - "--upload-results", - "--browser=release_x64", - "--output-format=chartjson" - ], - "isolate_name": "telemetry_perf_tests", - "name": "service_worker.service_worker_micro_benchmark", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "102b:0532", - "id": "build141-m1", - "os": "Windows-2008ServerR2-SP1", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": false, - "io_timeout": 600, - "upload_test_results": false - } - }, - { - "args": [ - "service_worker.service_worker_micro_benchmark", - "-v", - "--upload-results", - "--browser=reference", - "--output-format=chartjson", - "--max-failures=5", - "--output-trace-tag=_ref" - ], - "isolate_name": "telemetry_perf_tests", - "name": "service_worker.service_worker_micro_benchmark.reference", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "102b:0532", - "id": "build141-m1", - "os": "Windows-2008ServerR2-SP1", - "pool": "Chrome-perf" - } - ], - "expiration": 36000, - "hard_timeout": 10800, - "ignore_task_failure": true, - "io_timeout": 600, - "upload_test_results": false - } - }, - { - "args": [ "smoothness.gpu_rasterization.polymer", "-v", "--upload-results", @@ -92856,130 +90400,6 @@ }, { "args": [ - "service_worker.service_worker", - "-v", - "--upload-results", - "--browser=release_x64", - "--output-format=chartjson" - ], - "isolate_name": "telemetry_perf_tests", - "name": "service_worker.service_worker", - "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": 600, - "upload_test_results": true - } - }, - { - "args": [ - "service_worker.service_worker", - "-v", - "--upload-results", - "--browser=reference", - "--output-format=chartjson", - "--max-failures=5", - "--output-trace-tag=_ref" - ], - "isolate_name": "telemetry_perf_tests", - "name": "service_worker.service_worker.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": 600, - "upload_test_results": false - } - }, - { - "args": [ - "service_worker.service_worker_micro_benchmark", - "-v", - "--upload-results", - "--browser=release_x64", - "--output-format=chartjson" - ], - "isolate_name": "telemetry_perf_tests", - "name": "service_worker.service_worker_micro_benchmark", - "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": 600, - "upload_test_results": false - } - }, - { - "args": [ - "service_worker.service_worker_micro_benchmark", - "-v", - "--upload-results", - "--browser=reference", - "--output-format=chartjson", - "--max-failures=5", - "--output-trace-tag=_ref" - ], - "isolate_name": "telemetry_perf_tests", - "name": "service_worker.service_worker_micro_benchmark.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": 600, - "upload_test_results": false - } - }, - { - "args": [ "smoothness.gpu_rasterization.polymer", "-v", "--upload-results",
diff --git a/testing/libfuzzer/coverage.py b/testing/libfuzzer/coverage.py index b1267187..b0e7e703 100755 --- a/testing/libfuzzer/coverage.py +++ b/testing/libfuzzer/coverage.py
@@ -12,8 +12,7 @@ import subprocess import sys - -HELP_MESSAGE = ''' +HELP_MESSAGE = """ This script helps to generate code coverage report. It uses Clang Source-based Code coverage (https://clang.llvm.org/docs/SourceBasedCodeCoverage.html). @@ -21,18 +20,21 @@ server (e.g. "python -m SimpleHTTPServer"). In order to generate code coverage report, you need to build the target program -with "use_clang_coverage=true" GN flag. That flag is not compatible with the -following flags: "is_asan", "is_msan", etc and also with "optimize_for_fuzzing". +with "use_clang_coverage=true" GN flag. This flag is not compatible with other +sanitizer flags: "is_asan", "is_msan", etc and also with "optimize_for_fuzzing". + +If you are building a fuzz target, make sure to add the "use_libfuzzer=true" +GN flag. For Googlers, there are examples available at go/chrome-code-coverage-examples. If you have any questions, please ask it on fuzzing@chromium.org. -''' +""" HTML_FILE_EXTENSION = '.html' -CHROME_SRC_PATH = os.path.dirname(os.path.dirname(os.path.dirname( - os.path.abspath(__file__)))) +CHROME_SRC_PATH = os.path.dirname( + os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) LLVM_BUILD_PATH = os.path.join(CHROME_SRC_PATH, 'third_party', 'llvm-build') LLVM_BIN_PATH = os.path.join(LLVM_BUILD_PATH, 'Release+Asserts', 'bin') LLVM_COV_PATH = os.path.join(LLVM_BIN_PATH, 'llvm-cov') @@ -43,14 +45,14 @@ REPORT_FILENAME = 'report.html' -REPORT_TEMPLATE = '''<!DOCTYPE html> +REPORT_TEMPLATE = """<!DOCTYPE html> <html> <head><style> th, td {{ border: 1px solid black; padding: 5px 10px; }} </style></head> <body> {table_data} -</body></html>''' +</body></html>""" SINGLE_FILE_START_MARKER = '<!doctype html><html>' SINGLE_FILE_END_MARKER = '</body></html>' @@ -75,7 +77,7 @@ if data.count('__llvm_profile') > 20: return - logging.error('It looks like the target binary has been compilde without ' + logging.error('It looks like the target binary has been compiled without ' 'coverage instrumentation.') print('Have you used use_clang_coverage=true flag in GN args? [y/N]') answer = raw_input() @@ -91,10 +93,10 @@ return if os.path.isdir(dir_path): - logging.warning('%s already exists.' % dir_path) + logging.warning('%s already exists.', dir_path) return - logging.error('%s exists and does not point to a directory.' % dir_path) + logging.error('%s exists and does not point to a directory.', dir_path) raise Exception('Invalid --output argument specified.') @@ -119,7 +121,7 @@ clang_revision, clang_sub_revision = _GetRevisionFromStampFile( clang_update.STAMP_FILE) - coverage_revision_stamp_file = os.path.join( + coverage_revision_stamp_file = os.path.join( os.path.dirname(clang_update.STAMP_FILE), 'cr_coverage_revision') coverage_revision, coverage_sub_revision = _GetRevisionFromStampFile( coverage_revision_stamp_file) @@ -169,20 +171,20 @@ filename_end += filename_start - filename = data[filename_start : filename_end] + filename = data[filename_start:filename_end] source_dir = os.path.abspath(source_dir) if not filename.startswith(source_dir): logging.error('Invalid source code path ("%s") specified.\n' - 'Coverage dump refers to "%s".' % (source_dir, filename)) + 'Coverage dump refers to "%s".', source_dir, filename) raise Exception('Failed to process coverage dump.') - filename = filename[len(source_dir) : ] + filename = filename[len(source_dir):] filename = filename.lstrip('/\\') # Replace the filename with the shorter version. - data = data[ : filename_start] + filename + data[filename_end : ] + data = data[:filename_start] + filename + data[filename_end:] return filename, data @@ -233,8 +235,10 @@ def GenerateSources(executable_path, output_dir, source_dir, coverage_file): """Generate coverage visualization for source code files.""" - llvm_cov_command = [LLVM_COV_PATH, 'show', '-format=html', executable_path, - '-instr-profile=%s' % coverage_file] + llvm_cov_command = [ + LLVM_COV_PATH, 'show', '-format=html', executable_path, + '-instr-profile=%s' % coverage_file + ] data = subprocess.check_output(llvm_cov_command) @@ -245,7 +249,7 @@ logging.error('Failed to extract CSS style from coverage report.') raise Exception('Failed to process coverage dump.') - style_data = data[style_start + len(STYLE_START_MARKER) : style_end] + style_data = data[style_start + len(STYLE_START_MARKER):style_end] with open(os.path.join(output_dir, STYLE_FILENAME), 'w') as file_handle: file_handle.write(style_data) style_length = ( @@ -266,7 +270,7 @@ offset += file_end - file_start # Remove <style> as it's always the same and has been extracted separately. - file_data = ReplaceStyleWithCss(data[file_start : file_end], style_length, + file_data = ReplaceStyleWithCss(data[file_start:file_end], style_length, STYLE_FILENAME) filename, file_data = ExtractAndFixFilename(file_data, source_dir) @@ -284,8 +288,10 @@ def GenerateSummary(executable_path, output_dir, coverage_file): """Generate code coverage summary report (i.e. a table with all files).""" - llvm_cov_command = [LLVM_COV_PATH, 'report', executable_path, - '-instr-profile=%s' % coverage_file] + llvm_cov_command = [ + LLVM_COV_PATH, 'report', executable_path, + '-instr-profile=%s' % coverage_file + ] data = subprocess.check_output(llvm_cov_command) report = GenerateReport(data) @@ -297,13 +303,13 @@ def ProcessCoverageDump(profile_file, coverage_file): """Process and convert raw LLVM profile data into coverage data format.""" print('Processing coverage dump and generating visualization.') - merge_command = [LLVM_PROFDATA_PATH, 'merge', '-sparse', profile_file, - '-o', coverage_file] + merge_command = [ + LLVM_PROFDATA_PATH, 'merge', '-sparse', profile_file, '-o', coverage_file + ] data = subprocess.check_output(merge_command) if not os.path.exists(coverage_file) or not os.path.getsize(coverage_file): - logging.error( - '%s is either not created or empty:\n%s' % (coverage_file, data)) + logging.error('%s is either not created or empty:\n%s', coverage_file, data) raise Exception('Failed to merge coverage information after command run.') @@ -313,7 +319,7 @@ # Since "style" data is always the same, try some optimization here. style_end = style_start + style_data_length if (style_end > len(data) or - data[style_end - len(STYLE_END_MARKER) : style_end] != STYLE_END_MARKER): + data[style_end - len(STYLE_END_MARKER):style_end] != STYLE_END_MARKER): # Looks like our optimization has failed, find end of "style" data. style_end = data.find(STYLE_END_MARKER) if style_end <= style_start or style_start == -1: @@ -323,7 +329,7 @@ css_include = ( '<link rel="stylesheet" type="text/css" href="/%s">' % css_file_path) - result = '\n'.join([ data[ : style_start], css_include, data[style_end : ] ]) + result = '\n'.join([data[:style_start], css_include, data[style_end:]]) return result @@ -337,7 +343,7 @@ print('Finished command execution.') if not os.path.exists(profile_file) or not os.path.getsize(profile_file): - logging.error('%s is either not created or empty.' % profile_file) + logging.error('%s is either not created or empty.', profile_file) raise Exception('Failed to dump coverage information during command run.') @@ -346,13 +352,20 @@ parser = argparse.ArgumentParser( description=HELP_MESSAGE, formatter_class=argparse.RawDescriptionHelpFormatter) - parser.add_argument('--command', required=True, - help='The command to generate code coverage of') - parser.add_argument('--source', required=False, default=CHROME_SRC_PATH, - help='Directory with the source code, if it differs from ' - 'local Chromium checkout: %s.' % CHROME_SRC_PATH) - parser.add_argument('--output', required=True, - help='Directory where result will be written to.') + parser.add_argument( + '--command', + required=True, + help='The command to generate code coverage of') + parser.add_argument( + '--source', + required=False, + default=CHROME_SRC_PATH, + help='Directory with the source code, if it differs from ' + 'local Chromium checkout: %s.' % CHROME_SRC_PATH) + parser.add_argument( + '--output', + required=True, + help='Directory where result will be written to.') args = parser.parse_args() @@ -376,5 +389,5 @@ '2. open http://127.0.0.1:8000/report.html' % args.output) -if __name__ == "__main__": +if __name__ == '__main__': main()
diff --git a/third_party/WebKit/LayoutTests/FlagExpectations/enable-features=NetworkService b/third_party/WebKit/LayoutTests/FlagExpectations/enable-features=NetworkService index d4265b3..194cccf 100644 --- a/third_party/WebKit/LayoutTests/FlagExpectations/enable-features=NetworkService +++ b/third_party/WebKit/LayoutTests/FlagExpectations/enable-features=NetworkService
@@ -94,6 +94,7 @@ Bug(none) external/wpt/service-workers/service-worker/invalid-blobtype.https.html [ Crash ] Bug(none) external/wpt/service-workers/service-worker/invalid-header.https.html [ Crash ] Bug(none) external/wpt/service-workers/service-worker/iso-latin1-header.https.html [ Crash ] +crbug.com/771118 external/wpt/service-workers/service-worker/mime-sniffing.https.html [ Failure ] Bug(none) external/wpt/service-workers/service-worker/navigation-redirect-to-http.https.html [ Failure ] Bug(none) external/wpt/service-workers/service-worker/navigation-redirect.https.html [ Timeout ] Bug(none) external/wpt/service-workers/service-worker/opaque-response-preloaded.https.html [ Failure ] @@ -209,53 +210,6 @@ Bug(none) http/tests/fetch/referrer/origin-when-cross-origin-serviceworker-from-document.html [ Crash Failure Timeout ] Bug(none) http/tests/fetch/referrer/serviceworker-echo-referrer-from-default-document.html [ Crash Failure Timeout ] Bug(none) http/tests/fetch/referrer/serviceworker-from-origin-only-document.html [ Crash Failure Timeout ] -Bug(none) http/tests/fetch/serviceworker-proxied/thorough/access-control-base-https-other-https.html [ Crash Timeout ] -Bug(none) http/tests/fetch/serviceworker-proxied/thorough/access-control.html [ Crash Timeout ] -Bug(none) http/tests/fetch/serviceworker-proxied/thorough/auth-base-https-other-https.html [ Crash Timeout ] -Bug(none) http/tests/fetch/serviceworker-proxied/thorough/auth-nocors-base-https-other-https.html [ Crash Timeout ] -Bug(none) http/tests/fetch/serviceworker-proxied/thorough/auth-nocors-other-https.html [ Crash Timeout ] -Bug(none) http/tests/fetch/serviceworker-proxied/thorough/auth-nocors.html [ Crash Timeout ] -Bug(none) http/tests/fetch/serviceworker-proxied/thorough/auth-other-https.html [ Crash Timeout ] -Bug(none) http/tests/fetch/serviceworker-proxied/thorough/auth.html [ Crash Timeout ] -Bug(none) http/tests/fetch/serviceworker-proxied/thorough/cookie-base-https-other-https.html [ Crash Timeout ] -Bug(none) http/tests/fetch/serviceworker-proxied/thorough/cookie-nocors-base-https-other-https.html [ Crash Timeout ] -Bug(none) http/tests/fetch/serviceworker-proxied/thorough/cookie-nocors-other-https.html [ Crash Timeout ] -Bug(none) http/tests/fetch/serviceworker-proxied/thorough/cookie-nocors.html [ Crash Timeout ] -Bug(none) http/tests/fetch/serviceworker-proxied/thorough/cookie-other-https.html [ Crash Timeout ] -Bug(none) http/tests/fetch/serviceworker-proxied/thorough/cookie.html [ Crash Timeout ] -Bug(none) http/tests/fetch/serviceworker-proxied/thorough/cors-base-https-other-https.html [ Crash Timeout ] -Bug(none) http/tests/fetch/serviceworker-proxied/thorough/cors-other-https.html [ Crash Timeout ] -Bug(none) http/tests/fetch/serviceworker-proxied/thorough/cors-preflight-base-https-other-https.html [ Crash Timeout ] -Bug(none) http/tests/fetch/serviceworker-proxied/thorough/cors-preflight-other-https.html [ Crash Timeout ] -Bug(none) http/tests/fetch/serviceworker-proxied/thorough/cors-preflight.html [ Crash Timeout ] -Bug(none) http/tests/fetch/serviceworker-proxied/thorough/cors-preflight2-base-https-other-https.html [ Crash Timeout ] -Bug(none) http/tests/fetch/serviceworker-proxied/thorough/cors-preflight2-other-https.html [ Crash Timeout ] -Bug(none) http/tests/fetch/serviceworker-proxied/thorough/cors-preflight2.html [ Crash Timeout ] -Bug(none) http/tests/fetch/serviceworker-proxied/thorough/cors.html [ Crash Timeout ] -Bug(none) http/tests/fetch/serviceworker-proxied/thorough/nocors-base-https-other-https.html [ Crash Timeout ] -Bug(none) http/tests/fetch/serviceworker-proxied/thorough/nocors-other-https.html [ Crash Timeout ] -Bug(none) http/tests/fetch/serviceworker-proxied/thorough/nocors.html [ Crash Timeout ] -Bug(none) http/tests/fetch/serviceworker-proxied/thorough/redirect-base-https-other-https.html [ Crash Timeout ] -Bug(none) http/tests/fetch/serviceworker-proxied/thorough/redirect-credentials-base-https-other-https.html [ Crash Timeout ] -Bug(none) http/tests/fetch/serviceworker-proxied/thorough/redirect-credentials-other-https.html [ Crash Timeout ] -Bug(none) http/tests/fetch/serviceworker-proxied/thorough/redirect-credentials.html [ Crash Timeout ] -Bug(none) http/tests/fetch/serviceworker-proxied/thorough/redirect-loop-base-https-other-https.html [ Crash Timeout ] -Bug(none) http/tests/fetch/serviceworker-proxied/thorough/redirect-loop-other-https.html [ Crash Timeout ] -Bug(none) http/tests/fetch/serviceworker-proxied/thorough/redirect-loop.html [ Crash Timeout ] -Bug(none) http/tests/fetch/serviceworker-proxied/thorough/redirect-nocors-base-https-other-https.html [ Crash Timeout ] -Bug(none) http/tests/fetch/serviceworker-proxied/thorough/redirect-nocors-other-https.html [ Crash Timeout ] -Bug(none) http/tests/fetch/serviceworker-proxied/thorough/redirect-nocors.html [ Crash Timeout ] -Bug(none) http/tests/fetch/serviceworker-proxied/thorough/redirect-other-https.html [ Crash Timeout ] -Bug(none) http/tests/fetch/serviceworker-proxied/thorough/redirect-password-base-https-other-https.html [ Crash Timeout ] -Bug(none) http/tests/fetch/serviceworker-proxied/thorough/redirect-password-other-https.html [ Crash Timeout ] -Bug(none) http/tests/fetch/serviceworker-proxied/thorough/redirect-password.html [ Crash Timeout ] -Bug(none) http/tests/fetch/serviceworker-proxied/thorough/redirect.html [ Crash Timeout ] -Bug(none) http/tests/fetch/serviceworker-proxied/thorough/scheme-blob-base-https-other-https.html [ Crash Timeout ] -Bug(none) http/tests/fetch/serviceworker-proxied/thorough/scheme-blob-other-https.html [ Crash Timeout ] -Bug(none) http/tests/fetch/serviceworker-proxied/thorough/scheme-blob.html [ Crash Timeout ] -Bug(none) http/tests/fetch/serviceworker-proxied/thorough/scheme-data-base-https-other-https.html [ Crash Timeout ] -Bug(none) http/tests/fetch/serviceworker-proxied/thorough/scheme-data-other-https.html [ Crash Timeout ] -Bug(none) http/tests/fetch/serviceworker-proxied/thorough/scheme-data.html [ Crash Timeout ] Bug(none) http/tests/fetch/serviceworker/fetch-base-https-other-https.html [ Failure Timeout ] Bug(none) http/tests/fetch/serviceworker/fetch.html [ Failure Timeout ] Bug(none) http/tests/fetch/window/fetch-base-https-other-https.html [ Failure Timeout ]
diff --git a/third_party/WebKit/LayoutTests/compositing/overflow/border-radius-styles-with-composited-child-expected.png b/third_party/WebKit/LayoutTests/compositing/overflow/border-radius-styles-with-composited-child-expected.png deleted file mode 100644 index 5fa2b0b..0000000 --- a/third_party/WebKit/LayoutTests/compositing/overflow/border-radius-styles-with-composited-child-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/WebKit/LayoutTests/external/WPT_BASE_MANIFEST.json b/third_party/WebKit/LayoutTests/external/WPT_BASE_MANIFEST.json index 4ecdf986..2f797e4 100644 --- a/third_party/WebKit/LayoutTests/external/WPT_BASE_MANIFEST.json +++ b/third_party/WebKit/LayoutTests/external/WPT_BASE_MANIFEST.json
@@ -99967,11 +99967,6 @@ {} ] ], - "eventsource/eventsource-constructor-non-same-origin-expected.txt": [ - [ - {} - ] - ], "eventsource/eventsource-constructor-url-bogus-expected.txt": [ [ {} @@ -109662,16 +109657,6 @@ {} ] ], - "html/semantics/embedded-content/the-canvas-element/security.reset.cross-expected.txt": [ - [ - {} - ] - ], - "html/semantics/embedded-content/the-canvas-element/security.reset.redirect-expected.txt": [ - [ - {} - ] - ], "html/semantics/embedded-content/the-canvas-element/size.attributes.default.png": [ [ {} @@ -110852,6 +110837,176 @@ {} ] ], + "html/semantics/scripting-1/the-script-element/execution-timing/028-expected.txt": [ + [ + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/029-expected.txt": [ + [ + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/030-expected.txt": [ + [ + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/035-expected.txt": [ + [ + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/040-expected.txt": [ + [ + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/080-expected.txt": [ + [ + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/083-expected.txt": [ + [ + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/084-expected.txt": [ + [ + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/102.html": [ + [ + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/108-expected.txt": [ + [ + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/109-expected.txt": [ + [ + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/116-expected.txt": [ + [ + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/128-expected.txt": [ + [ + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/146-expected.txt": [ + [ + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/148-expected.txt": [ + [ + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/css/background.css": [ + [ + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/css/import.css": [ + [ + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/pages/helloworld-postMessage.html": [ + [ + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/pages/helloworld.html": [ + [ + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/scripts/count-script-tags.js": [ + [ + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/scripts/find-body.js": [ + [ + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/scripts/find-foo.js": [ + [ + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/scripts/include-1.js": [ + [ + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/scripts/include-10.js": [ + [ + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/scripts/include-11.js": [ + [ + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/scripts/include-2.js": [ + [ + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/scripts/include-3.js": [ + [ + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/scripts/include-4.js": [ + [ + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/scripts/include-5.js": [ + [ + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/scripts/include-6.js": [ + [ + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/scripts/include-7.js": [ + [ + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/scripts/include-8.js": [ + [ + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/scripts/include-9.js": [ + [ + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/testlib/testlib.js": [ + [ + {} + ] + ], "html/semantics/scripting-1/the-script-element/external-script-utf8.js": [ [ {} @@ -113072,6 +113227,11 @@ {} ] ], + "interfaces/console.idl": [ + [ + {} + ] + ], "interfaces/cssom-view.idl": [ [ {} @@ -114597,11 +114757,6 @@ {} ] ], - "navigation-timing/idlharness-expected.txt": [ - [ - {} - ] - ], "navigation-timing/nav2_data_uri.html": [ [ {} @@ -119612,6 +119767,11 @@ {} ] ], + "service-workers/service-worker/resources/mime-sniffing-worker.js": [ + [ + {} + ] + ], "service-workers/service-worker/resources/mime-type-worker.py": [ [ {} @@ -146485,6 +146645,12 @@ {} ] ], + "fetch/api/request/request-type-attribute-historical.html": [ + [ + "/fetch/api/request/request-type-attribute-historical.html", + {} + ] + ], "fetch/api/response/multi-globals/url-parsing.html": [ [ "/fetch/api/response/multi-globals/url-parsing.html", @@ -152793,6 +152959,12 @@ {} ] ], + "html/semantics/forms/the-button-element/button-checkvalidity.html": [ + [ + "/html/semantics/forms/the-button-element/button-checkvalidity.html", + {} + ] + ], "html/semantics/forms/the-button-element/button-click-submits.html": [ [ "/html/semantics/forms/the-button-element/button-click-submits.html", @@ -152805,12 +152977,24 @@ {} ] ], + "html/semantics/forms/the-button-element/button-labels.html": [ + [ + "/html/semantics/forms/the-button-element/button-labels.html", + {} + ] + ], "html/semantics/forms/the-button-element/button-menu-historical.html": [ [ "/html/semantics/forms/the-button-element/button-menu-historical.html", {} ] ], + "html/semantics/forms/the-button-element/button-setcustomvalidity.html": [ + [ + "/html/semantics/forms/the-button-element/button-setcustomvalidity.html", + {} + ] + ], "html/semantics/forms/the-button-element/button-type.html": [ [ "/html/semantics/forms/the-button-element/button-type.html", @@ -152823,6 +153007,24 @@ {} ] ], + "html/semantics/forms/the-button-element/button-validationmessage.html": [ + [ + "/html/semantics/forms/the-button-element/button-validationmessage.html", + {} + ] + ], + "html/semantics/forms/the-button-element/button-validity.html": [ + [ + "/html/semantics/forms/the-button-element/button-validity.html", + {} + ] + ], + "html/semantics/forms/the-button-element/button-willvalidate.html": [ + [ + "/html/semantics/forms/the-button-element/button-willvalidate.html", + {} + ] + ], "html/semantics/forms/the-datalist-element/datalistoptions.html": [ [ "/html/semantics/forms/the-datalist-element/datalistoptions.html", @@ -152847,6 +153049,36 @@ {} ] ], + "html/semantics/forms/the-fieldset-element/fieldset-checkvalidity.html": [ + [ + "/html/semantics/forms/the-fieldset-element/fieldset-checkvalidity.html", + {} + ] + ], + "html/semantics/forms/the-fieldset-element/fieldset-setcustomvalidity.html": [ + [ + "/html/semantics/forms/the-fieldset-element/fieldset-setcustomvalidity.html", + {} + ] + ], + "html/semantics/forms/the-fieldset-element/fieldset-validationmessage.html": [ + [ + "/html/semantics/forms/the-fieldset-element/fieldset-validationmessage.html", + {} + ] + ], + "html/semantics/forms/the-fieldset-element/fieldset-validity.html": [ + [ + "/html/semantics/forms/the-fieldset-element/fieldset-validity.html", + {} + ] + ], + "html/semantics/forms/the-fieldset-element/fieldset-willvalidate.html": [ + [ + "/html/semantics/forms/the-fieldset-element/fieldset-willvalidate.html", + {} + ] + ], "html/semantics/forms/the-form-element/form-action-reflection-with-base-url.html": [ [ "/html/semantics/forms/the-form-element/form-action-reflection-with-base-url.html", @@ -152871,12 +153103,24 @@ {} ] ], + "html/semantics/forms/the-form-element/form-action.html": [ + [ + "/html/semantics/forms/the-form-element/form-action.html", + {} + ] + ], "html/semantics/forms/the-form-element/form-autocomplete.html": [ [ "/html/semantics/forms/the-form-element/form-autocomplete.html", {} ] ], + "html/semantics/forms/the-form-element/form-checkvalidity.html": [ + [ + "/html/semantics/forms/the-form-element/form-checkvalidity.html", + {} + ] + ], "html/semantics/forms/the-form-element/form-elements-filter.html": [ [ "/html/semantics/forms/the-form-element/form-elements-filter.html", @@ -152919,6 +153163,12 @@ {} ] ], + "html/semantics/forms/the-form-element/form-length.html": [ + [ + "/html/semantics/forms/the-form-element/form-length.html", + {} + ] + ], "html/semantics/forms/the-form-element/form-nameditem.html": [ [ "/html/semantics/forms/the-form-element/form-nameditem.html", @@ -153003,6 +153253,42 @@ {} ] ], + "html/semantics/forms/the-input-element/input-checkvalidity.html": [ + [ + "/html/semantics/forms/the-input-element/input-checkvalidity.html", + {} + ] + ], + "html/semantics/forms/the-input-element/input-height.html": [ + [ + "/html/semantics/forms/the-input-element/input-height.html", + {} + ] + ], + "html/semantics/forms/the-input-element/input-labels.html": [ + [ + "/html/semantics/forms/the-input-element/input-labels.html", + {} + ] + ], + "html/semantics/forms/the-input-element/input-setcustomvalidity.html": [ + [ + "/html/semantics/forms/the-input-element/input-setcustomvalidity.html", + {} + ] + ], + "html/semantics/forms/the-input-element/input-stepdown.html": [ + [ + "/html/semantics/forms/the-input-element/input-stepdown.html", + {} + ] + ], + "html/semantics/forms/the-input-element/input-stepup.html": [ + [ + "/html/semantics/forms/the-input-element/input-stepup.html", + {} + ] + ], "html/semantics/forms/the-input-element/input-type-button.html": [ [ "/html/semantics/forms/the-input-element/input-type-button.html", @@ -153015,6 +153301,48 @@ {} ] ], + "html/semantics/forms/the-input-element/input-validationmessage.html": [ + [ + "/html/semantics/forms/the-input-element/input-validationmessage.html", + {} + ] + ], + "html/semantics/forms/the-input-element/input-validity.html": [ + [ + "/html/semantics/forms/the-input-element/input-validity.html", + {} + ] + ], + "html/semantics/forms/the-input-element/input-value-invalidstateerr.html": [ + [ + "/html/semantics/forms/the-input-element/input-value-invalidstateerr.html", + {} + ] + ], + "html/semantics/forms/the-input-element/input-valueasdate-invalidstateerr.html": [ + [ + "/html/semantics/forms/the-input-element/input-valueasdate-invalidstateerr.html", + {} + ] + ], + "html/semantics/forms/the-input-element/input-valueasnumber-invalidstateerr.html": [ + [ + "/html/semantics/forms/the-input-element/input-valueasnumber-invalidstateerr.html", + {} + ] + ], + "html/semantics/forms/the-input-element/input-width.html": [ + [ + "/html/semantics/forms/the-input-element/input-width.html", + {} + ] + ], + "html/semantics/forms/the-input-element/input-willvalidate.html": [ + [ + "/html/semantics/forms/the-input-element/input-willvalidate.html", + {} + ] + ], "html/semantics/forms/the-input-element/maxlength.html": [ [ "/html/semantics/forms/the-input-element/maxlength.html", @@ -153603,6 +153931,894 @@ {} ] ], + "html/semantics/scripting-1/the-script-element/execution-timing/001.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/001.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/002.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/002.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/003.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/003.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/004.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/004.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/005.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/005.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/006.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/006.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/007.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/007.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/008.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/008.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/009.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/009.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/010.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/010.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/011.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/011.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/012.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/012.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/013.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/013.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/014.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/014.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/015.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/015.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/015a.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/015a.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/016.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/016.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/017.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/017.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/018.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/018.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/019.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/019.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/020.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/020.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/021.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/021.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/022.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/022.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/023.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/023.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/024.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/024.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/025.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/025.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/026.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/026.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/027.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/027.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/028.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/028.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/029.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/029.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/030.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/030.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/031.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/031.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/032.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/032.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/033.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/033.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/034.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/034.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/035.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/035.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/036.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/036.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/037.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/037.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/038.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/038.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/039.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/039.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/040.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/040.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/041.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/041.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/042.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/042.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/043.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/043.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/044.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/044.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/045.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/045.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/046.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/046.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/047.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/047.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/048.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/048.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/049.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/049.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/050.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/050.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/051.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/051.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/052.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/052.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/053.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/053.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/054.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/054.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/055.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/055.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/056.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/056.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/057.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/057.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/058.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/058.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/059.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/059.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/060.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/060.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/061.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/061.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/062.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/062.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/063.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/063.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/064.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/064.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/065.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/065.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/066.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/066.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/067.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/067.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/068.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/068.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/069.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/069.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/070.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/070.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/071.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/071.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/072.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/072.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/073.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/073.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/074.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/074.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/075.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/075.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/076.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/076.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/077.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/077.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/078.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/078.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/079.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/079.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/080.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/080.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/081.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/081.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/082.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/082.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/083.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/083.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/084.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/084.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/085.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/085.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/086.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/086.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/087.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/087.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/088.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/088.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/089.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/089.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/090.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/090.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/091.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/091.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/092.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/092.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/094.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/094.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/095.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/095.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/096.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/096.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/097.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/097.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/099.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/099.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/101.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/101.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/103.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/103.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/104.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/104.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/105.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/105.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/106-import.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/106-import.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/106-noimport.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/106-noimport.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/107-import.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/107-import.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/107-noimport.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/107-noimport.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/108.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/108.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/109.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/109.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/110.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/110.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/111.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/111.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/112.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/112.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/113.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/113.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/114.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/114.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/115.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/115.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/116.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/116.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/117.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/117.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/118.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/118.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/119.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/119.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/120.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/120.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/121.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/121.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/122.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/122.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/123.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/123.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/124.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/124.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/125.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/125.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/126.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/126.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/127.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/127.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/128.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/128.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/129.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/129.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/130.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/130.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/131.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/131.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/132.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/132.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/133.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/133.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/134.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/134.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/135.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/135.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/136.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/136.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/137.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/137.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/138.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/138.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/139.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/139.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/140.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/140.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/141.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/141.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/142.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/142.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/143.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/143.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/144.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/144.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/145.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/145.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/146.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/146.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/147.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/147.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/148.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/148.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/execution-timing/149.html": [ + [ + "/html/semantics/scripting-1/the-script-element/execution-timing/149.html", + {} + ] + ], "html/semantics/scripting-1/the-script-element/fetch-src/alpha/base.html": [ [ "/html/semantics/scripting-1/the-script-element/fetch-src/alpha/base.html", @@ -178501,6 +179717,12 @@ {} ] ], + "service-workers/service-worker/mime-sniffing.https.html": [ + [ + "/service-workers/service-worker/mime-sniffing.https.html", + {} + ] + ], "service-workers/service-worker/multi-globals/url-parsing.https.html": [ [ "/service-workers/service-worker/multi-globals/url-parsing.https.html", @@ -190865,7 +192087,7 @@ "support" ], "./lint.whitelist": [ - "40d3e84a156ba789a79a4392f5e544d5c9c020c8", + "ef689c959f1dbbf6d3396e4118364275f0d309fb", "support" ], "./update-built-tests.sh": [ @@ -195049,7 +196271,7 @@ "support" ], "2dcontext/tools/tests.yaml": [ - "ce69d48960f561a0bf43b7346d7e387e2ac9e110", + "7a0d644759c65dc61373eaef42d7c9581683f660", "support" ], "2dcontext/tools/tests2d.yaml": [ @@ -252940,12 +254162,8 @@ "f44e3f48de8e62ea50a3a6bf6fa91c117357ce26", "testharness" ], - "eventsource/eventsource-constructor-non-same-origin-expected.txt": [ - "868fb8849b1fb5d3c7c170eb92572f3d83142980", - "support" - ], "eventsource/eventsource-constructor-non-same-origin.htm": [ - "a4c501a1bd6dbc04dbead8326b5f804a2b832be1", + "6585a2c3f3335dacf045db66d4754e9a1d808cbd", "testharness" ], "eventsource/eventsource-constructor-stringify.htm": [ @@ -253969,11 +255187,11 @@ "testharness" ], "fetch/api/request/request-idl-expected.txt": [ - "663070c97d55f3060dba744c710977210e331913", + "aba10c1317628b544cb67b9d3637c767d611913b", "support" ], "fetch/api/request/request-idl.html": [ - "56e19a129457bc9dcecf28fd472fd7ae608337ef", + "b2f1431738bd7f389ab43cf8c10aed3b0d12abb8", "testharness" ], "fetch/api/request/request-init-001.sub-expected.txt": [ @@ -254001,11 +255219,15 @@ "testharness" ], "fetch/api/request/request-structure-expected.txt": [ - "a058d1fdc8f2276e8c4f6e759694bbb8c48c3cc8", + "10a0e500b1ab89d74b0f8ff3e8c191fd99b54b28", "support" ], "fetch/api/request/request-structure.html": [ - "f1e332f5d3a7ee414fa01411b2534884d10462e9", + "cc2471d809fcf7842c38762614c656bb45bb0fc7", + "testharness" + ], + "fetch/api/request/request-type-attribute-historical.html": [ + "68620f3ea16b7ae1a9f1efde1cd0bb47f1150b9f", "testharness" ], "fetch/api/request/resources/cache.py": [ @@ -265972,20 +267194,12 @@ "d7c4bac59fb35405582c7a008f0e71c20805da86", "testharness" ], - "html/semantics/embedded-content/the-canvas-element/security.reset.cross-expected.txt": [ - "5bb2752bd82fa78b479f74694c4a5d4724c58b91", - "support" - ], "html/semantics/embedded-content/the-canvas-element/security.reset.cross.html": [ - "1b844c83c588d722d3b0ef3247d76aaacddfbe9a", + "e263694445c44f0d428c2b67a63d81c96bcbc0b8", "testharness" ], - "html/semantics/embedded-content/the-canvas-element/security.reset.redirect-expected.txt": [ - "5bb2752bd82fa78b479f74694c4a5d4724c58b91", - "support" - ], "html/semantics/embedded-content/the-canvas-element/security.reset.redirect.html": [ - "93e50cbaf157c2639f62662801dc1df4b983bde9", + "53917c9910fc573b7438b47a6f4e23529bc46c29", "testharness" ], "html/semantics/embedded-content/the-canvas-element/size.attributes.default.html": [ @@ -267296,6 +268510,10 @@ "fd6cbf436213e6a1324d3944f28199b5b7a04d87", "testharness" ], + "html/semantics/forms/the-button-element/button-checkvalidity.html": [ + "8a50258a64a0897bbe50a6a0f151a83b3e4662f7", + "testharness" + ], "html/semantics/forms/the-button-element/button-click-submits.html": [ "2572c669271b48b218a4ff058789fabed5f3751c", "testharness" @@ -267308,10 +268526,18 @@ "322fc4a9f013595a9ac2550401a2743b2ab85b07", "testharness" ], + "html/semantics/forms/the-button-element/button-labels.html": [ + "138bd9c218383a2e4e49d45b08eb15760e2c49b5", + "testharness" + ], "html/semantics/forms/the-button-element/button-menu-historical.html": [ "61d2efc186cc8124ca884dbb8f5b74ef6ca339e8", "testharness" ], + "html/semantics/forms/the-button-element/button-setcustomvalidity.html": [ + "1db71a5bee8a77768dc54cbd1dc3ef000c2eaa6b", + "testharness" + ], "html/semantics/forms/the-button-element/button-type.html": [ "dad1f595fb83eefbb8fa8261a42654c1178f3a13", "testharness" @@ -267324,6 +268550,18 @@ "a4bb6a1e45b5b92e170e87d153a44f2027ff3717", "testharness" ], + "html/semantics/forms/the-button-element/button-validationmessage.html": [ + "443871769510376bd4009893fc808e17ba3e03d8", + "testharness" + ], + "html/semantics/forms/the-button-element/button-validity.html": [ + "867d20b4b61629a1394d53b37f15839e84386a75", + "testharness" + ], + "html/semantics/forms/the-button-element/button-willvalidate.html": [ + "65e3d4c40ee1f2386759f3abf5ade870217993f3", + "testharness" + ], "html/semantics/forms/the-datalist-element/.gitkeep": [ "da39a3ee5e6b4b0d3255bfef95601890afd80709", "support" @@ -267348,6 +268586,26 @@ "4d815c63bd1fb4a1ae1e3c3c94a98e2975f2f68c", "testharness" ], + "html/semantics/forms/the-fieldset-element/fieldset-checkvalidity.html": [ + "9fcfee0f0149cb35b4ea59a858639bb966be51d5", + "testharness" + ], + "html/semantics/forms/the-fieldset-element/fieldset-setcustomvalidity.html": [ + "4954cc5b7e1c170a6ac3c815c8c1566be9da25d4", + "testharness" + ], + "html/semantics/forms/the-fieldset-element/fieldset-validationmessage.html": [ + "fa45f6b2b651a14cd13351e5f96c5b21cb61c4f0", + "testharness" + ], + "html/semantics/forms/the-fieldset-element/fieldset-validity.html": [ + "619c711a6a1fa39324fa78d5c740bf2232da280f", + "testharness" + ], + "html/semantics/forms/the-fieldset-element/fieldset-willvalidate.html": [ + "ae6898e558da0ee8cca3cd31a5d3cfc5dc9c49a0", + "testharness" + ], "html/semantics/forms/the-form-element/.gitkeep": [ "da39a3ee5e6b4b0d3255bfef95601890afd80709", "support" @@ -267376,6 +268634,10 @@ "e2a223d34051f8c80a2e6cb2afb24dfc8971c33a", "testharness" ], + "html/semantics/forms/the-form-element/form-action.html": [ + "f576ae6731a157cc2d3779cfb6f10819da7b2e8a", + "testharness" + ], "html/semantics/forms/the-form-element/form-autocomplete-expected.txt": [ "a54ce3703f2efd9c4279e20ddde659e7a11cc85d", "support" @@ -267384,6 +268646,10 @@ "c3aae63b6c007e3f39a7bf39c56bcdb7172273ad", "testharness" ], + "html/semantics/forms/the-form-element/form-checkvalidity.html": [ + "1b30a0c5dd414e6a928ca2392b5efc878cdfeb97", + "testharness" + ], "html/semantics/forms/the-form-element/form-elements-filter.html": [ "7dfc9203a9900c8ade5e1f85926c92fe29f984a8", "testharness" @@ -267416,6 +268682,10 @@ "1131356cf872490f9ee110bf4e487a520be63c4c", "testharness" ], + "html/semantics/forms/the-form-element/form-length.html": [ + "4472cc5f40bdd836938ec95166b0b6f804ae04d0", + "testharness" + ], "html/semantics/forms/the-form-element/form-nameditem-expected.txt": [ "5ff0031e4d09e4e9967a28a135f7cfeb305d095f", "support" @@ -267524,6 +268794,30 @@ "b54b500168a20c1e3d23437184bfed78c9c73ef1", "reftest" ], + "html/semantics/forms/the-input-element/input-checkvalidity.html": [ + "48966edfbef5bd48525f45ec4a0f3e240778fc36", + "testharness" + ], + "html/semantics/forms/the-input-element/input-height.html": [ + "c9ee649fc6abd58e49c60afb6d5d916939f2fffb", + "testharness" + ], + "html/semantics/forms/the-input-element/input-labels.html": [ + "0d260017459d6d3b7e446acc9177767ba288b652", + "testharness" + ], + "html/semantics/forms/the-input-element/input-setcustomvalidity.html": [ + "8397448c6a8fc9371303266671c0a1d17d488d5c", + "testharness" + ], + "html/semantics/forms/the-input-element/input-stepdown.html": [ + "1341b0d275696f2bdb7ecc70632fa9a929f7d8c4", + "testharness" + ], + "html/semantics/forms/the-input-element/input-stepup.html": [ + "3305c40cd51e176ee6e73d2ce7042a3a0190ba5d", + "testharness" + ], "html/semantics/forms/the-input-element/input-type-button.html": [ "03652904d0d1e992379c6ab79780b8af758a4803", "testharness" @@ -267532,6 +268826,34 @@ "a7619f660943eec21a9af1be2ac68d6a9be561b4", "testharness" ], + "html/semantics/forms/the-input-element/input-validationmessage.html": [ + "8d9679a2f600b93e0736a004be9d17964990691b", + "testharness" + ], + "html/semantics/forms/the-input-element/input-validity.html": [ + "f96fcd74b42c108c6f6ca91df9e36dbba088983c", + "testharness" + ], + "html/semantics/forms/the-input-element/input-value-invalidstateerr.html": [ + "f4003cc2133dea2e8305c9a6bdf91dd01f0f4c4a", + "testharness" + ], + "html/semantics/forms/the-input-element/input-valueasdate-invalidstateerr.html": [ + "f3c620461383467fcbf1b9c2ee55e9e2a1abf516", + "testharness" + ], + "html/semantics/forms/the-input-element/input-valueasnumber-invalidstateerr.html": [ + "5cd8f0d590eb91eb6a5104afb5eba9d8b6dd3a74", + "testharness" + ], + "html/semantics/forms/the-input-element/input-width.html": [ + "83299d319c30afb7869e281b354c97f99b22634a", + "testharness" + ], + "html/semantics/forms/the-input-element/input-willvalidate.html": [ + "1ad2401b3db0e8a502ea943f2eba6b4c2801d818", + "testharness" + ], "html/semantics/forms/the-input-element/maxlength.html": [ "eec2b53e435d965fa4b77167ceecc3824faaff6e", "testharness" @@ -268408,6 +269730,734 @@ "1fe7fe27c3680b24fbbb9c09c849ecb007637d3f", "testharness" ], + "html/semantics/scripting-1/the-script-element/execution-timing/001.html": [ + "d23ee4e0c5c00c5d7d4391ebb346536706667759", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/002.html": [ + "5d092ce11bcefce70ae01bb7001bb889da3dbf5d", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/003.html": [ + "8816ebc0a22bd4d3e18abd2805674192d29f3c56", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/004.html": [ + "04a8b79a47ca437a02a17bb551b7fef2b6a7d835", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/005.html": [ + "37c775d72cfdd519dfe126265ab77b272d1bc0c8", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/006.html": [ + "1a4f3d8b56d6e791731fda5e780a2b69573c3eea", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/007.html": [ + "1e52e022c5b97bd1dee6cbfe6edda4cc491458d7", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/008.html": [ + "ba143e2e8a844ddc8387233d8b4df3f5be5561c3", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/009.html": [ + "b0b0c51cf1f3d451592817ee875959c9fcad9418", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/010.html": [ + "e1bfc98b54eb53b3520fbfba440551121176453b", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/011.html": [ + "40f7ba1fd6581d2d6244e22159b50f98d1612fe1", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/012.html": [ + "842414a5d4fc08a4e912516113b0315037eb8a60", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/013.html": [ + "a3d31f55bba0f353ab5caf78beacae281fd7de9d", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/014.html": [ + "1a3b078aafa030aa0e3caab6a5e62570bc88af1d", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/015.html": [ + "07443ef6a9cf56f819ff47255da89d68d56888d1", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/015a.html": [ + "0291cba1bbbbe463a61eed48acfd5c1a40d79625", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/016.html": [ + "202b0b13b825df17d884bbe451c7b0c5191140d5", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/017.html": [ + "ce99b2f58fcce540ec59cdb1837a43ade8e3c445", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/018.html": [ + "47ffb063e8310b7863b2eef1ec45fbb9804cd024", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/019.html": [ + "4b1f1d3d868715cc9d43e85f7774e9578f8e3b23", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/020.html": [ + "cd5cb151ef5aa014b8fc644da13004b4ab80f918", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/021.html": [ + "5da0f3f20606338b7b5a3798412ec898d717c5cd", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/022.html": [ + "324705142c6eb688e421f40866af8efda10614c5", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/023.html": [ + "aba03041f8bbade7f83f31d8a38ff247db0a033a", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/024.html": [ + "9189d5d9e97ac61133296d74960a47e8d735760d", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/025.html": [ + "709b649c46dd694b128c4c0269705ddce31fdf51", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/026.html": [ + "f773e76d937b46495df061d263c2448045003d2c", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/027.html": [ + "467f8ba4a1046d643dab83b5f9cf87219f437d16", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/028-expected.txt": [ + "7a8b2bfd7155b693b1dac12f38fe9c74e70f323e", + "support" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/028.html": [ + "e6db3561c59689d2daf87a4ff7579e82869ad1a4", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/029-expected.txt": [ + "34432064dc939eee194ee650d2315544b561d55d", + "support" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/029.html": [ + "8aed4c01686d0584f3bf64c96fa1b40f4c5e7cb6", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/030-expected.txt": [ + "5af3daabf8b322294ccc9e0350d2ff1a230cd416", + "support" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/030.html": [ + "c4e54e3679de97974fc9712e94e1b65a59a92dc2", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/031.html": [ + "a32f62c9e473df14a85bf5961821322107253d0a", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/032.html": [ + "0960b1cf2ef637880c41c4b0d5bfb9d6a4d05db9", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/033.html": [ + "0ff9f866cd241987016b2c9a032b4efdd2ddcafa", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/034.html": [ + "d02af948b140f0a12e9ec61113e268a884063075", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/035-expected.txt": [ + "2a7c1eef0e3f4d86a40051cbce7dce7ae32241af", + "support" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/035.html": [ + "710dd846ef4562af224083485916875bd7050074", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/036.html": [ + "0dc31c258b1f527c93f8ad406aea991619e90f54", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/037.html": [ + "699691cf6c438cf37577b447ddc8a4e02356043e", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/038.html": [ + "9d58a9f108344b8015aba6e7f22bee9dc964801b", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/039.html": [ + "8f1cc330e3aa99be1324239a939ea0c9c0344c4b", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/040-expected.txt": [ + "1ceea2c979f85d29f70a5204affdc9c6367f90d0", + "support" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/040.html": [ + "10c9ca126729f1924f66f6ae73500077320f83c4", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/041.html": [ + "08170c207fd5bdbcb03b991ae95a4f092a3bda9e", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/042.html": [ + "0f0666cddf6f56ba8895bb6f439dea84bc140a27", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/043.html": [ + "04f9067295d8bf022e9b4b2ebaed53248de23afa", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/044.html": [ + "1ca89c76816117a1d3dc95604f4ebf6fde3c5dca", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/045.html": [ + "b2e9b2a41e4c8036c4e6213f741039d899a6b741", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/046.html": [ + "f6871a347c13221475de9488fac2a5389dda53ca", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/047.html": [ + "8ec0b8d61e7db888255872254cd1a46573dacb41", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/048.html": [ + "c7b02c6f69234639f2809425fdaf6ec004fce999", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/049.html": [ + "807973fb2e8f5c00914f09445b602a9b6df2f544", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/050.html": [ + "37c44d5bd82e4cc839404ec4af5e92b06614cbfd", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/051.html": [ + "d06c4297e7bf4da6ccbad488864aa7fd2fcb1394", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/052.html": [ + "b924f14c757438522610244498f28aa3a142c14b", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/053.html": [ + "8712c6b08a1a5f43fbb901762b6b5cd12ebbace5", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/054.html": [ + "71933d0ced1e7fa1123689eca895e52bd0944940", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/055.html": [ + "27e5aaec0291a2b8fdb7a56798cba419f957f252", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/056.html": [ + "9ecf4fa7eaf31babc4df73a4961a3cafb316b5a2", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/057.html": [ + "c906d6ae1433447512d77bd9fce2d0a4cfe2adbc", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/058.html": [ + "083f0f66c76b55f09085bc4a58d3fd38b71965e0", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/059.html": [ + "e25c32a4f5a39f1be467ec0aa2c720a2d35ca932", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/060.html": [ + "a3a4dc2504b3fc328b1799b5396ab12dd5e9c1e5", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/061.html": [ + "6160078136cc7b7141a6782e1fe85d07809a8494", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/062.html": [ + "23800f06871a9ccbcbbad57026392d1736c59f51", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/063.html": [ + "4a14ffb877cfcabbca43c0839002a3665482ea42", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/064.html": [ + "0df9e896cd4024431d79015bae07106b8c90ec38", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/065.html": [ + "a3e198095c684fe65f7410b17f30e20d5159825a", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/066.html": [ + "d0a459b7effa011e26f59e8fa5739d06613709da", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/067.html": [ + "f883a1cc977c4a7fe60e3b092508650521397e14", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/068.html": [ + "bbd657ff7506c8a28185b6865ddf9a389c27aaf7", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/069.html": [ + "d1ee26c303c8e7c3e6f5041a25a978073be697f4", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/070.html": [ + "7b0356538c3b22127fd386646fd59f26678d116b", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/071.html": [ + "33eaa69d30bcb6fb76523f09d4f2da82e620824d", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/072.html": [ + "4499c86050bda22dc556949dfdc12200403b395b", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/073.html": [ + "d425736a5e4963f2cb3dbb1b5302d254170ec31b", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/074.html": [ + "e998a89f344b2cffe0dbb368eb7c3840f5627bff", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/075.html": [ + "01089de4c049a4b35e675f8ac6c5c82f0770201e", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/076.html": [ + "c410028036e51ae5529acce711ea3dc1cbc83728", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/077.html": [ + "2bfe280f0ae7b745f2217055e66579ab6fb06769", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/078.html": [ + "71244598c4d1c581fb0b8c9a9eb1b19f642428f7", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/079.html": [ + "c8ad7d7bd5cdfbd52d4250b43df2abd4f06320e5", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/080-expected.txt": [ + "64716b244904d3873aba265f02ab48a7b1127fb7", + "support" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/080.html": [ + "719db071d0811f4bc538376c0a76f79d7c200730", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/081.html": [ + "6597e659964354f9c41ddb6925f34623e58db53a", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/082.html": [ + "bef1558730e9919f70c9d40aa811586648cc916a", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/083-expected.txt": [ + "374bfab4c9cc493bbd67765758881f64ca42dc8b", + "support" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/083.html": [ + "c8cfd89e086120759ea5fd8f16948076beee8155", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/084-expected.txt": [ + "c3e08b32e6c0a415da64f9f817676cdfdd8b3ed9", + "support" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/084.html": [ + "659b7632d4b0bd8ea4313640459afa18fa6d64a1", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/085.html": [ + "2679374b00a1cbd7bceb27cc696f43f8607e46d5", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/086.html": [ + "1fccb73a9edfc52c76a190ddf50b8d5f7b5b51c6", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/087.html": [ + "3a540cfe0c880fd2e18744fe9e2ae6db4a99286d", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/088.html": [ + "90dbe71c37b9434a1d27fa1c5ec3114f21a2a31f", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/089.html": [ + "8b2fb9ceac6efb40495bfc11a990e5c36f37841f", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/090.html": [ + "bbe3fd83cb6ae72411fc90765ed1be34ebc121f3", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/091.html": [ + "c0f530e26a32057f959e956e9afcf17d6ff4ea85", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/092.html": [ + "12bb519adbd5c893c707cd3b380542d6b91066e5", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/094.html": [ + "5915860f57305a372e1d1e0af64d3b7ac3a17a89", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/095.html": [ + "909eee2234b05c80065928819a88f7ce70348034", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/096.html": [ + "2b7db1943ab7ce33fac27d10fcccadac1a11c188", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/097.html": [ + "a0ca9cf4f61905345ad53136617f2f77a4e44b66", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/099.html": [ + "02e40ca54cb912ca3545f5b84d652bcd934cb09a", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/101.html": [ + "8aa9b4d0c0c3aec53f4b9cbbbe04a98198379c8f", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/102.html": [ + "e9947d2246c4df9e98198508c2105e10902e6203", + "support" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/103.html": [ + "b7e6bcc02ea853070cc474f174fd585841812feb", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/104.html": [ + "c701f6fd4c92d4f67069547ec00a28647841731f", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/105.html": [ + "f0dad0aefb07c07d7201e92a674f90a68d469973", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/106-import.html": [ + "e231c8038d73b9ee2dedfe0682fb8c21d5271fcb", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/106-noimport.html": [ + "0ae4f0b07e4d96371f6cfa2f8344945caee4b936", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/107-import.html": [ + "cd8a4716caaabb26a1dd6cb38068479b351a49fe", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/107-noimport.html": [ + "60448c23c8165a2c4f439d89732f8fedf8498a3a", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/108-expected.txt": [ + "46608239410ba940966a71eda717a0b52e6cb313", + "support" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/108.html": [ + "0be6d320bf37804fcfe7b78a07a3142faaba1572", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/109-expected.txt": [ + "c5ba54d7d3f311327fce63523b7b92aadc6b0043", + "support" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/109.html": [ + "39a7189ff52030e640d83198d6a4146e920a91f6", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/110.html": [ + "3420419e7c63b7ca90e04bde19a4bc95f3a5c95d", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/111.html": [ + "a99a1c9e43cbd3332130a165774dd54d4ac8c4be", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/112.html": [ + "4447a3344bfdf9e3d56a6bf754c33d2f53933aa0", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/113.html": [ + "9bacb339d93392b93edab759c910c1cdab09f6df", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/114.html": [ + "0000752ff78abb1158197a8e8920a54e97cb7b77", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/115.html": [ + "52b423eb9f50314e1b27ee61fb41f6d279888c07", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/116-expected.txt": [ + "b98bcf390e664aaac1c75ae08b4ba78e33d75ad0", + "support" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/116.html": [ + "d77e037c163cfc8c45a3eb3ecdcecd8b492cd8a3", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/117.html": [ + "c28528923ecc446750f72c9886158dc731dc12c1", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/118.html": [ + "641d49953c5e5270059ae8fd6cf3f65879350fb9", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/119.html": [ + "cc32b1d7115f6803cd91176e8497238f25575169", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/120.html": [ + "c2d7f974bf9bd4cc9e750eb4c50edecbcdcafd9e", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/121.html": [ + "0245a0b6ba93d08756f62221336f3bd67d2a590c", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/122.html": [ + "b5d0fad74d7fd7c10734e8f28c4167f9d98d5cae", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/123.html": [ + "c3703a934c8641c6b883382c0a6018fd834f5e10", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/124.html": [ + "7979e04915d796ef576dfb59d1f78982db2cf81e", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/125.html": [ + "d569b9c830ee0a373650d4d9db327b966b182f5c", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/126.html": [ + "be9626e860210736b9685ad7886ca056ab30fe1a", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/127.html": [ + "1e0808649afba34d91bba059636ea57e3ed891bb", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/128-expected.txt": [ + "86f8b8655ce5b5cf1c32919ee3730bcdc7869425", + "support" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/128.html": [ + "a28ff6eafdd78e1af6322becbefb7cf50f2407e8", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/129.html": [ + "7aa159087c7638e87413e0b0fc7908e6fc68698f", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/130.html": [ + "243c9eba19176f31530e143516ca715755600c39", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/131.html": [ + "740031dbe1bbbf94a0059dfd8446fbacaf831ede", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/132.html": [ + "e6e3530979aecd63fba2604a93f3e75280f3b154", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/133.html": [ + "25b8dbca8b21a766bed54cfc7febd8cfde976997", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/134.html": [ + "15609476a51e77175976a82d0c10b59b220e3ac0", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/135.html": [ + "ce7272e84d882fd6fe300b17e04d19c92872ec72", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/136.html": [ + "ef70c5d1a5cb8d18256b20f9fbcbf3cd8298870d", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/137.html": [ + "0cc989017587965b2382325919c2d12861977271", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/138.html": [ + "9da55aab3e057b46b1805961c10e8a9a1934d667", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/139.html": [ + "1a5a367353adf741ef7f4acee41caaa215223fa4", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/140.html": [ + "c7828895274df824c0b11f45625b23247cd1a6e3", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/141.html": [ + "2b9164d00a4a1ecea2bacc63b3da663cc4a6262a", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/142.html": [ + "8ce8fddf1a5101442d7626baa526d7c78a4ba9a0", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/143.html": [ + "adad099b2203fc0d465247f254e59d49e4cdea9f", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/144.html": [ + "1535549f62b6f3df33861a8a87d62410ba6b19cc", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/145.html": [ + "8d3ec79d77d193dd07bc7a5a84faaa4f172a4f18", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/146-expected.txt": [ + "2f8e6eb0c29c43ffc4fb06d32dedc4a2b414f85f", + "support" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/146.html": [ + "cb7f116ba71d7482936f40fab78db72cbe24edbf", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/147.html": [ + "8547607e8bb80733068d9ea6236995e64cea4397", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/148-expected.txt": [ + "ecc44caed60aeb8b1c7afb76ecca831d83efdab6", + "support" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/148.html": [ + "25c984be14ca2f8cf01549b264d72a9edf054970", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/149.html": [ + "5fba7bd883dd018e25af52b1708e53151effcbba", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/css/background.css": [ + "7a48895f08aca52493e4c9e192a382664b00341b", + "support" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/css/import.css": [ + "2e8c8d9ede773e4078b2e8926d08c87e5b649bf1", + "support" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/pages/helloworld-postMessage.html": [ + "1c5be7112209bd55cce40459a5bc670018d224cc", + "support" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/pages/helloworld.html": [ + "7c78659eaaeec9f9a4c0bb990a538fabeac9db1f", + "support" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/scripts/count-script-tags.js": [ + "54818d68b9c9ef3d0ede269cc75eb12e977fe8b9", + "support" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/scripts/find-body.js": [ + "e65eff4f877fb89de51f569e07add665147cd9c9", + "support" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/scripts/find-foo.js": [ + "4b22b857070d1aa7615e889d2602196ca9431049", + "support" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/scripts/include-1.js": [ + "722fea5d23733d822faf5717f66f2ff2cccb62a4", + "support" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/scripts/include-10.js": [ + "8b70b5a43ab3f1efd9755bf95f9a2713bbe588ce", + "support" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/scripts/include-11.js": [ + "f26e65bc15505040371e3026cd09c8eb0df0a1c4", + "support" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/scripts/include-2.js": [ + "3a3c18956bb0ccf8c13b301cd3c6f0a6e474ce75", + "support" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/scripts/include-3.js": [ + "80d22183699d06a1b7da5136a118404a7e05778e", + "support" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/scripts/include-4.js": [ + "80c723fe3486f7cb90b7b9fd25ea836125e562d1", + "support" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/scripts/include-5.js": [ + "45ce718f612e0adf967327716087f04325fcbee9", + "support" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/scripts/include-6.js": [ + "f7b945c3ed8e981a7f0ed1fc971c08fe05f971a5", + "support" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/scripts/include-7.js": [ + "39f911ed6844c0d38ccd91c3642e234c274a916c", + "support" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/scripts/include-8.js": [ + "fe0ad17a092c33cad29ffe0a00325ac573c0f464", + "support" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/scripts/include-9.js": [ + "2cd9bb85862c8c577e2dff564459516f4a4b2c07", + "support" + ], + "html/semantics/scripting-1/the-script-element/execution-timing/testlib/testlib.js": [ + "935990254a9fdd0549a03fd9346c85e027986461", + "support" + ], "html/semantics/scripting-1/the-script-element/external-script-utf8.js": [ "2d1c2cf696010feb64b17f00a072f3bbe6b1d713", "support" @@ -271912,6 +273962,10 @@ "5af2846c7f9ff93f2f4f13780d0356cdac6a0d4f", "support" ], + "interfaces/console.idl": [ + "14a90aae85ba0822b3dc7113a42cded55395765b", + "support" + ], "interfaces/cssom-view.idl": [ "1bcfadd098734fc82c0cf791d4c0d35d69423ce2", "support" @@ -274768,10 +276822,6 @@ "877fd815e2bd375bdde158455bf077f4ae878916", "support" ], - "navigation-timing/idlharness-expected.txt": [ - "3a02f37828c3eb6ecd02f0997e6a293c26e5770f", - "support" - ], "navigation-timing/idlharness.html": [ "d05e1d10939fa6509bd7299d03d32d59f69a03f6", "testharness" @@ -290129,7 +292179,7 @@ "support" ], "resource-timing/idlharness-expected.txt": [ - "1b36791ba3e321c685044bde245106aabd6de1c4", + "cab233df00a1ce065d46162b1254faa4932cc2e9", "support" ], "resource-timing/idlharness.html": [ @@ -291516,6 +293566,10 @@ "026a444eb0ff60e7885f70c7a4c3fa03a2510de3", "testharness" ], + "service-workers/service-worker/mime-sniffing.https.html": [ + "d61a859a111dea758efb91480817fa1a029c152b", + "testharness" + ], "service-workers/service-worker/multi-globals/current/current.https.html": [ "2f7a23c1a4dfa7feb121e55d13ff8a0980165b37", "support" @@ -292352,6 +294406,10 @@ "a9f19c8f8f6908c4a4732bbd0f6b2f3d19401909", "support" ], + "service-workers/service-worker/resources/mime-sniffing-worker.js": [ + "b37f174839f3fa92cb46835d3574e547de369b88", + "support" + ], "service-workers/service-worker/resources/mime-type-worker.py": [ "72d9b6815717b9405835262abb40147d0d4170f0", "support" @@ -292377,15 +294435,15 @@ "support" ], "service-workers/service-worker/resources/navigation-redirect-out-scope.py": [ - "8a4436e53f60b74062f0788bce089dc707f61388", + "c8b62fd6752deca11449831db271c3d8ec59874a", "support" ], "service-workers/service-worker/resources/navigation-redirect-scope1.py": [ - "8a4436e53f60b74062f0788bce089dc707f61388", + "c8b62fd6752deca11449831db271c3d8ec59874a", "support" ], "service-workers/service-worker/resources/navigation-redirect-scope2.py": [ - "8a4436e53f60b74062f0788bce089dc707f61388", + "c8b62fd6752deca11449831db271c3d8ec59874a", "support" ], "service-workers/service-worker/resources/navigation-redirect-to-http-iframe.html": [
diff --git a/third_party/WebKit/LayoutTests/external/wpt/2dcontext/tools/tests.yaml b/third_party/WebKit/LayoutTests/external/wpt/2dcontext/tools/tests.yaml index 9556403..a11d7c0 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/2dcontext/tools/tests.yaml +++ b/third_party/WebKit/LayoutTests/external/wpt/2dcontext/tools/tests.yaml
@@ -1057,7 +1057,7 @@ expected: green - name: security.reset - desc: Resetting the canvas state does not reset the origin-clean flag + desc: Resetting the canvas state resets the origin-clean flag mozilla: { disabled } # relies on external resources testing: - initial.reset @@ -1071,4 +1071,6 @@ ctx.drawImage(document.getElementById('yellow.png'), 0, 0); @assert throws SECURITY_ERR canvas.toDataURL(); canvas.width = 100; - @assert throws SECURITY_ERR canvas.toDataURL(); + canvas.toDataURL(); + ctx.getImageData(0, 0, 1, 1); + @assert true; // okay if there was no exception
diff --git a/third_party/WebKit/LayoutTests/external/wpt/eventsource/eventsource-constructor-non-same-origin-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/eventsource/eventsource-constructor-non-same-origin-expected.txt deleted file mode 100644 index 811a42a..0000000 --- a/third_party/WebKit/LayoutTests/external/wpt/eventsource/eventsource-constructor-non-same-origin-expected.txt +++ /dev/null
@@ -1,9 +0,0 @@ -This is a testharness.js-based test. -FAIL EventSource: constructor (act as if there is a network error) (http://example.not/) assert_equals: expected 2 but got 0 -FAIL EventSource: constructor (act as if there is a network error) (https://example.not/test) assert_equals: expected 2 but got 0 -PASS EventSource: constructor (act as if there is a network error) (ftp://example.not/) -PASS EventSource: constructor (act as if there is a network error) (about:blank) -PASS EventSource: constructor (act as if there is a network error) (mailto:whatwg@awesome.example) -PASS EventSource: constructor (act as if there is a network error) (javascript:alert('FAIL')) -Harness: the test ran to completion. -
diff --git a/third_party/WebKit/LayoutTests/external/wpt/eventsource/eventsource-constructor-non-same-origin.htm b/third_party/WebKit/LayoutTests/external/wpt/eventsource/eventsource-constructor-non-same-origin.htm index dd4ab84..58639cf 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/eventsource/eventsource-constructor-non-same-origin.htm +++ b/third_party/WebKit/LayoutTests/external/wpt/eventsource/eventsource-constructor-non-same-origin.htm
@@ -7,7 +7,6 @@ <script src="/resources/testharnessreport.js"></script> </head> <body> - <div id="log"></div> <script> function fetchFail(url) { var test = async_test(document.title + " (" + url + ")", { timeout: 20000 }) @@ -22,8 +21,6 @@ } }) } - fetchFail("http://example.not/") - fetchFail("https://example.not/test") fetchFail("ftp://example.not/") fetchFail("about:blank") fetchFail("mailto:whatwg@awesome.example")
diff --git a/third_party/WebKit/LayoutTests/external/wpt/fetch/api/request/request-idl-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/fetch/api/request/request-idl-expected.txt index c5e569a..8615326 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/fetch/api/request/request-idl-expected.txt +++ b/third_party/WebKit/LayoutTests/external/wpt/fetch/api/request/request-idl-expected.txt
@@ -7,7 +7,6 @@ PASS Request interface: attribute method PASS Request interface: attribute url PASS Request interface: attribute headers -FAIL Request interface: attribute type assert_true: The prototype object must have a property "type" expected true got false FAIL Request interface: attribute destination assert_true: The prototype object must have a property "destination" expected true got false PASS Request interface: attribute referrer PASS Request interface: attribute referrerPolicy @@ -29,7 +28,6 @@ PASS Request interface: new Request("") must inherit property "method" with the proper type PASS Request interface: new Request("") must inherit property "url" with the proper type PASS Request interface: new Request("") must inherit property "headers" with the proper type -FAIL Request interface: new Request("") must inherit property "type" with the proper type assert_inherits: property "type" not found in prototype chain FAIL Request interface: new Request("") must inherit property "destination" with the proper type assert_inherits: property "destination" not found in prototype chain PASS Request interface: new Request("") must inherit property "referrer" with the proper type PASS Request interface: new Request("") must inherit property "referrerPolicy" with the proper type
diff --git a/third_party/WebKit/LayoutTests/external/wpt/fetch/api/request/request-idl.html b/third_party/WebKit/LayoutTests/external/wpt/fetch/api/request/request-idl.html index 608a129..f78f0ca 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/fetch/api/request/request-idl.html +++ b/third_party/WebKit/LayoutTests/external/wpt/fetch/api/request/request-idl.html
@@ -37,7 +37,6 @@ readonly attribute USVString url; [SameObject] readonly attribute Headers headers; - readonly attribute RequestType type; readonly attribute RequestDestination destination; readonly attribute USVString referrer; readonly attribute ReferrerPolicy referrerPolicy;
diff --git a/third_party/WebKit/LayoutTests/external/wpt/fetch/api/request/request-structure-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/fetch/api/request/request-structure-expected.txt index bd0c86d..7c3c8df 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/fetch/api/request/request-structure-expected.txt +++ b/third_party/WebKit/LayoutTests/external/wpt/fetch/api/request/request-structure-expected.txt
@@ -8,7 +8,6 @@ PASS Check method attribute PASS Check url attribute PASS Check headers attribute -FAIL Check type attribute assert_true: request has type attribute expected true got false FAIL Check destination attribute assert_true: request has destination attribute expected true got false PASS Check referrer attribute PASS Check referrerPolicy attribute
diff --git a/third_party/WebKit/LayoutTests/external/wpt/fetch/api/request/request-structure.html b/third_party/WebKit/LayoutTests/external/wpt/fetch/api/request/request-structure.html index cbe6cee..98c24517 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/fetch/api/request/request-structure.html +++ b/third_party/WebKit/LayoutTests/external/wpt/fetch/api/request/request-structure.html
@@ -22,7 +22,6 @@ var attributes = ["method", "url", "headers", - "type", "destination", "referrer", "referrerPolicy", @@ -56,11 +55,6 @@ return; break; - case "type": - defaultValue = ""; - newValue = "style"; - break; - case "destination": defaultValue = ""; newValue = "worker";
diff --git a/third_party/WebKit/LayoutTests/external/wpt/fetch/api/request/request-type-attribute-historical.html b/third_party/WebKit/LayoutTests/external/wpt/fetch/api/request/request-type-attribute-historical.html new file mode 100644 index 0000000..e076875 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/fetch/api/request/request-type-attribute-historical.html
@@ -0,0 +1,11 @@ +<!DOCTYPE html> +<title>Request.type attribute should not exist</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<div id=log></div> +<script> + var request = new Request("https://domfarolino.com"); + test(() => { + assert_equals(request.type, undefined, "request.type should be undefined"); + }, "'type' getter should not exist on Request objects"); +</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/embedded-content/the-canvas-element/security.reset.cross-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/embedded-content/the-canvas-element/security.reset.cross-expected.txt deleted file mode 100644 index b3bbcb2..0000000 --- a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/embedded-content/the-canvas-element/security.reset.cross-expected.txt +++ /dev/null
@@ -1,4 +0,0 @@ -This is a testharness.js-based test. -FAIL Resetting the canvas state does not reset the origin-clean flag assert_throws: function "function () { canvas.toDataURL(); }" did not throw -Harness: the test ran to completion. -
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/embedded-content/the-canvas-element/security.reset.cross.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/embedded-content/the-canvas-element/security.reset.cross.html index 617c3404b..6d351925 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/embedded-content/the-canvas-element/security.reset.cross.html +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/embedded-content/the-canvas-element/security.reset.cross.html
@@ -8,7 +8,7 @@ <body class="show_output"> <h1>security.reset.cross</h1> -<p class="desc">Resetting the canvas state does not reset the origin-clean flag</p> +<p class="desc">Resetting the canvas state resets the origin-clean flag</p> <p class="output">Actual output:</p> @@ -16,14 +16,16 @@ <ul id="d"></ul> <script> -var t = async_test("Resetting the canvas state does not reset the origin-clean flag"); +var t = async_test("Resetting the canvas state resets the origin-clean flag"); _addTest(function(canvas, ctx) { canvas.width = 50; ctx.drawImage(document.getElementById('yellow.png'), 0, 0); assert_throws("SECURITY_ERR", function() { canvas.toDataURL(); }); canvas.width = 100; -assert_throws("SECURITY_ERR", function() { canvas.toDataURL(); }); +canvas.toDataURL(); +ctx.getImageData(0, 0, 1, 1); +_assert(true, "true"); // okay if there was no exception });
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/embedded-content/the-canvas-element/security.reset.redirect-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/embedded-content/the-canvas-element/security.reset.redirect-expected.txt deleted file mode 100644 index b3bbcb2..0000000 --- a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/embedded-content/the-canvas-element/security.reset.redirect-expected.txt +++ /dev/null
@@ -1,4 +0,0 @@ -This is a testharness.js-based test. -FAIL Resetting the canvas state does not reset the origin-clean flag assert_throws: function "function () { canvas.toDataURL(); }" did not throw -Harness: the test ran to completion. -
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/embedded-content/the-canvas-element/security.reset.redirect.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/embedded-content/the-canvas-element/security.reset.redirect.html index 75b42d90..bca6b86 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/embedded-content/the-canvas-element/security.reset.redirect.html +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/embedded-content/the-canvas-element/security.reset.redirect.html
@@ -8,7 +8,7 @@ <body class="show_output"> <h1>security.reset.redirect</h1> -<p class="desc">Resetting the canvas state does not reset the origin-clean flag</p> +<p class="desc">Resetting the canvas state resets the origin-clean flag</p> <p class="output">Actual output:</p> @@ -16,14 +16,16 @@ <ul id="d"></ul> <script> -var t = async_test("Resetting the canvas state does not reset the origin-clean flag"); +var t = async_test("Resetting the canvas state resets the origin-clean flag"); _addTest(function(canvas, ctx) { canvas.width = 50; ctx.drawImage(document.getElementById('yellow.png'), 0, 0); assert_throws("SECURITY_ERR", function() { canvas.toDataURL(); }); canvas.width = 100; -assert_throws("SECURITY_ERR", function() { canvas.toDataURL(); }); +canvas.toDataURL(); +ctx.getImageData(0, 0, 1, 1); +_assert(true, "true"); // okay if there was no exception });
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/forms/the-button-element/button-checkvalidity.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/forms/the-button-element/button-checkvalidity.html new file mode 100644 index 0000000..55d3091a --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/forms/the-button-element/button-checkvalidity.html
@@ -0,0 +1,44 @@ +<!DOCTYPE HTML> +<html> + <head> + <title>Forms</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + </head> + <body> + <p> + <h3>button_checkValidity</h3> + </p> + + <hr> + + <div id="log"></div> + + <form method="post" + enctype="application/x-www-form-urlencoded" + action="" + id="input_form"> + <p><button id='button_id'>button</button></p> + </form> + <script> + + var button = document.getElementById("button_id"); + + try + { + var ret = button.checkValidity(); + + test(function() { + assert_equals(ret, true, "calling of checkValidity method is failed."); + }); + } + catch (e) { + test(function() { + assert_unreached("autofocus attribute is not exist."); + }); + } + + </script> + + </body> +</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/forms/the-button-element/button-labels.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/forms/the-button-element/button-labels.html new file mode 100644 index 0000000..92a6efd --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/forms/the-button-element/button-labels.html
@@ -0,0 +1,48 @@ +<!DOCTYPE HTML> +<html> + <head> + <title>Forms</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + </head> + <body> + <p> + <h3>button_labels</h3> + </p> + + <hr> + + <div id="log"></div> + + <form method="post" + enctype="application/x-www-form-urlencoded" + action="" + id="input_form"> + <p><label>Full name:<label>(name)<button id='button_id1'>button1</button><small>Format: First Last</small></label></label></p> + <p><label>Age: <button id='button_id2'>button2</button></label></p> + </form> + <script> + + var button1 = document.getElementById("button_id1"); + var button2 = document.getElementById("button_id2"); + + if (typeof(button1.labels) == "object") { + if (button1.labels.length == 2 && button2.labels.length == 1) { + test(function() { + assert_true(true, "labels attribute is correct."); + }); + } else { + test(function() { + assert_unreached("labels attribute is not correct."); + }); + } + } else { + test(function() { + assert_unreached("labels attribute is not exist."); + }); + } + + </script> + + </body> +</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/forms/the-button-element/button-setcustomvalidity.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/forms/the-button-element/button-setcustomvalidity.html new file mode 100644 index 0000000..64406ab --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/forms/the-button-element/button-setcustomvalidity.html
@@ -0,0 +1,43 @@ +<!DOCTYPE HTML> +<html> + <head> + <title>Forms</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + </head> + <body> + <p> + <h3>button_setCustomValidity</h3> + </p> + + <hr> + + <div id="log"></div> + + <form method="post" + enctype="application/x-www-form-urlencoded" + action="" + id="input_form"> + <p><button id='button_id'>button</button></p> + </form> + <script> + + var button = document.getElementById("button_id"); + + try + { + button.setCustomValidity("custom error"); + test(function() { + assert_true(true, "calling of setCustomValidity method is successed."); + }); + } + catch (e) { + test(function() { + assert_unreached("Error is raised."); + }); + } + + </script> + + </body> +</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/forms/the-button-element/button-validationmessage.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/forms/the-button-element/button-validationmessage.html new file mode 100644 index 0000000..a2572ed7 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/forms/the-button-element/button-validationmessage.html
@@ -0,0 +1,40 @@ +<!DOCTYPE HTML> +<html> + <head> + <title>Forms</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + </head> + <body> + <p> + <h3>button_validationMessage</h3> + </p> + + <hr> + + <div id="log"></div> + + <form method="post" + enctype="application/x-www-form-urlencoded" + action="" + id="input_form"> + <p><button id='button_id'>button</button></p> + </form> + <script> + + var button = document.getElementById("button_id"); + + if (typeof(button.validationMessage) == "string") { + test(function() { + assert_equals(button.validationMessage, "", "validationMessage attribute is not correct."); + }); + } else { + test(function() { + assert_unreached("validationMessage attribute is not exist."); + }); + } + + </script> + + </body> +</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/forms/the-button-element/button-validity.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/forms/the-button-element/button-validity.html new file mode 100644 index 0000000..acc02d9 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/forms/the-button-element/button-validity.html
@@ -0,0 +1,40 @@ +<!DOCTYPE HTML> +<html> + <head> + <title>Forms</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + </head> + <body> + <p> + <h3>button_validity</h3> + </p> + + <hr> + + <div id="log"></div> + + <form method="post" + enctype="application/x-www-form-urlencoded" + action="" + id="input_form"> + <p><button id='button_id'>button</button></p> + </form> + <script> + + var button = document.getElementById("button_id"); + + if (typeof(button.validity) == "object") { + test(function() { + assert_equals(button.validity.valueMissing, false, "validity attribute is not correct."); + }); + } else { + test(function() { + assert_unreached("validity attribute is not exist."); + }); + } + + </script> + + </body> +</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/forms/the-button-element/button-willvalidate.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/forms/the-button-element/button-willvalidate.html new file mode 100644 index 0000000..e91c5e38 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/forms/the-button-element/button-willvalidate.html
@@ -0,0 +1,40 @@ +<!DOCTYPE HTML> +<html> + <head> + <title>Forms</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + </head> + <body> + <p> + <h3>button_willValidate</h3> + </p> + + <hr> + + <div id="log"></div> + + <form method="post" + enctype="application/x-www-form-urlencoded" + action="" + id="input_form"> + <p><button id='button_id'>button</button></p> + </form> + <script> + + var button = document.getElementById("button_id"); + + if (typeof(button.willValidate) == "boolean") { + test(function() { + assert_equals(button.willValidate, true, "willValidate attribute is not correct."); + }); + } else { + test(function() { + assert_unreached("willValidate attribute is not exist."); + }); + } + + </script> + + </body> +</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/forms/the-fieldset-element/fieldset-checkvalidity.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/forms/the-fieldset-element/fieldset-checkvalidity.html new file mode 100644 index 0000000..eeeca18 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/forms/the-fieldset-element/fieldset-checkvalidity.html
@@ -0,0 +1,45 @@ +<!DOCTYPE HTML> +<html> + <head> + <title>Forms</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + </head> + <body> + <p> + <h3>FieldSet_checkValidity</h3> + </p> + + <hr> + + <div id="log"></div> + + <form method="post" + enctype="application/x-www-form-urlencoded" + action="" + id="input_form"> + <fieldset id="input_field"> + </fieldset> + </form> + <script> + + var field = document.getElementById("input_field"); + + try + { + var ret = field.checkValidity(); + + test(function() { + assert_equals(ret, true, "calling of checkValidity method is failed."); + }); + } + catch (e) { + test(function() { + assert_unreached("Error is raised."); + }); + } + + </script> + + </body> +</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/forms/the-fieldset-element/fieldset-setcustomvalidity.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/forms/the-fieldset-element/fieldset-setcustomvalidity.html new file mode 100644 index 0000000..6a6d445 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/forms/the-fieldset-element/fieldset-setcustomvalidity.html
@@ -0,0 +1,44 @@ +<!DOCTYPE HTML> +<html> + <head> + <title>Forms</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + </head> + <body> + <p> + <h3>FieldSet_setCustomValidity</h3> + </p> + + <hr> + + <div id="log"></div> + + <form method="post" + enctype="application/x-www-form-urlencoded" + action="" + id="input_form"> + <fieldset id="input_field"> + </fieldset> + </form> + <script> + + var field = document.getElementById("input_field"); + + try + { + field.setCustomValidity("custom error"); + test(function() { + assert_true(true, "calling of setCustomValidity method is successed."); + }); + } + catch (e) { + test(function() { + assert_unreached("Error is raised."); + }); + } + + </script> + + </body> +</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/forms/the-fieldset-element/fieldset-validationmessage.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/forms/the-fieldset-element/fieldset-validationmessage.html new file mode 100644 index 0000000..14dda76a1 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/forms/the-fieldset-element/fieldset-validationmessage.html
@@ -0,0 +1,41 @@ +<!DOCTYPE HTML> +<html> + <head> + <title>Forms</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + </head> + <body> + <p> + <h3>FieldSet_validationMessage</h3> + </p> + + <hr> + + <div id="log"></div> + + <form method="post" + enctype="application/x-www-form-urlencoded" + action="" + id="input_form"> + <fieldset id="input_field"> + </fieldset> + </form> + <script> + + var field = document.getElementById("input_field"); + + if (typeof(field.validationMessage) == "string") { + test(function() { + assert_equals(field.validationMessage, "", "validationMessage attribute is not correct."); + }); + } else { + test(function() { + assert_unreached("validationMessage attribute is not exist."); + }); + } + + </script> + + </body> +</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/forms/the-fieldset-element/fieldset-validity.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/forms/the-fieldset-element/fieldset-validity.html new file mode 100644 index 0000000..7fd2d85 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/forms/the-fieldset-element/fieldset-validity.html
@@ -0,0 +1,41 @@ +<!DOCTYPE HTML> +<html> + <head> + <title>Forms</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + </head> + <body> + <p> + <h3>FieldSet_validity</h3> + </p> + + <hr> + + <div id="log"></div> + + <form method="post" + enctype="application/x-www-form-urlencoded" + action="" + id="input_form"> + <fieldset id="input_field"> + </fieldset> + </form> + <script> + + var field = document.getElementById("input_field"); + + if (typeof(field.validity) == "object") { + test(function() { + assert_equals(field.validity.valueMissing, false, "validity attribute is not correct."); + }); + } else { + test(function() { + assert_unreached("validity attribute is not exist."); + }); + } + + </script> + + </body> +</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/forms/the-fieldset-element/fieldset-willvalidate.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/forms/the-fieldset-element/fieldset-willvalidate.html new file mode 100644 index 0000000..357c9c1 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/forms/the-fieldset-element/fieldset-willvalidate.html
@@ -0,0 +1,41 @@ +<!DOCTYPE HTML> +<html> + <head> + <title>Forms</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + </head> + <body> + <p> + <h3>FieldSet_willValidate</h3> + </p> + + <hr> + + <div id="log"></div> + + <form method="post" + enctype="application/x-www-form-urlencoded" + action="" + id="input_form"> + <fieldset id="input_field"> + </fieldset> + </form> + <script> + + var field = document.getElementById("input_field"); + + if (typeof(field.willValidate) == "boolean") { + test(function() { + assert_equals(field.willValidate, false, "willValidate attribute is not correct."); + }); + } else { + test(function() { + assert_unreached("willValidate attribute is not exist."); + }); + } + + </script> + + </body> +</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/forms/the-form-element/form-action.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/forms/the-form-element/form-action.html new file mode 100644 index 0000000..14717c5 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/forms/the-form-element/form-action.html
@@ -0,0 +1,43 @@ +<!DOCTYPE HTML> +<html> + <head> + <title>Forms</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + </head> + <body> + <p> + <h3>Form_action</h3> + </p> + + <hr> + + <div id="log"></div> + + <form method="post" + enctype="application/x-www-form-urlencoded" + action="http://www.google.com/" + id="input_form"> + <p><input type=hidden name="custname"></p> + <p><input type=hidden name="custtel"></p> + <p><input type=hidden name="custemail"></p> + + </form> + <script> + + var form = document.getElementById("input_form"); + + if (typeof(form.action) == "string") { + test(function() { + assert_equals(form.action, "http://www.google.com/", "action attribute is not correct."); + }); + } else { + test(function() { + assert_unreached("action attribute is not exist."); + }); + } + + </script> + + </body> +</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/forms/the-form-element/form-checkvalidity.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/forms/the-form-element/form-checkvalidity.html new file mode 100644 index 0000000..941ab94d --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/forms/the-form-element/form-checkvalidity.html
@@ -0,0 +1,47 @@ +<!DOCTYPE HTML> +<html> + <head> + <title>Forms</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + </head> + <body> + <p> + <h3>Form_checkValidity</h3> + </p> + + <hr> + + <div id="log"></div> + + <form method="post" + enctype="application/x-www-form-urlencoded" + action="" + id="input_form"> + <p><input type=hidden name="custname"></p> + <p><input type=hidden name="custtel"></p> + <p><input type=hidden name="custemail"></p> + + </form> + <script> + + var form = document.getElementById("input_form"); + + try + { + var ret = form.checkValidity(); + + test(function() { + assert_equals(ret, true, "calling of checkValidity method is failed."); + }); + } + catch (e) { + test(function() { + assert_unreached("Error is raised."); + }); + } + + </script> + + </body> +</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/forms/the-form-element/form-length.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/forms/the-form-element/form-length.html new file mode 100644 index 0000000..3326809 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/forms/the-form-element/form-length.html
@@ -0,0 +1,38 @@ +<!DOCTYPE HTML> +<html> + <head> + <title>Forms</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + </head> + <body> + <p> + <h3>Form_length</h3> + </p> + + <hr> + + <div id="log"></div> + + <form method="post" + enctype="application/x-www-form-urlencoded" + action="" + id="input_form"> + <p><input type=hidden name="custname"></p> + <p><input type=hidden name="custtel"></p> + <p><input type=hidden name="custemail"></p> + + </form> + <script> + + var form = document.getElementById("input_form"); + var len = form.length; + + test(function() { + assert_equals(len, 3, "length attribute is not correct."); + }); + + </script> + + </body> +</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/forms/the-input-element/input-checkvalidity.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/forms/the-input-element/input-checkvalidity.html new file mode 100644 index 0000000..b336204 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/forms/the-input-element/input-checkvalidity.html
@@ -0,0 +1,44 @@ +<!DOCTYPE HTML> +<html> + <head> + <title>Forms</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + </head> + <body> + <p> + <h3>input_checkValidity</h3> + </p> + + <hr> + + <div id="log"></div> + + <form method="post" + enctype="application/x-www-form-urlencoded" + action="" + id="input_form"> + <p><input type='hidden' id='input_text'></p> + </form> + <script> + + var input = document.getElementById("input_text"); + + try + { + var ret = input.checkValidity(); + + test(function() { + assert_equals(ret, true, "calling of checkValidity method is failed."); + }); + } + catch (e) { + test(function() { + assert_unreached("Error is raised."); + }); + } + + </script> + + </body> +</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/forms/the-input-element/input-height.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/forms/the-input-element/input-height.html new file mode 100644 index 0000000..dea4f41 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/forms/the-input-element/input-height.html
@@ -0,0 +1,42 @@ +<!DOCTYPE HTML> +<html> + <head> + <title>Forms</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + </head> + <body> + <p> + <h3>input_height</h3> + </p> + + <hr> + + <div id="log"></div> + + <form method="post" + enctype="application/x-www-form-urlencoded" + action="" + name="input_form"> + <p><input type='image' id='input_text'></p> + </form> + + <script> + + var input_text = document.getElementById("input_text"); + input_text.height = 30; + + if (typeof(input_text.height) == "number") { + test(function() { + assert_equals(input_text.height, 30, "formTarget attribute is not correct."); + }); + } else { + test(function() { + assert_unreached("height attribute is not exist."); + }); + } + + </script> + + </body> +</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/forms/the-input-element/input-labels.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/forms/the-input-element/input-labels.html new file mode 100644 index 0000000..77f4d8b --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/forms/the-input-element/input-labels.html
@@ -0,0 +1,49 @@ +<!DOCTYPE HTML> +<html> + <head> + <title>Forms</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + </head> + <body> + <p> + <h3>input_labels</h3> + </p> + + <hr> + + <div id="log"></div> + + <form method="post" + enctype="application/x-www-form-urlencoded" + action="" + id="input_form"> + <p><label>Full name:<label>(name)<input name=fn id='input_text1'> <small>Format: First Last</small></label></label></p> + <p><label>Age: <input name=age type=number min=0 id='input_text2'></label></p> + <p><label>Post code: <input name=pc> <small>Format: AB12 3CD</small></label></p> + </form> + <script> + + var input1 = document.getElementById("input_text1"); + var input2 = document.getElementById("input_text2"); + + if (typeof(input1.labels) == "object") { + if (input1.labels.length == 2 && input2.labels.length == 1) { + test(function() { + assert_true(true, "labels attribute is correct."); + }); + } else { + test(function() { + assert_unreached("labels attribute is not correct."); + }); + } + } else { + test(function() { + assert_unreached("labels attribute is not exist."); + }); + } + + </script> + + </body> +</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/forms/the-input-element/input-setcustomvalidity.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/forms/the-input-element/input-setcustomvalidity.html new file mode 100644 index 0000000..7d21097 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/forms/the-input-element/input-setcustomvalidity.html
@@ -0,0 +1,43 @@ +<!DOCTYPE HTML> +<html> + <head> + <title>Forms</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + </head> + <body> + <p> + <h3>input_setCustomValidity</h3> + </p> + + <hr> + + <div id="log"></div> + + <form method="post" + enctype="application/x-www-form-urlencoded" + action="" + id="input_form"> + <p><input type='hidden' id='input_text'></p> + </form> + <script> + + var input = document.getElementById("input_text"); + + try + { + input.setCustomValidity("custom error"); + test(function() { + assert_true(true, "calling of setCustomValidity method is successed."); + }); + } + catch (e) { + test(function() { + assert_unreached("Error is raised."); + }); + } + + </script> + + </body> +</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/forms/the-input-element/input-stepdown.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/forms/the-input-element/input-stepdown.html new file mode 100644 index 0000000..9ce5e5e --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/forms/the-input-element/input-stepdown.html
@@ -0,0 +1,44 @@ +<!DOCTYPE HTML> +<html> + <head> + <title>Forms</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + </head> + <body> + <p> + <h3>input_stepDown</h3> + </p> + + <hr> + + <div id="log"></div> + + <form method="post" + enctype="application/x-www-form-urlencoded" + action="" + name="input_form"> + <p><input type='number' id='input_number'></p> + </form> + + <script> + var input_number = document.getElementById("input_number"); + input_number.max = "30"; + input_number.step = "3"; + input_number.value = "30"; + input_number.stepDown(5); + + if (typeof(input_number.stepDown) == "function") { + test(function() { + assert_equals(input_number.value, "15", "call of stepDown method is failed."); + }); + } else { + test(function() { + assert_unreached("stepDown attribute is not exist."); + }); + } + + </script> + + </body> +</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/forms/the-input-element/input-stepup.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/forms/the-input-element/input-stepup.html new file mode 100644 index 0000000..4745706 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/forms/the-input-element/input-stepup.html
@@ -0,0 +1,45 @@ +<!DOCTYPE HTML> +<html> + <head> + <title>Forms</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + </head> + <body> + <p> + <h3>input_stepUp</h3> + </p> + + <hr> + + <div id="log"></div> + + <form method="post" + enctype="application/x-www-form-urlencoded" + action="" + name="input_form"> + <p><input type='number' id='input_number'></p> + </form> + + <script> + + var input_number = document.getElementById("input_number"); + input_number.max = "30"; + input_number.step = "3"; + input_number.value = "0"; + input_number.stepUp(5); + + if (typeof(input_number.stepUp) == "function") { + test(function() { + assert_equals(input_number.value, "15", "call of stepUp method is failed."); + }); + } else { + test(function() { + assert_unreached("stepUp attribute is not exist."); + }); + } + + </script> + + </body> +</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/forms/the-input-element/input-validationmessage.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/forms/the-input-element/input-validationmessage.html new file mode 100644 index 0000000..775c06f --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/forms/the-input-element/input-validationmessage.html
@@ -0,0 +1,40 @@ +<!DOCTYPE HTML> +<html> + <head> + <title>Forms</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + </head> + <body> + <p> + <h3>input_validationMessage</h3> + </p> + + <hr> + + <div id="log"></div> + + <form method="post" + enctype="application/x-www-form-urlencoded" + action="" + id="input_form"> + <p><input type='hidden' id='input_text'></p> + </form> + <script> + + var input = document.getElementById("input_text"); + + if (typeof(input.validationMessage) == "string") { + test(function() { + assert_equals(input.validationMessage, "", "validationMessage attribute is not correct."); + }); + } else { + test(function() { + assert_unreached("validationMessage attribute is not exist."); + }); + } + + </script> + + </body> +</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/forms/the-input-element/input-validity.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/forms/the-input-element/input-validity.html new file mode 100644 index 0000000..719144d --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/forms/the-input-element/input-validity.html
@@ -0,0 +1,40 @@ +<!DOCTYPE HTML> +<html> + <head> + <title>Forms</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + </head> + <body> + <p> + <h3>input_validity</h3> + </p> + + <hr> + + <div id="log"></div> + + <form method="post" + enctype="application/x-www-form-urlencoded" + action="" + id="input_form"> + <p><input type='hidden' id='input_text'></p> + </form> + <script> + + var input = document.getElementById("input_text"); + + if (typeof(input.validity) == "object") { + test(function() { + assert_equals(input.validity.valueMissing, false, "validity attribute is not correct."); + }); + } else { + test(function() { + assert_unreached("validity attribute is not exist."); + }); + } + + </script> + + </body> +</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/forms/the-input-element/input-value-invalidstateerr.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/forms/the-input-element/input-value-invalidstateerr.html new file mode 100644 index 0000000..78e6624e --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/forms/the-input-element/input-value-invalidstateerr.html
@@ -0,0 +1,41 @@ +<!DOCTYPE HTML> +<html> + <head> + <title>Forms</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + </head> + <body> + <p> + <h3>input_value_INVALID_STATE_ERR</h3> + </p> + + <hr> + + <div id="log"></div> + + <form method="post" + enctype="application/x-www-form-urlencoded" + action="" + name="input_form"> + <p><input type='file' id='input_file'></p> + </form> + + <script> + + var input_file = document.getElementById("input_file"); + try { + input_file.value = "val"; + test(function() { + assert_unreached("INVALID_STATE_ERR error is not raised."); + }); + } catch (e) { + test(function() { + assert_equals(e.code, e["INVALID_STATE_ERR"], "INVALID_STATE_ERR error is not raised."); + }); + } + + </script> + + </body> +</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/forms/the-input-element/input-valueasdate-invalidstateerr.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/forms/the-input-element/input-valueasdate-invalidstateerr.html new file mode 100644 index 0000000..bd49a15f --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/forms/the-input-element/input-valueasdate-invalidstateerr.html
@@ -0,0 +1,41 @@ +<!DOCTYPE HTML> +<html> + <head> + <title>Forms</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + </head> + <body> + <p> + <h3>input_valueAsDate_INVALID_STATE_ERR</h3> + </p> + + <hr> + + <div id="log"></div> + + <form method="post" + enctype="application/x-www-form-urlencoded" + action="" + name="input_form"> + <p><input type='checkbox' id='input_checkbox'></p> + </form> + + <script> + var input_checkbox = document.getElementById("input_checkbox"); + try { + input_checkbox.valueAsDate = new Date('2011-11-01'); + test(function() { + assert_reached("INVALID_STATE_ERR error is not raised."); + }); + } + catch (e) { + test(function() { + assert_equals(e.code, e["INVALID_STATE_ERR"], "INVALID_STATE_ERR error is not raised."); + }); + } + + </script> + + </body> +</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/forms/the-input-element/input-valueasnumber-invalidstateerr.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/forms/the-input-element/input-valueasnumber-invalidstateerr.html new file mode 100644 index 0000000..a3187ff --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/forms/the-input-element/input-valueasnumber-invalidstateerr.html
@@ -0,0 +1,39 @@ +<!DOCTYPE HTML> +<html> + <head> + <title>Forms</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + </head> + <body> + <p> + <h3>input_valueAsNumber_INVALID_STATE_ERR</h3> + </p> + + <hr> + + <div id="log"></div> + + <form method="post" + enctype="application/x-www-form-urlencoded" + action="" + name="input_form"> + <p><input type='checkbox' id='input_checkbox'></p> + </form> + + <script> + + var input_checkbox = document.getElementById("input_checkbox"); + try { + input_checkbox.valueAsNumber = 5; + } + catch (e) { + test(function() { + assert_equals(e.code, e["INVALID_STATE_ERR"], "INVALID_STATE_ERR error is not raised."); + }); + } + + </script> + + </body> +</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/forms/the-input-element/input-width.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/forms/the-input-element/input-width.html new file mode 100644 index 0000000..5278ff7 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/forms/the-input-element/input-width.html
@@ -0,0 +1,42 @@ +<!DOCTYPE HTML> +<html> + <head> + <title>Forms</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + </head> + <body> + <p> + <h3>input_width</h3> + </p> + + <hr> + + <div id="log"></div> + + <form method="post" + enctype="application/x-www-form-urlencoded" + action="" + name="input_form"> + <p><input type='image' id='input_text'></p> + </form> + + <script> + + var input_text = document.getElementById("input_text"); + input_text.width = 30; + + if (typeof(input_text.width) == "number") { + test(function() { + assert_equals(input_text.width, 30, "width attribute is not correct."); + }); + } else { + test(function() { + assert_unreached("width attribute is not exist."); + }); + } + + </script> + + </body> +</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/forms/the-input-element/input-willvalidate.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/forms/the-input-element/input-willvalidate.html new file mode 100644 index 0000000..e4bcf2e --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/forms/the-input-element/input-willvalidate.html
@@ -0,0 +1,40 @@ +<!DOCTYPE HTML> +<html> + <head> + <title>Forms</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + </head> + <body> + <p> + <h3>input_willValidate</h3> + </p> + + <hr> + + <div id="log"></div> + + <form method="post" + enctype="application/x-www-form-urlencoded" + action="" + id="input_form"> + <p><input type='hidden' id='input_text'></p> + </form> + <script> + + var input = document.getElementById("input_text"); + + if (typeof(input.willValidate) == "boolean") { + test(function() { + assert_equals(input.willValidate, false, "willValidate attribute is not correct."); + }); + } else { + test(function() { + assert_unreached("willValidate attribute is not exist."); + }); + } + + </script> + + </body> +</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/001.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/001.html new file mode 100644 index 0000000..3f54f764 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/001.html
@@ -0,0 +1,27 @@ +<!DOCTYPE html> +<html><head> + <title> scheduler: inline in markup </title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<body> + + <div id="log">FAILED (This TC requires JavaScript enabled)</div> + + <script>log('inline script #1');</script> + <script>log('inline script #2');</script> + + <script type="text/javascript"> + + var t = async_test() + + + function test() { + assert_array_equals(eventOrder, ['inline script #1', 'inline script #2' ]); + t.done(); + } + onload = t.step_func(test) + </script> + +</body></html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/002.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/002.html new file mode 100644 index 0000000..df7ca95 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/002.html
@@ -0,0 +1,27 @@ +<!DOCTYPE html> +<html><head> + <title> scheduler: external in markup </title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<body> + + <div id="log">FAILED (This TC requires JavaScript enabled)</div> + + <script src="scripts/include-1.js"></script> + <script src="scripts/include-2.js"></script> + + <script type="text/javascript"> + + var t = async_test() + + + function test() { + assert_array_equals(eventOrder, ['external script #1', 'external script #2' ]); + t.done(); + } + onload = t.step_func(test) + </script> + +</body></html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/003.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/003.html new file mode 100644 index 0000000..9c23b7e --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/003.html
@@ -0,0 +1,27 @@ +<!DOCTYPE html> +<html><head> + <title> scheduler: inline+external in markup </title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<body> + + <div id="log">FAILED (This TC requires JavaScript enabled)</div> + + <script>log('inline script #1')</script> + <script src="scripts/include-2.js"></script> + + <script type="text/javascript"> + + var t = async_test() + + + function test() { + assert_array_equals(eventOrder, ['inline script #1', 'external script #2' ]); + t.done(); + } + onload = t.step_func(test) + </script> + +</body></html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/004.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/004.html new file mode 100644 index 0000000..a21dd388 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/004.html
@@ -0,0 +1,25 @@ +<!DOCTYPE html> +<html><head> + <title> scheduler: external+inline in markup </title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<body> + + <div id="log">FAILED (This TC requires JavaScript enabled)</div> + + <script src="scripts/include-1.js"></script> + <script>log('inline script #2')</script> + + <script type="text/javascript"> + var t = async_test() + + function test() { + assert_array_equals(eventOrder, ['external script #1', 'inline script #2' ]); + t.done(); + } + onload = t.step_func(test) + </script> + +</body></html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/005.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/005.html new file mode 100644 index 0000000..ff4a66d2 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/005.html
@@ -0,0 +1,27 @@ +<!DOCTYPE html> +<html><head> + <title> scheduler: document.write inline in markup </title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<body> + + <div id="log">FAILED (This TC requires JavaScript enabled)</div> + + <script>log('inline script #1'); + document.write( '<script>log(\'doc write script\')<\/script>' ); + log('end script #1'); + </script> + + <script type="text/javascript"> + var t = async_test() + + function test() { + assert_array_equals(eventOrder, ['inline script #1', 'doc write script', 'end script #1' ]); + t.done(); + } + onload = t.step_func(test) + </script> + +</body></html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/006.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/006.html new file mode 100644 index 0000000..b8785a6 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/006.html
@@ -0,0 +1,30 @@ +<!DOCTYPE html> +<html><head> + <title> scheduler: document.write inline - multiple</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<body> + + <div id="log">FAILED (This TC requires JavaScript enabled)</div> + + <script>log('inline script #1'); + document.write( '<script>log(\'doc write script 1\')<\/script>' ); + document.write( '<script>log(\'doc write script 2\')<\/script>' ); + eval('log(\'eval 1\')'); + document.write( '<script>log(\'doc write script 3\')<\/script>' ); + log('end script #1'); + </script> + + <script type="text/javascript"> + var t = async_test() + + function test() { + assert_array_equals(eventOrder, ['inline script #1', 'doc write script 1','doc write script 2', 'eval 1','doc write script 3', 'end script #1' ]); + t.done(); + } + onload = t.step_func(test) + </script> + +</body></html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/007.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/007.html new file mode 100644 index 0000000..edd9920 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/007.html
@@ -0,0 +1,27 @@ +<!DOCTYPE html> +<html><head> + <title> scheduler: document.write external</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<body> + + <div id="log">FAILED (This TC requires JavaScript enabled)</div> + + <script>log('inline script #1'); + document.write( '<script src="scripts/include-1.js">log(\'ignore this\')<\/script>' ); + log('end script #1'); + </script> + + <script type="text/javascript"> + var t = async_test() + + function test() { + assert_array_equals(eventOrder, ['inline script #1', 'end script #1', 'external script #1' ]); + t.done(); + } + onload = t.step_func(test) + </script> + +</body></html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/008.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/008.html new file mode 100644 index 0000000..dce76398 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/008.html
@@ -0,0 +1,28 @@ +<!DOCTYPE html> +<html><head> + <title> scheduler: document.write external - multiple</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<body> + + <div id="log">FAILED (This TC requires JavaScript enabled)</div> + + <script>log('inline script #1'); + document.write( '<script src="scripts/include-1.js">log(\'ignore this\')<\/script>' ); + document.write( '<script src="scripts/include-2.js">log(\'ignore this\')<\/script>' ); + log('end script #1'); + </script> + + <script type="text/javascript"> + var t = async_test() + + function test() { + assert_array_equals(eventOrder, ['inline script #1', 'end script #1', 'external script #1', 'external script #2' ]); + t.done(); + } + onload = t.step_func(test) + </script> + +</body></html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/009.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/009.html new file mode 100644 index 0000000..9d5b2de08 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/009.html
@@ -0,0 +1,29 @@ +<!DOCTYPE html> +<html><head> + <title> scheduler: document.write external - multiple with doc.write</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<body> + + <div id="log">FAILED (This TC requires JavaScript enabled)</div> + + <script>log('inline script #1'); + document.write( '<script src="scripts/include-1.js">log(\'ignore this\')<\/script>' ); + document.write( '<script src="scripts/include-3.js">log(\'ignore this\')<\/script>' ); + document.write( '<script src="scripts/include-2.js">log(\'ignore this\')<\/script>' ); + log('end script #1'); + </script> + + <script type="text/javascript"> + var t = async_test() + + function test() { + assert_array_equals(eventOrder, ['inline script #1', 'end script #1', 'external script #1', 'external script before doc write', 'document.write external script', 'external script after doc write', 'external script #2' ]); + t.done(); + } + onload = t.step_func(test) + </script> + +</body></html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/010.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/010.html new file mode 100644 index 0000000..69a462c --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/010.html
@@ -0,0 +1,29 @@ +<!DOCTYPE html> +<html><head> + <title> scheduler: document.write external + inline - multiple with doc.write</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<body> + + <div id="log">FAILED (This TC requires JavaScript enabled)</div> + + <script>log('inline script #1'); + document.write( '<script src="scripts/include-1.js">log(\'ignore this\')<\/script>' ); + document.write( '<script>log(\'inline with doc.write #1\')<\/script>' ); + document.write( '<script src="scripts/include-2.js">log(\'ignore this\')<\/script>' ); + log('end script #1'); + </script> + + <script type="text/javascript"> + var t = async_test() + + function test() { + assert_array_equals(eventOrder, ['inline script #1', 'end script #1', 'external script #1', 'inline with doc.write #1', 'external script #2']); + t.done(); + } + onload = t.step_func(test) + </script> + +</body></html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/011.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/011.html new file mode 100644 index 0000000..33024ba --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/011.html
@@ -0,0 +1,30 @@ +<!DOCTYPE html> +<html><head> + <title> scheduler: document.write external + inline - multiple with doc.write + subsequent markup</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<body> + + <div id="log">FAILED (This TC requires JavaScript enabled)</div> + + <script>log('inline script #1'); + document.write( '<script src="scripts/include-1.js">log(\'ignore this\')<\/script>' ); + document.write( '<script>log(\'inline with doc.write #1\')<\/script>' ); + document.write( '<script src="scripts/include-2.js">log(\'ignore this\')<\/script>' ); + log('end script #1'); + </script> + + <script type="text/javascript"> + log( 'inline script #2' ); + var t = async_test() + + function test() { + assert_array_equals(eventOrder, ['inline script #1', 'end script #1', 'external script #1', 'inline with doc.write #1', 'external script #2', 'inline script #2']); + t.done(); + } + onload = t.step_func(test) + </script> + +</body></html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/012.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/012.html new file mode 100644 index 0000000..01c9293 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/012.html
@@ -0,0 +1,30 @@ +<!DOCTYPE html> +<html><head> + <title> scheduler: document.write external and onload events </title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<body> + + <div id="log">FAILED (This TC requires JavaScript enabled)</div> + + <script>log('inline script #1'); + document.write( '<script src="scripts/include-1.js" onload = "log(\'include-1 load\')">log(\'ignore this\')<\/script>' ) + document.write( '<script src="scripts/include-3.js" onload = "log(\'include-3 load\')"><\/script>' ) + document.write( '<script src="scripts/include-2.js" onload = "log(\'include-2 load\')">log(\'ignore this\')<\/script>' ) + log('end script #1'); + </script> + + <script type="text/javascript"> + log( 'inline script #2' ); + var t = async_test() + + function test() { + assert_array_equals(eventOrder, ['inline script #1', 'end script #1', 'external script #1', 'include-1 load', 'external script before doc write', 'document.write external script', 'external script after doc write', 'include-3 load', 'external script #2', 'include-2 load', 'inline script #2']); + t.done(); + } + onload = t.step_func(test) + </script> + +</body></html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/013.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/013.html new file mode 100644 index 0000000..09616a6 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/013.html
@@ -0,0 +1,28 @@ +<!DOCTYPE html> +<html><head> + <title> scheduler: DOM added inline script earlier in document</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<body> + + <div id="log">FAILED (This TC requires JavaScript enabled)</div> + + <script>log('inline script #1'); + testlib.addScript('log(\'head script #1\')', {}, document.getElementsByTagName('head')[0], false); + log('end script #1'); + </script> + + <script type="text/javascript"> + log( 'inline script #2' ); + var t = async_test() + + function test() { + assert_array_equals(eventOrder, ['inline script #1', 'head script #1','end script #1', 'inline script #2']); + t.done(); + } + onload = t.step_func(function(){setTimeout(t.step_func(test), 100); }) + </script> + +</body></html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/014.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/014.html new file mode 100644 index 0000000..41c90a3 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/014.html
@@ -0,0 +1,28 @@ +<!DOCTYPE html> +<html><head> + <title> scheduler: SCRIPT elements that move themselves in DOM </title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<body> + + <div id="log">FAILED (This TC requires JavaScript enabled)</div> + + <script>log('inline script #1'); + document.getElementsByTagName('head')[0].appendChild(document.getElementsByTagName('script')[2]); + log('end script #1'); + </script> + + <script type="text/javascript"> + log('script #2'); + var t = async_test() + + function test() { + assert_array_equals(eventOrder, ['inline script #1', 'end script #1', 'script #2']); + t.done(); + } + onload = t.step_func(test) + </script> + +</body></html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/015.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/015.html new file mode 100644 index 0000000..1fa67e22 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/015.html
@@ -0,0 +1,34 @@ +<!DOCTYPE html> +<html><head> + <title> scheduler: DOM added inline+external+inline script earlier in document</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<body> + + <div id="log">FAILED (This TC requires JavaScript enabled)</div> + + <script>log('inline script #1'); + testlib.addScript('log(\'head script #1\')', {}, document.getElementsByTagName('head')[0], false); + var s = testlib.addScript('', { 'src':'scripts/include-1.js' }, document.getElementsByTagName('head')[0], false); + testlib.addScript('log(\'head script #2\')', {}, document.getElementsByTagName('head')[0], false); + log('end script #1'); + </script> + + <script type="text/javascript"> + log( 'inline script #2' ); + var t = async_test() + + ///XXX I think the spec allows this case to race + onload = function(){ + setTimeout(t.step_func( + function() { + assert_any(assert_array_equals, eventOrder, [['inline script #1', 'head script #1', 'head script #2', 'end script #1', 'external script #1', 'inline script #2'], + ['inline script #1', 'head script #1', 'head script #2', 'end script #1', 'inline script #2', 'external script #1']]); + t.done(); + }), + 100);} + </script> + +</body></html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/015a.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/015a.html new file mode 100644 index 0000000..d892c70 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/015a.html
@@ -0,0 +1,30 @@ +<!DOCTYPE html> +<html><head> + <title> scheduler: DOM added inline+external+inline script earlier in document</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<body> + + <div id="log">FAILED (This TC requires JavaScript enabled)</div> + + <script>log('inline script #1'); + testlib.addScript('log(\'head script #1\')', {}, document.getElementsByTagName('head')[0], false); + var s = testlib.addScript('', { 'src':'scripts/include-1.js?pipe=trickle(d1)' }, document.getElementsByTagName('head')[0], false); + testlib.addScript('log(\'head script #2\')', {}, document.getElementsByTagName('head')[0], false); + log('end script #1'); + </script> + + <script type="text/javascript"> + log( 'inline script #2' ); + var t = async_test() + + function test() { + assert_array_equals(eventOrder, ['inline script #1', 'head script #1', 'head script #2', 'end script #1', 'inline script #2', 'external script #1']); + t.done(); + } + onload = function(){setTimeout(t.step_func(function() {test.apply(t)}), 2000); } + </script> + +</body></html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/016.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/016.html new file mode 100644 index 0000000..1149dcc7 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/016.html
@@ -0,0 +1,28 @@ +<!DOCTYPE html> +<html><head> + <title> scheduler: DOM added inline script later in document</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<body> + + <div id="log">FAILED (This TC requires JavaScript enabled)</div> + + <script>log('inline script #1'); + testlib.addScript('log(\'body script #1\')', {}, document.body, false); + log('end script #1'); + </script> + + <script type="text/javascript"> + log( 'inline script #2' ); + var t = async_test() + + function test() { + assert_array_equals(eventOrder, ['inline script #1', 'body script #1', 'end script #1', 'inline script #2']); + t.done(); + } + onload = t.step_func(function(){setTimeout(t.step_func(test), 100); }) + </script> + +</body></html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/017.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/017.html new file mode 100644 index 0000000..66675bc --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/017.html
@@ -0,0 +1,33 @@ +<!DOCTYPE html> +<html><head> + <title> scheduler: multiple DOM added scripts later in document</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<body> + + <div id="log">FAILED (This TC requires JavaScript enabled)</div> + + <script>log('inline script #1'); + testlib.addScript('log(\'body script #1\')', {}, document.getElementsByTagName('body')[0], false); + testlib.addScript('', { 'src':'scripts/include-1.js' }, document.getElementsByTagName('body')[0], false); + testlib.addScript('log(\'body script #2\')', {}, document.getElementsByTagName('body')[0], false); + log('end script #1'); + </script> + + <script type="text/javascript"> + log( 'inline script #2' ); + var t = async_test() + + //The order of the external script vs the second inline script is undefined because the added script is async by default + //But we expect most UAs to have the second order + onload = function() {setTimeout(t.step_func(function() { + assert_any(assert_array_equals, eventOrder, [ + ['inline script #1', 'body script #1', 'body script #2', 'end script #1', 'external script #1', 'inline script #2'], + ['inline script #1', 'body script #1', 'body script #2', 'end script #1', 'inline script #2', 'external script #1']]); + t.done(); + }), 100);} + </script> + +</body></html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/018.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/018.html new file mode 100644 index 0000000..5a349bf5 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/018.html
@@ -0,0 +1,35 @@ +<!DOCTYPE html> +<html><head> + <title> scheduler: DOM added scripts and doc.write</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<body> + + <div id="log">FAILED (This TC requires JavaScript enabled)</div> + + <script>log('inline script #1'); + testlib.addScript('', { 'src':'scripts/include-3.js' }, document.getElementsByTagName('head')[0], false); + testlib.addScript('log(\'body script #2\')', {}, document.getElementsByTagName('body')[0], true); + log('end script #1'); + </script> + + <script type="text/javascript"> + log( 'inline script #2' ); + var t = async_test() + + //XXX Need to test this delaying the document after we insert the external script and delaying the external script itself; afaict the spec allows us to race here on whether the document.write + //ever actually happens or not according to whether the insertion point is defined at the point at which the script is executed. + function test() { + assert_any(assert_array_equals, eventOrder, [ + ['inline script #1', 'body script #2', 'end script #1', 'external script before doc write', 'document.write external script', 'external script after doc write', 'inline script #2'], + ['inline script #1', 'body script #2', 'end script #1', 'inline script #2', 'external script before doc write', 'document.write external script', 'external script after doc write'], + ['inline script #1', 'body script #2', 'end script #1', 'inline script #2', 'external script before doc write', 'external script after doc write'] + ]); + t.done(); +} + onload = t.step_func(function(){setTimeout(test.apply(t), 100); }) + </script> + +</body></html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/019.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/019.html new file mode 100644 index 0000000..64ee4f1 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/019.html
@@ -0,0 +1,31 @@ +<!DOCTYPE html> +<html><head> + <title> scheduler: DOM added scripts and event handling </title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<body> + + <div id="log">FAILED (This TC requires JavaScript enabled)</div> + + <script onload="log('inline #1 load')"> + log('inline script #1'); + testlib.addScript('', {'src':'scripts/include-1.js', 'onload':function(){log("external #1 load")}}, document.getElementsByTagName('head')[0], false); + log('end script #1'); + </script> + + <script type="text/javascript"> + log( 'inline script #2' ); + var t = async_test() + + function test() { + assert_any(assert_array_equals, eventOrder, [['inline script #1', 'end script #1', 'external script #1', 'external #1 load', 'inline script #2'], + ['inline script #1', 'end script #1', 'inline script #2', 'external script #1', 'external #1 load'] + ]); + t.done(); + } + onload = function(){setTimeout(t.step_func(test), 100); } + </script> + +</body></html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/020.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/020.html new file mode 100644 index 0000000..7d8f953 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/020.html
@@ -0,0 +1,28 @@ +<!DOCTYPE html> +<html><head> + <title> scheduler: DOM added script with data: URL </title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<body> + + <div id="log">FAILED (This TC requires JavaScript enabled)</div> + <script>log('inline script #1'); + testlib.addScript('', { 'src':'data:text/javascript,log("data URL script")' }, document.getElementsByTagName('body')[0], true); + log('end script #1'); + </script> + + <script type="text/javascript"> + log( 'inline script #2' ); + var t = async_test() + + function test() { + assert_any(assert_array_equals, eventOrder, [['inline script #1', 'end script #1', 'data URL script', 'inline script #2'], + ['inline script #1', 'end script #1', 'inline script #2', 'data URL script']]); + t.done(); + } + onload = function() {setTimeout( t.step_func(test), 100); } + </script> + +</body></html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/021.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/021.html new file mode 100644 index 0000000..34fdc95 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/021.html
@@ -0,0 +1,28 @@ +<!DOCTYPE html> +<html><head> + <title> scheduler: DOM added script with javascript: URL </title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<body> + + <div id="log">FAILED (This TC requires JavaScript enabled)</div> + <script>log('inline script #1'); + testlib.addScript('', { 'src':'javascript:log("JS URL script")' }, document.getElementsByTagName('body')[0], true); + log('end script #1'); + </script> + + <script type="text/javascript"> + log( 'inline script #2' ); + var t = async_test() + + function test() { + assert_array_equals(eventOrder, ['inline script #1', 'end script #1', /*'JS URL script',*/ 'inline script #2']); + t.done(); + /* pass condition changed 2010-12-01 due to CT-198 */ + } + onload = t.step_func(function(){setTimeout( test, 100); }) + </script> + +</body></html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/022.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/022.html new file mode 100644 index 0000000..ccbcb34 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/022.html
@@ -0,0 +1,30 @@ +<!DOCTYPE html> +<html><head> + <title> scheduler: DOM added script, late .src </title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<body> + + <div id="log">FAILED (This TC requires JavaScript enabled)</div> + <script>log('inline script #1'); + var script = testlib.addScript('', { }, document.getElementsByTagName('body')[0], false); + script.src='scripts/include-1.js'; + log('end script #1'); + </script> + + <script type="text/javascript"> + log( 'inline script #2' ); + var t = async_test() + + onload = function() {setTimeout(t.step_func( + function() { + assert_any(assert_array_equals, eventOrder, [['inline script #1', 'end script #1', 'external script #1', 'inline script #2'], + ['inline script #1', 'end script #1', 'inline script #2', 'external script #1']]); + t.done() + }), + 100)} + </script> + +</body></html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/023.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/023.html new file mode 100644 index 0000000..dc687ffe --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/023.html
@@ -0,0 +1,30 @@ +<!DOCTYPE html> +<html><head> + <title> scheduler: DOM added script, even later .src </title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<body> + + <div id="log">FAILED (This TC requires JavaScript enabled)</div> + <script>log('inline script #1'); + var script = testlib.addScript('', { }, document.getElementsByTagName('body')[0], false); + log('end script #1'); + </script> + + <script type="text/javascript"> + log( 'inline script #2' ); + var t = async_test() + + function test() { + assert_array_equals(eventOrder, ['inline script #1', 'end script #1', 'inline script #2', 'external script #1']); + t.done(); +} + onload = t.step_func(function(){ + script.src='scripts/include-1.js'; + script.onload = t.step_func(test); + }) + </script> + +</body></html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/024.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/024.html new file mode 100644 index 0000000..ee807b5 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/024.html
@@ -0,0 +1,32 @@ +<!DOCTYPE html> +<html><head> + <title> scheduler: DOM added script, .src set twice</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<body> + + <div id="log">FAILED (This TC requires JavaScript enabled)</div> + <script>log('inline script #1'); + var script = testlib.addScript('', { }, document.getElementsByTagName('body')[0], false); + script.src='scripts/include-1.js'; + log('end script #1'); + </script> + + <script type="text/javascript"> + log( 'inline script #2' ); + var t = async_test() + + function test() { + assert_any(assert_array_equals, eventOrder, [['inline script #1', 'end script #1', 'external script #1', 'inline script #2'], + ['inline script #1', 'end script #1', 'inline script #2', 'external script #1']]); + t.done(); + } + onload = t.step_func(function(){ + script.src='scripts/include-2.js'; // needs to be ignored, script already "is executed" + setTimeout(t.step_func(test), 100); + }) + </script> + +</body></html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/025.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/025.html new file mode 100644 index 0000000..05c6a97 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/025.html
@@ -0,0 +1,30 @@ +<!DOCTYPE html> +<html><head> + <title> scheduler: DOM added script, .src set on script with content</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<body> + + <div id="log">FAILED (This TC requires JavaScript enabled)</div> + <script>log('inline script #1'); + var script = testlib.addScript('log("inline DOM script #1")', { }, document.getElementsByTagName('body')[0], false); + script.src='scripts/include-1.js'; + log('end script #1'); + </script> + + <script type="text/javascript"> + log( 'inline script #2' ); + var t = async_test() + + function test() { + assert_array_equals(eventOrder, ['inline script #1', 'inline DOM script #1', 'end script #1', 'inline script #2']); + t.done(); + } + onload = t.step_func(function(){ + setTimeout(t.step_func(test), 100); + }) + </script> + +</body></html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/026.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/026.html new file mode 100644 index 0000000..34110ff --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/026.html
@@ -0,0 +1,33 @@ +<!DOCTYPE html> +<html><head> + <title> scheduler: doc write added script, .src set later</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<body> + + <div id="log">FAILED (This TC requires JavaScript enabled)</div> + <script>log('inline script #1'); + var t = async_test(); + document.write('<script><\/script>'); + var scripts = document.getElementsByTagName('script'); + scripts[scripts.length - 1].src = 'scripts/include-1.js'; + log('end script #1'); + </script> + + <script type="text/javascript"> + log( 'inline script #2' ); + + onload = function() { + setTimeout( + t.step_func(function() { + assert_any(assert_array_equals, eventOrder, [['inline script #1', 'end script #1', 'external script #1', 'inline script #2'], + ['inline script #1', 'end script #1', 'inline script #2', 'external script #1']]); + t.done(); + }), + 100); + } + </script> + +</body></html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/027.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/027.html new file mode 100644 index 0000000..e9fbe7f1 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/027.html
@@ -0,0 +1,30 @@ +<!DOCTYPE html> +<html><head> + <title> scheduler: doc write added script with content, .src set later</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<body> + + <div id="log">FAILED (This TC requires JavaScript enabled)</div> + <script>log('inline script #1'); + document.write('<script>log(\'doc.write script\')<\/script>'); + log('end script #1'); + </script> + + <script type="text/javascript"> + log( 'inline script #2' ); + document.getElementsByTagName('script')[4].src='scripts/include-1.js'; + var t = async_test() + + function test() { + assert_array_equals(eventOrder, ['inline script #1', 'doc.write script', 'end script #1', 'inline script #2']); + t.done(); + } + onload = t.step_func(function(){ + setTimeout(t.step_func(test), 100); + }) + </script> + +</body></html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/028-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/028-expected.txt new file mode 100644 index 0000000..b070ad5 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/028-expected.txt
@@ -0,0 +1,4 @@ +This is a testharness.js-based test. +FAIL scheduler: javascript: URL assert_array_equals: lengths differ, expected 4 got 3\n\nassert_array_equals: lengths differ, expected 4 got 3 +Harness: the test ran to completion. +
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/028.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/028.html new file mode 100644 index 0000000..e383d4f --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/028.html
@@ -0,0 +1,29 @@ +<!DOCTYPE html> +<html><head> + <title> scheduler: javascript: URL</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<body> + + <div id="log">FAILED (This TC requires JavaScript enabled)</div> + <script>log('inline script #1'); + window.location.replace('javascript:log(\'JS URL\')'); + log('end script #1'); + </script> + + <script type="text/javascript"> + log( 'inline script #2' ); + var t = async_test() + + function test() { + assert_any(assert_array_equals, eventOrder, [ + ['inline script #1', 'end script #1', 'JS URL', 'inline script #2'], + ['inline script #1', 'end script #1', 'inline script #2', 'JS URL']]); + t.done(); + } + onload = t.step_func(test) + </script> + +</body></html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/029-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/029-expected.txt new file mode 100644 index 0000000..2d256a40 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/029-expected.txt
@@ -0,0 +1,4 @@ +This is a testharness.js-based test. +FAIL scheduler: javascript: URL in HREF assert_array_equals: property 1, expected "end script #1" but got "JS URL"\n\nassert_array_equals: property 1, expected "end script #1" but got "JS URL" +Harness: the test ran to completion. +
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/029.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/029.html new file mode 100644 index 0000000..c74665ec1 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/029.html
@@ -0,0 +1,37 @@ +<!DOCTYPE html> +<html><head> + <title> scheduler: javascript: URL in HREF</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<body> + + <div id="log">FAILED (This TC requires JavaScript enabled)</div> + <p><a href="javascript:log('JS URL')"></a></p> + <script>log('inline script #1'); + if(document.links[0].click){ + document.links[0].click(); + }else{ + var evt = document.createEvent("MouseEvents"); + evt.initMouseEvent("click", true, true, window, + 0, 0, 0, 0, 0, false, false, false, false, 0, null); + document.links[0].dispatchEvent(evt); + } + log('end script #1'); + </script> + + <script type="text/javascript"> + log( 'inline script #2' ); + var t = async_test() + + function test() { + assert_any(assert_array_equals, eventOrder, [ + ['inline script #1', 'end script #1', 'JS URL', 'inline script #2'], + ['inline script #1', 'end script #1', 'inline script #2', 'JS URL']]); + t.done(); + } + onload = t.step_func(test) + </script> + +</body></html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/030-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/030-expected.txt new file mode 100644 index 0000000..e086739 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/030-expected.txt
@@ -0,0 +1,4 @@ +This is a testharness.js-based test. +FAIL scheduler: javascript: URL in HREF, onclick handler assert_array_equals: property 2, expected "end script #1" but got "JS URL"\n\nassert_array_equals: property 2, expected "end script #1" but got "JS URL" +Harness: the test ran to completion. +
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/030.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/030.html new file mode 100644 index 0000000..f01c257 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/030.html
@@ -0,0 +1,39 @@ +<!DOCTYPE html> +<html><head> + <title> scheduler: javascript: URL in HREF, onclick handler</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<body> + + <div id="log">FAILED (This TC requires JavaScript enabled)</div> + <p><a href="javascript:log('JS URL')" onclick="log('click event');return true;"></a></p> + <script>log('inline script #1'); + if(document.links[0].click){ + document.links[0].click(); + }else{ + var evt = document.createEvent("MouseEvents"); + evt.initMouseEvent("click", true, true, window, + 0, 0, 0, 0, 0, false, false, false, false, 0, null); + document.links[0].dispatchEvent(evt); + } + log('end script #1'); + </script> + + <script type="text/javascript"> + log( 'inline script #2' ); + var t = async_test() + + var w = window; + onload = function() {setTimeout( + t.step_func(function() { + w.assert_any(w.assert_array_equals, w.eventOrder, + [['inline script #1', 'click event', 'end script #1', 'JS URL', 'inline script #2'], + ['inline script #1', 'click event', 'end script #1', 'inline script #2', 'JS URL']]); + t.done(); + }), 200); + } + </script> + +</body></html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/031.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/031.html new file mode 100644 index 0000000..3ddb36ab --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/031.html
@@ -0,0 +1,30 @@ +<!DOCTYPE html> +<html><head> + <title> scheduler: focus and blur events</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<body> + + <div id="log">FAILED (This TC requires JavaScript enabled)</div> + <form><input type="button" onclick="log('click event')" onfocus="log('focus event')" onblur="log('blur event')"><input type="button" onfocus="log('focus el 2 event')" onblur="log('blur event')"></form> + <script>log('inline script #1'); + document.forms[0][0].focus(); + document.forms[0][1].click(); + document.forms[0][1].focus(); + log('end script #1'); + </script> + + <script type="text/javascript"> + log('inline script #2'); + var t = async_test() + + function test() { + assert_array_equals(eventOrder, ['inline script #1', 'focus event', 'blur event', 'focus el 2 event', 'end script #1', 'inline script #2']); + t.done(); + } + onload = t.step_func(function(){setTimeout(t.step_func(test), 200);}) + </script> + +</body></html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/032.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/032.html new file mode 100644 index 0000000..da396974 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/032.html
@@ -0,0 +1,29 @@ +<!DOCTYPE html> +<html><head> + <title> scheduler: innerHTML and scripts</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<body> + + <div id="log">FAILED (This TC requires JavaScript enabled)</div> + <div></div> + <script>log('inline script #1'); + // script added with innerHTML should not run.. + document.getElementsByTagName('div')[1].innerHTML = '<script>log("innerHTML script runs")<\/script><script src="scripts/include-1.js"><\/script>'; + log('end script #1'); + </script> + + <script type="text/javascript"> + log( 'inline script #2' ); + var t = async_test() + + function test() { + assert_array_equals(eventOrder, ['inline script #1', 'end script #1', 'inline script #2']); + t.done(); + } + onload = t.step_func(function(){setTimeout(t.step_func(test), 200);}) + </script> + +</body></html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/033.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/033.html new file mode 100644 index 0000000..5c41eff --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/033.html
@@ -0,0 +1,35 @@ +<!DOCTYPE html> +<html><head> + <title> scheduler: innerHTML and scripts moved in DOM</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<body> + + <div id="log">FAILED (This TC requires JavaScript enabled)</div> + <div></div> + <script>log('inline script #1'); + // script added with innerHTML should not run.. + document.getElementsByTagName('div')[0].innerHTML = '<script>log("innerHTML script runs")<\/script><script src="scripts/include-1.js"><\/script>'; + try{ + document.body.appendChild( document.getElementsByTagName('div')[0].firstChild ); + document.body.appendChild( document.getElementsByTagName('div')[0].firstChild ); + }catch(e){ + log('ERROR while testing'); + } + log('end script #1'); + </script> + + <script type="text/javascript"> + log( 'inline script #2' ); + var t = async_test() + + function test() { + assert_array_equals(eventOrder, ['inline script #1', 'end script #1', 'inline script #2']); + t.done(); + } + onload = t.step_func(function(){setTimeout(t.step_func(test), 200);}) + </script> + +</body></html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/034.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/034.html new file mode 100644 index 0000000..1366425 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/034.html
@@ -0,0 +1,28 @@ +<!DOCTYPE html> +<html><head> + <title> scheduler: innerHTML adding frames with JS in</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<body> + + <div id="log">FAILED (This TC requires JavaScript enabled)</div> + <div></div> + <script>log('inline script #1'); + document.getElementsByTagName('div')[1].innerHTML = '<iframe src="pages/helloworld.html"></iframe>'; + log('end script #1'); + </script> + + <script type="text/javascript"> + log( 'inline script #2' ); + var t = async_test() + + function test() { + assert_array_equals(eventOrder, ['inline script #1', 'end script #1', 'inline script #2', 'frame/popup script']); + t.done(); + } + onload = t.step_func(function(){setTimeout(t.step_func(test), 200);}) + </script> + +</body></html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/035-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/035-expected.txt new file mode 100644 index 0000000..07e2dcf --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/035-expected.txt
@@ -0,0 +1,4 @@ +This is a testharness.js-based test. +FAIL scheduler: innerHTML adding frames with JS in and moving scripts assert_array_equals: lengths differ, expected 4 got 5 +Harness: the test ran to completion. +
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/035.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/035.html new file mode 100644 index 0000000..406c3c5 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/035.html
@@ -0,0 +1,34 @@ +<!DOCTYPE html> +<html><head> + <title> scheduler: innerHTML adding frames with JS in and moving scripts</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<body> + + <div id="log">FAILED (This TC requires JavaScript enabled)</div> + <div></div> + <script>log('inline script #1'); + document.getElementsByTagName('div')[1].innerHTML = '<iframe src="pages/helloworld.html"></iframe>'; + log('end script #1'); + </script> + + <script type="text/javascript"> + log( 'inline script #2' ); + var t = async_test() + + function test() { + assert_array_equals(eventOrder, ['inline script #1', 'end script #1', 'inline script #2', 'frame/popup script']); + t.done(); + /*, ['inline script #1', 'end script #1', 'frame/popup script', 'inline script #2'] */ + } + onload = t.step_func(function(){ + try{ + document.body.appendChild(document.importNode( top.frames[0].document.getElementsByTagName('script')[0], true )); + }catch(e){ log('ERROR - tested functionality not supported'); } + setTimeout(t.step_func(test), 200); + }); + </script> + +</body></html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/036.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/036.html new file mode 100644 index 0000000..113541d --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/036.html
@@ -0,0 +1,34 @@ +<!DOCTYPE html> +<html><head> + <title> scheduler: DOM cloning</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<body> + + <div id="log">FAILED (This TC requires JavaScript enabled)</div> + <div></div> + <script>log('inline script #1'); + testlib.addScript('log(\'head script #1\')', {}, document.getElementsByTagName('head')[0], true); + log('end script #1'); + </script> + + <script type="text/javascript"> + log( 'inline script #2' ); + try{ + var script = document.getElementsByTagName('script')[0].cloneNode(true); + document.body.appendChild(script); + }catch(e){ log('ERROR - tested functionality not supported'); } + var t = async_test() + + function test() { + assert_array_equals(eventOrder, ['inline script #1', 'head script #1', 'end script #1', 'inline script #2' ]); + t.done(); + } + onload = t.step_func(function(){ + setTimeout(t.step_func(test), 200); + }); + </script> + +</body></html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/037.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/037.html new file mode 100644 index 0000000..15bd8a9 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/037.html
@@ -0,0 +1,33 @@ +<!DOCTYPE html> +<html><head> + <title> scheduler: DOM movement with appendChild, inline</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<body> + + <div id="log">FAILED (This TC requires JavaScript enabled)</div> + <div></div> + <script>log('inline script #1'); + var script = testlib.addScript('log(\'head script #1\')', {}, document.getElementsByTagName('head')[0], true); + log('end script #1'); + </script> + + <script type="text/javascript"> + log( 'inline script #2' ); + try{ + document.body.appendChild(script); + }catch(e){ log('ERROR - tested functionality not supported'); } + var t = async_test() + + function test() { + assert_array_equals(eventOrder, ['inline script #1', 'head script #1', 'end script #1', 'inline script #2' ]); + t.done(); + } + onload = t.step_func(function(){ + setTimeout(t.step_func(test), 200); + }); + </script> + +</body></html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/038.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/038.html new file mode 100644 index 0000000..db6cec35 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/038.html
@@ -0,0 +1,34 @@ +<!DOCTYPE html> +<html><head> + <title> scheduler: DOM movement with appendChild, external</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<body> + + <div id="log">FAILED (This TC requires JavaScript enabled)</div> + <div></div> + <script>log('inline script #1'); + var script = testlib.addScript('', { 'src':'scripts/include-1.js' }, document.getElementsByTagName('head')[0], true); + log('end script #1'); + </script> + + <script type="text/javascript"> + log( 'inline script #2' ); + try{ + document.body.appendChild(script); + }catch(e){ log('ERROR - tested functionality not supported'); } + var t = async_test() + + function test() { + assert_any(assert_array_equals, eventOrder, [['inline script #1', 'end script #1', 'external script #1', 'inline script #2'], + ['inline script #1', 'end script #1', 'inline script #2', 'external script #1']]); + t.done(); + } + onload = function() { + setTimeout(t.step_func(test), 200); + }; + </script> + +</body></html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/039.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/039.html new file mode 100644 index 0000000..a0abdf1 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/039.html
@@ -0,0 +1,36 @@ +<!DOCTYPE html> +<html><head> + <title> scheduler: IFRAMEs added with DOM</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<body> + + <div id="log">FAILED (This TC requires JavaScript enabled)</div> + <div></div> + <script>log('inline script #1'); + for( var i=0; i<2; i++ ){ + var iframe=document.createElement('iframe'); + document.getElementsByTagName('div')[1].appendChild(iframe); + iframe.src='pages/helloworld.html?'+i+'&'+Math.random(); + } + log('end script #1'); + </script> + + <script type="text/javascript"> + log( 'inline script #2' ); + var t = async_test() + + function test() { + assert_any(assert_array_equals, eventOrder, [ + ['inline script #1', 'end script #1', 'inline script #2', 'frame/popup script 0', 'frame/popup script 1'], + ['inline script #1', 'end script #1', 'inline script #2', 'frame/popup script 1', 'frame/popup script 0']]); + t.done(); + } + onload = t.step_func(function() { + setTimeout(t.step_func(test), 200); + }); + </script> + +</body></html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/040-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/040-expected.txt new file mode 100644 index 0000000..037e01e9 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/040-expected.txt
@@ -0,0 +1,4 @@ +This is a testharness.js-based test. +FAIL scheduler: IFRAMEs added with DOM (innerHTML), javascript: URL assert_array_equals: property 1, expected "end script #1" but got "JS URL"\n\nassert_array_equals: property 1, expected "end script #1" but got "JS URL"\n\nassert_array_equals: property 1, expected "end script #1" but got "JS URL" +Harness: the test ran to completion. +
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/040.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/040.html new file mode 100644 index 0000000..3cdf87f --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/040.html
@@ -0,0 +1,34 @@ +<!DOCTYPE html> +<html><head> + <title> scheduler: IFRAMEs added with DOM (innerHTML), javascript: URL</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<body> + + <div id="log">FAILED (This TC requires JavaScript enabled)</div> + <div></div> + <script>log('inline script #1'); + document.getElementsByTagName('div')[1].innerHTML = '<iframe src="javascript:parent.log(\'JS URL\');\'<html><script>parent.log(\\\'frame script\\\')<\/script></html>\'"></iframe>'; + log('end script #1'); + </script> + + <script type="text/javascript"> + log( 'inline script #2' ); + var t = async_test() + + function test() { + assert_any(assert_array_equals, eventOrder, [ + ['inline script #1', 'end script #1', 'JS URL', 'inline script #2', 'frame script'], + /* the following combination seems quite unlikely? */ + ['inline script #1', 'end script #1', 'JS URL', 'frame script', 'inline script #2'], + ['inline script #1', 'end script #1', 'inline script #2', 'JS URL', 'frame script']]); + t.done(); + } + onload = t.step_func(function(){ + setTimeout(t.step_func(test), 200); + }); + </script> + +</body></html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/041.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/041.html new file mode 100644 index 0000000..bce70411 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/041.html
@@ -0,0 +1,29 @@ +<!DOCTYPE html> +<html><head> + <title> scheduler: document.write scripts that write scripts</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<body> + + <div id="log">FAILED (This TC requires JavaScript enabled)</div> + + <script>log('inline script #1'); + document.write( '<script>log(\'inline with doc.write #1\'); document.write(\'<script src="scripts/include-4.js"><\\\/script>\');log(\'end inline with doc.write\');<\/script>' ); + document.write( '<script src="scripts/include-1.js">log(\'ignore this\')<\/script>' ); + log('end script #1'); + </script> + + <script type="text/javascript"> + log( 'inline script #2' ); + var t = async_test() + + function test() { + assert_array_equals(eventOrder, ['inline script #1', 'inline with doc.write #1', 'end inline with doc.write', 'end script #1', 'include-4 before doc write', 'include-4 after doc write', 'external script before doc write', 'document.write external script', 'external script after doc write', 'external script #1', 'inline script #2']); + t.done(); + } + onload = t.step_func(test) + </script> + +</body></html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/042.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/042.html new file mode 100644 index 0000000..df3a2f8 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/042.html
@@ -0,0 +1,29 @@ +<!DOCTYPE html> +<html><head> + <title> scheduler: DOM mutation events when adding scripts: DOMNodeInserted </title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<body> + + <div id="log">FAILED (This TC requires JavaScript enabled)</div> + + <script>log('inline script #1'); + document.addEventListener( 'DOMNodeInserted', function(){ log('DOMNodeInserted'); }, false ); + testlib.addScript('log(\'head script #1\')', {}, document.getElementsByTagName('head')[0], false); + log('end script #1'); + </script> + + <script type="text/javascript"> + log( 'inline script #2' ); + var t = async_test() + + function test() { + assert_array_equals(eventOrder, ['inline script #1', 'head script #1', 'DOMNodeInserted', 'end script #1', 'inline script #2']); + t.done(); + } + onload = t.step_func(test) + </script> + +</body></html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/043.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/043.html new file mode 100644 index 0000000..bcfd90c --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/043.html
@@ -0,0 +1,31 @@ +<!DOCTYPE html> +<html><head> + <title> scheduler: DOM mutation events when adding external scripts: DOMNodeInserted </title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<body> + + <div id="log">FAILED (This TC requires JavaScript enabled)</div> + + <script>log('inline script #1'); + document.addEventListener( 'DOMNodeInserted', function(){ log('DOMNodeInserted'); }, false ); + testlib.addScript('', { src: 'scripts/include-1.js' }, document.getElementsByTagName('head')[0], false); + log('end script #1'); + </script> + + <script type="text/javascript"> + log( 'inline script #2' ); + var t = async_test() + + function test() { + assert_any(assert_array_equals, eventOrder, [['inline script #1', 'DOMNodeInserted', 'end script #1', 'external script #1', 'inline script #2'], + ['inline script #1', 'DOMNodeInserted', 'end script #1', 'inline script #2', 'external script #1']] + ); + t.done(); + } + onload = t.step_func(test) + </script> + +</body></html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/044.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/044.html new file mode 100644 index 0000000..8d41207 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/044.html
@@ -0,0 +1,28 @@ +<!DOCTYPE html> +<html><head> + <title> scheduler: DOM mutation events when adding scripts: DOMNodeInsertedIntoDocument </title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<body> + + <div id="log">FAILED (This TC requires JavaScript enabled)</div> + + <script>log('inline script #1'); + testlib.addScript('log(\'head script #1\')', {}, document.getElementsByTagName('head')[0], false, function(s){s.addEventListener( 'DOMNodeInsertedIntoDocument', function(){ log('DOMNodeInsertedIntoDocument'); }, false ); } ); + log('end script #1'); + </script> + + <script type="text/javascript"> + log( 'inline script #2' ); + var t = async_test() + + function test() { + assert_array_equals(eventOrder, ['inline script #1', 'head script #1', 'DOMNodeInsertedIntoDocument', 'end script #1', 'inline script #2']); + t.done(); + } + onload = t.step_func(test) + </script> + +</body></html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/045.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/045.html new file mode 100644 index 0000000..254e0d1 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/045.html
@@ -0,0 +1,28 @@ +<!DOCTYPE html> +<html><head> + <title> scheduler: DOM mutation events when adding external scripts: DOMNodeInsertedIntoDocument </title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<body> + + <div id="log">FAILED (This TC requires JavaScript enabled)</div> + + <script>log('inline script #1'); + testlib.addScript('', {src:'scripts/include-1.js'}, document.getElementsByTagName('head')[0], false, function(s){s.addEventListener( 'DOMNodeInsertedIntoDocument', function(){ log('DOMNodeInsertedIntoDocument'); }, false);}); + log('end script #1'); + </script> + + <script type="text/javascript"> + log( 'inline script #2' ); + var t = async_test() + + onload = t.step_func(function() { + assert_any(assert_array_equals, eventOrder, [['inline script #1', 'DOMNodeInsertedIntoDocument', 'end script #1', 'external script #1', 'inline script #2'], + ['inline script #1', 'DOMNodeInsertedIntoDocument', 'end script #1', 'inline script #2', 'external script #1']]); + t.done(); + }); + </script> + +</body></html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/046.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/046.html new file mode 100644 index 0000000..4f145d6 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/046.html
@@ -0,0 +1,27 @@ +<!DOCTYPE html> +<html><head> + <title> scheduler: no readystatechange events when adding external scripts </title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<body> + + <div id="log">FAILED (This TC requires JavaScript enabled)</div> + + <script>log('inline script #1'); + testlib.addScript('', {src:'scripts/include-1.js', onreadystatechange:function() {log( 'readystatechange '+ this.readyState );}}, document.getElementsByTagName('head')[0], false ); + log('end script #1'); + </script> + + <script type="text/javascript"> + var t = async_test() + + function test() { + assert_array_equals(eventOrder, ['inline script #1', 'end script #1', 'external script #1']); + t.done(); + } + onload = t.step_func(test); + </script> + +</body></html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/047.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/047.html new file mode 100644 index 0000000..88509e9 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/047.html
@@ -0,0 +1,28 @@ +<!DOCTYPE html> +<html><head> + <title> scheduler: adding and removing external script </title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<body> + + <div id="log">FAILED (This TC requires JavaScript enabled)</div> + + <script>log('inline script #1'); + var script=testlib.addScript('', {src:'scripts/include-1.js'}, document.getElementsByTagName('head')[0], false ); + script.parentNode.removeChild(script); + log('end script #1'); + </script> + + <script type="text/javascript"> + var t = async_test() + + function test() { + assert_array_equals(eventOrder, ['inline script #1', 'end script #1', 'external script #1']); + t.done(); + } + onload = t.step_func(test) + </script> + +</body></html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/048.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/048.html new file mode 100644 index 0000000..8879f035 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/048.html
@@ -0,0 +1,28 @@ +<!DOCTYPE html> +<html><head> + <title> scheduler: adding inline script which sets its own .src </title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<body> + + <div id="log">FAILED (This TC requires JavaScript enabled)</div> + + <script>log('inline script #1'); + var script=testlib.addScript('log(\'HEAD script start\');document.getElementsByTagName(\'script\')[0].src=\'scripts/include-1.js\';log(\'HEAD script end\')', {}, document.getElementsByTagName('head')[0], true ); + log('end script #1'); + </script> + + <script type="text/javascript"> + log( 'inline script #2' ); + var t = async_test() + + function test() { + assert_array_equals(eventOrder, ['inline script #1', 'HEAD script start', 'HEAD script end', 'end script #1', 'inline script #2']); + t.done(); + } + onload = t.step_func(test) + </script> + +</body></html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/049.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/049.html new file mode 100644 index 0000000..455a20c --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/049.html
@@ -0,0 +1,28 @@ +<!DOCTYPE html> +<html><head> + <title> scheduler: adding external script but removeAttribute( src ) before it runs</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<body> + + <div id="log">FAILED (This TC requires JavaScript enabled)</div> + + <script>log('inline script #1'); + var script=testlib.addScript('log(\'HEAD script\');', { src:'scripts/include-1.js' }, document.getElementsByTagName('head')[0], false ); + script.removeAttribute('src'); + log('end script #1'); + </script> + + <script type="text/javascript"> + var t = async_test() + + function test() { + assert_array_equals(eventOrder, ['inline script #1', 'end script #1', 'external script #1']); + t.done(); + } + onload = t.step_func(test) + </script> + +</body></html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/050.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/050.html new file mode 100644 index 0000000..c9e9902 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/050.html
@@ -0,0 +1,29 @@ +<!DOCTYPE html> +<html><head> + <title> scheduler: adding external script that removes all scripts from document</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<body> + + <div id="log">FAILED (This TC requires JavaScript enabled)</div> + + <script>log('inline script #1'); + var script=testlib.addScript('', { src:'scripts/include-5.js' }, document.getElementsByTagName('head')[0], false ); + // caching might affect whether the below script runs or not. Adding Math.random() makes the test a bit more predictable? :-p + var script=testlib.addScript('', { src:'scripts/include-1.js?pipe=trickle(d1)&'+Math.random() }, document.getElementsByTagName('head')[0], false ); + log('end script #1'); + </script> + <script src="scripts/include-2.js?pipe=trickle(d4)"></script> + <script type="text/javascript"> + var t = async_test() + + function test() { + assert_array_equals(eventOrder, ['inline script #1', 'end script #1', 'include-5 before removing scripts', 'include-5 after removing scripts', 'external script #1', 'external script #2']), + t.done(); + } + onload = t.step_func(test) + </script> + +</body></html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/051.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/051.html new file mode 100644 index 0000000..a0b67430 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/051.html
@@ -0,0 +1,29 @@ +<!DOCTYPE html> +<html><head> + <title> scheduler: interaction of parsing and script execution - script added through DOM</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<body> + + <div id="log">FAILED (This TC requires JavaScript enabled)</div> + + <script>log('inline script #1'); + testlib.addScript('', { src: 'scripts/count-script-tags.js' }, document.body, true); + log('end script #1'); + </script> + + <script type="text/javascript"> + log( 'inline script #2' ); + var t = async_test() + + function test() { + assert_any(assert_array_equals, eventOrder, [['inline script #1', 'end script #1', 'script tags in DOM: 5', 'inline script #2'], + ['inline script #1', 'end script #1', 'inline script #2', 'script tags in DOM: 6']]); + t.done(); + } + onload = function(){setTimeout(t.step_func(test), 100); } + </script> + +</body></html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/052.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/052.html new file mode 100644 index 0000000..21a151c --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/052.html
@@ -0,0 +1,26 @@ +<!DOCTYPE html> +<html><head> + <title> scheduler: interaction of parsing and script execution - external script </title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<body> + + <div id="log">FAILED (This TC requires JavaScript enabled)</div> + + <script src="scripts/count-script-tags.js"></script> + + <script type="text/javascript"> + log( 'inline script #2' ); + var t = async_test() + + function test() { + assert_array_equals(eventOrder, ['script tags in DOM: 4', 'inline script #2']); + t.done(); + } + onload = t.step_func(function(){setTimeout(t.step_func(test), 100); }) + </script> + +</body> +</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/053.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/053.html new file mode 100644 index 0000000..81019743 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/053.html
@@ -0,0 +1,31 @@ +<!DOCTYPE html> +<html><head> + <title> scheduler: adding external script that removes itself from document when loading</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<body> + + <div id="log">FAILED (This TC requires JavaScript enabled)</div> + + <script>log('inline script #1'); + var script=testlib.addScript('', { src:'scripts/include-1.js', onload:function() {this.parentNode.removeChild(this);log('removed ' + this.localName);} }, document.getElementsByTagName('body')[0], true ); + log('end script #1'); + </script> + <script src="scripts/include-2.js"></script> + <script type="text/javascript"> + log( 'inline script #2' ); + var t = async_test() + + function test() { + assert_any(assert_array_equals, eventOrder, [['inline script #1', 'end script #1', 'external script #1', 'removed script', 'external script #2', 'inline script #2'], + ['inline script #1', 'end script #1', 'external script #2', 'external script #1', 'removed script', 'inline script #2'], + ['inline script #1', 'end script #1', 'external script #2', 'inline script #2', 'external script #1', 'removed script']] + ); + t.done(); + } + onload = t.step_func(test) + </script> + +</body></html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/054.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/054.html new file mode 100644 index 0000000..29ede234 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/054.html
@@ -0,0 +1,33 @@ +<!DOCTYPE html> +<html><head> + <title> scheduler: removing newly inserted script from DOMNodeInserted handler - external script </title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<body> + + <div id="log">FAILED (This TC requires JavaScript enabled)</div> + + <script>log('inline script #1'); + document.addEventListener( 'DOMNodeInserted', function listener(e){ + log('DOMNodeInserted event'); + e.target.parentNode.removeChild(e.target); + document.removeEventListener('DOMNodeInserted', listener); + }, false ); + var script=testlib.addScript('', { src:'scripts/include-1.js?'+Math.random() }, document.getElementsByTagName('body')[0], true ); + log('end script #1'); + </script> + <script type="text/javascript"> + log( 'inline script #2' ); + var t = async_test() + + function test() { + assert_any(assert_array_equals, eventOrder, [['inline script #1', 'DOMNodeInserted event', 'end script #1', 'inline script #2', 'external script #1'], + ['inline script #1', 'DOMNodeInserted event', 'end script #1', 'external script #1', 'inline script #2']]); + t.done(); + } + onload = t.step_func(test); + </script> + +</body></html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/055.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/055.html new file mode 100644 index 0000000..c837d78 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/055.html
@@ -0,0 +1,32 @@ +<!DOCTYPE html> +<html><head> + <title> scheduler: removing newly inserted script from DOMNodeInserted handler - inline script </title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<body> + + <div id="log">FAILED (This TC requires JavaScript enabled)</div> + + <script>log('inline script #1'); + document.addEventListener( 'DOMNodeInserted', function listener(e){ + log('DOMNodeInserted event'); + e.target.parentNode.removeChild(e.target); + document.removeEventListener('DOMNodeInserted', listener); + }, false ); + var script=testlib.addScript('log(\'added script\')', { }, document.getElementsByTagName('body')[0], true ); + log('end script #1'); + </script> + <script type="text/javascript"> + log( 'inline script #2' ); + var t = async_test() + + function test() { + assert_array_equals(eventOrder, ['inline script #1', 'added script', 'DOMNodeInserted event', 'end script #1', 'inline script #2']); + t.done(); + } + onload = t.step_func(test); + </script> + +</body></html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/056.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/056.html new file mode 100644 index 0000000..e2d08680 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/056.html
@@ -0,0 +1,30 @@ +<!DOCTYPE html> +<html><head> + <title> scheduler: appending code to initially empty SCRIPT tag in DOM </title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> + <script></script> +</head> +<body> + + <div id="log">FAILED (This TC requires JavaScript enabled)</div> + + <script>log('inline script #1'); + var script=document.getElementsByTagName('script')[3]; + script.appendChild( document.createTextNode('log("injected script code");') ); + log('end script #1'); + </script> + <script type="text/javascript"> + log( 'inline script #2' ); + var t = async_test() + + function test() { + // Test asserts the injected script should run + assert_array_equals(eventOrder, ['inline script #1', 'injected script code', 'end script #1', 'inline script #2']); + t.done(); + } + onload = t.step_func(test); + </script> + +</body></html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/057.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/057.html new file mode 100644 index 0000000..4dc8e13 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/057.html
@@ -0,0 +1,31 @@ +<!DOCTYPE html> +<html><head> + <title> scheduler: appending code to initially non-empty SCRIPT tag in DOM (whitespace only) </title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> + <script> + </script> +</head> +<body> + + <div id="log">FAILED (This TC requires JavaScript enabled)</div> + + <script>log('inline script #1'); + var script=document.getElementsByTagName('script')[3]; + script.appendChild( document.createTextNode('log("injected script code");') ); + log('end script #1'); + </script> + <script type="text/javascript"> + log( 'inline script #2' ); + var t = async_test() + + function test() { + assert_array_equals(eventOrder, ['inline script #1', 'end script #1', 'inline script #2']); + t.done(); + } + onload = t.step_func(test); + </script> + +</body> +</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/058.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/058.html new file mode 100644 index 0000000..15deb78 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/058.html
@@ -0,0 +1,29 @@ +<!DOCTYPE html> +<html><head> + <title> scheduler: appending code to initially non-empty SCRIPT tag in DOM (comment only) </title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> + <script>/**/</script> +</head> +<body> + + <div id="log">FAILED (This TC requires JavaScript enabled)</div> + + <script>log('inline script #1'); + var script=document.getElementsByTagName('script')[3]; + script.appendChild( document.createTextNode('log("injected script code");') ); + log('end script #1'); + </script> + <script type="text/javascript"> + log( 'inline script #2' ); + var t = async_test() + + function test() { + assert_array_equals(eventOrder, ['inline script #1', 'end script #1', 'inline script #2']); + t.done(); + } + onload = t.step_func(test); + </script> + +</body></html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/059.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/059.html new file mode 100644 index 0000000..b3a3436 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/059.html
@@ -0,0 +1,30 @@ +<!DOCTYPE html> +<html><head> + <title> scheduler: appending code to initially non-empty SCRIPT tag in DOM after removing its initial child </title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> + <script>/**/</script> +</head> +<body> + + <div id="log">FAILED (This TC requires JavaScript enabled)</div> + + <script>log('inline script #1'); + var script=document.getElementsByTagName('script')[3]; + script.removeChild(script.firstChild); + script.appendChild( document.createTextNode('log("injected script code");') ); + log('end script #1'); + </script> + <script type="text/javascript"> + log( 'inline script #2' ); + var t = async_test() + + function test() { + assert_array_equals(eventOrder, ['inline script #1', 'end script #1', 'inline script #2']); + t.done(); + } + onload = t.step_func(test); + </script> + +</body></html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/060.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/060.html new file mode 100644 index 0000000..905dfe2 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/060.html
@@ -0,0 +1,32 @@ +<!DOCTYPE html> +<html><head> + <title> scheduler: appending code to initially non-empty SCRIPT tag in DOM after setting textContent/innerHTML</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> + <script>log('HEAD script');</script> +</head> +<body> + + <div id="log">FAILED (This TC requires JavaScript enabled)</div> + + <script>log('inline script #1'); + var script=document.getElementsByTagName('script')[3]; + script.innerHTML=''; + script.appendChild( document.createTextNode('log("injected script code 1");') ); + script.textContent=''; + script.appendChild( document.createTextNode('log("injected script code 2");') ); + log('end script #1'); + </script> + <script type="text/javascript"> + log( 'inline script #2' ); + var t = async_test() + + function test() { + assert_array_equals(eventOrder, ['HEAD script', 'inline script #1', 'end script #1', 'inline script #2']); + t.done(); + } + onload = t.step_func(test); + </script> + +</body></html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/061.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/061.html new file mode 100644 index 0000000..9950b1c --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/061.html
@@ -0,0 +1,29 @@ +<!DOCTYPE html> +<html><head> + <title> scheduler: cloneNode and script execution</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> + <script>log('HEAD script');</script> +</head> +<body> + + <div id="log">FAILED (This TC requires JavaScript enabled)</div> + + <script>log('inline script #1'); + var script=document.getElementsByTagName('script')[3]; + document.body.appendChild( script.cloneNode(true) ); + log('end script #1'); + </script> + <script type="text/javascript"> + log( 'inline script #2' ); + var t = async_test() + + function test() { + assert_array_equals(eventOrder, ['HEAD script', 'inline script #1', 'end script #1', 'inline script #2']); + t.done(); + } + onload = t.step_func(test); + </script> + +</body></html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/062.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/062.html new file mode 100644 index 0000000..c5e0ee2 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/062.html
@@ -0,0 +1,29 @@ +<!DOCTYPE html> +<html><head> + <title> scheduler: cloneNode (shallow) and script execution</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> + <script>log('HEAD script');</script> +</head> +<body> + + <div id="log">FAILED (This TC requires JavaScript enabled)</div> + + <script>log('inline script #1'); + var script=document.getElementsByTagName('script')[3]; + document.body.appendChild( script.cloneNode(false) ).appendChild(document.createTextNode('log("clone");')); + log('end script #1'); + </script> + <script type="text/javascript"> + log( 'inline script #2' ); + var t = async_test() + + function test() { + assert_array_equals(eventOrder, ['HEAD script', 'inline script #1', 'end script #1', 'inline script #2']); + t.done(); + } + onload = t.step_func(test); + </script> + +</body></html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/063.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/063.html new file mode 100644 index 0000000..6824074a --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/063.html
@@ -0,0 +1,30 @@ +<!DOCTYPE html> +<html><head> + <title> scheduler: cloneNode (deep) of the currently executing script </title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> + <script>log('HEAD script'); + if( !window.already_cloned ){ + window.already_cloned=true; + var script=document.getElementsByTagName('script')[3]; + document.getElementsByTagName('head')[0].appendChild( script.cloneNode(true) ); + } + </script> +</head> +<body> + + <div id="log">FAILED (This TC requires JavaScript enabled)</div> + + <script type="text/javascript"> + log( 'inline script #2' ); + var t = async_test() + + function test() { + assert_array_equals(eventOrder, ['HEAD script', 'inline script #2']); + t.done(); + } + onload = t.step_func(test); + </script> + +</body></html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/064.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/064.html new file mode 100644 index 0000000..ceedc3da --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/064.html
@@ -0,0 +1,29 @@ +<!DOCTYPE html> +<html><head> + <title> scheduler: cloneNode with external script</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> + <script src="scripts/include-1.js"></script> +</head> +<body> + + <div id="log">FAILED (This TC requires JavaScript enabled)</div> + + <script>log('inline script #1'); + var script=document.getElementsByTagName('script')[3]; + document.body.appendChild( script.cloneNode(true) ); + log('end script #1'); + </script> + <script type="text/javascript"> + log( 'inline script #2' ); + var t = async_test() + + function test() { + assert_array_equals(eventOrder, ['external script #1', 'inline script #1', 'end script #1', 'inline script #2']); + t.done(); + } + onload = t.step_func(test); + </script> + +</body></html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/065.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/065.html new file mode 100644 index 0000000..5859dc9 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/065.html
@@ -0,0 +1,30 @@ +<!DOCTYPE html> +<html><head> + <title> scheduler: cloneNode with external script, changed .src</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> + <script src="scripts/include-1.js"></script> +</head> +<body> + + <div id="log">FAILED (This TC requires JavaScript enabled)</div> + + <script>log('inline script #1'); + var script=document.getElementsByTagName('script')[3].cloneNode(true); + script.src='scripts/include-2.js' + document.body.appendChild( script ); + log('end script #1'); + </script> + <script type="text/javascript"> + log( 'inline script #2' ); + var t = async_test() + + function test() { + assert_array_equals(eventOrder, ['external script #1', 'inline script #1', 'end script #1', 'inline script #2']); + t.done(); + } + onload = t.step_func(test); + </script> + +</body></html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/066.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/066.html new file mode 100644 index 0000000..a8e346df --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/066.html
@@ -0,0 +1,31 @@ +<!DOCTYPE html> +<html><head> + <title> scheduler: cloneNode with external script, removing .src and adding content</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> + <script src="scripts/include-1.js"></script> +</head> +<body> + + <div id="log">FAILED (This TC requires JavaScript enabled)</div> + + <script>log('inline script #1'); + var script=document.getElementsByTagName('script')[3].cloneNode(true); + script.removeAttribute('src'); + script.appendChild(document.createTextNode( 'log("cloned script");' )); + document.body.appendChild( script ); + log('end script #1'); + </script> + <script type="text/javascript"> + log( 'inline script #2' ); + var t = async_test() + + function test() { + assert_array_equals(eventOrder, ['external script #1', 'inline script #1', 'end script #1', 'inline script #2']); + t.done(); + } + onload = t.step_func(test); + </script> + +</body></html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/067.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/067.html new file mode 100644 index 0000000..7be0fd0 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/067.html
@@ -0,0 +1,38 @@ +<!DOCTYPE html> +<html><head> + <title> scheduler: is a script with syntax error marked as "has run"? </title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> + <script>setup({allow_uncaught_exception:true}) + var t = async_test() + </script> + <script> + log(This script will never run.. + </script> +</head> +<body> + + <div id="log">FAILED (This TC requires JavaScript enabled)</div> + + <script>t.step(function() { + log('inline script #1'); + var script=document.getElementsByTagName('script')[3].cloneNode(true); + script.removeChild(script.firstChild); + script.appendChild(document.createTextNode( 'log("cloned script");' )); + document.body.appendChild( script ); + log('end script #1'); + }) + </script> + <script type="text/javascript"> + t.step(function() { + log( 'inline script #2' ); + }); + function test() { + assert_array_equals(eventOrder, ['inline script #1', 'end script #1', 'inline script #2']); + t.done(); + } + onload = t.step_func(test); +</script> + +</body></html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/068.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/068.html new file mode 100644 index 0000000..a58158b --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/068.html
@@ -0,0 +1,31 @@ +<!DOCTYPE html> +<html><head> + <title> scheduler: external script and parsing of markup added with document.write </title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> + +</head> +<body> + + <div id="log">FAILED (This TC requires JavaScript enabled)</div> + + <script> + log('inline script #1'); + document.write('<script src="scripts/find-foo.js">log(\'inline code in external script (not expected to run!!)\')<\/script>' + '<div id="foo"></div>'); + log('end script #1'); + + var t = async_test() + + + function test() { + if(!window.findFooLoaded) { + return setTimeout(t.step_func(test),200); + } + assert_array_equals(eventOrder, ['inline script #1', 'end script #1', 'found #foo element: NO']); + t.done(); + } + onload = t.step_func(test) + </script> + +</body></html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/069.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/069.html new file mode 100644 index 0000000..4d4aed2 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/069.html
@@ -0,0 +1,33 @@ +<!DOCTYPE html> +<html><head> + <title>scheduler: external files added through DOM should not block further parsing while loading</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> + <script> + testlib.addScript('',{src:'scripts/find-body.js?pipe=trickle(d1)'},document.getElementsByTagName('head')[0], true ); + </script> +</head> +<body> + <script> + testlib.addScript('', {src:'scripts/find-foo.js?pipe=trickle(d1)'}, document.getElementsByTagName('head')[0], true); + </script> + <div id="log">FAILED (This TC requires JavaScript enabled)</div> + <p><span id="foo"></span></p> + + <script type="text/javascript"> + var t = async_test() + + function test() { + if(!(window.findFooLoaded && window.findBodyLoaded)) { + return setTimeout(t.step_func(test), 200); + } + assert_any(assert_array_equals, eventOrder, + [['document.body: <BODY>', 'found #foo element: YES'], + ['found #foo element: YES', 'document.body: <BODY>']]); + t.done(); + } + onload = t.step_func(test) + </script> + +</body></html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/070.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/070.html new file mode 100644 index 0000000..4b82a9e --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/070.html
@@ -0,0 +1,48 @@ +<!DOCTYPE html> +<html><head> + <title> scheduler: document.write into IFRAME a script that adds a SCRIPT through DOM</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> + +</head> +<body> + + <div id="log">FAILED (This TC requires JavaScript enabled)</div> + + <iframe></iframe> + + <script type="text/javascript"> + var doc = document.getElementsByTagName('iframe')[0].contentDocument; + doc.open(); + + log("calling document.write"); + doc.write('<script>top.log("inline script #1");'+ + 'var s=document.createElement("script");'+ + 's.src="scripts/include-6.js?'+new Date().getTime()+'";'+ + 'document.getElementsByTagName("head")[0].appendChild(s);'+ + '<\/script>'+ + '<div id="foo"></div>'+ + '<script>top.log("inline script #2");<\/script>' + ); + + log("calling document.close"); + doc.close(); + + var t = async_test() + + + function test() { + if(!window.include6Loaded) { + return setTimeout(t.step_func(test),200); + } + assert_array_equals(eventOrder, ['calling document.write', 'inline script #1', 'inline script #2', 'calling document.close', 'external script (#foo found? YES)']); + t.done(); + } + + onload = t.step_func(test) + </script> +</head> + +</body> +</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/071.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/071.html new file mode 100644 index 0000000..802c4a8c --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/071.html
@@ -0,0 +1,55 @@ +<!DOCTYPE html> +<html><head> + <title> scheduler: document.write several scripts into IFRAME </title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> + +</head> +<body> + + <div id="log">FAILED (This TC requires JavaScript enabled)</div> + + <iframe style="width:1px;height:1px"></iframe> + + <script type="text/javascript"> + var doc = document.getElementsByTagName('iframe')[0].contentDocument; + doc.open(); + + var html = '<html><head><title>test</title></head>'+ + '<script>top.log("inline script #1");'+ + '<\/script>'+ + /* made url unique because Chrome will change + order depending on file cached status */ + '<script src="scripts/include-6.js?'+new Date().getTime()+'"><\/script>'+ + '</head>'+ + '<body>'+ + '<div id="foo"></div>'+ + '</body></html>'+ + '<script>top.log("inline script #2");<\/script>'; + log("calling document.write"); + doc.write(html); + + log("calling document.close"); + doc.close(); + + var t = async_test() + + + function test() { + if( !window.include6Loaded )return setTimeout(t.step_func(test),200); // try checking again if external script didn't run yet + assert_array_equals(eventOrder, ['calling document.write', + 'inline script #1', + 'calling document.close', + 'external script (#foo found? NO)', + 'inline script #2' + ]); + t.done(); + } + + onload = t.step_func(test) + </script> +</head> + +</body> +</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/072.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/072.html new file mode 100644 index 0000000..e502a357 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/072.html
@@ -0,0 +1,50 @@ +<!DOCTYPE html> +<html><head> + <title> scheduler: document.write into IFRAME a script that creates new inline script in parent </title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> + +</head> +<body> + + <div id="log">FAILED (This TC requires JavaScript enabled)</div> + + <iframe style="width:1px;height:1px"></iframe> + + <script type="text/javascript"> + var doc = document.getElementsByTagName('iframe')[0].contentDocument; + doc.open(); + + var html = '<html><head><title>test</title></head>'+ + '<script>top.log("inline script #1");'+ + '<\/script>'+ + '</head>'+ + '<body>'+ + '<div id="foo"></div>'+ + '</body></html>'+ + '<script>top.testlib.addScript( \'log("inline script added to parent")\', null, top.document.body, true )<\/script>'; + log("calling document.write"); + doc.write(html); + + log("calling document.close"); + doc.close(); + + var t = async_test() + + + function test() { + assert_array_equals(eventOrder, ['calling document.write', + 'inline script #1', + 'inline script added to parent', + 'calling document.close', + ]); + t.done(); + } + + onload = t.step_func(test) + </script> +</head> + +</body> +</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/073.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/073.html new file mode 100644 index 0000000..6f65c4a --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/073.html
@@ -0,0 +1,52 @@ +<!DOCTYPE html> +<html><head> + <title> scheduler: document.write into IFRAME a script that creates new external script in parent </title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> + +</head> +<body> + + <div id="log">FAILED (This TC requires JavaScript enabled)</div> + + <iframe style="width:1px;height:1px"></iframe> + + <script type="text/javascript"> + var doc = document.getElementsByTagName('iframe')[0].contentDocument; + doc.open(); + + var html = '<html><head><title>test</title></head>'+ + '<script>top.log("inline script #1");'+ + '<\/script>'+ + '</head>'+ + '<body>'+ + '<div id="foo"></div>'+ + '</body></html>'+ + '<script>top.testlib.addScript( \'\', { src:\'scripts/include-1.js\' }, top.document.body, true )<\/script>'; + log("calling document.write"); + doc.write(html); + + log("calling document.close"); + doc.close(); + + var t = async_test() + + + function test() { + + assert_array_equals(eventOrder, ['calling document.write', + 'inline script #1', + 'calling document.close', + 'external script #1' + ]); + + t.done(); + } + + onload = t.step_func(test) + </script> +</head> + +</body> +</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/074.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/074.html new file mode 100644 index 0000000..70d7b88 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/074.html
@@ -0,0 +1,49 @@ +<!DOCTYPE html> +<html><head> + <title> scheduler: document.write into IFRAME a script that creates new inline script in parent that again adds script to IFRAME </title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<body> + + <div id="log">FAILED (This TC requires JavaScript enabled)</div> + + <iframe style="width:1px;height:1px"></iframe> + + <script type="text/javascript"> + var doc = document.getElementsByTagName('iframe')[0].contentDocument; + doc.open(); + var str1=''; + var html = '<html><head><title>test</title></head>'+ + '<script>top.log("inline script #1");'+ + '<\/script>'+ + '</head>'+ + '<body>'+ + '<script>top.testlib.addScript( \'top.log("inline script added to parent");top.doc.write( "<script>top.log(\\\\"inline script added to iframe\\\\")<\\\/script>");\', null, top.document.body, true ) <\/script>'+ + '</body></html>'; + log("calling document.write"); + doc.write(html); + + log("calling document.close"); + doc.close(); + + var t = async_test() + + + function test() { + assert_array_equals(eventOrder, ['calling document.write', + 'inline script #1', + 'inline script added to parent', + 'inline script added to iframe', + 'calling document.close', + ]); + t.done(); + } + + onload = t.step_func(test) + </script> +</head> + +</body> +</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/075.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/075.html new file mode 100644 index 0000000..40ec9bbb --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/075.html
@@ -0,0 +1,42 @@ +<!DOCTYPE html> +<html> + <head> + <title>dispatchEvent from child frame during document.write :-o </title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> + </head> + <body onclick="log('click event')"> + <div id="log">FAILED (This TC requires JavaScript enabled)</div> + + <iframe></iframe> + <script> + var doc = document.getElementsByTagName("iframe")[0].contentDocument; + doc.open("text/html"); + doc.write('<html><head><title>event dispatcher</title></head><body>Before script<script>top.log("inline script before event");var ev = parent.document.createEvent("MouseEvents");ev.initMouseEvent("click", true, false, null, 0, 0, 0, 0, 0, false, false, false, false, 0, null);parent.document.body.dispatchEvent(ev);top.log("inline script after event");</sc'+'ript> After script</body>'); + log( 'end main script' ); + + + </script> + +<script> + var t = async_test() + + function test() { + if(test.ran)return; test.ran=true; + + assert_array_equals(eventOrder, ['inline script before event', + 'click event', + 'inline script after event', + 'end main script' + ]); + doc.close(); + t.done(); +} + + onload = t.step_func(test) + /* onload doesn't fire in this test, a fallback.. */ + setTimeout(t.step_func(test), 800 ); +</script> + </body> +</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/076.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/076.html new file mode 100644 index 0000000..2b8b692 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/076.html
@@ -0,0 +1,32 @@ +<!DOCTYPE html> +<html><head> + <title> scheduler: adding and removing external and inline scripts </title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<body> + + <div id="log">FAILED (This TC requires JavaScript enabled)</div> + + <script>log('inline script #1'); + var script=testlib.addScript('', {src:'scripts/include-1.js', onload:function(e){ e.target.parentNode.removeChild(e.target); }}, document.getElementsByTagName('head')[0], false ); + var script=testlib.addScript( 'log( "dynamically added inline script" )', null, document.getElementsByTagName('head')[0], false ); + script.parentNode.removeChild(script); + log('end script #1'); + </script> + + <script type="text/javascript"> + log( 'inline script #2' ); + var t = async_test() + + function test() { + } + onload = t.step_func(function() { + assert_any(assert_array_equals, eventOrder, [['inline script #1', 'dynamically added inline script', 'end script #1', 'external script #1', 'inline script #2'], + ['inline script #1', 'dynamically added inline script', 'end script #1', 'inline script #2', 'external script #1']]); + t.done(); + }) + </script> + +</body></html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/077.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/077.html new file mode 100644 index 0000000..a7a5942 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/077.html
@@ -0,0 +1,41 @@ +<!DOCTYPE html> +<html> + <head> + <title> adding several types of scripts through the DOM and removing some of them confuses scheduler </title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> + <script type="text/javascript"> + var head = document.getElementsByTagName('head')[0]; + function createScript(url, contents) { + props = {}; + if (url) { + props.src = url; + } + return testlib.addScript(contents, props, head, false); + } + var t = async_test() + + function test() { + var script = createScript('data:text\/javascript,log("Script #1 ran")'); + var script2 = createScript('','log("Script #2 ran")'); + if(script2) { + head.removeChild(script2); + } + var script3 = createScript('data:text\/javascript, log("Script #3 ran"); createScript(\'\', \'log("Script #4 ran")\')'); + if(script3) { + head.removeChild(script3); + } + setTimeout(t.step_func(function(){ + assert_array_equals(eventOrder, ['Script #2 ran', 'Script #1 ran', 'Script #3 ran','Script #4 ran']); + t.done(); + }), 400); + + }; + onload = t.step_func(test) + </script> + </head> + <body> + <div id="log">FAILED (This TC requires JavaScript enabled)</div> + </body> +</html*>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/078.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/078.html new file mode 100644 index 0000000..4d42b724 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/078.html
@@ -0,0 +1,43 @@ +<!DOCTYPE html> +<html> +<head> +<title> adding several types of scripts through the DOM and removing some of them confuses scheduler (slow-loading scripts) </title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="testlib/testlib.js"></script> +<script type="text/javascript"> + setup({ explicit_done: true }); + var head = document.getElementsByTagName('head')[0]; + function createScript(url, contents) { + props = {}; + if (url) { + props.src = url; + } + return testlib.addScript(contents, props, head, false); + } + var t = async_test(undefined, { timeout: 10000 }) + + function test() { + document.getElementById("log").textContent = "Please wait..." + var url = 'scripts/include-1.js?pipe=trickle(d1)'; + var script = createScript(url); + var script2 = createScript('', 'log("Script #2 ran")'); + head.removeChild(script2); + var url = 'scripts/include-2.js?pipe=trickle(d2)'; + var script3 = createScript(url); + head.removeChild(script3); + + setTimeout(t.step_func(function () { + done(); + assert_array_equals(eventOrder, ['Script #2 ran', 'external script #1', 'external script #2']); + t.done(); + }), 5500); + + }; + onload = t.step_func(test) +</script> +</head> +<body> +<div id="log">FAILED (This TC requires JavaScript enabled)</div> +</body> +</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/079.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/079.html new file mode 100644 index 0000000..8d684ce --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/079.html
@@ -0,0 +1,28 @@ +<!DOCTYPE html> +<html> +<head> +<title> setting location to javascript URL from event handler </title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="testlib/testlib.js"></script> +<script type="text/javascript"> +log('inline script #1'); +var t = async_test() + +onload = t.step_func(function() { + log('onload handler'); + document.getElementById("log").textContent = 'please wait...'; + window.location='javascript:log("javascript: URL")'; + setTimeout(t.step_func(function(){ + log('timeout'); + assert_array_equals(eventOrder, ['inline script #1', 'onload handler', 'onload ends', 'javascript: URL', 'timeout']); + t.done(); + }), 200); + log('onload ends'); +}); +</script> +</head> +<body> +<div id="log">FAILED (This TC requires JavaScript enabled)</div> +</body> +</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/080-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/080-expected.txt new file mode 100644 index 0000000..1aec3697 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/080-expected.txt
@@ -0,0 +1,4 @@ +This is a testharness.js-based test. +FAIL scheduler: IFRAMEs added with DOM (appendChild), javascript: URL assert_array_equals: property 1, expected "end script #1" but got "JS URL" +Harness: the test ran to completion. +
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/080.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/080.html new file mode 100644 index 0000000..bd983355 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/080.html
@@ -0,0 +1,30 @@ +<!DOCTYPE html> +<html><head> + <title>scheduler: IFRAMEs added with DOM (appendChild), javascript: URL</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<body> + + <div id="log">FAILED (This TC requires JavaScript enabled)</div> + <div></div> + <script>log('inline script #1'); + var iframe=document.createElement('iframe'); + iframe.src='javascript:parent.log(\'JS URL\');\'<html><script>parent.log(\\\'frame script\\\')<\/script></html>\''; + document.getElementsByTagName('div')[1].appendChild(iframe); + log('end script #1'); + </script> + + <script type="text/javascript"> + log( 'inline script #2' ); + var t = async_test() + + function test() { + assert_array_equals(eventOrder, ['inline script #1', 'end script #1', 'inline script #2', 'JS URL', 'frame script']); + t.done(); + } + onload = t.step_func(function(){setTimeout(t.step_func(test), 400);}) + </script> + +</body></html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/081.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/081.html new file mode 100644 index 0000000..ad0ab92 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/081.html
@@ -0,0 +1,31 @@ +<!DOCTYPE html> +<html><head> + <title> scheduler: slow loading external script added with DOM (appendChild)</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<body> + + <div id="log">FAILED (This TC requires JavaScript enabled)</div> + <div></div> + <script> + var t = async_test(undefined, {timeout:5000}) + log('inline script #1'); + testlib.addScript('', { src:'scripts/include-1.js?pipe=trickle(d1)&'+Math.random() }, document.getElementsByTagName('head')[0], false ); + log('end script #1'); + </script> + <script src="scripts/include-2.js"></script> + <script> + log( 'inline script #2' ); + + function test() { + assert_array_equals(eventOrder, ['inline script #1', 'end script #1', 'external script #2', 'inline script #2', 'external script #1']); + t.done(); + } + onload = t.step_func(function() { + setTimeout(t.step_func(test), 12); + }); + </script> + +</body></html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/082.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/082.html new file mode 100644 index 0000000..c6f112e --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/082.html
@@ -0,0 +1,34 @@ +<!DOCTYPE html> +<html><head> + <title> scheduler: multiple slow loading external scripts added with DOM (appendChild)</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<body> + + <div id="log">FAILED (This TC requires JavaScript enabled)</div> + <div></div> + <script> + + log('inline script #1'); + function scriptLoadListener(){ + log( 'load on '+this.src.match( /include-\d\.js/ ) ); + } + var script=testlib.addScript('', { src:'scripts/include-1.js?pipe=trickle(d1)&' + Math.random(), onload:scriptLoadListener }, document.getElementsByTagName('head')[0], false ); + var script=testlib.addScript('', { src:'scripts/include-2.js?pipe=trickle(d3)&' + Math.random(), onload:scriptLoadListener }, document.getElementsByTagName('head')[0], false ); + var script=testlib.addScript('', { src:'scripts/include-7.js?pipe=trickle(d2)&' + Math.random() , onload:scriptLoadListener }, document.getElementsByTagName('head')[0], false ); + log('end script #1'); + </script> + <script type="text/javascript"> + log('inline script #2'); + var t = async_test(undefined, {timeout:10000}) + + function test() { + assert_array_equals(eventOrder, ['inline script #1', 'end script #1', 'inline script #2', 'external script #1', 'load on include-1.js', 'external script #7', 'load on include-7.js', 'external script #2', 'load on include-2.js']); + t.done(); + } + onload = function() {setTimeout(t.step_func(test), 12)}; + </script> + +</body></html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/083-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/083-expected.txt new file mode 100644 index 0000000..5f6926c --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/083-expected.txt
@@ -0,0 +1,5 @@ +This is a testharness.js-based test. +Harness Error. harness_status.status = 1 , harness_status.message = Uncaught TypeError: Cannot read property 'log' of null +FAIL scheduler: event listener defined by script in a document in history assert_array_equals: lengths differ, expected 5 got 6 +Harness: the test ran to completion. +
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/083.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/083.html new file mode 100644 index 0000000..2ac0015c --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/083.html
@@ -0,0 +1,48 @@ +<!DOCTYPE html> +<html><head> + <title> scheduler: event listener defined by script in a document in history</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<body> + + <div id="log">FAILED (This TC requires JavaScript enabled)</div> + <iframe src="about:blank"></iframe> + <script> + log('inline script #1'); + function fireFooEvent(){ + var evt=document.createEvent('Event'); + evt.initEvent('foo', true, true); + document.dispatchEvent(evt); + } + var doc = frames[0].document; + doc.open('text/html'); + doc.write('<script>top.log("IFRAME script");top.document.addEventListener("foo", function(e){ top.log("event: "+e.type); }, false)<\/script>'); + log('end script #1'); + </script> + <script> + fireFooEvent(); + frames[0].location='about:blank'; // returning to about:blank should de-activate document that defined event listener..? + </script> + <script> + fireFooEvent(); + </script> + <script type="text/javascript"> + log( 'inline script #2' ); + var t = async_test() + + function test() { + assert_equals(frames[0].location.toString(), "about:blank"); + assert_array_equals(eventOrder, ['inline script #1', + 'IFRAME script', + 'end script #1', + 'event: foo', + 'inline script #2' + ]); + t.done(); + } + onload = function() {setTimeout(t.step_func(function() {fireFooEvent(); test()}), 80)}; + </script> + +</body></html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/084-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/084-expected.txt new file mode 100644 index 0000000..bfce201 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/084-expected.txt
@@ -0,0 +1,4 @@ +This is a testharness.js-based test. +FAIL scheduler: event listener defined by script in a removed IFRAME Uncaught TypeError: Cannot read property 'log' of null +Harness: the test ran to completion. +
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/084.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/084.html new file mode 100644 index 0000000..3027fa1 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/084.html
@@ -0,0 +1,47 @@ +<!DOCTYPE html> +<html><head> + <title> scheduler: event listener defined by script in a removed IFRAME</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<body> + + <div id="log">FAILED (This TC requires JavaScript enabled)</div> + <iframe src="about:blank"></iframe> + <script> + log('inline script #1'); + function fireFooEvent(){ + var evt=document.createEvent('Event'); + evt.initEvent('foo', true, true); + document.dispatchEvent(evt); + } + var doc=frames[0].document; + doc.open( 'text/html' ); + doc.write( '<script>top.log("IFRAME script");top.document.addEventListener("foo", function(e){ top.log("event: "+e.type); }, false)<\/script>' ); + log('end script #1'); + </script> + <script> + fireFooEvent(); + frames[0].frameElement.parentNode.removeChild( frames[0].frameElement ); // removing the IFRAME should de-activate document that defined event listener..? + </script> + <script> + fireFooEvent(); + </script> + <script type="text/javascript"> + log( 'inline script #2' ); + var t = async_test() + + function test() { + assert_array_equals(eventOrder, ['inline script #1', + 'IFRAME script', + 'end script #1', + 'event: foo', + 'inline script #2' + ]); + t.done(); + } + onload = t.step_func(test) + </script> + +</body></html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/085.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/085.html new file mode 100644 index 0000000..6577527 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/085.html
@@ -0,0 +1,24 @@ +<!DOCTYPE html> +<html><head> + <title> scheduler: async script and slow-loading defer script</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<body> + + <div id="log">FAILED (This TC requires JavaScript enabled)</div> + + <script src="scripts/include-1.js?pipe=trickle(d1)" defer></script> + <script src="scripts/include-2.js" async></script> + + <script type="text/javascript"> + var t = async_test(); + function test() { + assert_array_equals(eventOrder, ['external script #2', 'external script #1']); + t.done(); + } + onload = t.step_func(test); + </script> + +</body></html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/086.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/086.html new file mode 100644 index 0000000..4ccd16d --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/086.html
@@ -0,0 +1,24 @@ +<!DOCTYPE html> +<html><head> + <title> scheduler: async script and slow-loading async script</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<body> + + <div id="log">FAILED (This TC requires JavaScript enabled)</div> + + <script src="scripts/include-1.js?pipe=trickle(d2)" async></script> + <script src="scripts/include-2.js" async></script> + + <script type="text/javascript"> + var t = async_test(); + function test() { + assert_array_equals(eventOrder, ['external script #2', 'external script #1']); + t.done(); + } + onload = t.step_func(test); + </script> + +</body></html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/087.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/087.html new file mode 100644 index 0000000..8e225f4 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/087.html
@@ -0,0 +1,24 @@ +<!DOCTYPE html> +<html><head> + <title> scheduler: multiple defer scripts, one slow loading</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<body> + + <div id="log">FAILED (This TC requires JavaScript enabled)</div> + + <script src="scripts/include-1.js?pipe=trickle(d2)" defer></script> + <script src="scripts/include-2.js" defer></script> + + <script type="text/javascript"> + var t = async_test(); + function test() { + assert_array_equals(eventOrder, ['external script #1', 'external script #2']); + t.done(); + } + onload = t.step_func(test); + </script> + +</body></html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/088.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/088.html new file mode 100644 index 0000000..f41f3d5 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/088.html
@@ -0,0 +1,24 @@ +<!DOCTYPE html> +<html><head> + <title> scheduler: multiple scripts with defer and async attributes</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<body> + + <div id="log">FAILED (This TC requires JavaScript enabled)</div> + + <script src="scripts/include-1.js?pipe=trickle(d2)" defer async></script> + <script src="scripts/include-2.js" defer async></script> + + <script type="text/javascript"> + var t = async_test(); + function test() { + assert_array_equals(eventOrder, ['external script #2', 'external script #1']); + t.done(); + } + onload = t.step_func(test); + </script> + +</body></html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/089.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/089.html new file mode 100644 index 0000000..9ed5e0e1d --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/089.html
@@ -0,0 +1,34 @@ +<!DOCTYPE html> +<html><head> + <title> scheduler: async attribute on inline script</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<body> + + <div id="log">FAILED (This TC requires JavaScript enabled)</div> + + <script async> + var t = async_test(); + log('inline script #1'); + t.step(function() { + assert_array_equals(eventOrder, ['inline script #1']); + }); + </script> + <script async> + log('inline script #2'); + t.step(function() { + assert_array_equals(eventOrder, ['inline script #1', 'inline script #2']); + }); + </script> + + <script> + log('inline script #3'); + t.step(function() { + assert_array_equals(eventOrder, ['inline script #1', 'inline script #2', 'inline script #3']); + }); + onload = function() {t.done()}; + </script> + +</body></html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/090.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/090.html new file mode 100644 index 0000000..17d1d1e --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/090.html
@@ -0,0 +1,34 @@ +<!DOCTYPE html> +<html><head> + <title> scheduler: defer attribute on inline script</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<body> + + <div id="log">FAILED (This TC requires JavaScript enabled)</div> + + <script defer> + var t = async_test(); + log('inline script #1'); + t.step(function() { + assert_array_equals(eventOrder, ['inline script #1']); + }); + </script> + <script defer> + log('inline script #2'); + t.step(function() { + assert_array_equals(eventOrder, ['inline script #1', 'inline script #2']); + }); + </script> + + <script> + log('inline script #3'); + t.step(function() { + assert_array_equals(eventOrder, ['inline script #1', 'inline script #2', 'inline script #3']); + }); + onload = function() {t.done()}; + </script> + +</body></html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/091.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/091.html new file mode 100644 index 0000000..c9c7f81 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/091.html
@@ -0,0 +1,31 @@ +<!DOCTYPE html> +<html><head> + <title> scheduler: force-async off on non-parser-inserted script</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<body> + + <div id="log">FAILED (This TC requires JavaScript enabled)</div> + + <script> + var t = async_test(undefined, {timeout:4000}); + + sources = ["scripts/include-1.js?pipe=trickle(d2)", "scripts/include-2.js?pipe=trickle(d1)"]; + sources.forEach(function(x) { + var script = document.createElement("script"); + script.src = x; + t.step(function() {assert_equals(script.async, true, "async IDL attribute on script creation")}); + script.async = false; + t.step(function() {assert_equals(script.async, false, "async IDL attribute after setting")}); + t.step(function() {assert_equals(script.getAttribute("async"), null, "async content attribute after setting")}); + document.head.appendChild(script); + }); + + onload = t.step_func(function() { + assert_array_equals(eventOrder, ['external script #1', 'external script #2']); + t.done(); + }); + </script> +</body></html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/092.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/092.html new file mode 100644 index 0000000..1fd78239 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/092.html
@@ -0,0 +1,26 @@ +<!DOCTYPE html> +<html><head> + <title> scheduler: defer script and slow-loading non-async external script</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<body> + + <div id="log">FAILED (This TC requires JavaScript enabled)</div> + + <script> + var t = async_test(undefined, {timeout:3500}); + + var script = document.createElement("script"); + script.src = "scripts/include-2.js?pipe=trickle(d2)"; + script.async = false; + document.head.appendChild(script); + + onload = t.step_func(function() { + assert_array_equals(eventOrder, ['external script #1', 'external script #2']); + t.done(); + }); + </script> + <script defer src="scripts/include-1.js"></script> +</body></html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/094.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/094.html new file mode 100644 index 0000000..42f84cc --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/094.html
@@ -0,0 +1,23 @@ +<!DOCTYPE html> +<html><head> + <title> scheduler: parser-created defer script after document load</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<body> + + <div id="log">FAILED (This TC requires JavaScript enabled)</div> + <iframe id="myFrame"></iframe> + + <script> + var t = async_test(undefined, {timeout:3500}); + onload = t.step_func(function() { + var doc = document.getElementById("myFrame").contentDocument; + var win = document.getElementById("myFrame").contentWindow; + doc.open(); + doc.write("<title> scheduler: parser-created defer script after document load</title><script src='/resources/testharness.js'><\/script><script src='/resources/testharnessreport.js'><\/script><script src='testlib/testlib.js'><\/script><script>var t=async_test()<\/script><div id=log></div><script defer src='data:text/javascript,parent.t.done();'><\/script>"); + doc.close(); + }) + </script> +</body></html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/095.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/095.html new file mode 100644 index 0000000..b2d7d8fa --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/095.html
@@ -0,0 +1,24 @@ +<!DOCTYPE html> +<html><head> + <title> scheduler: slow-loading script added from defer blocking load event</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<body> + + <div id="log">FAILED (This TC requires JavaScript enabled)</div> + + <script> + var t = async_test(undefined, {timeout:3500}); + function test() { + t.step(function() { + assert_array_equals(eventOrder, ['external script #8', 'external script #9']); + t.done(); + }); + } + //assert that the test is completed before onload fires + onload = t.step_func(function() {assert_unreached()}); + </script> + <script defer src="scripts/include-8.js"></script> +</body></html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/096.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/096.html new file mode 100644 index 0000000..a2e15b7 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/096.html
@@ -0,0 +1,30 @@ +<!DOCTYPE html> +<html><head> + <title> scheduler: defer script added from document.write relative to DOMContentLoaded</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<body> + + <div id="log">FAILED (This TC requires JavaScript enabled)</div> + + <script> + log("inline script #1"); + document.write("<script defer src='scripts/include-1.js'><\/script>") + </script> + <script> + log("inline script #2"); + var t = async_test(); + + addEventListener("DOMContentLoaded", t.step_func(function() { + assert_array_equals(eventOrder, ["inline script #1", "inline script #2", "external script #1"]); + log("inline script #3"); + }), false); + + onload = t.step_func(function() { + assert_array_equals(eventOrder, ["inline script #1", "inline script #2", "external script #1", "inline script #3"]); + t.done(); + }); + </script> +</body></html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/097.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/097.html new file mode 100644 index 0000000..4b4e4c61 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/097.html
@@ -0,0 +1,29 @@ +<!DOCTYPE html> +<html><head> + <title> scheduler: slow-loading async script added from document.write</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<body> + + <div id="log">FAILED (This TC requires JavaScript enabled)</div> + + <script> + log("inline script #1"); + document.write("<script async src='scripts/include-1.js?pipe=trickle(d2)'><\/script>") + </script> + <script> + log("inline script #2"); + var t = async_test(undefined, {timeout:3500}); + + addEventListener("DOMContentLoaded", t.step_func(function() {assert_array_equals(eventOrder, ["inline script #1", "inline script #2"])}), false); + + onload = t.step_func( + function() { + assert_array_equals(eventOrder, ["inline script #1", "inline script #2", "external script #1"]); + t.done(); + }); + + </script> +</body></html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/099.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/099.html new file mode 100644 index 0000000..987fcc7 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/099.html
@@ -0,0 +1,19 @@ +<!DOCTYPE html> +<html><head> + <title> scheduler: defer adding iframe containing script</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<body> + + <div id="log">FAILED (This TC requires JavaScript enabled)</div> + + <script defer src="scripts/include-11.js"></script> + <script> + var t = async_test(); + + onload = t.step_func(function() {assert_array_equals(eventOrder, ["external script before adding iframe", "script in iframe"]); t.done();}); + </script> +</body> +</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/101.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/101.html new file mode 100644 index 0000000..b868f9a --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/101.html
@@ -0,0 +1,35 @@ +<!DOCTYPE html> +<html><head> + <title> scheduler: defer script after initial onload event</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<body> + + <div id="log">FAILED (This TC requires JavaScript enabled)</div> + <iframe id="myFrame"></iframe> + + <script> + var t = async_test(); + onload = t.step_func( + function() { + var doc = document.getElementById("myFrame").contentDocument; + var win = document.getElementById("myFrame").contentWindow; + doc.open(); + doc.write("<title> scheduler: defer script after initial onload event</title><script src='testlib/testlib.js'><\/script><div id='log'>document.written content</div><script>log('inline script #1');<\/script><script src='scripts/include-1.js'><\/script><script defer src='scripts/include-2.js'><\/script>"); + doc.close(); + //Note that the *window* object has changed but the *global scope* of the script has not. + var run_t = window.t.step_func(function() { + if (!win.eventOrder || win.eventOrder.length != 3) { + window.setTimeout(run_t, 100); + return; + } + window.assert_array_equals(win.eventOrder, ['inline script #1', 'external script #1', 'external script #2']); + window.t.done(); + }); + run_t(); + }); + </script> +</body> +</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/102.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/102.html new file mode 100644 index 0000000..4390238 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/102.html
@@ -0,0 +1,24 @@ +<!DOCTYPE html> +<html><head> + <title> scheduler: defer script after initial onload event</title> +</head> +<body> + <div id="log">FAILED (This TC requires JavaScript enabled)</div> + + <script> + onload = function() { + document.open(); + document.write("<title> scheduler: defer script after initial onload event</title><script src='/resources/testharness.js'><\/script><script src='/resources/testharnessreport.js'><\/script><script src='testlib/testlib.js'><\/script><div id='log'>document.written content</div><script>var t = async_test(); log('inline script #1')<\/script><script src='scripts/include-1.js'><\/script><script async src='scripts/include-2.js'><\/script>"); + document.close(); + window.setTimeout(function() { + window.t.step(function() { + window.assert_any(window.assert_array_equals, window.eventOrder, + [['inline script #1', 'external script #1', 'external script #2'], + ['inline script #1', 'external script #2', 'external script #1']]); + window.t.done(); + })}, + 1000); + }; + </script> +</body> +</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/103.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/103.html new file mode 100644 index 0000000..f619472 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/103.html
@@ -0,0 +1,39 @@ +<!DOCTYPE html> +<html><head> + <title> scheduler: removing defer attribute at runtime</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<body> + + <div id="test"></div> + <div id="log">FAILED (This TC requires JavaScript enabled)</div> + + <script id="defer-script" defer src="scripts/include-2.js"></script> + <script src="scripts/include-1.js"></script> + + <script> + var t = async_test(); + + t.step(function() { + document.getElementById("defer-script").removeAttribute("defer"); + }); + + var ran_defer_check = false; + + document.addEventListener("readystatechange", t.step_func(function () { + if (document.readyState == "interactive") { + ran_defer_check = true; + assert_array_equals(eventOrder, ["external script #1"]); + } + }), false); + + addEventListener("load", t.step_func(function () { + assert_true(ran_defer_check); + assert_array_equals(eventOrder, ["external script #1", "external script #2"]); + t.done(); + }), false); + + </script> +</body></html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/104.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/104.html new file mode 100644 index 0000000..95a5a22 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/104.html
@@ -0,0 +1,39 @@ +<!DOCTYPE html> +<html><head> + <title> scheduler: adding defer attribute at runtime</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<body> + + <div id="test"></div> + <div id="log">FAILED (This TC requires JavaScript enabled)</div> + + <script id="defer-script" src="scripts/include-1.js"></script> + <script src="scripts/include-2.js"></script> + + <script> + var t = async_test(); + + t.step(function() { + document.getElementById("defer-script").setAttribute("defer", "defer"); + }); + + var ran_defer_check = false; + + document.addEventListener("readystatechange", t.step_func(function () { + if (document.readyState == "interactive") { + ran_defer_check = true; + assert_array_equals(eventOrder, ["external script #1", "external script #2"]); + } + }), false); + + addEventListener("load", t.step_func(function () { + assert_true(ran_defer_check); + assert_array_equals(eventOrder, ["external script #1", "external script #2"]); + t.done(); + }), false); + + </script> +</body></html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/105.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/105.html new file mode 100644 index 0000000..19be9e1 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/105.html
@@ -0,0 +1,31 @@ +<!DOCTYPE html> +<html><head> + <title> scheduler: adding async attribute at runtime</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<body> + <div id="log">FAILED (This TC requires JavaScript enabled)</div> + + <script> + var t = async_test(); + + var sources = ["scripts/include-1.js?pipe=trickle(d2)", + "scripts/include-2.js"] + var scripts = sources.map(function(x) { + var script = document.createElement("script"); + script.src = x; + script.async = false; + document.body.appendChild(script); + return script; + }); + scripts[0].async = true; + + addEventListener("load", t.step_func(function () { + assert_array_equals(eventOrder, ["external script #1", "external script #2"]); + t.done(); + }), false); + + </script> +</body></html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/106-import.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/106-import.html new file mode 100644 index 0000000..db7abcc --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/106-import.html
@@ -0,0 +1,20 @@ +<!DOCTYPE html> +<html><head> + <title> scheduler: stylesheets blocking scripts</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> + <!-- this stylesheet blocks scripts --> + <link rel="stylesheet" href="css/import.css?pipe=trickle(d2)"> +</head> +<body> + <div id="log">FAILED (This TC requires JavaScript enabled)</div> + <div id="test">Test</div> + + <script> + test(function() { + assert_equals(getComputedStyle(document.getElementById("test")).position, + "fixed"); + }); + </script> +</body></html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/106-noimport.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/106-noimport.html new file mode 100644 index 0000000..8e099c58 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/106-noimport.html
@@ -0,0 +1,20 @@ +<!DOCTYPE html> +<html><head> + <title> scheduler: stylesheets blocking scripts</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> + <!-- this stylesheet blocks scripts --> + <link rel="stylesheet" href="css/background.css?pipe=trickle(d2)"> +</head> +<body> + <div id="log">FAILED (This TC requires JavaScript enabled)</div> + <div id="test">Test</div> + + <script> + test(function() { + assert_equals(getComputedStyle(document.getElementById("test")).position, + "fixed"); + }); + </script> +</body></html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/107-import.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/107-import.html new file mode 100644 index 0000000..0b572b07 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/107-import.html
@@ -0,0 +1,21 @@ +<!DOCTYPE html> +<html><head> + <title> scheduler: stylesheets blocking scripts document.write</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<body> + <div id="log">FAILED (This TC requires JavaScript enabled)</div> + <div id="test">Test</div> + + <!-- this stylesheet blocks scripts --> + <script> + test(function() { + document.write("<link rel='stylesheet' href='css/import.css?pipe=trickle(d2)'>"); + // note that the pass condition here is not per spec (but does match implementations) as of 2012-06-26 + assert_equals(getComputedStyle(document.getElementById("test")).position, + "static"); + }); + </script> +</body></html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/107-noimport.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/107-noimport.html new file mode 100644 index 0000000..ce57d1f --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/107-noimport.html
@@ -0,0 +1,21 @@ +<!DOCTYPE html> +<html><head> + <title> scheduler: stylesheets blocking scripts document.write</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<body> + <div id="log">FAILED (This TC requires JavaScript enabled)</div> + <div id="test">Test</div> + + <!-- this stylesheet blocks scripts --> + <script> + test(function() { + document.write("<link rel='stylesheet' href='css/background.css?pipe=trickle(d2)'>"); + // note that the pass condition here is not per spec (but does match implementations) as of 2012-06-26 + assert_equals(getComputedStyle(document.getElementById("test")).position, + "static"); + }); + </script> +</body></html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/108-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/108-expected.txt new file mode 100644 index 0000000..318fb47 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/108-expected.txt
@@ -0,0 +1,4 @@ +This is a testharness.js-based test. +FAIL scheduler: javascript URL in iframe assert_array_equals: property 1, expected "inline script #2" but got "iframe script #1" +Harness: the test ran to completion. +
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/108.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/108.html new file mode 100644 index 0000000..79be972 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/108.html
@@ -0,0 +1,25 @@ +<!DOCTYPE html> +<html><head> + <title> scheduler: javascript URL in iframe</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<body> + <div id="log">Not tested</div> + <script> + var t = async_test(); + var iframe_onload = false; + + t.step(function() { + log('inline script #1'); + document.write("<iframe src='javascript:void(top.log("iframe script #1"));'></iframe>"); + log('inline script #2') + }) + + onload = t.step_func(function() { + assert_array_equals(eventOrder, ["inline script #1", "inline script #2", "iframe script #1"]); + t.done(); + }); + </script> +</body>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/109-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/109-expected.txt new file mode 100644 index 0000000..e3040f09 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/109-expected.txt
@@ -0,0 +1,4 @@ +This is a testharness.js-based test. +FAIL scheduler: javascript URL in iframe, src set via DOM assert_array_equals: property 2, expected "inline script #3" but got "iframe onload" +Harness: the test ran to completion. +
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/109.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/109.html new file mode 100644 index 0000000..d103ffcb --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/109.html
@@ -0,0 +1,29 @@ +<!DOCTYPE html> +<html><head> + <title> scheduler: javascript URL in iframe, src set via DOM</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<body> + <div id="log">Not tested</div> + <script> + var t = async_test(); + + t.step(function() { + var iframe_onload = false; + log("inline script #1"); + var iframe = document.createElement("iframe"); + iframe.src = "javascript:void(top.log('JS URL'));"; + log("inline script #2"); + iframe.onload = function () { log("iframe onload") }; + document.body.appendChild(iframe); + log("inline script #3"); + }) + + onload = t.step_func(function() { + assert_array_equals(eventOrder, ["inline script #1", "inline script #2", "inline script #3", "JS URL", "iframe onload"]); + t.done(); + }); + </script> +</body>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/110.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/110.html new file mode 100644 index 0000000..5affb9e --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/110.html
@@ -0,0 +1,30 @@ +<!DOCTYPE html> +<html><head> + <title> scheduler: removing defer script at runtime</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<body> + + <div id="test"></div> + <div id="log">FAILED (This TC requires JavaScript enabled)</div> + + <script id="defer-script" defer src="scripts/include-2.js"></script> + <script src="scripts/include-1.js"></script> + + <script> + var t = async_test(); + + t.step(function() { + var s = document.getElementById("defer-script"); + s.parentNode.removeChild(s); + }); + + addEventListener("load", t.step_func(function () { + assert_array_equals(eventOrder, ["external script #1", "external script #2"]); + t.done(); + }), false); + + </script> +</body></html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/111.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/111.html new file mode 100644 index 0000000..144633c5 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/111.html
@@ -0,0 +1,32 @@ +<!DOCTYPE html> +<html><head> + <title> scheduler: removing async attribute at runtime</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<body> + + <div id="test"></div> + <div id="log">FAILED (This TC requires JavaScript enabled)</div> + + <script id="async-script" async src="scripts/include-2.js?pipe=trickle(d3)"></script> + + <script> + var t = async_test(); + + t.step(function() { + document.getElementById("async-script").removeAttribute("async"); + var s = document.createElement("script"); + s.async = false; + s.src = "scripts/include-1.js"; + document.body.appendChild(s); + }); + + addEventListener("load", t.step_func(function () { + assert_array_equals(eventOrder, ["external script #1", "external script #2"]); + t.done(); + }), false); + + </script> +</body></html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/112.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/112.html new file mode 100644 index 0000000..76c0a155 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/112.html
@@ -0,0 +1,29 @@ +<!DOCTYPE html> +<html><head> + <title> scheduler: removing async attribute at runtime, script also has defer attribute</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<body> + + <div id="test"></div> + <div id="log">FAILED (This TC requires JavaScript enabled)</div> + + <script id="async-script" async defer src="scripts/include-1.js?pipe=trickle(d3)"></script> + + <script> + var t = async_test(); + document.getElementById("async-script").removeAttribute("async"); + + addEventListener("DOMContentLoaded", t.step_func(function () { + assert_array_equals(eventOrder, []); + }), false); + + addEventListener("load", t.step_func(function () { + assert_array_equals(eventOrder, ["external script #1"]); + t.done(); + }), false); + + </script> +</body></html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/113.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/113.html new file mode 100644 index 0000000..32740be --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/113.html
@@ -0,0 +1,31 @@ +<!DOCTYPE html> +<html><head> + <title> scheduler: Altering DOM using innerHTML during parse </title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<body> + + <div id="test"></div> + <div id="log">FAILED (This TC requires JavaScript enabled)</div> + + <script> + var t = async_test(); + + addEventListener("load", t.step_func(function () { + assert_array_equals(eventOrder, ["inline script #1", "inline script #2"]); + t.done(); + }), false); + + </script> + <div id="container"> + <script>t.step(function() { + log("inline script #1"); + document.getElementById("container").innerHTML = ""; + }); + </script> + <script>t.step(function() {log("inline script #2")});</script> + </div> + +</body></html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/114.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/114.html new file mode 100644 index 0000000..ce37332 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/114.html
@@ -0,0 +1,26 @@ +<!DOCTYPE html> +<html><head> + <title> scheduler: Changing src of defer script before it runs </title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<body> + + <div id="test"></div> + <div id="log">FAILED (This TC requires JavaScript enabled)</div> + + <script id="defer-script" defer src="scripts/include-1.js"></script> + + <script> + var t = async_test(); + + document.getElementById("defer-script").src = "scripts/include-2.js" + + addEventListener("load", t.step_func(function () { + assert_array_equals(eventOrder, ["external script #1"]); + t.done(); + }), false); + </script> + +</body></html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/115.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/115.html new file mode 100644 index 0000000..6234e02 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/115.html
@@ -0,0 +1,26 @@ +<!DOCTYPE html> +<html><head> + <title> scheduler: Removing src of defer script before it runs </title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<body> + + <div id="test"></div> + <div id="log">FAILED (This TC requires JavaScript enabled)</div> + + <script id="defer-script" defer src="scripts/include-1.js">t.step(function() {assert_unreached()})</script> + + <script> + var t = async_test(); + + document.getElementById("defer-script").removeAttribute("src"); + + addEventListener("load", t.step_func(function () { + assert_array_equals(eventOrder, ["external script #1"]); + t.done(); + }), false); + </script> + +</body></html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/116-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/116-expected.txt new file mode 100644 index 0000000..3a4a0bf6 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/116-expected.txt
@@ -0,0 +1,4 @@ +This is a testharness.js-based test. +FAIL scheduler: adding script to head of frameset document assert_array_equals: property 0, expected "document.body: <FRAMESET>" but got "document.body: <BODY>" +Harness: the test ran to completion. +
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/116.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/116.html new file mode 100644 index 0000000..62da398 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/116.html
@@ -0,0 +1,24 @@ +<!DOCTYPE html> +<html><head> + <title>scheduler: adding script to head of frameset document</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> + <script> + // add a script that looks for document.body as first child of HEAD + testlib.addScript('',{src:'scripts/find-body.js'},document.getElementsByTagName('head')[0], true ); + var div = document.createElement("div"); + div.id = "log"; + var t = async_test(); + function test() { + if(!(window.findBodyLoaded)) { + return setTimeout(t.step_func(test),200); + } + document.body.appendChild(div); + assert_array_equals(eventOrder, ['document.body: <FRAMESET>']); + t.done(); + } + onload = t.step_func(test) + </script> +</head> +<frameset>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/117.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/117.html new file mode 100644 index 0000000..46a9900 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/117.html
@@ -0,0 +1,25 @@ +<!DOCTYPE html> +<html><head> + <title>scheduler: inline script created with createContextualFragment</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> + <div id="log"></div> + <script> + log('inline script #1'); + var t = async_test(); + + t.step(function() { + var range = document.createRange(); + var fragment = range.createContextualFragment("<script>log('fragment script #1')<\/script>"); + document.body.appendChild(fragment.firstChild); + }); + + function test() { + assert_array_equals(eventOrder, ['inline script #1', 'fragment script #1', 'end inline script #1']); + t.done(); + } + onload = t.step_func(test) + log('end inline script #1'); + </script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/118.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/118.html new file mode 100644 index 0000000..e002ea9 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/118.html
@@ -0,0 +1,25 @@ +<!DOCTYPE html> +<html><head> + <title>scheduler: external script created with createContextualFragment</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> + <div id="log"></div> + <script> + log('inline script #1'); + var t = async_test(); + + t.step(function() { + var range = document.createRange(); + var fragment = range.createContextualFragment("<script src='scripts/include-1.js'><\/script>"); + document.body.appendChild(fragment.firstChild); + }); + + addEventListener("load", t.step_func(function() { + assert_array_equals(eventOrder, ['inline script #1', 'end inline script #1', 'external script #1']); + t.done(); + }), false); + + log('end inline script #1'); + </script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/119.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/119.html new file mode 100644 index 0000000..d1ed823 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/119.html
@@ -0,0 +1,31 @@ +<!DOCTYPE html> +<html><head> + <title>scheduler: external defer script created with createContextualFragment</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<body> + <div id="log"></div> + <script> + log('inline script #1'); + var t = async_test(); + + t.step(function () { + var range = document.createRange(); + var fragment = range.createContextualFragment("<script defer src='scripts/include-1.js?pipe=trickle(d1)'><\/script>"); + document.body.appendChild(fragment.firstChild); + }); + + addEventListener("DOMContentLoaded", t.step_func(function () { + assert_array_equals(eventOrder, ['inline script #1', 'end inline script #1']); + })); + + addEventListener("load", t.step_func_done(function () { + assert_array_equals(eventOrder, ['inline script #1', 'end inline script #1', 'external script #1']); + })); + + log('end inline script #1'); + </script> +</body> +</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/120.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/120.html new file mode 100644 index 0000000..2cfe522 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/120.html
@@ -0,0 +1,17 @@ +<!DOCTYPE html> +<html><head> + <title>scheduler: script created without a window </title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> +</head> +<div id="log"></div> +<script> + var t = async_test(); + + var doc = document.implementation.createHTMLDocument(""); + doc.write("<script>t.step(function() {assert_unreached()})<\/script>"); + + document.body.appendChild(doc.head.firstChild); + + onload = function() {t.done()} +</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/121.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/121.html new file mode 100644 index 0000000..d6de270 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/121.html
@@ -0,0 +1,17 @@ +<!DOCTYPE html> +<html><head> + <title>scheduler: altering the type attribute </title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> +</head> +<div id="log"></div> +<script> + var t = async_test(); +</script> +<script id="test" type="text/plain">t.step(function() {assert_unreached()}</script> +<script> +t.step(function() { + document.getElementById("test").removeAttribute("type"); + setTimeout(t.step_func(function() {t.done()}), 100); +}); +</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/122.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/122.html new file mode 100644 index 0000000..35e1c2e --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/122.html
@@ -0,0 +1,28 @@ +<!DOCTYPE html> +<html><head> + <title>scheduler: altering the type attribute and adding/removing external script </title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<div id="log"></div> +<script> + var t = async_test(undefined, {timeout:4000}); +</script> +<script id="test" type="text/plain" src="scripts/include-1.js?pipe=trickle(d1)"></script> +<script> +t.step(function() { + var script = document.getElementById("test"); + script.removeAttribute("type"); + var marker = document.createElement("script"); + marker.src = "scripts/include-2.js?pipe=trickle(d2)"; + marker.async = false; + script.parentNode.appendChild(marker); + script.parentNode.appendChild(script); + test(function() {assert_true(script.async)}, "Reinserted script async IDL attribute"); +}); +onload = t.step_func(function () { + assert_array_equals(eventOrder, ["external script #1", "external script #2"]); + t.done(); +}); +</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/123.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/123.html new file mode 100644 index 0000000..9fe29989 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/123.html
@@ -0,0 +1,28 @@ +<!DOCTYPE html> +<html><head> + <title>scheduler: altering the type attribute and adding/removing external script with async=false </title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<div id="log"></div> +<script> + var t = async_test(undefined, {timeout:4000}); +</script> +<script id="test" type="text/plain" src="scripts/include-2.js?pipe=trickle(d1)"></script> +<script> +t.step(function() { + var script = document.getElementById("test"); + script.removeAttribute("type"); + script.async = false; + var marker = document.createElement("script"); + marker.src = "scripts/include-1.js?pipe=trickle(d2)"; + marker.async = false; + script.parentNode.appendChild(marker); + script.parentNode.appendChild(script); +}); +onload = t.step_func(function() { + assert_array_equals(eventOrder, ["external script #1", "external script #2"]); + t.done(); +}); +</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/124.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/124.html new file mode 100644 index 0000000..5c7208d --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/124.html
@@ -0,0 +1,25 @@ +<!DOCTYPE html> +<html><head> + <title>scheduler: altering the type attribute and changing script data inline script </title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<div id="log"></div> +<script> + var t = async_test(); +</script> +<script id="test" type="text/plain">t.step(function() {log("inline script #1")});</script> +<script> +t.step(function() { + log("inline script #2"); + var script = document.getElementById("test"); + script.removeAttribute("type"); + script.appendChild(document.createTextNode("")); + log("end inline script #2"); +}); +onload = t.step_func(function() { + assert_array_equals(eventOrder, ["inline script #2", "inline script #1", "end inline script #2"]); + t.done(); +}) +</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/125.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/125.html new file mode 100644 index 0000000..985ccf1 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/125.html
@@ -0,0 +1,28 @@ +<!DOCTYPE html> +<html><head> + <title>scheduler: altering the type attribute and changing script data external script </title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<div id="log"></div> +<script> + var t = async_test(undefined, {timeout:4000}); +</script> +<script id="test" type="text/plain" src="scripts/include-1.js?pipe=trickle(d1)"></script> +<script> +t.step(function() { + var script = document.getElementById("test"); + script.removeAttribute("type"); + var marker = document.createElement("script"); + marker.src = "scripts/include-2.js?pipe=trickle(d2)"; + marker.async = false; + script.parentNode.appendChild(marker); + script.appendChild(document.createTextNode("")); +}); + +onload = t.step_func(function() { + assert_array_equals(eventOrder, ["external script #1", "external script #2"]); + t.done(); +}); +</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/126.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/126.html new file mode 100644 index 0000000..65d88c5 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/126.html
@@ -0,0 +1,29 @@ +<!DOCTYPE html> +<html><head> + <title>scheduler: altering the type attribute and changing script data external script async=false </title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<div id="log"></div> +<script> + var t = async_test(undefined, {timeout:4000}); +</script> +<script id="test" type="text/plain" src="scripts/include-2.js"></script> +<script> +t.step(function() { + var script = document.getElementById("test"); + script.removeAttribute("type"); + script.async = false; + var marker = document.createElement("script"); + marker.src = "scripts/include-1.js?pipe=trickle(d2)"; + marker.async = false; + script.parentNode.appendChild(marker); + script.appendChild(document.createTextNode("")); +}); + +onload = t.step_func(function() { + assert_array_equals(eventOrder, ["external script #1", "external script #2"]); + t.done(); +}); +</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/127.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/127.html new file mode 100644 index 0000000..149078a --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/127.html
@@ -0,0 +1,34 @@ +<!DOCTYPE html> +<html><head> + <title>scheduler: appending non-text children to script </title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<div id="log"></div> +<script> + var t = async_test(); +</script> +<script id="test"></script> +<script> +t.step(function() { + log("inline script #1"); + var script = document.getElementById("test"); + + var frag = document.createDocumentFragment(); + var div = document.createElement("div"); + + div.textContent = "assert_unreached();" + frag.appendChild(document.createTextNode("t.step(function() {log('inline script #2');\n")); + frag.appendChild(div); + frag.appendChild(document.createTextNode("log('end inline script #2');})")); + + script.appendChild(frag); + log("end inline script #1"); +}); + +onload = t.step_func(function() { + assert_array_equals(eventOrder, ["inline script #1", "inline script #2", "end inline script #2", "end inline script #1"]); + t.done(); +}); +</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/128-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/128-expected.txt new file mode 100644 index 0000000..2aa8b3ec --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/128-expected.txt
@@ -0,0 +1,4 @@ +This is a testharness.js-based test. +FAIL scheduler: appending script element to script assert_array_equals: property 1, expected "inline script #3" but got "inline script #2" +Harness: the test ran to completion. +
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/128.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/128.html new file mode 100644 index 0000000..39ec24f --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/128.html
@@ -0,0 +1,34 @@ +<!DOCTYPE html> +<html><head> + <title>scheduler: appending script element to script </title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<div id="log"></div> +<script> + var t = async_test(); +</script> +<script id="test"></script> +<script> +t.step(function() { + log("inline script #1"); + var script = document.getElementById("test"); + + var frag = document.createDocumentFragment(); + var inner_script = document.createElement("script"); + + inner_script.textContent = "t.step(function() {log('inline script #3');});" + frag.appendChild(document.createTextNode("t.step(function() {log('inline script #2');\n")); + frag.appendChild(inner_script); + frag.appendChild(document.createTextNode("log('end inline script #2');})")); + + script.appendChild(frag); + log("end inline script #1"); +}); + +onload = t.step_func(function() { + assert_array_equals(eventOrder, ["inline script #1", "inline script #3", "inline script #2", "end inline script #2", "end inline script #1"]); + t.done(); +}); +</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/129.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/129.html new file mode 100644 index 0000000..8c127356 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/129.html
@@ -0,0 +1,40 @@ +<!DOCTYPE html> +<html><head> + <title>scheduler: appending multiple script elements</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<div id="log"></div> +<script> + var t = async_test(); +</script> +<div id="container"></div> +<script> +t.step(function() { + log("inline script #1"); + + var frag = document.createDocumentFragment(); + + scripts = ["2", "3", "4"].map(function(x) { + var s = document.createElement("script"); + s.textContent = "t.step(function() {log('inline script #" + x + "')});"; + return s + }); + + + frag.appendChild(scripts[0]); + var div = document.createElement(div); + div.appendChild(scripts[1]); + frag.appendChild(div); + frag.appendChild(scripts[2]); + + document.getElementById("container").appendChild(frag); + log("end inline script #1"); +}); + +onload = t.step_func(function() { + assert_array_equals(eventOrder, ["inline script #1", "inline script #2", "inline script #3", "inline script #4", "end inline script #1"]); + t.done(); +}); +</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/130.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/130.html new file mode 100644 index 0000000..c6643d9 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/130.html
@@ -0,0 +1,34 @@ +<!DOCTYPE html> +<html><head> + <title>scheduler: appending external script element to script </title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<div id="log"></div> +<script> + var t = async_test(); +</script> +<script id="test"></script> +<script> +t.step(function() { + log("inline script #1"); + var script = document.getElementById("test"); + + var frag = document.createDocumentFragment(); + var inner_script = document.createElement("script"); + + inner_script.src = "scripts/include-1.js?pipe=trickle(d1)"; + frag.appendChild(document.createTextNode("t.step(function() {log('inline script #2');\n")); + frag.appendChild(inner_script); + frag.appendChild(document.createTextNode("log('end inline script #2');})")); + + script.appendChild(frag); + log("end inline script #1"); +}); + +onload = t.step_func(function() { + assert_array_equals(eventOrder, ["inline script #1", "inline script #2", "end inline script #2", "end inline script #1", "external script #1"]); + t.done(); +}); +</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/131.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/131.html new file mode 100644 index 0000000..541483e --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/131.html
@@ -0,0 +1,22 @@ +<!DOCTYPE html> +<html><head> + <title>scheduler: inline svg script </title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<div id="log"></div> +<script> + var t = async_test(); + log("inline script #1") +</script> +<svg> +<script>log("inline script #2")</script> +</svg> +<script> +log("inline script #3"); +t.step(function() { + assert_array_equals(eventOrder, ["inline script #1", "inline script #2", "inline script #3"]); + t.done(); +}); +</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/132.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/132.html new file mode 100644 index 0000000..3edb959 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/132.html
@@ -0,0 +1,22 @@ +<!DOCTYPE html> +<html><head> + <title>scheduler: external svg script </title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<div id="log"></div> +<script> + var t = async_test(); + log("inline script #1") +</script> +<svg> +<script xlink:href="scripts/include-1.js"></script> +</svg> +<script> +log("inline script #2"); +t.step(function() { + assert_array_equals(eventOrder, ["inline script #1", "external script #1", "inline script #2"]); + t.done(); +}); +</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/133.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/133.html new file mode 100644 index 0000000..e6b327f --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/133.html
@@ -0,0 +1,29 @@ +<!DOCTYPE html> +<html><head> + <title>scheduler: inline HTML script added by SVG script </title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<div id="log"></div> +<script> + var t = async_test(); + log("inline script #1") +</script> +<svg> +<script> +log("inline script #2") +var s = document.createElement("script"); +s.textContent = "log('inline script #3');"; +document.getElementsByTagName("svg")[0].appendChild(s); +log("end inline script #2"); +</script> +</svg> +<script> +log("inline script #4"); +t.step(function() { + assert_array_equals(eventOrder, ["inline script #1", "inline script #2", "inline script #3", + "end inline script #2", "inline script #4"]); + t.done(); +}); +</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/134.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/134.html new file mode 100644 index 0000000..bb2ad4f6 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/134.html
@@ -0,0 +1,28 @@ +<!DOCTYPE html> +<html><head> + <title>scheduler: external HTML script added by SVG script </title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<div id="log"></div> +<script> + var t = async_test(); + log("inline script #1") +</script> +<svg> +<script> +log("inline script #2") +var s = document.createElement("script"); +s.src = "scripts/include-1.js" +document.getElementsByTagName("svg")[0].appendChild(s); +log("end inline script #2"); +</script> +</svg> +<script> +onload = t.step_func(function() { + assert_array_equals(eventOrder, ["inline script #1", "inline script #2", + "end inline script #2", "external script #1"]); + t.done(); +}); +</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/135.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/135.html new file mode 100644 index 0000000..dd8b8952 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/135.html
@@ -0,0 +1,28 @@ +<!DOCTYPE html> +<html><head> + <title>scheduler: external SVG script added by SVG script </title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<div id="log"></div> +<script> + var t = async_test(); + log("inline script #1") +</script> +<svg> +<script> +log("inline script #2") +var s = document.createElementNS("http://www.w3.org/2000/svg", "script"); +s.setAttributeNS("http://www.w3.org/1999/xlink", "href", "scripts/include-1.js"); +document.getElementsByTagName("svg")[0].appendChild(s); +log("end inline script #2"); +</script> +</svg> +<script> +onload = t.step_func(function() { + assert_array_equals(eventOrder, ["inline script #1", "inline script #2", + "end inline script #2", "external script #1"]); + t.done(); +}); +</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/136.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/136.html new file mode 100644 index 0000000..4ed1ed80c --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/136.html
@@ -0,0 +1,33 @@ +<!DOCTYPE html> +<html><head> + <title>scheduler: DOM added external SVG script, force-async? </title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<div id="log"></div> +<script> + var t = async_test(undefined, {timeout:3000}); +</script> +<svg> +<script> + +var s1 = document.createElement("script"); +s1.src = "scripts/include-1.js"; +s1.async = false; + +var s = document.createElementNS("http://www.w3.org/2000/svg", "script"); +s.setAttributeNS("http://www.w3.org/1999/xlink", "href", "scripts/include-2.js?pipe=trickle(d2)"); + +document.getElementsByTagName("svg")[0].appendChild(s); +document.getElementsByTagName("svg")[0].appendChild(s1); + +</script> +</svg> +<script> +onload = t.step_func(function() { + <!-- assumes that the SVg script should be async --> + assert_array_equals(eventOrder, ["external script #1", "external script #2"]); + t.done(); +}); +</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/137.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/137.html new file mode 100644 index 0000000..0f71dcd --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/137.html
@@ -0,0 +1,21 @@ +<!DOCTYPE html> +<html><head> + <title>scheduler: SVG script empty xlink:href</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<div id="log"></div> +<script> + var t = async_test(undefined, {timeout:3000}); +</script> +<svg> +<script xlink:href=""> +t.step(function() {assert_unreached()}); +</script> +</svg> +<script> +onload = t.step_func(function() { + t.done(); +}); +</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/138.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/138.html new file mode 100644 index 0000000..b2f4e81d --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/138.html
@@ -0,0 +1,30 @@ +<!DOCTYPE html> +<html><head> + <title>scheduler: SVG script nested inlines</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<div id="log"></div> +<script> + var t = async_test(undefined, {timeout:3000}); +</script> +<svg> +<script> +t.step(function() { +log("inline script #2"); +var a = { + <script> + t.step(function() {log("inline script #1")}) + </script> +a:1} +log("end inline script #2"); +}); +</script> +</svg> +<script> +onload = t.step_func(function() { + assert_array_equals(eventOrder, ["inline script #1", "inline script #2", "end inline script #2"]); + t.done(); +}); +</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/139.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/139.html new file mode 100644 index 0000000..98ca7439 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/139.html
@@ -0,0 +1,30 @@ +<!DOCTYPE html> +<html><head> + <title>scheduler: SVG script nested external in inline</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<div id="log"></div> +<script> + var t = async_test(undefined, {timeout:3000}); +</script> +<svg> +<script> +t.step(function() { +log("inline script #1"); +var a = { + <script xlink:href="scripts/include-1.js"> + t.step(function() {assert_unreached()}) + </script> +a:1} +log("end inline script #1"); +}); +</script> +</svg> +<script> +onload = t.step_func(function() { + assert_array_equals(eventOrder, ["external script #1", "inline script #1", "end inline script #1"]); + t.done(); +}); +</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/140.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/140.html new file mode 100644 index 0000000..3f7db18 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/140.html
@@ -0,0 +1,24 @@ +<!DOCTYPE html> +<html><head> + <title>scheduler: SVG script nested inline in external</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<div id="log"></div> +<script> + var t = async_test(undefined, {timeout:3000}); +</script> +<svg> +<script xlink:href="scripts/include-1.js"> + <script> + t.step(function() {log("inline script #1")}); + </script> +</script> +</svg> +<script> +onload = t.step_func(function() { + assert_array_equals(eventOrder, ["inline script #1", "external script #1"]); + t.done(); +}); +</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/141.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/141.html new file mode 100644 index 0000000..da4dbeb --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/141.html
@@ -0,0 +1,26 @@ +<!DOCTYPE html> +<html><head> + <title>scheduler: SVG inline script that document.writes inline script </title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<div id="log"></div> +<script> + var t = async_test(undefined, {timeout:3000}); +</script> +<svg> +<script> + t.step(function() { + log('inline script #1'); + document.write("<" + "script>t.step(function() {log('inline script #2')})<" + "/script>"); + log('end inline script #1'); + }); +</script> +</svg> +<script> +onload = t.step_func(function() { + assert_array_equals(eventOrder, ["inline script #1", "inline script #2", "end inline script #1"]); + t.done(); +}); +</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/142.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/142.html new file mode 100644 index 0000000..b2b83dc8 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/142.html
@@ -0,0 +1,27 @@ +<!DOCTYPE html> +<html><head> + <title>scheduler: SVG inline script that document.writes external script </title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<div id="log"></div> +<script> + var t = async_test(undefined, {timeout:3000}); +</script> +<svg> +<script> + t.step(function() { + log('inline script #1'); + document.write("<" + "script xlink:href='scripts/include-1.js'><" + "/script>"); + log('end inline script #1'); + }); +</script> +<script>t.step(function() {log("inline script #2")});</script> +</svg> +<script> +onload = t.step_func(function() { + assert_array_equals(eventOrder, ["inline script #1", "end inline script #1", "external script #1", "inline script #2"]); + t.done(); +}); +</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/143.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/143.html new file mode 100644 index 0000000..4c01515 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/143.html
@@ -0,0 +1,31 @@ +<!DOCTYPE html> +<html><head> + <title>scheduler: SVG nested inline script that document.writes inline script </title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<div id="log"></div> +<script> + var t = async_test(undefined, {timeout:3000}); +</script> +<svg> +<script> + t.step(function() { + log('inline script #3'); + }); + <script> + log("inline script #1") + document.write("<" + "script>t.step(function() {log('inline script #2')})<" + "/script><" + "/script>"); + </script> + t.step(function() { + assert_unreached(): + }); +</script> +</svg> +<script> +onload = t.step_func(function() { + assert_array_equals(eventOrder, ["inline script #1", "inline script #2", "inline script #3"]); + t.done(); +}); +</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/144.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/144.html new file mode 100644 index 0000000..a3c764d --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/144.html
@@ -0,0 +1,28 @@ +<!DOCTYPE html> +<html><head> + <title>scheduler: SVG inline script changing the type attribute </title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<div id="log"></div> +<script> + var t = async_test(undefined, {timeout:3000}); +</script> +<svg> +<script type="text/plain"> +t.step(function() {assert_unreached()}); +</script> +</svg> +<script> +t.step(function() { + var s = document.querySelector("svg > script"); + s.textContent = "t.step(function() {log('inline script #1')})"; + s.type = ""; + s.parentNode.appendChild(s); +}); +onload = t.step_func(function() { + assert_array_equals(eventOrder, ["inline script #1"]); + t.done(); +}); +</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/145.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/145.html new file mode 100644 index 0000000..d7897ee --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/145.html
@@ -0,0 +1,24 @@ +<!DOCTYPE html> +<html><head> + <title>scheduler: SVG inline script adding text to empty script </title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<div id="log"></div> +<script> + var t = async_test(undefined, {timeout:3000}); +</script> +<svg> +<script></script> +</svg> +<script> +t.step(function() { + var s = document.querySelector("svg > script"); + s.textContent = "t.step(function() {log('inline script #1')})"; +}); +onload = t.step_func(function() { + assert_array_equals(eventOrder, ["inline script #1"]); + t.done(); +}); +</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/146-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/146-expected.txt new file mode 100644 index 0000000..daaabfd5 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/146-expected.txt
@@ -0,0 +1,4 @@ +This is a testharness.js-based test. +FAIL scheduler: SVG script adding src attribute assert_array_equals: lengths differ, expected 1 got 0 +Harness: the test ran to completion. +
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/146.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/146.html new file mode 100644 index 0000000..9cf6bb7 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/146.html
@@ -0,0 +1,22 @@ +<!DOCTYPE html> +<html><head> + <title>scheduler: SVG script adding src attribute </title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<div id="log"></div> +<script>var t = async_test();</script> +<svg> +<script></script> +</svg> +<script> +t.step(function() { + var s = document.querySelector("svg > script"); + s.src = "scripts/include-1.js"; +}); +onload = t.step_func(function() { + assert_array_equals(eventOrder, ["external script #1"]); + t.done(); +}); +</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/147.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/147.html new file mode 100644 index 0000000..07dc4d9 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/147.html
@@ -0,0 +1,40 @@ +<!DOCTYPE html> +<html><head> + <title>scheduler: insert multiple inline scripts; first script moves subsequent scripts </title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<body> +<div id="log"></div> +<script> +var t = async_test(); +</script> +<div id="container"></div> +<script> +t.step(function() { + log("inline script #1"); + var container = document.getElementById("container"); + + var frag = document.createDocumentFragment(); + var frag_script_1 = document.createElement("script"); + var frag_script_2 = document.createElement("script"); + frag_script_2.id = "movee"; + var frag_script_3 = document.createElement("script"); + + frag_script_1.textContent = "t.step(function() {log('inline script #2'); var s = document.getElementById('movee'); s.parentNode.appendChild(s)});"; + frag_script_2.textContent = "t.step(function() {log('inline script #3');})"; + frag_script_3.textContent = "t.step(function() {log('inline script #4');})"; + + [frag_script_1, frag_script_2, frag_script_3].forEach(function(x) {frag.appendChild(x)}); + + container.appendChild(frag); +}); + +onload = t.step_func(function() { + assert_array_equals(eventOrder, ["inline script #1", "inline script #2", "inline script #3", "inline script #4"]); + t.done(); +}); +</script> +</body> +</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/148-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/148-expected.txt new file mode 100644 index 0000000..f21ff12c --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/148-expected.txt
@@ -0,0 +1,4 @@ +This is a testharness.js-based test. +FAIL scheduler: insert multiple inline scripts; first script deletes subsequent script assert_array_equals: lengths differ, expected 4 got 3 +Harness: the test ran to completion. +
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/148.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/148.html new file mode 100644 index 0000000..e2da8e8f --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/148.html
@@ -0,0 +1,40 @@ +<!DOCTYPE html> +<html><head> + <title>scheduler: insert multiple inline scripts; first script deletes subsequent script </title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<body> +<div id="log"></div> +<script> +var t = async_test(); +</script> +<div id="container"></div> +<script> +t.step(function() { + log("inline script #1"); + var container = document.getElementById("container"); + + var frag = document.createDocumentFragment(); + var frag_script_1 = document.createElement("script"); + var frag_script_2 = document.createElement("script"); + frag_script_2.id = "delete"; + var frag_script_3 = document.createElement("script"); + + frag_script_1.textContent = "t.step(function() {log('inline script #2'); var s = document.getElementById('delete'); s.parentNode.removeChild(s)});"; + frag_script_2.textContent = "t.step(function() {log('inline script #3');})"; + frag_script_3.textContent = "t.step(function() {log('inline script #4');})"; + + [frag_script_1, frag_script_2, frag_script_3].forEach(function(x) {frag.appendChild(x)}); + + container.appendChild(frag); +}); + +onload = t.step_func(function() { + assert_array_equals(eventOrder, ["inline script #1", "inline script #2", "inline script #3", "inline script #4"]); + t.done(); +}); +</script> +</body> +</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/149.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/149.html new file mode 100644 index 0000000..40594d8 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/149.html
@@ -0,0 +1,59 @@ +<!DOCTYPE html> +<html><head> + <title>scheduler: event/for attribute on script</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="testlib/testlib.js"></script> +</head> +<body> +<div id="log"></div> +<script> + +attributes = [ + {for:"window", event:"onload()", expect:true}, + {for:"window", event:"onload", expect:true}, + {for:" WINdow\t\n", event:"ONload\t\n", expect:true}, + {for:"window", event:"load", expect:false}, + {for:"window", event:"onpageshow", expect:false}, + {for:"document", event:"onload", expect:false}, +] + +function test_maker(array_name) { + return function(x, i) { + var title = "for='" + x.for + "' event='" + x.event + "' " + array_name.replace("_", " ") + " " + (x.expect ? "executes immediately" : "does not execute"); + script_content = "var d =" + array_name + "[" + i + "];" + script_content += x.expect?"d[1].step(function() {d[3] = true});":"d[1].step(function() {assert_unreached()});" + return [x, async_test(title), script_content, false]; + } +} + +parser_inserted = attributes.map(test_maker("parser_inserted")); +dom_inserted = attributes.map(test_maker("dom_inserted")); + +parser_inserted.forEach(function(x) { + var d = x[0]; + document.write("<script for='" + d.for + "' event='" + d.event + "'>" + x[2] + "<\/script>"); +}); + +dom_inserted.forEach(function(x) { + var d = x[0]; + var s = document.createElement("script"); + s.setAttribute("event", d.event); + s.setAttribute("for", d.for); + s.textContent = x[2]; + document.body.appendChild(s); +}); +</script> + +<script> +var all_tests = parser_inserted.concat(dom_inserted); + +all_tests.filter(function(x) {return x[0]["expect"]}).forEach(function(x) {var t = x[1]; t.step(function() {assert_true(x[3])});}) + +onload = function() { + all_tests.forEach(function(x) {var t = x[1]; t.step(function() {t.done()})}); +} +</script> + +</body> +</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/css/background.css b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/css/background.css new file mode 100644 index 0000000..86a155b --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/css/background.css
@@ -0,0 +1 @@ +#test {position:fixed} \ No newline at end of file
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/css/import.css b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/css/import.css new file mode 100644 index 0000000..d1664c2 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/css/import.css
@@ -0,0 +1 @@ +@import url("background.css") \ No newline at end of file
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/pages/helloworld-postMessage.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/pages/helloworld-postMessage.html new file mode 100644 index 0000000..2ed8731 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/pages/helloworld-postMessage.html
@@ -0,0 +1,19 @@ +<!DOCTYPE html> +<html><head> + <title> TC component </title> +</head> +<body> + + <p>This page should appear in popup or frame</p> + + <script type="text/javascript"> + var target = opener || top; + var id = location.search?' '+location.search.substring(1) : ''; + target.log('frame/popup script'+id); + window.onload=function(){ + target.log('load event inside frame/popup script'+id); + target.postMessage('msg evt frame/popup script'+id, '*'); + } + </script> + +</body></html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/pages/helloworld.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/pages/helloworld.html new file mode 100644 index 0000000..271bc8f5 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/pages/helloworld.html
@@ -0,0 +1,15 @@ +<!DOCTYPE html> +<html><head> + <title> TC component </title> +</head> +<body> + + <p>This page should appear in popup or frame</p> + + <script type="text/javascript"> + var target = top || opener; + var id = location.search?' '+parseInt(location.search.substring(1)) : ''; + target.log('frame/popup script'+id); + </script> + +</body></html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/scripts/count-script-tags.js b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/scripts/count-script-tags.js new file mode 100644 index 0000000..8fba4ec --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/scripts/count-script-tags.js
@@ -0,0 +1 @@ +log('script tags in DOM: '+document.getElementsByTagName('script').length); \ No newline at end of file
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/scripts/find-body.js b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/scripts/find-body.js new file mode 100644 index 0000000..22e1050 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/scripts/find-body.js
@@ -0,0 +1,2 @@ +log('document.body: '+(document.body?'<BODY>':null)); +var findBodyLoaded=true; \ No newline at end of file
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/scripts/find-foo.js b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/scripts/find-foo.js new file mode 100644 index 0000000..52d0ec9 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/scripts/find-foo.js
@@ -0,0 +1,2 @@ +log('found #foo element: ' + ( document.getElementById('foo') ? 'YES' : 'NO' )); +var findFooLoaded=true; \ No newline at end of file
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/scripts/include-1.js b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/scripts/include-1.js new file mode 100644 index 0000000..8ff291a --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/scripts/include-1.js
@@ -0,0 +1 @@ +log('external script #1'); \ No newline at end of file
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/scripts/include-10.js b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/scripts/include-10.js new file mode 100644 index 0000000..8dc770d --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/scripts/include-10.js
@@ -0,0 +1 @@ +document.write("<script src='scripts/include-9.js?pipe=trickle(d2)' defer></script>");
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/scripts/include-11.js b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/scripts/include-11.js new file mode 100644 index 0000000..016913c4 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/scripts/include-11.js
@@ -0,0 +1,4 @@ +log("external script before adding iframe"); +var iframe = document.createElement("iframe"); +iframe.srcdoc = "<script>parent.log('script in iframe')</script>" +document.body.appendChild(iframe);
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/scripts/include-2.js b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/scripts/include-2.js new file mode 100644 index 0000000..31319423 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/scripts/include-2.js
@@ -0,0 +1 @@ +log('external script #2'); \ No newline at end of file
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/scripts/include-3.js b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/scripts/include-3.js new file mode 100644 index 0000000..53352e0f --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/scripts/include-3.js
@@ -0,0 +1,3 @@ +log('external script before doc write'); +document.write( '<script>log(\'document.write external script\');</script>'); +log('external script after doc write'); \ No newline at end of file
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/scripts/include-4.js b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/scripts/include-4.js new file mode 100644 index 0000000..0597a22 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/scripts/include-4.js
@@ -0,0 +1,3 @@ +log('include-4 before doc write'); +document.write( '<script src="scripts/include-3.js"></script>'); +log('include-4 after doc write'); \ No newline at end of file
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/scripts/include-5.js b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/scripts/include-5.js new file mode 100644 index 0000000..52952d73 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/scripts/include-5.js
@@ -0,0 +1,7 @@ +log('include-5 before removing scripts'); +var scripts=[].slice.call(document.getElementsByTagName('script'), 3); +for(var i = 0; i < scripts.length; i++) { + var s = scripts[i]; + s.parentNode.removeChild(s); +} +log('include-5 after removing scripts');
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/scripts/include-6.js b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/scripts/include-6.js new file mode 100644 index 0000000..77da2af --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/scripts/include-6.js
@@ -0,0 +1,6 @@ +top.log( + 'external script (#foo found? ' + + (document.getElementById('foo') ? 'YES' : 'NO' ) + + ')' +); +top.include6Loaded=true; \ No newline at end of file
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/scripts/include-7.js b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/scripts/include-7.js new file mode 100644 index 0000000..57c55080 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/scripts/include-7.js
@@ -0,0 +1 @@ +log('external script #7'); \ No newline at end of file
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/scripts/include-8.js b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/scripts/include-8.js new file mode 100644 index 0000000..960f2129 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/scripts/include-8.js
@@ -0,0 +1,4 @@ +log("external script #8"); +var s = document.createElement("script") +s.src='scripts/include-9.js?pipe=trickle(d2)' +document.body.appendChild(s);
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/scripts/include-9.js b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/scripts/include-9.js new file mode 100644 index 0000000..904288202 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/scripts/include-9.js
@@ -0,0 +1,2 @@ +log("external script #9"); +test(); \ No newline at end of file
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/testlib/testlib.js b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/testlib/testlib.js new file mode 100644 index 0000000..a6fd394 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/testlib/testlib.js
@@ -0,0 +1,43 @@ +/* +* Utility functions for script scheduler test +*/ +(function(){ /* namespace hiding local variables like arOrderOfAllEvents from global scope */ + window.testlib = {}; + window.eventOrder = []; + var arNumberOfScriptsParsedPerEvent=[]; + window.log = function (str){ + eventOrder.push(str); + arNumberOfScriptsParsedPerEvent.push(document.getElementsByTagName('script').length); + } + + window.testlib.addScript = function(source, attributes, parent, firstInParent,funcPrepare) { + try{ + parent = parent||document.body; + var script = document.createElement('script'); + if(funcPrepare) { + funcPrepare(script); + } + if(source)script.appendChild( document.createTextNode(source) ); + for( var name in attributes){ + if(/^on/i.test(name)) { + script[name] = attributes[name]; + } else { + script.setAttribute(name, attributes[name]); + } + } + if (firstInParent && parent.firstChild) { + parent.insertBefore(script, parent.firstChild); + } else { + parent.appendChild(script); + } + } catch(e) { + log('ERROR when adding script to DOM!'); + alert(e); + } + return script; + } + + window.testlib.urlParam = function(relativeURL) { + return location.href.replace( /\d*\.html$/, relativeURL); + } +})();
diff --git a/third_party/WebKit/LayoutTests/external/wpt/interfaces/console.idl b/third_party/WebKit/LayoutTests/external/wpt/interfaces/console.idl new file mode 100644 index 0000000..7f5da773 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/interfaces/console.idl
@@ -0,0 +1,22 @@ +[Exposed=(Window,Worker,Worklet)] +namespace console { + void assert(optional boolean condition = false, any... data); + void clear(); + void count(optional DOMString label = "default"); + void debug(any... data); + void error(any... data); + void info(any... data); + void log(any... data); + void table(any tabularData, optional sequence<DOMString> properties); + void trace(any... data); + void warn(any... data); + void dir(any item, optional object? options); + void dirxml(any... data); + + void group(any... data); + void groupCollapsed(any... data); + void groupEnd(); + + void time(optional DOMString label = "default"); + void timeEnd(optional DOMString label = "default"); +};
diff --git a/third_party/WebKit/LayoutTests/external/wpt/lint.whitelist b/third_party/WebKit/LayoutTests/external/wpt/lint.whitelist index 7c72c5e2..53df646a 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/lint.whitelist +++ b/third_party/WebKit/LayoutTests/external/wpt/lint.whitelist
@@ -180,7 +180,6 @@ SET TIMEOUT: old-tests/submission/Microsoft/history/history_000.htm SET TIMEOUT: old-tests/submission/Microsoft/sandbox/* SET TIMEOUT: old-tests/submission/Microsoft/structuredclone/structuredclone_0.html -SET TIMEOUT: old-tests/submission/Opera/script_scheduling/* SET TIMEOUT: old-tests/webdriver/timeouts/res/implicit_waits_tests.html SET TIMEOUT: page-visibility/resources/pagevistestharness.js SET TIMEOUT: payment-request/allowpaymentrequest/setting-allowpaymentrequest-timing.https.sub.html
diff --git a/third_party/WebKit/LayoutTests/external/wpt/navigation-timing/idlharness-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/navigation-timing/idlharness-expected.txt deleted file mode 100644 index 176f7d9..0000000 --- a/third_party/WebKit/LayoutTests/external/wpt/navigation-timing/idlharness-expected.txt +++ /dev/null
@@ -1,114 +0,0 @@ -This is a testharness.js-based test. -Found 110 tests; 109 PASS, 1 FAIL, 0 TIMEOUT, 0 NOTRUN. -PASS Performance interface: attribute timing -PASS Performance interface: attribute navigation -PASS PerformanceNavigationTiming interface: existence and properties of interface object -PASS PerformanceNavigationTiming interface object length -PASS PerformanceNavigationTiming interface object name -PASS PerformanceNavigationTiming interface: existence and properties of interface prototype object -PASS PerformanceNavigationTiming interface: existence and properties of interface prototype object's "constructor" property -PASS PerformanceNavigationTiming interface: attribute unloadEventStart -PASS PerformanceNavigationTiming interface: attribute unloadEventEnd -PASS PerformanceNavigationTiming interface: attribute domInteractive -PASS PerformanceNavigationTiming interface: attribute domContentLoadedEventStart -PASS PerformanceNavigationTiming interface: attribute domContentLoadedEventEnd -PASS PerformanceNavigationTiming interface: attribute domComplete -PASS PerformanceNavigationTiming interface: attribute loadEventStart -PASS PerformanceNavigationTiming interface: attribute loadEventEnd -PASS PerformanceNavigationTiming interface: attribute type -PASS PerformanceNavigationTiming interface: attribute redirectCount -PASS PerformanceNavigationTiming interface: operation toJSON() -PASS PerformanceNavigationTiming must be primary interface of window.performance.getEntriesByType('navigation')[0] -PASS Stringification of window.performance.getEntriesByType('navigation')[0] -PASS PerformanceNavigationTiming interface: window.performance.getEntriesByType('navigation')[0] must inherit property "unloadEventStart" with the proper type -PASS PerformanceNavigationTiming interface: window.performance.getEntriesByType('navigation')[0] must inherit property "unloadEventEnd" with the proper type -PASS PerformanceNavigationTiming interface: window.performance.getEntriesByType('navigation')[0] must inherit property "domInteractive" with the proper type -PASS PerformanceNavigationTiming interface: window.performance.getEntriesByType('navigation')[0] must inherit property "domContentLoadedEventStart" with the proper type -PASS PerformanceNavigationTiming interface: window.performance.getEntriesByType('navigation')[0] must inherit property "domContentLoadedEventEnd" with the proper type -PASS PerformanceNavigationTiming interface: window.performance.getEntriesByType('navigation')[0] must inherit property "domComplete" with the proper type -PASS PerformanceNavigationTiming interface: window.performance.getEntriesByType('navigation')[0] must inherit property "loadEventStart" with the proper type -PASS PerformanceNavigationTiming interface: window.performance.getEntriesByType('navigation')[0] must inherit property "loadEventEnd" with the proper type -PASS PerformanceNavigationTiming interface: window.performance.getEntriesByType('navigation')[0] must inherit property "type" with the proper type -PASS PerformanceNavigationTiming interface: window.performance.getEntriesByType('navigation')[0] must inherit property "redirectCount" with the proper type -PASS PerformanceNavigationTiming interface: window.performance.getEntriesByType('navigation')[0] must inherit property "toJSON()" with the proper type -FAIL Test default toJSON operation of PerformanceNavigationTiming assert_unreached: property "serverTiming" should not be present in the output of PerformanceNavigationTiming.prototype.toJSON() Reached unreachable code -PASS PerformanceTiming interface: existence and properties of interface object -PASS PerformanceTiming interface object length -PASS PerformanceTiming interface object name -PASS PerformanceTiming interface: existence and properties of interface prototype object -PASS PerformanceTiming interface: existence and properties of interface prototype object's "constructor" property -PASS PerformanceTiming interface: attribute navigationStart -PASS PerformanceTiming interface: attribute unloadEventStart -PASS PerformanceTiming interface: attribute unloadEventEnd -PASS PerformanceTiming interface: attribute redirectStart -PASS PerformanceTiming interface: attribute redirectEnd -PASS PerformanceTiming interface: attribute fetchStart -PASS PerformanceTiming interface: attribute domainLookupStart -PASS PerformanceTiming interface: attribute domainLookupEnd -PASS PerformanceTiming interface: attribute connectStart -PASS PerformanceTiming interface: attribute connectEnd -PASS PerformanceTiming interface: attribute secureConnectionStart -PASS PerformanceTiming interface: attribute requestStart -PASS PerformanceTiming interface: attribute responseStart -PASS PerformanceTiming interface: attribute responseEnd -PASS PerformanceTiming interface: attribute domLoading -PASS PerformanceTiming interface: attribute domInteractive -PASS PerformanceTiming interface: attribute domContentLoadedEventStart -PASS PerformanceTiming interface: attribute domContentLoadedEventEnd -PASS PerformanceTiming interface: attribute domComplete -PASS PerformanceTiming interface: attribute loadEventStart -PASS PerformanceTiming interface: attribute loadEventEnd -PASS PerformanceTiming interface: operation toJSON() -PASS PerformanceTiming must be primary interface of window.performance.timing -PASS Stringification of window.performance.timing -PASS PerformanceTiming interface: window.performance.timing must inherit property "navigationStart" with the proper type -PASS PerformanceTiming interface: window.performance.timing must inherit property "unloadEventStart" with the proper type -PASS PerformanceTiming interface: window.performance.timing must inherit property "unloadEventEnd" with the proper type -PASS PerformanceTiming interface: window.performance.timing must inherit property "redirectStart" with the proper type -PASS PerformanceTiming interface: window.performance.timing must inherit property "redirectEnd" with the proper type -PASS PerformanceTiming interface: window.performance.timing must inherit property "fetchStart" with the proper type -PASS PerformanceTiming interface: window.performance.timing must inherit property "domainLookupStart" with the proper type -PASS PerformanceTiming interface: window.performance.timing must inherit property "domainLookupEnd" with the proper type -PASS PerformanceTiming interface: window.performance.timing must inherit property "connectStart" with the proper type -PASS PerformanceTiming interface: window.performance.timing must inherit property "connectEnd" with the proper type -PASS PerformanceTiming interface: window.performance.timing must inherit property "secureConnectionStart" with the proper type -PASS PerformanceTiming interface: window.performance.timing must inherit property "requestStart" with the proper type -PASS PerformanceTiming interface: window.performance.timing must inherit property "responseStart" with the proper type -PASS PerformanceTiming interface: window.performance.timing must inherit property "responseEnd" with the proper type -PASS PerformanceTiming interface: window.performance.timing must inherit property "domLoading" with the proper type -PASS PerformanceTiming interface: window.performance.timing must inherit property "domInteractive" with the proper type -PASS PerformanceTiming interface: window.performance.timing must inherit property "domContentLoadedEventStart" with the proper type -PASS PerformanceTiming interface: window.performance.timing must inherit property "domContentLoadedEventEnd" with the proper type -PASS PerformanceTiming interface: window.performance.timing must inherit property "domComplete" with the proper type -PASS PerformanceTiming interface: window.performance.timing must inherit property "loadEventStart" with the proper type -PASS PerformanceTiming interface: window.performance.timing must inherit property "loadEventEnd" with the proper type -PASS PerformanceTiming interface: window.performance.timing must inherit property "toJSON()" with the proper type -PASS Test default toJSON operation of PerformanceTiming -PASS PerformanceNavigation interface: existence and properties of interface object -PASS PerformanceNavigation interface object length -PASS PerformanceNavigation interface object name -PASS PerformanceNavigation interface: existence and properties of interface prototype object -PASS PerformanceNavigation interface: existence and properties of interface prototype object's "constructor" property -PASS PerformanceNavigation interface: constant TYPE_NAVIGATE on interface object -PASS PerformanceNavigation interface: constant TYPE_NAVIGATE on interface prototype object -PASS PerformanceNavigation interface: constant TYPE_RELOAD on interface object -PASS PerformanceNavigation interface: constant TYPE_RELOAD on interface prototype object -PASS PerformanceNavigation interface: constant TYPE_BACK_FORWARD on interface object -PASS PerformanceNavigation interface: constant TYPE_BACK_FORWARD on interface prototype object -PASS PerformanceNavigation interface: constant TYPE_RESERVED on interface object -PASS PerformanceNavigation interface: constant TYPE_RESERVED on interface prototype object -PASS PerformanceNavigation interface: attribute type -PASS PerformanceNavigation interface: attribute redirectCount -PASS PerformanceNavigation interface: operation toJSON() -PASS PerformanceNavigation must be primary interface of window.performance.navigation -PASS Stringification of window.performance.navigation -PASS PerformanceNavigation interface: window.performance.navigation must inherit property "TYPE_NAVIGATE" with the proper type -PASS PerformanceNavigation interface: window.performance.navigation must inherit property "TYPE_RELOAD" with the proper type -PASS PerformanceNavigation interface: window.performance.navigation must inherit property "TYPE_BACK_FORWARD" with the proper type -PASS PerformanceNavigation interface: window.performance.navigation must inherit property "TYPE_RESERVED" with the proper type -PASS PerformanceNavigation interface: window.performance.navigation must inherit property "type" with the proper type -PASS PerformanceNavigation interface: window.performance.navigation must inherit property "redirectCount" with the proper type -PASS PerformanceNavigation interface: window.performance.navigation must inherit property "toJSON()" with the proper type -PASS Test default toJSON operation of PerformanceNavigation -Harness: the test ran to completion. -
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 index 3bd86b4..954cfcbe 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/resource-timing/idlharness-expected.txt +++ b/third_party/WebKit/LayoutTests/external/wpt/resource-timing/idlharness-expected.txt
@@ -1,5 +1,5 @@ This is a testharness.js-based test. -Found 51 tests; 49 PASS, 2 FAIL, 0 TIMEOUT, 0 NOTRUN. +Found 51 tests; 50 PASS, 1 FAIL, 0 TIMEOUT, 0 NOTRUN. PASS Performance interface: operation clearResourceTimings() PASS Performance interface: operation setResourceTimingBufferSize(unsigned long) PASS Performance interface: attribute onresourcetimingbufferfull @@ -50,6 +50,6 @@ PASS PerformanceResourceTiming interface: window.performance.getEntriesByType('resource')[0] must inherit property "encodedBodySize" with the proper type PASS PerformanceResourceTiming interface: window.performance.getEntriesByType('resource')[0] must inherit property "decodedBodySize" with the proper type PASS PerformanceResourceTiming interface: window.performance.getEntriesByType('resource')[0] must inherit property "toJSON()" with the proper type -FAIL Test default toJSON operation of PerformanceResourceTiming assert_unreached: property "serverTiming" should not be present in the output of PerformanceResourceTiming.prototype.toJSON() Reached unreachable code +PASS Test default toJSON operation of PerformanceResourceTiming Harness: the test ran to completion.
diff --git a/third_party/WebKit/LayoutTests/external/wpt/resources/idlharness.js b/third_party/WebKit/LayoutTests/external/wpt/resources/idlharness.js index a3bc373b..eda6a42 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/resources/idlharness.js +++ b/third_party/WebKit/LayoutTests/external/wpt/resources/idlharness.js
@@ -1861,9 +1861,6 @@ this.array.assert_type_is(json[k], type); delete json[k]; }, this); - for (var k in json) { - assert_unreached("property " + JSON.stringify(k) + " should not be present in the output of " + this.name + ".prototype.toJSON()"); - } }.bind(this), "Test default toJSON operation of " + this.name); } else { test(function() {
diff --git a/third_party/WebKit/LayoutTests/external/wpt/resources/test/tests/idlharness/IdlInterface/test_to_json_operation.html b/third_party/WebKit/LayoutTests/external/wpt/resources/test/tests/idlharness/IdlInterface/test_to_json_operation.html index 2dd9371..18fc319 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/resources/test/tests/idlharness/IdlInterface/test_to_json_operation.html +++ b/third_party/WebKit/LayoutTests/external/wpt/resources/test/tests/idlharness/IdlInterface/test_to_json_operation.html
@@ -32,18 +32,14 @@ i = interfaceFrom("interface B { [Default] object toJSON(); attribute long foo; };"); i.test_to_json_operation(wrap({ foo: "a value" }), i.members[0]); - // should fail (extra property) + // should handle extraneous attributes (e.g. from an extension specification) i = interfaceFrom("interface C { [Default] object toJSON(); attribute long foo; };"); - i.test_to_json_operation(wrap({ foo: 123, bar: null }), i.members[0]); + i.test_to_json_operation(wrap({ foo: 123, bar: 456 }), i.members[0]); // should fail (missing property) i = interfaceFrom("interface D { [Default] object toJSON(); attribute long foo; };"); i.test_to_json_operation(wrap({ }), i.members[0]); - // should fail (extra property) - i = interfaceFrom("interface E { [Default] object toJSON(); attribute long foo; attribute Promise<long> baz; };"); - i.test_to_json_operation(wrap({ foo: 123, baz: 123 }), i.members[0]); - // should fail (should be writable) obj = Object.defineProperties({}, { foo: { writable: false, @@ -117,11 +113,11 @@ "status_string": "FAIL" }, { - "message": "assert_unreached: property \"bar\" should not be present in the output of C.prototype.toJSON() Reached unreachable code", + "message": null, "name": "Test default toJSON operation of C", "properties": {}, - "stack": "(implementation-defined)", - "status_string": "FAIL" + "stack": null, + "status_string": "PASS" }, { "message": "assert_true: property \"foo\" should be present in the output of D.prototype.toJSON() expected true got false", @@ -131,13 +127,6 @@ "status_string": "FAIL" }, { - "message": "assert_unreached: property \"baz\" should not be present in the output of E.prototype.toJSON() Reached unreachable code", - "name": "Test default toJSON operation of E", - "properties": {}, - "stack": "(implementation-defined)", - "status_string": "FAIL" - }, - { "message": "assert_true: property foo should be writable expected true got false", "name": "Test default toJSON operation of F", "properties": {},
diff --git a/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/mime-sniffing.https.html b/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/mime-sniffing.https.html new file mode 100644 index 0000000..8175bcd --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/mime-sniffing.https.html
@@ -0,0 +1,24 @@ +<!DOCTYPE html> +<title>Service Worker: MIME sniffing</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/common/get-host-info.sub.js"></script> +<script src="resources/test-helpers.sub.js"></script> +<script> +promise_test(t => { + const SCOPE = 'resources/blank.html?mime-sniffing'; + const SCRIPT = 'resources/mime-sniffing-worker.js'; + return service_worker_unregister_and_register(t, SCRIPT, SCOPE) + .then(registration => { + add_completion_callback(() => registration.unregister()); + return wait_for_state(t, registration.installing, 'activated'); + }) + .then(_ => with_iframe(SCOPE)) + .then(frame => { + add_completion_callback(() => frame.remove()); + assert_equals(frame.contentWindow.document.body.innerText, 'test'); + const h1 = frame.contentWindow.document.getElementById('testid'); + assert_equals(h1.innerText,'test'); + }); + }, 'The response from service worker should be correctly MIME siniffed.'); +</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/resources/mime-sniffing-worker.js b/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/resources/mime-sniffing-worker.js new file mode 100644 index 0000000..0466280 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/resources/mime-sniffing-worker.js
@@ -0,0 +1,5 @@ +self.addEventListener('fetch', function(event) { + var res = new Response('<!DOCTYPE html>\n<h1 id=\'testid\'>test</h1>'); + res.headers.delete('content-type'); + event.respondWith(res); + });
diff --git a/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/resources/navigation-redirect-out-scope.py b/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/resources/navigation-redirect-out-scope.py index 0cd5ef1..907cefa 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/resources/navigation-redirect-out-scope.py +++ b/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/resources/navigation-redirect-out-scope.py
@@ -8,7 +8,7 @@ if "noLocationRedirect" in request.GET: status = 302 - return status, [], ''' + return status, [("content-type", "text/html")], ''' <!DOCTYPE html> <script> window.parent.postMessage(
diff --git a/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/resources/navigation-redirect-scope1.py b/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/resources/navigation-redirect-scope1.py index 0cd5ef1..907cefa 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/resources/navigation-redirect-scope1.py +++ b/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/resources/navigation-redirect-scope1.py
@@ -8,7 +8,7 @@ if "noLocationRedirect" in request.GET: status = 302 - return status, [], ''' + return status, [("content-type", "text/html")], ''' <!DOCTYPE html> <script> window.parent.postMessage(
diff --git a/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/resources/navigation-redirect-scope2.py b/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/resources/navigation-redirect-scope2.py index 0cd5ef1..907cefa 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/resources/navigation-redirect-scope2.py +++ b/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/resources/navigation-redirect-scope2.py
@@ -8,7 +8,7 @@ if "noLocationRedirect" in request.GET: status = 302 - return status, [], ''' + return status, [("content-type", "text/html")], ''' <!DOCTYPE html> <script> window.parent.postMessage(
diff --git a/third_party/WebKit/LayoutTests/fast/borders/borderRadiusDashed01-expected.png b/third_party/WebKit/LayoutTests/fast/borders/borderRadiusDashed01-expected.png index 580dfdb..766e0a6 100644 --- a/third_party/WebKit/LayoutTests/fast/borders/borderRadiusDashed01-expected.png +++ b/third_party/WebKit/LayoutTests/fast/borders/borderRadiusDashed01-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/fast/borders/borderRadiusDashed02-expected.png b/third_party/WebKit/LayoutTests/fast/borders/borderRadiusDashed02-expected.png index fdd20cf..15e403d5 100644 --- a/third_party/WebKit/LayoutTests/fast/borders/borderRadiusDashed02-expected.png +++ b/third_party/WebKit/LayoutTests/fast/borders/borderRadiusDashed02-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/fast/borders/borderRadiusDashed03-expected.png b/third_party/WebKit/LayoutTests/fast/borders/borderRadiusDashed03-expected.png index 4c35b3b..f22f105 100644 --- a/third_party/WebKit/LayoutTests/fast/borders/borderRadiusDashed03-expected.png +++ b/third_party/WebKit/LayoutTests/fast/borders/borderRadiusDashed03-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/fast/borders/borderRadiusDashed04-expected.png b/third_party/WebKit/LayoutTests/fast/borders/borderRadiusDashed04-expected.png index e90bb24..48699fef 100644 --- a/third_party/WebKit/LayoutTests/fast/borders/borderRadiusDashed04-expected.png +++ b/third_party/WebKit/LayoutTests/fast/borders/borderRadiusDashed04-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/fast/borders/borderRadiusDashed05-expected.png b/third_party/WebKit/LayoutTests/fast/borders/borderRadiusDashed05-expected.png index a8c99b6..f312430 100644 --- a/third_party/WebKit/LayoutTests/fast/borders/borderRadiusDashed05-expected.png +++ b/third_party/WebKit/LayoutTests/fast/borders/borderRadiusDashed05-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/fast/borders/borderRadiusDashed06-expected.png b/third_party/WebKit/LayoutTests/fast/borders/borderRadiusDashed06-expected.png index d2bdb27..761ebd6 100644 --- a/third_party/WebKit/LayoutTests/fast/borders/borderRadiusDashed06-expected.png +++ b/third_party/WebKit/LayoutTests/fast/borders/borderRadiusDashed06-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/fast/borders/dashed-1px-with-border-radius.html b/third_party/WebKit/LayoutTests/fast/borders/dashed-1px-with-border-radius.html new file mode 100644 index 0000000..12e91382 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/borders/dashed-1px-with-border-radius.html
@@ -0,0 +1,22 @@ +<!DOCTYPE html> +<head> + <style> + p { + border: 1px dashed; + font-family: monospace; + margin: 0.25em 0; + padding: 0.5em; + } + #b1 { + border-radius: 1px; + } + #b2 { + border-radius: 2px; + } + </style> +</head> +<body> + <!-- These two borders should appear to be the same thickness. --> + <p id="b1">border: 1px dashed; border-radius: 1px;</p> + <p id="b2">border: 1px dashed; border-radius: 2px;</p> +</body>
diff --git a/third_party/WebKit/LayoutTests/fast/borders/dotted-border-ajoining-thick-expected.png b/third_party/WebKit/LayoutTests/fast/borders/dotted-border-ajoining-thick-expected.png index f82a02c2..a6692d6b 100644 --- a/third_party/WebKit/LayoutTests/fast/borders/dotted-border-ajoining-thick-expected.png +++ b/third_party/WebKit/LayoutTests/fast/borders/dotted-border-ajoining-thick-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/fast/forms/javascript-cannot-access-suggested-value.html b/third_party/WebKit/LayoutTests/fast/forms/javascript-cannot-access-suggested-value.html deleted file mode 100644 index 336d13b..0000000 --- a/third_party/WebKit/LayoutTests/fast/forms/javascript-cannot-access-suggested-value.html +++ /dev/null
@@ -1,73 +0,0 @@ -<!DOCTYPE html> -<script src="../../resources/testharness.js"></script> -<script src="../../resources/testharnessreport.js"></script> -<div id="log"></div> - -<form> -<input id="ccname" name="ccname" autocomplete="cc-name" autofocus=""> -<input id="cardnumber" name="cardnumber" autocomplete="cc-number"> -<input id="cvc" name="cvc" autocomplete="cc-csc"> -<input id="ccexp" name="ccexp" autocomplete="cc-exp"> -<input type="submit"> -</form> -<button onclick="document.forms[0].classList.toggle('hidden')">Hide form</button> -<div id="info" style="position:absolute;left:400px"></div> -<script> -// Setup the JavaScript function that tries to access to the suggested values. -function grabField(field) { - // Simulate the user attempting to modify the suggested value. - field.focus(); - field.setSelectionRange(0,0); - var result = document.execCommand('insertText', false, ' '); - - var val = field.value.trim(); - field.value=''; - assert_equals(val, '', 'The JavaScript should not be able to access the suggested values.'); -} - -// Test that tries to grab the suggested value on empty fields. -test(function() { - assert_true(window.internals != null, 'This test requires internals object'); - - // Set some suggested values. - var ccname = document.getElementById('ccname'); - var cardnumber = document.getElementById('cardnumber'); - var cvc = document.getElementById('cvc'); - var ccexp = document.getElementById('ccexp'); - internals.setSuggestedValue(ccname, 'suggested ccname'); - internals.setSuggestedValue(cardnumber, 'suggested cardnumber'); - internals.setSuggestedValue(cvc, 'suggested cvc'); - internals.setSuggestedValue(ccexp, 'suggested ccexp'); - - // Try to grab the suggested values in the fields. - grabField(ccname); - grabField(cardnumber); - grabField(cvc); - grabField(ccexp); - -}, "JavaScript should not be able to access the suggested values on empty fields."); - -// Test that tries to grab the suggested value on a field that contains a value. -test(function() { - assert_true(window.internals != null, 'This test requires internals object'); - - // Setup the JavaScript that adds some values in the fields. - function addValue(field) { - // Add some value in the field. - field.value = "Homer"; - } - - var ccname = document.getElementById('ccname'); - - // Add some value in the field. - ccname.value = "Homer"; - - // Set the suggested value. - internals.setSuggestedValue(ccname, 'suggested ccname'); - - // Try to grab the suggested values in the field. - grabField(ccname); - -}, "JavaScript should not be able to access the suggested value on a field that has some value."); - -</script> \ No newline at end of file
diff --git a/third_party/WebKit/LayoutTests/fast/forms/suggested-value-after-empty-suggested-value-expected.txt b/third_party/WebKit/LayoutTests/fast/forms/suggested-value-after-empty-suggested-value-expected.txt deleted file mode 100644 index 2e6745e..0000000 --- a/third_party/WebKit/LayoutTests/fast/forms/suggested-value-after-empty-suggested-value-expected.txt +++ /dev/null
@@ -1,285 +0,0 @@ -This test verifies that setting an empty suggested value removes/resets the shadow placeholder value. - -Input before setting suggested values: -| <input> -| id="test" -| type="text" -| value="initial value" -| this.value="initial value" -| <shadow:root> -| <div> -| id="inner-editor" -| "initial value" -| <br> -| " -" -| <input> -| id="inputwithplaceholder" -| placeholder="initial placeholder" -| type="text" -| this.value="" -| <shadow:root> -| <div> -| id="placeholder" -| pseudo="-webkit-input-placeholder" -| style="display: block !important; text-overflow: clip;" -| shadow:pseudoId="-webkit-input-placeholder" -| "initial placeholder" -| <div> -| id="inner-editor" -| <br> -| " -" -| <textarea> -| id="textarea" -| this.value="initial value" -| "initial value" -| <shadow:root> -| <div> -| id="inner-editor" -| "initial value" -| <br> -| " -" -| <textarea> -| id="textareaWithPlaceholder" -| placeholder="initial placeholder" -| this.value="" -| <shadow:root> -| <div> -| id="placeholder" -| pseudo="-webkit-input-placeholder" -| style="display: block !important;" -| shadow:pseudoId="-webkit-input-placeholder" -| "initial placeholder" -| <div> -| id="inner-editor" -| <br> -| " -" -| <select> -| id="select" -| <option> -| "CA" -| <shadow:root> -| "CA" -| <option> -| "TX" -| <shadow:root> -| "TX" -| <shadow:root> -| <content> -| select="option,optgroup,hr" -| "input.value: initial value" -| "internals.suggestedValue(input): " -| "inputWithPlaceholder.value: " -| "internals.suggestedValue(inputWithPlaceholder): " -| "textarea.value: initial value" -| "internals.suggestedValue(textarea): " -| "textareaWithPlaceholder.value: " -| "internals.suggestedValue(textareaWithPlaceholder): " -| "select.value: " -| "internals.suggestedValue(select): " - -Input after setting suggestedValue: -| <input> -| id="test" -| type="text" -| value="initial value" -| this.value="initial value" -| <shadow:root> -| <div> -| id="placeholder" -| pseudo="-webkit-input-placeholder" -| style="display: none !important;" -| shadow:pseudoId="-webkit-input-placeholder" -| "suggested value" -| <div> -| id="inner-editor" -| <br> -| " -" -| <input> -| id="inputwithplaceholder" -| placeholder="initial placeholder" -| type="text" -| this.value="" -| <shadow:root> -| <div> -| id="placeholder" -| pseudo="-webkit-input-placeholder" -| style="display: block !important; text-overflow: clip;" -| shadow:pseudoId="-webkit-input-placeholder" -| "suggested value" -| <div> -| id="inner-editor" -| <br> -| " -" -| <textarea> -| id="textarea" -| this.value="initial value" -| "initial value" -| <shadow:root> -| <div> -| id="placeholder" -| pseudo="-webkit-input-placeholder" -| style="display: none !important;" -| shadow:pseudoId="-webkit-input-placeholder" -| "suggested value" -| <div> -| id="inner-editor" -| <br> -| " -" -| <textarea> -| id="textareaWithPlaceholder" -| placeholder="initial placeholder" -| this.value="" -| <shadow:root> -| <div> -| id="placeholder" -| pseudo="-webkit-input-placeholder" -| style="display: block !important;" -| shadow:pseudoId="-webkit-input-placeholder" -| "suggested value" -| <div> -| id="inner-editor" -| <br> -| " -" -| <select> -| id="select" -| <option> -| "CA" -| <shadow:root> -| "CA" -| <option> -| "TX" -| <shadow:root> -| "TX" -| <shadow:root> -| <content> -| select="option,optgroup,hr" -| "input.value: initial value" -| "internals.suggestedValue(input): " -| "inputWithPlaceholder.value: " -| "internals.suggestedValue(inputWithPlaceholder): " -| "textarea.value: initial value" -| "internals.suggestedValue(textarea): " -| "textareaWithPlaceholder.value: " -| "internals.suggestedValue(textareaWithPlaceholder): " -| "select.value: " -| "internals.suggestedValue(select): " -| "input.value: initial value" -| "internals.suggestedValue(input): suggested value" -| "inputWithPlaceholder.value: " -| "internals.suggestedValue(inputWithPlaceholder): suggested value" -| "textarea.value: initial value" -| "internals.suggestedValue(textarea): suggested value" -| "textareaWithPlaceholder.value: " -| "internals.suggestedValue(textareaWithPlaceholder): suggested value" -| "select.value: " -| "internals.suggestedValue(select): TX" - -After resetting suggestedValue value: -| <input> -| id="test" -| type="text" -| value="initial value" -| this.value="initial value" -| <shadow:root> -| <div> -| id="inner-editor" -| "initial value" -| <br> -| " -" -| <input> -| id="inputwithplaceholder" -| placeholder="initial placeholder" -| type="text" -| this.value="" -| <shadow:root> -| <div> -| id="placeholder" -| pseudo="-webkit-input-placeholder" -| style="display: block !important; text-overflow: clip;" -| shadow:pseudoId="-webkit-input-placeholder" -| "initial placeholder" -| <div> -| id="inner-editor" -| <br> -| " -" -| <textarea> -| id="textarea" -| this.value="initial value" -| "initial value" -| <shadow:root> -| <div> -| id="inner-editor" -| "initial value" -| <br> -| " -" -| <textarea> -| id="textareaWithPlaceholder" -| placeholder="initial placeholder" -| this.value="" -| <shadow:root> -| <div> -| id="placeholder" -| pseudo="-webkit-input-placeholder" -| style="display: block !important;" -| shadow:pseudoId="-webkit-input-placeholder" -| "initial placeholder" -| <div> -| id="inner-editor" -| <br> -| " -" -| <select> -| id="select" -| <option> -| "CA" -| <shadow:root> -| "CA" -| <option> -| "TX" -| <shadow:root> -| "TX" -| <shadow:root> -| <content> -| select="option,optgroup,hr" -| "input.value: initial value" -| "internals.suggestedValue(input): " -| "inputWithPlaceholder.value: " -| "internals.suggestedValue(inputWithPlaceholder): " -| "textarea.value: initial value" -| "internals.suggestedValue(textarea): " -| "textareaWithPlaceholder.value: " -| "internals.suggestedValue(textareaWithPlaceholder): " -| "select.value: " -| "internals.suggestedValue(select): " -| "input.value: initial value" -| "internals.suggestedValue(input): suggested value" -| "inputWithPlaceholder.value: " -| "internals.suggestedValue(inputWithPlaceholder): suggested value" -| "textarea.value: initial value" -| "internals.suggestedValue(textarea): suggested value" -| "textareaWithPlaceholder.value: " -| "internals.suggestedValue(textareaWithPlaceholder): suggested value" -| "select.value: " -| "internals.suggestedValue(select): TX" -| "input.value: initial value" -| "internals.suggestedValue(input): " -| "inputWithPlaceholder.value: " -| "internals.suggestedValue(inputWithPlaceholder): " -| "textarea.value: initial value" -| "internals.suggestedValue(textarea): " -| "textareaWithPlaceholder.value: " -| "internals.suggestedValue(textareaWithPlaceholder): " -| "select.value: " -| "internals.suggestedValue(select): " -| "PASS"
diff --git a/third_party/WebKit/LayoutTests/fast/forms/suggested-value-after-empty-suggested-value.html b/third_party/WebKit/LayoutTests/fast/forms/suggested-value-after-empty-suggested-value.html deleted file mode 100644 index d0451d4e..0000000 --- a/third_party/WebKit/LayoutTests/fast/forms/suggested-value-after-empty-suggested-value.html +++ /dev/null
@@ -1,92 +0,0 @@ -<!DOCTYPE html> -<html> -<body> -<p id="description">This test verifies that setting an empty suggested value removes/resets the shadow placeholder value.</p> -<pre><input id="test" type="text" value="initial value"><br> -<input id="inputwithplaceholder" type="text" placeholder="initial placeholder"><br> -<textarea id="textarea">initial value</textarea><br> -<textarea id="textareaWithPlaceholder" placeholder="initial placeholder"></textarea><br> -<select id="select"><option>CA</option><option>TX</option></select></pre> -<script src="../../resources/dump-as-markup.js"></script> -<script> - -var input = document.getElementById('test'); -var inputWithPlaceholder = document.getElementById('inputwithplaceholder'); -var textarea = document.getElementById('textarea'); -//textarea.value = "initial value" -var textareaWithPlaceholder = document.getElementById('textareaWithPlaceholder'); -var select = document.getElementById('select'); -select.selectedIndex = -1; -var result = document.getElementById('result'); -if (!window.internals) - testFailed('This test requires internals object'); -else { - input.focus(); - input.selectionStart = input.selectionEnd = 0; - - function addText(text) { - input.parentNode.appendChild(document.createTextNode(text)); - } - - function log() { - function addTextResult(value) { addText(value + ': ' + eval(value)); } - addTextResult('input.value'); - addTextResult('internals.suggestedValue(input)'); - addTextResult('inputWithPlaceholder.value'); - addTextResult('internals.suggestedValue(inputWithPlaceholder)'); - addTextResult('textarea.value'); - addTextResult('internals.suggestedValue(textarea)'); - addTextResult('textareaWithPlaceholder.value'); - addTextResult('internals.suggestedValue(textareaWithPlaceholder)'); - addTextResult('select.value'); - addTextResult('internals.suggestedValue(select)'); - } - - function getSelectedValues(select) { - var selectedValues = []; - for (var i = 0; i < select.options.length; i++) { - var option = select.options[i]; - if (option.selected) - selectedValues.push(option.value); - } - return selectedValues.join(','); - } - - Markup.description(document.getElementById('description').textContent) - - log(); - Markup.dump(input.parentNode, 'Input before setting suggested values'); - - // Set some suggested value to all the fields. - internals.setSuggestedValue(input, 'suggested value'); - internals.setSuggestedValue(inputWithPlaceholder, 'suggested value'); - internals.setSuggestedValue(textarea, 'suggested value'); - internals.setSuggestedValue(textareaWithPlaceholder, 'suggested value'); - internals.setSuggestedValue(select, 'TX'); - log(); - Markup.dump(input.parentNode, 'Input after setting suggestedValue'); - - // Set an empty suggested value to all the fields. - internals.setSuggestedValue(input, ''); - internals.setSuggestedValue(inputWithPlaceholder, ''); - internals.setSuggestedValue(textarea, ''); - internals.setSuggestedValue(textareaWithPlaceholder, ''); - internals.setSuggestedValue(select, ''); - - log(); - var innerTextValue = internals.shadowRoot(input).lastChild.innerText; - var innerTextWithPlaceholderValue = internals.shadowRoot(inputWithPlaceholder).lastChild.innerText; - var innerTextAreaValue = internals.shadowRoot(textarea).lastChild.innerText; - var innerTextAreaWithPlaceholderValue = internals.shadowRoot(textareaWithPlaceholder).lastChild.innerText; - var selectedValues = getSelectedValues(select); - addText(innerTextValue == 'initial value' && - innerTextWithPlaceholderValue == '' && - innerTextAreaValue == 'initial value' && - innerTextAreaWithPlaceholderValue == '' && - selectedValues == '' ? 'PASS' : 'FAIL'); - Markup.dump(input.parentNode, 'After resetting suggestedValue value'); -} - -</script> -</body> -</html>
diff --git a/third_party/WebKit/LayoutTests/fast/forms/suggested-value-after-setvalue-expected.txt b/third_party/WebKit/LayoutTests/fast/forms/suggested-value-after-setvalue-expected.txt index 13f7676..8473c61 100644 --- a/third_party/WebKit/LayoutTests/fast/forms/suggested-value-after-setvalue-expected.txt +++ b/third_party/WebKit/LayoutTests/fast/forms/suggested-value-after-setvalue-expected.txt
@@ -8,13 +8,8 @@ | this.value="initial value" | <shadow:root> | <div> -| id="placeholder" -| pseudo="-webkit-input-placeholder" -| style="display: none !important;" -| shadow:pseudoId="-webkit-input-placeholder" -| "suggested value" -| <div> | id="inner-editor" +| "suggested value" | "input.value: initial value" | "internals.suggestedValue(input): suggested value" | "input.selectionStart: 0"
diff --git a/third_party/WebKit/LayoutTests/fast/forms/suggested-value-after-setvalue.html b/third_party/WebKit/LayoutTests/fast/forms/suggested-value-after-setvalue.html index 29936e7..811d0dde 100644 --- a/third_party/WebKit/LayoutTests/fast/forms/suggested-value-after-setvalue.html +++ b/third_party/WebKit/LayoutTests/fast/forms/suggested-value-after-setvalue.html
@@ -62,11 +62,8 @@ select.value = 'CA'; log(); - // Make sure the InnerEditor value is set to the "new value". The - // InnerEditor element is the second/last child of the shadow - // input/textarea. - var innerTextValue = internals.shadowRoot(input).lastChild.innerText; - var innerTextAreaValue = internals.shadowRoot(textarea).lastChild.innerText; + var innerTextValue = internals.shadowRoot(input).firstChild.innerText; + var innerTextAreaValue = internals.shadowRoot(textarea).firstChild.innerText; var selectedValues = getSelectedValues(select); addText(innerTextValue == 'new value' && innerTextAreaValue == 'new value' &&
diff --git a/third_party/WebKit/LayoutTests/fast/forms/suggested-value-expected.txt b/third_party/WebKit/LayoutTests/fast/forms/suggested-value-expected.txt index 1e515f9..ec844c9 100644 --- a/third_party/WebKit/LayoutTests/fast/forms/suggested-value-expected.txt +++ b/third_party/WebKit/LayoutTests/fast/forms/suggested-value-expected.txt
@@ -8,13 +8,8 @@ | this.value="initial value" | <shadow:root> | <div> -| id="placeholder" -| pseudo="-webkit-input-placeholder" -| style="display: none !important;" -| shadow:pseudoId="-webkit-input-placeholder" -| "suggested value" -| <div> | id="inner-editor" +| "suggested value" | <input> | id="month" | type="month" @@ -70,13 +65,8 @@ | this.value="initial value" | <shadow:root> | <div> -| id="placeholder" -| pseudo="-webkit-input-placeholder" -| style="display: none !important;" -| shadow:pseudoId="-webkit-input-placeholder" -| "suggested value" -| <div> | id="inner-editor" +| "suggested value" | <select> | id="select" | <option>
diff --git a/third_party/WebKit/LayoutTests/fast/forms/text/input-appearance-autocomplete-expected.html b/third_party/WebKit/LayoutTests/fast/forms/text/input-appearance-autocomplete-expected.html index e7a680e..56c7f152 100644 --- a/third_party/WebKit/LayoutTests/fast/forms/text/input-appearance-autocomplete-expected.html +++ b/third_party/WebKit/LayoutTests/fast/forms/text/input-appearance-autocomplete-expected.html
@@ -1,4 +1,4 @@ -<input id="input" placeholder="hello" style="width: 99px" > +<input id="input" value="hello" style="width: 99px" > <script> input.select(); internals.setAutofilled(input, true);
diff --git a/third_party/WebKit/LayoutTests/fast/spatial-navigation/snav-textarea-expected.txt b/third_party/WebKit/LayoutTests/fast/spatial-navigation/snav-textarea-expected.txt index c0ce771..28bb4a76 100644 --- a/third_party/WebKit/LayoutTests/fast/spatial-navigation/snav-textarea-expected.txt +++ b/third_party/WebKit/LayoutTests/fast/spatial-navigation/snav-textarea-expected.txt
@@ -19,7 +19,6 @@ PASS gFocusedDocument.activeElement.getAttribute("id") is "8" PASS gFocusedDocument.activeElement.getAttribute("id") is "start" PASS gFocusedDocument.activeElement.getAttribute("id") is "start" -PASS gFocusedDocument.activeElement.getAttribute("id") is "start" PASS gFocusedDocument.activeElement.getAttribute("id") is "2" PASS gFocusedDocument.activeElement.getAttribute("id") is "start" PASS gFocusedDocument.activeElement.getAttribute("id") is "start"
diff --git a/third_party/WebKit/LayoutTests/fast/spatial-navigation/snav-textarea.html b/third_party/WebKit/LayoutTests/fast/spatial-navigation/snav-textarea.html index 80bce4b4..606c9c4 100644 --- a/third_party/WebKit/LayoutTests/fast/spatial-navigation/snav-textarea.html +++ b/third_party/WebKit/LayoutTests/fast/spatial-navigation/snav-textarea.html
@@ -38,7 +38,6 @@ ["Down", "start"], ["Down", "8"], ["Up", "start"], // The caret is at the end of TEXTAREA. - ["Up", "start"], // The caret is before 'b' in TEXTAREA. ["Up", "start"], // The caret is at the beginning of TEXTAREA. ["Up", "2"], ["Down", "start"],
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/borders/borderRadiusAllStylesAllCorners-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/borders/borderRadiusAllStylesAllCorners-expected.png index 8d89e9d..b2c8bdb 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/borders/borderRadiusAllStylesAllCorners-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/borders/borderRadiusAllStylesAllCorners-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/borders/dashed-1px-with-border-radius-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/borders/dashed-1px-with-border-radius-expected.png new file mode 100644 index 0000000..63c7769 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/borders/dashed-1px-with-border-radius-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/box-shadow/inset-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/box-shadow/inset-expected.png index ccfd008..60c9931 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/box-shadow/inset-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/box-shadow/inset-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/box-shadow/inset-subpixel-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/box-shadow/inset-subpixel-expected.png index 31e5a2b..c29ea02c 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/box-shadow/inset-subpixel-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/box-shadow/inset-subpixel-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/ietestcenter/css3/bordersbackgrounds/border-radius-style-002-expected.png b/third_party/WebKit/LayoutTests/platform/linux/ietestcenter/css3/bordersbackgrounds/border-radius-style-002-expected.png index bd90da28..e7dda1a 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/ietestcenter/css3/bordersbackgrounds/border-radius-style-002-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/ietestcenter/css3/bordersbackgrounds/border-radius-style-002-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/mojo-blobs/external/wpt/fetch/api/request/request-idl-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/mojo-blobs/external/wpt/fetch/api/request/request-idl-expected.txt new file mode 100644 index 0000000..8615326 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/linux/virtual/mojo-blobs/external/wpt/fetch/api/request/request-idl-expected.txt
@@ -0,0 +1,48 @@ +This is a testharness.js-based test. +PASS Request interface: existence and properties of interface object +PASS Request interface object length +PASS Request interface object name +PASS Request interface: existence and properties of interface prototype object +PASS Request interface: existence and properties of interface prototype object's "constructor" property +PASS Request interface: attribute method +PASS Request interface: attribute url +PASS Request interface: attribute headers +FAIL Request interface: attribute destination assert_true: The prototype object must have a property "destination" expected true got false +PASS Request interface: attribute referrer +PASS Request interface: attribute referrerPolicy +PASS Request interface: attribute mode +PASS Request interface: attribute credentials +PASS Request interface: attribute cache +PASS Request interface: attribute redirect +PASS Request interface: attribute integrity +PASS Request interface: operation clone() +FAIL Request interface: attribute body assert_true: The prototype object must have a property "body" expected true got false +PASS Request interface: attribute bodyUsed +PASS Request interface: operation arrayBuffer() +PASS Request interface: operation blob() +PASS Request interface: operation formData() +PASS Request interface: operation json() +PASS Request interface: operation text() +PASS Request must be primary interface of new Request("") +PASS Stringification of new Request("") +PASS Request interface: new Request("") must inherit property "method" with the proper type +PASS Request interface: new Request("") must inherit property "url" with the proper type +PASS Request interface: new Request("") must inherit property "headers" with the proper type +FAIL Request interface: new Request("") must inherit property "destination" with the proper type assert_inherits: property "destination" not found in prototype chain +PASS Request interface: new Request("") must inherit property "referrer" with the proper type +PASS Request interface: new Request("") must inherit property "referrerPolicy" with the proper type +PASS Request interface: new Request("") must inherit property "mode" with the proper type +PASS Request interface: new Request("") must inherit property "credentials" with the proper type +PASS Request interface: new Request("") must inherit property "cache" with the proper type +PASS Request interface: new Request("") must inherit property "redirect" with the proper type +PASS Request interface: new Request("") must inherit property "integrity" with the proper type +PASS Request interface: new Request("") must inherit property "clone()" with the proper type +FAIL Request interface: new Request("") must inherit property "body" with the proper type assert_inherits: property "body" not found in prototype chain +PASS Request interface: new Request("") must inherit property "bodyUsed" with the proper type +PASS Request interface: new Request("") must inherit property "arrayBuffer()" with the proper type +PASS Request interface: new Request("") must inherit property "blob()" with the proper type +PASS Request interface: new Request("") must inherit property "formData()" with the proper type +PASS Request interface: new Request("") must inherit property "json()" with the proper type +PASS Request interface: new Request("") must inherit property "text()" with the proper type +Harness: the test ran to completion. +
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/mojo-blobs/external/wpt/fetch/api/request/request-structure-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/mojo-blobs/external/wpt/fetch/api/request/request-structure-expected.txt new file mode 100644 index 0000000..7c3c8df --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/linux/virtual/mojo-blobs/external/wpt/fetch/api/request/request-structure-expected.txt
@@ -0,0 +1,21 @@ +This is a testharness.js-based test. +PASS Request has clone method +PASS Request has arrayBuffer method +PASS Request has blob method +PASS Request has formData method +PASS Request has json method +PASS Request has text method +PASS Check method attribute +PASS Check url attribute +PASS Check headers attribute +FAIL Check destination attribute assert_true: request has destination attribute expected true got false +PASS Check referrer attribute +PASS Check referrerPolicy attribute +PASS Check mode attribute +PASS Check credentials attribute +PASS Check cache attribute +PASS Check redirect attribute +PASS Check integrity attribute +PASS Check bodyUsed attribute +Harness: the test ran to completion. +
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/outofblink-cors/external/wpt/fetch/api/request/request-idl-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/outofblink-cors/external/wpt/fetch/api/request/request-idl-expected.txt new file mode 100644 index 0000000..8615326 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/linux/virtual/outofblink-cors/external/wpt/fetch/api/request/request-idl-expected.txt
@@ -0,0 +1,48 @@ +This is a testharness.js-based test. +PASS Request interface: existence and properties of interface object +PASS Request interface object length +PASS Request interface object name +PASS Request interface: existence and properties of interface prototype object +PASS Request interface: existence and properties of interface prototype object's "constructor" property +PASS Request interface: attribute method +PASS Request interface: attribute url +PASS Request interface: attribute headers +FAIL Request interface: attribute destination assert_true: The prototype object must have a property "destination" expected true got false +PASS Request interface: attribute referrer +PASS Request interface: attribute referrerPolicy +PASS Request interface: attribute mode +PASS Request interface: attribute credentials +PASS Request interface: attribute cache +PASS Request interface: attribute redirect +PASS Request interface: attribute integrity +PASS Request interface: operation clone() +FAIL Request interface: attribute body assert_true: The prototype object must have a property "body" expected true got false +PASS Request interface: attribute bodyUsed +PASS Request interface: operation arrayBuffer() +PASS Request interface: operation blob() +PASS Request interface: operation formData() +PASS Request interface: operation json() +PASS Request interface: operation text() +PASS Request must be primary interface of new Request("") +PASS Stringification of new Request("") +PASS Request interface: new Request("") must inherit property "method" with the proper type +PASS Request interface: new Request("") must inherit property "url" with the proper type +PASS Request interface: new Request("") must inherit property "headers" with the proper type +FAIL Request interface: new Request("") must inherit property "destination" with the proper type assert_inherits: property "destination" not found in prototype chain +PASS Request interface: new Request("") must inherit property "referrer" with the proper type +PASS Request interface: new Request("") must inherit property "referrerPolicy" with the proper type +PASS Request interface: new Request("") must inherit property "mode" with the proper type +PASS Request interface: new Request("") must inherit property "credentials" with the proper type +PASS Request interface: new Request("") must inherit property "cache" with the proper type +PASS Request interface: new Request("") must inherit property "redirect" with the proper type +PASS Request interface: new Request("") must inherit property "integrity" with the proper type +PASS Request interface: new Request("") must inherit property "clone()" with the proper type +FAIL Request interface: new Request("") must inherit property "body" with the proper type assert_inherits: property "body" not found in prototype chain +PASS Request interface: new Request("") must inherit property "bodyUsed" with the proper type +PASS Request interface: new Request("") must inherit property "arrayBuffer()" with the proper type +PASS Request interface: new Request("") must inherit property "blob()" with the proper type +PASS Request interface: new Request("") must inherit property "formData()" with the proper type +PASS Request interface: new Request("") must inherit property "json()" with the proper type +PASS Request interface: new Request("") must inherit property "text()" with the proper type +Harness: the test ran to completion. +
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/outofblink-cors/external/wpt/fetch/api/request/request-structure-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/outofblink-cors/external/wpt/fetch/api/request/request-structure-expected.txt new file mode 100644 index 0000000..7c3c8df --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/linux/virtual/outofblink-cors/external/wpt/fetch/api/request/request-structure-expected.txt
@@ -0,0 +1,21 @@ +This is a testharness.js-based test. +PASS Request has clone method +PASS Request has arrayBuffer method +PASS Request has blob method +PASS Request has formData method +PASS Request has json method +PASS Request has text method +PASS Check method attribute +PASS Check url attribute +PASS Check headers attribute +FAIL Check destination attribute assert_true: request has destination attribute expected true got false +PASS Check referrer attribute +PASS Check referrerPolicy attribute +PASS Check mode attribute +PASS Check credentials attribute +PASS Check cache attribute +PASS Check redirect attribute +PASS Check integrity attribute +PASS Check bodyUsed attribute +Harness: the test ran to completion. +
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/borders/dashed-1px-with-border-radius-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/borders/dashed-1px-with-border-radius-expected.png new file mode 100644 index 0000000..fc67652 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/borders/dashed-1px-with-border-radius-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/compositing/overflow/border-radius-styles-with-composited-child-expected.png b/third_party/WebKit/LayoutTests/platform/mac/compositing/overflow/border-radius-styles-with-composited-child-expected.png new file mode 100644 index 0000000..f3748be6 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac/compositing/overflow/border-radius-styles-with-composited-child-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/borders/borderRadiusAllStylesAllCorners-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/borders/borderRadiusAllStylesAllCorners-expected.png index b0df1b0b..0efd6c6 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/borders/borderRadiusAllStylesAllCorners-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/borders/borderRadiusAllStylesAllCorners-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/borders/dashed-1px-with-border-radius-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/borders/dashed-1px-with-border-radius-expected.png new file mode 100644 index 0000000..e8d58eb3 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/borders/dashed-1px-with-border-radius-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/box-shadow/inset-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/box-shadow/inset-expected.png index 1a685f5..d818b0d 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/box-shadow/inset-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/box-shadow/inset-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/box-shadow/inset-subpixel-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/box-shadow/inset-subpixel-expected.png index f0ab9404..2c64682 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/box-shadow/inset-subpixel-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/box-shadow/inset-subpixel-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/ietestcenter/css3/bordersbackgrounds/border-radius-style-002-expected.png b/third_party/WebKit/LayoutTests/platform/mac/ietestcenter/css3/bordersbackgrounds/border-radius-style-002-expected.png index 1c33e38..f7ee203 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/ietestcenter/css3/bordersbackgrounds/border-radius-style-002-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/ietestcenter/css3/bordersbackgrounds/border-radius-style-002-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/virtual/mojo-blobs/external/wpt/fetch/api/request/request-idl-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/virtual/mojo-blobs/external/wpt/fetch/api/request/request-idl-expected.txt new file mode 100644 index 0000000..8615326 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac/virtual/mojo-blobs/external/wpt/fetch/api/request/request-idl-expected.txt
@@ -0,0 +1,48 @@ +This is a testharness.js-based test. +PASS Request interface: existence and properties of interface object +PASS Request interface object length +PASS Request interface object name +PASS Request interface: existence and properties of interface prototype object +PASS Request interface: existence and properties of interface prototype object's "constructor" property +PASS Request interface: attribute method +PASS Request interface: attribute url +PASS Request interface: attribute headers +FAIL Request interface: attribute destination assert_true: The prototype object must have a property "destination" expected true got false +PASS Request interface: attribute referrer +PASS Request interface: attribute referrerPolicy +PASS Request interface: attribute mode +PASS Request interface: attribute credentials +PASS Request interface: attribute cache +PASS Request interface: attribute redirect +PASS Request interface: attribute integrity +PASS Request interface: operation clone() +FAIL Request interface: attribute body assert_true: The prototype object must have a property "body" expected true got false +PASS Request interface: attribute bodyUsed +PASS Request interface: operation arrayBuffer() +PASS Request interface: operation blob() +PASS Request interface: operation formData() +PASS Request interface: operation json() +PASS Request interface: operation text() +PASS Request must be primary interface of new Request("") +PASS Stringification of new Request("") +PASS Request interface: new Request("") must inherit property "method" with the proper type +PASS Request interface: new Request("") must inherit property "url" with the proper type +PASS Request interface: new Request("") must inherit property "headers" with the proper type +FAIL Request interface: new Request("") must inherit property "destination" with the proper type assert_inherits: property "destination" not found in prototype chain +PASS Request interface: new Request("") must inherit property "referrer" with the proper type +PASS Request interface: new Request("") must inherit property "referrerPolicy" with the proper type +PASS Request interface: new Request("") must inherit property "mode" with the proper type +PASS Request interface: new Request("") must inherit property "credentials" with the proper type +PASS Request interface: new Request("") must inherit property "cache" with the proper type +PASS Request interface: new Request("") must inherit property "redirect" with the proper type +PASS Request interface: new Request("") must inherit property "integrity" with the proper type +PASS Request interface: new Request("") must inherit property "clone()" with the proper type +FAIL Request interface: new Request("") must inherit property "body" with the proper type assert_inherits: property "body" not found in prototype chain +PASS Request interface: new Request("") must inherit property "bodyUsed" with the proper type +PASS Request interface: new Request("") must inherit property "arrayBuffer()" with the proper type +PASS Request interface: new Request("") must inherit property "blob()" with the proper type +PASS Request interface: new Request("") must inherit property "formData()" with the proper type +PASS Request interface: new Request("") must inherit property "json()" with the proper type +PASS Request interface: new Request("") must inherit property "text()" with the proper type +Harness: the test ran to completion. +
diff --git a/third_party/WebKit/LayoutTests/platform/mac/virtual/mojo-blobs/external/wpt/fetch/api/request/request-structure-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/virtual/mojo-blobs/external/wpt/fetch/api/request/request-structure-expected.txt new file mode 100644 index 0000000..7c3c8df --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac/virtual/mojo-blobs/external/wpt/fetch/api/request/request-structure-expected.txt
@@ -0,0 +1,21 @@ +This is a testharness.js-based test. +PASS Request has clone method +PASS Request has arrayBuffer method +PASS Request has blob method +PASS Request has formData method +PASS Request has json method +PASS Request has text method +PASS Check method attribute +PASS Check url attribute +PASS Check headers attribute +FAIL Check destination attribute assert_true: request has destination attribute expected true got false +PASS Check referrer attribute +PASS Check referrerPolicy attribute +PASS Check mode attribute +PASS Check credentials attribute +PASS Check cache attribute +PASS Check redirect attribute +PASS Check integrity attribute +PASS Check bodyUsed attribute +Harness: the test ran to completion. +
diff --git a/third_party/WebKit/LayoutTests/platform/mac/virtual/outofblink-cors/external/wpt/fetch/api/request/request-idl-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/virtual/outofblink-cors/external/wpt/fetch/api/request/request-idl-expected.txt new file mode 100644 index 0000000..8615326 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac/virtual/outofblink-cors/external/wpt/fetch/api/request/request-idl-expected.txt
@@ -0,0 +1,48 @@ +This is a testharness.js-based test. +PASS Request interface: existence and properties of interface object +PASS Request interface object length +PASS Request interface object name +PASS Request interface: existence and properties of interface prototype object +PASS Request interface: existence and properties of interface prototype object's "constructor" property +PASS Request interface: attribute method +PASS Request interface: attribute url +PASS Request interface: attribute headers +FAIL Request interface: attribute destination assert_true: The prototype object must have a property "destination" expected true got false +PASS Request interface: attribute referrer +PASS Request interface: attribute referrerPolicy +PASS Request interface: attribute mode +PASS Request interface: attribute credentials +PASS Request interface: attribute cache +PASS Request interface: attribute redirect +PASS Request interface: attribute integrity +PASS Request interface: operation clone() +FAIL Request interface: attribute body assert_true: The prototype object must have a property "body" expected true got false +PASS Request interface: attribute bodyUsed +PASS Request interface: operation arrayBuffer() +PASS Request interface: operation blob() +PASS Request interface: operation formData() +PASS Request interface: operation json() +PASS Request interface: operation text() +PASS Request must be primary interface of new Request("") +PASS Stringification of new Request("") +PASS Request interface: new Request("") must inherit property "method" with the proper type +PASS Request interface: new Request("") must inherit property "url" with the proper type +PASS Request interface: new Request("") must inherit property "headers" with the proper type +FAIL Request interface: new Request("") must inherit property "destination" with the proper type assert_inherits: property "destination" not found in prototype chain +PASS Request interface: new Request("") must inherit property "referrer" with the proper type +PASS Request interface: new Request("") must inherit property "referrerPolicy" with the proper type +PASS Request interface: new Request("") must inherit property "mode" with the proper type +PASS Request interface: new Request("") must inherit property "credentials" with the proper type +PASS Request interface: new Request("") must inherit property "cache" with the proper type +PASS Request interface: new Request("") must inherit property "redirect" with the proper type +PASS Request interface: new Request("") must inherit property "integrity" with the proper type +PASS Request interface: new Request("") must inherit property "clone()" with the proper type +FAIL Request interface: new Request("") must inherit property "body" with the proper type assert_inherits: property "body" not found in prototype chain +PASS Request interface: new Request("") must inherit property "bodyUsed" with the proper type +PASS Request interface: new Request("") must inherit property "arrayBuffer()" with the proper type +PASS Request interface: new Request("") must inherit property "blob()" with the proper type +PASS Request interface: new Request("") must inherit property "formData()" with the proper type +PASS Request interface: new Request("") must inherit property "json()" with the proper type +PASS Request interface: new Request("") must inherit property "text()" with the proper type +Harness: the test ran to completion. +
diff --git a/third_party/WebKit/LayoutTests/platform/mac/virtual/outofblink-cors/external/wpt/fetch/api/request/request-structure-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/virtual/outofblink-cors/external/wpt/fetch/api/request/request-structure-expected.txt new file mode 100644 index 0000000..7c3c8df --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac/virtual/outofblink-cors/external/wpt/fetch/api/request/request-structure-expected.txt
@@ -0,0 +1,21 @@ +This is a testharness.js-based test. +PASS Request has clone method +PASS Request has arrayBuffer method +PASS Request has blob method +PASS Request has formData method +PASS Request has json method +PASS Request has text method +PASS Check method attribute +PASS Check url attribute +PASS Check headers attribute +FAIL Check destination attribute assert_true: request has destination attribute expected true got false +PASS Check referrer attribute +PASS Check referrerPolicy attribute +PASS Check mode attribute +PASS Check credentials attribute +PASS Check cache attribute +PASS Check redirect attribute +PASS Check integrity attribute +PASS Check bodyUsed attribute +Harness: the test ran to completion. +
diff --git a/third_party/WebKit/LayoutTests/platform/mac/virtual/prefer_compositing_to_lcd_text/compositing/overflow/border-radius-styles-with-composited-child-expected.png b/third_party/WebKit/LayoutTests/platform/mac/virtual/prefer_compositing_to_lcd_text/compositing/overflow/border-radius-styles-with-composited-child-expected.png index 5fa2b0b..f3748be6 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/virtual/prefer_compositing_to_lcd_text/compositing/overflow/border-radius-styles-with-composited-child-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/virtual/prefer_compositing_to_lcd_text/compositing/overflow/border-radius-styles-with-composited-child-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/compositing/overflow/border-radius-styles-with-composited-child-expected.png b/third_party/WebKit/LayoutTests/platform/win/compositing/overflow/border-radius-styles-with-composited-child-expected.png index 5d95e236..a966e57a 100644 --- a/third_party/WebKit/LayoutTests/platform/win/compositing/overflow/border-radius-styles-with-composited-child-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/compositing/overflow/border-radius-styles-with-composited-child-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/borders/borderRadiusAllStylesAllCorners-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/borders/borderRadiusAllStylesAllCorners-expected.png index 8e076b8..5cc1b0b0 100644 --- a/third_party/WebKit/LayoutTests/platform/win/fast/borders/borderRadiusAllStylesAllCorners-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/fast/borders/borderRadiusAllStylesAllCorners-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/borders/dashed-1px-with-border-radius-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/borders/dashed-1px-with-border-radius-expected.png new file mode 100644 index 0000000..ccd38ba --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/win/fast/borders/dashed-1px-with-border-radius-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/box-shadow/inset-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/box-shadow/inset-expected.png index 304bc802..a10e15f 100644 --- a/third_party/WebKit/LayoutTests/platform/win/fast/box-shadow/inset-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/fast/box-shadow/inset-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/box-shadow/inset-subpixel-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/box-shadow/inset-subpixel-expected.png index e3c97cb..e47c586 100644 --- a/third_party/WebKit/LayoutTests/platform/win/fast/box-shadow/inset-subpixel-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/fast/box-shadow/inset-subpixel-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/ietestcenter/css3/bordersbackgrounds/border-radius-style-002-expected.png b/third_party/WebKit/LayoutTests/platform/win/ietestcenter/css3/bordersbackgrounds/border-radius-style-002-expected.png index f2c52f3..0fd024c 100644 --- a/third_party/WebKit/LayoutTests/platform/win/ietestcenter/css3/bordersbackgrounds/border-radius-style-002-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/ietestcenter/css3/bordersbackgrounds/border-radius-style-002-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/virtual/prefer_compositing_to_lcd_text/compositing/overflow/border-radius-styles-with-composited-child-expected.png b/third_party/WebKit/LayoutTests/platform/win/virtual/prefer_compositing_to_lcd_text/compositing/overflow/border-radius-styles-with-composited-child-expected.png index 5d95e236..a966e57a 100644 --- a/third_party/WebKit/LayoutTests/platform/win/virtual/prefer_compositing_to_lcd_text/compositing/overflow/border-radius-styles-with-composited-child-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/virtual/prefer_compositing_to_lcd_text/compositing/overflow/border-radius-styles-with-composited-child-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win7/fast/forms/suggested-value-expected.txt b/third_party/WebKit/LayoutTests/platform/win7/fast/forms/suggested-value-expected.txt index 859ac6c..df440ee2 100644 --- a/third_party/WebKit/LayoutTests/platform/win7/fast/forms/suggested-value-expected.txt +++ b/third_party/WebKit/LayoutTests/platform/win7/fast/forms/suggested-value-expected.txt
@@ -8,12 +8,6 @@ | this.value="initial value" | <shadow:root> | <div> -| id="placeholder" -| pseudo="-webkit-input-placeholder" -| style="display: none !important;" -| shadow:pseudoId="-webkit-input-placeholder" -| "suggested value" -| <div> | id="inner-editor" | "suggested value" | <input> @@ -70,12 +64,9 @@ | id="textarea" | this.value="initial value" | <shadow:root> -| id="placeholder" -| pseudo="-webkit-input-placeholder" -| style="display: none !important;" -| shadow:pseudoId="-webkit-input-placeholder" | <div> | id="inner-editor" +| "suggested value" | <select> | id="select" | <option>
diff --git a/third_party/WebKit/Source/bindings/bindings.gni b/third_party/WebKit/Source/bindings/bindings.gni index d4365e16..6b5b50a2 100644 --- a/third_party/WebKit/Source/bindings/bindings.gni +++ b/third_party/WebKit/Source/bindings/bindings.gni
@@ -109,8 +109,6 @@ "core/v8/V8CacheOptions.h", "core/v8/V8CacheStrategiesForCacheStorage.h", "core/v8/V8CrossOriginSetterInfo.h", - "core/v8/V8DOMActivityLogger.cpp", - "core/v8/V8DOMActivityLogger.h", "core/v8/V8DOMConfiguration.cpp", "core/v8/V8DOMConfiguration.h", "core/v8/V8ErrorHandler.cpp",
diff --git a/third_party/WebKit/Source/bindings/core/v8/ActivityLoggerTest.cpp b/third_party/WebKit/Source/bindings/core/v8/ActivityLoggerTest.cpp index d05d6d7..c66cd55 100644 --- a/third_party/WebKit/Source/bindings/core/v8/ActivityLoggerTest.cpp +++ b/third_party/WebKit/Source/bindings/core/v8/ActivityLoggerTest.cpp
@@ -5,9 +5,9 @@ #include "bindings/core/v8/ScriptController.h" #include "bindings/core/v8/ScriptSourceCode.h" #include "bindings/core/v8/V8BindingForCore.h" -#include "bindings/core/v8/V8DOMActivityLogger.h" #include "core/frame/FrameTestHelpers.h" #include "core/frame/WebLocalFrameImpl.h" +#include "platform/bindings/V8DOMActivityLogger.h" #include "platform/wtf/Forward.h" #include "platform/wtf/PtrUtil.h" #include "platform/wtf/text/Base64.h"
diff --git a/third_party/WebKit/Source/bindings/core/v8/LocalWindowProxy.cpp b/third_party/WebKit/Source/bindings/core/v8/LocalWindowProxy.cpp index caeb770..1591478 100644 --- a/third_party/WebKit/Source/bindings/core/v8/LocalWindowProxy.cpp +++ b/third_party/WebKit/Source/bindings/core/v8/LocalWindowProxy.cpp
@@ -34,7 +34,6 @@ #include "bindings/core/v8/ToV8ForCore.h" #include "bindings/core/v8/V8BindingForCore.h" #include "bindings/core/v8/V8ContextSnapshot.h" -#include "bindings/core/v8/V8DOMActivityLogger.h" #include "bindings/core/v8/V8GCForContextDispose.h" #include "bindings/core/v8/V8HTMLDocument.h" #include "bindings/core/v8/V8Initializer.h" @@ -52,6 +51,7 @@ #include "platform/ScriptForbiddenScope.h" #include "platform/bindings/ConditionalFeatures.h" #include "platform/bindings/DOMWrapperWorld.h" +#include "platform/bindings/V8DOMActivityLogger.h" #include "platform/bindings/V8DOMWrapper.h" #include "platform/bindings/V8PrivateProperty.h" #include "platform/heap/Handle.h"
diff --git a/third_party/WebKit/Source/bindings/core/v8/UseCounterCallback.cpp b/third_party/WebKit/Source/bindings/core/v8/UseCounterCallback.cpp index aeac3aa..068b090 100644 --- a/third_party/WebKit/Source/bindings/core/v8/UseCounterCallback.cpp +++ b/third_party/WebKit/Source/bindings/core/v8/UseCounterCallback.cpp
@@ -127,6 +127,9 @@ case v8::Isolate::kLabeledExpressionStatement: blink_feature = WebFeature::kV8LabeledExpressionStatement; break; + case v8::Isolate::kLineOrParagraphSeparatorAsLineTerminator: + blink_feature = WebFeature::kV8LineOrParagraphSeparatorAsLineTerminator; + break; default: // This can happen if V8 has added counters that this version of Blink // does not know about. It's harmless.
diff --git a/third_party/WebKit/Source/bindings/scripts/v8_utilities.py b/third_party/WebKit/Source/bindings/scripts/v8_utilities.py index c4d9a08..08c4fe86 100644 --- a/third_party/WebKit/Source/bindings/scripts/v8_utilities.py +++ b/third_party/WebKit/Source/bindings/scripts/v8_utilities.py
@@ -185,7 +185,7 @@ if log_activity and not log_activity.startswith(access_type): return set() - includes.add('bindings/core/v8/V8DOMActivityLogger.h') + includes.add('platform/bindings/V8DOMActivityLogger.h') if 'LogAllWorlds' in extended_attributes: return set(['', 'ForMainWorld']) return set(['']) # At minimum, include isolated worlds.
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/V8TestObject.cpp b/third_party/WebKit/Source/bindings/tests/results/core/V8TestObject.cpp index 8f0d00e..9d5dea61 100644 --- a/third_party/WebKit/Source/bindings/tests/results/core/V8TestObject.cpp +++ b/third_party/WebKit/Source/bindings/tests/results/core/V8TestObject.cpp
@@ -23,7 +23,6 @@ #include "bindings/core/v8/V8ArrayBuffer.h" #include "bindings/core/v8/V8ArrayBufferView.h" #include "bindings/core/v8/V8Attr.h" -#include "bindings/core/v8/V8DOMActivityLogger.h" #include "bindings/core/v8/V8DOMConfiguration.h" #include "bindings/core/v8/V8Document.h" #include "bindings/core/v8/V8DocumentFragment.h" @@ -72,6 +71,7 @@ #include "core/typed_arrays/FlexibleArrayBufferView.h" #include "platform/bindings/RuntimeCallStats.h" #include "platform/bindings/ScriptState.h" +#include "platform/bindings/V8DOMActivityLogger.h" #include "platform/bindings/V8ObjectConstructor.h" #include "platform/bindings/V8PrivateProperty.h" #include "platform/runtime_enabled_features.h"
diff --git a/third_party/WebKit/Source/core/animation/BUILD.gn b/third_party/WebKit/Source/core/animation/BUILD.gn index 1e8ba29d..17132736 100644 --- a/third_party/WebKit/Source/core/animation/BUILD.gn +++ b/third_party/WebKit/Source/core/animation/BUILD.gn
@@ -101,10 +101,6 @@ "CompositorAnimator.h", "CompositorMutatorImpl.cpp", "CompositorMutatorImpl.h", - "CustomCompositorAnimationManager.cpp", - "CustomCompositorAnimationManager.h", - "CustomCompositorAnimations.cpp", - "CustomCompositorAnimations.h", "DocumentAnimation.h", "DocumentAnimations.cpp", "DocumentAnimations.h",
diff --git a/third_party/WebKit/Source/core/animation/CompositorMutatorImpl.cpp b/third_party/WebKit/Source/core/animation/CompositorMutatorImpl.cpp index 63bcd37..1e71dbda6 100644 --- a/third_party/WebKit/Source/core/animation/CompositorMutatorImpl.cpp +++ b/third_party/WebKit/Source/core/animation/CompositorMutatorImpl.cpp
@@ -5,11 +5,9 @@ #include "core/animation/CompositorMutatorImpl.h" #include "core/animation/CompositorAnimator.h" -#include "core/animation/CustomCompositorAnimationManager.h" #include "platform/CrossThreadFunctional.h" #include "platform/WaitableEvent.h" #include "platform/WebTaskRunner.h" -#include "platform/graphics/CompositorMutationsTarget.h" #include "platform/graphics/CompositorMutatorClient.h" #include "platform/heap/Handle.h" #include "platform/instrumentation/tracing/TraceEvent.h" @@ -24,16 +22,14 @@ std::unique_ptr<CompositorMutatorClient>* ptr, WaitableEvent* done_event) { CompositorMutatorImpl* mutator = CompositorMutatorImpl::Create(); - ptr->reset(new CompositorMutatorClient(mutator, mutator->AnimationManager())); + ptr->reset(new CompositorMutatorClient(mutator)); mutator->SetClient(ptr->get()); done_event->Signal(); } } // namespace -CompositorMutatorImpl::CompositorMutatorImpl() - : animation_manager_(WTF::WrapUnique(new CustomCompositorAnimationManager)), - client_(nullptr) {} +CompositorMutatorImpl::CompositorMutatorImpl() : client_(nullptr) {} std::unique_ptr<CompositorMutatorClient> CompositorMutatorImpl::CreateClient() { std::unique_ptr<CompositorMutatorClient> mutator_client;
diff --git a/third_party/WebKit/Source/core/animation/CompositorMutatorImpl.h b/third_party/WebKit/Source/core/animation/CompositorMutatorImpl.h index f2e6faaa..c4decc4 100644 --- a/third_party/WebKit/Source/core/animation/CompositorMutatorImpl.h +++ b/third_party/WebKit/Source/core/animation/CompositorMutatorImpl.h
@@ -7,7 +7,6 @@ #include <memory> #include "core/animation/CompositorAnimator.h" -#include "core/animation/CustomCompositorAnimationManager.h" #include "platform/graphics/CompositorMutator.h" #include "platform/heap/Handle.h" #include "platform/heap/HeapAllocator.h" @@ -41,9 +40,6 @@ void SetNeedsMutate(); void SetClient(CompositorMutatorClient* client) { client_ = client; } - CustomCompositorAnimationManager* AnimationManager() { - return animation_manager_.get(); - } private: CompositorMutatorImpl(); @@ -52,7 +48,6 @@ HashSet<CrossThreadPersistent<CompositorAnimator>>; CompositorAnimators animators_; - std::unique_ptr<CustomCompositorAnimationManager> animation_manager_; CompositorMutatorClient* client_; };
diff --git a/third_party/WebKit/Source/core/animation/CustomCompositorAnimationManager.cpp b/third_party/WebKit/Source/core/animation/CustomCompositorAnimationManager.cpp deleted file mode 100644 index 30cb99a..0000000 --- a/third_party/WebKit/Source/core/animation/CustomCompositorAnimationManager.cpp +++ /dev/null
@@ -1,32 +0,0 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "core/animation/CustomCompositorAnimationManager.h" - -#include "core/dom/DOMNodeIds.h" -#include "core/dom/Element.h" -#include "core/dom/Node.h" -#include "platform/graphics/CompositorMutation.h" -#include "platform/instrumentation/tracing/TraceEvent.h" - -namespace blink { - -CustomCompositorAnimationManager::CustomCompositorAnimationManager() {} - -CustomCompositorAnimationManager::~CustomCompositorAnimationManager() {} - -void CustomCompositorAnimationManager::ApplyMutations( - CompositorMutations* mutations) { - TRACE_EVENT0("cc", "CustomCompositorAnimationManager::applyMutations"); - for (const auto& entry : mutations->map) { - int element_id = entry.key; - const CompositorMutation& mutation = *entry.value; - Node* node = DOMNodeIds::NodeForId(element_id); - if (!node || !node->IsElementNode()) - continue; - ToElement(node)->UpdateFromCompositorMutation(mutation); - } -} - -} // namespace blink
diff --git a/third_party/WebKit/Source/core/animation/CustomCompositorAnimationManager.h b/third_party/WebKit/Source/core/animation/CustomCompositorAnimationManager.h deleted file mode 100644 index 5727177..0000000 --- a/third_party/WebKit/Source/core/animation/CustomCompositorAnimationManager.h +++ /dev/null
@@ -1,26 +0,0 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef CustomCompositorAnimationManager_h -#define CustomCompositorAnimationManager_h - -#include "core/CoreExport.h" -#include "platform/graphics/CompositorMutation.h" -#include "platform/graphics/CompositorMutationsTarget.h" - -namespace blink { - -class CORE_EXPORT CustomCompositorAnimationManager - : public CompositorMutationsTarget { - WTF_MAKE_NONCOPYABLE(CustomCompositorAnimationManager); - - public: - CustomCompositorAnimationManager(); - ~CustomCompositorAnimationManager() override; - void ApplyMutations(CompositorMutations*) override; -}; - -} // namespace blink - -#endif // CustomCompositorAnimationManager_h
diff --git a/third_party/WebKit/Source/core/animation/CustomCompositorAnimations.cpp b/third_party/WebKit/Source/core/animation/CustomCompositorAnimations.cpp deleted file mode 100644 index 4a1478c4..0000000 --- a/third_party/WebKit/Source/core/animation/CustomCompositorAnimations.cpp +++ /dev/null
@@ -1,110 +0,0 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "core/animation/CustomCompositorAnimations.h" - -#include "core/animation/Animation.h" -#include "core/animation/DocumentTimeline.h" -#include "core/animation/KeyframeEffect.h" -#include "core/animation/KeyframeEffectModel.h" -#include "core/animation/animatable/AnimatableDouble.h" -#include "core/animation/animatable/AnimatableTransform.h" -#include "core/animation/animatable/AnimatableValue.h" -#include "core/dom/Document.h" -#include "platform/graphics/CompositorMutation.h" -#include "platform/instrumentation/tracing/TraceEvent.h" -#include "platform/transforms/Matrix3DTransformOperation.h" -#include "platform/transforms/MatrixTransformOperation.h" -#include "platform/transforms/TransformOperations.h" - -namespace blink { - -namespace { - -// Create keyframe effect with zero duration, fill mode forward, and two key -// frames with same value. This corresponding animation is always running and by -// updating the key frames we are able to control the applied value. -static KeyframeEffect* CreateInfiniteKeyFrameEffect( - Element& element, - CSSPropertyID property_id, - RefPtr<AnimatableValue> value) { - AnimatableValueKeyframeVector keyframes(2); - keyframes[0] = AnimatableValueKeyframe::Create(); - keyframes[0]->SetOffset(0.0); - keyframes[0]->SetPropertyValue(property_id, value.get()); - keyframes[1] = AnimatableValueKeyframe::Create(); - keyframes[1]->SetOffset(1.0); - keyframes[1]->SetPropertyValue(property_id, value.get()); - keyframes[1]->SetComposite(EffectModel::kCompositeReplace); - - Timing timing; - timing.iteration_duration = 0; - timing.fill_mode = Timing::FillMode::FORWARDS; - - AnimatableValueKeyframeEffectModel* effect_model = - AnimatableValueKeyframeEffectModel::Create(keyframes); - return KeyframeEffect::Create(&element, effect_model, timing); -} - -static KeyframeEffect* UpdateInfiniteKeyframeEffect( - const KeyframeEffect& keyframe_effect, - CSSPropertyID property_id, - RefPtr<AnimatableValue> value) { - const KeyframeVector& old_frames = - ToAnimatableValueKeyframeEffectModel(keyframe_effect.Model()) - ->GetFrames(); - AnimatableValueKeyframeVector keyframes(2); - keyframes[0] = ToAnimatableValueKeyframe(old_frames[0]->Clone().get()); - keyframes[1] = ToAnimatableValueKeyframe(old_frames[1]->Clone().get()); - keyframes[0]->SetPropertyValue(property_id, value.get()); - keyframes[1]->SetPropertyValue(property_id, value.get()); - - AnimatableValueKeyframeEffectModel* effect_model = - AnimatableValueKeyframeEffectModel::Create(keyframes); - return KeyframeEffect::Create(keyframe_effect.Target(), effect_model, - keyframe_effect.SpecifiedTiming()); -} - -static Animation* CreateOrUpdateAnimation(Animation* animation, - Element& element, - CSSPropertyID property_id, - RefPtr<AnimatableValue> new_value) { - if (!animation) { - KeyframeEffect* keyframe_effect = CreateInfiniteKeyFrameEffect( - element, property_id, std::move(new_value)); - return element.GetDocument().Timeline().Play(keyframe_effect); - } - KeyframeEffect* keyframe_effect = - UpdateInfiniteKeyframeEffect(*ToKeyframeEffect(animation->effect()), - property_id, std::move(new_value)); - animation->setEffect(keyframe_effect); - return animation; -} - -} // namespace - -void CustomCompositorAnimations::ApplyUpdate( - Element& element, - const CompositorMutation& mutation) { - TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("cc"), - "CustomCompositorAnimations::applyUpdate"); - - if (mutation.IsOpacityMutated()) { - RefPtr<AnimatableValue> animatable_value = - AnimatableDouble::Create(mutation.Opacity()); - animation_ = CreateOrUpdateAnimation( - animation_, element, CSSPropertyOpacity, std::move(animatable_value)); - } - if (mutation.IsTransformMutated()) { - TransformOperations ops; - ops.Operations().push_back(Matrix3DTransformOperation::Create( - TransformationMatrix(mutation.Transform()))); - RefPtr<AnimatableValue> animatable_value = - AnimatableTransform::Create(ops, 1); - animation_ = CreateOrUpdateAnimation( - animation_, element, CSSPropertyTransform, std::move(animatable_value)); - } -} - -} // namespace blink
diff --git a/third_party/WebKit/Source/core/animation/CustomCompositorAnimations.h b/third_party/WebKit/Source/core/animation/CustomCompositorAnimations.h deleted file mode 100644 index 9845a0f..0000000 --- a/third_party/WebKit/Source/core/animation/CustomCompositorAnimations.h +++ /dev/null
@@ -1,33 +0,0 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef CustomCompositorAnimations_h -#define CustomCompositorAnimations_h - -#include "core/animation/Animation.h" -#include "platform/heap/Handle.h" -#include "platform/wtf/Noncopyable.h" - -namespace blink { - -class Element; -class CompositorMutation; - -class CustomCompositorAnimations final { - DISALLOW_NEW(); - WTF_MAKE_NONCOPYABLE(CustomCompositorAnimations); - - public: - CustomCompositorAnimations() {} - void ApplyUpdate(Element&, const CompositorMutation&); - - DEFINE_INLINE_TRACE() { visitor->Trace(animation_); } - - private: - Member<Animation> animation_; -}; - -} // namespace blink - -#endif
diff --git a/third_party/WebKit/Source/core/animation/ElementAnimations.cpp b/third_party/WebKit/Source/core/animation/ElementAnimations.cpp index 8311178..60b8123c 100644 --- a/third_party/WebKit/Source/core/animation/ElementAnimations.cpp +++ b/third_party/WebKit/Source/core/animation/ElementAnimations.cpp
@@ -90,7 +90,6 @@ DEFINE_TRACE(ElementAnimations) { visitor->Trace(css_animations_); - visitor->Trace(custom_compositor_animations_); visitor->Trace(effect_stack_); visitor->Trace(animations_); }
diff --git a/third_party/WebKit/Source/core/animation/ElementAnimations.h b/third_party/WebKit/Source/core/animation/ElementAnimations.h index cf7ac61..ffda03c 100644 --- a/third_party/WebKit/Source/core/animation/ElementAnimations.h +++ b/third_party/WebKit/Source/core/animation/ElementAnimations.h
@@ -31,7 +31,6 @@ #ifndef ElementAnimations_h #define ElementAnimations_h -#include "core/animation/CustomCompositorAnimations.h" #include "core/animation/EffectStack.h" #include "core/animation/css/CSSAnimations.h" #include "platform/wtf/HashCountedSet.h" @@ -57,14 +56,6 @@ // stack. EffectStack& GetEffectStack() { return effect_stack_; } const EffectStack& GetEffectStack() const { return effect_stack_; } - // Tracks long running animations that are responsible for applying mutations - // from compositor worker. - CustomCompositorAnimations& GetCustomCompositorAnimations() { - return custom_compositor_animations_; - } - const CustomCompositorAnimations& GetCustomCompositorAnimations() const { - return custom_compositor_animations_; - } // Tracks the state of active CSS Animations and Transitions. The individual // animations will also be part of the animation stack, but the mapping // between animation name and animation is kept here. @@ -96,7 +87,6 @@ bool IsAnimationStyleChange() const; EffectStack effect_stack_; - CustomCompositorAnimations custom_compositor_animations_; CSSAnimations css_animations_; AnimationCountedSet animations_; bool animation_style_change_;
diff --git a/third_party/WebKit/Source/core/css/CSSSelector.cpp b/third_party/WebKit/Source/core/css/CSSSelector.cpp index 2c28065c..bc520957 100644 --- a/third_party/WebKit/Source/core/css/CSSSelector.cpp +++ b/third_party/WebKit/Source/core/css/CSSSelector.cpp
@@ -61,7 +61,9 @@ AtomicString value(data_.value_); if (data_.value_) data_.value_->Release(); - data_.rare_data_ = RareData::Create(value).LeakRef(); + auto rare_data = RareData::Create(value); + rare_data->AddRef(); + data_.rare_data_ = rare_data.get(); has_rare_data_ = true; }
diff --git a/third_party/WebKit/Source/core/css/resolver/StyleResolver.cpp b/third_party/WebKit/Source/core/css/resolver/StyleResolver.cpp index aec8f94..77391c66 100644 --- a/third_party/WebKit/Source/core/css/resolver/StyleResolver.cpp +++ b/third_party/WebKit/Source/core/css/resolver/StyleResolver.cpp
@@ -598,7 +598,9 @@ // loading. if (!GetDocument().IsRenderingReady() && !element->GetLayoutObject()) { if (!style_not_yet_available_) { - style_not_yet_available_ = ComputedStyle::Create().LeakRef(); + auto style = ComputedStyle::Create(); + style->AddRef(); + style_not_yet_available_ = style.get(); style_not_yet_available_->SetDisplay(EDisplay::kNone); style_not_yet_available_->GetFont().Update( GetDocument().GetStyleEngine().GetFontSelector()); @@ -1255,7 +1257,6 @@ } else if (interpolation.IsTransitionInterpolation()) { ToTransitionInterpolation(interpolation).Apply(state); } else { - // TODO(alancutter): Move CustomCompositorAnimations off AnimatableValues. ToLegacyStyleInterpolation(interpolation).Apply(state); } }
diff --git a/third_party/WebKit/Source/core/dom/ChildNodeList.cpp b/third_party/WebKit/Source/core/dom/ChildNodeList.cpp index 0dfd951..d56d5be1 100644 --- a/third_party/WebKit/Source/core/dom/ChildNodeList.cpp +++ b/third_party/WebKit/Source/core/dom/ChildNodeList.cpp
@@ -36,6 +36,17 @@ ChildNodeList::~ChildNodeList() {} +void ChildNodeList::ChildrenChanged( + const ContainerNode::ChildrenChange& change) { + if (change.IsChildInsertion()) { + collection_index_cache_.NodeInserted(); + } else if (change.IsChildRemoval()) { + collection_index_cache_.NodeRemoved(); + } else { + collection_index_cache_.Invalidate(); + } +} + Node* ChildNodeList::TraverseForwardToOffset(unsigned offset, Node& current_node, unsigned& current_offset) const {
diff --git a/third_party/WebKit/Source/core/dom/ChildNodeList.h b/third_party/WebKit/Source/core/dom/ChildNodeList.h index 51cf708..1a2a4019 100644 --- a/third_party/WebKit/Source/core/dom/ChildNodeList.h +++ b/third_party/WebKit/Source/core/dom/ChildNodeList.h
@@ -48,6 +48,7 @@ } // Non-DOM API. + void ChildrenChanged(const ContainerNode::ChildrenChange&); void InvalidateCache() { collection_index_cache_.Invalidate(); } ContainerNode& OwnerNode() const { return *parent_; }
diff --git a/third_party/WebKit/Source/core/dom/CollectionIndexCache.h b/third_party/WebKit/Source/core/dom/CollectionIndexCache.h index aa71cb93..c71e657b 100644 --- a/third_party/WebKit/Source/core/dom/CollectionIndexCache.h +++ b/third_party/WebKit/Source/core/dom/CollectionIndexCache.h
@@ -63,6 +63,9 @@ void Invalidate(); + void NodeInserted(); + void NodeRemoved(); + DEFINE_INLINE_VIRTUAL_TRACE() { visitor->Trace(current_node_); } protected: @@ -110,6 +113,18 @@ } template <typename Collection, typename NodeType> +void CollectionIndexCache<Collection, NodeType>::NodeInserted() { + cached_node_count_++; + current_node_ = nullptr; +} + +template <typename Collection, typename NodeType> +void CollectionIndexCache<Collection, NodeType>::NodeRemoved() { + cached_node_count_--; + current_node_ = nullptr; +} + +template <typename Collection, typename NodeType> inline unsigned CollectionIndexCache<Collection, NodeType>::NodeCount( const Collection& collection) { if (IsCachedNodeCountValid()) @@ -137,7 +152,6 @@ } // No valid cache yet, let's find the first matching element. - DCHECK(!IsCachedNodeCountValid()); NodeType* first_node = collection.TraverseToFirst(); if (!first_node) { // The collection is empty.
diff --git a/third_party/WebKit/Source/core/dom/ContainerNode.cpp b/third_party/WebKit/Source/core/dom/ContainerNode.cpp index afb9bc0..829960ac 100644 --- a/third_party/WebKit/Source/core/dom/ContainerNode.cpp +++ b/third_party/WebKit/Source/core/dom/ContainerNode.cpp
@@ -968,7 +968,7 @@ void ContainerNode::ChildrenChanged(const ChildrenChange& change) { GetDocument().IncDOMTreeVersion(); GetDocument().NotifyChangeChildren(*this); - InvalidateNodeListCachesInAncestors(); + InvalidateNodeListCachesInAncestors(nullptr, nullptr, &change); if (change.IsChildInsertion()) { if (!ChildNeedsStyleRecalc()) { SetChildNeedsStyleRecalc(); @@ -1623,11 +1623,17 @@ void ContainerNode::InvalidateNodeListCachesInAncestors( const QualifiedName* attr_name, - Element* attribute_owner_element) { + Element* attribute_owner_element, + const ChildrenChange* change) { if (HasRareData() && (!attr_name || IsAttributeNode())) { if (NodeListsNodeData* lists = RareData()->NodeLists()) { - if (ChildNodeList* child_node_list = lists->GetChildNodeList(*this)) - child_node_list->InvalidateCache(); + if (ChildNodeList* child_node_list = lists->GetChildNodeList(*this)) { + if (change) { + child_node_list->ChildrenChanged(*change); + } else { + child_node_list->InvalidateCache(); + } + } } }
diff --git a/third_party/WebKit/Source/core/dom/ContainerNode.h b/third_party/WebKit/Source/core/dom/ContainerNode.h index 1ed12d85..f93ed23 100644 --- a/third_party/WebKit/Source/core/dom/ContainerNode.h +++ b/third_party/WebKit/Source/core/dom/ContainerNode.h
@@ -343,9 +343,13 @@ protected: ContainerNode(TreeScope*, ConstructionType = kCreateContainer); - void InvalidateNodeListCachesInAncestors( - const QualifiedName* attr_name = nullptr, - Element* attribute_owner_element = nullptr); + // |attr_name| and |owner_element| are only used for element attribute + // modifications. |ChildrenChange| is either nullptr or points to a + // ChildNode::ChildrenChange structure that describes the changes in the tree. + // If non-null, blink may preserve caches that aren't affected by the change. + void InvalidateNodeListCachesInAncestors(const QualifiedName* attr_name, + Element* attribute_owner_element, + const ChildrenChange*); void SetFirstChild(Node* child) { first_child_ = child;
diff --git a/third_party/WebKit/Source/core/dom/Element.cpp b/third_party/WebKit/Source/core/dom/Element.cpp index b5e6c9f6..3fc2799 100644 --- a/third_party/WebKit/Source/core/dom/Element.cpp +++ b/third_party/WebKit/Source/core/dom/Element.cpp
@@ -30,14 +30,12 @@ #include "bindings/core/v8/Dictionary.h" #include "bindings/core/v8/ExceptionMessages.h" #include "bindings/core/v8/ExceptionState.h" -#include "bindings/core/v8/V8DOMActivityLogger.h" #include "bindings/core/v8/scroll_into_view_options_or_boolean.h" #include "bindings/core/v8/string_or_trusted_html.h" #include "bindings/core/v8/string_or_trusted_script_url.h" #include "core/CSSValueKeywords.h" #include "core/SVGNames.h" #include "core/XMLNames.h" -#include "core/animation/CustomCompositorAnimations.h" #include "core/animation/css/CSSAnimations.h" #include "core/css/CSSIdentifierValue.h" #include "core/css/CSSPrimitiveValue.h" @@ -145,10 +143,9 @@ #include "core/svg/SVGTreeScopeResources.h" #include "platform/EventDispatchForbiddenScope.h" #include "platform/bindings/DOMDataStore.h" +#include "platform/bindings/V8DOMActivityLogger.h" #include "platform/bindings/V8DOMWrapper.h" #include "platform/bindings/V8PerContextData.h" -#include "platform/graphics/CompositorMutableProperties.h" -#include "platform/graphics/CompositorMutation.h" #include "platform/runtime_enabled_features.h" #include "platform/scroll/ScrollableArea.h" #include "platform/scroll/SmoothScrollSequencer.h" @@ -1133,14 +1130,6 @@ kProgrammaticScroll, scroll_behavior); } -void Element::UpdateFromCompositorMutation(const CompositorMutation& mutation) { - TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("cc"), - "Element::updateFromCompositorMutation"); - if (mutation.IsOpacityMutated() || mutation.IsTransformMutated()) - EnsureElementAnimations().GetCustomCompositorAnimations().ApplyUpdate( - *this, mutation); -} - bool Element::HasNonEmptyLayoutSize() const { GetDocument().UpdateStyleAndLayoutIgnorePendingStylesheets(); @@ -1464,7 +1453,7 @@ } } - InvalidateNodeListCachesInAncestors(&name, this); + InvalidateNodeListCachesInAncestors(&name, this, nullptr); if (isConnected()) { if (AXObjectCache* cache = GetDocument().ExistingAXObjectCache())
diff --git a/third_party/WebKit/Source/core/dom/Element.h b/third_party/WebKit/Source/core/dom/Element.h index 21fac9d..54c8349 100644 --- a/third_party/WebKit/Source/core/dom/Element.h +++ b/third_party/WebKit/Source/core/dom/Element.h
@@ -44,7 +44,6 @@ class Attr; class Attribute; class CSSStyleDeclaration; -class CompositorMutation; class CustomElementDefinition; class DOMRect; class DOMRectList; @@ -787,8 +786,6 @@ void setTabIndex(int); int tabIndex() const override; - void UpdateFromCompositorMutation(const CompositorMutation&); - // Helpers for V8DOMActivityLogger::logEvent. They call logEvent only if // the element is isConnected() and the context is an isolated world. void LogAddElementIfIsolatedWorldAndInDocument(const char element[],
diff --git a/third_party/WebKit/Source/core/dom/QualifiedName.cpp b/third_party/WebKit/Source/core/dom/QualifiedName.cpp index 6d99c93..9acf8af1 100644 --- a/third_party/WebKit/Source/core/dom/QualifiedName.cpp +++ b/third_party/WebKit/Source/core/dom/QualifiedName.cpp
@@ -65,11 +65,11 @@ const QualifiedNameData& data, unsigned) { const QualifiedNameComponents& components = data.components_; - location = QualifiedName::QualifiedNameImpl::Create( - AtomicString(components.prefix_), - AtomicString(components.local_name_), - AtomicString(components.namespace_), data.is_static_) - .LeakRef(); + auto name = QualifiedName::QualifiedNameImpl::Create( + AtomicString(components.prefix_), AtomicString(components.local_name_), + AtomicString(components.namespace_), data.is_static_); + name->AddRef(); + location = name.get(); } };
diff --git a/third_party/WebKit/Source/core/dom/events/EventTarget.cpp b/third_party/WebKit/Source/core/dom/events/EventTarget.cpp index ec60689..c614797 100644 --- a/third_party/WebKit/Source/core/dom/events/EventTarget.cpp +++ b/third_party/WebKit/Source/core/dom/events/EventTarget.cpp
@@ -35,7 +35,6 @@ #include "bindings/core/v8/ExceptionState.h" #include "bindings/core/v8/ScriptEventListener.h" #include "bindings/core/v8/SourceLocation.h" -#include "bindings/core/v8/V8DOMActivityLogger.h" #include "bindings/core/v8/add_event_listener_options_or_boolean.h" #include "bindings/core/v8/event_listener_options_or_boolean.h" #include "core/dom/ExceptionCode.h" @@ -52,6 +51,7 @@ #include "core/probe/CoreProbes.h" #include "platform/EventDispatchForbiddenScope.h" #include "platform/Histogram.h" +#include "platform/bindings/V8DOMActivityLogger.h" #include "platform/wtf/Assertions.h" #include "platform/wtf/PtrUtil.h" #include "platform/wtf/StdLibExtras.h"
diff --git a/third_party/WebKit/Source/core/exported/WebDOMActivityLogger.cpp b/third_party/WebKit/Source/core/exported/WebDOMActivityLogger.cpp index cbeaca2..b2506be52 100644 --- a/third_party/WebKit/Source/core/exported/WebDOMActivityLogger.cpp +++ b/third_party/WebKit/Source/core/exported/WebDOMActivityLogger.cpp
@@ -32,9 +32,9 @@ #include <memory> #include "bindings/core/v8/V8BindingForCore.h" -#include "bindings/core/v8/V8DOMActivityLogger.h" #include "core/dom/Document.h" #include "core/frame/LocalDOMWindow.h" +#include "platform/bindings/V8DOMActivityLogger.h" #include "platform/wtf/PtrUtil.h" #include "platform/wtf/RefPtr.h" #include "platform/wtf/text/WTFString.h"
diff --git a/third_party/WebKit/Source/core/exported/WebPagePopupImpl.cpp b/third_party/WebKit/Source/core/exported/WebPagePopupImpl.cpp index 58c0875..842172b 100644 --- a/third_party/WebKit/Source/core/exported/WebPagePopupImpl.cpp +++ b/third_party/WebKit/Source/core/exported/WebPagePopupImpl.cpp
@@ -592,7 +592,9 @@ // WebPagePopupImpl to close. // We need them because the closing operation is asynchronous and the widget // can be closed while the WebViewImpl is unaware of it. - return WTF::AdoptRef(new WebPagePopupImpl(client)).LeakRef(); + auto popup = WTF::AdoptRef(new WebPagePopupImpl(client)); + popup->AddRef(); + return popup.get(); } } // namespace blink
diff --git a/third_party/WebKit/Source/core/exported/WebViewImpl.cpp b/third_party/WebKit/Source/core/exported/WebViewImpl.cpp index 37634a25..9ba4877 100644 --- a/third_party/WebKit/Source/core/exported/WebViewImpl.cpp +++ b/third_party/WebKit/Source/core/exported/WebViewImpl.cpp
@@ -301,7 +301,9 @@ WebViewImpl* WebViewImpl::Create(WebViewClient* client, WebPageVisibilityState visibility_state) { // Pass the WebViewImpl's self-reference to the caller. - return WTF::AdoptRef(new WebViewImpl(client, visibility_state)).LeakRef(); + auto web_view = WTF::AdoptRef(new WebViewImpl(client, visibility_state)); + web_view->AddRef(); + return web_view.get(); } void WebView::UpdateVisitedLinkState(unsigned long long link_hash) {
diff --git a/third_party/WebKit/Source/core/frame/Location.cpp b/third_party/WebKit/Source/core/frame/Location.cpp index c15d0d2..4079d3f 100644 --- a/third_party/WebKit/Source/core/frame/Location.cpp +++ b/third_party/WebKit/Source/core/frame/Location.cpp
@@ -30,7 +30,6 @@ #include "bindings/core/v8/BindingSecurity.h" #include "bindings/core/v8/ExceptionState.h" -#include "bindings/core/v8/V8DOMActivityLogger.h" #include "bindings/core/v8/string_or_trusted_url.h" #include "core/dom/Document.h" #include "core/dom/ExceptionCode.h" @@ -40,6 +39,7 @@ #include "core/frame/LocalFrame.h" #include "core/loader/FrameLoader.h" #include "core/url/DOMURLUtilsReadOnly.h" +#include "platform/bindings/V8DOMActivityLogger.h" #include "platform/weborigin/KURL.h" #include "platform/weborigin/SecurityOrigin.h"
diff --git a/third_party/WebKit/Source/core/frame/VisualViewport.cpp b/third_party/WebKit/Source/core/frame/VisualViewport.cpp index 91dad98..76c780d 100644 --- a/third_party/WebKit/Source/core/frame/VisualViewport.cpp +++ b/third_party/WebKit/Source/core/frame/VisualViewport.cpp
@@ -50,7 +50,6 @@ #include "platform/Histogram.h" #include "platform/geometry/DoubleRect.h" #include "platform/geometry/FloatSize.h" -#include "platform/graphics/CompositorMutableProperties.h" #include "platform/graphics/GraphicsLayer.h" #include "platform/instrumentation/tracing/TraceEvent.h" #include "platform/scroll/Scrollbar.h"
diff --git a/third_party/WebKit/Source/core/html/HTMLInputElement.cpp b/third_party/WebKit/Source/core/html/HTMLInputElement.cpp index 928d5434..a894755 100644 --- a/third_party/WebKit/Source/core/html/HTMLInputElement.cpp +++ b/third_party/WebKit/Source/core/html/HTMLInputElement.cpp
@@ -1052,12 +1052,15 @@ setValue(value, kDispatchChangeEvent); } +const String& HTMLInputElement::SuggestedValue() const { + return suggested_value_; +} + void HTMLInputElement::SetSuggestedValue(const String& value) { if (!input_type_->CanSetSuggestedValue()) return; - - TextControlElement::SetSuggestedValue(SanitizeValue(value)); needs_to_update_view_value_ = true; + suggested_value_ = SanitizeValue(value); SetNeedsStyleRecalc( kSubtreeStyleChange, StyleChangeReasonForTracing::Create(StyleChangeReason::kControlValue)); @@ -1101,16 +1104,14 @@ if (!input_type_->CanSetValue(value)) return; - // Clear the suggested value. Use the base class version to not trigger a view - // update. - TextControlElement::SetSuggestedValue(String()); - EventQueueScope scope; String sanitized_value = SanitizeValue(value); bool value_changed = sanitized_value != this->value(); SetLastChangeWasNotUserEdit(); needs_to_update_view_value_ = true; + // Prevent TextFieldInputType::setValue from using the suggested value. + suggested_value_ = String(); input_type_->SetValue(sanitized_value, value_changed, event_behavior, selection); @@ -1182,9 +1183,7 @@ // File upload controls will never use this. DCHECK_NE(type(), InputTypeNames::file); - // Clear the suggested value. Use the base class version to not trigger a view - // update. - TextControlElement::SetSuggestedValue(String()); + suggested_value_ = String(); // Renderer and our event handler are responsible for sanitizing values. DCHECK(value == input_type_->SanitizeUserInputValue(value) || @@ -1690,10 +1689,6 @@ return input_type_view_->UpdatePlaceholderText(); } -String HTMLInputElement::GetPlaceholderValue() const { - return !SuggestedValue().IsEmpty() ? SuggestedValue() : StrippedPlaceholder(); -} - bool HTMLInputElement::SupportsAutocapitalize() const { return input_type_->SupportsAutocapitalize(); }
diff --git a/third_party/WebKit/Source/core/html/HTMLInputElement.h b/third_party/WebKit/Source/core/html/HTMLInputElement.h index e7e3b4e..832a91ce 100644 --- a/third_party/WebKit/Source/core/html/HTMLInputElement.h +++ b/third_party/WebKit/Source/core/html/HTMLInputElement.h
@@ -144,7 +144,8 @@ String LocalizeValue(const String&) const; - void SetSuggestedValue(const String& value) override; + const String& SuggestedValue() const; + void SetSuggestedValue(const String&); void SetEditingValue(const String&); @@ -292,8 +293,6 @@ unsigned SizeOfRadioGroup() const; - String GetPlaceholderValue() const final; - protected: HTMLInputElement(Document&, bool created_by_parser); @@ -368,6 +367,9 @@ bool SupportsPlaceholder() const final; void UpdatePlaceholderText() final; bool IsEmptyValue() const final { return InnerEditorValue().IsEmpty(); } + bool IsEmptySuggestedValue() const final { + return SuggestedValue().IsEmpty(); + } void HandleFocusEvent(Element* old_focused_element, WebFocusType) final; void HandleBlurEvent() final; void DispatchFocusInEvent(const AtomicString& event_type, @@ -402,6 +404,7 @@ AtomicString name_; // The value string in |value| value mode. String non_attribute_value_; + String suggested_value_; int size_; // https://html.spec.whatwg.org/multipage/forms.html#concept-input-value-dirty-flag unsigned has_dirty_value_ : 1;
diff --git a/third_party/WebKit/Source/core/html/HTMLTextAreaElement.cpp b/third_party/WebKit/Source/core/html/HTMLTextAreaElement.cpp index 5ccd915..0f330b4 100644 --- a/third_party/WebKit/Source/core/html/HTMLTextAreaElement.cpp +++ b/third_party/WebKit/Source/core/html/HTMLTextAreaElement.cpp
@@ -391,10 +391,6 @@ normalized_value.Replace("\r\n", "\n"); normalized_value.Replace('\r', '\n'); - // Clear the suggested value. Use the base class version to not trigger a view - // update. - TextControlElement::SetSuggestedValue(String()); - // Return early because we don't want to trigger other side effects when the // value isn't changing. This is interoperable. if (normalized_value == value()) @@ -412,6 +408,7 @@ SetNeedsStyleRecalc( kSubtreeStyleChange, StyleChangeReasonForTracing::Create(StyleChangeReason::kControlValue)); + suggested_value_ = String(); SetNeedsValidityCheck(); if (IsFinishedParsingChildren() && selection == TextControlSetValueSelection::kSetSelectionToEnd) { @@ -471,8 +468,18 @@ SetNonDirtyValue(value); } +String HTMLTextAreaElement::SuggestedValue() const { + return suggested_value_; +} + void HTMLTextAreaElement::SetSuggestedValue(const String& value) { - TextControlElement::SetSuggestedValue(value); + suggested_value_ = value; + + if (!value.IsNull()) + SetInnerEditorValue(suggested_value_); + else + SetInnerEditorValue(value_); + UpdatePlaceholderVisibility(); SetNeedsStyleRecalc( kSubtreeStyleChange, StyleChangeReasonForTracing::Create(StyleChangeReason::kControlValue)); @@ -581,7 +588,7 @@ void HTMLTextAreaElement::UpdatePlaceholderText() { HTMLElement* placeholder = PlaceholderElement(); - const String placeholder_text = GetPlaceholderValue(); + const AtomicString& placeholder_text = FastGetAttribute(placeholderAttr); if (placeholder_text.IsEmpty()) { if (placeholder) UserAgentShadowRoot()->RemoveChild(placeholder); @@ -600,11 +607,6 @@ placeholder->setTextContent(placeholder_text); } -String HTMLTextAreaElement::GetPlaceholderValue() const { - return !SuggestedValue().IsEmpty() ? SuggestedValue() - : FastGetAttribute(placeholderAttr); -} - bool HTMLTextAreaElement::IsInteractiveContent() const { return true; }
diff --git a/third_party/WebKit/Source/core/html/HTMLTextAreaElement.h b/third_party/WebKit/Source/core/html/HTMLTextAreaElement.h index 70a347a..505edca 100644 --- a/third_party/WebKit/Source/core/html/HTMLTextAreaElement.h +++ b/third_party/WebKit/Source/core/html/HTMLTextAreaElement.h
@@ -52,7 +52,8 @@ void setDefaultValue(const String&); int textLength() const { return value().length(); } - void SetSuggestedValue(const String& value) override; + String SuggestedValue() const; + void SetSuggestedValue(const String&); // For ValidityState String validationMessage() const override; @@ -86,9 +87,11 @@ bool IsPlaceholderVisible() const override { return is_placeholder_visible_; } void SetPlaceholderVisibility(bool) override; bool SupportsPlaceholder() const override { return true; } - String GetPlaceholderValue() const final; void UpdatePlaceholderText() override; bool IsEmptyValue() const override { return value().IsEmpty(); } + bool IsEmptySuggestedValue() const final { + return SuggestedValue().IsEmpty(); + } bool SupportsAutocapitalize() const override { return true; } const AtomicString& DefaultAutocapitalize() const override; @@ -144,6 +147,7 @@ mutable String value_; mutable bool is_dirty_; unsigned is_placeholder_visible_ : 1; + String suggested_value_; }; } // namespace blink
diff --git a/third_party/WebKit/Source/core/html/TextControlElement.cpp b/third_party/WebKit/Source/core/html/TextControlElement.cpp index 7d4ae44..bc400ba3 100644 --- a/third_party/WebKit/Source/core/html/TextControlElement.cpp +++ b/third_party/WebKit/Source/core/html/TextControlElement.cpp
@@ -46,7 +46,6 @@ #include "core/frame/LocalFrame.h" #include "core/frame/UseCounter.h" #include "core/html/HTMLBRElement.h" -#include "core/html/HTMLDivElement.h" #include "core/html/parser/HTMLParserIdioms.h" #include "core/html/shadow/ShadowElementNames.h" #include "core/layout/LayoutBlock.h" @@ -160,8 +159,8 @@ } bool TextControlElement::PlaceholderShouldBeVisible() const { - return SupportsPlaceholder() && InnerEditorValue().IsEmpty() && - (!IsPlaceholderEmpty() || !IsEmptySuggestedValue()); + return SupportsPlaceholder() && IsEmptyValue() && IsEmptySuggestedValue() && + !IsPlaceholderEmpty(); } HTMLElement* TextControlElement::PlaceholderElement() const { @@ -972,28 +971,6 @@ return "ltr"; } -void TextControlElement::SetSuggestedValue(const String& value) { - suggested_value_ = value; - if (!suggested_value_.IsEmpty() && !InnerEditorValue().IsEmpty()) { - // Save the value that is in the editor and set the editor value to an empty - // string. This will allow the suggestion placeholder to be shown to the - // user. - value_before_set_suggested_value_ = InnerEditorValue(); - SetInnerEditorValue(""); - } else if (suggested_value_.IsEmpty() && - !value_before_set_suggested_value_.IsEmpty()) { - // Reset the value that was in the editor before showing the suggestion. - SetInnerEditorValue(value_before_set_suggested_value_); - value_before_set_suggested_value_ = ""; - } - - UpdatePlaceholderText(); -} - -const String& TextControlElement::SuggestedValue() const { - return suggested_value_; -} - HTMLElement* TextControlElement::InnerEditorElement() const { return ToHTMLElementOrDie( UserAgentShadowRoot()->getElementById(ShadowElementNames::InnerEditor()));
diff --git a/third_party/WebKit/Source/core/html/TextControlElement.h b/third_party/WebKit/Source/core/html/TextControlElement.h index 965f10d..fad00b1 100644 --- a/third_party/WebKit/Source/core/html/TextControlElement.h +++ b/third_party/WebKit/Source/core/html/TextControlElement.h
@@ -141,14 +141,10 @@ String DirectionForFormData() const; - virtual void SetSuggestedValue(const String& value); - const String& SuggestedValue() const; - protected: TextControlElement(const QualifiedName&, Document&); bool IsPlaceholderEmpty() const; virtual void UpdatePlaceholderText() = 0; - virtual String GetPlaceholderValue() const = 0; void ParseAttribute(const AttributeModificationParams&) override; @@ -186,7 +182,7 @@ virtual bool IsEmptyValue() const = 0; // Returns true if suggested value is empty. Used to check placeholder // visibility. - bool IsEmptySuggestedValue() const { return SuggestedValue().IsEmpty(); } + virtual bool IsEmptySuggestedValue() const { return true; } // Called in dispatchFocusEvent(), after placeholder process, before calling // parent's dispatchFocusEvent(). virtual void HandleFocusEvent(Element* /* oldFocusedNode */, WebFocusType) {} @@ -206,9 +202,6 @@ unsigned cached_selection_end_; TextFieldSelectionDirection cached_selection_direction_; - String suggested_value_; - String value_before_set_suggested_value_; - FRIEND_TEST_ALL_PREFIXES(TextControlElementTest, IndexForPosition); };
diff --git a/third_party/WebKit/Source/core/html/forms/TextFieldInputType.cpp b/third_party/WebKit/Source/core/html/forms/TextFieldInputType.cpp index 6bdab976..3182088 100644 --- a/third_party/WebKit/Source/core/html/forms/TextFieldInputType.cpp +++ b/third_party/WebKit/Source/core/html/forms/TextFieldInputType.cpp
@@ -460,7 +460,7 @@ if (!SupportsPlaceholder()) return; HTMLElement* placeholder = GetElement().PlaceholderElement(); - String placeholder_text = GetElement().GetPlaceholderValue(); + String placeholder_text = GetElement().StrippedPlaceholder(); if (placeholder_text.IsEmpty()) { if (placeholder) placeholder->remove(ASSERT_NO_EXCEPTION); @@ -525,8 +525,10 @@ } void TextFieldInputType::UpdateView() { - if (GetElement().SuggestedValue().IsEmpty() && - GetElement().NeedsToUpdateViewValue()) { + if (!GetElement().SuggestedValue().IsNull()) { + GetElement().SetInnerEditorValue(GetElement().SuggestedValue()); + GetElement().UpdatePlaceholderVisibility(); + } else if (GetElement().NeedsToUpdateViewValue()) { // Update the view only if needsToUpdateViewValue is true. It protects // an unacceptable view value from being overwritten with the DOM value. //
diff --git a/third_party/WebKit/Source/core/imagebitmap/ImageBitmap.cpp b/third_party/WebKit/Source/core/imagebitmap/ImageBitmap.cpp index a993444..d3cbed6 100644 --- a/third_party/WebKit/Source/core/imagebitmap/ImageBitmap.cpp +++ b/third_party/WebKit/Source/core/imagebitmap/ImageBitmap.cpp
@@ -202,8 +202,15 @@ RefPtr<Uint8Array>&& image_pixels) { unsigned image_row_bytes = info.width() * info.bytesPerPixel(); SkPixmap pixmap(info, image_pixels->Data(), image_row_bytes); + + Uint8Array* pixels = image_pixels.get(); + if (pixels) { + pixels->AddRef(); + image_pixels = nullptr; + } + return StaticBitmapImage::Create( - SkImage::MakeFromRaster(pixmap, freePixels, image_pixels.LeakRef())); + SkImage::MakeFromRaster(pixmap, freePixels, pixels)); } RefPtr<StaticBitmapImage> FlipImageVertically(RefPtr<StaticBitmapImage> input) { @@ -283,14 +290,16 @@ pm_image->scalePixels(pm_resized_pixmap, resize_quality); sk_sp<SkImage> resized_image; if (original_alpha == kPremul_SkAlphaType) { + resized_pixels->AddRef(); resized_image = SkImage::MakeFromRaster(pm_resized_pixmap, freePixels, - resized_pixels.LeakRef()); + resized_pixels.get()); } else { SkPixmap upm_resized_pixmap( pm_resized_info.makeAlphaType(kUnpremul_SkAlphaType), resized_pixels->Data(), resize_width * pm_info.bytesPerPixel()); + resized_pixels->AddRef(); resized_image = SkImage::MakeFromRaster(upm_resized_pixmap, freePixels, - resized_pixels.LeakRef()); + resized_pixels.get()); } return StaticBitmapImage::Create(resized_image, image->ContextProviderWrapper());
diff --git a/third_party/WebKit/Source/core/layout/LayoutQuote.cpp b/third_party/WebKit/Source/core/layout/LayoutQuote.cpp index f62f69b..77f0bc3 100644 --- a/third_party/WebKit/Source/core/layout/LayoutQuote.cpp +++ b/third_party/WebKit/Source/core/layout/LayoutQuote.cpp
@@ -240,10 +240,12 @@ if (match == languages_end || strcmp(match->lang, key.lang)) return nullptr; - if (!match->data) - match->data = QuotesData::Create(match->open1, match->close1, match->open2, - match->close2) - .LeakRef(); + if (!match->data) { + auto data = QuotesData::Create(match->open1, match->close1, match->open2, + match->close2); + data->AddRef(); + match->data = data.get(); + } return match->data; }
diff --git a/third_party/WebKit/Source/core/loader/EmptyClients.cpp b/third_party/WebKit/Source/core/loader/EmptyClients.cpp index 5295c27..48b898b 100644 --- a/third_party/WebKit/Source/core/loader/EmptyClients.cpp +++ b/third_party/WebKit/Source/core/loader/EmptyClients.cpp
@@ -71,41 +71,53 @@ class EmptyFrameScheduler : public WebFrameScheduler { public: EmptyFrameScheduler() { DCHECK(IsMainThread()); } + + RefPtr<WebTaskRunner> LoadingTaskRunner() override { + return Platform::Current()->MainThread()->GetWebTaskRunner(); + } + RefPtr<WebTaskRunner> LoadingControlTaskRunner() override { + return Platform::Current()->MainThread()->GetWebTaskRunner(); + } + RefPtr<WebTaskRunner> ThrottleableTaskRunner() override { + return Platform::Current()->MainThread()->GetWebTaskRunner(); + } + RefPtr<WebTaskRunner> DeferrableTaskRunner() override { + return Platform::Current()->MainThread()->GetWebTaskRunner(); + } + RefPtr<WebTaskRunner> PausableTaskRunner() override { + return Platform::Current()->MainThread()->GetWebTaskRunner(); + } + RefPtr<WebTaskRunner> UnpausableTaskRunner() override { + return Platform::Current()->MainThread()->GetWebTaskRunner(); + } + void AddThrottlingObserver(ObserverType, Observer*) override {} void RemoveThrottlingObserver(ObserverType, Observer*) override {} void SetFrameVisible(bool) override {} - RefPtr<WebTaskRunner> LoadingTaskRunner() override; - RefPtr<WebTaskRunner> LoadingControlTaskRunner() override; - RefPtr<WebTaskRunner> ThrottleableTaskRunner() override; - RefPtr<WebTaskRunner> DeferrableTaskRunner() override; - RefPtr<WebTaskRunner> PausableTaskRunner() override; - RefPtr<WebTaskRunner> UnpausableTaskRunner() override; + bool IsFrameVisible() const override { return false; } + void SetPageVisible(bool) override {} + bool IsPageVisible() const override { return false; } + void SetPaused(bool) override {} + void SetCrossOrigin(bool) override {} + bool IsCrossOrigin() const override { return false; } + WebViewScheduler* GetWebViewScheduler() override { return nullptr; } + void DidStartLoading(unsigned long identifier) override {} + void DidStopLoading(unsigned long identifier) override {} + void WillNavigateBackForwardSoon() override {} + void DidStartProvisionalLoad(bool is_main_frame) override {} + void DidFailProvisionalLoad() override {} + void DidCommitProvisionalLoad(bool is_web_history_inert_commit, + bool is_reload, + bool is_main_frame) override {} + void SetDocumentParsingInBackground( + bool background_parsing_enabled) override {} + void OnFirstMeaningfulPaint() override {} + std::unique_ptr<ActiveConnectionHandle> OnActiveConnectionCreated() override { + return nullptr; + } + bool IsExemptFromThrottling() const override { return false; } }; -RefPtr<WebTaskRunner> EmptyFrameScheduler::LoadingTaskRunner() { - return Platform::Current()->MainThread()->GetWebTaskRunner(); -} - -RefPtr<WebTaskRunner> EmptyFrameScheduler::LoadingControlTaskRunner() { - return Platform::Current()->MainThread()->GetWebTaskRunner(); -} - -RefPtr<WebTaskRunner> EmptyFrameScheduler::ThrottleableTaskRunner() { - return Platform::Current()->MainThread()->GetWebTaskRunner(); -} - -RefPtr<WebTaskRunner> EmptyFrameScheduler::DeferrableTaskRunner() { - return Platform::Current()->MainThread()->GetWebTaskRunner(); -} - -RefPtr<WebTaskRunner> EmptyFrameScheduler::PausableTaskRunner() { - return Platform::Current()->MainThread()->GetWebTaskRunner(); -} - -RefPtr<WebTaskRunner> EmptyFrameScheduler::UnpausableTaskRunner() { - return Platform::Current()->MainThread()->GetWebTaskRunner(); -} - PopupMenu* EmptyChromeClient::OpenPopupMenu(LocalFrame&, HTMLSelectElement&) { return new EmptyPopupMenu(); }
diff --git a/third_party/WebKit/Source/core/loader/FrameFetchContext.cpp b/third_party/WebKit/Source/core/loader/FrameFetchContext.cpp index 3da9dcdb..aa0b976 100644 --- a/third_party/WebKit/Source/core/loader/FrameFetchContext.cpp +++ b/third_party/WebKit/Source/core/loader/FrameFetchContext.cpp
@@ -34,7 +34,6 @@ #include <memory> #include "bindings/core/v8/ScriptController.h" #include "bindings/core/v8/V8BindingForCore.h" -#include "bindings/core/v8/V8DOMActivityLogger.h" #include "core/dom/Document.h" #include "core/frame/ContentSettingsClient.h" #include "core/frame/Deprecation.h" @@ -68,6 +67,7 @@ #include "core/timing/Performance.h" #include "core/timing/PerformanceBase.h" #include "platform/WebFrameScheduler.h" +#include "platform/bindings/V8DOMActivityLogger.h" #include "platform/exported/WrappedResourceRequest.h" #include "platform/instrumentation/tracing/TracedValue.h" #include "platform/loader/fetch/ClientHintsPreferences.h"
diff --git a/third_party/WebKit/Source/core/page/FocusController.cpp b/third_party/WebKit/Source/core/page/FocusController.cpp index b39d1c05..5492db26 100644 --- a/third_party/WebKit/Source/core/page/FocusController.cpp +++ b/third_party/WebKit/Source/core/page/FocusController.cpp
@@ -1386,14 +1386,6 @@ // We found a new focus node, navigate to it. Element* element = ToElement(focus_candidate.focusable_node); DCHECK(element); - - if (!element->IsTextControl() && !HasEditableStyle(*element->ToNode())) { - // To fulfill the expectation of spatial-navigation/snav-textarea.html - // we clear selection when spatnav moves focus away from a text-field. - // TODO(hugoh@opera.com): crbug.com/734552 remove Selection.Clear() - if (FocusedFrame()) - FocusedFrame()->Selection().Clear(); - } element->focus(FocusParams(SelectionBehaviorOnFocus::kReset, type, nullptr)); return true; }
diff --git a/third_party/WebKit/Source/core/paint/BoxBorderPainter.cpp b/third_party/WebKit/Source/core/paint/BoxBorderPainter.cpp index 2b35e26..af0fe62 100644 --- a/third_party/WebKit/Source/core/paint/BoxBorderPainter.cpp +++ b/third_party/WebKit/Source/core/paint/BoxBorderPainter.cpp
@@ -1055,9 +1055,12 @@ return; } - // The extra multiplier is so that the clipping mask can antialias + // The stroke is doubled here because the provided path is the + // outside edge of the border so half the stroke is clipped off, with + // the extra multiplier so that the clipping mask can antialias // the edges to prevent jaggies. - graphics_context.SetStrokeThickness(stroke_thickness * 1.1f); + const float thickness_multiplier = 2 * 1.1f; + graphics_context.SetStrokeThickness(stroke_thickness * thickness_multiplier); graphics_context.SetStrokeStyle( border_style == EBorderStyle::kDashed ? kDashedStroke : kDottedStroke);
diff --git a/third_party/WebKit/Source/core/paint/LinkHighlightImpl.cpp b/third_party/WebKit/Source/core/paint/LinkHighlightImpl.cpp index 670891ae..9d90b6a4 100644 --- a/third_party/WebKit/Source/core/paint/LinkHighlightImpl.cpp +++ b/third_party/WebKit/Source/core/paint/LinkHighlightImpl.cpp
@@ -44,7 +44,6 @@ #include "platform/animation/CompositorTargetProperty.h" #include "platform/animation/TimingFunction.h" #include "platform/graphics/Color.h" -#include "platform/graphics/CompositorMutableProperties.h" #include "platform/graphics/GraphicsLayer.h" #include "platform/graphics/paint/DrawingRecorder.h" #include "platform/graphics/paint/PaintCanvas.h"
diff --git a/third_party/WebKit/Source/core/paint/PaintLayerScrollableArea.cpp b/third_party/WebKit/Source/core/paint/PaintLayerScrollableArea.cpp index 108c5cf..4173c09 100644 --- a/third_party/WebKit/Source/core/paint/PaintLayerScrollableArea.cpp +++ b/third_party/WebKit/Source/core/paint/PaintLayerScrollableArea.cpp
@@ -82,7 +82,6 @@ #include "core/paint/PaintLayerFragment.h" #include "core/paint/compositing/CompositedLayerMapping.h" #include "core/paint/compositing/PaintLayerCompositor.h" -#include "platform/graphics/CompositorMutableProperties.h" #include "platform/graphics/GraphicsLayer.h" #include "platform/graphics/paint/DrawingRecorder.h" #include "platform/scroll/ScrollAnimatorBase.h"
diff --git a/third_party/WebKit/Source/core/paint/compositing/CompositedLayerMapping.cpp b/third_party/WebKit/Source/core/paint/compositing/CompositedLayerMapping.cpp index 7b691b3..1d62f45 100644 --- a/third_party/WebKit/Source/core/paint/compositing/CompositedLayerMapping.cpp +++ b/third_party/WebKit/Source/core/paint/compositing/CompositedLayerMapping.cpp
@@ -69,7 +69,6 @@ #include "platform/geometry/TransformState.h" #include "platform/graphics/BitmapImage.h" #include "platform/graphics/CompositorFilterOperations.h" -#include "platform/graphics/CompositorMutableProperties.h" #include "platform/graphics/GraphicsContext.h" #include "platform/graphics/paint/ClipDisplayItem.h" #include "platform/graphics/paint/ClipRecorder.h"
diff --git a/third_party/WebKit/Source/core/paint/compositing/PaintLayerCompositor.cpp b/third_party/WebKit/Source/core/paint/compositing/PaintLayerCompositor.cpp index f26a7dc..edf1ca4 100644 --- a/third_party/WebKit/Source/core/paint/compositing/PaintLayerCompositor.cpp +++ b/third_party/WebKit/Source/core/paint/compositing/PaintLayerCompositor.cpp
@@ -58,7 +58,6 @@ #include "platform/Histogram.h" #include "platform/ScriptForbiddenScope.h" #include "platform/geometry/FloatRect.h" -#include "platform/graphics/CompositorMutableProperties.h" #include "platform/graphics/GraphicsLayer.h" #include "platform/graphics/paint/CullRect.h" #include "platform/graphics/paint/DrawingRecorder.h"
diff --git a/third_party/WebKit/Source/modules/media_controls/MediaControlsResourceLoader.cpp b/third_party/WebKit/Source/modules/media_controls/MediaControlsResourceLoader.cpp index 4d24483b..e9c7e3eb 100644 --- a/third_party/WebKit/Source/modules/media_controls/MediaControlsResourceLoader.cpp +++ b/third_party/WebKit/Source/modules/media_controls/MediaControlsResourceLoader.cpp
@@ -40,13 +40,10 @@ #pragma GCC diagnostic ignored "-Wunknown-pragmas" #endif String MediaControlsResourceLoader::GetMediaControlsCSS() const { - if (RuntimeEnabledFeatures::ModernMediaControlsEnabled()) { - return ResourceBundleHelper::GetResourceAsString( - IDR_UASTYLE_MODERN_MEDIA_CONTROLS_CSS); - } else { - return ResourceBundleHelper::GetResourceAsString( - IDR_UASTYLE_LEGACY_MEDIA_CONTROLS_CSS); - } + return ResourceBundleHelper::UncompressResourceAsString( + RuntimeEnabledFeatures::ModernMediaControlsEnabled() + ? IDR_UASTYLE_MODERN_MEDIA_CONTROLS_CSS + : IDR_UASTYLE_LEGACY_MEDIA_CONTROLS_CSS); }; String MediaControlsResourceLoader::GetMediaControlsAndroidCSS() const {
diff --git a/third_party/WebKit/Source/modules/media_controls/resources/media_controls_resources.grd b/third_party/WebKit/Source/modules/media_controls/resources/media_controls_resources.grd index f9c3d46..848cffa 100644 --- a/third_party/WebKit/Source/modules/media_controls/resources/media_controls_resources.grd +++ b/third_party/WebKit/Source/modules/media_controls/resources/media_controls_resources.grd
@@ -30,8 +30,8 @@ <structure type="chrome_scaled_image" name="IDR_LEGACY_MEDIAPLAYER_OVERFLOW_MENU_ICON" file="legacy/mediaplayer_overflow_menu.png" /> <structure type="chrome_scaled_image" name="IDR_LEGACY_MEDIAPLAYER_DOWNLOAD_ICON" file="legacy/mediaplayer_download.png" /> <structure type="chrome_scaled_image" name="IDR_LEGACY_MEDIAPLAYER_SUBTITLES_ICON" file="legacy/mediaplayer_subtitles_icon.png" /> - <structure type="chrome_html" name="IDR_UASTYLE_LEGACY_MEDIA_CONTROLS_CSS" file="legacyMediaControls.css" flattenhtml="true" /> - <structure type="chrome_html" name="IDR_UASTYLE_MODERN_MEDIA_CONTROLS_CSS" file="modernMediaControls.css" flattenhtml="true" /> + <structure type="chrome_html" name="IDR_UASTYLE_LEGACY_MEDIA_CONTROLS_CSS" file="legacyMediaControls.css" flattenhtml="true" compress="gzip" /> + <structure type="chrome_html" name="IDR_UASTYLE_MODERN_MEDIA_CONTROLS_CSS" file="modernMediaControls.css" flattenhtml="true" compress="gzip" /> </structures> <includes> <include name="IDR_UASTYLE_LEGACY_MEDIA_CONTROLS_ANDROID_CSS" file="legacyMediaControlsAndroid.css" type="BINDATA" compress="gzip" />
diff --git a/third_party/WebKit/Source/platform/BUILD.gn b/third_party/WebKit/Source/platform/BUILD.gn index 99663e8..b1c2cba 100644 --- a/third_party/WebKit/Source/platform/BUILD.gn +++ b/third_party/WebKit/Source/platform/BUILD.gn
@@ -532,6 +532,8 @@ "bindings/V8Binding.cpp", "bindings/V8Binding.h", "bindings/V8BindingMacros.h", + "bindings/V8DOMActivityLogger.cpp", + "bindings/V8DOMActivityLogger.h", "bindings/V8DOMWrapper.cpp", "bindings/V8DOMWrapper.h", "bindings/V8GlobalValueMap.h", @@ -903,9 +905,6 @@ "graphics/CompositorElementId.h", "graphics/CompositorFilterOperations.cpp", "graphics/CompositorFilterOperations.h", - "graphics/CompositorMutableProperties.h", - "graphics/CompositorMutation.h", - "graphics/CompositorMutationsTarget.h", "graphics/CompositorMutator.h", "graphics/CompositorMutatorClient.cpp", "graphics/CompositorMutatorClient.h", @@ -1837,7 +1836,6 @@ "geometry/RegionTest.cpp", "graphics/BitmapImageTest.cpp", "graphics/CompositorElementIdTest.cpp", - "graphics/CompositorMutatorClientTest.cpp", "graphics/ContiguousContainerTest.cpp", "graphics/DecodingImageGeneratorTest.cpp", "graphics/DeferredImageDecoderTestWoPlatform.cpp",
diff --git a/third_party/WebKit/Source/platform/WebFrameScheduler.h b/third_party/WebKit/Source/platform/WebFrameScheduler.h index 237a9dc..2cdf015 100644 --- a/third_party/WebKit/Source/platform/WebFrameScheduler.h +++ b/third_party/WebKit/Source/platform/WebFrameScheduler.h
@@ -52,21 +52,24 @@ virtual void RemoveThrottlingObserver(ObserverType, Observer*) = 0; // The scheduler may throttle tasks associated with offscreen frames. - virtual void SetFrameVisible(bool) {} + virtual void SetFrameVisible(bool) = 0; + virtual bool IsFrameVisible() const = 0; // Tells the scheduler that the page this frame belongs to is not visible. // The scheduler may throttle tasks associated with pages that are not // visible. - virtual void SetPageVisible(bool) {} + virtual void SetPageVisible(bool) = 0; + virtual bool IsPageVisible() const = 0; // Set whether this frame is suspended. Only unthrottledTaskRunner tasks are // allowed to run on a suspended frame. - virtual void SetPaused(bool) {} + virtual void SetPaused(bool) = 0; // Set whether this frame is cross origin w.r.t. the top level frame. Cross // origin frames may use a different scheduling policy from same origin // frames. - virtual void SetCrossOrigin(bool) {} + virtual void SetCrossOrigin(bool) = 0; + virtual bool IsCrossOrigin() const = 0; // The tasks runners below are listed in increasing QoS order. // - throttleable task queue. Designed for custom user-provided javascript @@ -124,50 +127,54 @@ virtual RefPtr<WebTaskRunner> LoadingControlTaskRunner() = 0; // Returns the parent WebViewScheduler. - virtual WebViewScheduler* GetWebViewScheduler() { return nullptr; } + virtual WebViewScheduler* GetWebViewScheduler() = 0; // Tells the scheduler a resource load has started. The scheduler may make // policy decisions based on this. - virtual void DidStartLoading(unsigned long identifier) {} + virtual void DidStartLoading(unsigned long identifier) = 0; // Tells the scheduler a resource load has stopped. The scheduler may make // policy decisions based on this. - virtual void DidStopLoading(unsigned long identifier) {} + virtual void DidStopLoading(unsigned long identifier) = 0; // Tells the scheduler that a history navigation is expected soon, virtual // time may be paused. Must be called from the main thread. - virtual void WillNavigateBackForwardSoon() {} + virtual void WillNavigateBackForwardSoon() = 0; // Tells the scheduler that a provisional load has started, virtual time may // be paused. Must be called from the main thread. - virtual void DidStartProvisionalLoad(bool is_main_frame) {} + virtual void DidStartProvisionalLoad(bool is_main_frame) = 0; // Tells the scheduler that a provisional load has failed, virtual time may be // unpaused. Must be called from the main thread. - virtual void DidFailProvisionalLoad() {} + virtual void DidFailProvisionalLoad() = 0; // Tells the scheduler that a provisional load has committed, virtual time ma // be unpaused. In addition the scheduler may reset the task cost estimators // and the UserModel. Must be called from the main thread. virtual void DidCommitProvisionalLoad(bool is_web_history_inert_commit, bool is_reload, - bool is_main_frame){}; + bool is_main_frame) = 0; // Tells the scheduler if we are parsing a document on another thread. This // tells the scheduler not to advance virtual time if it's using the // DETERMINISTIC_LOADING policy. - virtual void SetDocumentParsingInBackground(bool) {} + virtual void SetDocumentParsingInBackground( + bool background_parsing_enabled) = 0; // Tells the scheduler that the first meaningful paint has occured for this // frame. - virtual void OnFirstMeaningfulPaint() {} + virtual void OnFirstMeaningfulPaint() = 0; // Notifies scheduler that this frame has established an active real time // connection (websocket, webrtc, etc). When connection is closed this handle // must be destroyed. - virtual std::unique_ptr<ActiveConnectionHandle> OnActiveConnectionCreated() { - return nullptr; - }; + virtual std::unique_ptr<ActiveConnectionHandle> + OnActiveConnectionCreated() = 0; + + // Returns true if this frame is should not throttled (e.g. because of audio + // or an active connection). + virtual bool IsExemptFromThrottling() const = 0; }; } // namespace blink
diff --git a/third_party/WebKit/Source/bindings/core/v8/V8DOMActivityLogger.cpp b/third_party/WebKit/Source/platform/bindings/V8DOMActivityLogger.cpp similarity index 98% rename from third_party/WebKit/Source/bindings/core/v8/V8DOMActivityLogger.cpp rename to third_party/WebKit/Source/platform/bindings/V8DOMActivityLogger.cpp index 1a757db..b9ff7d1e 100644 --- a/third_party/WebKit/Source/bindings/core/v8/V8DOMActivityLogger.cpp +++ b/third_party/WebKit/Source/platform/bindings/V8DOMActivityLogger.cpp
@@ -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 "bindings/core/v8/V8DOMActivityLogger.h" +#include "platform/bindings/V8DOMActivityLogger.h" #include <memory> #include "platform/bindings/V8Binding.h"
diff --git a/third_party/WebKit/Source/bindings/core/v8/V8DOMActivityLogger.h b/third_party/WebKit/Source/platform/bindings/V8DOMActivityLogger.h similarity index 97% rename from third_party/WebKit/Source/bindings/core/v8/V8DOMActivityLogger.h rename to third_party/WebKit/Source/platform/bindings/V8DOMActivityLogger.h index 2273f29..8b4c99c 100644 --- a/third_party/WebKit/Source/bindings/core/v8/V8DOMActivityLogger.h +++ b/third_party/WebKit/Source/platform/bindings/V8DOMActivityLogger.h
@@ -33,7 +33,7 @@ #include <memory> -#include "core/CoreExport.h" +#include "platform/PlatformExport.h" #include "platform/wtf/text/WTFString.h" #include "v8/include/v8.h" @@ -41,7 +41,7 @@ class KURL; -class CORE_EXPORT V8DOMActivityLogger { +class PLATFORM_EXPORT V8DOMActivityLogger { USING_FAST_MALLOC(V8DOMActivityLogger); public:
diff --git a/third_party/WebKit/Source/platform/exported/WebAudioBus.cpp b/third_party/WebKit/Source/platform/exported/WebAudioBus.cpp index 79f16920..7e84d21d 100644 --- a/third_party/WebKit/Source/platform/exported/WebAudioBus.cpp +++ b/third_party/WebKit/Source/platform/exported/WebAudioBus.cpp
@@ -38,7 +38,8 @@ if (private_) private_->Release(); - private_ = audio_bus.LeakRef(); + audio_bus->AddRef(); + private_ = audio_bus.get(); } void WebAudioBus::ResizeSmaller(size_t new_length) {
diff --git a/third_party/WebKit/Source/platform/fonts/FontCache.cpp b/third_party/WebKit/Source/platform/fonts/FontCache.cpp index eb2208f..fa27168 100644 --- a/third_party/WebKit/Source/platform/fonts/FontCache.cpp +++ b/third_party/WebKit/Source/platform/fonts/FontCache.cpp
@@ -288,7 +288,10 @@ SimpleFontData* FontCache::GetNonRetainedLastResortFallbackFont( const FontDescription& font_description) { - return GetLastResortFallbackFont(font_description, kDoNotRetain).LeakRef(); + auto font = GetLastResortFallbackFont(font_description, kDoNotRetain); + if (font) + font->AddRef(); + return font.get(); } void FontCache::ReleaseFontData(const SimpleFontData* font_data) {
diff --git a/third_party/WebKit/Source/platform/graphics/CompositorMutableProperties.h b/third_party/WebKit/Source/platform/graphics/CompositorMutableProperties.h deleted file mode 100644 index 4082f458..0000000 --- a/third_party/WebKit/Source/platform/graphics/CompositorMutableProperties.h +++ /dev/null
@@ -1,23 +0,0 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef CompositorMutableProperties_h -#define CompositorMutableProperties_h - -namespace blink { - -struct CompositorMutableProperty { - enum : uint32_t { kNone = 0 }; - enum : uint32_t { kOpacity = 1 << 0 }; - enum : uint32_t { kScrollLeft = 1 << 1 }; - enum : uint32_t { kScrollTop = 1 << 2 }; - enum : uint32_t { kTransform = 1 << 3 }; - enum : uint32_t { kTransformRelated = kTransform | kScrollLeft | kScrollTop }; - - enum : int { kNumProperties = 4 }; -}; - -} // namespace blink - -#endif // CompositorMutableProperties_h
diff --git a/third_party/WebKit/Source/platform/graphics/CompositorMutation.h b/third_party/WebKit/Source/platform/graphics/CompositorMutation.h deleted file mode 100644 index de6fabc..0000000 --- a/third_party/WebKit/Source/platform/graphics/CompositorMutation.h +++ /dev/null
@@ -1,66 +0,0 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef CompositorMutation_h -#define CompositorMutation_h - -#include <memory> -#include "platform/graphics/CompositorMutableProperties.h" -#include "platform/wtf/HashMap.h" -#include "third_party/skia/include/core/SkMatrix44.h" - -namespace blink { - -class CompositorMutation { - public: - void SetOpacity(float opacity) { - mutated_flags_ |= CompositorMutableProperty::kOpacity; - opacity_ = opacity; - } - void SetScrollLeft(float scroll_left) { - mutated_flags_ |= CompositorMutableProperty::kScrollLeft; - scroll_left_ = scroll_left; - } - void SetScrollTop(float scroll_top) { - mutated_flags_ |= CompositorMutableProperty::kScrollTop; - scroll_top_ = scroll_top; - } - void SetTransform(const SkMatrix44& transform) { - mutated_flags_ |= CompositorMutableProperty::kTransform; - transform_ = transform; - } - - bool IsOpacityMutated() const { - return mutated_flags_ & CompositorMutableProperty::kOpacity; - } - bool IsScrollLeftMutated() const { - return mutated_flags_ & CompositorMutableProperty::kScrollLeft; - } - bool IsScrollTopMutated() const { - return mutated_flags_ & CompositorMutableProperty::kScrollTop; - } - bool IsTransformMutated() const { - return mutated_flags_ & CompositorMutableProperty::kTransform; - } - - float Opacity() const { return opacity_; } - float ScrollLeft() const { return scroll_left_; } - float ScrollTop() const { return scroll_top_; } - SkMatrix44 Transform() const { return transform_; } - - private: - uint32_t mutated_flags_ = 0; - float opacity_ = 0; - float scroll_left_ = 0; - float scroll_top_ = 0; - SkMatrix44 transform_; -}; - -struct CompositorMutations { - HashMap<uint64_t, std::unique_ptr<CompositorMutation>> map; -}; - -} // namespace blink - -#endif // CompositorMutation_h
diff --git a/third_party/WebKit/Source/platform/graphics/CompositorMutationsTarget.h b/third_party/WebKit/Source/platform/graphics/CompositorMutationsTarget.h deleted file mode 100644 index 6595a5b..0000000 --- a/third_party/WebKit/Source/platform/graphics/CompositorMutationsTarget.h +++ /dev/null
@@ -1,21 +0,0 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef CompositorMutationsTarget_h -#define CompositorMutationsTarget_h - -#include "platform/PlatformExport.h" -#include "platform/graphics/CompositorMutation.h" - -namespace blink { - -class PLATFORM_EXPORT CompositorMutationsTarget { - public: - virtual void ApplyMutations(CompositorMutations*) = 0; - virtual ~CompositorMutationsTarget() {} -}; - -} // namespace blink - -#endif // CompositorMutationsTarget_h
diff --git a/third_party/WebKit/Source/platform/graphics/CompositorMutatorClient.cpp b/third_party/WebKit/Source/platform/graphics/CompositorMutatorClient.cpp index 9d2e82e..368e214 100644 --- a/third_party/WebKit/Source/platform/graphics/CompositorMutatorClient.cpp +++ b/third_party/WebKit/Source/platform/graphics/CompositorMutatorClient.cpp
@@ -9,20 +9,13 @@ #include "base/callback.h" #include "base/trace_event/trace_event.h" #include "cc/trees/layer_tree_impl.h" -#include "platform/graphics/CompositorMutation.h" -#include "platform/graphics/CompositorMutationsTarget.h" #include "platform/graphics/CompositorMutator.h" #include "platform/wtf/PtrUtil.h" namespace blink { -CompositorMutatorClient::CompositorMutatorClient( - CompositorMutator* mutator, - CompositorMutationsTarget* mutations_target) - : client_(nullptr), - mutations_target_(mutations_target), - mutator_(mutator), - mutations_(nullptr) { +CompositorMutatorClient::CompositorMutatorClient(CompositorMutator* mutator) + : client_(nullptr), mutator_(mutator) { TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("cc"), "CompositorMutatorClient::CompositorMutatorClient"); } @@ -45,25 +38,9 @@ SetNeedsMutate(); } -base::Closure CompositorMutatorClient::TakeMutations() { - TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("cc"), - "CompositorMutatorClient::TakeMutations"); - if (!mutations_) - return base::Closure(); - - return base::Bind(&CompositorMutationsTarget::ApplyMutations, - base::Unretained(mutations_target_), - base::Owned(mutations_.release())); -} - void CompositorMutatorClient::SetNeedsMutate() { TRACE_EVENT0("cc", "CompositorMutatorClient::setNeedsMutate"); client_->SetNeedsMutate(); } -void CompositorMutatorClient::SetMutationsForTesting( - std::unique_ptr<CompositorMutations> mutations) { - mutations_ = std::move(mutations); -} - } // namespace blink
diff --git a/third_party/WebKit/Source/platform/graphics/CompositorMutatorClient.h b/third_party/WebKit/Source/platform/graphics/CompositorMutatorClient.h index 8df3530..27ac0b25 100644 --- a/third_party/WebKit/Source/platform/graphics/CompositorMutatorClient.h +++ b/third_party/WebKit/Source/platform/graphics/CompositorMutatorClient.h
@@ -13,32 +13,27 @@ namespace blink { class CompositorMutator; -struct CompositorMutations; -class CompositorMutationsTarget; class PLATFORM_EXPORT CompositorMutatorClient : public WebCompositorMutatorClient { public: - CompositorMutatorClient(CompositorMutator*, CompositorMutationsTarget*); + explicit CompositorMutatorClient(CompositorMutator*); virtual ~CompositorMutatorClient(); + // TODO(petermayo): Remove this. Without CompositorWorker, it becomes + // unnecessary. crbug.com/746212 void SetNeedsMutate(); // cc::LayerTreeMutator bool Mutate(base::TimeTicks monotonic_time) override; void SetClient(cc::LayerTreeMutatorClient*) override; - base::Closure TakeMutations() override; CompositorMutator* Mutator() { return mutator_.Get(); } - void SetMutationsForTesting(std::unique_ptr<CompositorMutations>); - private: cc::LayerTreeMutatorClient* client_; - CompositorMutationsTarget* mutations_target_; // Accessed by main and compositor threads. CrossThreadPersistent<CompositorMutator> mutator_; - std::unique_ptr<CompositorMutations> mutations_; }; } // namespace blink
diff --git a/third_party/WebKit/Source/platform/graphics/CompositorMutatorClientTest.cpp b/third_party/WebKit/Source/platform/graphics/CompositorMutatorClientTest.cpp deleted file mode 100644 index a6f6a1e4..0000000 --- a/third_party/WebKit/Source/platform/graphics/CompositorMutatorClientTest.cpp +++ /dev/null
@@ -1,53 +0,0 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "platform/graphics/CompositorMutatorClient.h" - -#include <memory> -#include "base/callback.h" -#include "platform/graphics/CompositorMutation.h" -#include "platform/graphics/CompositorMutationsTarget.h" -#include "platform/graphics/CompositorMutator.h" -#include "testing/gmock/include/gmock/gmock.h" -#include "testing/gtest/include/gtest/gtest.h" - -using ::testing::_; - -namespace blink { -namespace { - -class StubCompositorMutator : public CompositorMutator { - public: - StubCompositorMutator() {} - - bool Mutate(double monotonic_time_now) override { return false; } -}; - -class MockCompositoMutationsTarget : public CompositorMutationsTarget { - public: - MOCK_METHOD1(ApplyMutations, void(CompositorMutations*)); -}; - -TEST(CompositorMutatorClient, CallbackForNonNullMutationsShouldApply) { - MockCompositoMutationsTarget target; - - CompositorMutatorClient client(new StubCompositorMutator, &target); - std::unique_ptr<CompositorMutations> mutations = - std::make_unique<CompositorMutations>(); - client.SetMutationsForTesting(std::move(mutations)); - - EXPECT_CALL(target, ApplyMutations(_)); - client.TakeMutations().Run(); -} - -TEST(CompositorMutatorClient, CallbackForNullMutationsShouldBeNoop) { - MockCompositoMutationsTarget target; - CompositorMutatorClient client(new StubCompositorMutator, &target); - - EXPECT_CALL(target, ApplyMutations(_)).Times(0); - EXPECT_TRUE(client.TakeMutations().is_null()); -} - -} // namespace -} // namespace blink
diff --git a/third_party/WebKit/Source/platform/loader/testing/MockFetchContext.h b/third_party/WebKit/Source/platform/loader/testing/MockFetchContext.h index 9470784..d205407 100644 --- a/third_party/WebKit/Source/platform/loader/testing/MockFetchContext.h +++ b/third_party/WebKit/Source/platform/loader/testing/MockFetchContext.h
@@ -10,6 +10,7 @@ #include "platform/loader/fetch/FetchContext.h" #include "platform/loader/fetch/FetchParameters.h" #include "platform/loader/fetch/ResourceTimingInfo.h" +#include "platform/scheduler/test/fake_web_frame_scheduler.h" #include "platform/scheduler/test/fake_web_task_runner.h" #include "platform/wtf/PtrUtil.h" #include "public/platform/Platform.h" @@ -90,12 +91,10 @@ } private: - class MockFrameScheduler final : public WebFrameScheduler { + class MockFrameScheduler final : public scheduler::FakeWebFrameScheduler { public: MockFrameScheduler(RefPtr<WebTaskRunner> runner) : runner_(std::move(runner)) {} - void AddThrottlingObserver(ObserverType, Observer*) override {} - void RemoveThrottlingObserver(ObserverType, Observer*) override {} RefPtr<WebTaskRunner> LoadingTaskRunner() override { return runner_; } RefPtr<WebTaskRunner> LoadingControlTaskRunner() override { return runner_;
diff --git a/third_party/WebKit/Source/platform/scheduler/BUILD.gn b/third_party/WebKit/Source/platform/scheduler/BUILD.gn index bffec6a..4cd721c 100644 --- a/third_party/WebKit/Source/platform/scheduler/BUILD.gn +++ b/third_party/WebKit/Source/platform/scheduler/BUILD.gn
@@ -99,7 +99,6 @@ "renderer/renderer_web_scheduler_impl.h", "renderer/task_cost_estimator.cc", "renderer/task_cost_estimator.h", - "renderer/task_duration_metric_reporter.cc", "renderer/task_duration_metric_reporter.h", "renderer/task_queue_throttler.cc", "renderer/task_queue_throttler.h", @@ -116,7 +115,8 @@ "renderer/web_view_scheduler_impl.h", "renderer/webthread_impl_for_renderer_scheduler.cc", "renderer/webthread_impl_for_renderer_scheduler.h", - "util/state_tracer.h", + "util/tracing_helper.cc", + "util/tracing_helper.h", "utility/webthread_impl_for_utility_thread.cc", "utility/webthread_impl_for_utility_thread.h", ] @@ -149,6 +149,7 @@ "child/scheduler_tqm_delegate_for_test.cc", "child/scheduler_tqm_delegate_for_test.h", "test/fake_renderer_scheduler.cc", + "test/fake_web_frame_scheduler.h", "test/fake_web_task_runner.cc", "test/fake_web_task_runner.h", "test/lazy_scheduler_message_loop_delegate_for_tests.cc",
diff --git a/third_party/WebKit/Source/platform/scheduler/base/task_queue_impl.cc b/third_party/WebKit/Source/platform/scheduler/base/task_queue_impl.cc index f309cec..0212706 100644 --- a/third_party/WebKit/Source/platform/scheduler/base/task_queue_impl.cc +++ b/third_party/WebKit/Source/platform/scheduler/base/task_queue_impl.cc
@@ -15,6 +15,7 @@ #include "platform/scheduler/base/task_queue_manager_delegate.h" #include "platform/scheduler/base/time_domain.h" #include "platform/scheduler/base/work_queue.h" +#include "platform/scheduler/util/tracing_helper.h" #include "platform/wtf/debug/CrashLogging.h" namespace blink { @@ -462,10 +463,6 @@ state->SetBoolean("enabled", IsQueueEnabled()); state->SetString("time_domain_name", main_thread_only().time_domain->GetName()); - bool verbose_snapshots_enabled = false; - TRACE_EVENT_CATEGORY_GROUP_ENABLED( - TRACE_DISABLED_BY_DEFAULT("renderer.scheduler.enable_verbose_snapshots"), - &verbose_snapshots_enabled); state->SetInteger("immediate_incoming_queue_size", immediate_incoming_queue().size()); state->SetInteger("delayed_incoming_queue_size", @@ -483,7 +480,7 @@ } if (main_thread_only().current_fence) state->SetInteger("current_fence", main_thread_only().current_fence); - if (verbose_snapshots_enabled) { + if (AreVerboseSnapshotsEnabled()) { state->BeginArray("immediate_incoming_queue"); QueueAsValueInto(immediate_incoming_queue(), now, state); state->EndArray();
diff --git a/third_party/WebKit/Source/platform/scheduler/renderer/main_thread_task_queue.cc b/third_party/WebKit/Source/platform/scheduler/renderer/main_thread_task_queue.cc index e3a7de42..82fd852 100644 --- a/third_party/WebKit/Source/platform/scheduler/renderer/main_thread_task_queue.cc +++ b/third_party/WebKit/Source/platform/scheduler/renderer/main_thread_task_queue.cc
@@ -91,11 +91,15 @@ can_be_paused_(params.can_be_paused), can_be_stopped_(params.can_be_stopped), used_for_control_tasks_(params.used_for_control_tasks), - renderer_scheduler_(renderer_scheduler) { - GetTaskQueueImpl()->SetOnTaskStartedHandler( - base::Bind(&MainThreadTaskQueue::OnTaskStarted, base::Unretained(this))); - GetTaskQueueImpl()->SetOnTaskCompletedHandler(base::Bind( - &MainThreadTaskQueue::OnTaskCompleted, base::Unretained(this))); + renderer_scheduler_(renderer_scheduler), + web_frame_scheduler_(nullptr) { + if (GetTaskQueueImpl()) { + // TaskQueueImpl may be null for tests. + GetTaskQueueImpl()->SetOnTaskStartedHandler(base::Bind( + &MainThreadTaskQueue::OnTaskStarted, base::Unretained(this))); + GetTaskQueueImpl()->SetOnTaskCompletedHandler(base::Bind( + &MainThreadTaskQueue::OnTaskCompleted, base::Unretained(this))); + } } MainThreadTaskQueue::~MainThreadTaskQueue() {}
diff --git a/third_party/WebKit/Source/platform/scheduler/renderer/main_thread_task_queue.h b/third_party/WebKit/Source/platform/scheduler/renderer/main_thread_task_queue.h index 21d90ae8..4d6ad0a 100644 --- a/third_party/WebKit/Source/platform/scheduler/renderer/main_thread_task_queue.h +++ b/third_party/WebKit/Source/platform/scheduler/renderer/main_thread_task_queue.h
@@ -156,11 +156,12 @@ WebFrameScheduler* GetFrameScheduler() const; void SetFrameScheduler(WebFrameScheduler* frame); - private: + protected: MainThreadTaskQueue(std::unique_ptr<internal::TaskQueueImpl> impl, const QueueCreationParams& params, RendererSchedulerImpl* renderer_scheduler); + private: friend class TaskQueueManager; QueueType queue_type_;
diff --git a/third_party/WebKit/Source/platform/scheduler/renderer/renderer_metrics_helper.cc b/third_party/WebKit/Source/platform/scheduler/renderer/renderer_metrics_helper.cc index 0680913..fc30a625 100644 --- a/third_party/WebKit/Source/platform/scheduler/renderer/renderer_metrics_helper.cc +++ b/third_party/WebKit/Source/platform/scheduler/renderer/renderer_metrics_helper.cc
@@ -6,6 +6,7 @@ #include "base/bind.h" #include "base/metrics/histogram_macros.h" +#include "platform/WebFrameScheduler.h" #include "platform/scheduler/renderer/renderer_scheduler_impl.h" #include "public/platform/scheduler/renderer_process_type.h" @@ -17,6 +18,7 @@ #define MAIN_THREAD_LOAD_METRIC_NAME "RendererScheduler.RendererMainThreadLoad5" #define EXTENSIONS_MAIN_THREAD_LOAD_METRIC_NAME \ MAIN_THREAD_LOAD_METRIC_NAME ".Extension" +#define PER_FRAME_TYPE_METRIC_NAME "RendererScheduler.TaskDurationPerFrameType" namespace { @@ -30,8 +32,55 @@ constexpr base::TimeDelta kLongIdlePeriodDiscardingThreshold = base::TimeDelta::FromMinutes(3); +enum class FrameThrottlingState { + VISIBLE = 0, + HIDDEN = 1, + BACKGROUND = 2, + BACKGROUND_EXEMPT = 3, + + COUNT = 4 +}; + +enum class FrameOriginState { + MAIN_FRAME = 0, + SAME_ORIGIN = 1, + CROSS_ORIGIN = 2, + + COUNT = 3 +}; + +FrameThrottlingState GetFrameThrottlingState( + const WebFrameScheduler& frame_scheduler) { + if (frame_scheduler.IsPageVisible()) { + if (frame_scheduler.IsFrameVisible()) + return FrameThrottlingState::VISIBLE; + return FrameThrottlingState::HIDDEN; + } + + if (frame_scheduler.IsExemptFromThrottling()) + return FrameThrottlingState::BACKGROUND_EXEMPT; + + return FrameThrottlingState::BACKGROUND; +} + +FrameOriginState GetFrameOriginState(const WebFrameScheduler& frame_scheduler) { + if (frame_scheduler.IsCrossOrigin()) + return FrameOriginState::CROSS_ORIGIN; + return FrameOriginState::SAME_ORIGIN; +} + } // namespace +FrameType GetFrameType(const WebFrameScheduler& frame_scheduler) { + FrameThrottlingState throttling_state = + GetFrameThrottlingState(frame_scheduler); + FrameOriginState origin_state = GetFrameOriginState(frame_scheduler); + return static_cast<FrameType>( + static_cast<int>(origin_state) * + static_cast<int>(FrameThrottlingState::COUNT) + + static_cast<int>(throttling_state)); +} + RendererMetricsHelper::RendererMetricsHelper( RendererSchedulerImpl* renderer_scheduler, base::TimeTicks now, @@ -80,7 +129,8 @@ hidden_task_duration_reporter(TASK_DURATION_METRIC_NAME ".Hidden"), visible_task_duration_reporter(TASK_DURATION_METRIC_NAME ".Visible"), hidden_music_task_duration_reporter(TASK_DURATION_METRIC_NAME - ".HiddenMusic") { + ".HiddenMusic"), + frame_type_duration_reporter(PER_FRAME_TYPE_METRIC_NAME) { main_thread_load_tracker.Resume(now); if (renderer_backgrounded) { background_main_thread_load_tracker.Resume(now); @@ -122,10 +172,10 @@ } // namespace -void RendererMetricsHelper::RecordTaskMetrics( - MainThreadTaskQueue::QueueType queue_type, - base::TimeTicks start_time, - base::TimeTicks end_time) { +void RendererMetricsHelper::RecordTaskMetrics(MainThreadTaskQueue* queue, + base::TimeTicks start_time, + base::TimeTicks end_time) { + MainThreadTaskQueue::QueueType queue_type = queue->queue_type(); base::TimeDelta duration = end_time - start_time; if (duration > kLongTaskDiscardingThreshold) return; @@ -274,6 +324,11 @@ } else { visible_task_duration_reporter.RecordTask(queue_type, duration); } + + if (queue->GetFrameScheduler()) { + frame_type_duration_reporter.RecordTask( + GetFrameType(*queue->GetFrameScheduler()), duration); + } } void RendererMetricsHelper::RecordMainThreadTaskLoad(base::TimeTicks time,
diff --git a/third_party/WebKit/Source/platform/scheduler/renderer/renderer_metrics_helper.h b/third_party/WebKit/Source/platform/scheduler/renderer/renderer_metrics_helper.h index 6ad79c03..39c21dbf 100644 --- a/third_party/WebKit/Source/platform/scheduler/renderer/renderer_metrics_helper.h +++ b/third_party/WebKit/Source/platform/scheduler/renderer/renderer_metrics_helper.h
@@ -13,10 +13,36 @@ #include "platform/scheduler/renderer/task_duration_metric_reporter.h" namespace blink { + +class WebFrameScheduler; namespace scheduler { +class MainThreadTaskQueue; class RendererSchedulerImpl; +// This enum is used for histogram and should not be renumbered. +// This enum should be kept in sync with FrameThrottlingState and +// FrameOriginState. +enum class FrameType { + MAIN_FRAME_VISIBLE = 0, + MAIN_FRAME_HIDDEN = 1, + MAIN_FRAME_BACKGROUND = 2, + MAIN_FRAME_BACKGROUND_EXEMPT = 3, + SAME_ORIGIN_VISIBLE = 4, + SAME_ORIGIN_HIDDEN = 5, + SAME_ORIGIN_BACKGROUND = 6, + SAME_ORIGIN_BACKGROUND_EXEMPT = 7, + CROSS_ORIGIN_VISIBLE = 8, + CROSS_ORIGIN_HIDDEN = 9, + CROSS_ORIGIN_BACKGROUND = 10, + CROSS_ORIGIN_BACKGROUND_EXEMPT = 11, + + COUNT = 12 +}; + +PLATFORM_EXPORT FrameType +GetFrameType(const WebFrameScheduler& frame_scheduler); + // Helper class to take care of metrics on behalf of RendererScheduler. // This class should be used only on the main thread. class PLATFORM_EXPORT RendererMetricsHelper { @@ -26,7 +52,7 @@ bool renderer_backgrounded); ~RendererMetricsHelper(); - void RecordTaskMetrics(MainThreadTaskQueue::QueueType queue_type, + void RecordTaskMetrics(MainThreadTaskQueue* queue, base::TimeTicks start_time, base::TimeTicks end_time); @@ -47,24 +73,37 @@ ThreadLoadTracker background_main_thread_load_tracker; ThreadLoadTracker foreground_main_thread_load_tracker; - TaskDurationMetricReporter task_duration_reporter; - TaskDurationMetricReporter foreground_task_duration_reporter; - TaskDurationMetricReporter foreground_first_minute_task_duration_reporter; - TaskDurationMetricReporter foreground_second_minute_task_duration_reporter; - TaskDurationMetricReporter foreground_third_minute_task_duration_reporter; - TaskDurationMetricReporter + using TaskDurationPerQueueTypeMetricReporter = + TaskDurationMetricReporter<MainThreadTaskQueue::QueueType>; + + TaskDurationPerQueueTypeMetricReporter task_duration_reporter; + TaskDurationPerQueueTypeMetricReporter foreground_task_duration_reporter; + TaskDurationPerQueueTypeMetricReporter + foreground_first_minute_task_duration_reporter; + TaskDurationPerQueueTypeMetricReporter + foreground_second_minute_task_duration_reporter; + TaskDurationPerQueueTypeMetricReporter + foreground_third_minute_task_duration_reporter; + TaskDurationPerQueueTypeMetricReporter foreground_after_third_minute_task_duration_reporter; - TaskDurationMetricReporter background_task_duration_reporter; - TaskDurationMetricReporter background_first_minute_task_duration_reporter; - TaskDurationMetricReporter background_second_minute_task_duration_reporter; - TaskDurationMetricReporter background_third_minute_task_duration_reporter; - TaskDurationMetricReporter background_fourth_minute_task_duration_reporter; - TaskDurationMetricReporter background_fifth_minute_task_duration_reporter; - TaskDurationMetricReporter + TaskDurationPerQueueTypeMetricReporter background_task_duration_reporter; + TaskDurationPerQueueTypeMetricReporter + background_first_minute_task_duration_reporter; + TaskDurationPerQueueTypeMetricReporter + background_second_minute_task_duration_reporter; + TaskDurationPerQueueTypeMetricReporter + background_third_minute_task_duration_reporter; + TaskDurationPerQueueTypeMetricReporter + background_fourth_minute_task_duration_reporter; + TaskDurationPerQueueTypeMetricReporter + background_fifth_minute_task_duration_reporter; + TaskDurationPerQueueTypeMetricReporter background_after_fifth_minute_task_duration_reporter; - TaskDurationMetricReporter hidden_task_duration_reporter; - TaskDurationMetricReporter visible_task_duration_reporter; - TaskDurationMetricReporter hidden_music_task_duration_reporter; + TaskDurationPerQueueTypeMetricReporter hidden_task_duration_reporter; + TaskDurationPerQueueTypeMetricReporter visible_task_duration_reporter; + TaskDurationPerQueueTypeMetricReporter hidden_music_task_duration_reporter; + + TaskDurationMetricReporter<FrameType> frame_type_duration_reporter; DISALLOW_COPY_AND_ASSIGN(RendererMetricsHelper); };
diff --git a/third_party/WebKit/Source/platform/scheduler/renderer/renderer_metrics_helper_unittest.cc b/third_party/WebKit/Source/platform/scheduler/renderer/renderer_metrics_helper_unittest.cc index b33a7574..9fddfbf 100644 --- a/third_party/WebKit/Source/platform/scheduler/renderer/renderer_metrics_helper_unittest.cc +++ b/third_party/WebKit/Source/platform/scheduler/renderer/renderer_metrics_helper_unittest.cc
@@ -9,9 +9,11 @@ #include "base/test/histogram_tester.h" #include "base/test/simple_test_tick_clock.h" #include "components/viz/test/ordered_simple_task_runner.h" +#include "platform/WebFrameScheduler.h" #include "platform/scheduler/base/test_time_source.h" #include "platform/scheduler/child/scheduler_tqm_delegate_for_test.h" #include "platform/scheduler/renderer/renderer_scheduler_impl.h" +#include "platform/scheduler/test/fake_web_frame_scheduler.h" #include "testing/gmock/include/gmock/gmock.h" #include "testing/gtest/include/gtest/gtest.h" @@ -23,6 +25,43 @@ using testing::UnorderedElementsAre; using base::Bucket; +namespace { + +class MainThreadTaskQueueForTest : public MainThreadTaskQueue { + public: + MainThreadTaskQueueForTest(QueueType queue_type) + : MainThreadTaskQueue(nullptr, QueueCreationParams(queue_type), nullptr) { + } + ~MainThreadTaskQueueForTest() {} +}; + +class MockWebFrameScheduler : public FakeWebFrameScheduler { + public: + MockWebFrameScheduler(bool is_page_visible, + bool is_frame_visible, + bool is_cross_origin, + bool is_exempt_from_throttling) + : is_page_visible_(is_page_visible), + is_frame_visible_(is_frame_visible), + is_cross_origin_(is_cross_origin), + is_exempt_from_throttling_(is_exempt_from_throttling) {} + + bool IsCrossOrigin() const override { return is_cross_origin_; } + bool IsExemptFromThrottling() const override { + return is_exempt_from_throttling_; + } + bool IsFrameVisible() const override { return is_frame_visible_; } + bool IsPageVisible() const override { return is_page_visible_; } + + private: + bool is_page_visible_; + bool is_frame_visible_; + bool is_cross_origin_; + bool is_exempt_from_throttling_; +}; + +} // namespace + class RendererMetricsHelperTest : public ::testing::Test { public: RendererMetricsHelperTest() {} @@ -49,7 +88,9 @@ base::TimeDelta duration) { DCHECK_LE(clock_->NowTicks(), start); clock_->SetNowTicks(start + duration); - metrics_helper_->RecordTaskMetrics(queue_type, start, start + duration); + scoped_refptr<MainThreadTaskQueueForTest> queue( + new MainThreadTaskQueueForTest(queue_type)); + metrics_helper_->RecordTaskMetrics(queue.get(), start, start + duration); } base::TimeTicks Microseconds(int microseconds) { @@ -166,6 +207,24 @@ Bucket(static_cast<int>(QueueType::FRAME_LOADING_CONTROL), 5))); } +TEST_F(RendererMetricsHelperTest, GetFrameTypeTest) { + // TODO(altimin): Fix when we have WebFrameScheduler::IsMainFrame. + MockWebFrameScheduler frame1(true, true, false, false); + EXPECT_EQ(GetFrameType(frame1), FrameType::SAME_ORIGIN_VISIBLE); + + MockWebFrameScheduler frame2(true, false, false, false); + EXPECT_EQ(GetFrameType(frame2), FrameType::SAME_ORIGIN_HIDDEN); + + MockWebFrameScheduler frame3(true, false, true, false); + EXPECT_EQ(GetFrameType(frame3), FrameType::CROSS_ORIGIN_HIDDEN); + + MockWebFrameScheduler frame4(false, false, false, false); + EXPECT_EQ(GetFrameType(frame4), FrameType::SAME_ORIGIN_BACKGROUND); + + MockWebFrameScheduler frame5(false, false, true, true); + DCHECK_EQ(GetFrameType(frame5), FrameType::CROSS_ORIGIN_BACKGROUND_EXEMPT); +} + // TODO(crbug.com/754656): Add tests for NthMinute and AfterNthMinute // histograms.
diff --git a/third_party/WebKit/Source/platform/scheduler/renderer/renderer_scheduler.cc b/third_party/WebKit/Source/platform/scheduler/renderer/renderer_scheduler.cc index 6bbbf0b..a2ece6a5 100644 --- a/third_party/WebKit/Source/platform/scheduler/renderer/renderer_scheduler.cc +++ b/third_party/WebKit/Source/platform/scheduler/renderer/renderer_scheduler.cc
@@ -12,6 +12,7 @@ #include "base/trace_event/trace_event.h" #include "platform/scheduler/child/scheduler_tqm_delegate_impl.h" #include "platform/scheduler/renderer/renderer_scheduler_impl.h" +#include "platform/scheduler/util/tracing_helper.h" namespace blink { namespace scheduler { @@ -25,13 +26,9 @@ // static std::unique_ptr<RendererScheduler> RendererScheduler::Create() { // Ensure categories appear as an option in chrome://tracing. + WarmupTracingCategories(); + // Workers might be short-lived, so placing warmup here. TRACE_EVENT_WARMUP_CATEGORY(TRACE_DISABLED_BY_DEFAULT("worker.scheduler")); - TRACE_EVENT_WARMUP_CATEGORY( - TRACE_DISABLED_BY_DEFAULT("worker.scheduler.debug")); - TRACE_EVENT_WARMUP_CATEGORY( - TRACE_DISABLED_BY_DEFAULT("renderer.scheduler.debug")); - TRACE_EVENT_WARMUP_CATEGORY( - TRACE_DISABLED_BY_DEFAULT("renderer.scheduler.enable_verbose_snapshots")); base::MessageLoop* message_loop = base::MessageLoop::current(); std::unique_ptr<RendererSchedulerImpl> scheduler(
diff --git a/third_party/WebKit/Source/platform/scheduler/renderer/renderer_scheduler_impl.cc b/third_party/WebKit/Source/platform/scheduler/renderer/renderer_scheduler_impl.cc index 03319313..3d370f6 100644 --- a/third_party/WebKit/Source/platform/scheduler/renderer/renderer_scheduler_impl.cc +++ b/third_party/WebKit/Source/platform/scheduler/renderer/renderer_scheduler_impl.cc
@@ -1936,8 +1936,7 @@ task_queue_throttler()->OnTaskRunTimeReported(queue, start, end); // TODO(altimin): Per-page metrics should also be considered. - main_thread_only().metrics_helper.RecordTaskMetrics(queue->queue_type(), - start, end); + main_thread_only().metrics_helper.RecordTaskMetrics(queue, start, end); } void RendererSchedulerImpl::OnBeginNestedRunLoop() { @@ -2086,11 +2085,11 @@ void RendererSchedulerImpl::OnTraceLogEnabled() { CreateTraceEventObjectSnapshot(); - main_thread_only().use_case_tracer.Start( + main_thread_only().use_case_tracer.SetState( UseCaseToString(main_thread_only().current_use_case)); - main_thread_only().backgrounding_tracer.Start( + main_thread_only().backgrounding_tracer.SetState( BackgroundStateToString(main_thread_only().renderer_backgrounded)); - main_thread_only().audio_playing_tracer.Start( + main_thread_only().audio_playing_tracer.SetState( AudioPlayingToString(main_thread_only().is_audio_playing)); }
diff --git a/third_party/WebKit/Source/platform/scheduler/renderer/renderer_scheduler_impl.h b/third_party/WebKit/Source/platform/scheduler/renderer/renderer_scheduler_impl.h index af421082..934e39e 100644 --- a/third_party/WebKit/Source/platform/scheduler/renderer/renderer_scheduler_impl.h +++ b/third_party/WebKit/Source/platform/scheduler/renderer/renderer_scheduler_impl.h
@@ -29,7 +29,7 @@ #include "platform/scheduler/renderer/task_cost_estimator.h" #include "platform/scheduler/renderer/user_model.h" #include "platform/scheduler/renderer/web_view_scheduler_impl.h" -#include "platform/scheduler/util/state_tracer.h" +#include "platform/scheduler/util/tracing_helper.h" #include "public/platform/scheduler/renderer/renderer_scheduler.h" namespace base { @@ -602,9 +602,9 @@ WakeUpBudgetPool* wake_up_budget_pool; // Not owned. RendererMetricsHelper metrics_helper; RendererProcessType process_type; - StateTracer use_case_tracer; - StateTracer backgrounding_tracer; - StateTracer audio_playing_tracer; + StateTracer<kTracingCategoryNameDefault> use_case_tracer; + StateTracer<kTracingCategoryNameDefault> backgrounding_tracer; + StateTracer<kTracingCategoryNameDefault> audio_playing_tracer; }; struct AnyThread {
diff --git a/third_party/WebKit/Source/platform/scheduler/renderer/task_duration_metric_reporter.cc b/third_party/WebKit/Source/platform/scheduler/renderer/task_duration_metric_reporter.cc deleted file mode 100644 index 49f004a..0000000 --- a/third_party/WebKit/Source/platform/scheduler/renderer/task_duration_metric_reporter.cc +++ /dev/null
@@ -1,42 +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. - -#include "platform/scheduler/renderer/task_duration_metric_reporter.h" - -#include "base/metrics/histogram.h" - -namespace blink { -namespace scheduler { - -TaskDurationMetricReporter::TaskDurationMetricReporter(const char* metric_name) - : TaskDurationMetricReporter(base::Histogram::FactoryGet( - metric_name, - 1, - static_cast<int>(MainThreadTaskQueue::QueueType::COUNT), - static_cast<int>(MainThreadTaskQueue::QueueType::COUNT) + 1, - base::HistogramBase::kUmaTargetedHistogramFlag)) {} - -TaskDurationMetricReporter::TaskDurationMetricReporter( - base::HistogramBase* histogram) - : task_duration_per_queue_type_histogram_(histogram) {} - -TaskDurationMetricReporter::~TaskDurationMetricReporter() {} - -void TaskDurationMetricReporter::RecordTask( - MainThreadTaskQueue::QueueType queue_type, - base::TimeDelta duration) { - // Report only whole milliseconds to avoid overflow. - base::TimeDelta& unreported_duration = - unreported_task_duration_[static_cast<int>(queue_type)]; - unreported_duration += duration; - int64_t milliseconds = unreported_duration.InMilliseconds(); - if (milliseconds > 0) { - unreported_duration -= base::TimeDelta::FromMilliseconds(milliseconds); - task_duration_per_queue_type_histogram_->AddCount( - static_cast<int>(queue_type), static_cast<int>(milliseconds)); - } -} - -} // namespace scheduler -} // namespace blink
diff --git a/third_party/WebKit/Source/platform/scheduler/renderer/task_duration_metric_reporter.h b/third_party/WebKit/Source/platform/scheduler/renderer/task_duration_metric_reporter.h index c5790c38..feab76f 100644 --- a/third_party/WebKit/Source/platform/scheduler/renderer/task_duration_metric_reporter.h +++ b/third_party/WebKit/Source/platform/scheduler/renderer/task_duration_metric_reporter.h
@@ -9,6 +9,7 @@ #include "base/gtest_prod_util.h" #include "base/macros.h" +#include "base/metrics/histogram.h" #include "base/time/time.h" #include "platform/PlatformExport.h" #include "platform/scheduler/renderer/main_thread_task_queue.h" @@ -22,21 +23,43 @@ // A helper class to report task duration split by queue type. // Aggregates small tasks internally and reports only whole milliseconds. +// +// |TaskClass| is an enum which should have COUNT field. +// All values reported to RecordTask should have lower values. +template <class TaskClass> class PLATFORM_EXPORT TaskDurationMetricReporter { public: - explicit TaskDurationMetricReporter(const char* metric_name); - ~TaskDurationMetricReporter(); + explicit TaskDurationMetricReporter(const char* metric_name) + : TaskDurationMetricReporter(base::Histogram::FactoryGet( + metric_name, + 1, + static_cast<int>(TaskClass::COUNT), + static_cast<int>(TaskClass::COUNT) + 1, + base::HistogramBase::kUmaTargetedHistogramFlag)) {} - void RecordTask(MainThreadTaskQueue::QueueType queue_type, - base::TimeDelta time_duration); + ~TaskDurationMetricReporter() {} + + void RecordTask(TaskClass task_class, base::TimeDelta duration) { + DCHECK_LT(static_cast<int>(task_class), static_cast<int>(TaskClass::COUNT)); + // Report only whole milliseconds to avoid overflow. + base::TimeDelta& unreported_duration = + unreported_task_duration_[static_cast<int>(task_class)]; + unreported_duration += duration; + int64_t milliseconds = unreported_duration.InMilliseconds(); + if (milliseconds > 0) { + unreported_duration -= base::TimeDelta::FromMilliseconds(milliseconds); + task_duration_per_queue_type_histogram_->AddCount( + static_cast<int>(task_class), static_cast<int>(milliseconds)); + } + } private: FRIEND_TEST_ALL_PREFIXES(TaskDurationMetricReporterTest, Test); - TaskDurationMetricReporter(base::HistogramBase* histogram); + TaskDurationMetricReporter(base::HistogramBase* histogram) + : task_duration_per_queue_type_histogram_(histogram) {} - std::array<base::TimeDelta, - static_cast<size_t>(MainThreadTaskQueue::QueueType::COUNT)> + std::array<base::TimeDelta, static_cast<size_t>(TaskClass::COUNT)> unreported_task_duration_; base::HistogramBase* task_duration_per_queue_type_histogram_;
diff --git a/third_party/WebKit/Source/platform/scheduler/renderer/task_duration_metric_reporter_unittest.cc b/third_party/WebKit/Source/platform/scheduler/renderer/task_duration_metric_reporter_unittest.cc index 8eab878..c663352 100644 --- a/third_party/WebKit/Source/platform/scheduler/renderer/task_duration_metric_reporter_unittest.cc +++ b/third_party/WebKit/Source/platform/scheduler/renderer/task_duration_metric_reporter_unittest.cc
@@ -54,7 +54,8 @@ TEST(TaskDurationMetricReporterTest, Test) { FakeHistogram histogram; - TaskDurationMetricReporter metric_reporter(&histogram); + TaskDurationMetricReporter<MainThreadTaskQueue::QueueType> metric_reporter( + &histogram); EXPECT_CALL(histogram, AddCount(2, 3)); metric_reporter.RecordTask(static_cast<MainThreadTaskQueue::QueueType>(2),
diff --git a/third_party/WebKit/Source/platform/scheduler/renderer/web_frame_scheduler_impl.cc b/third_party/WebKit/Source/platform/scheduler/renderer/web_frame_scheduler_impl.cc index 42d7e55..7e01206aa 100644 --- a/third_party/WebKit/Source/platform/scheduler/renderer/web_frame_scheduler_impl.cc +++ b/third_party/WebKit/Source/platform/scheduler/renderer/web_frame_scheduler_impl.cc
@@ -131,6 +131,10 @@ UpdateThrottling(was_throttled); } +bool WebFrameSchedulerImpl::IsFrameVisible() const { + return frame_visible_; +} + void WebFrameSchedulerImpl::SetCrossOrigin(bool cross_origin) { DCHECK(parent_web_view_scheduler_); if (cross_origin_ == cross_origin) @@ -140,6 +144,10 @@ UpdateThrottling(was_throttled); } +bool WebFrameSchedulerImpl::IsCrossOrigin() const { + return cross_origin_; +} + RefPtr<blink::WebTaskRunner> WebFrameSchedulerImpl::LoadingTaskRunner() { DCHECK(parent_web_view_scheduler_); if (!loading_web_task_runner_) { @@ -371,6 +379,10 @@ } } +bool WebFrameSchedulerImpl::IsPageVisible() const { + return page_visible_; +} + void WebFrameSchedulerImpl::SetPaused(bool frame_paused) { DCHECK(parent_web_view_scheduler_); if (frame_paused_ == frame_paused) @@ -423,5 +435,9 @@ return weak_factory_.GetWeakPtr(); } +bool WebFrameSchedulerImpl::IsExemptFromThrottling() const { + return has_active_connection(); +} + } // namespace scheduler } // namespace blink
diff --git a/third_party/WebKit/Source/platform/scheduler/renderer/web_frame_scheduler_impl.h b/third_party/WebKit/Source/platform/scheduler/renderer/web_frame_scheduler_impl.h index a746fd68..51403156 100644 --- a/third_party/WebKit/Source/platform/scheduler/renderer/web_frame_scheduler_impl.h +++ b/third_party/WebKit/Source/platform/scheduler/renderer/web_frame_scheduler_impl.h
@@ -44,9 +44,12 @@ void AddThrottlingObserver(ObserverType, Observer*) override; void RemoveThrottlingObserver(ObserverType, Observer*) override; void SetFrameVisible(bool frame_visible) override; + bool IsFrameVisible() const override; void SetPageVisible(bool page_visible) override; + bool IsPageVisible() const override; void SetPaused(bool frame_paused) override; void SetCrossOrigin(bool cross_origin) override; + bool IsCrossOrigin() const override; RefPtr<WebTaskRunner> LoadingTaskRunner() override; RefPtr<WebTaskRunner> LoadingControlTaskRunner() override; RefPtr<WebTaskRunner> ThrottleableTaskRunner() override; @@ -66,6 +69,7 @@ void OnFirstMeaningfulPaint() override; std::unique_ptr<ActiveConnectionHandle> OnActiveConnectionCreated() override; void AsValueInto(base::trace_event::TracedValue* state) const; + bool IsExemptFromThrottling() const override; bool has_active_connection() const { return active_connection_count_; }
diff --git a/third_party/WebKit/Source/platform/scheduler/test/fake_web_frame_scheduler.h b/third_party/WebKit/Source/platform/scheduler/test/fake_web_frame_scheduler.h new file mode 100644 index 0000000..a4e56e7 --- /dev/null +++ b/third_party/WebKit/Source/platform/scheduler/test/fake_web_frame_scheduler.h
@@ -0,0 +1,61 @@ +// Copyright 2016 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef THIRD_PARTY_WEBKIT_SOURCE_PLATFORM_SCHEDULER_TEST_FAKE_WEB_FRAME_SCHEDULER_H_ +#define THIRD_PARTY_WEBKIT_SOURCE_PLATFORM_SCHEDULER_TEST_FAKE_WEB_FRAME_SCHEDULER_H_ + +#include <deque> + +#include "platform/WebFrameScheduler.h" + +namespace blink { +namespace scheduler { + +// A dummy WebFrameScheduler for tests. +class FakeWebFrameScheduler : public WebFrameScheduler { + public: + FakeWebFrameScheduler() {} + ~FakeWebFrameScheduler() override {} + + // WebFrameScheduler implementation: + void AddThrottlingObserver(ObserverType, Observer*) override {} + void RemoveThrottlingObserver(ObserverType, Observer*) override {} + void SetFrameVisible(bool) override {} + bool IsFrameVisible() const override { return false; } + void SetPageVisible(bool) override {} + bool IsPageVisible() const override { return false; } + void SetPaused(bool) override {} + void SetCrossOrigin(bool) override {} + bool IsCrossOrigin() const override { return false; } + RefPtr<WebTaskRunner> ThrottleableTaskRunner() override { return nullptr; } + RefPtr<WebTaskRunner> DeferrableTaskRunner() override { return nullptr; } + RefPtr<WebTaskRunner> PausableTaskRunner() override { return nullptr; } + RefPtr<WebTaskRunner> UnpausableTaskRunner() override { return nullptr; } + RefPtr<WebTaskRunner> LoadingTaskRunner() override { return nullptr; } + RefPtr<WebTaskRunner> LoadingControlTaskRunner() override { return nullptr; } + WebViewScheduler* GetWebViewScheduler() override { return nullptr; } + void DidStartLoading(unsigned long identifier) override {} + void DidStopLoading(unsigned long identifier) override {} + void WillNavigateBackForwardSoon() override {} + void DidStartProvisionalLoad(bool is_main_frame) override {} + void DidFailProvisionalLoad() override {} + void DidCommitProvisionalLoad(bool is_web_history_inert_commit, + bool is_reload, + bool is_main_frame) override {} + void SetDocumentParsingInBackground( + bool background_parsing_enabled) override {} + void OnFirstMeaningfulPaint() override {} + std::unique_ptr<ActiveConnectionHandle> OnActiveConnectionCreated() override { + return nullptr; + } + bool IsExemptFromThrottling() const override { return false; } + + private: + DISALLOW_COPY_AND_ASSIGN(FakeWebFrameScheduler); +}; + +} // namespace scheduler +} // namespace blink + +#endif // THIRD_PARTY_WEBKIT_SOURCE_PLATFORM_SCHEDULER_TEST_FAKE_WEB_FRAME_SCHEDULER_H_
diff --git a/third_party/WebKit/Source/platform/scheduler/util/state_tracer.h b/third_party/WebKit/Source/platform/scheduler/util/state_tracer.h deleted file mode 100644 index 2f7d623..0000000 --- a/third_party/WebKit/Source/platform/scheduler/util/state_tracer.h +++ /dev/null
@@ -1,81 +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 THIRD_PARTY_WEBKIT_SOURCE_PLATFORM_SCHEDULER_UTIL_STATE_TRACING_HELPER_H_ -#define THIRD_PARTY_WEBKIT_SOURCE_PLATFORM_SCHEDULER_UTIL_STATE_TRACING_HELPER_H_ - -#include "base/macros.h" -#include "base/time/time.h" -#include "base/trace_event/trace_event.h" - -// TODO(altimin): this class is header-only because it is supposed to -// be a template with tracing category as a template parameter. -// It will happen as soon as all compilers will properly support -// constexpr char[] in templates. - -namespace blink { -namespace scheduler { - -// Helper class to visualize a state of an object using async trace events. -// It relies on the caller to listen to OnTraceLogEnabled and call Start. -class StateTracer { - public: - StateTracer(const char* name, void* object) - : name_(name), - object_(object), - started_(false), - category_enabled_( - TRACE_EVENT_API_GET_CATEGORY_GROUP_ENABLED("renderer.scheduler")) {} - - ~StateTracer() { - if (started_) - TRACE_EVENT_ASYNC_END0("renderer.scheduler", name_, object_); - } - - void Start(const char* state) { - if (started_) - return; - StartImpl(state); - } - - void SetState(const char* state) { - if (started_) - TRACE_EVENT_ASYNC_END0("renderer.scheduler", name_, object_); - StartImpl(state); - } - - private: - const char* const name_; - const void* const object_; - - void StartImpl(const char* state) { - if (!started_) - started_ = IsEnabled(); - if (started_) { - // Trace viewer logic relies on subslice starting at the exact same time - // as the async event. - base::TimeTicks now = base::TimeTicks::Now(); - TRACE_EVENT_ASYNC_BEGIN_WITH_TIMESTAMP0("renderer.scheduler", name_, - object_, now); - TRACE_EVENT_ASYNC_STEP_INTO_WITH_TIMESTAMP0("renderer.scheduler", name_, - object_, state, now); - } - } - - bool IsEnabled() const { return *category_enabled_; } - - // We need to explicitly track |started_| state to avoid race condition - // during RendererScheduler creation — it's created before receiving a - // OnTraceLogEnabled notification. - bool started_; - - const unsigned char* category_enabled_; // NOT OWNED - - DISALLOW_COPY_AND_ASSIGN(StateTracer); -}; - -} // namespace scheduler -} // namespace blink - -#endif // THIRD_PARTY_WEBKIT_SOURCE_PLATFORM_SCHEDULER_UTIL_STATE_TRACING_HELPER_H_
diff --git a/third_party/WebKit/Source/platform/scheduler/util/tracing_helper.cc b/third_party/WebKit/Source/platform/scheduler/util/tracing_helper.cc new file mode 100644 index 0000000..0c0f75f2 --- /dev/null +++ b/third_party/WebKit/Source/platform/scheduler/util/tracing_helper.cc
@@ -0,0 +1,39 @@ +// 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 "platform/scheduler/util/tracing_helper.h" + +namespace blink { +namespace scheduler { + +const char kTracingCategoryNameDefault[] = "renderer.scheduler"; +const char kTracingCategoryNameInfo[] = + TRACE_DISABLED_BY_DEFAULT("renderer.scheduler"); +const char kTracingCategoryNameDebug[] = + TRACE_DISABLED_BY_DEFAULT("renderer.scheduler.debug"); + +namespace { + +// No trace events should be created with this category. +const char kTracingCategoryNameVerboseSnapshots[] = + TRACE_DISABLED_BY_DEFAULT("renderer.scheduler.enable_verbose_snapshots"); + +} // namespace + +bool AreVerboseSnapshotsEnabled() { + bool result = false; + TRACE_EVENT_CATEGORY_GROUP_ENABLED(kTracingCategoryNameVerboseSnapshots, + &result); + return result; +} + +void WarmupTracingCategories() { + TRACE_EVENT_WARMUP_CATEGORY(kTracingCategoryNameDefault); + TRACE_EVENT_WARMUP_CATEGORY(kTracingCategoryNameInfo); + TRACE_EVENT_WARMUP_CATEGORY(kTracingCategoryNameDebug); + TRACE_EVENT_WARMUP_CATEGORY(kTracingCategoryNameVerboseSnapshots); +} + +} // namespace scheduler +} // namespace blink
diff --git a/third_party/WebKit/Source/platform/scheduler/util/tracing_helper.h b/third_party/WebKit/Source/platform/scheduler/util/tracing_helper.h new file mode 100644 index 0000000..cce4075 --- /dev/null +++ b/third_party/WebKit/Source/platform/scheduler/util/tracing_helper.h
@@ -0,0 +1,85 @@ +// 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 THIRD_PARTY_WEBKIT_SOURCE_PLATFORM_SCHEDULER_UTIL_TRACING_HELPER_H_ +#define THIRD_PARTY_WEBKIT_SOURCE_PLATFORM_SCHEDULER_UTIL_TRACING_HELPER_H_ + +#include <memory> +#include "base/macros.h" +#include "base/trace_event/trace_event.h" +#include "platform/PlatformExport.h" + +// TODO(kraynov): Move platform/scheduler/base/trace_helper.h here. + +namespace blink { +namespace scheduler { + +// DISCLAIMER +// Using these constants in TRACE_EVENTs is discouraged nor should you pass any +// non-literal string as a category, unless familiar with tracing internals. +PLATFORM_EXPORT extern const char kTracingCategoryNameDefault[]; +PLATFORM_EXPORT extern const char kTracingCategoryNameInfo[]; +PLATFORM_EXPORT extern const char kTracingCategoryNameDebug[]; + +void WarmupTracingCategories(); +bool AreVerboseSnapshotsEnabled(); + +// TRACE_EVENT macros define static variable to cache a pointer to the state +// of category. Hence, we need distinct version for each category in order to +// prevent unintended leak of state. +template <const char* category> +class StateTracer { + public: + StateTracer(const char* name, const void* object) + : name_(name), object_(object), started_(false) { + // StateTracer category must be a constant defined in tracing_helper. + // Unfortunately, static_assert won't work here because inequality (!=) of + // linker symbols is undefined in compile-time. + DCHECK(category == kTracingCategoryNameDefault || + category == kTracingCategoryNameInfo || + category == kTracingCategoryNameDebug); + } + + ~StateTracer() { + if (started_) + TRACE_EVENT_ASYNC_END0(category, name_, object_); + } + + void SetState(const char* state) { + if (started_) + TRACE_EVENT_ASYNC_END0(category, name_, object_); + + started_ = is_enabled(); + if (started_) { + // Trace viewer logic relies on subslice starting at the exact same time + // as the async event. + base::TimeTicks now = base::TimeTicks::Now(); + TRACE_EVENT_ASYNC_BEGIN_WITH_TIMESTAMP0(category, name_, object_, now); + TRACE_EVENT_ASYNC_STEP_INTO_WITH_TIMESTAMP0(category, name_, object_, + state, now); + } + } + + private: + bool is_enabled() { + bool result = false; + TRACE_EVENT_CATEGORY_GROUP_ENABLED(category, &result); // Cached. + return result; + } + + const char* const name_; // Not owned. + const void* const object_; // Not owned. + + // We have to track |started_| state to avoid race condition since SetState + // might be called before OnTraceLogEnabled notification. + bool started_; + + DISALLOW_COPY_AND_ASSIGN(StateTracer); + // TODO(kraynov): Tests. +}; + +} // namespace scheduler +} // namespace blink + +#endif // THIRD_PARTY_WEBKIT_SOURCE_PLATFORM_SCHEDULER_UTIL_TRACING_HELPER_H_
diff --git a/third_party/WebKit/Source/platform/scroll/ScrollAnimatorCompositorCoordinator.cpp b/third_party/WebKit/Source/platform/scroll/ScrollAnimatorCompositorCoordinator.cpp index e4cbd9e..e9896166 100644 --- a/third_party/WebKit/Source/platform/scroll/ScrollAnimatorCompositorCoordinator.cpp +++ b/third_party/WebKit/Source/platform/scroll/ScrollAnimatorCompositorCoordinator.cpp
@@ -10,7 +10,6 @@ #include "platform/animation/CompositorAnimationHost.h" #include "platform/animation/CompositorAnimationPlayer.h" #include "platform/animation/CompositorAnimationTimeline.h" -#include "platform/graphics/CompositorMutableProperties.h" #include "platform/graphics/GraphicsLayer.h" #include "platform/runtime_enabled_features.h" #include "platform/scroll/ScrollableArea.h"
diff --git a/third_party/WebKit/Source/platform/wtf/Functional.h b/third_party/WebKit/Source/platform/wtf/Functional.h index 5edf36c3..3962195 100644 --- a/third_party/WebKit/Source/platform/wtf/Functional.h +++ b/third_party/WebKit/Source/platform/wtf/Functional.h
@@ -224,11 +224,23 @@ return *this; } + // TODO(tzik): Remove operator() once we finished to update all call sites + // to use Run() instead. R operator()(Args... args) const { DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); return callback_.Run(std::forward<Args>(args)...); } + R Run(Args... args) const & { + DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); + return callback_.Run(std::forward<Args>(args)...); + } + + R Run(Args... args) && { + DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); + return std::move(callback_).Run(std::forward<Args>(args)...); + } + bool IsCancelled() const { return callback_.IsCancelled(); } explicit operator bool() const { return static_cast<bool>(callback_); }
diff --git a/third_party/WebKit/Source/platform/wtf/RefPtr.h b/third_party/WebKit/Source/platform/wtf/RefPtr.h index 44cc2916..2ae3cd6 100644 --- a/third_party/WebKit/Source/platform/wtf/RefPtr.h +++ b/third_party/WebKit/Source/platform/wtf/RefPtr.h
@@ -78,13 +78,13 @@ } RefPtr(RefPtr&& o) : ptr_(o.ptr_) { o.ptr_ = nullptr; } template <typename U> - RefPtr(RefPtr<U>&& o, EnsurePtrConvertibleArgDecl(U, T)) - : ptr_(o.LeakRef()) {} + RefPtr(RefPtr<U>&& o, EnsurePtrConvertibleArgDecl(U, T)) : ptr_(o.ptr_) { + o.ptr_ = nullptr; + } ALWAYS_INLINE ~RefPtr() { DerefIfNotNull(ptr_); } ALWAYS_INLINE T* get() const { return ptr_; } - T* LeakRef() WARN_UNUSED_RESULT; T& operator*() const { return *ptr_; } ALWAYS_INLINE T* operator->() const { return ptr_; } @@ -110,6 +110,8 @@ private: friend RefPtr AdoptRef<T>(T*); + template <typename U> + friend class RefPtr; enum AdoptRefTag { kAdoptRef }; RefPtr(T* ptr, AdoptRefTag) : ptr_(ptr) {} @@ -118,13 +120,6 @@ }; template <typename T> -inline T* RefPtr<T>::LeakRef() { - T* ptr = ptr_; - ptr_ = nullptr; - return ptr; -} - -template <typename T> template <typename U> inline RefPtr<T>& RefPtr<T>::operator=(RefPtrValuePeeker<U> optr) { RefPtr ptr = static_cast<U*>(optr);
diff --git a/third_party/WebKit/Source/platform/wtf/RefPtrTest.cpp b/third_party/WebKit/Source/platform/wtf/RefPtrTest.cpp index b7f58fb..baaf9c2b 100644 --- a/third_party/WebKit/Source/platform/wtf/RefPtrTest.cpp +++ b/third_party/WebKit/Source/platform/wtf/RefPtrTest.cpp
@@ -21,19 +21,6 @@ EXPECT_TRUE(!string); } -TEST(RefPtrTest, LeakRef) { - RefPtr<StringImpl> string = StringImpl::Create("test"); - EXPECT_TRUE(string); - EXPECT_TRUE(string->HasOneRef()); - StringImpl* raw = string.get(); - StringImpl* leaked = string.LeakRef(); - EXPECT_TRUE(!string); - EXPECT_TRUE(leaked); - EXPECT_TRUE(leaked->HasOneRef()); - EXPECT_EQ(raw, leaked); - leaked->Release(); -} - TEST(RefPtrTest, MoveAssignmentOperator) { RefPtr<StringImpl> a = StringImpl::Create("a"); RefPtr<StringImpl> b = StringImpl::Create("b");
diff --git a/third_party/WebKit/Source/platform/wtf/StdLibExtras.h b/third_party/WebKit/Source/platform/wtf/StdLibExtras.h index c4e9d908..7d40fea8 100644 --- a/third_party/WebKit/Source/platform/wtf/StdLibExtras.h +++ b/third_party/WebKit/Source/platform/wtf/StdLibExtras.h
@@ -185,7 +185,11 @@ // DEFINE_STATIC_LOCAL macro, as this macro does not lead to an extra memory // allocation. #define DEFINE_STATIC_REF(type, name, arguments) \ - static type* name = RefPtr<type>(arguments).LeakRef(); + static type* name = [](RefPtr<type> o) { \ + if (o) \ + o->AddRef(); \ + return o.get(); \ + }(arguments); /* * The reinterpret_cast<Type1*>([pointer to Type2]) expressions - where
diff --git a/third_party/WebKit/Source/platform/wtf/text/AtomicStringTable.cpp b/third_party/WebKit/Source/platform/wtf/text/AtomicStringTable.cpp index 8b27665..1c0e4bb8 100644 --- a/third_party/WebKit/Source/platform/wtf/text/AtomicStringTable.cpp +++ b/third_party/WebKit/Source/platform/wtf/text/AtomicStringTable.cpp
@@ -59,7 +59,10 @@ static void Translate(StringImpl*& location, const UCharBuffer& buf, unsigned hash) { - location = StringImpl::Create8BitIfPossible(buf.s, buf.length).LeakRef(); + auto string = StringImpl::Create8BitIfPossible(buf.s, buf.length); + if (string) + string->AddRef(); + location = string.get(); location->SetHash(hash); location->SetIsAtomic(true); } @@ -137,7 +140,8 @@ if (is_all_ascii) new_string = StringImpl::Create(buffer.characters, buffer.length); - location = new_string.LeakRef(); + new_string->AddRef(); + location = new_string.get(); location->SetHash(hash); location->SetIsAtomic(true); } @@ -167,7 +171,9 @@ static void Translate(StringImpl*& location, const LCharBuffer& buf, unsigned hash) { - location = StringImpl::Create(buf.s, buf.length).LeakRef(); + auto string = StringImpl::Create(buf.s, buf.length); + string->AddRef(); + location = string.get(); location->SetHash(hash); location->SetIsAtomic(true); }
diff --git a/third_party/WebKit/public/platform/WebPrivatePtr.h b/third_party/WebKit/public/platform/WebPrivatePtr.h index 4dc30dd..ed1a426 100644 --- a/third_party/WebKit/public/platform/WebPrivatePtr.h +++ b/third_party/WebKit/public/platform/WebPrivatePtr.h
@@ -107,7 +107,10 @@ strongOrWeak == WebPrivatePtrStrength::kNormal, "Ref-counted classes do not support weak WebPrivatePtr<> references"); Release(); - ptr_ = val.LeakRef(); + if (val) + val->AddRef(); + ptr_ = val.get(); + val = nullptr; } void Assign(const PtrStorageImpl& other) {
diff --git a/third_party/WebKit/public/platform/web_feature.mojom b/third_party/WebKit/public/platform/web_feature.mojom index fee4e2b8..9b03548 100644 --- a/third_party/WebKit/public/platform/web_feature.mojom +++ b/third_party/WebKit/public/platform/web_feature.mojom
@@ -1691,6 +1691,7 @@ kFileReaderResultBeforeCompletion = 2158, kSyncXhrInPageDismissal = 2159, kAsyncXhrInPageDismissal = 2160, + kV8LineOrParagraphSeparatorAsLineTerminator = 2161, // Add new features immediately above this line. Don't change assigned // numbers of any item, and don't reuse removed slots.
diff --git a/tools/gn/build_settings.h b/tools/gn/build_settings.h index 3f41ae3..670f996a 100644 --- a/tools/gn/build_settings.h +++ b/tools/gn/build_settings.h
@@ -125,7 +125,7 @@ std::unique_ptr<std::set<SourceFile>> exec_script_whitelist_; - BuildSettings& operator=(const BuildSettings& other); // Disallow. + DISALLOW_ASSIGN(BuildSettings); }; #endif // TOOLS_GN_BUILD_SETTINGS_H_
diff --git a/tools/gn/pool.h b/tools/gn/pool.h index 81a021db..42a8078 100644 --- a/tools/gn/pool.h +++ b/tools/gn/pool.h
@@ -7,6 +7,7 @@ #include <string> +#include "base/macros.h" #include "tools/gn/item.h" // Represents a named pool in the dependency graph. @@ -18,9 +19,6 @@ using Item::Item; ~Pool() override; - Pool(const Pool&) = delete; - Pool& operator=(const Pool&) = delete; - // Item implementation. Pool* AsPool() override; const Pool* AsPool() const override; @@ -36,6 +34,8 @@ std::string GetNinjaName(bool include_toolchain) const; int64_t depth_ = 0; + + DISALLOW_COPY_AND_ASSIGN(Pool); }; #endif // TOOLS_GN_POOL_H_
diff --git a/tools/grit/grit/node/base.py b/tools/grit/grit/node/base.py index a91f879..abb98c0 100755 --- a/tools/grit/grit/node/base.py +++ b/tools/grit/grit/node/base.py
@@ -8,12 +8,14 @@ import ast import os +import sys import types from xml.sax import saxutils from grit import clique from grit import exception from grit import util +import grit.format.gzip_string class Node(object): @@ -606,6 +608,26 @@ from the root node.''' return False + def CompressDataIfNeeded(self, data): + '''Compress data using the format specified in the compress attribute. + + Args: + data: The data to compressed. + Returns: + The data in compressed format. If the format was unknown or not supported + on the target platform then returns the data uncompressed. + ''' + if (self.attrs.get('compress') != 'gzip' + or self.GetRoot().target_platform == 'ios'): + return data + + # We only use rsyncable compression on Linux. + # We exclude ChromeOS since ChromeOS bots are Linux based but do not have + # the --rsyncable option built in for gzip. See crbug.com/617950. + if sys.platform == 'linux2' and 'chromeos' not in self.GetRoot().defines: + return grit.format.gzip_string.GzipStringRsyncable(data) + return grit.format.gzip_string.GzipString(data) + class ContentNode(Node): '''Convenience baseclass for nodes that can have content.'''
diff --git a/tools/grit/grit/node/include.py b/tools/grit/grit/node/include.py index 46f1c07..5787e6e1 100755 --- a/tools/grit/grit/node/include.py +++ b/tools/grit/grit/node/include.py
@@ -7,11 +7,9 @@ """ import os -import sys from grit import exception from grit import util -import grit.format.gzip_string import grit.format.html_inline import grit.format.rc import grit.format.rc_header @@ -97,19 +95,10 @@ # Note that the minifier will only do anything if a minifier command # has been set in the command line. data = minifier.Minify(data, filename) - use_gzip = self.attrs.get('compress', '') == 'gzip' - if use_gzip and self.GetRoot().target_platform != 'ios': - # We only use rsyncable compression on Linux. - # We exclude ChromeOS since ChromeOS bots are Linux based but do not have - # the --rsyncable option built in for gzip. See crbug.com/617950. - if sys.platform == 'linux2' and 'chromeos' not in self.GetRoot().defines: - data = grit.format.gzip_string.GzipStringRsyncable(data) - else: - data = grit.format.gzip_string.GzipString(data) # Include does not care about the encoding, because it only returns binary # data. - return id, data + return id, self.CompressDataIfNeeded(data) def Process(self, output_dir): """Rewrite file references to be base64 encoded data URLs. The new file
diff --git a/tools/grit/grit/node/structure.py b/tools/grit/grit/node/structure.py index 07fe649..4f0226f 100755 --- a/tools/grit/grit/node/structure.py +++ b/tools/grit/grit/node/structure.py
@@ -150,6 +150,7 @@ # dependencies. 'sconsdep' : 'false', 'variables': '', + 'compress': 'false', } def IsExcludedFromRc(self): @@ -205,8 +206,10 @@ id = id_map[self.GetTextualIds()[0]] if self.ExpandVariables(): text = self.gatherer.GetText() - return id, util.Encode(self._Substitute(text), encoding) - return id, self.gatherer.GetData(lang, encoding) + data = util.Encode(self._Substitute(text), encoding) + else: + data = self.gatherer.GetData(lang, encoding) + return id, self.CompressDataIfNeeded(data) def GetHtmlResourceFilenames(self): """Returns a set of all filenames inlined by this node."""
diff --git a/tools/grit/grit/node/structure_unittest.py b/tools/grit/grit/node/structure_unittest.py index a039bce..03d63baa 100755 --- a/tools/grit/grit/node/structure_unittest.py +++ b/tools/grit/grit/node/structure_unittest.py
@@ -9,6 +9,7 @@ import os import os.path import sys +import zlib if __name__ == '__main__': sys.path.append(os.path.join(os.path.dirname(__file__), '../..')) @@ -64,6 +65,35 @@ ' Hello!\n' '</p>\n'), result) + def testCompressGzip(self): + test_data_root = util.PathFromRoot('grit/testdata') + root = util.ParseGrdForUnittest(''' + <structures> + <structure name="TEST_TXT" file="test_text.txt" + compress="gzip" type="chrome_html" /> + </structures>''', base_dir=test_data_root) + struct, = root.GetChildrenOfType(structure.StructureNode) + struct.RunPreSubstitutionGatherer() + _, compressed = struct.GetDataPackPair(lang='en', encoding=1) + + decompressed_data = zlib.decompress(compressed, 16 + zlib.MAX_WBITS) + self.assertEqual(util.ReadFile( + os.path.join(test_data_root, "test_text.txt"), util.BINARY), + decompressed_data) + + def testNotCompressed(self): + test_data_root = util.PathFromRoot('grit/testdata') + root = util.ParseGrdForUnittest(''' + <structures> + <structure name="TEST_TXT" file="test_text.txt" type="chrome_html" /> + </structures>''', base_dir=test_data_root) + struct, = root.GetChildrenOfType(structure.StructureNode) + struct.RunPreSubstitutionGatherer() + _, data = struct.GetDataPackPair(lang='en', encoding=1) + + self.assertEqual(util.ReadFile( + os.path.join(test_data_root, "test_text.txt"), util.BINARY), data) + if __name__ == '__main__': unittest.main()
diff --git a/tools/mb/mb_config.pyl b/tools/mb/mb_config.pyl index 74f26ce7..ddf3e3d3 100644 --- a/tools/mb/mb_config.pyl +++ b/tools/mb/mb_config.pyl
@@ -1486,7 +1486,7 @@ ], 'release_afl_asan': [ - 'release', 'afl', 'asan', 'chromeos_codecs', 'pdf_xfa', 'disable_nacl', + 'release', 'afl', 'asan', 'chromeos_codecs', 'pdf_xfa', 'disable_nacl', 'optimize_for_fuzzing', ], 'release_bot': [
diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums.xml index 4c2ace7..cfcdf39 100644 --- a/tools/metrics/histograms/enums.xml +++ b/tools/metrics/histograms/enums.xml
@@ -16422,6 +16422,7 @@ <int value="2158" label="FileReaderResultBeforeCompletion"/> <int value="2159" label="SyncXhrInPageDismissal"/> <int value="2160" label="AsyncXhrInPageDismissal"/> + <int value="2161" label="V8LineOrParagraphSeparatorAsLineTerminator"/> </enum> <enum name="FeedbackSource"> @@ -33174,6 +33175,21 @@ <int value="3" label="Audio and video"/> </enum> +<enum name="RendererSchedulerFrameType"> + <int value="0" label="MainFrame_OnScreen"/> + <int value="1" label="MainFrame_OffScreen"/> + <int value="2" label="MainFrame_Background"/> + <int value="3" label="MainFrame_Background_ThrottlingExempt"/> + <int value="4" label="SameOrigin_OnScreen"/> + <int value="5" label="SameOrigin_OffScreen"/> + <int value="6" label="SameOrigin_Background"/> + <int value="7" label="SameOrigin_Background_ThrottlingExempt"/> + <int value="8" label="CrossOrigin_OnScreen"/> + <int value="9" label="CrossOrigin_OffScreen"/> + <int value="10" label="CrossOrigin_Background"/> + <int value="11" label="CrossOrigin_Background_ThrottlingExempt"/> +</enum> + <enum name="RendererSchedulerTaskQueueType"> <int value="0" label="Control"/> <int value="1" label="Default"/>
diff --git a/tools/metrics/histograms/histograms.xml b/tools/metrics/histograms/histograms.xml index 43f0177..92a8952 100644 --- a/tools/metrics/histograms/histograms.xml +++ b/tools/metrics/histograms/histograms.xml
@@ -66271,6 +66271,18 @@ </summary> </histogram> +<histogram name="RendererScheduler.TaskDurationPerFrameType" units="ms"> + <owner>altimin@chromium.org</owner> + <summary> + Total duration of renderer per-frame tasks split per frame type. Used to + monitor workload coming from different frames. Reported each time when task + is completed and current accumulated duration is longer than 1ms. + + This metric is susceptible to problematic outliers and should be analyzed + with custom scripts accounting for that rather than from a dashboard. + </summary> +</histogram> + <histogram name="RendererScheduler.TaskDurationPerQueueType" enum="RendererSchedulerTaskQueueType" units="ms"> <obsolete>
diff --git a/tools/perf/benchmark.csv b/tools/perf/benchmark.csv index 69c1d56..76dcd61 100644 --- a/tools/perf/benchmark.csv +++ b/tools/perf/benchmark.csv
@@ -52,8 +52,6 @@ rasterize_and_record_micro.top_25,"vmpstr@chromium.org, wkorman@chromium.org",Internals>Compositing>Rasterization resource_sizes,"agrieve@chromium.org, rnephew@chromium.org, perezju@chromium.org", scheduler.tough_scheduling_cases,"skyostil@chromium.org, brianderson@chromium.org", -service_worker.service_worker,horo@chromium.org, -service_worker.service_worker_micro_benchmark,horo@chromium.org, sizes (linux),thestig@chromium.org, sizes (mac),tapted@chromium.org, sizes (win),grt@chromium.org,
diff --git a/tools/perf/benchmarks/service_worker.py b/tools/perf/benchmarks/service_worker.py deleted file mode 100644 index 1cfc967df..0000000 --- a/tools/perf/benchmarks/service_worker.py +++ /dev/null
@@ -1,210 +0,0 @@ -# Copyright 2014 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 collections -import page_sets -import re - -from core import perf_benchmark - -from telemetry import benchmark -from telemetry import story -from telemetry.core import util -from telemetry.page import legacy_page_test -from telemetry.timeline import async_slice as async_slice_module -from telemetry.timeline import slice as slice_module -from telemetry.value import scalar - -from measurements import timeline_controller -from metrics import speedindex - - -class _ServiceWorkerTimelineMetric(object): - - def AddResultsOfCounters(self, process, counter_regex_string, results): - counter_filter = re.compile(counter_regex_string) - for counter_name, counter in process.counters.iteritems(): - if not counter_filter.search(counter_name): - continue - - total = sum(counter.totals) - - # Results objects cannot contain the '.' character, so remove that here. - sanitized_counter_name = counter_name.replace('.', '_') - - results.AddValue(scalar.ScalarValue( - results.current_page, sanitized_counter_name, 'count', total)) - results.AddValue(scalar.ScalarValue( - results.current_page, sanitized_counter_name + '_avg', 'count', - total / float(len(counter.totals)))) - - def AddResultsOfEvents( - self, process, thread_regex_string, event_regex_string, results): - thread_filter = re.compile(thread_regex_string) - event_filter = re.compile(event_regex_string) - - for thread in process.threads.itervalues(): - thread_name = thread.name.replace('/', '_') - if not thread_filter.search(thread_name): - continue - - filtered_events = [] - for event in thread.IterAllEvents(): - event_name = event.name.replace('.', '_') - if event_filter.search(event_name): - filtered_events.append(event) - - async_events_by_name = collections.defaultdict(list) - sync_events_by_name = collections.defaultdict(list) - for event in filtered_events: - if isinstance(event, async_slice_module.AsyncSlice): - async_events_by_name[event.name].append(event) - elif isinstance(event, slice_module.Slice): - sync_events_by_name[event.name].append(event) - - for event_name, event_group in async_events_by_name.iteritems(): - times = [e.duration for e in event_group] - self._AddResultOfEvent(thread_name, event_name, times, results) - - for event_name, event_group in sync_events_by_name.iteritems(): - times = [e.self_time for e in event_group] - self._AddResultOfEvent(thread_name, event_name, times, results) - - def _AddResultOfEvent(self, thread_name, event_name, times, results): - total = sum(times) - biggest_jank = max(times) - - # Results objects cannot contain the '.' character, so remove that here. - sanitized_event_name = event_name.replace('.', '_') - - full_name = thread_name + '|' + sanitized_event_name - results.AddValue(scalar.ScalarValue( - results.current_page, full_name, 'ms', total)) - results.AddValue(scalar.ScalarValue( - results.current_page, full_name + '_max', 'ms', biggest_jank)) - results.AddValue(scalar.ScalarValue( - results.current_page, full_name + '_avg', 'ms', total / len(times))) - - -class _ServiceWorkerMeasurement(legacy_page_test.LegacyPageTest): - """Measure Speed Index and TRACE_EVENTs""" - - def __init__(self): - super(_ServiceWorkerMeasurement, self).__init__() - self._timeline_controller = timeline_controller.TimelineController() - self._speed_index = speedindex.SpeedIndexMetric() - self._page_open_times = collections.defaultdict(int) - - def DidRunPage(self, platform): - if platform.tracing_controller.is_tracing_running: - platform.tracing_controller.StopTracing() - - def WillNavigateToPage(self, page, tab): - self._timeline_controller.SetUp(page, tab) - self._timeline_controller.Start(tab) - self._speed_index.Start(page, tab) - - def ValidateAndMeasurePage(self, page, tab, results): - # timeline_controller requires creation of at least a single interaction - # record. service_worker should be refactored to follow the - # timeline_based_measurement or it should not re-use timeline_controller - # logic for start & stop tracing. - with tab.action_runner.CreateInteraction('_DummyInteraction'): - pass - tab.WaitForDocumentReadyStateToBeComplete(40) - self._timeline_controller.Stop(tab, results) - - # Retrieve TRACE_EVENTs - timeline_metric = _ServiceWorkerTimelineMetric() - browser_process = self._timeline_controller.model.browser_process - filter_text = '(RegisterServiceWorker|'\ - 'UnregisterServiceWorker|'\ - 'ProcessAllocate|'\ - 'FindRegistrationForDocument|'\ - 'DispatchFetchEvent)' - timeline_metric.AddResultsOfEvents( - browser_process, 'IOThread', filter_text, results) - - # Record Speed Index - def SpeedIndexIsFinished(): - return self._speed_index.IsFinished(tab) - util.WaitFor(SpeedIndexIsFinished, 60) - self._speed_index.Stop(page, tab) - # Distinguish the first and second load from the subsequent loads - url = str(page) - chart_prefix = 'page_load' - self._page_open_times[url] += 1 - if self._page_open_times[url] == 1: - chart_prefix += '_1st' - elif self._page_open_times[url] == 2: - chart_prefix += '_2nd' - else: - chart_prefix += '_later' - self._speed_index.AddResults(tab, results, chart_prefix) - - -class _ServiceWorkerMicroBenchmarkMeasurement(legacy_page_test.LegacyPageTest): - """Record results reported by the JS microbenchmark.""" - - def __init__(self): - super(_ServiceWorkerMicroBenchmarkMeasurement, self).__init__() - - def ValidateAndMeasurePage(self, page, tab, results): - del page # unused - tab.WaitForJavaScriptCondition('window.done', timeout=40) - json = tab.EvaluateJavaScript('window.results || {}') - for key, value in json.iteritems(): - results.AddValue(scalar.ScalarValue( - results.current_page, key, value['units'], value['value'])) - - -@benchmark.Owner(emails=['horo@chromium.org']) -class ServiceWorkerPerfTest(perf_benchmark.PerfBenchmark): - """Performance test of pages using ServiceWorker. - - The page set contains pages like Trained to Thrill and svgomg. - Execution time of these pages will be shown as Speed Index, and TRACE_EVENTs - are subsidiary information to understand performance regressions in more - detail. - """ - test = _ServiceWorkerMeasurement - page_set = page_sets.ServiceWorkerPageSet - - @classmethod - def Name(cls): - return 'service_worker.service_worker' - - def GetExpectations(self): - class StoryExpectations(story.expectations.StoryExpectations): - def SetExpectations(self): - self.DisableBenchmark([story.expectations.ALL], - 'crbug.com/736518, crbug.com/763153') - return StoryExpectations() - - -@benchmark.Owner(emails=['horo@chromium.org']) -class ServiceWorkerMicroBenchmarkPerfTest(perf_benchmark.PerfBenchmark): - """This test is a microbenchmark of service worker. - - The page set is a benchmark page that generates many concurrent requests - handled by a service worker that does respondWith(new Response()). The test - result is the response times. - """ - test = _ServiceWorkerMicroBenchmarkMeasurement - page_set = page_sets.ServiceWorkerMicroBenchmarkPageSet - - @classmethod - def Name(cls): - return 'service_worker.service_worker_micro_benchmark' - - def GetExpectations(self): - class StoryExpectations(story.expectations.StoryExpectations): - def SetExpectations(self): - self.DisableStory('http://localhost:8091/index.html', - [story.expectations.ANDROID_WEBVIEW], - 'crbug.com/653924') - self.DisableStory('http://localhost:8091/index.html', - [story.expectations.ALL], - 'crbug.com/767086') - return StoryExpectations()
diff --git a/tools/perf/page_sets/data/service_worker.json b/tools/perf/page_sets/data/service_worker.json deleted file mode 100644 index 6164178..0000000 --- a/tools/perf/page_sets/data/service_worker.json +++ /dev/null
@@ -1,24 +0,0 @@ -{ - "archives": { - "first_load": { - "DEFAULT": "service_worker_040.wprgo" - }, - "https://jakearchibald.github.io/trained-to-thrill/": { - "DEFAULT": "service_worker_038.wprgo" - }, - "second_load": { - "DEFAULT": "service_worker_040.wprgo" - }, - "svgomg_first_load": { - "DEFAULT": "service_worker_040.wprgo" - }, - "svgomg_second_load": { - "DEFAULT": "service_worker_040.wprgo" - }, - "third_load": { - "DEFAULT": "service_worker_040.wprgo" - } - }, - "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/service_worker_038.wprgo.sha1 b/tools/perf/page_sets/data/service_worker_038.wprgo.sha1 deleted file mode 100644 index 5635337..0000000 --- a/tools/perf/page_sets/data/service_worker_038.wprgo.sha1 +++ /dev/null
@@ -1 +0,0 @@ -0e2cd9e417235cd3b4316e627d0bec469a04b871 \ No newline at end of file
diff --git a/tools/perf/page_sets/data/service_worker_040.wprgo.sha1 b/tools/perf/page_sets/data/service_worker_040.wprgo.sha1 deleted file mode 100644 index ca8ccac..0000000 --- a/tools/perf/page_sets/data/service_worker_040.wprgo.sha1 +++ /dev/null
@@ -1 +0,0 @@ -3dca2bbf7cad7690ce13bf9058d91643331834f3 \ No newline at end of file
diff --git a/tools/perf/page_sets/data/service_worker_micro_benchmark_004.wprgo.sha1 b/tools/perf/page_sets/data/service_worker_micro_benchmark_004.wprgo.sha1 deleted file mode 100644 index cbfaf2d..0000000 --- a/tools/perf/page_sets/data/service_worker_micro_benchmark_004.wprgo.sha1 +++ /dev/null
@@ -1 +0,0 @@ -ef25a3d6171d5e51cc8dfad1547bf88ca48219ee \ No newline at end of file
diff --git a/tools/perf/page_sets/dual_browser_story.py b/tools/perf/page_sets/dual_browser_story.py index 218b111f..fa31a01 100644 --- a/tools/perf/page_sets/dual_browser_story.py +++ b/tools/perf/page_sets/dual_browser_story.py
@@ -99,8 +99,7 @@ wpr_mode = wpr_modes.WPR_REPLAY self.platform.network_controller.Open( - wpr_mode, browser_options.extra_wpr_args, - use_wpr_go=story_set.wpr_archive_info.is_using_wpr_go_archives) + wpr_mode, browser_options.extra_wpr_args) @property def current_tab(self):
diff --git a/tools/perf/page_sets/service_worker.py b/tools/perf/page_sets/service_worker.py deleted file mode 100644 index 798bfc5..0000000 --- a/tools/perf/page_sets/service_worker.py +++ /dev/null
@@ -1,42 +0,0 @@ -# Copyright 2014 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. - -from telemetry.page import page as page -from telemetry import story - - -archive_data_file_path = 'data/service_worker.json' - - -class ServiceWorkerPageSet(story.StorySet): - """Page set of applications using ServiceWorker""" - - def __init__(self): - super(ServiceWorkerPageSet, self).__init__( - archive_data_file=archive_data_file_path, - cloud_storage_bucket=story.PARTNER_BUCKET) - - # Why: the first application using ServiceWorker - # 1st time: registration - self.AddStory(page.Page( - 'https://jakearchibald.github.io/trained-to-thrill/', self, - name='first_load', make_javascript_deterministic=False)) - # 2nd time: 1st onfetch with caching - self.AddStory(page.Page( - 'https://jakearchibald.github.io/trained-to-thrill/', self, - name='second_load', make_javascript_deterministic=False)) - # 3rd time: 2nd onfetch from cache - self.AddStory(page.Page( - 'https://jakearchibald.github.io/trained-to-thrill/', self, - name='third_load', make_javascript_deterministic=False)) - - # Why: another caching strategy: cache.addAll in oninstall handler - # 1st time: registration and caching - self.AddStory(page.Page( - 'https://jakearchibald.github.io/svgomg/', self, - name='svgomg_first_load', make_javascript_deterministic=False)) - # 2nd time: onfetch from cache - self.AddStory(page.Page( - 'https://jakearchibald.github.io/svgomg/', self, - name='svgomg_second_load', make_javascript_deterministic=False))
diff --git a/ui/compositor/layer.cc b/ui/compositor/layer.cc index 0f1d1a2e4..7e558a8 100644 --- a/ui/compositor/layer.cc +++ b/ui/compositor/layer.cc
@@ -92,8 +92,8 @@ Layer::Layer() : type_(LAYER_TEXTURED), - compositor_(NULL), - parent_(NULL), + compositor_(nullptr), + parent_(nullptr), visible_(true), fills_bounds_opaquely_(true), fills_bounds_completely_(false), @@ -106,13 +106,13 @@ layer_temperature_(0.0f), layer_blue_scale_(1.0f), layer_green_scale_(1.0f), - layer_mask_(NULL), - layer_mask_back_link_(NULL), + layer_mask_(nullptr), + layer_mask_back_link_(nullptr), zoom_(1), zoom_inset_(0), - delegate_(NULL), - owner_(NULL), - cc_layer_(NULL), + delegate_(nullptr), + owner_(nullptr), + cc_layer_(nullptr), device_scale_factor_(1.0f), cache_render_surface_requests_(0), deferred_paint_requests_(0) { @@ -121,8 +121,8 @@ Layer::Layer(LayerType type) : type_(type), - compositor_(NULL), - parent_(NULL), + compositor_(nullptr), + parent_(nullptr), visible_(true), fills_bounds_opaquely_(true), fills_bounds_completely_(false), @@ -135,13 +135,13 @@ layer_temperature_(0.0f), layer_blue_scale_(1.0f), layer_green_scale_(1.0f), - layer_mask_(NULL), - layer_mask_back_link_(NULL), + layer_mask_(nullptr), + layer_mask_back_link_(nullptr), zoom_(1), zoom_inset_(0), - delegate_(NULL), - owner_(NULL), - cc_layer_(NULL), + delegate_(nullptr), + owner_(nullptr), + cc_layer_(nullptr), device_scale_factor_(1.0f), cache_render_surface_requests_(0), deferred_paint_requests_(0) { @@ -157,15 +157,15 @@ // is still around. SetAnimator(nullptr); if (compositor_) - compositor_->SetRootLayer(NULL); + compositor_->SetRootLayer(nullptr); if (parent_) parent_->Remove(this); if (layer_mask_) - SetMaskLayer(NULL); + SetMaskLayer(nullptr); if (layer_mask_back_link_) - layer_mask_back_link_->SetMaskLayer(NULL); - for (size_t i = 0; i < children_.size(); ++i) - children_[i]->parent_ = NULL; + layer_mask_back_link_->SetMaskLayer(nullptr); + for (auto* child : children_) + child->parent_ = nullptr; cc_layer_->RemoveFromParent(); if (mailbox_release_callback_) @@ -288,7 +288,7 @@ std::find(children_.begin(), children_.end(), child); DCHECK(i != children_.end()); children_.erase(i); - child->parent_ = NULL; + child->parent_ = nullptr; child->cc_layer_->RemoveFromParent(); } @@ -464,9 +464,9 @@ // We need to de-reference the currently linked object so that no problem // arises if the mask layer gets deleted before this object. if (layer_mask_) - layer_mask_->layer_mask_back_link_ = NULL; + layer_mask_->layer_mask_back_link_ = nullptr; layer_mask_ = layer_mask; - cc_layer_->SetMaskLayer(layer_mask ? layer_mask->cc_layer_ : NULL); + cc_layer_->SetMaskLayer(layer_mask ? layer_mask->cc_layer_ : nullptr); // We need to reference the linked object so that it can properly break the // link to us when it gets deleted. if (layer_mask) { @@ -563,7 +563,7 @@ const Layer* layer = this; while (layer && layer->visible_) layer = layer->parent_; - return layer == NULL; + return layer == nullptr; } bool Layer::ShouldDraw() const { @@ -630,7 +630,7 @@ if (cc_layer_->parent()) { cc_layer_->parent()->ReplaceChild(cc_layer_, new_layer); } - cc_layer_->SetLayerClient(NULL); + cc_layer_->SetLayerClient(nullptr); new_layer->SetOpacity(cc_layer_->opacity()); new_layer->SetTransform(cc_layer_->transform()); new_layer->SetPosition(cc_layer_->position()); @@ -638,14 +638,14 @@ new_layer->SetCacheRenderSurface(cc_layer_->cache_render_surface()); cc_layer_ = new_layer.get(); - content_layer_ = NULL; - solid_color_layer_ = NULL; - texture_layer_ = NULL; - surface_layer_ = NULL; + content_layer_ = nullptr; + solid_color_layer_ = nullptr; + texture_layer_ = nullptr; + surface_layer_ = nullptr; - for (size_t i = 0; i < children_.size(); ++i) { - DCHECK(children_[i]->cc_layer_); - cc_layer_->AddChild(children_[i]->cc_layer_); + for (auto* child : children_) { + DCHECK(child->cc_layer_); + cc_layer_->AddChild(child->cc_layer_); } cc_layer_->SetLayerClient(this); cc_layer_->SetTransformOrigin(gfx::Point3F()); @@ -915,9 +915,9 @@ void Layer::SuppressPaint() { if (!delegate_) return; - delegate_ = NULL; - for (size_t i = 0; i < children_.size(); ++i) - children_[i]->SuppressPaint(); + delegate_ = nullptr; + for (auto* child : children_) + child->SuppressPaint(); } void Layer::OnDeviceScaleFactorChanged(float device_scale_factor) { @@ -939,8 +939,8 @@ delegate_->OnDeviceScaleFactorChanged(old_device_scale_factor, device_scale_factor); } - for (size_t i = 0; i < children_.size(); ++i) - children_[i]->OnDeviceScaleFactorChanged(device_scale_factor); + for (auto* child : children_) + child->OnDeviceScaleFactorChanged(device_scale_factor); if (layer_mask_) layer_mask_->OnDeviceScaleFactorChanged(device_scale_factor); } @@ -1232,7 +1232,7 @@ LayerAnimatorCollection* Layer::GetLayerAnimatorCollection() { Compositor* compositor = GetCompositor(); - return compositor ? compositor->layer_animator_collection() : NULL; + return compositor ? compositor->layer_animator_collection() : nullptr; } int Layer::GetFrameNumber() const {
diff --git a/ui/message_center/BUILD.gn b/ui/message_center/BUILD.gn index fbc63201..b42aef2 100644 --- a/ui/message_center/BUILD.gn +++ b/ui/message_center/BUILD.gn
@@ -18,7 +18,6 @@ "notification_expand_more.icon", "notification_settings_button.1x.icon", "notification_settings_button.icon", - "product.1x.icon", "product.icon", ] }
diff --git a/ui/message_center/vector_icons/product.1x.icon b/ui/message_center/vector_icons/product.1x.icon deleted file mode 100644 index 4997801..0000000 --- a/ui/message_center/vector_icons/product.1x.icon +++ /dev/null
@@ -1,38 +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. - -CANVAS_DIMENSIONS, 16, -MOVE_TO, 8, 5.3f, -LINE_TO, 13.34f, 5.3f, -CUBIC_TO, 12.38f, 3.32f, 10.34f, 2, 8, 2, -CUBIC_TO, 6.14f, 2, 4.46f, 2.84f, 3.38f, 4.16f, -LINE_TO, 5.36f, 7.58f, -CUBIC_TO, 5.54f, 6.32f, 6.68f, 5.3f, 8, 5.3f, -LINE_TO, 8, 5.3f, -CLOSE, -MOVE_TO, 8, 10.7f, -CUBIC_TO, 6.98f, 10.7f, 6.14f, 10.16f, 5.66f, 9.32f, -LINE_TO, 2.96f, 4.7f, -CUBIC_TO, 2.36f, 5.66f, 2, 6.8f, 2, 8, -CUBIC_TO, 2, 11, 4.16f, 13.46f, 7.04f, 13.94f, -LINE_TO, 9.02f, 10.52f, -CUBIC_TO, 8.66f, 10.64f, 8.36f, 10.7f, 8, 10.7f, -LINE_TO, 8, 10.7f, -CLOSE, -MOVE_TO, 10.7f, 8, -CUBIC_TO, 10.7f, 8.48f, 10.58f, 8.96f, 10.34f, 9.32f, -LINE_TO, 7.64f, 14, -LINE_TO, 8, 14, -CUBIC_TO, 11.3f, 14, 14, 11.3f, 14, 8, -CUBIC_TO, 14, 7.28f, 13.88f, 6.56f, 13.64f, 5.9f, -LINE_TO, 9.68f, 5.9f, -CUBIC_TO, 10.28f, 6.38f, 10.7f, 7.16f, 10.7f, 8, -CLOSE, -MOVE_TO, 8, 10.1f, -CUBIC_TO, 9.16f, 10.1f, 10.1f, 9.16f, 10.1f, 8, -CUBIC_TO, 10.1f, 6.84f, 9.16f, 5.9f, 8, 5.9f, -CUBIC_TO, 6.84f, 5.9f, 5.9f, 6.84f, 5.9f, 8, -CUBIC_TO, 5.9f, 9.16f, 6.84f, 10.1f, 8, 10.1f, -CLOSE, -END
diff --git a/ui/message_center/vector_icons/product.icon b/ui/message_center/vector_icons/product.icon index 98ce8d51..97f8448b 100644 --- a/ui/message_center/vector_icons/product.icon +++ b/ui/message_center/vector_icons/product.icon
@@ -2,37 +2,35 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -CANVAS_DIMENSIONS, 32, -MOVE_TO, 16, 10.6f, -LINE_TO, 26.68f, 10.6f, -CUBIC_TO, 24.76f, 6.64f, 20.68f, 4, 16, 4, -CUBIC_TO, 12.28f, 4, 8.92f, 5.68f, 6.76f, 8.32f, -LINE_TO, 10.72f, 15.16f, -CUBIC_TO, 11.08f, 12.64f, 13.36f, 10.6f, 16, 10.6f, -LINE_TO, 16, 10.6f, +CANVAS_DIMENSIONS, 96, +MOVE_TO, 84.25f, 30.5f, +CUBIC_TO, 77.85f, 17.3f, 63.6f, 8, 48, 8, +R_CUBIC_TO, -12.4f, 0, -23.6f, 5.6f, -30.8f, 14.4f, +R_LINE_TO, 13.2f, 22.8f, +R_CUBIC_TO, 1.2f, -8.4f, 8.8f, -14.7f, 17.6f, -14.7f, +R_H_LINE_TO, 36.25f, CLOSE, -MOVE_TO, 16, 21.4f, -CUBIC_TO, 13.96f, 21.4f, 12.28f, 20.32f, 11.32f, 18.64f, -LINE_TO, 5.92f, 9.4f, -CUBIC_TO, 4.72f, 11.32f, 4, 13.6f, 4, 16, -CUBIC_TO, 4, 22, 8.32f, 26.92f, 14.08f, 27.88f, -LINE_TO, 18.04f, 21.04f, -CUBIC_TO, 17.32f, 21.28f, 16.72f, 21.4f, 16, 21.4f, -LINE_TO, 16, 21.4f, +MOVE_TO, 48, 66, +R_CUBIC_TO, -6.8f, 0, -12.4f, -3.6f, -15.6f, -9.2f, +LINE_TO, 14.4f, 26, +CUBIC_TO, 10.4f, 32.4f, 8, 40, 8, 48, +R_CUBIC_TO, 0, 20, 14.4f, 36.4f, 33.6f, 39.6f, +R_LINE_TO, 13.2f, -22.8f, +R_CUBIC_TO, -2.4f, 0.8f, -4.4f, 1.2f, -6.8f, 1.2f, CLOSE, -MOVE_TO, 21.4f, 16, -CUBIC_TO, 21.4f, 16.96f, 21.16f, 17.92f, 20.68f, 18.64f, -LINE_TO, 15.28f, 28, -LINE_TO, 16, 28, -CUBIC_TO, 22.6f, 28, 28, 22.6f, 28, 16, -CUBIC_TO, 28, 14.56f, 27.76f, 13.12f, 27.28f, 11.8f, -LINE_TO, 19.36f, 11.8f, -CUBIC_TO, 20.56f, 12.76f, 21.4f, 14.32f, 21.4f, 16, +R_MOVE_TO, 18, -18, +R_CUBIC_TO, 0, -5.6f, -4, -11.8f, -8, -15, +R_H_LINE_TO, 27.5f, +R_CUBIC_TO, 1.6f, 4.4f, 2.5f, 10.2f, 2.5f, 15, +R_CUBIC_TO, 0, 22, -18, 40, -40, 40, +R_H_LINE_TO, -2.4f, +R_LINE_TO, 18, -31.2f, +R_CUBIC_TO, 1.6f, -2.4f, 2.4f, -5.6f, 2.4f, -8.8f, CLOSE, -MOVE_TO, 16, 20.2f, -CUBIC_TO, 18.32f, 20.2f, 20.2f, 18.32f, 20.2f, 16, -CUBIC_TO, 20.2f, 13.68f, 18.32f, 11.8f, 16, 11.8f, -CUBIC_TO, 13.68f, 11.8f, 11.8f, 13.68f, 11.8f, 16, -CUBIC_TO, 11.8f, 18.32f, 13.68f, 20.2f, 16, 20.2f, +MOVE_TO, 48, 62, +R_CUBIC_TO, -7.73f, 0, -14, -6.27f, -14, -14, +R_CUBIC_TO, 0, -7.73f, 6.27f, -14, 14, -14, +R_CUBIC_TO, 7.73f, 0, 14, 6.27f, 14, 14, +R_CUBIC_TO, 0, 7.73f, -6.27f, 14, -14, 14, CLOSE, END