Implement IntersectionObserver
authorsimon.fraser@apple.com <simon.fraser@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 31 Oct 2016 22:12:05 +0000 (22:12 +0000)
committersimon.fraser@apple.com <simon.fraser@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 31 Oct 2016 22:12:05 +0000 (22:12 +0000)
https://bugs.webkit.org/show_bug.cgi?id=159475

Reviewed by Ryosuke Niwa.
Source/JavaScriptCore:

Add ENABLE_INTERSECTION_OBSERVER, enabled by default.

* Configurations/FeatureDefines.xcconfig:

Source/WebCore:

Add bindings support for Intersection Observer
<https://wicg.github.io/IntersectionObserver/>

Code is wrapped in ENABLE(INTERSECTION_OBSERVER), and controlled by a runtime
Setting (off by default for now).

A minor bindings change was required to fix the callback code.

IntersectionObserver is just a shell for now.

Tests: intersection-observer/intersection-observer-entry-interface.html
       intersection-observer/intersection-observer-interface.html

* CMakeLists.txt:
* Configurations/FeatureDefines.xcconfig:
* DerivedSources.make:
* WebCore.xcodeproj/project.pbxproj:
* bindings/scripts/CodeGeneratorJS.pm:
(ShouldPassWrapperByReference):
* bindings/scripts/test/JS/JSTestObj.cpp:
(WebCore::JSTestObjConstructor::construct):
* bindings/scripts/test/JS/JSTestTypedefs.cpp:
(WebCore::JSTestTypedefsConstructor::construct):
* page/IntersectionObserver.cpp: Added.
(WebCore::IntersectionObserver::IntersectionObserver):
(WebCore::IntersectionObserver::observe):
(WebCore::IntersectionObserver::unobserve):
(WebCore::IntersectionObserver::disconnect):
(WebCore::IntersectionObserver::takeRecords):
* page/IntersectionObserver.h: Added.
(WebCore::IntersectionObserver::create):
(WebCore::IntersectionObserver::root):
(WebCore::IntersectionObserver::rootMargin):
(WebCore::IntersectionObserver::thresholds):
* page/IntersectionObserver.idl: Added.
* page/IntersectionObserverCallback.h: Added.
(WebCore::IntersectionObserverCallback::~IntersectionObserverCallback):
* page/IntersectionObserverCallback.idl: Added.
* page/IntersectionObserverEntry.cpp: Added.
(WebCore::IntersectionObserverEntry::IntersectionObserverEntry):
* page/IntersectionObserverEntry.h: Added.
(WebCore::IntersectionObserverEntry::create):
(WebCore::IntersectionObserverEntry::time):
(WebCore::IntersectionObserverEntry::rootBounds):
(WebCore::IntersectionObserverEntry::boundingClientRect):
(WebCore::IntersectionObserverEntry::intersectionRect):
(WebCore::IntersectionObserverEntry::target):
(WebCore::IntersectionObserverEntry::intersectionRatio):
* page/IntersectionObserverEntry.idl: Added.
* page/Settings.in:

Source/WebKit2:

Add ENABLE_INTERSECTION_OBSERVER, enabled by default.

* Configurations/FeatureDefines.xcconfig:

Tools:

Add ENABLE_INTERSECTION_OBSERVER, enabled by default.

* TestWebKitAPI/Configurations/FeatureDefines.xcconfig:

LayoutTests:

Basic interface tests.

* intersection-observer/intersection-observer-entry-interface-expected.txt: Added.
* intersection-observer/intersection-observer-entry-interface.html: Added.
* intersection-observer/intersection-observer-interface-expected.txt: Added.
* intersection-observer/intersection-observer-interface.html: Added.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@208181 268f45cc-cd09-0410-ab3c-d52691b4dbfc

30 files changed:
LayoutTests/ChangeLog
LayoutTests/intersection-observer/intersection-observer-entry-interface-expected.txt [new file with mode: 0644]
LayoutTests/intersection-observer/intersection-observer-entry-interface.html [new file with mode: 0644]
LayoutTests/intersection-observer/intersection-observer-interface-expected.txt [new file with mode: 0644]
LayoutTests/intersection-observer/intersection-observer-interface.html [new file with mode: 0644]
LayoutTests/resources/testharnessreport.js
Source/JavaScriptCore/ChangeLog
Source/JavaScriptCore/Configurations/FeatureDefines.xcconfig
Source/WebCore/CMakeLists.txt
Source/WebCore/ChangeLog
Source/WebCore/Configurations/FeatureDefines.xcconfig
Source/WebCore/DerivedSources.make
Source/WebCore/WebCore.xcodeproj/project.pbxproj
Source/WebCore/bindings/scripts/CodeGeneratorJS.pm
Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.cpp
Source/WebCore/page/IntersectionObserver.cpp [new file with mode: 0644]
Source/WebCore/page/IntersectionObserver.h [new file with mode: 0644]
Source/WebCore/page/IntersectionObserver.idl [new file with mode: 0644]
Source/WebCore/page/IntersectionObserverCallback.h [new file with mode: 0644]
Source/WebCore/page/IntersectionObserverCallback.idl [new file with mode: 0644]
Source/WebCore/page/IntersectionObserverEntry.cpp [new file with mode: 0644]
Source/WebCore/page/IntersectionObserverEntry.h [new file with mode: 0644]
Source/WebCore/page/IntersectionObserverEntry.idl [new file with mode: 0644]
Source/WebCore/page/Settings.in
Source/WebKit/mac/Configurations/FeatureDefines.xcconfig
Source/WebKit2/ChangeLog
Source/WebKit2/Configurations/FeatureDefines.xcconfig
Tools/ChangeLog
Tools/TestWebKitAPI/Configurations/FeatureDefines.xcconfig

index 6bceaaa..8ab6ca8 100644 (file)
@@ -1,3 +1,17 @@
+2016-10-31  Simon Fraser  <simon.fraser@apple.com>
+
+        Implement IntersectionObserver
+        https://bugs.webkit.org/show_bug.cgi?id=159475
+
+        Reviewed by Ryosuke Niwa.
+        
+        Basic interface tests.
+
+        * intersection-observer/intersection-observer-entry-interface-expected.txt: Added.
+        * intersection-observer/intersection-observer-entry-interface.html: Added.
+        * intersection-observer/intersection-observer-interface-expected.txt: Added.
+        * intersection-observer/intersection-observer-interface.html: Added.
+
 2016-10-31  Antoine Quint  <graouts@apple.com>
 
         [Modern Media Controls] Media Controller: Airplay support
diff --git a/LayoutTests/intersection-observer/intersection-observer-entry-interface-expected.txt b/LayoutTests/intersection-observer/intersection-observer-entry-interface-expected.txt
new file mode 100644 (file)
index 0000000..25d93e2
--- /dev/null
@@ -0,0 +1,8 @@
+
+PASS Constructor0 
+PASS ConstructorTime 
+PASS ConstructorRootBounds 
+PASS ConstructorBoundingClientRect 
+PASS ConstructorIntersectionRect 
+PASS ConstructorTime 
+
diff --git a/LayoutTests/intersection-observer/intersection-observer-entry-interface.html b/LayoutTests/intersection-observer/intersection-observer-entry-interface.html
new file mode 100644 (file)
index 0000000..b0649ab
--- /dev/null
@@ -0,0 +1,50 @@
+<!DOCTYPE html>
+<head>
+    <title>IntersectionObserverEntry interface tests.</title>
+    <link rel="author" title="Simon Fraser" href="mailto:simon.fraser@apple.com" />
+    <link rel="help" href="https://wicg.github.io/IntersectionObserver/">
+    <script src="../resources/testharness.js"></script>
+    <script src="../resources/testharnessreport.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+
+    var entryInit = {
+        time: 9999,
+        rootBounds: { x: 10, y: 12.5, width: 130, height: 140 },
+        boundingClientRect: { x: 110, y: 112.7, width: 1130, height: 1140 },
+        intersectionRect: { x: 210, y: 212, width: 2130, height: 2140 },
+        target: document.body
+    };
+
+    test(function() {
+        assert_class_string(new IntersectionObserverEntry(entryInit), 'IntersectionObserverEntry');
+    },'Constructor0');
+    test(function() {
+        var entry = new IntersectionObserverEntry(entryInit);
+        assert_equals(entry.time, 9999);
+    },'ConstructorTime');
+    test(function() {
+        var entry = new IntersectionObserverEntry(entryInit);
+        assert_equals(JSON.stringify(entry.rootBounds), '{"x":10,"y":12.5,"width":130,"height":140,"top":12.5,"right":140,"bottom":152.5,"left":10}');
+        assert_class_string(entry.rootBounds, 'DOMRectReadOnly');
+    },'ConstructorRootBounds');
+    test(function() {
+        var entry = new IntersectionObserverEntry(entryInit);
+        assert_class_string(entry.boundingClientRect, 'DOMRectReadOnly');
+        assert_equals(JSON.stringify(entry.boundingClientRect), '{"x":110,"y":112.7,"width":1130,"height":1140,"top":112.7,"right":1240,"bottom":1252.7,"left":110}');
+    },'ConstructorBoundingClientRect');
+    test(function() {
+        var entry = new IntersectionObserverEntry(entryInit);
+        assert_class_string(entry.intersectionRect, 'DOMRectReadOnly');
+        assert_equals(JSON.stringify(entry.intersectionRect), '{"x":210,"y":212,"width":2130,"height":2140,"top":212,"right":2340,"bottom":2352,"left":210}');
+    },'ConstructorIntersectionRect');
+    test(function() {
+        var entry = new IntersectionObserverEntry(entryInit);
+        assert_equals(entry.target, document.body);
+    },'ConstructorTime');
+
+</script>
+</body>
+</html>
diff --git a/LayoutTests/intersection-observer/intersection-observer-interface-expected.txt b/LayoutTests/intersection-observer/intersection-observer-interface-expected.txt
new file mode 100644 (file)
index 0000000..b806a8a
--- /dev/null
@@ -0,0 +1,10 @@
+
+PASS Constructor0 
+PASS DefaultRootMargin 
+PASS DefaultRoot 
+PASS DefaultThresholds 
+PASS ExplicitRootMargin 
+PASS ExplicitRoot 
+PASS ExplicitThreshold 
+PASS ExplicitThresholds 
+
diff --git a/LayoutTests/intersection-observer/intersection-observer-interface.html b/LayoutTests/intersection-observer/intersection-observer-interface.html
new file mode 100644 (file)
index 0000000..9e1cb78
--- /dev/null
@@ -0,0 +1,46 @@
+<!DOCTYPE html>
+<head>
+    <title>IntersectionObserver interface tests.</title>
+    <link rel="author" title="Simon Fraser" href="mailto:simon.fraser@apple.com" />
+    <link rel="help" href="https://wicg.github.io/IntersectionObserver/">
+    <script src="../resources/testharness.js"></script>
+    <script src="../resources/testharnessreport.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+
+    test(function() {
+        assert_class_string(new IntersectionObserver(function() {}), 'IntersectionObserver');
+    },'Constructor0');
+    test(function() {
+        var observer = new IntersectionObserver(function() {});
+        assert_equals(observer.rootMargin, '0px');
+    },'DefaultRootMargin');
+    test(function() {
+        var observer = new IntersectionObserver(function() {});
+        assert_equals(observer.root, null);
+    },'DefaultRoot');
+    test(function() {
+        var observer = new IntersectionObserver(function() {});
+        assert_array_equals(observer.thresholds, [0]);
+    },'DefaultThresholds');
+    test(function() {
+        var observer = new IntersectionObserver(function() {}, { rootMargin: '33em 10px -120px 3pt' });
+        assert_equals(observer.rootMargin, '33em 10px -120px 3pt');
+    },'ExplicitRootMargin');
+    test(function() {
+        var observer = new IntersectionObserver(function() {}, { root: document.body });
+        assert_equals(observer.root, document.body);
+    },'ExplicitRoot');
+    test(function() {
+        var observer = new IntersectionObserver(function() {},  { threshold: 0.45 });
+        assert_array_equals(observer.thresholds, [0.45]);
+    },'ExplicitThreshold');
+    test(function() {
+        var observer = new IntersectionObserver(function() {},  { threshold: [0, 0.33333678, 0.5, 0.76645] });
+        assert_array_equals(observer.thresholds, [0, 0.33333678, 0.5, 0.76645]);
+    },'ExplicitThresholds');
+</script>
+</body>
+</html>
index c239e4f..67d4d35 100644 (file)
@@ -88,6 +88,8 @@ if (self.testRunner) {
         }, 0);\r
     });\r
 \r
-    if (window.internals)\r
-        window.internals.setResourceTimingSupport(true);\r
+    if (window.internals) {\r
+        internals.setResourceTimingSupport(true);\r
+        internals.settings.setIntersectionObserverEnabled(true);\r
+    }\r
 }\r
index e24dfca..4c6df6a 100644 (file)
@@ -1,3 +1,14 @@
+2016-10-31  Simon Fraser  <simon.fraser@apple.com>
+
+        Implement IntersectionObserver
+        https://bugs.webkit.org/show_bug.cgi?id=159475
+
+        Reviewed by Ryosuke Niwa.
+
+        Add ENABLE_INTERSECTION_OBSERVER, enabled by default.
+
+        * Configurations/FeatureDefines.xcconfig:
+
 2016-10-31  Joseph Pecoraro  <pecoraro@apple.com>
 
         Web Inspector: Provide an opportunity to clear ScriptValues associated with debugged target
index 9dd1dc0..b8fa3d0 100644 (file)
@@ -90,6 +90,7 @@ ENABLE_GAMEPAD[sdk=watch*] = ;
 ENABLE_GAMEPAD_DEPRECATED = ;
 ENABLE_GEOLOCATION = ENABLE_GEOLOCATION;
 ENABLE_ICONDATABASE[sdk=macosx*] = ENABLE_ICONDATABASE;
+ENABLE_INTERSECTION_OBSERVER = ENABLE_INTERSECTION_OBSERVER;
 ENABLE_SERVICE_CONTROLS[sdk=macosx*] = ENABLE_SERVICE_CONTROLS;
 ENABLE_INDEXED_DATABASE = ENABLE_INDEXED_DATABASE;
 ENABLE_INDEXED_DATABASE_IN_WORKERS = ENABLE_INDEXED_DATABASE_IN_WORKERS;
@@ -219,4 +220,4 @@ ENABLE_VARIATION_FONTS_IF_NOT_ = $(ENABLE_VARIATION_FONTS_IF_NOT_NO);
 ENABLE_VARIATION_FONTS_IF_NOT_NO = ENABLE_VARIATION_FONTS;
 ENABLE_VARIATION_FONTS_IF_NOT_YES = ;
 
