Diff
Modified: trunk/LayoutTests/ChangeLog (220273 => 220274)
--- trunk/LayoutTests/ChangeLog 2017-08-04 16:02:00 UTC (rev 220273)
+++ trunk/LayoutTests/ChangeLog 2017-08-04 16:17:57 UTC (rev 220274)
@@ -1,3 +1,17 @@
+2017-08-04 Ryan Haddad <[email protected]>
+
+ Unreviewed, rolling out r220268.
+
+ This change caused assertion failures on macOS and iOS Debug
+ WK2.
+
+ Reverted changeset:
+
+ "Resource Load Statistics: Report user interaction
+ immediately, but only when needed"
+ https://bugs.webkit.org/show_bug.cgi?id=175090
+ http://trac.webkit.org/changeset/220268
+
2017-08-04 Chris Dumez <[email protected]>
Mark beacon-basic-string.html as slow.
Modified: trunk/LayoutTests/http/tests/loading/resourceLoadStatistics/user-interaction-in-cross-origin-sub-frame.html (220273 => 220274)
--- trunk/LayoutTests/http/tests/loading/resourceLoadStatistics/user-interaction-in-cross-origin-sub-frame.html 2017-08-04 16:02:00 UTC (rev 220273)
+++ trunk/LayoutTests/http/tests/loading/resourceLoadStatistics/user-interaction-in-cross-origin-sub-frame.html 2017-08-04 16:17:57 UTC (rev 220274)
@@ -25,8 +25,10 @@
}
_onload_ = function() {
- if (internals)
+ if (internals) {
internals.setResourceLoadStatisticsEnabled(true);
+ internals.setResourceLoadStatisticsShouldThrottleObserverNotifications(false);
+ }
if (testRunner) {
testRunner.setStatisticsNotifyPagesWhenDataRecordsWereScanned(true);
Deleted: trunk/LayoutTests/http/tests/loading/resourceLoadStatistics/user-interaction-only-reported-once-within-short-period-of-time-expected.txt (220273 => 220274)
--- trunk/LayoutTests/http/tests/loading/resourceLoadStatistics/user-interaction-only-reported-once-within-short-period-of-time-expected.txt 2017-08-04 16:02:00 UTC (rev 220273)
+++ trunk/LayoutTests/http/tests/loading/resourceLoadStatistics/user-interaction-only-reported-once-within-short-period-of-time-expected.txt 2017-08-04 16:17:57 UTC (rev 220274)
@@ -1,27 +0,0 @@
-main frame - didStartProvisionalLoadForFrame
-main frame - didCommitLoadForFrame
-frame "testFrame" - didStartProvisionalLoadForFrame
-main frame - didFinishDocumentLoadForFrame
-frame "testFrame" - didCommitLoadForFrame
-frame "testFrame" - didFinishDocumentLoadForFrame
-frame "testFrame" - didHandleOnloadEventsForFrame
-main frame - didHandleOnloadEventsForFrame
-frame "testFrame" - didFinishLoadForFrame
-main frame - didFinishLoadForFrame
-Tests that user interaction is not reported repeatedly within a short period of time.
-
-On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
-
-
-PASS document.location.origin is topFrameOrigin
-PASS testRunner.isStatisticsHasHadUserInteraction(topFrameOrigin) is false
-PASS testRunner.isStatisticsHasHadUserInteraction(subFrameOrigin) is false
-PASS testRunner.isStatisticsHasHadUserInteraction(topFrameOrigin) is true
-PASS testRunner.isStatisticsHasHadUserInteraction(subFrameOrigin) is false
-PASS testRunner.isStatisticsHasHadUserInteraction(topFrameOrigin) is false
-PASS testRunner.isStatisticsHasHadUserInteraction(topFrameOrigin) is false
-PASS testRunner.isStatisticsHasHadUserInteraction(subFrameOrigin) is false
-PASS successfullyParsed is true
-
-TEST COMPLETE
-
Deleted: trunk/LayoutTests/http/tests/loading/resourceLoadStatistics/user-interaction-only-reported-once-within-short-period-of-time.html (220273 => 220274)
--- trunk/LayoutTests/http/tests/loading/resourceLoadStatistics/user-interaction-only-reported-once-within-short-period-of-time.html 2017-08-04 16:02:00 UTC (rev 220273)
+++ trunk/LayoutTests/http/tests/loading/resourceLoadStatistics/user-interaction-only-reported-once-within-short-period-of-time.html 2017-08-04 16:17:57 UTC (rev 220274)
@@ -1,67 +0,0 @@
-<!DOCTYPE html>
-<html>
-<body>
-<script src=""
-<script src=""
-<script>
- description("Tests that user interaction is not reported repeatedly within a short period of time.");
- jsTestIsAsync = true;
-
- const topFrameOrigin = "http://127.0.0.1:8000";
- const subFrameOrigin = "http://localhost:8000";
-
- function activateElement(elementId) {
- var element = document.getElementById(elementId);
- var centerX = element.offsetLeft + element.offsetWidth / 2;
- var centerY = element.offsetTop + element.offsetHeight / 2;
- UIHelper.activateAt(centerX, centerY);
- }
-
- function firstInteraction() {
- if (testRunner) {
- testRunner.setStatisticsNotifyPagesWhenDataRecordsWereScanned(true);
- testRunner.installStatisticsDidScanDataRecordsCallback(secondInteraction);
-
- shouldBeFalse("testRunner.isStatisticsHasHadUserInteraction(topFrameOrigin)");
- shouldBeFalse("testRunner.isStatisticsHasHadUserInteraction(subFrameOrigin)");
- }
-
- activateElement("testFrame");
- }
-
- function secondInteraction() {
- if (testRunner) {
- testRunner.installStatisticsDidScanDataRecordsCallback(finishTest);
-
- shouldBeTrue("testRunner.isStatisticsHasHadUserInteraction(topFrameOrigin)");
- shouldBeFalse("testRunner.isStatisticsHasHadUserInteraction(subFrameOrigin)");
-
- testRunner.setStatisticsHasHadUserInteraction(topFrameOrigin, false);
- shouldBeFalse("testRunner.isStatisticsHasHadUserInteraction(topFrameOrigin)");
- }
-
- activateElement("testFrame");
-
- if (testRunner)
- testRunner.statisticsProcessStatisticsAndDataRecords();
- }
-
- function finishTest() {
- shouldBeFalse("testRunner.isStatisticsHasHadUserInteraction(topFrameOrigin)");
- shouldBeFalse("testRunner.isStatisticsHasHadUserInteraction(subFrameOrigin)");
-
- finishJSTest();
- }
-
- _onload_ = function() {
- if (internals)
- internals.setResourceLoadStatisticsEnabled(true);
-
- shouldBe("document.location.origin", "topFrameOrigin");
-
- firstInteraction();
- };
-</script>
-<iframe id="testFrame" src=""
-</body>
-</html>
\ No newline at end of file
Modified: trunk/LayoutTests/platform/mac-wk2/TestExpectations (220273 => 220274)
--- trunk/LayoutTests/platform/mac-wk2/TestExpectations 2017-08-04 16:02:00 UTC (rev 220273)
+++ trunk/LayoutTests/platform/mac-wk2/TestExpectations 2017-08-04 16:17:57 UTC (rev 220274)
@@ -719,9 +719,8 @@
webkit.org/b/172397 [ Sierra Debug ] animations/needs-layout.html [ Pass ImageOnlyFailure ]
-# Move to general wk2 expectations once webkit.org/b/175170 is resolved.
+# Currently only tests with click, not tap.
http/tests/loading/resourceLoadStatistics/user-interaction-in-cross-origin-sub-frame.html [ Pass ]
-http/tests/loading/resourceLoadStatistics/user-interaction-only-reported-once-within-short-period-of-time.html [ Pass ]
webkit.org/b/173861 [ Release ] http/tests/webrtc/filtering-ice-candidate-same-origin-frame.html [ Pass Timeout ]
webkit.org/b/173861 [ Release ] http/tests/webrtc/filtering-ice-candidate-cross-origin-frame.html [ Pass Timeout ]
Modified: trunk/Source/WebCore/ChangeLog (220273 => 220274)
--- trunk/Source/WebCore/ChangeLog 2017-08-04 16:02:00 UTC (rev 220273)
+++ trunk/Source/WebCore/ChangeLog 2017-08-04 16:17:57 UTC (rev 220274)
@@ -1,3 +1,17 @@
+2017-08-04 Ryan Haddad <[email protected]>
+
+ Unreviewed, rolling out r220268.
+
+ This change caused assertion failures on macOS and iOS Debug
+ WK2.
+
+ Reverted changeset:
+
+ "Resource Load Statistics: Report user interaction
+ immediately, but only when needed"
+ https://bugs.webkit.org/show_bug.cgi?id=175090
+ http://trac.webkit.org/changeset/220268
+
2017-08-04 Youenn Fablet <[email protected]>
Remove STREAMS_API compilation guard
Modified: trunk/Source/WebCore/loader/ResourceLoadObserver.cpp (220273 => 220274)
--- trunk/Source/WebCore/loader/ResourceLoadObserver.cpp 2017-08-04 16:02:00 UTC (rev 220273)
+++ trunk/Source/WebCore/loader/ResourceLoadObserver.cpp 2017-08-04 16:17:57 UTC (rev 220274)
@@ -99,6 +99,19 @@
return firstMetaDomainIdentifier == metaDomainIdentifiers.get().get(secondDomain);
}
+void ResourceLoadObserver::setShouldThrottleObserverNotifications(bool shouldThrottle)
+{
+ m_shouldThrottleNotifications = shouldThrottle;
+
+ if (!m_notificationTimer.isActive())
+ return;
+
+ // If we change the notification state, we need to restart any notifications
+ // so they will be on the right schedule.
+ m_notificationTimer.stop();
+ scheduleNotificationIfNeeded();
+}
+
void ResourceLoadObserver::setNotificationCallback(WTF::Function<void (Vector<ResourceLoadStatistics>&&)>&& notificationCallback)
{
ASSERT(!m_notificationCallback);
@@ -106,7 +119,7 @@
}
ResourceLoadObserver::ResourceLoadObserver()
- : m_notificationTimer(*this, &ResourceLoadObserver::notifyObserver)
+ : m_notificationTimer(*this, &ResourceLoadObserver::notificationTimerFired)
{
}
@@ -267,20 +280,16 @@
if (url.isBlankURL() || url.isEmpty())
return;
- auto domain = primaryDomain(url);
+ auto& statistics = ensureResourceStatisticsForPrimaryDomain(primaryDomain(url));
auto newTime = reduceToHourlyTimeResolution(WallTime::now());
- auto lastReportedUserInteraction = m_lastReportedUserInteractionMap.get(domain);
- if (newTime == lastReportedUserInteraction)
+ if (newTime == statistics.mostRecentUserInteractionTime)
return;
- m_lastReportedUserInteractionMap.set(domain, newTime);
-
- auto& statistics = ensureResourceStatisticsForPrimaryDomain(domain);
statistics.hadUserInteraction = true;
statistics.lastSeen = newTime;
statistics.mostRecentUserInteractionTime = newTime;
- notifyObserver();
+ scheduleNotificationIfNeeded();
}
ResourceLoadStatistics& ResourceLoadObserver::ensureResourceStatisticsForPrimaryDomain(const String& primaryDomain)
@@ -300,13 +309,12 @@
}
if (!m_notificationTimer.isActive())
- m_notificationTimer.startOneShot(minimumNotificationInterval);
+ m_notificationTimer.startOneShot(m_shouldThrottleNotifications ? minimumNotificationInterval : 0_s);
}
-void ResourceLoadObserver::notifyObserver()
+void ResourceLoadObserver::notificationTimerFired()
{
ASSERT(m_notificationCallback);
- m_notificationTimer.stop();
m_notificationCallback(takeStatistics());
}
@@ -331,10 +339,4 @@
return statistics;
}
-void ResourceLoadObserver::clearState()
-{
- m_resourceStatisticsMap.clear();
- m_lastReportedUserInteractionMap.clear();
-}
-
} // namespace WebCore
Modified: trunk/Source/WebCore/loader/ResourceLoadObserver.h (220273 => 220274)
--- trunk/Source/WebCore/loader/ResourceLoadObserver.h 2017-08-04 16:02:00 UTC (rev 220273)
+++ trunk/Source/WebCore/loader/ResourceLoadObserver.h 2017-08-04 16:17:57 UTC (rev 220274)
@@ -33,7 +33,6 @@
namespace WTF {
class Lock;
class WorkQueue;
-class WallTime;
}
namespace WebCore {
@@ -63,7 +62,6 @@
WEBCORE_EXPORT void setNotificationCallback(WTF::Function<void (Vector<ResourceLoadStatistics>&&)>&&);
- WEBCORE_EXPORT void clearState();
private:
ResourceLoadObserver();
@@ -71,13 +69,13 @@
ResourceLoadStatistics& ensureResourceStatisticsForPrimaryDomain(const String&);
void scheduleNotificationIfNeeded();
- void notifyObserver();
+ void notificationTimerFired();
Vector<ResourceLoadStatistics> takeStatistics();
HashMap<String, ResourceLoadStatistics> m_resourceStatisticsMap;
- HashMap<String, WTF::WallTime> m_lastReportedUserInteractionMap;
WTF::Function<void (Vector<ResourceLoadStatistics>&&)> m_notificationCallback;
Timer m_notificationTimer;
+ bool m_shouldThrottleNotifications { true };
};
} // namespace WebCore
Modified: trunk/Source/WebCore/testing/Internals.cpp (220273 => 220274)
--- trunk/Source/WebCore/testing/Internals.cpp 2017-08-04 16:02:00 UTC (rev 220273)
+++ trunk/Source/WebCore/testing/Internals.cpp 2017-08-04 16:17:57 UTC (rev 220274)
@@ -468,6 +468,8 @@
#if USE(LIBWEBRTC)
WebCore::useRealRTCPeerConnectionFactory();
#endif
+
+ ResourceLoadObserver::shared().setShouldThrottleObserverNotifications(true);
}
Internals::Internals(Document& document)
@@ -3854,6 +3856,11 @@
Settings::setResourceLoadStatisticsEnabled(enable);
}
+void Internals::setResourceLoadStatisticsShouldThrottleObserverNotifications(bool enable)
+{
+ ResourceLoadObserver::shared().setShouldThrottleObserverNotifications(enable);
+}
+
String Internals::composedTreeAsText(Node& node)
{
if (!is<ContainerNode>(node))
Modified: trunk/Source/WebCore/testing/Internals.h (220273 => 220274)
--- trunk/Source/WebCore/testing/Internals.h 2017-08-04 16:02:00 UTC (rev 220273)
+++ trunk/Source/WebCore/testing/Internals.h 2017-08-04 16:17:57 UTC (rev 220274)
@@ -539,6 +539,7 @@
String resourceLoadStatisticsForOrigin(const String& origin);
void setResourceLoadStatisticsEnabled(bool);
+ void setResourceLoadStatisticsShouldThrottleObserverNotifications(bool);
bool isReadableStreamDisturbed(JSC::ExecState&, JSC::JSValue);
JSC::JSValue cloneArrayBuffer(JSC::ExecState&, JSC::JSValue, JSC::JSValue, JSC::JSValue);
Modified: trunk/Source/WebCore/testing/Internals.idl (220273 => 220274)
--- trunk/Source/WebCore/testing/Internals.idl 2017-08-04 16:02:00 UTC (rev 220273)
+++ trunk/Source/WebCore/testing/Internals.idl 2017-08-04 16:17:57 UTC (rev 220274)
@@ -498,6 +498,7 @@
DOMString resourceLoadStatisticsForOrigin(DOMString domain);
void setResourceLoadStatisticsEnabled(boolean enable);
+ void setResourceLoadStatisticsShouldThrottleObserverNotifications(boolean enable);
[MayThrowException] void setCanShowModalDialogOverride(boolean allow);
Modified: trunk/Source/WebKit/ChangeLog (220273 => 220274)
--- trunk/Source/WebKit/ChangeLog 2017-08-04 16:02:00 UTC (rev 220273)
+++ trunk/Source/WebKit/ChangeLog 2017-08-04 16:17:57 UTC (rev 220274)
@@ -1,3 +1,17 @@
+2017-08-04 Ryan Haddad <[email protected]>
+
+ Unreviewed, rolling out r220268.
+
+ This change caused assertion failures on macOS and iOS Debug
+ WK2.
+
+ Reverted changeset:
+
+ "Resource Load Statistics: Report user interaction
+ immediately, but only when needed"
+ https://bugs.webkit.org/show_bug.cgi?id=175090
+ http://trac.webkit.org/changeset/220268
+
2017-08-04 Andreas Kling <[email protected]>
NetworkLoad should always invoke its redirect completion handler
Modified: trunk/Source/WebKit/WebProcess/InjectedBundle/API/c/WKBundle.cpp (220273 => 220274)
--- trunk/Source/WebKit/WebProcess/InjectedBundle/API/c/WKBundle.cpp 2017-08-04 16:02:00 UTC (rev 220273)
+++ trunk/Source/WebKit/WebProcess/InjectedBundle/API/c/WKBundle.cpp 2017-08-04 16:17:57 UTC (rev 220274)
@@ -39,7 +39,6 @@
#include "WebPage.h"
#include "WebPageGroupProxy.h"
#include <WebCore/DatabaseTracker.h>
-#include <WebCore/ResourceLoadObserver.h>
using namespace WebCore;
using namespace WebKit;
@@ -277,8 +276,3 @@
{
toImpl(bundleRef)->setTabKeyCyclesThroughElements(toImpl(pageRef), enabled);
}
-
-void WKBundleClearResourceLoadStatistics(WKBundleRef)
-{
- ResourceLoadObserver::shared().clearState();
-}
Modified: trunk/Source/WebKit/WebProcess/InjectedBundle/API/c/WKBundlePrivate.h (220273 => 220274)
--- trunk/Source/WebKit/WebProcess/InjectedBundle/API/c/WKBundlePrivate.h 2017-08-04 16:02:00 UTC (rev 220273)
+++ trunk/Source/WebKit/WebProcess/InjectedBundle/API/c/WKBundlePrivate.h 2017-08-04 16:17:57 UTC (rev 220274)
@@ -91,8 +91,6 @@
WK_EXPORT void WKBundleSetTabKeyCyclesThroughElements(WKBundleRef bundle, WKBundlePageRef page, bool enabled);
-WK_EXPORT void WKBundleClearResourceLoadStatistics(WKBundleRef);
-
#ifdef __cplusplus
}
#endif
Modified: trunk/Tools/ChangeLog (220273 => 220274)
--- trunk/Tools/ChangeLog 2017-08-04 16:02:00 UTC (rev 220273)
+++ trunk/Tools/ChangeLog 2017-08-04 16:17:57 UTC (rev 220274)
@@ -1,3 +1,17 @@
+2017-08-04 Ryan Haddad <[email protected]>
+
+ Unreviewed, rolling out r220268.
+
+ This change caused assertion failures on macOS and iOS Debug
+ WK2.
+
+ Reverted changeset:
+
+ "Resource Load Statistics: Report user interaction
+ immediately, but only when needed"
+ https://bugs.webkit.org/show_bug.cgi?id=175090
+ http://trac.webkit.org/changeset/220268
+
2017-08-04 Youenn Fablet <[email protected]>
Remove STREAMS_API compilation guard
Modified: trunk/Tools/WebKitTestRunner/InjectedBundle/InjectedBundle.cpp (220273 => 220274)
--- trunk/Tools/WebKitTestRunner/InjectedBundle/InjectedBundle.cpp 2017-08-04 16:02:00 UTC (rev 220273)
+++ trunk/Tools/WebKitTestRunner/InjectedBundle/InjectedBundle.cpp 2017-08-04 16:17:57 UTC (rev 220274)
@@ -367,7 +367,6 @@
WKBundleClearAllDatabases(m_bundle);
WKBundlePageClearApplicationCache(page()->page());
WKBundleResetOriginAccessWhitelists(m_bundle);
- WKBundleClearResourceLoadStatistics(m_bundle);
// [WK2] REGRESSION(r128623): It made layout tests extremely slow
// https://bugs.webkit.org/show_bug.cgi?id=96862