-FEATURE_DEFINES = $(ENABLE_3D_TRANSFORMS) $(ENABLE_ACCELERATED_2D_CANVAS) $(ENABLE_ACCELERATED_OVERFLOW_SCROLLING) $(ENABLE_APPLE_PAY) $(ENABLE_ATTACHMENT_ELEMENT) $(ENABLE_AVF_CAPTIONS) $(ENABLE_CACHE_PARTITIONING) $(ENABLE_CANVAS_PATH) $(ENABLE_CANVAS_PROXY) $(ENABLE_CHANNEL_MESSAGING) $(ENABLE_CONTENT_FILTERING) $(ENABLE_CSP_NEXT) $(ENABLE_CSS_ANIMATIONS_LEVEL_2) $(ENABLE_CSS_BOX_DECORATION_BREAK) $(ENABLE_CSS_COMPOSITING) $(ENABLE_CSS_DEVICE_ADAPTATION) $(ENABLE_CSS_GRID_LAYOUT) $(ENABLE_CSS_IMAGE_ORIENTATION) $(ENABLE_CSS_IMAGE_RESOLUTION) $(ENABLE_CSS_REGIONS) $(ENABLE_CSS_SCROLL_SNAP) $(ENABLE_CSS_SELECTORS_LEVEL4) $(ENABLE_CSS_TRAILING_WORD) $(ENABLE_CSS3_TEXT) $(ENABLE_CURSOR_VISIBILITY) $(ENABLE_CUSTOM_ELEMENTS) $(ENABLE_CUSTOM_SCHEME_HANDLER) $(ENABLE_DASHBOARD_SUPPORT) $(ENABLE_DATA_TRANSFER_ITEMS) $(ENABLE_DATACUE_VALUE) $(ENABLE_DATALIST_ELEMENT) $(ENABLE_DETAILS_ELEMENT) $(ENABLE_DEVICE_ORIENTATION) $(ENABLE_ENCRYPTED_MEDIA) $(ENABLE_ES6_MODULES) $(ENABLE_ES2017_ASYNCFUNCTION_SYNTAX) $(ENABLE_FETCH_API) $(ENABLE_FILTERS_LEVEL_2) $(ENABLE_FONT_LOAD_EVENTS) $(ENABLE_FTL_JIT) $(ENABLE_FULLSCREEN_API) $(ENABLE_GAMEPAD_DEPRECATED) $(ENABLE_GAMEPAD) $(ENABLE_GEOLOCATION) $(ENABLE_ICONDATABASE) $(ENABLE_INDEXED_DATABASE_IN_WORKERS) $(ENABLE_INDEXED_DATABASE) $(ENABLE_INDIE_UI) $(ENABLE_INPUT_TYPE_COLOR_POPOVER) $(ENABLE_INPUT_TYPE_COLOR) $(ENABLE_INPUT_TYPE_DATE) $(ENABLE_INPUT_TYPE_DATETIME_INCOMPLETE) $(ENABLE_INPUT_TYPE_DATETIMELOCAL) $(ENABLE_INPUT_TYPE_MONTH) $(ENABLE_INPUT_TYPE_TIME) $(ENABLE_INPUT_TYPE_WEEK) $(ENABLE_INTL) $(ENABLE_IOS_GESTURE_EVENTS) $(ENABLE_IOS_TOUCH_EVENTS) $(ENABLE_JIT) $(ENABLE_LEGACY_CSS_VENDOR_PREFIXES) $(ENABLE_LEGACY_ENCRYPTED_MEDIA) $(ENABLE_LEGACY_NOTIFICATIONS) $(ENABLE_LEGACY_VENDOR_PREFIXES) $(ENABLE_LETTERPRESS) $(ENABLE_LINK_PREFETCH) $(ENABLE_MAC_GESTURE_EVENTS) $(ENABLE_MATHML) $(ENABLE_MEDIA_CAPTURE) $(ENABLE_MEDIA_CONTROLS_SCRIPT) $(ENABLE_MEDIA_SESSION) $(ENABLE_MEDIA_SOURCE) $(ENABLE_MEDIA_STATISTICS) $(ENABLE_MEDIA_STREAM) $(ENABLE_METER_ELEMENT) $(ENABLE_MHTML) $(ENABLE_MOUSE_CURSOR_SCALE) $(ENABLE_NAVIGATOR_CONTENT_UTILS) $(ENABLE_NAVIGATOR_HWCONCURRENCY) $(ENABLE_NOTIFICATIONS) $(ENABLE_PDFKIT_PLUGIN) $(ENABLE_POINTER_LOCK) $(ENABLE_PROXIMITY_EVENTS) $(ENABLE_PUBLIC_SUFFIX_LIST) $(ENABLE_QUOTA) $(ENABLE_READABLE_STREAM_API) $(ENABLE_REMOTE_INSPECTOR) $(ENABLE_REQUEST_ANIMATION_FRAME) $(ENABLE_REQUEST_AUTOCOMPLETE) $(ENABLE_RESOLUTION_MEDIA_QUERY) $(ENABLE_RESOURCE_USAGE) $(ENABLE_RUBBER_BANDING) $(ENABLE_SERVICE_CONTROLS) $(ENABLE_SPEECH_SYNTHESIS) $(ENABLE_SUBTLE_CRYPTO) $(ENABLE_SVG_FONTS) $(ENABLE_TELEPHONE_NUMBER_DETECTION) $(ENABLE_TEXT_AUTOSIZING) $(ENABLE_TOUCH_EVENTS) $(ENABLE_TOUCH_ICON_LOADING) $(ENABLE_USERSELECT_ALL) $(ENABLE_VIDEO_PRESENTATION_MODE) $(ENABLE_VIDEO_TRACK) $(ENABLE_VIDEO) $(ENABLE_VIEW_MODE_CSS_MEDIA) $(ENABLE_WEB_ANIMATIONS) $(ENABLE_WEB_AUDIO) $(ENABLE_WEB_REPLAY) $(ENABLE_WEB_RTC) $(ENABLE_WEB_SOCKETS) $(ENABLE_WEB_TIMING) $(ENABLE_WEBASSEMBLY) $(ENABLE_WEBGL) $(ENABLE_WEBGL2) $(ENABLE_WIRELESS_PLAYBACK_TARGET) $(ENABLE_WRITABLE_STREAM_API) $(ENABLE_XSLT) $(ENABLE_VARIATION_FONTS);
+FEATURE_DEFINES = $(ENABLE_3D_TRANSFORMS) $(ENABLE_ACCELERATED_2D_CANVAS) $(ENABLE_ACCELERATED_OVERFLOW_SCROLLING) $(ENABLE_APPLE_PAY) $(ENABLE_ATTACHMENT_ELEMENT) $(ENABLE_AVF_CAPTIONS) $(ENABLE_CACHE_PARTITIONING) $(ENABLE_CANVAS_PATH) $(ENABLE_CANVAS_PROXY) $(ENABLE_CHANNEL_MESSAGING) $(ENABLE_CONTENT_FILTERING) $(ENABLE_CSP_NEXT) $(ENABLE_CSS_ANIMATIONS_LEVEL_2) $(ENABLE_CSS_BOX_DECORATION_BREAK) $(ENABLE_CSS_COMPOSITING) $(ENABLE_CSS_DEVICE_ADAPTATION) $(ENABLE_CSS_GRID_LAYOUT) $(ENABLE_CSS_IMAGE_ORIENTATION) $(ENABLE_CSS_IMAGE_RESOLUTION) $(ENABLE_CSS_REGIONS) $(ENABLE_CSS_SCROLL_SNAP) $(ENABLE_CSS_SELECTORS_LEVEL4) $(ENABLE_CSS_TRAILING_WORD) $(ENABLE_CSS3_TEXT) $(ENABLE_CURSOR_VISIBILITY) $(ENABLE_CUSTOM_ELEMENTS) $(ENABLE_CUSTOM_SCHEME_HANDLER) $(ENABLE_DASHBOARD_SUPPORT) $(ENABLE_DATA_TRANSFER_ITEMS) $(ENABLE_DATACUE_VALUE) $(ENABLE_DATALIST_ELEMENT) $(ENABLE_DETAILS_ELEMENT) $(ENABLE_DEVICE_ORIENTATION) $(ENABLE_ENCRYPTED_MEDIA) $(ENABLE_ES2017_ASYNCFUNCTION_SYNTAX) $(ENABLE_ES6_MODULES) $(ENABLE_FETCH_API) $(ENABLE_FILTERS_LEVEL_2) $(ENABLE_FONT_LOAD_EVENTS) $(ENABLE_FTL_JIT) $(ENABLE_FULLSCREEN_API) $(ENABLE_GAMEPAD_DEPRECATED) $(ENABLE_GAMEPAD) $(ENABLE_GEOLOCATION) $(ENABLE_ICONDATABASE) $(ENABLE_INDEXED_DATABASE_IN_WORKERS) $(ENABLE_INDEXED_DATABASE) $(ENABLE_INDIE_UI) $(ENABLE_INPUT_TYPE_COLOR_POPOVER) $(ENABLE_INPUT_TYPE_COLOR) $(ENABLE_INPUT_TYPE_DATE) $(ENABLE_INPUT_TYPE_DATETIME_INCOMPLETE) $(ENABLE_INPUT_TYPE_DATETIMELOCAL) $(ENABLE_INPUT_TYPE_MONTH) $(ENABLE_INPUT_TYPE_TIME) $(ENABLE_INPUT_TYPE_WEEK) $(ENABLE_INTERSECTION_OBSERVER) $(ENABLE_INTL) $(ENABLE_IOS_GESTURE_EVENTS) $(ENABLE_IOS_TOUCH_EVENTS) $(ENABLE_JIT) $(ENABLE_LEGACY_CSS_VENDOR_PREFIXES) $(ENABLE_LEGACY_ENCRYPTED_MEDIA) $(ENABLE_LEGACY_NOTIFICATIONS) $(ENABLE_LEGACY_VENDOR_PREFIXES) $(ENABLE_LETTERPRESS) $(ENABLE_LINK_PREFETCH) $(ENABLE_MAC_GESTURE_EVENTS) $(ENABLE_MATHML) $(ENABLE_MEDIA_CAPTURE) $(ENABLE_MEDIA_CONTROLS_SCRIPT) $(ENABLE_MEDIA_SESSION) $(ENABLE_MEDIA_SOURCE) $(ENABLE_MEDIA_STATISTICS) $(ENABLE_MEDIA_STREAM) $(ENABLE_METER_ELEMENT) $(ENABLE_MHTML) $(ENABLE_MOUSE_CURSOR_SCALE) $(ENABLE_NAVIGATOR_CONTENT_UTILS) $(ENABLE_NAVIGATOR_HWCONCURRENCY) $(ENABLE_NOTIFICATIONS) $(ENABLE_PDFKIT_PLUGIN) $(ENABLE_POINTER_LOCK) $(ENABLE_PROXIMITY_EVENTS) $(ENABLE_PUBLIC_SUFFIX_LIST) $(ENABLE_QUOTA) $(ENABLE_READABLE_STREAM_API) $(ENABLE_REMOTE_INSPECTOR) $(ENABLE_REQUEST_ANIMATION_FRAME) $(ENABLE_REQUEST_AUTOCOMPLETE) $(ENABLE_RESOLUTION_MEDIA_QUERY) $(ENABLE_RESOURCE_USAGE) $(ENABLE_RUBBER_BANDING) $(ENABLE_SERVICE_CONTROLS) $(ENABLE_SPEECH_SYNTHESIS) $(ENABLE_SUBTLE_CRYPTO) $(ENABLE_SVG_FONTS) $(ENABLE_TELEPHONE_NUMBER_DETECTION) $(ENABLE_TEXT_AUTOSIZING) $(ENABLE_TOUCH_EVENTS) $(ENABLE_TOUCH_ICON_LOADING) $(ENABLE_USERSELECT_ALL) $(ENABLE_VARIATION_FONTS) $(ENABLE_VIDEO_PRESENTATION_MODE) $(ENABLE_VIDEO_TRACK) $(ENABLE_VIDEO) $(ENABLE_VIEW_MODE_CSS_MEDIA) $(ENABLE_WEB_ANIMATIONS) $(ENABLE_WEB_AUDIO) $(ENABLE_WEB_REPLAY) $(ENABLE_WEB_RTC) $(ENABLE_WEB_SOCKETS) $(ENABLE_WEB_TIMING) $(ENABLE_WEBASSEMBLY) $(ENABLE_WEBGL) $(ENABLE_WEBGL2) $(ENABLE_WIRELESS_PLAYBACK_TARGET) $(ENABLE_WRITABLE_STREAM_API) $(ENABLE_XSLT);
index 168ba9f..01a144b 100644 (file)
@@ -584,6 +584,9 @@ set(WebCore_NON_SVG_IDL_FILES
     page/EventSource.idl
     page/GlobalCrypto.idl
     page/History.idl
+    page/IntersectionObserver.idl
+    page/IntersectionObserverCallback.idl
+    page/IntersectionObserverEntry.idl
     page/Location.idl
     page/Navigator.idl
     page/NavigatorConcurrentHardware.idl
@@ -2039,6 +2042,8 @@ set(WebCore_SOURCES
     page/FrameTree.cpp
     page/FrameView.cpp
     page/History.cpp
+    page/IntersectionObserver.cpp
+    page/IntersectionObserverEntry.cpp
     page/Location.cpp
     page/MainFrame.cpp
     page/MouseEventWithHitTestResults.cpp
index ff48d7e..8363ad6 100644 (file)
@@ -1,3 +1,61 @@
+2016-10-31  Simon Fraser  <simon.fraser@apple.com>
+
+        Implement IntersectionObserver
+        https://bugs.webkit.org/show_bug.cgi?id=159475
+
+        Reviewed by Ryosuke Niwa.
+        
+        Add bindings support for Intersection Observer
+        <https://wicg.github.io/IntersectionObserver/>
+        
+        Code is wrapped in ENABLE(INTERSECTION_OBSERVER), and controlled by a runtime
+        Setting (off by default for now).
+        
+        A minor bindings change was required to fix the callback code.
+        
+        IntersectionObserver is just a shell for now.
+
+        Tests: intersection-observer/intersection-observer-entry-interface.html
+               intersection-observer/intersection-observer-interface.html
+
+        * CMakeLists.txt:
+        * Configurations/FeatureDefines.xcconfig:
+        * DerivedSources.make:
+        * WebCore.xcodeproj/project.pbxproj:
+        * bindings/scripts/CodeGeneratorJS.pm:
+        (ShouldPassWrapperByReference):
+        * bindings/scripts/test/JS/JSTestObj.cpp:
+        (WebCore::JSTestObjConstructor::construct):
+        * bindings/scripts/test/JS/JSTestTypedefs.cpp:
+        (WebCore::JSTestTypedefsConstructor::construct):
+        * page/IntersectionObserver.cpp: Added.
+        (WebCore::IntersectionObserver::IntersectionObserver):
+        (WebCore::IntersectionObserver::observe):
+        (WebCore::IntersectionObserver::unobserve):
+        (WebCore::IntersectionObserver::disconnect):
+        (WebCore::IntersectionObserver::takeRecords):
+        * page/IntersectionObserver.h: Added.
+        (WebCore::IntersectionObserver::create):
+        (WebCore::IntersectionObserver::root):
+        (WebCore::IntersectionObserver::rootMargin):
+        (WebCore::IntersectionObserver::thresholds):
+        * page/IntersectionObserver.idl: Added.
+        * page/IntersectionObserverCallback.h: Added.
+        (WebCore::IntersectionObserverCallback::~IntersectionObserverCallback):
+        * page/IntersectionObserverCallback.idl: Added.
+        * page/IntersectionObserverEntry.cpp: Added.
+        (WebCore::IntersectionObserverEntry::IntersectionObserverEntry):
+        * page/IntersectionObserverEntry.h: Added.
+        (WebCore::IntersectionObserverEntry::create):
+        (WebCore::IntersectionObserverEntry::time):
+        (WebCore::IntersectionObserverEntry::rootBounds):
+        (WebCore::IntersectionObserverEntry::boundingClientRect):
+        (WebCore::IntersectionObserverEntry::intersectionRect):
+        (WebCore::IntersectionObserverEntry::target):
+        (WebCore::IntersectionObserverEntry::intersectionRatio):
+        * page/IntersectionObserverEntry.idl: Added.
+        * page/Settings.in:
+
 2016-10-31  Dave Hyatt  <hyatt@apple.com>
 
         [CSS Parser] Support the shadow DOM
index 9dd1dc0..b8fa3d0 100644 (file)
@@ -90,6 +90,7 @@ ENABLE_GAMEPAD[sdk=watch*] = ;
 ENABLE_GAMEPAD_DEPRECATED = ;
 ENABLE_GEOLOCATION = ENABLE_GEOLOCATION;
 ENABLE_ICONDATABASE[sdk=macosx*] = ENABLE_ICONDATABASE;
+ENABLE_INTERSECTION_OBSERVER = ENABLE_INTERSECTION_OBSERVER;
 ENABLE_SERVICE_CONTROLS[sdk=macosx*] = ENABLE_SERVICE_CONTROLS;
 ENABLE_INDEXED_DATABASE = ENABLE_INDEXED_DATABASE;
 ENABLE_INDEXED_DATABASE_IN_WORKERS = ENABLE_INDEXED_DATABASE_IN_WORKERS;
@@ -219,4 +220,4 @@ ENABLE_VARIATION_FONTS_IF_NOT_ = $(ENABLE_VARIATION_FONTS_IF_NOT_NO);
 ENABLE_VARIATION_FONTS_IF_NOT_NO = ENABLE_VARIATION_FONTS;
 ENABLE_VARIATION_FONTS_IF_NOT_YES = ;
 
-FEATURE_DEFINES = $(ENABLE_3D_TRANSFORMS) $(ENABLE_ACCELERATED_2D_CANVAS) $(ENABLE_ACCELERATED_OVERFLOW_SCROLLING) $(ENABLE_APPLE_PAY) $(ENABLE_ATTACHMENT_ELEMENT) $(ENABLE_AVF_CAPTIONS) $(ENABLE_CACHE_PARTITIONING) $(ENABLE_CANVAS_PATH) $(ENABLE_CANVAS_PROXY) $(ENABLE_CHANNEL_MESSAGING) $(ENABLE_CONTENT_FILTERING) $(ENABLE_CSP_NEXT) $(ENABLE_CSS_ANIMATIONS_LEVEL_2) $(ENABLE_CSS_BOX_DECORATION_BREAK) $(ENABLE_CSS_COMPOSITING) $(ENABLE_CSS_DEVICE_ADAPTATION) $(ENABLE_CSS_GRID_LAYOUT) $(ENABLE_CSS_IMAGE_ORIENTATION) $(ENABLE_CSS_IMAGE_RESOLUTION) $(ENABLE_CSS_REGIONS) $(ENABLE_CSS_SCROLL_SNAP) $(ENABLE_CSS_SELECTORS_LEVEL4) $(ENABLE_CSS_TRAILING_WORD) $(ENABLE_CSS3_TEXT) $(ENABLE_CURSOR_VISIBILITY) $(ENABLE_CUSTOM_ELEMENTS) $(ENABLE_CUSTOM_SCHEME_HANDLER) $(ENABLE_DASHBOARD_SUPPORT) $(ENABLE_DATA_TRANSFER_ITEMS) $(ENABLE_DATACUE_VALUE) $(ENABLE_DATALIST_ELEMENT) $(ENABLE_DETAILS_ELEMENT) $(ENABLE_DEVICE_ORIENTATION) $(ENABLE_ENCRYPTED_MEDIA) $(ENABLE_ES6_MODULES) $(ENABLE_ES2017_ASYNCFUNCTION_SYNTAX) $(ENABLE_FETCH_API) $(ENABLE_FILTERS_LEVEL_2) $(ENABLE_FONT_LOAD_EVENTS) $(ENABLE_FTL_JIT) $(ENABLE_FULLSCREEN_API) $(ENABLE_GAMEPAD_DEPRECATED) $(ENABLE_GAMEPAD) $(ENABLE_GEOLOCATION) $(ENABLE_ICONDATABASE) $(ENABLE_INDEXED_DATABASE_IN_WORKERS) $(ENABLE_INDEXED_DATABASE) $(ENABLE_INDIE_UI) $(ENABLE_INPUT_TYPE_COLOR_POPOVER) $(ENABLE_INPUT_TYPE_COLOR) $(ENABLE_INPUT_TYPE_DATE) $(ENABLE_INPUT_TYPE_DATETIME_INCOMPLETE) $(ENABLE_INPUT_TYPE_DATETIMELOCAL) $(ENABLE_INPUT_TYPE_MONTH) $(ENABLE_INPUT_TYPE_TIME) $(ENABLE_INPUT_TYPE_WEEK) $(ENABLE_INTL) $(ENABLE_IOS_GESTURE_EVENTS) $(ENABLE_IOS_TOUCH_EVENTS) $(ENABLE_JIT) $(ENABLE_LEGACY_CSS_VENDOR_PREFIXES) $(ENABLE_LEGACY_ENCRYPTED_MEDIA) $(ENABLE_LEGACY_NOTIFICATIONS) $(ENABLE_LEGACY_VENDOR_PREFIXES) $(ENABLE_LETTERPRESS) $(ENABLE_LINK_PREFETCH) $(ENABLE_MAC_GESTURE_EVENTS) $(ENABLE_MATHML) $(ENABLE_MEDIA_CAPTURE) $(ENABLE_MEDIA_CONTROLS_SCRIPT) $(ENABLE_MEDIA_SESSION) $(ENABLE_MEDIA_SOURCE) $(ENABLE_MEDIA_STATISTICS) $(ENABLE_MEDIA_STREAM) $(ENABLE_METER_ELEMENT) $(ENABLE_MHTML) $(ENABLE_MOUSE_CURSOR_SCALE) $(ENABLE_NAVIGATOR_CONTENT_UTILS) $(ENABLE_NAVIGATOR_HWCONCURRENCY) $(ENABLE_NOTIFICATIONS) $(ENABLE_PDFKIT_PLUGIN) $(ENABLE_POINTER_LOCK) $(ENABLE_PROXIMITY_EVENTS) $(ENABLE_PUBLIC_SUFFIX_LIST) $(ENABLE_QUOTA) $(ENABLE_READABLE_STREAM_API) $(ENABLE_REMOTE_INSPECTOR) $(ENABLE_REQUEST_ANIMATION_FRAME) $(ENABLE_REQUEST_AUTOCOMPLETE) $(ENABLE_RESOLUTION_MEDIA_QUERY) $(ENABLE_RESOURCE_USAGE) $(ENABLE_RUBBER_BANDING) $(ENABLE_SERVICE_CONTROLS) $(ENABLE_SPEECH_SYNTHESIS) $(ENABLE_SUBTLE_CRYPTO) $(ENABLE_SVG_FONTS) $(ENABLE_TELEPHONE_NUMBER_DETECTION) $(ENABLE_TEXT_AUTOSIZING) $(ENABLE_TOUCH_EVENTS) $(ENABLE_TOUCH_ICON_LOADING) $(ENABLE_USERSELECT_ALL) $(ENABLE_VIDEO_PRESENTATION_MODE) $(ENABLE_VIDEO_TRACK) $(ENABLE_VIDEO) $(ENABLE_VIEW_MODE_CSS_MEDIA) $(ENABLE_WEB_ANIMATIONS) $(ENABLE_WEB_AUDIO) $(ENABLE_WEB_REPLAY) $(ENABLE_WEB_RTC) $(ENABLE_WEB_SOCKETS) $(ENABLE_WEB_TIMING) $(ENABLE_WEBASSEMBLY) $(ENABLE_WEBGL) $(ENABLE_WEBGL2) $(ENABLE_WIRELESS_PLAYBACK_TARGET) $(ENABLE_WRITABLE_STREAM_API) $(ENABLE_XSLT) $(ENABLE_VARIATION_FONTS);
+FEATURE_DEFINES = $(ENABLE_3D_TRANSFORMS) $(ENABLE_ACCELERATED_2D_CANVAS) $(ENABLE_ACCELERATED_OVERFLOW_SCROLLING) $(ENABLE_APPLE_PAY) $(ENABLE_ATTACHMENT_ELEMENT) $(ENABLE_AVF_CAPTIONS) $(ENABLE_CACHE_PARTITIONING) $(ENABLE_CANVAS_PATH) $(ENABLE_CANVAS_PROXY) $(ENABLE_CHANNEL_MESSAGING) $(ENABLE_CONTENT_FILTERING) $(ENABLE_CSP_NEXT) $(ENABLE_CSS_ANIMATIONS_LEVEL_2) $(ENABLE_CSS_BOX_DECORATION_BREAK) $(ENABLE_CSS_COMPOSITING) $(ENABLE_CSS_DEVICE_ADAPTATION) $(ENABLE_CSS_GRID_LAYOUT) $(ENABLE_CSS_IMAGE_ORIENTATION) $(ENABLE_CSS_IMAGE_RESOLUTION) $(ENABLE_CSS_REGIONS) $(ENABLE_CSS_SCROLL_SNAP) $(ENABLE_CSS_SELECTORS_LEVEL4) $(ENABLE_CSS_TRAILING_WORD) $(ENABLE_CSS3_TEXT) $(ENABLE_CURSOR_VISIBILITY) $(ENABLE_CUSTOM_ELEMENTS) $(ENABLE_CUSTOM_SCHEME_HANDLER) $(ENABLE_DASHBOARD_SUPPORT) $(ENABLE_DATA_TRANSFER_ITEMS) $(ENABLE_DATACUE_VALUE) $(ENABLE_DATALIST_ELEMENT) $(ENABLE_DETAILS_ELEMENT) $(ENABLE_DEVICE_ORIENTATION) $(ENABLE_ENCRYPTED_MEDIA) $(ENABLE_ES2017_ASYNCFUNCTION_SYNTAX) $(ENABLE_ES6_MODULES) $(ENABLE_FETCH_API) $(ENABLE_FILTERS_LEVEL_2) $(ENABLE_FONT_LOAD_EVENTS) $(ENABLE_FTL_JIT) $(ENABLE_FULLSCREEN_API) $(ENABLE_GAMEPAD_DEPRECATED) $(ENABLE_GAMEPAD) $(ENABLE_GEOLOCATION) $(ENABLE_ICONDATABASE) $(ENABLE_INDEXED_DATABASE_IN_WORKERS) $(ENABLE_INDEXED_DATABASE) $(ENABLE_INDIE_UI) $(ENABLE_INPUT_TYPE_COLOR_POPOVER) $(ENABLE_INPUT_TYPE_COLOR) $(ENABLE_INPUT_TYPE_DATE) $(ENABLE_INPUT_TYPE_DATETIME_INCOMPLETE) $(ENABLE_INPUT_TYPE_DATETIMELOCAL) $(ENABLE_INPUT_TYPE_MONTH) $(ENABLE_INPUT_TYPE_TIME) $(ENABLE_INPUT_TYPE_WEEK) $(ENABLE_INTERSECTION_OBSERVER) $(ENABLE_INTL) $(ENABLE_IOS_GESTURE_EVENTS) $(ENABLE_IOS_TOUCH_EVENTS) $(ENABLE_JIT) $(ENABLE_LEGACY_CSS_VENDOR_PREFIXES) $(ENABLE_LEGACY_ENCRYPTED_MEDIA) $(ENABLE_LEGACY_NOTIFICATIONS) $(ENABLE_LEGACY_VENDOR_PREFIXES) $(ENABLE_LETTERPRESS) $(ENABLE_LINK_PREFETCH) $(ENABLE_MAC_GESTURE_EVENTS) $(ENABLE_MATHML) $(ENABLE_MEDIA_CAPTURE) $(ENABLE_MEDIA_CONTROLS_SCRIPT) $(ENABLE_MEDIA_SESSION) $(ENABLE_MEDIA_SOURCE) $(ENABLE_MEDIA_STATISTICS) $(ENABLE_MEDIA_STREAM) $(ENABLE_METER_ELEMENT) $(ENABLE_MHTML) $(ENABLE_MOUSE_CURSOR_SCALE) $(ENABLE_NAVIGATOR_CONTENT_UTILS) $(ENABLE_NAVIGATOR_HWCONCURRENCY) $(ENABLE_NOTIFICATIONS) $(ENABLE_PDFKIT_PLUGIN) $(ENABLE_POINTER_LOCK) $(ENABLE_PROXIMITY_EVENTS) $(ENABLE_PUBLIC_SUFFIX_LIST) $(ENABLE_QUOTA) $(ENABLE_READABLE_STREAM_API) $(ENABLE_REMOTE_INSPECTOR) $(ENABLE_REQUEST_ANIMATION_FRAME) $(ENABLE_REQUEST_AUTOCOMPLETE) $(ENABLE_RESOLUTION_MEDIA_QUERY) $(ENABLE_RESOURCE_USAGE) $(ENABLE_RUBBER_BANDING) $(ENABLE_SERVICE_CONTROLS) $(ENABLE_SPEECH_SYNTHESIS) $(ENABLE_SUBTLE_CRYPTO) $(ENABLE_SVG_FONTS) $(ENABLE_TELEPHONE_NUMBER_DETECTION) $(ENABLE_TEXT_AUTOSIZING) $(ENABLE_TOUCH_EVENTS) $(ENABLE_TOUCH_ICON_LOADING) $(ENABLE_USERSELECT_ALL) $(ENABLE_VARIATION_FONTS) $(ENABLE_VIDEO_PRESENTATION_MODE) $(ENABLE_VIDEO_TRACK) $(ENABLE_VIDEO) $(ENABLE_VIEW_MODE_CSS_MEDIA) $(ENABLE_WEB_ANIMATIONS) $(ENABLE_WEB_AUDIO) $(ENABLE_WEB_REPLAY) $(ENABLE_WEB_RTC) $(ENABLE_WEB_SOCKETS) $(ENABLE_WEB_TIMING) $(ENABLE_WEBASSEMBLY) $(ENABLE_WEBGL) $(ENABLE_WEBGL2) $(ENABLE_WIRELESS_PLAYBACK_TARGET) $(ENABLE_WRITABLE_STREAM_API) $(ENABLE_XSLT);
index a236245..50a8242 100644 (file)
@@ -541,6 +541,9 @@ JS_BINDING_IDLS = \
     $(WebCore)/page/EventSource.idl \
     $(WebCore)/page/GlobalCrypto.idl \
     $(WebCore)/page/History.idl \
+    $(WebCore)/page/IntersectionObserver.idl \
+    $(WebCore)/page/IntersectionObserverCallback.idl \
+    $(WebCore)/page/IntersectionObserverEntry.idl \
     $(WebCore)/page/Location.idl \
     $(WebCore)/page/Navigator.idl \
     $(WebCore)/page/NavigatorConcurrentHardware.idl \
index 346cf39..1c03891 100644 (file)
                0F4710BE1DB56BE8002DCEC3 /* JSDOMRectInit.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F4710B81DB56BE8002DCEC3 /* JSDOMRectInit.h */; };
                0F4710BF1DB56BE8002DCEC3 /* JSDOMRectReadOnly.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F4710B91DB56BE8002DCEC3 /* JSDOMRectReadOnly.cpp */; };
                0F4710C01DB56BE8002DCEC3 /* JSDOMRectReadOnly.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F4710BA1DB56BE8002DCEC3 /* JSDOMRectReadOnly.h */; };
+               0F4710DB1DB6FE22002DCEC3 /* IntersectionObserver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F4710D51DB6FE22002DCEC3 /* IntersectionObserver.cpp */; };
+               0F4710DC1DB6FE22002DCEC3 /* IntersectionObserver.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F4710D61DB6FE22002DCEC3 /* IntersectionObserver.h */; };
+               0F4710DE1DB6FE22002DCEC3 /* IntersectionObserverEntry.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F4710D81DB6FE22002DCEC3 /* IntersectionObserverEntry.cpp */; };
+               0F4710DF1DB6FE22002DCEC3 /* IntersectionObserverEntry.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F4710D91DB6FE22002DCEC3 /* IntersectionObserverEntry.h */; };
+               0F4710E51DB700C7002DCEC3 /* JSIntersectionObserver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F4710E11DB700C7002DCEC3 /* JSIntersectionObserver.cpp */; };
+               0F4710E61DB700C7002DCEC3 /* JSIntersectionObserver.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F4710E21DB700C7002DCEC3 /* JSIntersectionObserver.h */; };
+               0F4710E71DB700C7002DCEC3 /* JSIntersectionObserverEntry.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F4710E31DB700C7002DCEC3 /* JSIntersectionObserverEntry.cpp */; };
+               0F4710E81DB700C7002DCEC3 /* JSIntersectionObserverEntry.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F4710E41DB700C7002DCEC3 /* JSIntersectionObserverEntry.h */; };
                0F49669D1DB408C100A274BB /* DOMPoint.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F4966991DB408C100A274BB /* DOMPoint.h */; };
                0F49669F1DB408C100A274BB /* DOMPointReadOnly.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F49669B1DB408C100A274BB /* DOMPointReadOnly.h */; };
                0F4966A31DB4091000A274BB /* DOMPointInit.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F4966A21DB4091000A274BB /* DOMPointInit.h */; };
                0F7D07331884C56C00B4AF86 /* PlatformTextTrack.h in Headers */ = {isa = PBXBuildFile; fileRef = 072847E216EBC5B00043CFA4 /* PlatformTextTrack.h */; settings = {ATTRIBUTES = (Private, ); }; };
                0F87166F1C869D83004FF0DE /* LengthPoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F87166D1C869D83004FF0DE /* LengthPoint.cpp */; };
                0F8716701C869D83004FF0DE /* LengthPoint.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F87166E1C869D83004FF0DE /* LengthPoint.h */; settings = {ATTRIBUTES = (Private, ); }; };
+               0F8B45721DC3FBA300443C3F /* IntersectionObserverCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F8B45711DC3FBA300443C3F /* IntersectionObserverCallback.h */; };
+               0F8B45751DC41DBA00443C3F /* JSIntersectionObserverCallback.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F8B45731DC41DBA00443C3F /* JSIntersectionObserverCallback.cpp */; };
+               0F8B45761DC41DBA00443C3F /* JSIntersectionObserverCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F8B45741DC41DBA00443C3F /* JSIntersectionObserverCallback.h */; };
                0F97A658155DA81E00FADD4C /* DisplayRefreshMonitorIOS.mm in Sources */ = {isa = PBXBuildFile; fileRef = 0F97A657155DA81E00FADD4C /* DisplayRefreshMonitorIOS.mm */; };
                0FA24D79162DF91900A3F4C0 /* GraphicsLayerUpdater.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FA24D77162DF91900A3F4C0 /* GraphicsLayerUpdater.cpp */; };
                0FA24D7A162DF91900A3F4C0 /* GraphicsLayerUpdater.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FA24D78162DF91900A3F4C0 /* GraphicsLayerUpdater.h */; settings = {ATTRIBUTES = (Private, ); }; };
                0F4710B81DB56BE8002DCEC3 /* JSDOMRectInit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSDOMRectInit.h; sourceTree = "<group>"; };
                0F4710B91DB56BE8002DCEC3 /* JSDOMRectReadOnly.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSDOMRectReadOnly.cpp; sourceTree = "<group>"; };
                0F4710BA1DB56BE8002DCEC3 /* JSDOMRectReadOnly.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSDOMRectReadOnly.h; sourceTree = "<group>"; };
+               0F4710D51DB6FE22002DCEC3 /* IntersectionObserver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = IntersectionObserver.cpp; sourceTree = "<group>"; };
+               0F4710D61DB6FE22002DCEC3 /* IntersectionObserver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IntersectionObserver.h; sourceTree = "<group>"; };
+               0F4710D71DB6FE22002DCEC3 /* IntersectionObserver.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = IntersectionObserver.idl; sourceTree = "<group>"; };
+               0F4710D81DB6FE22002DCEC3 /* IntersectionObserverEntry.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = IntersectionObserverEntry.cpp; sourceTree = "<group>"; };
+               0F4710D91DB6FE22002DCEC3 /* IntersectionObserverEntry.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IntersectionObserverEntry.h; sourceTree = "<group>"; };
+               0F4710DA1DB6FE22002DCEC3 /* IntersectionObserverEntry.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = IntersectionObserverEntry.idl; sourceTree = "<group>"; };
+               0F4710E11DB700C7002DCEC3 /* JSIntersectionObserver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSIntersectionObserver.cpp; sourceTree = "<group>"; };
+               0F4710E21DB700C7002DCEC3 /* JSIntersectionObserver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSIntersectionObserver.h; sourceTree = "<group>"; };
+               0F4710E31DB700C7002DCEC3 /* JSIntersectionObserverEntry.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSIntersectionObserverEntry.cpp; sourceTree = "<group>"; };
+               0F4710E41DB700C7002DCEC3 /* JSIntersectionObserverEntry.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSIntersectionObserverEntry.h; sourceTree = "<group>"; };
                0F4966991DB408C100A274BB /* DOMPoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMPoint.h; sourceTree = "<group>"; };
                0F49669A1DB408C100A274BB /* DOMPoint.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = DOMPoint.idl; sourceTree = "<group>"; };
                0F49669B1DB408C100A274BB /* DOMPointReadOnly.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMPointReadOnly.h; sourceTree = "<group>"; };
                0F6A12BC1A00923700C6DE72 /* DebugPageOverlays.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DebugPageOverlays.h; sourceTree = "<group>"; };
                0F87166D1C869D83004FF0DE /* LengthPoint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = LengthPoint.cpp; sourceTree = "<group>"; };
                0F87166E1C869D83004FF0DE /* LengthPoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LengthPoint.h; sourceTree = "<group>"; };
+               0F8B456F1DC3FB1000443C3F /* IntersectionObserverCallback.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = IntersectionObserverCallback.idl; sourceTree = "<group>"; };
+               0F8B45711DC3FBA300443C3F /* IntersectionObserverCallback.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IntersectionObserverCallback.h; sourceTree = "<group>"; };
+               0F8B45731DC41DBA00443C3F /* JSIntersectionObserverCallback.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = JSIntersectionObserverCallback.cpp; path = JSIntersectionObserverCallback.cpp; sourceTree = "<group>"; };
+               0F8B45741DC41DBA00443C3F /* JSIntersectionObserverCallback.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = JSIntersectionObserverCallback.h; path = JSIntersectionObserverCallback.h; sourceTree = "<group>"; };
                0F97A657155DA81E00FADD4C /* DisplayRefreshMonitorIOS.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = DisplayRefreshMonitorIOS.mm; sourceTree = "<group>"; };
                0FA24D77162DF91900A3F4C0 /* GraphicsLayerUpdater.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GraphicsLayerUpdater.cpp; sourceTree = "<group>"; };
                0FA24D78162DF91900A3F4C0 /* GraphicsLayerUpdater.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GraphicsLayerUpdater.h; sourceTree = "<group>"; };
                71E2183917359FB8006E6E4D /* PlugInsResourcesData.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; path = PlugInsResourcesData.cpp; sourceTree = "<group>"; };
                71E623CE151F72A60036E2F4 /* SVGAnimatedIntegerOptionalInteger.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SVGAnimatedIntegerOptionalInteger.cpp; sourceTree = "<group>"; };
                71E623CF151F72A60036E2F4 /* SVGAnimatedIntegerOptionalInteger.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGAnimatedIntegerOptionalInteger.h; sourceTree = "<group>"; };
-               71E6B2CF1DBE5D9A00C0A13E /* js-files */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "js-files"; sourceTree = "<group>"; };
                71FB967A1383D64600AC8A4C /* SVGAnimatedEnumerationPropertyTearOff.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGAnimatedEnumerationPropertyTearOff.h; sourceTree = "<group>"; };
                724ED3291A3A7E5400F5F13C /* EXTBlendMinMax.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = EXTBlendMinMax.cpp; sourceTree = "<group>"; };
                724ED32A1A3A7E5400F5F13C /* EXTBlendMinMax.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EXTBlendMinMax.h; sourceTree = "<group>"; };
                                5E2C43761BCF9A0B0001E2BC /* RTCPeerConnectionBuiltins.h */,
                                5E2C43781BCF9A0B0001E2BC /* RTCPeerConnectionInternalsBuiltins.cpp */,
                                5E2C43791BCF9A0B0001E2BC /* RTCPeerConnectionInternalsBuiltins.h */,
+                               CDAB6D3017C9259500C60B35 /* SDPProcessorScriptsData.cpp */,
                                43B85ED218CBEC5200E31AF4 /* SelectorPseudoClassAndCompatibilityElementMap.cpp */,
                                43B85ED318CBEC5200E31AF4 /* SelectorPseudoClassAndCompatibilityElementMap.gperf */,
                                26AA0F9D18D2A18B00419381 /* SelectorPseudoElementTypeMap.cpp */,
                                656581E909D1508D000E61D7 /* SVGNames.h */,
                                CDAB6D2F17C9259500C60B34 /* UserAgentScripts.h */,
                                CDAB6D3017C9259500C60B34 /* UserAgentScriptsData.cpp */,
-                               CDAB6D3017C9259500C60B35 /* SDPProcessorScriptsData.cpp */,
                                656581AE09D14EE6000E61D7 /* UserAgentStyleSheets.h */,
                                656581AF09D14EE6000E61D7 /* UserAgentStyleSheetsData.cpp */,
                                1A1414B313A0F0500019996C /* WebKitFontFamilyNames.cpp */,
                                BC94D1500C275C8B006BC617 /* History.cpp */,
                                BC94D1510C275C8B006BC617 /* History.h */,
                                BC94D1520C275C8B006BC617 /* History.idl */,
+                               0F4710D61DB6FE22002DCEC3 /* IntersectionObserver.h */,
+                               0F4710D51DB6FE22002DCEC3 /* IntersectionObserver.cpp */,
+                               0F4710D71DB6FE22002DCEC3 /* IntersectionObserver.idl */,
+                               0F8B45711DC3FBA300443C3F /* IntersectionObserverCallback.h */,
+                               0F8B456F1DC3FB1000443C3F /* IntersectionObserverCallback.idl */,
+                               0F4710D81DB6FE22002DCEC3 /* IntersectionObserverEntry.cpp */,
+                               0F4710D91DB6FE22002DCEC3 /* IntersectionObserverEntry.h */,
+                               0F4710DA1DB6FE22002DCEC3 /* IntersectionObserverEntry.idl */,
                                E4916FF6195DF6A0005AB349 /* LayerFlushThrottleState.h */,
                                931D72F515FE695300C4C07E /* LayoutMilestones.h */,
                                BCE1C41A0D982980003B02F2 /* Location.cpp */,
                71D6AA391DA4EAF700B23969 /* modern-media-controls */ = {
                        isa = PBXGroup;
                        children = (
-                               71E6B2CF1DBE5D9A00C0A13E /* js-files */,
-                               71D02D901DB55C4E00DD5CF5 /* main.js */,
                                716FA0D71DB26591007323CC /* controls */,
                                71D6AA6F1DA4EAF700B23969 /* images */,
                                71D02D911DB55C4E00DD5CF5 /* media */,
+                               71D02D901DB55C4E00DD5CF5 /* main.js */,
                        );
                        path = "modern-media-controls";
                        sourceTree = "<group>";
                                8482B7501198CB6B00BFB005 /* JSHashChangeEvent.h */,
                                A86629CE09DA2B47009633A6 /* JSInputEvent.cpp */,
                                A86629CD09DA2B47009633A6 /* JSInputEvent.h */,
-                               A86629CE09DA2B47009633A7 /* JSStaticRange.cpp */,
-                               A86629CD09DA2B47009633A7 /* JSStaticRange.h */,
                                A86629CE09DA2B47009633A5 /* JSKeyboardEvent.cpp */,
                                A86629CD09DA2B47009633A5 /* JSKeyboardEvent.h */,
                                E107400B0E77BDC00033AF24 /* JSMessageChannel.cpp */,
                                5189F01C10B37BD900F3C739 /* JSPopStateEvent.h */,
                                CED06ACE1C77754800FDFAF1 /* JSSecurityPolicyViolationEvent.cpp */,
                                CED06ACF1C77754800FDFAF1 /* JSSecurityPolicyViolationEvent.h */,
+                               A86629CE09DA2B47009633A7 /* JSStaticRange.cpp */,
+                               A86629CD09DA2B47009633A7 /* JSStaticRange.h */,
                                933A14B60B7D1D5200A53FFD /* JSTextEvent.cpp */,
                                933A14B70B7D1D5200A53FFD /* JSTextEvent.h */,
                                0FDA7C10188322EB00C954B5 /* JSTouch.cpp */,
                                E0FEF371B37C53EAC1C1FBEE /* JSEventSource.h */,
                                BC94D14C0C275C68006BC617 /* JSHistory.cpp */,
                                BC94D14D0C275C68006BC617 /* JSHistory.h */,
+                               0F4710E11DB700C7002DCEC3 /* JSIntersectionObserver.cpp */,
+                               0F4710E21DB700C7002DCEC3 /* JSIntersectionObserver.h */,
+                               0F8B45731DC41DBA00443C3F /* JSIntersectionObserverCallback.cpp */,
+                               0F8B45741DC41DBA00443C3F /* JSIntersectionObserverCallback.h */,
+                               0F4710E31DB700C7002DCEC3 /* JSIntersectionObserverEntry.cpp */,
+                               0F4710E41DB700C7002DCEC3 /* JSIntersectionObserverEntry.h */,
                                BCE1C4390D9830D3003B02F2 /* JSLocation.cpp */,
                                BCE1C43A0D9830D3003B02F2 /* JSLocation.h */,
                                A9D247F50D757E3300FDF959 /* JSNavigator.cpp */,
                                29D7BCFA1444AF7D0070619C /* AccessibilitySpinButton.h in Headers */,
                                69A6CBAD1C6BE42C00B836E9 /* AccessibilitySVGElement.h in Headers */,
                                AAC08CF315F941FD00F1E188 /* AccessibilitySVGRoot.h in Headers */,
-                               465307D01DB6EE4800E4137C /* JSUIEventInit.h in Headers */,
                                29A8122B0FBB9C1D00510293 /* AccessibilityTable.h in Headers */,
                                29A812320FBB9C1D00510293 /* AccessibilityTableCell.h in Headers */,
                                29A812410FBB9C1D00510293 /* AccessibilityTableColumn.h in Headers */,
                                599E759011055A1F00D904FA /* Bridge.h in Headers */,
                                59B5977511086579007159E8 /* BridgeJSC.h in Headers */,
                                7A45033018DB717200377B34 /* BufferedLineReader.h in Headers */,
+                               2DFA488F1DB541D000362B99 /* BufferSource.h in Headers */,
                                F55B3DB01251F12D003EF269 /* ButtonInputType.h in Headers */,
                                1A569CF80D7E2B82007C3983 /* c_class.h in Headers */,
                                1A569CFA0D7E2B82007C3983 /* c_instance.h in Headers */,
                                079D0868162F20E800DB8658 /* CaptionUserPreferences.h in Headers */,
                                079D086B162F21F900DB8658 /* CaptionUserPreferencesMediaAF.h in Headers */,
                                07B7116D1D899E63009F0FFB /* CaptureDevice.h in Headers */,
-                               F433E9031DBBDBA200EF0D14 /* StaticPasteboard.h in Headers */,
                                07B7116F1D899E63009F0FFB /* CaptureDeviceManager.h in Headers */,
                                99CC0B4F18BE9849006CEBCC /* CapturingInputCursor.h in Headers */,
                                CDC734151977896D0046BFC5 /* CARingBuffer.h in Headers */,
                                26F0C8981A2E724B002794F8 /* ContentExtensionParser.h in Headers */,
                                26F0C89C1A2EC110002794F8 /* ContentExtensionRule.h in Headers */,
                                26F0C8A01A2EC3BE002794F8 /* ContentExtensionsBackend.h in Headers */,
-                               577483121DADC55D00716EF9 /* CryptoAlgorithmAesKeyGenParams.h in Headers */,
                                262391361A648CEE007251A3 /* ContentExtensionsDebugging.h in Headers */,
                                51FB67DC1AE6B82F00D06C5A /* ContentExtensionStyleSheet.h in Headers */,
                                A149786F1ABAF33800CEF7E4 /* ContentFilter.h in Headers */,
                                E125F8421824253A00D84CD9 /* CryptoAlgorithmAES_CBC.h in Headers */,
                                E1FE137B184D21BB00892F13 /* CryptoAlgorithmAES_KW.h in Headers */,
                                E125F83A1824104800D84CD9 /* CryptoAlgorithmAesCbcParamsDeprecated.h in Headers */,
+                               577483121DADC55D00716EF9 /* CryptoAlgorithmAesKeyGenParams.h in Headers */,
                                E19AC3F71824E5D100349426 /* CryptoAlgorithmAesKeyGenParamsDeprecated.h in Headers */,
                                E125F8321822F11B00D84CD9 /* CryptoAlgorithmHMAC.h in Headers */,
+                               577483191DB4491F00716EF9 /* CryptoAlgorithmHmacKeyGenParams.h in Headers */,
                                E19DA29C18189ADD00088BC8 /* CryptoAlgorithmHmacKeyParamsDeprecated.h in Headers */,
                                E1C6571F1816E50300256CDD /* CryptoAlgorithmHmacParamsDeprecated.h in Headers */,
                                E1C657251816E69D00256CDD /* CryptoAlgorithmIdentifier.h in Headers */,
+                               573489391DAC6B6E00DC0667 /* CryptoAlgorithmParameters.h in Headers */,
                                E1C657271816F9FE00256CDD /* CryptoAlgorithmParametersDeprecated.h in Headers */,
                                E1FF8F6D180DB5BE00132674 /* CryptoAlgorithmRegistry.h in Headers */,
                                E1FE136B183FE1AB00892F13 /* CryptoAlgorithmRSA_OAEP.h in Headers */,
                                E1233F0D185A3E3B008DFAF5 /* CryptoAlgorithmRSAES_PKCS1_v1_5.h in Headers */,
+                               57F8273B1DB72D64009D2BF4 /* CryptoAlgorithmRsaHashedKeyGenParams.h in Headers */,
+                               57FEDD3F1DB6D59200EB96F5 /* CryptoAlgorithmRsaKeyGenParams.h in Headers */,
                                E1BD331E182D8F4200C05D9F /* CryptoAlgorithmRsaKeyGenParamsDeprecated.h in Headers */,
                                E1C266DB18319935003F8B33 /* CryptoAlgorithmRsaKeyParamsWithHashDeprecated.h in Headers */,
                                E1FE1377184D1E3300892F13 /* CryptoAlgorithmRsaOaepParamsDeprecated.h in Headers */,
                                BC23EE920DAED2BC009FDC91 /* CSSImageGeneratorValue.h in Headers */,
                                9393E600151A99F200066F06 /* CSSImageSetValue.h in Headers */,
                                A80E6CFA0A1989CA007FB8C5 /* CSSImageValue.h in Headers */,
-                               46DFF4981DC2603100B80B48 /* ShadowRootMode.h in Headers */,
                                A80E6CF60A1989CA007FB8C5 /* CSSImportRule.h in Headers */,
                                A80E6D010A1989CA007FB8C5 /* CSSInheritedValue.h in Headers */,
                                A80E6D080A1989CA007FB8C5 /* CSSInitialValue.h in Headers */,
                                946D37401D6CE3C20077084F /* CSSParserToken.h in Headers */,
                                946D374E1D6D08AA0077084F /* CSSParserTokenRange.h in Headers */,
                                946D37311D6CB2940077084F /* CSSParserValues.h in Headers */,
+                               9418278F1D8CAF9200492764 /* CSSPendingSubstitutionValue.h in Headers */,
                                977B3863122883E900B81FF8 /* CSSPreloadScanner.h in Headers */,
                                A80E6CE60A1989CA007FB8C5 /* CSSPrimitiveValue.h in Headers */,
                                E1ED8AC30CC49BE000BFC557 /* CSSPrimitiveValueMappings.h in Headers */,
                                BC80C9880CD294EE00A0B7B3 /* CSSTimingFunctionValue.h in Headers */,
                                946D373A1D6CDFC00077084F /* CSSTokenizer.h in Headers */,
                                946D373C1D6CDFC00077084F /* CSSTokenizerInputStream.h in Headers */,
-                               57F8273B1DB72D64009D2BF4 /* CryptoAlgorithmRsaHashedKeyGenParams.h in Headers */,
                                9AB1F38018E2489A00534743 /* CSSToLengthConversionData.h in Headers */,
                                A882DA231593848D000115ED /* CSSToStyleMap.h in Headers */,
                                371F53E90D2704F900ECE0D5 /* CSSUnicodeRangeValue.h in Headers */,
                                BC1BDF25156C18C7001C1243 /* DOMError.h in Headers */,
                                2ED609BD1145B07100C8684E /* DOMFormData.h in Headers */,
                                A8185F3B09765766005826D9 /* DOMImplementation.h in Headers */,
+                               E35CA14E1DBC3A4200F83516 /* DOMJITAbstractHeapRepository.h in Headers */,
                                E3150EA71DA7219300194012 /* DOMJITHelpers.h in Headers */,
                                A9C6E4E40D745E05006442E9 /* DOMMimeType.h in Headers */,
                                A9C6E4E80D745E18006442E9 /* DOMMimeTypeArray.h in Headers */,
                                5185FCBB1BB4CBF80012898F /* IDBServer.h in Headers */,
                                5185FCAD1BB4C4E80012898F /* IDBTransaction.h in Headers */,
                                5198F7AD1BBDD3EB00E2CC5F /* IDBTransactionInfo.h in Headers */,
+                               838EF5381DC149E2008F0C39 /* IDBTransactionMode.h in Headers */,
                                516103AF1CADBA770016B4C7 /* IDBValue.h in Headers */,
                                5185FCB01BB4C4E80012898F /* IDBVersionChangeEvent.h in Headers */,
                                E4A814E01C7338EB00BF85AC /* IdChangeInvalidation.h in Headers */,
                                B885E8D511E06DD2009FFBF4 /* InspectorApplicationCacheAgent.h in Headers */,
                                1C81B95C0E97330800266E07 /* InspectorClient.h in Headers */,
                                1C81B95A0E97330800266E07 /* InspectorController.h in Headers */,
-                               E3565B7B1DC2D6C900217DBD /* JSEventCustom.h in Headers */,
                                82AB1744124B99EC00C5069D /* InspectorCSSAgent.h in Headers */,
                                4A9CC82116BF9BB400EC645A /* InspectorCSSOMWrappers.h in Headers */,
                                7AB0B1C11211A62200A76940 /* InspectorDatabaseAgent.h in Headers */,
                                A593CF8B1840535200BFCE27 /* InspectorWebAgentBase.h in Headers */,
                                A54A0C5E1DB6D9C40017A90B /* InspectorWorkerAgent.h in Headers */,
                                F3ABFE0C130E9DA000E7F7D1 /* InstrumentingAgents.h in Headers */,
+                               0F4710DC1DB6FE22002DCEC3 /* IntersectionObserver.h in Headers */,
+                               0F4710DF1DB6FE22002DCEC3 /* IntersectionObserverEntry.h in Headers */,
                                B27535720B053814002CE64F /* IntPoint.h in Headers */,
                                E462A4A1113E71BE004A4220 /* IntPointHash.h in Headers */,
                                B27535740B053814002CE64F /* IntRect.h in Headers */,
                                44EFF6431A6FF92700D45EEC /* IOTypesSPI.h in Headers */,
                                07AC47021952102100EE9723 /* ISOVTTCue.h in Headers */,
                                418F88050FF957AF0080F045 /* JSAbstractWorker.h in Headers */,
+                               577483141DAEC2EB00716EF9 /* JSAesKeyGenParams.h in Headers */,
                                FDA15ECA12B03F50003A583A /* JSAnalyserNode.h in Headers */,
                                12A253E31C8FFF6600C22295 /* JSAnimatable.h in Headers */,
                                120DE3FD1C87E18400B6D4DD /* JSAnimationEffect.h in Headers */,
                                1449E24C107D4A8400B5793F /* JSCallbackData.h in Headers */,
                                65DF323A09D1DE65000BE325 /* JSCanvasGradient.h in Headers */,
                                65DF323C09D1DE65000BE325 /* JSCanvasPattern.h in Headers */,
-                               838EF53C1DC14A7C008F0C39 /* JSIDBTransactionMode.h in Headers */,
                                65DF323C09D1DE65001BE325 /* JSCanvasProxy.h in Headers */,
                                49EED1451051969400099FAB /* JSCanvasRenderingContext2D.h in Headers */,
                                93F9B7A10BA6032600854064 /* JSCDATASection.h in Headers */,
                                975CA2A21303679D00E99AD9 /* JSCrypto.h in Headers */,
                                E157A8F118185425009F821D /* JSCryptoAlgorithmBuilder.h in Headers */,
                                E1C657131815F9DD00256CDD /* JSCryptoAlgorithmDictionary.h in Headers */,
+                               5739E12F1DAC7F7800E14383 /* JSCryptoAlgorithmParameters.h in Headers */,
                                E157A8E11817331C009F821D /* JSCryptoKey.h in Headers */,
                                E1F80B8E183172B5007885C3 /* JSCryptoKeyPair.h in Headers */,
                                E125F85218283A5600D84CD9 /* JSCryptoKeySerializationJWK.h in Headers */,
                                7694563D1214D97C0007CBAE /* JSDOMTokenList.h in Headers */,
                                2E37E00612DBC5A400A6B233 /* JSDOMURL.h in Headers */,
                                BC6932740D7E293900AE44D1 /* JSDOMWindowBase.h in Headers */,
-                               07ABEF6E1D8A1C7600F21972 /* MediaDevicesEnumerationRequest.h in Headers */,
                                652FBBBC0DE27CB60001D386 /* JSDOMWindowCustom.h in Headers */,
                                460CBF361D4BCD0E0092E88E /* JSDOMWindowProperties.h in Headers */,
                                BCBFB53D0DCD29CF0019B3E5 /* JSDOMWindowShell.h in Headers */,
                                2ECF7ADD10162B3800427DE7 /* JSErrorEvent.h in Headers */,
                                F3D461491161D53200CA0D09 /* JSErrorHandler.h in Headers */,
                                14E8378E09F85D4F00B85AE4 /* JSEvent.h in Headers */,
+                               E3565B7B1DC2D6C900217DBD /* JSEventCustom.h in Headers */,
                                836D03301DA8A13D00FFD96B /* JSEventInit.h in Headers */,
                                93B70D6A09EB0C7C009D8468 /* JSEventListener.h in Headers */,
                                E0FEF372B37C53EAC1C1FBEE /* JSEventSource.h in Headers */,
                                B6D9D27B14EAC0860090D75E /* JSFocusEvent.h in Headers */,
                                C280833F1C6DC26F001451B6 /* JSFontFace.h in Headers */,
                                1C24EEA91C72A7B40080F8FC /* JSFontFaceSet.h in Headers */,
+                               0F8B45721DC3FBA300443C3F /* IntersectionObserverCallback.h in Headers */,
                                FDA15EAC12B03EE1003A583A /* JSGainNode.h in Headers */,
                                518F5002194CAC3A0081BAAE /* JSGamepad.h in Headers */,
                                518F5004194CAC3A0081BAAE /* JSGamepadButton.h in Headers */,
                                0FDA7C1F188322FC00C954B5 /* JSGestureEvent.h in Headers */,
                                8482B7521198CB6B00BFB005 /* JSHashChangeEvent.h in Headers */,
                                BC94D14F0C275C68006BC617 /* JSHistory.h in Headers */,
+                               5774831B1DB459BA00716EF9 /* JSHmacKeyGenParams.h in Headers */,
                                BC97E413109154FA0010D361 /* JSHTMLAllCollection.h in Headers */,
                                1A4A2DF00A1B852A00C807F8 /* JSHTMLAnchorElement.h in Headers */,
                                1A4A2DF20A1B852A00C807F8 /* JSHTMLAppletElement.h in Headers */,
                                BC926F810C0552470082776B /* JSHTMLFrameSetElement.h in Headers */,
                                A80E7B150A19D606007FB8C5 /* JSHTMLHeadElement.h in Headers */,
                                1AE2AA2F0A1CDAB400B42B25 /* JSHTMLHeadingElement.h in Headers */,
-                               E48137B91DB3B526005C59BF /* StyleValidity.h in Headers */,
-                               1A299FE81D7F5FA600A60093 /* RenderThemeCocoa.h in Headers */,
                                1AE2AA310A1CDAB400B42B25 /* JSHTMLHRElement.h in Headers */,
                                1A85B1900A1B18A200D8C87C /* JSHTMLHtmlElement.h in Headers */,
                                BC4918C90BFEA050009D6316 /* JSHTMLIFrameElement.h in Headers */,
                                1AE2AE5C0A1D26F200B42B25 /* JSHTMLMenuElement.h in Headers */,
                                A80E7A180A19C3D6007FB8C5 /* JSHTMLMetaElement.h in Headers */,
                                A7BBE26711AFB3F20005EA03 /* JSHTMLMeterElement.h in Headers */,
-                               5768E4341DB7524500D0A4F7 /* JSRsaHashedKeyGenParams.h in Headers */,
-                               57FEDD411DB6D73A00EB96F5 /* JSRsaKeyGenParams.h in Headers */,
                                1AE2AB2A0A1CE63B00B42B25 /* JSHTMLModElement.h in Headers */,
                                BC305C7A0C076BB300CD20F0 /* JSHTMLObjectElement.h in Headers */,
                                1A85B1EB0A1B240500D8C87C /* JSHTMLOListElement.h in Headers */,
                                9B69D3B91B99100700E3512B /* JSHTMLSlotElement.h in Headers */,
                                E446143C0CD689CC00FADA75 /* JSHTMLSourceElement.h in Headers */,
                                9752D38E1413104B003305BD /* JSHTMLSpanElement.h in Headers */,
-                               577483141DAEC2EB00716EF9 /* JSAesKeyGenParams.h in Headers */,
                                A80E7B0E0A19D606007FB8C5 /* JSHTMLStyleElement.h in Headers */,
-                               5774831B1DB459BA00716EF9 /* JSHmacKeyGenParams.h in Headers */,
                                BCA169A30BFD55B40019CA76 /* JSHTMLTableCaptionElement.h in Headers */,
                                BC06EDE40BFD6D0D00856E9D /* JSHTMLTableCellElement.h in Headers */,
                                BC06ED9E0BFD660600856E9D /* JSHTMLTableColElement.h in Headers */,
                                C585A68F11D4FB08004C3E4B /* JSIDBObjectStore.h in Headers */,
                                C585A69111D4FB08004C3E4B /* JSIDBRequest.h in Headers */,
                                B6566270120B1227006EA85C /* JSIDBTransaction.h in Headers */,
+                               838EF53C1DC14A7C008F0C39 /* JSIDBTransactionMode.h in Headers */,
                                269239961505E1AA009E57FC /* JSIDBVersionChangeEvent.h in Headers */,
                                BC6C49F40D7DBA0500FFA558 /* JSImageConstructor.h in Headers */,
                                A77979290D6B9E64003851B9 /* JSImageData.h in Headers */,
                                A86629D309DA2B48009633A6 /* JSInputEvent.h in Headers */,
                                7A0E771F10C00DB100A0276E /* JSInspectorFrontendHost.h in Headers */,
-                               A86629D309DA2B48009633A7 /* JSStaticRange.h in Headers */,
+                               0F4710E61DB700C7002DCEC3 /* JSIntersectionObserver.h in Headers */,
+                               0F4710E81DB700C7002DCEC3 /* JSIntersectionObserverEntry.h in Headers */,
                                A86629D309DA2B48009633A5 /* JSKeyboardEvent.h in Headers */,
                                12A253E11C8FFF6600C22295 /* JSKeyframeEffect.h in Headers */,
                                935F45430F7C3B5F00D7C1FB /* JSLazyEventListener.h in Headers */,
                                93D437A31D57B7E200AB85EA /* JSMediaListCustom.h in Headers */,
                                D3A94A47122DC40F00A37BBC /* JSMediaQueryList.h in Headers */,
                                7C5343FD17B74B63004232F0 /* JSMediaQueryListListener.h in Headers */,
-                               5739E12F1DAC7F7800E14383 /* JSCryptoAlgorithmParameters.h in Headers */,
                                CD9DE17517AAC74C00EA386D /* JSMediaSource.h in Headers */,
                                07277E4D17D018CC0015534D /* JSMediaStream.h in Headers */,
                                07277E4F17D018CC0015534D /* JSMediaStreamAudioDestinationNode.h in Headers */,
                                41F584C7104652CB009CAA64 /* JSMessagePortCustom.h in Headers */,
                                2D6F3E951C1F85550061DBD4 /* JSMockPageOverlay.h in Headers */,
                                A86629D109DA2B48009633A5 /* JSMouseEvent.h in Headers */,
-                               57FEDD3F1DB6D59200EB96F5 /* CryptoAlgorithmRsaKeyGenParams.h in Headers */,
                                830A36BD1DAC5FAD006D7D09 /* JSMouseEventInit.h in Headers */,
                                C6F420A316B7164E0052A9F2 /* JSMutationCallback.h in Headers */,
                                65DF31FC09D1CC60000BE325 /* JSMutationEvent.h in Headers */,
                                BCFE2F120C1B58380020235F /* JSRect.h in Headers */,
                                4998AECE13F9D6C90090B1AA /* JSRequestAnimationFrameCallback.h in Headers */,
                                BC74DA491013F468007987AD /* JSRGBColor.h in Headers */,
+                               5768E4341DB7524500D0A4F7 /* JSRsaHashedKeyGenParams.h in Headers */,
+                               57FEDD411DB6D73A00EB96F5 /* JSRsaKeyGenParams.h in Headers */,
                                073794E619EE2FF200E5A045 /* JSRTCConfiguration.h in Headers */,
                                07969DAC17D14151007FF842 /* JSRTCDataChannel.h in Headers */,
                                07969DAE17D14151007FF842 /* JSRTCDataChannelEvent.h in Headers */,
                                834476EF1DA5BC5E002B6ED2 /* JSScrollToOptions.h in Headers */,
                                CED06AD11C77754800FDFAF1 /* JSSecurityPolicyViolationEvent.h in Headers */,
                                9BDA64D81B975CF2009C4387 /* JSShadowRoot.h in Headers */,
+                               46DFF49C1DC2620B00B80B48 /* JSShadowRootMode.h in Headers */,
                                CD9DE17B17AAC75B00EA386D /* JSSourceBuffer.h in Headers */,
                                CD9DE17D17AAC75B00EA386D /* JSSourceBufferList.h in Headers */,
                                AA7FEEAD16A4E74B004C0C33 /* JSSpeechSynthesis.h in Headers */,
                                BC82432A0D0CE8A200460C8F /* JSSQLTransaction.h in Headers */,
                                B59DD69D11902A42007E9684 /* JSSQLTransactionCallback.h in Headers */,
                                B59DD6A111902A52007E9684 /* JSSQLTransactionErrorCallback.h in Headers */,
+                               A86629D309DA2B48009633A7 /* JSStaticRange.h in Headers */,
                                51E0BAEB0DA55D4A00A9E417 /* JSStorageEvent.h in Headers */,
                                89F60CDA15809D760075E157 /* JSStorageInfo.h in Headers */,
                                0FF5026A102BA9430066F39A /* JSStyleMedia.h in Headers */,
                                B2FA3D950AB75A6F000E5AC4 /* JSSVGFETurbulenceElement.h in Headers */,
                                B2FA3D970AB75A6F000E5AC4 /* JSSVGFilterElement.h in Headers */,
                                B27B28260CEF0C0700D39D54 /* JSSVGFontElement.h in Headers */,
-                               46DFF49C1DC2620B00B80B48 /* JSShadowRootMode.h in Headers */,
                                A83B79050CCAFF15000B0825 /* JSSVGFontFaceElement.h in Headers */,
                                A83B79000CCAFF15000B0825 /* JSSVGFontFaceFormatElement.h in Headers */,
                                A83B79020CCAFF15000B0825 /* JSSVGFontFaceNameElement.h in Headers */,
                                E17B492116A9B8FF001C8839 /* JSTransitionEvent.h in Headers */,
                                1A750D5D0A90DEE1000FF215 /* JSTreeWalker.h in Headers */,
                                A86629CF09DA2B47009633A5 /* JSUIEvent.h in Headers */,
+                               465307D01DB6EE4800E4137C /* JSUIEventInit.h in Headers */,
                                AAA4FAD2175D5CB300743873 /* JSUIRequestEvent.h in Headers */,
                                7C73FB12191EF6F4007DE061 /* JSUserMessageHandler.h in Headers */,
                                7C73FB0D191EF5A8007DE061 /* JSUserMessageHandlersNamespace.h in Headers */,
                                1A762C760A074F2600989F5B /* JSXPathExpression.h in Headers */,
                                1A762C780A074F2600989F5B /* JSXPathNSResolver.h in Headers */,
                                1A762C7A0A074F2600989F5B /* JSXPathResult.h in Headers */,
-                               415670471DBE1533009AC3BB /* PeerConnectionStates.h in Headers */,
                                BCEFE1EB0DCA5F6400739219 /* JSXSLTProcessor.h in Headers */,
                                85031B440A44EFC700F992E0 /* KeyboardEvent.h in Headers */,
                                1AE00D59182DAC8D00087DD7 /* KeyedCoding.h in Headers */,
                                CDF2B004181F059C00F2B424 /* MediaDescription.h in Headers */,
                                15145B901B3A1CE000662BF7 /* MediaDeviceInfo.h in Headers */,
                                5EA725D31ACABD4700EAD17B /* MediaDevices.h in Headers */,
+                               07ABEF6E1D8A1C7600F21972 /* MediaDevicesEnumerationRequest.h in Headers */,
                                07394ECA1BAB2CD700BE99CD /* MediaDevicesRequest.h in Headers */,
                                97205AB81239291000B17380 /* MediaDocument.h in Headers */,
                                FD6F252D13F5EF0E0065165F /* MediaElementAudioSourceNode.h in Headers */,
                                FBDB61A116D6037E00BB3394 /* PageRuleCollector.h in Headers */,
                                F3820895147D35F90010BC06 /* PageRuntimeAgent.h in Headers */,
                                A5F36D3B18F758720054C024 /* PageScriptDebugServer.h in Headers */,
-                               577483191DB4491F00716EF9 /* CryptoAlgorithmHmacKeyGenParams.h in Headers */,
                                371E65CC13661EDC00BEEDB0 /* PageSerializer.h in Headers */,
                                A7197F24175689C4007B9442 /* PageThrottler.h in Headers */,
                                E1284AE110447D4500EAEB52 /* PageTransitionEvent.h in Headers */,
                                1A8A64681D19FDFF00D0E00F /* PaymentRequestValidator.h in Headers */,
                                B27535650B053814002CE64F /* PDFDocumentImage.h in Headers */,
                                5E2C43511BCEE2F60001E2BC /* PeerConnectionBackend.h in Headers */,
+                               415670471DBE1533009AC3BB /* PeerConnectionStates.h in Headers */,
                                5EBB89391C77C39900C65D41 /* PeerMediaDescription.h in Headers */,
                                8A7CC96B12076D73001D4588 /* PendingScript.h in Headers */,
                                E3FA38641D71812D00AA5950 /* PendingScriptClient.h in Headers */,
                                297BE3D516C03C08003316BD /* PlatformSpeechSynthesisUtterance.h in Headers */,
                                297BE3D616C03C0B003316BD /* PlatformSpeechSynthesisVoice.h in Headers */,
                                297BE3D716C03C0E003316BD /* PlatformSpeechSynthesizer.h in Headers */,
-                               9418278F1D8CAF9200492764 /* CSSPendingSubstitutionValue.h in Headers */,
                                1AD8F81B11CAB9E900E93E54 /* PlatformStrategies.h in Headers */,
                                0F7D07331884C56C00B4AF86 /* PlatformTextTrack.h in Headers */,
                                074E82BB18A69F0E007EF54C /* PlatformTimeRanges.h in Headers */,
                                BCE4413412F748E2009B84B8 /* RenderCombineText.h in Headers */,
                                9392F1420AD185F400691BD4 /* RenderCounter.h in Headers */,
                                BCEA486E097D93020094C9E4 /* RenderDeprecatedFlexibleBox.h in Headers */,
-                               F44EBBD91DB5D21400277334 /* StaticRange.h in Headers */,
                                836DAA061CEAB80D00A2B707 /* RenderDescendantIterator.h in Headers */,
                                D302754A12A5FE84004BD828 /* RenderDetailsMarker.h in Headers */,
                                A76E5F7F135E0DCF00A69837 /* RenderedDocumentMarker.h in Headers */,
                                439046E812DA25E800AF80A2 /* RenderMathMLScripts.h in Headers */,
                                439046EC12DA25E800AF80A9 /* RenderMathMLToken.h in Headers */,
                                439046EA12DA25E800AF80A2 /* RenderMathMLUnderOver.h in Headers */,
-                               E35CA14E1DBC3A4200F83516 /* DOMJITAbstractHeapRepository.h in Headers */,
                                E4C279590CF9741900E97B98 /* RenderMedia.h in Headers */,
                                DEBCCDD216646E8200A452E1 /* RenderMediaControlElements.h in Headers */,
                                41FA303F1316C29C00C0BFC5 /* RenderMediaControls.h in Headers */,
                                E4C91A16180999F100A17F6D /* RenderTextLineBoxes.h in Headers */,
                                BCEA488A097D93020094C9E4 /* RenderTheme.h in Headers */,
                                1A299FE81D7F5FA600A60093 /* RenderThemeCocoa.h in Headers */,
+                               1A299FE81D7F5FA600A60093 /* RenderThemeCocoa.h in Headers */,
                                FED13D520CEA949700D89466 /* RenderThemeIOS.h in Headers */,
                                BCEA4887097D93020094C9E4 /* RenderThemeMac.h in Headers */,
                                93F1998C08245E59001E9ABC /* RenderTreeAsText.h in Headers */,
                                BC74DA371013F3F7007987AD /* RGBColor.h in Headers */,
                                A8CFF5E10A155A05000A4234 /* RootInlineBox.h in Headers */,
                                49E911C90EF86D47009D0CAF /* RotateTransformOperation.h in Headers */,
-                               838EF5381DC149E2008F0C39 /* IDBTransactionMode.h in Headers */,
                                A73F95FF12C97BFE0031AAF9 /* RoundedRect.h in Headers */,
                                07AB996918DA3C010018771E /* RTCConfiguration.h in Headers */,
                                07AB996F18DA3C740018771E /* RTCConfigurationPrivate.h in Headers */,
                                0FC4E40D187F82E10045882C /* ScrollingCoordinatorIOS.h in Headers */,
                                9391A991162746CB00297330 /* ScrollingCoordinatorMac.h in Headers */,
                                93C38BFF164473C700091EB2 /* ScrollingStateFixedNode.h in Headers */,
-                               2DFA488F1DB541D000362B99 /* BufferSource.h in Headers */,
                                0FEA3E7B191B2FC5000F1B55 /* ScrollingStateFrameScrollingNode.h in Headers */,
                                931CBD0D161A44E900E4C874 /* ScrollingStateNode.h in Headers */,
                                0FEA3E84191B31BF000F1B55 /* ScrollingStateOverflowScrollingNode.h in Headers */,
                                0F3DD45012F5EA1B000D9190 /* ShadowBlur.h in Headers */,
                                BC5EB8C40E82031B00B25965 /* ShadowData.h in Headers */,
                                A6D169641346B4C1000EB770 /* ShadowRoot.h in Headers */,
+                               46DFF4981DC2603100B80B48 /* ShadowRootMode.h in Headers */,
                                FD45A94F175D3F3E00C21EC8 /* Shape.h in Headers */,
                                FD45A95B175D41EE00C21EC8 /* ShapeInterval.h in Headers */,
                                FD45A952175D3F3E00C21EC8 /* ShapeOutsideInfo.h in Headers */,
                                510D4A34103165EE0049EA54 /* SocketStreamError.h in Headers */,
                                510D4A37103165EE0049EA54 /* SocketStreamHandle.h in Headers */,
                                510D4A38103165EE0049EA54 /* SocketStreamHandleClient.h in Headers */,
-                               573489391DAC6B6E00DC0667 /* CryptoAlgorithmParameters.h in Headers */,
                                51ABAE1E103C1913008C5260 /* SocketStreamHandleImpl.h in Headers */,
                                0A4844990CA44CB200B7BD48 /* SoftLinking.h in Headers */,
                                4B3043C70AE0370300A82647 /* Sound.h in Headers */,
                                93F1996308245E59001E9ABC /* SSLKeyGenerator.h in Headers */,
                                26B999911803B3C900D01121 /* StackAllocator.h in Headers */,
                                BC7FA62D0D1F0EFF00DB22A9 /* StaticNodeList.h in Headers */,
+                               F433E9031DBBDBA200EF0D14 /* StaticPasteboard.h in Headers */,
+                               F44EBBD91DB5D21400277334 /* StaticRange.h in Headers */,
                                A5AFB350115151A700B045CB /* StepRange.h in Headers */,
                                1AC2D845171734A100652FC0 /* Storage.h in Headers */,
                                51BE37E00DAEE00E001085FC /* StorageArea.h in Headers */,
                                BC5EB8100E81F2CE00B25965 /* StyleTransformData.h in Headers */,
                                E4DEAA1817A93DC3000E0430 /* StyleTreeResolver.h in Headers */,
                                E42E76DC1C7AF77600E3614D /* StyleUpdate.h in Headers */,
+                               E48137B91DB3B526005C59BF /* StyleValidity.h in Headers */,
                                BC5EB69A0E81DA6300B25965 /* StyleVisualData.h in Headers */,
                                D000ED2811C1B9CD00C47726 /* SubframeLoader.h in Headers */,
                                1FC40FBA1655CCB90040F29E /* SubimageCacheWithTimer.h in Headers */,
                                B2C3DA400D006C1D00EF6F26 /* TextCodecUserDefined.h in Headers */,
                                B2C3DA420D006C1D00EF6F26 /* TextCodecUTF16.h in Headers */,
                                9343CB8212F25E510033C5EE /* TextCodecUTF8.h in Headers */,
+                               0F8B45761DC41DBA00443C3F /* JSIntersectionObserverCallback.h in Headers */,
                                142B97CA13138943008BEF4B /* TextControlInnerElements.h in Headers */,
                                582DE3251C30C85400BE02A8 /* TextDecorationPainter.h in Headers */,
                                97BC84B412371180000C6161 /* TextDocument.h in Headers */,
                        isa = PBXSourcesBuildPhase;
                        buildActionMask = 2147483647;
                        files = (
-                               5768E4361DB7527400D0A4F7 /* JSRsaHashedKeyGenParams.cpp in Sources */,
-                               57FEDD431DB6D76000EB96F5 /* JSRsaKeyGenParams.cpp in Sources */,
-                               5774831D1DB459DE00716EF9 /* JSHmacKeyGenParams.cpp in Sources */,
-                               577483161DAEC32300716EF9 /* JSAesKeyGenParams.cpp in Sources */,
-                               5739E1311DAC7FD100E14383 /* JSCryptoAlgorithmParameters.cpp in Sources */,
                                41E1B1D00FF5986900576B3B /* AbstractWorker.cpp in Sources */,
                                37F57AB91A50726900876F98 /* AccessibilityARIAGrid.cpp in Sources */,
                                37F57ABA1A50726F00876F98 /* AccessibilityARIAGridCell.cpp in Sources */,
                                FD31603D12B0267600C1A359 /* AnalyserNode.cpp in Sources */,
                                31A795C81888BCB500382F90 /* ANGLEInstancedArrays.cpp in Sources */,
                                490707E61219C04300D90E51 /* ANGLEWebKitBridge.cpp in Sources */,
+                               0F8B45751DC41DBA00443C3F /* JSIntersectionObserverCallback.cpp in Sources */,
                                49E912AA0EFAC906009D0CAF /* Animation.cpp in Sources */,
                                316FE1110E6E1DA700BF6088 /* AnimationBase.cpp in Sources */,
                                316FE1130E6E1DA700BF6088 /* AnimationController.cpp in Sources */,
                                A89943290B42338800D7C802 /* BitmapImage.cpp in Sources */,
                                1AFFC4541D5E81CB00267A66 /* BlacklistUpdater.mm in Sources */,
                                976D6C78122B8A3D001FD1F7 /* Blob.cpp in Sources */,
-                               465307D11DB6EE4A00E4137C /* JSUIEventInit.cpp in Sources */,
                                2EDEF1F3121B0EFC00726DB2 /* BlobData.cpp in Sources */,
                                E1D31CDC19196020001005A3 /* BlobDataFileReference.cpp in Sources */,
                                E164A2ED191AE6350010737D /* BlobDataFileReferenceMac.mm in Sources */,
                                2D8FEBDC143E3EF70072502B /* CSSCrossfadeValue.cpp in Sources */,
                                AA21ECCA0ABF0FBA002B834C /* CSSCursorImageValue.cpp in Sources */,
                                9444CBE31D8861980073A074 /* CSSCustomIdentValue.cpp in Sources */,
+                               94D4AC621DC24C8E0080F02D /* CSSCustomPropertyValue.cpp in Sources */,
                                4A9CC81716BB9AC600EC645A /* CSSDefaultStyleSheets.cpp in Sources */,
                                FBB0C5B717BBD626003D3677 /* CSSFilterImageValue.cpp in Sources */,
                                BC64B4D50CB4298A005F2B62 /* CSSFontFace.cpp in Sources */,
                                946D373F1D6CE3C20077084F /* CSSParserToken.cpp in Sources */,
                                946D374D1D6D08A60077084F /* CSSParserTokenRange.cpp in Sources */,
                                946D37301D6CB2940077084F /* CSSParserValues.cpp in Sources */,
+                               9418278E1D8CAF9200492764 /* CSSPendingSubstitutionValue.cpp in Sources */,
                                977B3862122883E900B81FF8 /* CSSPreloadScanner.cpp in Sources */,
                                A80E6D050A1989CA007FB8C5 /* CSSPrimitiveValue.cpp in Sources */,
                                A80E6CF70A1989CA007FB8C5 /* CSSProperty.cpp in Sources */,
                                BC1BDF24156C1883001C1243 /* DOMError.cpp in Sources */,
                                2ED609BC1145B07100C8684E /* DOMFormData.cpp in Sources */,
                                A8185F3E09765766005826D9 /* DOMImplementation.cpp in Sources */,
+                               E35CA14D1DBC3A3F00F83516 /* DOMJITAbstractHeapRepository.cpp in Sources */,
                                A9C6E4E30D745E05006442E9 /* DOMMimeType.cpp in Sources */,
                                A9C6E4E70D745E18006442E9 /* DOMMimeTypeArray.cpp in Sources */,
                                52B6C9C215E3F4DF00690B05 /* DOMNamedFlowCollection.cpp in Sources */,
                                B2C3DA620D006CD600EF6F26 /* FontCache.cpp in Sources */,
                                1C3969D01B74211E002BCFA7 /* FontCacheCoreText.cpp in Sources */,
                                3727DFD5142AAE4500D449CB /* FontCacheIOS.mm in Sources */,
-                               E35CA14D1DBC3A3F00F83516 /* DOMJITAbstractHeapRepository.cpp in Sources */,
                                B2AFFC7C0D00A5C10030074D /* FontCacheMac.mm in Sources */,
                                B2C3DA600D006CD600EF6F26 /* FontCascade.cpp in Sources */,
                                B2AFFC800D00A5C10030074D /* FontCascadeCocoa.mm in Sources */,
                                A81369DF097374F600D74463 /* HTMLOptGroupElement.cpp in Sources */,
                                A81369DD097374F600D74463 /* HTMLOptionElement.cpp in Sources */,
                                9327A94209968D1A0068A546 /* HTMLOptionsCollection.cpp in Sources */,
-                               838EF53B1DC14A7C008F0C39 /* JSIDBTransactionMode.cpp in Sources */,
                                4AD01008127E642A0015035F /* HTMLOutputElement.cpp in Sources */,
                                A8EA7CB20A192B9C00A8EF5F /* HTMLParagraphElement.cpp in Sources */,
                                A871D4590A127CBC00B12A68 /* HTMLParamElement.cpp in Sources */,
                                41614A781DA6423B004AD06F /* HTTPHeaderValues.cpp in Sources */,
                                514C76720CE923A1007EF3CD /* HTTPParsers.cpp in Sources */,
                                371A67CB11C6C7DB00047B8B /* HyphenationCF.cpp in Sources */,
-                               F433E9051DBBDFCA00EF0D14 /* StaticPasteboard.cpp in Sources */,
                                97E4028F13A696ED00913D67 /* IconController.cpp in Sources */,
                                5126E6BB0A2E3B12005C29FA /* IconDatabase.cpp in Sources */,
                                516953971329A3C800B92D04 /* IconDatabaseBase.cpp in Sources */,
                                754133AA102E00F400075D00 /* InspectorTimelineAgent.cpp in Sources */,
                                A54A0C5D1DB6D9C00017A90B /* InspectorWorkerAgent.cpp in Sources */,
                                F350B73513F1377D00880C43 /* InstrumentingAgents.cpp in Sources */,
+                               0F4710DB1DB6FE22002DCEC3 /* IntersectionObserver.cpp in Sources */,
+                               0F4710DE1DB6FE22002DCEC3 /* IntersectionObserverEntry.cpp in Sources */,
                                2D46F04E17B96FBD005647F0 /* IntPoint.cpp in Sources */,
                                B27535600B053814002CE64F /* IntPointCG.cpp in Sources */,
                                B275357C0B053814002CE64F /* IntPointMac.mm in Sources */,
                                AD9FF6E11908391D003B61E0 /* IOSurfacePoolCocoa.mm in Sources */,
                                07AC47011952102100EE9723 /* ISOVTTCue.cpp in Sources */,
                                418F88040FF957AE0080F045 /* JSAbstractWorker.cpp in Sources */,
+                               577483161DAEC32300716EF9 /* JSAesKeyGenParams.cpp in Sources */,
                                FDA15EC912B03F50003A583A /* JSAnalyserNode.cpp in Sources */,
                                31A795C61888BADC00382F90 /* JSANGLEInstancedArrays.cpp in Sources */,
                                12A253E21C8FFF6600C22295 /* JSAnimatable.cpp in Sources */,
                                975CA2A11303679D00E99AD9 /* JSCrypto.cpp in Sources */,
                                E157A8F018185425009F821D /* JSCryptoAlgorithmBuilder.cpp in Sources */,
                                E1C657121815F9DD00256CDD /* JSCryptoAlgorithmDictionary.cpp in Sources */,
+                               5739E1311DAC7FD100E14383 /* JSCryptoAlgorithmParameters.cpp in Sources */,
                                7CEF26191D6A931700BE905D /* JSCryptoCustom.cpp in Sources */,
                                E157A8E01817331C009F821D /* JSCryptoKey.cpp in Sources */,
                                E157A8E818184C67009F821D /* JSCryptoKeyCustom.cpp in Sources */,
                                BCA83E520D7CE205003421A8 /* JSDataTransferCustom.cpp in Sources */,
                                4162A4571011464700DFF3ED /* JSDedicatedWorkerGlobalScope.cpp in Sources */,
                                4162A454101145E300DFF3ED /* JSDedicatedWorkerGlobalScopeCustom.cpp in Sources */,
-                               F44EBBDB1DB5DD9D00277334 /* StaticRange.cpp in Sources */,
                                FDA15ED112B03F94003A583A /* JSDelayNode.cpp in Sources */,
                                31FB1A65120A5D3F00DC02A0 /* JSDeviceMotionEvent.cpp in Sources */,
                                31FB1A6C120A5D6900DC02A0 /* JSDeviceMotionEventCustom.cpp in Sources */,
                                8482B7511198CB6B00BFB005 /* JSHashChangeEvent.cpp in Sources */,
                                BC94D14E0C275C68006BC617 /* JSHistory.cpp in Sources */,
                                BCE7B1930D4E86960075A539 /* JSHistoryCustom.cpp in Sources */,
+                               5774831D1DB459DE00716EF9 /* JSHmacKeyGenParams.cpp in Sources */,
                                BC97E412109154FA0010D361 /* JSHTMLAllCollection.cpp in Sources */,
                                BC97E42C10915B060010D361 /* JSHTMLAllCollectionCustom.cpp in Sources */,
                                1A4A2DEF0A1B852A00C807F8 /* JSHTMLAnchorElement.cpp in Sources */,
                                511EF2C917F0FD3500E4FA16 /* JSIDBRequest.cpp in Sources */,
                                934F31B51CC0737200DB43DC /* JSIDBRequestCustom.cpp in Sources */,
                                511EF2CA17F0FD3500E4FA16 /* JSIDBTransaction.cpp in Sources */,
+                               838EF53B1DC14A7C008F0C39 /* JSIDBTransactionMode.cpp in Sources */,
                                511EF2CB17F0FD3500E4FA16 /* JSIDBVersionChangeEvent.cpp in Sources */,
                                BC6C49F30D7DBA0500FFA558 /* JSImageConstructor.cpp in Sources */,
                                A77979280D6B9E64003851B9 /* JSImageData.cpp in Sources */,
                                A86629D409DA2B48009633A6 /* JSInputEvent.cpp in Sources */,
                                7A0E771E10C00DB100A0276E /* JSInspectorFrontendHost.cpp in Sources */,
                                7A74ECBD101839DA00BF939E /* JSInspectorFrontendHostCustom.cpp in Sources */,
-                               A86629D409DA2B48009633A7 /* JSStaticRange.cpp in Sources */,
+                               0F4710E51DB700C7002DCEC3 /* JSIntersectionObserver.cpp in Sources */,
+                               0F4710E71DB700C7002DCEC3 /* JSIntersectionObserverEntry.cpp in Sources */,
                                A86629D409DA2B48009633A5 /* JSKeyboardEvent.cpp in Sources */,
                                12A253E01C8FFF6600C22295 /* JSKeyframeEffect.cpp in Sources */,
                                935F45420F7C3B5F00D7C1FB /* JSLazyEventListener.cpp in Sources */,
                                BCFE2F110C1B58370020235F /* JSRect.cpp in Sources */,
                                4998AECD13F9D6C90090B1AA /* JSRequestAnimationFrameCallback.cpp in Sources */,
                                BC74DA481013F468007987AD /* JSRGBColor.cpp in Sources */,
+                               5768E4361DB7527400D0A4F7 /* JSRsaHashedKeyGenParams.cpp in Sources */,
+                               57FEDD431DB6D76000EB96F5 /* JSRsaKeyGenParams.cpp in Sources */,
                                073794E519EE2FF200E5A045 /* JSRTCConfiguration.cpp in Sources */,
                                07969DAB17D14151007FF842 /* JSRTCDataChannel.cpp in Sources */,
                                07969DAD17D14151007FF842 /* JSRTCDataChannelEvent.cpp in Sources */,
                                834476EE1DA5BC57002B6ED2 /* JSScrollToOptions.cpp in Sources */,
                                CED06AD01C77754800FDFAF1 /* JSSecurityPolicyViolationEvent.cpp in Sources */,
                                9BDA64D71B975CE5009C4387 /* JSShadowRoot.cpp in Sources */,
+                               46DFF49B1DC2620B00B80B48 /* JSShadowRootMode.cpp in Sources */,
                                CD9DE17A17AAC75B00EA386D /* JSSourceBuffer.cpp in Sources */,
                                CD9DE17C17AAC75B00EA386D /* JSSourceBufferList.cpp in Sources */,
                                AA7FEEA416A4E6F3004C0C33 /* JSSpeechSynthesis.cpp in Sources */,
                                B59DD69E11902A42007E9684 /* JSSQLTransactionCallback.cpp in Sources */,
                                1AD2316E0CD269E700C1F194 /* JSSQLTransactionCustom.cpp in Sources */,
                                B59DD6A211902A52007E9684 /* JSSQLTransactionErrorCallback.cpp in Sources */,
+                               A86629D409DA2B48009633A7 /* JSStaticRange.cpp in Sources */,
                                51E3F9D60DA05E1D00250911 /* JSStorage.cpp in Sources */,
                                51D0C5160DAA90B7003B3831 /* JSStorageCustom.cpp in Sources */,
                                51E0BAEA0DA55D4A00A9E417 /* JSStorageEvent.cpp in Sources */,
                                A84EBD840CB8C97700079609 /* JSStyleSheetList.cpp in Sources */,
                                A84EBD780CB8C89200079609 /* JSStyleSheetListCustom.cpp in Sources */,
                                571F218B1DA57C7B005C9EFD /* JSSubtleCrypto.cpp in Sources */,
+                               57A9C88E1DA70BF800BC7305 /* JSSubtleCryptoCustom.cpp in Sources */,
                                B20111070AB7740500DB0E68 /* JSSVGAElement.cpp in Sources */,
                                24D9129113CA951E00D21915 /* JSSVGAltGlyphDefElement.cpp in Sources */,
                                6515EC910D9723FF0063D49A /* JSSVGAltGlyphElement.cpp in Sources */,
                                B2FA3D5A0AB75A6F000E5AC4 /* JSSVGClipPathElement.cpp in Sources */,
                                B2FA3D5C0AB75A6F000E5AC4 /* JSSVGColor.cpp in Sources */,
                                B2FA3D5E0AB75A6F000E5AC4 /* JSSVGComponentTransferFunctionElement.cpp in Sources */,
-                               94D4AC621DC24C8E0080F02D /* CSSCustomPropertyValue.cpp in Sources */,
                                B2FA3D600AB75A6F000E5AC4 /* JSSVGCursorElement.cpp in Sources */,
                                B2FA3D620AB75A6F000E5AC4 /* JSSVGDefsElement.cpp in Sources */,
                                B2FA3D640AB75A6F000E5AC4 /* JSSVGDescElement.cpp in Sources */,
                                1A750D5C0A90DEE1000FF215 /* JSTreeWalker.cpp in Sources */,
                                516BB7940CE91E6800512F79 /* JSTreeWalkerCustom.cpp in Sources */,
                                A86629D009DA2B48009633A5 /* JSUIEvent.cpp in Sources */,
+                               465307D11DB6EE4A00E4137C /* JSUIEventInit.cpp in Sources */,
                                AAA4FAD3175D5CB300743873 /* JSUIRequestEvent.cpp in Sources */,
                                5C5381B51D87E08700E2EBE6 /* JSURLSearchParams.cpp in Sources */,
                                7C73FB11191EF6F4007DE061 /* JSUserMessageHandler.cpp in Sources */,
                                A120ACA413F998CA00FE4AC7 /* LayoutRepainter.cpp in Sources */,
                                0F36E7391BD184B9002DB891 /* LayoutSize.cpp in Sources */,
                                2D9066060BE141D400956998 /* LayoutState.cpp in Sources */,
-                               57A9C88E1DA70BF800BC7305 /* JSSubtleCryptoCustom.cpp in Sources */,
                                E4C3B1FC0F0E4170009693F6 /* LegacyTileCache.mm in Sources */,
                                E4B65A5A132FAAF90070E7BE /* LegacyTileGrid.mm in Sources */,
                                E424A3A01330DF1E00CF6DC9 /* LegacyTileGridTile.mm in Sources */,
                                9353676B09AED88B00D35CD6 /* ScrollViewMac.mm in Sources */,
                                5EA3D6E31C859DC100300BBB /* SDPProcessor.cpp in Sources */,
                                5EA3D6E71C85A9DB00300BBB /* SDPProcessorScriptResource.cpp in Sources */,
+                               CDAB6D3217C9259500C60B35 /* SDPProcessorScriptsData.cpp in Sources */,
                                F55B3DD11251F12D003EF269 /* SearchInputType.cpp in Sources */,
                                0E7058EE1BC5BC190045A507 /* SearchPopupMenuCocoa.mm in Sources */,
                                976F36EA14686225005E93B4 /* SecurityContext.cpp in Sources */,
                                582CB0551A78A2B200AFFCC4 /* SimpleLineLayoutTextFragmentIterator.cpp in Sources */,
                                C5A1EA7C152BCF04004D00B6 /* SimplifyMarkupCommand.cpp in Sources */,
                                572A7F231C6E5A66009C6149 /* SimulatedClick.cpp in Sources */,
-                               46DFF49B1DC2620B00B80B48 /* JSShadowRootMode.cpp in Sources */,
                                FD00D7A414A3F61900734011 /* SincResampler.cpp in Sources */,
                                51327D6111A33A2B004F9D65 /* SinkDocument.cpp in Sources */,
                                9444CBD51D860C8B0073A074 /* SizesAttributeParser.cpp in Sources */,
                                4476531B133170990006B789 /* SSLKeyGeneratorIOS.cpp in Sources */,
                                93F19AE608245E59001E9ABC /* SSLKeyGeneratorMac.mm in Sources */,
                                BC7FA62E0D1F0EFF00DB22A9 /* StaticNodeList.cpp in Sources */,
+                               F433E9051DBBDFCA00EF0D14 /* StaticPasteboard.cpp in Sources */,
+                               F44EBBDB1DB5DD9D00277334 /* StaticRange.cpp in Sources */,
                                A5AFB34F115151A700B045CB /* StepRange.cpp in Sources */,
                                51E3F9C70DA059DC00250911 /* Storage.cpp in Sources */,
                                51E0BABC0DA5547100A9E417 /* StorageEvent.cpp in Sources */,
                                26255F0018878DFF0006E1FD /* UserAgentIOS.mm in Sources */,
                                26255F0418878E110006E1FD /* UserAgentMac.mm in Sources */,
                                CDAB6D3217C9259500C60B34 /* UserAgentScriptsData.cpp in Sources */,
-                               CDAB6D3217C9259500C60B35 /* SDPProcessorScriptsData.cpp in Sources */,
                                65DF326109D1E199000BE325 /* UserAgentStyleSheetsData.cpp in Sources */,
                                1AE79D42188DB61F002239C2 /* UserContentController.cpp in Sources */,
                                7C3F01C21C8E5AC200ADD962 /* UserContentProvider.cpp in Sources */,
                                AAA728F816D1D8BC00D3BBC6 /* WebAccessibilityObjectWrapperIOS.mm in Sources */,
                                AA478A8016CD70C3007D1BB4 /* WebAccessibilityObjectWrapperMac.mm in Sources */,
                                2D3EF4491917915C00034184 /* WebActionDisablingCALayerDelegate.mm in Sources */,
-                               9418278E1D8CAF9200492764 /* CSSPendingSubstitutionValue.cpp in Sources */,
                                120DE3ED1C86CA3E00B6D4DD /* WebAnimation.cpp in Sources */,
                                07D637411BB0B11300256CE9 /* WebAudioSourceProviderAVFObjC.mm in Sources */,
                                CDA29A311CBF74DA00901CCF /* WebAVPlayerController.mm in Sources */,
index 21e0dc6..d6c0e57 100644 (file)
@@ -5145,6 +5145,8 @@ sub ShouldPassWrapperByReference
 {
     my ($parameter, $interface) = @_;
 
+    return 0 if $codeGenerator->IsCallbackInterface($parameter->type);
+
     my $nativeType = GetNativeType($interface, $parameter->type);
     return $codeGenerator->ShouldPassWrapperByReference($parameter) && (substr($nativeType, -1) eq '*' || $nativeType =~ /^RefPtr/);
 }
index 81634e2..666327e 100644 (file)
@@ -1416,7 +1416,7 @@ template<> EncodedJSValue JSC_HOST_CALL JSTestObjConstructor::construct(ExecStat
         return throwConstructorScriptExecutionContextUnavailableError(*state, throwScope, "TestObject");
     ASSERT(context->isDocument());
     auto& document = downcast<Document>(*context);
-    auto object = TestObj::create(document, *testCallback, *testCallbackFunction);
+    auto object = TestObj::create(document, WTFMove(testCallback), WTFMove(testCallbackFunction));
     return JSValue::encode(toJSNewlyCreated(state, castedThis->globalObject(), WTFMove(object)));
 }
 
index 973641d..3287a8c 100644 (file)
@@ -137,7 +137,7 @@ template<> EncodedJSValue JSC_HOST_CALL JSTestTypedefsConstructor::construct(Exe
     if (UNLIKELY(!state->uncheckedArgument(1).isObject()))
         return throwArgumentMustBeFunctionError(*state, throwScope, 1, "testCallback", "TestTypedefs", nullptr);
     auto testCallback = JSTestCallback::create(asObject(state->uncheckedArgument(1)), castedThis->globalObject());
-    auto object = TestTypedefs::create(WTFMove(hello), *testCallback);
+    auto object = TestTypedefs::create(WTFMove(hello), WTFMove(testCallback));
     return JSValue::encode(toJSNewlyCreated(state, castedThis->globalObject(), WTFMove(object)));
 }
 
diff --git a/Source/WebCore/page/IntersectionObserver.cpp b/Source/WebCore/page/IntersectionObserver.cpp
new file mode 100644 (file)
index 0000000..07fa8a8
--- /dev/null
@@ -0,0 +1,69 @@
+/*
+ * Copyright (C) 2016 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+
+#if ENABLE(INTERSECTION_OBSERVER)
+#include "IntersectionObserver.h"
+
+#include "Element.h"
+#include "IntersectionObserverCallback.h"
+#include "IntersectionObserverEntry.h"
+#include <wtf/Vector.h>
+
+namespace WebCore {
+
+IntersectionObserver::IntersectionObserver(Ref<IntersectionObserverCallback>&& callback, Init&& init)
+    : m_root(init.root)
+    , m_rootMargin(WTFMove(init.rootMargin))
+    , m_callback(WTFMove(callback))
+{
+    if (WTF::holds_alternative<double>(init.threshold))
+        m_thresholds.append(WTF::get<double>(init.threshold));
+    else
+        m_thresholds = WTF::get<Vector<double>>(WTFMove(init.threshold));
+}
+
+void IntersectionObserver::observe(Element&)
+{
+}
+
+void IntersectionObserver::unobserve(Element&)
+{
+}
+
+void IntersectionObserver::disconnect()
+{
+}
+
+Vector<RefPtr<IntersectionObserverEntry>> IntersectionObserver::takeRecords()
+{
+    return { };
+}
+
+
+} // namespace WebCore
+
+#endif // ENABLE(INTERSECTION_OBSERVER)
diff --git a/Source/WebCore/page/IntersectionObserver.h b/Source/WebCore/page/IntersectionObserver.h
new file mode 100644 (file)
index 0000000..beb05ef
--- /dev/null
@@ -0,0 +1,76 @@
+/*
+ * Copyright (C) 2016 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#pragma once
+
+#if ENABLE(INTERSECTION_OBSERVER)
+
+#include "IntersectionObserverCallback.h"
+#include "IntersectionObserverEntry.h"
+#include <wtf/Optional.h>
+#include <wtf/RefCounted.h>
+#include <wtf/Variant.h>
+#include <wtf/text/WTFString.h>
+
+namespace WebCore {
+
+class Element;
+
+class IntersectionObserver : public RefCounted<IntersectionObserver> {
+public:
+    struct Init {
+        RefPtr<Element> root;
+        String rootMargin;
+        Variant<double, Vector<double>> threshold;
+    };
+
+    static Ref<IntersectionObserver> create(Ref<IntersectionObserverCallback>&& callback, Init&& init)
+    {
+        return adoptRef(*new IntersectionObserver(WTFMove(callback), WTFMove(init)));
+    }
+    
+    Element* root() const { return m_root.get(); }
+    String rootMargin() const { return m_rootMargin; }
+    const Vector<double>& thresholds() const { return m_thresholds; }
+
+    void observe(Element&);
+    void unobserve(Element&);
+    void disconnect();
+
+    Vector<RefPtr<IntersectionObserverEntry>> takeRecords();
+
+private:
+    IntersectionObserver(Ref<IntersectionObserverCallback>&&, Init&&);
+    
+    RefPtr<Element> m_root;
+    String m_rootMargin;
+    Vector<double> m_thresholds;
+    Ref<IntersectionObserverCallback> m_callback;
+};
+
+
+} // namespace WebCore
+
+#endif // ENABLE(INTERSECTION_OBSERVER)
diff --git a/Source/WebCore/page/IntersectionObserver.idl b/Source/WebCore/page/IntersectionObserver.idl
new file mode 100644 (file)
index 0000000..61d8b21
--- /dev/null
@@ -0,0 +1,52 @@
+/*
+ * Copyright (C) 2016 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+// https://wicg.github.io/IntersectionObserver/
+
+[
+    Conditional=INTERSECTION_OBSERVER,
+    Constructor(IntersectionObserverCallback callback, optional IntersectionObserverInit options),
+    ImplementationLacksVTable,
+    EnabledBySetting=IntersectionObserver
+] interface IntersectionObserver {
+    readonly attribute Element? root;
+    readonly attribute DOMString rootMargin;
+    readonly attribute sequence<double> thresholds;
+
+    void observe(Element target);
+    void unobserve(Element target);
+    void disconnect();
+    sequence<IntersectionObserverEntry> takeRecords();
+};
+
+[
+    Conditional=INTERSECTION_OBSERVER,
+    EnabledBySetting=IntersectionObserver
+]
+dictionary IntersectionObserverInit {
+    Element? root = null;
+    DOMString rootMargin = "0px";
+    (double or sequence<double>) threshold = 0.0;
+};
diff --git a/Source/WebCore/page/IntersectionObserverCallback.h b/Source/WebCore/page/IntersectionObserverCallback.h
new file mode 100644 (file)
index 0000000..17f9d16
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Copyright (C) 2016 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#pragma once
+
+#if ENABLE(INTERSECTION_OBSERVER)
+
+#include <wtf/RefCounted.h>
+#include <wtf/Vector.h>
+
+namespace WebCore {
+
+class IntersectionObserver;
+class IntersectionObserverEntry;
+
+class IntersectionObserverCallback : public RefCounted<IntersectionObserverCallback> {
+public:
+    virtual ~IntersectionObserverCallback() { }
+    virtual bool handleEvent(Vector<RefPtr<IntersectionObserverEntry>>, IntersectionObserver*) = 0;
+};
+
+} // namespace WebCore
+
+#endif // ENABLE(INTERSECTION_OBSERVER)
diff --git a/Source/WebCore/page/IntersectionObserverCallback.idl b/Source/WebCore/page/IntersectionObserverCallback.idl
new file mode 100644 (file)
index 0000000..f3f0eec
--- /dev/null
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 2016 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+// https://wicg.github.io/IntersectionObserver/
+
+[
+    Conditional=INTERSECTION_OBSERVER,
+    Callback=FunctionOnly,
+] callback interface IntersectionObserverCallback {
+    boolean handleEvent(sequence<IntersectionObserverEntry> entries, IntersectionObserver observer);
+};
diff --git a/Source/WebCore/page/IntersectionObserverEntry.cpp b/Source/WebCore/page/IntersectionObserverEntry.cpp
new file mode 100644 (file)
index 0000000..e3f9c3c
--- /dev/null
@@ -0,0 +1,47 @@
+/*
+ * Copyright (C) 2016 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+
+#if ENABLE(INTERSECTION_OBSERVER)
+#include "IntersectionObserverEntry.h"
+
+#include "Element.h"
+
+namespace WebCore {
+
+IntersectionObserverEntry::IntersectionObserverEntry(const Init& init)
+    : m_time(init.time)
+    , m_rootBounds(DOMRectReadOnly::fromRect(init.rootBounds))
+    , m_boundingClientRect(DOMRectReadOnly::fromRect(init.boundingClientRect))
+    , m_intersectionRect(DOMRectReadOnly::fromRect(init.intersectionRect))
+    , m_target(init.target)
+{
+}
+
+
+} // namespace WebCore
+
+#endif // ENABLE(INTERSECTION_OBSERVER)
diff --git a/Source/WebCore/page/IntersectionObserverEntry.h b/Source/WebCore/page/IntersectionObserverEntry.h
new file mode 100644 (file)
index 0000000..eee4e4f
--- /dev/null
@@ -0,0 +1,79 @@
+/*
+ * Copyright (C) 2016 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#pragma once
+
+#if ENABLE(INTERSECTION_OBSERVER)
+
+#include "DOMRectReadonly.h"
+#include "Element.h"
+#include <wtf/RefCounted.h>
+#include <wtf/Vector.h>
+#include <wtf/text/WTFString.h>
+
+namespace WebCore {
+
+class Element;
+
+class IntersectionObserverEntry : public RefCounted<IntersectionObserverEntry> {
+    WTF_MAKE_FAST_ALLOCATED;
+public:
+
+    struct Init {
+        double time;
+        DOMRectInit rootBounds;
+        DOMRectInit boundingClientRect;
+        DOMRectInit intersectionRect;
+        RefPtr<Element> target;
+    };
+
+    static Ref<IntersectionObserverEntry> create(const Init& init)
+    {
+        return WTF::adoptRef(*new IntersectionObserverEntry(init));
+    }
+    
+    double time() const { return m_time; }
+    RefPtr<DOMRectReadOnly> rootBounds() const { return m_rootBounds; }
+    RefPtr<DOMRectReadOnly> boundingClientRect() const { return m_boundingClientRect; }
+    RefPtr<DOMRectReadOnly> intersectionRect() const { return m_intersectionRect; }
+    RefPtr<Element> target() const { return m_target; }
+
+    double intersectionRatio() const { return m_intersectionRatio; }
+
+private:
+    IntersectionObserverEntry(const Init&);
+
+    double m_time { 0 };
+    RefPtr<DOMRectReadOnly> m_rootBounds;
+    RefPtr<DOMRectReadOnly> m_boundingClientRect;
+    RefPtr<DOMRectReadOnly> m_intersectionRect;
+    double m_intersectionRatio { 0 };
+    RefPtr<Element> m_target;
+};
+
+
+} // namespace WebCore
+
+#endif // ENABLE(INTERSECTION_OBSERVER)
diff --git a/Source/WebCore/page/IntersectionObserverEntry.idl b/Source/WebCore/page/IntersectionObserverEntry.idl
new file mode 100644 (file)
index 0000000..c186505
--- /dev/null
@@ -0,0 +1,52 @@
+/*
+ * Copyright (C) 2016 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+// https://wicg.github.io/IntersectionObserver/
+
+typedef double DOMHighResTimeStamp;
+
+[
+    Conditional=INTERSECTION_OBSERVER,
+    Constructor(IntersectionObserverEntryInit intersectionObserverEntryInit),
+    ImplementationLacksVTable,
+    EnabledBySetting=IntersectionObserver
+] interface IntersectionObserverEntry {
+    readonly attribute DOMHighResTimeStamp time;
+    readonly attribute DOMRectReadOnly rootBounds;
+    readonly attribute DOMRectReadOnly boundingClientRect;
+    readonly attribute DOMRectReadOnly intersectionRect;
+    readonly attribute double intersectionRatio;
+    readonly attribute Element target;
+};
+
+[
+    Conditional=INTERSECTION_OBSERVER,
+] dictionary IntersectionObserverEntryInit {
+    required DOMHighResTimeStamp time;
+    required DOMRectInit rootBounds;
+    required DOMRectInit boundingClientRect;
+    required DOMRectInit intersectionRect;
+    required Element target;
+};
index 8dc4f7c..635ec3d 100644 (file)
@@ -278,6 +278,7 @@ variationFontsEnabled initial=true, setNeedsStyleRecalcInAllFrames=1, conditiona
 
 # Runtime-enabled features
 visualViewportEnabled initial=false
+intersectionObserverEnabled initial=false
 
 inputEventsEnabled initial=false
 
index 9dd1dc0..b8fa3d0 100644 (file)
@@ -90,6 +90,7 @@ ENABLE_GAMEPAD[sdk=watch*] = ;
 ENABLE_GAMEPAD_DEPRECATED = ;
 ENABLE_GEOLOCATION = ENABLE_GEOLOCATION;
 ENABLE_ICONDATABASE[sdk=macosx*] = ENABLE_ICONDATABASE;
+ENABLE_INTERSECTION_OBSERVER = ENABLE_INTERSECTION_OBSERVER;
 ENABLE_SERVICE_CONTROLS[sdk=macosx*] = ENABLE_SERVICE_CONTROLS;
 ENABLE_INDEXED_DATABASE = ENABLE_INDEXED_DATABASE;
 ENABLE_INDEXED_DATABASE_IN_WORKERS = ENABLE_INDEXED_DATABASE_IN_WORKERS;
@@ -219,4 +220,4 @@ ENABLE_VARIATION_FONTS_IF_NOT_ = $(ENABLE_VARIATION_FONTS_IF_NOT_NO);
 ENABLE_VARIATION_FONTS_IF_NOT_NO = ENABLE_VARIATION_FONTS;
 ENABLE_VARIATION_FONTS_IF_NOT_YES = ;
 
-FEATURE_DEFINES = $(ENABLE_3D_TRANSFORMS) $(ENABLE_ACCELERATED_2D_CANVAS) $(ENABLE_ACCELERATED_OVERFLOW_SCROLLING) $(ENABLE_APPLE_PAY) $(ENABLE_ATTACHMENT_ELEMENT) $(ENABLE_AVF_CAPTIONS) $(ENABLE_CACHE_PARTITIONING) $(ENABLE_CANVAS_PATH) $(ENABLE_CANVAS_PROXY) $(ENABLE_CHANNEL_MESSAGING) $(ENABLE_CONTENT_FILTERING) $(ENABLE_CSP_NEXT) $(ENABLE_CSS_ANIMATIONS_LEVEL_2) $(ENABLE_CSS_BOX_DECORATION_BREAK) $(ENABLE_CSS_COMPOSITING) $(ENABLE_CSS_DEVICE_ADAPTATION) $(ENABLE_CSS_GRID_LAYOUT) $(ENABLE_CSS_IMAGE_ORIENTATION) $(ENABLE_CSS_IMAGE_RESOLUTION) $(ENABLE_CSS_REGIONS) $(ENABLE_CSS_SCROLL_SNAP) $(ENABLE_CSS_SELECTORS_LEVEL4) $(ENABLE_CSS_TRAILING_WORD) $(ENABLE_CSS3_TEXT) $(ENABLE_CURSOR_VISIBILITY) $(ENABLE_CUSTOM_ELEMENTS) $(ENABLE_CUSTOM_SCHEME_HANDLER) $(ENABLE_DASHBOARD_SUPPORT) $(ENABLE_DATA_TRANSFER_ITEMS) $(ENABLE_DATACUE_VALUE) $(ENABLE_DATALIST_ELEMENT) $(ENABLE_DETAILS_ELEMENT) $(ENABLE_DEVICE_ORIENTATION) $(ENABLE_ENCRYPTED_MEDIA) $(ENABLE_ES6_MODULES) $(ENABLE_ES2017_ASYNCFUNCTION_SYNTAX) $(ENABLE_FETCH_API) $(ENABLE_FILTERS_LEVEL_2) $(ENABLE_FONT_LOAD_EVENTS) $(ENABLE_FTL_JIT) $(ENABLE_FULLSCREEN_API) $(ENABLE_GAMEPAD_DEPRECATED) $(ENABLE_GAMEPAD) $(ENABLE_GEOLOCATION) $(ENABLE_ICONDATABASE) $(ENABLE_INDEXED_DATABASE_IN_WORKERS) $(ENABLE_INDEXED_DATABASE) $(ENABLE_INDIE_UI) $(ENABLE_INPUT_TYPE_COLOR_POPOVER) $(ENABLE_INPUT_TYPE_COLOR) $(ENABLE_INPUT_TYPE_DATE) $(ENABLE_INPUT_TYPE_DATETIME_INCOMPLETE) $(ENABLE_INPUT_TYPE_DATETIMELOCAL) $(ENABLE_INPUT_TYPE_MONTH) $(ENABLE_INPUT_TYPE_TIME) $(ENABLE_INPUT_TYPE_WEEK) $(ENABLE_INTL) $(ENABLE_IOS_GESTURE_EVENTS) $(ENABLE_IOS_TOUCH_EVENTS) $(ENABLE_JIT) $(ENABLE_LEGACY_CSS_VENDOR_PREFIXES) $(ENABLE_LEGACY_ENCRYPTED_MEDIA) $(ENABLE_LEGACY_NOTIFICATIONS) $(ENABLE_LEGACY_VENDOR_PREFIXES) $(ENABLE_LETTERPRESS) $(ENABLE_LINK_PREFETCH) $(ENABLE_MAC_GESTURE_EVENTS) $(ENABLE_MATHML) $(ENABLE_MEDIA_CAPTURE) $(ENABLE_MEDIA_CONTROLS_SCRIPT) $(ENABLE_MEDIA_SESSION) $(ENABLE_MEDIA_SOURCE) $(ENABLE_MEDIA_STATISTICS) $(ENABLE_MEDIA_STREAM) $(ENABLE_METER_ELEMENT) $(ENABLE_MHTML) $(ENABLE_MOUSE_CURSOR_SCALE) $(ENABLE_NAVIGATOR_CONTENT_UTILS) $(ENABLE_NAVIGATOR_HWCONCURRENCY) $(ENABLE_NOTIFICATIONS) $(ENABLE_PDFKIT_PLUGIN) $(ENABLE_POINTER_LOCK) $(ENABLE_PROXIMITY_EVENTS) $(ENABLE_PUBLIC_SUFFIX_LIST) $(ENABLE_QUOTA) $(ENABLE_READABLE_STREAM_API) $(ENABLE_REMOTE_INSPECTOR) $(ENABLE_REQUEST_ANIMATION_FRAME) $(ENABLE_REQUEST_AUTOCOMPLETE) $(ENABLE_RESOLUTION_MEDIA_QUERY) $(ENABLE_RESOURCE_USAGE) $(ENABLE_RUBBER_BANDING) $(ENABLE_SERVICE_CONTROLS) $(ENABLE_SPEECH_SYNTHESIS) $(ENABLE_SUBTLE_CRYPTO) $(ENABLE_SVG_FONTS) $(ENABLE_TELEPHONE_NUMBER_DETECTION) $(ENABLE_TEXT_AUTOSIZING) $(ENABLE_TOUCH_EVENTS) $(ENABLE_TOUCH_ICON_LOADING) $(ENABLE_USERSELECT_ALL) $(ENABLE_VIDEO_PRESENTATION_MODE) $(ENABLE_VIDEO_TRACK) $(ENABLE_VIDEO) $(ENABLE_VIEW_MODE_CSS_MEDIA) $(ENABLE_WEB_ANIMATIONS) $(ENABLE_WEB_AUDIO) $(ENABLE_WEB_REPLAY) $(ENABLE_WEB_RTC) $(ENABLE_WEB_SOCKETS) $(ENABLE_WEB_TIMING) $(ENABLE_WEBASSEMBLY) $(ENABLE_WEBGL) $(ENABLE_WEBGL2) $(ENABLE_WIRELESS_PLAYBACK_TARGET) $(ENABLE_WRITABLE_STREAM_API) $(ENABLE_XSLT) $(ENABLE_VARIATION_FONTS);
+FEATURE_DEFINES = $(ENABLE_3D_TRANSFORMS) $(ENABLE_ACCELERATED_2D_CANVAS) $(ENABLE_ACCELERATED_OVERFLOW_SCROLLING) $(ENABLE_APPLE_PAY) $(ENABLE_ATTACHMENT_ELEMENT) $(ENABLE_AVF_CAPTIONS) $(ENABLE_CACHE_PARTITIONING) $(ENABLE_CANVAS_PATH) $(ENABLE_CANVAS_PROXY) $(ENABLE_CHANNEL_MESSAGING) $(ENABLE_CONTENT_FILTERING) $(ENABLE_CSP_NEXT) $(ENABLE_CSS_ANIMATIONS_LEVEL_2) $(ENABLE_CSS_BOX_DECORATION_BREAK) $(ENABLE_CSS_COMPOSITING) $(ENABLE_CSS_DEVICE_ADAPTATION) $(ENABLE_CSS_GRID_LAYOUT) $(ENABLE_CSS_IMAGE_ORIENTATION) $(ENABLE_CSS_IMAGE_RESOLUTION) $(ENABLE_CSS_REGIONS) $(ENABLE_CSS_SCROLL_SNAP) $(ENABLE_CSS_SELECTORS_LEVEL4) $(ENABLE_CSS_TRAILING_WORD) $(ENABLE_CSS3_TEXT) $(ENABLE_CURSOR_VISIBILITY) $(ENABLE_CUSTOM_ELEMENTS) $(ENABLE_CUSTOM_SCHEME_HANDLER) $(ENABLE_DASHBOARD_SUPPORT) $(ENABLE_DATA_TRANSFER_ITEMS) $(ENABLE_DATACUE_VALUE) $(ENABLE_DATALIST_ELEMENT) $(ENABLE_DETAILS_ELEMENT) $(ENABLE_DEVICE_ORIENTATION) $(ENABLE_ENCRYPTED_MEDIA) $(ENABLE_ES2017_ASYNCFUNCTION_SYNTAX) $(ENABLE_ES6_MODULES) $(ENABLE_FETCH_API) $(ENABLE_FILTERS_LEVEL_2) $(ENABLE_FONT_LOAD_EVENTS) $(ENABLE_FTL_JIT) $(ENABLE_FULLSCREEN_API) $(ENABLE_GAMEPAD_DEPRECATED) $(ENABLE_GAMEPAD) $(ENABLE_GEOLOCATION) $(ENABLE_ICONDATABASE) $(ENABLE_INDEXED_DATABASE_IN_WORKERS) $(ENABLE_INDEXED_DATABASE) $(ENABLE_INDIE_UI) $(ENABLE_INPUT_TYPE_COLOR_POPOVER) $(ENABLE_INPUT_TYPE_COLOR) $(ENABLE_INPUT_TYPE_DATE) $(ENABLE_INPUT_TYPE_DATETIME_INCOMPLETE) $(ENABLE_INPUT_TYPE_DATETIMELOCAL) $(ENABLE_INPUT_TYPE_MONTH) $(ENABLE_INPUT_TYPE_TIME) $(ENABLE_INPUT_TYPE_WEEK) $(ENABLE_INTERSECTION_OBSERVER) $(ENABLE_INTL) $(ENABLE_IOS_GESTURE_EVENTS) $(ENABLE_IOS_TOUCH_EVENTS) $(ENABLE_JIT) $(ENABLE_LEGACY_CSS_VENDOR_PREFIXES) $(ENABLE_LEGACY_ENCRYPTED_MEDIA) $(ENABLE_LEGACY_NOTIFICATIONS) $(ENABLE_LEGACY_VENDOR_PREFIXES) $(ENABLE_LETTERPRESS) $(ENABLE_LINK_PREFETCH) $(ENABLE_MAC_GESTURE_EVENTS) $(ENABLE_MATHML) $(ENABLE_MEDIA_CAPTURE) $(ENABLE_MEDIA_CONTROLS_SCRIPT) $(ENABLE_MEDIA_SESSION) $(ENABLE_MEDIA_SOURCE) $(ENABLE_MEDIA_STATISTICS) $(ENABLE_MEDIA_STREAM) $(ENABLE_METER_ELEMENT) $(ENABLE_MHTML) $(ENABLE_MOUSE_CURSOR_SCALE) $(ENABLE_NAVIGATOR_CONTENT_UTILS) $(ENABLE_NAVIGATOR_HWCONCURRENCY) $(ENABLE_NOTIFICATIONS) $(ENABLE_PDFKIT_PLUGIN) $(ENABLE_POINTER_LOCK) $(ENABLE_PROXIMITY_EVENTS) $(ENABLE_PUBLIC_SUFFIX_LIST) $(ENABLE_QUOTA) $(ENABLE_READABLE_STREAM_API) $(ENABLE_REMOTE_INSPECTOR) $(ENABLE_REQUEST_ANIMATION_FRAME) $(ENABLE_REQUEST_AUTOCOMPLETE) $(ENABLE_RESOLUTION_MEDIA_QUERY) $(ENABLE_RESOURCE_USAGE) $(ENABLE_RUBBER_BANDING) $(ENABLE_SERVICE_CONTROLS) $(ENABLE_SPEECH_SYNTHESIS) $(ENABLE_SUBTLE_CRYPTO) $(ENABLE_SVG_FONTS) $(ENABLE_TELEPHONE_NUMBER_DETECTION) $(ENABLE_TEXT_AUTOSIZING) $(ENABLE_TOUCH_EVENTS) $(ENABLE_TOUCH_ICON_LOADING) $(ENABLE_USERSELECT_ALL) $(ENABLE_VARIATION_FONTS) $(ENABLE_VIDEO_PRESENTATION_MODE) $(ENABLE_VIDEO_TRACK) $(ENABLE_VIDEO) $(ENABLE_VIEW_MODE_CSS_MEDIA) $(ENABLE_WEB_ANIMATIONS) $(ENABLE_WEB_AUDIO) $(ENABLE_WEB_REPLAY) $(ENABLE_WEB_RTC) $(ENABLE_WEB_SOCKETS) $(ENABLE_WEB_TIMING) $(ENABLE_WEBASSEMBLY) $(ENABLE_WEBGL) $(ENABLE_WEBGL2) $(ENABLE_WIRELESS_PLAYBACK_TARGET) $(ENABLE_WRITABLE_STREAM_API) $(ENABLE_XSLT);
index 5eccdb6..34d3939 100644 (file)
@@ -1,3 +1,14 @@
+2016-10-31  Simon Fraser  <simon.fraser@apple.com>
+
+        Implement IntersectionObserver
+        https://bugs.webkit.org/show_bug.cgi?id=159475
+
+        Reviewed by Ryosuke Niwa.
+
+        Add ENABLE_INTERSECTION_OBSERVER, enabled by default.
+
+        * Configurations/FeatureDefines.xcconfig:
+
 2016-10-31  Ryan Haddad  <ryanhaddad@apple.com>
 
         Unreviewed, rolling out r208154.
index 9dd1dc0..b8fa3d0 100644 (file)
@@ -90,6 +90,7 @@ ENABLE_GAMEPAD[sdk=watch*] = ;
 ENABLE_GAMEPAD_DEPRECATED = ;
 ENABLE_GEOLOCATION = ENABLE_GEOLOCATION;
 ENABLE_ICONDATABASE[sdk=macosx*] = ENABLE_ICONDATABASE;
+ENABLE_INTERSECTION_OBSERVER = ENABLE_INTERSECTION_OBSERVER;
 ENABLE_SERVICE_CONTROLS[sdk=macosx*] = ENABLE_SERVICE_CONTROLS;
 ENABLE_INDEXED_DATABASE = ENABLE_INDEXED_DATABASE;
 ENABLE_INDEXED_DATABASE_IN_WORKERS = ENABLE_INDEXED_DATABASE_IN_WORKERS;
@@ -219,4 +220,4 @@ ENABLE_VARIATION_FONTS_IF_NOT_ = $(ENABLE_VARIATION_FONTS_IF_NOT_NO);
 ENABLE_VARIATION_FONTS_IF_NOT_NO = ENABLE_VARIATION_FONTS;
 ENABLE_VARIATION_FONTS_IF_NOT_YES = ;
 
-FEATURE_DEFINES = $(ENABLE_3D_TRANSFORMS) $(ENABLE_ACCELERATED_2D_CANVAS) $(ENABLE_ACCELERATED_OVERFLOW_SCROLLING) $(ENABLE_APPLE_PAY) $(ENABLE_ATTACHMENT_ELEMENT) $(ENABLE_AVF_CAPTIONS) $(ENABLE_CACHE_PARTITIONING) $(ENABLE_CANVAS_PATH) $(ENABLE_CANVAS_PROXY) $(ENABLE_CHANNEL_MESSAGING) $(ENABLE_CONTENT_FILTERING) $(ENABLE_CSP_NEXT) $(ENABLE_CSS_ANIMATIONS_LEVEL_2) $(ENABLE_CSS_BOX_DECORATION_BREAK) $(ENABLE_CSS_COMPOSITING) $(ENABLE_CSS_DEVICE_ADAPTATION) $(ENABLE_CSS_GRID_LAYOUT) $(ENABLE_CSS_IMAGE_ORIENTATION) $(ENABLE_CSS_IMAGE_RESOLUTION) $(ENABLE_CSS_REGIONS) $(ENABLE_CSS_SCROLL_SNAP) $(ENABLE_CSS_SELECTORS_LEVEL4) $(ENABLE_CSS_TRAILING_WORD) $(ENABLE_CSS3_TEXT) $(ENABLE_CURSOR_VISIBILITY) $(ENABLE_CUSTOM_ELEMENTS) $(ENABLE_CUSTOM_SCHEME_HANDLER) $(ENABLE_DASHBOARD_SUPPORT) $(ENABLE_DATA_TRANSFER_ITEMS) $(ENABLE_DATACUE_VALUE) $(ENABLE_DATALIST_ELEMENT) $(ENABLE_DETAILS_ELEMENT) $(ENABLE_DEVICE_ORIENTATION) $(ENABLE_ENCRYPTED_MEDIA) $(ENABLE_ES6_MODULES) $(ENABLE_ES2017_ASYNCFUNCTION_SYNTAX) $(ENABLE_FETCH_API) $(ENABLE_FILTERS_LEVEL_2) $(ENABLE_FONT_LOAD_EVENTS) $(ENABLE_FTL_JIT) $(ENABLE_FULLSCREEN_API) $(ENABLE_GAMEPAD_DEPRECATED) $(ENABLE_GAMEPAD) $(ENABLE_GEOLOCATION) $(ENABLE_ICONDATABASE) $(ENABLE_INDEXED_DATABASE_IN_WORKERS) $(ENABLE_INDEXED_DATABASE) $(ENABLE_INDIE_UI) $(ENABLE_INPUT_TYPE_COLOR_POPOVER) $(ENABLE_INPUT_TYPE_COLOR) $(ENABLE_INPUT_TYPE_DATE) $(ENABLE_INPUT_TYPE_DATETIME_INCOMPLETE) $(ENABLE_INPUT_TYPE_DATETIMELOCAL) $(ENABLE_INPUT_TYPE_MONTH) $(ENABLE_INPUT_TYPE_TIME) $(ENABLE_INPUT_TYPE_WEEK) $(ENABLE_INTL) $(ENABLE_IOS_GESTURE_EVENTS) $(ENABLE_IOS_TOUCH_EVENTS) $(ENABLE_JIT) $(ENABLE_LEGACY_CSS_VENDOR_PREFIXES) $(ENABLE_LEGACY_ENCRYPTED_MEDIA) $(ENABLE_LEGACY_NOTIFICATIONS) $(ENABLE_LEGACY_VENDOR_PREFIXES) $(ENABLE_LETTERPRESS) $(ENABLE_LINK_PREFETCH) $(ENABLE_MAC_GESTURE_EVENTS) $(ENABLE_MATHML) $(ENABLE_MEDIA_CAPTURE) $(ENABLE_MEDIA_CONTROLS_SCRIPT) $(ENABLE_MEDIA_SESSION) $(ENABLE_MEDIA_SOURCE) $(ENABLE_MEDIA_STATISTICS) $(ENABLE_MEDIA_STREAM) $(ENABLE_METER_ELEMENT) $(ENABLE_MHTML) $(ENABLE_MOUSE_CURSOR_SCALE) $(ENABLE_NAVIGATOR_CONTENT_UTILS) $(ENABLE_NAVIGATOR_HWCONCURRENCY) $(ENABLE_NOTIFICATIONS) $(ENABLE_PDFKIT_PLUGIN) $(ENABLE_POINTER_LOCK) $(ENABLE_PROXIMITY_EVENTS) $(ENABLE_PUBLIC_SUFFIX_LIST) $(ENABLE_QUOTA) $(ENABLE_READABLE_STREAM_API) $(ENABLE_REMOTE_INSPECTOR) $(ENABLE_REQUEST_ANIMATION_FRAME) $(ENABLE_REQUEST_AUTOCOMPLETE) $(ENABLE_RESOLUTION_MEDIA_QUERY) $(ENABLE_RESOURCE_USAGE) $(ENABLE_RUBBER_BANDING) $(ENABLE_SERVICE_CONTROLS) $(ENABLE_SPEECH_SYNTHESIS) $(ENABLE_SUBTLE_CRYPTO) $(ENABLE_SVG_FONTS) $(ENABLE_TELEPHONE_NUMBER_DETECTION) $(ENABLE_TEXT_AUTOSIZING) $(ENABLE_TOUCH_EVENTS) $(ENABLE_TOUCH_ICON_LOADING) $(ENABLE_USERSELECT_ALL) $(ENABLE_VIDEO_PRESENTATION_MODE) $(ENABLE_VIDEO_TRACK) $(ENABLE_VIDEO) $(ENABLE_VIEW_MODE_CSS_MEDIA) $(ENABLE_WEB_ANIMATIONS) $(ENABLE_WEB_AUDIO) $(ENABLE_WEB_REPLAY) $(ENABLE_WEB_RTC) $(ENABLE_WEB_SOCKETS) $(ENABLE_WEB_TIMING) $(ENABLE_WEBASSEMBLY) $(ENABLE_WEBGL) $(ENABLE_WEBGL2) $(ENABLE_WIRELESS_PLAYBACK_TARGET) $(ENABLE_WRITABLE_STREAM_API) $(ENABLE_XSLT) $(ENABLE_VARIATION_FONTS);
+FEATURE_DEFINES = $(ENABLE_3D_TRANSFORMS) $(ENABLE_ACCELERATED_2D_CANVAS) $(ENABLE_ACCELERATED_OVERFLOW_SCROLLING) $(ENABLE_APPLE_PAY) $(ENABLE_ATTACHMENT_ELEMENT) $(ENABLE_AVF_CAPTIONS) $(ENABLE_CACHE_PARTITIONING) $(ENABLE_CANVAS_PATH) $(ENABLE_CANVAS_PROXY) $(ENABLE_CHANNEL_MESSAGING) $(ENABLE_CONTENT_FILTERING) $(ENABLE_CSP_NEXT) $(ENABLE_CSS_ANIMATIONS_LEVEL_2) $(ENABLE_CSS_BOX_DECORATION_BREAK) $(ENABLE_CSS_COMPOSITING) $(ENABLE_CSS_DEVICE_ADAPTATION) $(ENABLE_CSS_GRID_LAYOUT) $(ENABLE_CSS_IMAGE_ORIENTATION) $(ENABLE_CSS_IMAGE_RESOLUTION) $(ENABLE_CSS_REGIONS) $(ENABLE_CSS_SCROLL_SNAP) $(ENABLE_CSS_SELECTORS_LEVEL4) $(ENABLE_CSS_TRAILING_WORD) $(ENABLE_CSS3_TEXT) $(ENABLE_CURSOR_VISIBILITY) $(ENABLE_CUSTOM_ELEMENTS) $(ENABLE_CUSTOM_SCHEME_HANDLER) $(ENABLE_DASHBOARD_SUPPORT) $(ENABLE_DATA_TRANSFER_ITEMS) $(ENABLE_DATACUE_VALUE) $(ENABLE_DATALIST_ELEMENT) $(ENABLE_DETAILS_ELEMENT) $(ENABLE_DEVICE_ORIENTATION) $(ENABLE_ENCRYPTED_MEDIA) $(ENABLE_ES2017_ASYNCFUNCTION_SYNTAX) $(ENABLE_ES6_MODULES) $(ENABLE_FETCH_API) $(ENABLE_FILTERS_LEVEL_2) $(ENABLE_FONT_LOAD_EVENTS) $(ENABLE_FTL_JIT) $(ENABLE_FULLSCREEN_API) $(ENABLE_GAMEPAD_DEPRECATED) $(ENABLE_GAMEPAD) $(ENABLE_GEOLOCATION) $(ENABLE_ICONDATABASE) $(ENABLE_INDEXED_DATABASE_IN_WORKERS) $(ENABLE_INDEXED_DATABASE) $(ENABLE_INDIE_UI) $(ENABLE_INPUT_TYPE_COLOR_POPOVER) $(ENABLE_INPUT_TYPE_COLOR) $(ENABLE_INPUT_TYPE_DATE) $(ENABLE_INPUT_TYPE_DATETIME_INCOMPLETE) $(ENABLE_INPUT_TYPE_DATETIMELOCAL) $(ENABLE_INPUT_TYPE_MONTH) $(ENABLE_INPUT_TYPE_TIME) $(ENABLE_INPUT_TYPE_WEEK) $(ENABLE_INTERSECTION_OBSERVER) $(ENABLE_INTL) $(ENABLE_IOS_GESTURE_EVENTS) $(ENABLE_IOS_TOUCH_EVENTS) $(ENABLE_JIT) $(ENABLE_LEGACY_CSS_VENDOR_PREFIXES) $(ENABLE_LEGACY_ENCRYPTED_MEDIA) $(ENABLE_LEGACY_NOTIFICATIONS) $(ENABLE_LEGACY_VENDOR_PREFIXES) $(ENABLE_LETTERPRESS) $(ENABLE_LINK_PREFETCH) $(ENABLE_MAC_GESTURE_EVENTS) $(ENABLE_MATHML) $(ENABLE_MEDIA_CAPTURE) $(ENABLE_MEDIA_CONTROLS_SCRIPT) $(ENABLE_MEDIA_SESSION) $(ENABLE_MEDIA_SOURCE) $(ENABLE_MEDIA_STATISTICS) $(ENABLE_MEDIA_STREAM) $(ENABLE_METER_ELEMENT) $(ENABLE_MHTML) $(ENABLE_MOUSE_CURSOR_SCALE) $(ENABLE_NAVIGATOR_CONTENT_UTILS) $(ENABLE_NAVIGATOR_HWCONCURRENCY) $(ENABLE_NOTIFICATIONS) $(ENABLE_PDFKIT_PLUGIN) $(ENABLE_POINTER_LOCK) $(ENABLE_PROXIMITY_EVENTS) $(ENABLE_PUBLIC_SUFFIX_LIST) $(ENABLE_QUOTA) $(ENABLE_READABLE_STREAM_API) $(ENABLE_REMOTE_INSPECTOR) $(ENABLE_REQUEST_ANIMATION_FRAME) $(ENABLE_REQUEST_AUTOCOMPLETE) $(ENABLE_RESOLUTION_MEDIA_QUERY) $(ENABLE_RESOURCE_USAGE) $(ENABLE_RUBBER_BANDING) $(ENABLE_SERVICE_CONTROLS) $(ENABLE_SPEECH_SYNTHESIS) $(ENABLE_SUBTLE_CRYPTO) $(ENABLE_SVG_FONTS) $(ENABLE_TELEPHONE_NUMBER_DETECTION) $(ENABLE_TEXT_AUTOSIZING) $(ENABLE_TOUCH_EVENTS) $(ENABLE_TOUCH_ICON_LOADING) $(ENABLE_USERSELECT_ALL) $(ENABLE_VARIATION_FONTS) $(ENABLE_VIDEO_PRESENTATION_MODE) $(ENABLE_VIDEO_TRACK) $(ENABLE_VIDEO) $(ENABLE_VIEW_MODE_CSS_MEDIA) $(ENABLE_WEB_ANIMATIONS) $(ENABLE_WEB_AUDIO) $(ENABLE_WEB_REPLAY) $(ENABLE_WEB_RTC) $(ENABLE_WEB_SOCKETS) $(ENABLE_WEB_TIMING) $(ENABLE_WEBASSEMBLY) $(ENABLE_WEBGL) $(ENABLE_WEBGL2) $(ENABLE_WIRELESS_PLAYBACK_TARGET) $(ENABLE_WRITABLE_STREAM_API) $(ENABLE_XSLT);
index 7d1a63b..5107d05 100644 (file)
@@ -1,3 +1,14 @@
+2016-10-31  Simon Fraser  <simon.fraser@apple.com>
+
+        Implement IntersectionObserver
+        https://bugs.webkit.org/show_bug.cgi?id=159475
+
+        Reviewed by Ryosuke Niwa.
+        
+        Add ENABLE_INTERSECTION_OBSERVER, enabled by default.
+
+        * TestWebKitAPI/Configurations/FeatureDefines.xcconfig:
+
 2016-10-31  Ryan Haddad  <ryanhaddad@apple.com>
 
         Unreviewed, rolling out r208154.
index 9dd1dc0..b8fa3d0 100644 (file)
@@ -90,6 +90,7 @@ ENABLE_GAMEPAD[sdk=watch*] = ;
 ENABLE_GAMEPAD_DEPRECATED = ;
 ENABLE_GEOLOCATION = ENABLE_GEOLOCATION;
 ENABLE_ICONDATABASE[sdk=macosx*] = ENABLE_ICONDATABASE;
+ENABLE_INTERSECTION_OBSERVER = ENABLE_INTERSECTION_OBSERVER;
 ENABLE_SERVICE_CONTROLS[sdk=macosx*] = ENABLE_SERVICE_CONTROLS;
 ENABLE_INDEXED_DATABASE = ENABLE_INDEXED_DATABASE;
 ENABLE_INDEXED_DATABASE_IN_WORKERS = ENABLE_INDEXED_DATABASE_IN_WORKERS;
@@ -219,4 +220,4 @@ ENABLE_VARIATION_FONTS_IF_NOT_ = $(ENABLE_VARIATION_FONTS_IF_NOT_NO);
 ENABLE_VARIATION_FONTS_IF_NOT_NO = ENABLE_VARIATION_FONTS;
 ENABLE_VARIATION_FONTS_IF_NOT_YES = ;
 
-FEATURE_DEFINES = $(ENABLE_3D_TRANSFORMS) $(ENABLE_ACCELERATED_2D_CANVAS) $(ENABLE_ACCELERATED_OVERFLOW_SCROLLING) $(ENABLE_APPLE_PAY) $(ENABLE_ATTACHMENT_ELEMENT) $(ENABLE_AVF_CAPTIONS) $(ENABLE_CACHE_PARTITIONING) $(ENABLE_CANVAS_PATH) $(ENABLE_CANVAS_PROXY) $(ENABLE_CHANNEL_MESSAGING) $(ENABLE_CONTENT_FILTERING) $(ENABLE_CSP_NEXT) $(ENABLE_CSS_ANIMATIONS_LEVEL_2) $(ENABLE_CSS_BOX_DECORATION_BREAK) $(ENABLE_CSS_COMPOSITING) $(ENABLE_CSS_DEVICE_ADAPTATION) $(ENABLE_CSS_GRID_LAYOUT) $(ENABLE_CSS_IMAGE_ORIENTATION) $(ENABLE_CSS_IMAGE_RESOLUTION) $(ENABLE_CSS_REGIONS) $(ENABLE_CSS_SCROLL_SNAP) $(ENABLE_CSS_SELECTORS_LEVEL4) $(ENABLE_CSS_TRAILING_WORD) $(ENABLE_CSS3_TEXT) $(ENABLE_CURSOR_VISIBILITY) $(ENABLE_CUSTOM_ELEMENTS) $(ENABLE_CUSTOM_SCHEME_HANDLER) $(ENABLE_DASHBOARD_SUPPORT) $(ENABLE_DATA_TRANSFER_ITEMS) $(ENABLE_DATACUE_VALUE) $(ENABLE_DATALIST_ELEMENT) $(ENABLE_DETAILS_ELEMENT) $(ENABLE_DEVICE_ORIENTATION) $(ENABLE_ENCRYPTED_MEDIA) $(ENABLE_ES6_MODULES) $(ENABLE_ES2017_ASYNCFUNCTION_SYNTAX) $(ENABLE_FETCH_API) $(ENABLE_FILTERS_LEVEL_2) $(ENABLE_FONT_LOAD_EVENTS) $(ENABLE_FTL_JIT) $(ENABLE_FULLSCREEN_API) $(ENABLE_GAMEPAD_DEPRECATED) $(ENABLE_GAMEPAD) $(ENABLE_GEOLOCATION) $(ENABLE_ICONDATABASE) $(ENABLE_INDEXED_DATABASE_IN_WORKERS) $(ENABLE_INDEXED_DATABASE) $(ENABLE_INDIE_UI) $(ENABLE_INPUT_TYPE_COLOR_POPOVER) $(ENABLE_INPUT_TYPE_COLOR) $(ENABLE_INPUT_TYPE_DATE) $(ENABLE_INPUT_TYPE_DATETIME_INCOMPLETE) $(ENABLE_INPUT_TYPE_DATETIMELOCAL) $(ENABLE_INPUT_TYPE_MONTH) $(ENABLE_INPUT_TYPE_TIME) $(ENABLE_INPUT_TYPE_WEEK) $(ENABLE_INTL) $(ENABLE_IOS_GESTURE_EVENTS) $(ENABLE_IOS_TOUCH_EVENTS) $(ENABLE_JIT) $(ENABLE_LEGACY_CSS_VENDOR_PREFIXES) $(ENABLE_LEGACY_ENCRYPTED_MEDIA) $(ENABLE_LEGACY_NOTIFICATIONS) $(ENABLE_LEGACY_VENDOR_PREFIXES) $(ENABLE_LETTERPRESS) $(ENABLE_LINK_PREFETCH) $(ENABLE_MAC_GESTURE_EVENTS) $(ENABLE_MATHML) $(ENABLE_MEDIA_CAPTURE) $(ENABLE_MEDIA_CONTROLS_SCRIPT) $(ENABLE_MEDIA_SESSION) $(ENABLE_MEDIA_SOURCE) $(ENABLE_MEDIA_STATISTICS) $(ENABLE_MEDIA_STREAM) $(ENABLE_METER_ELEMENT) $(ENABLE_MHTML) $(ENABLE_MOUSE_CURSOR_SCALE) $(ENABLE_NAVIGATOR_CONTENT_UTILS) $(ENABLE_NAVIGATOR_HWCONCURRENCY) $(ENABLE_NOTIFICATIONS) $(ENABLE_PDFKIT_PLUGIN) $(ENABLE_POINTER_LOCK) $(ENABLE_PROXIMITY_EVENTS) $(ENABLE_PUBLIC_SUFFIX_LIST) $(ENABLE_QUOTA) $(ENABLE_READABLE_STREAM_API) $(ENABLE_REMOTE_INSPECTOR) $(ENABLE_REQUEST_ANIMATION_FRAME) $(ENABLE_REQUEST_AUTOCOMPLETE) $(ENABLE_RESOLUTION_MEDIA_QUERY) $(ENABLE_RESOURCE_USAGE) $(ENABLE_RUBBER_BANDING) $(ENABLE_SERVICE_CONTROLS) $(ENABLE_SPEECH_SYNTHESIS) $(ENABLE_SUBTLE_CRYPTO) $(ENABLE_SVG_FONTS) $(ENABLE_TELEPHONE_NUMBER_DETECTION) $(ENABLE_TEXT_AUTOSIZING) $(ENABLE_TOUCH_EVENTS) $(ENABLE_TOUCH_ICON_LOADING) $(ENABLE_USERSELECT_ALL) $(ENABLE_VIDEO_PRESENTATION_MODE) $(ENABLE_VIDEO_TRACK) $(ENABLE_VIDEO) $(ENABLE_VIEW_MODE_CSS_MEDIA) $(ENABLE_WEB_ANIMATIONS) $(ENABLE_WEB_AUDIO) $(ENABLE_WEB_REPLAY) $(ENABLE_WEB_RTC) $(ENABLE_WEB_SOCKETS) $(ENABLE_WEB_TIMING) $(ENABLE_WEBASSEMBLY) $(ENABLE_WEBGL) $(ENABLE_WEBGL2) $(ENABLE_WIRELESS_PLAYBACK_TARGET) $(ENABLE_WRITABLE_STREAM_API) $(ENABLE_XSLT) $(ENABLE_VARIATION_FONTS);
+FEATURE_DEFINES = $(ENABLE_3D_TRANSFORMS) $(ENABLE_ACCELERATED_2D_CANVAS) $(ENABLE_ACCELERATED_OVERFLOW_SCROLLING) $(ENABLE_APPLE_PAY) $(ENABLE_ATTACHMENT_ELEMENT) $(ENABLE_AVF_CAPTIONS) $(ENABLE_CACHE_PARTITIONING) $(ENABLE_CANVAS_PATH) $(ENABLE_CANVAS_PROXY) $(ENABLE_CHANNEL_MESSAGING) $(ENABLE_CONTENT_FILTERING) $(ENABLE_CSP_NEXT) $(ENABLE_CSS_ANIMATIONS_LEVEL_2) $(ENABLE_CSS_BOX_DECORATION_BREAK) $(ENABLE_CSS_COMPOSITING) $(ENABLE_CSS_DEVICE_ADAPTATION) $(ENABLE_CSS_GRID_LAYOUT) $(ENABLE_CSS_IMAGE_ORIENTATION) $(ENABLE_CSS_IMAGE_RESOLUTION) $(ENABLE_CSS_REGIONS) $(ENABLE_CSS_SCROLL_SNAP) $(ENABLE_CSS_SELECTORS_LEVEL4) $(ENABLE_CSS_TRAILING_WORD) $(ENABLE_CSS3_TEXT) $(ENABLE_CURSOR_VISIBILITY) $(ENABLE_CUSTOM_ELEMENTS) $(ENABLE_CUSTOM_SCHEME_HANDLER) $(ENABLE_DASHBOARD_SUPPORT) $(ENABLE_DATA_TRANSFER_ITEMS) $(ENABLE_DATACUE_VALUE) $(ENABLE_DATALIST_ELEMENT) $(ENABLE_DETAILS_ELEMENT) $(ENABLE_DEVICE_ORIENTATION) $(ENABLE_ENCRYPTED_MEDIA) $(ENABLE_ES2017_ASYNCFUNCTION_SYNTAX) $(ENABLE_ES6_MODULES) $(ENABLE_FETCH_API) $(ENABLE_FILTERS_LEVEL_2) $(ENABLE_FONT_LOAD_EVENTS) $(ENABLE_FTL_JIT) $(ENABLE_FULLSCREEN_API) $(ENABLE_GAMEPAD_DEPRECATED) $(ENABLE_GAMEPAD) $(ENABLE_GEOLOCATION) $(ENABLE_ICONDATABASE) $(ENABLE_INDEXED_DATABASE_IN_WORKERS) $(ENABLE_INDEXED_DATABASE) $(ENABLE_INDIE_UI) $(ENABLE_INPUT_TYPE_COLOR_POPOVER) $(ENABLE_INPUT_TYPE_COLOR) $(ENABLE_INPUT_TYPE_DATE) $(ENABLE_INPUT_TYPE_DATETIME_INCOMPLETE) $(ENABLE_INPUT_TYPE_DATETIMELOCAL) $(ENABLE_INPUT_TYPE_MONTH) $(ENABLE_INPUT_TYPE_TIME) $(ENABLE_INPUT_TYPE_WEEK) $(ENABLE_INTERSECTION_OBSERVER) $(ENABLE_INTL) $(ENABLE_IOS_GESTURE_EVENTS) $(ENABLE_IOS_TOUCH_EVENTS) $(ENABLE_JIT) $(ENABLE_LEGACY_CSS_VENDOR_PREFIXES) $(ENABLE_LEGACY_ENCRYPTED_MEDIA) $(ENABLE_LEGACY_NOTIFICATIONS) $(ENABLE_LEGACY_VENDOR_PREFIXES) $(ENABLE_LETTERPRESS) $(ENABLE_LINK_PREFETCH) $(ENABLE_MAC_GESTURE_EVENTS) $(ENABLE_MATHML) $(ENABLE_MEDIA_CAPTURE) $(ENABLE_MEDIA_CONTROLS_SCRIPT) $(ENABLE_MEDIA_SESSION) $(ENABLE_MEDIA_SOURCE) $(ENABLE_MEDIA_STATISTICS) $(ENABLE_MEDIA_STREAM) $(ENABLE_METER_ELEMENT) $(ENABLE_MHTML) $(ENABLE_MOUSE_CURSOR_SCALE) $(ENABLE_NAVIGATOR_CONTENT_UTILS) $(ENABLE_NAVIGATOR_HWCONCURRENCY) $(ENABLE_NOTIFICATIONS) $(ENABLE_PDFKIT_PLUGIN) $(ENABLE_POINTER_LOCK) $(ENABLE_PROXIMITY_EVENTS) $(ENABLE_PUBLIC_SUFFIX_LIST) $(ENABLE_QUOTA) $(ENABLE_READABLE_STREAM_API) $(ENABLE_REMOTE_INSPECTOR) $(ENABLE_REQUEST_ANIMATION_FRAME) $(ENABLE_REQUEST_AUTOCOMPLETE) $(ENABLE_RESOLUTION_MEDIA_QUERY) $(ENABLE_RESOURCE_USAGE) $(ENABLE_RUBBER_BANDING) $(ENABLE_SERVICE_CONTROLS) $(ENABLE_SPEECH_SYNTHESIS) $(ENABLE_SUBTLE_CRYPTO) $(ENABLE_SVG_FONTS) $(ENABLE_TELEPHONE_NUMBER_DETECTION) $(ENABLE_TEXT_AUTOSIZING) $(ENABLE_TOUCH_EVENTS) $(ENABLE_TOUCH_ICON_LOADING) $(ENABLE_USERSELECT_ALL) $(ENABLE_VARIATION_FONTS) $(ENABLE_VIDEO_PRESENTATION_MODE) $(ENABLE_VIDEO_TRACK) $(ENABLE_VIDEO) $(ENABLE_VIEW_MODE_CSS_MEDIA) $(ENABLE_WEB_ANIMATIONS) $(ENABLE_WEB_AUDIO) $(ENABLE_WEB_REPLAY) $(ENABLE_WEB_RTC) $(ENABLE_WEB_SOCKETS) $(ENABLE_WEB_TIMING) $(ENABLE_WEBASSEMBLY) $(ENABLE_WEBGL) $(ENABLE_WEBGL2) $(ENABLE_WIRELESS_PLAYBACK_TARGET) $(ENABLE_WRITABLE_STREAM_API) $(ENABLE_XSLT);