Title: [160367] trunk/Source/WebCore
Revision
160367
Author
mrobin...@webkit.org
Date
2013-12-10 08:41:41 -0800 (Tue, 10 Dec 2013)

Log Message

[GTK] [CMake] Add support for building the DOM bindings
https://bugs.webkit.org/show_bug.cgi?id=116375

Reviewed by Gustavo Noronha Silva.

The CMake build is more complete than the autotools counterpart, so autotools doesn't consider
some supplemental IDL attributes when building the DOM bindings. To prevent API breaks we should
protect these attributes from DOM binding generation.

* Modules/battery/BatteryManager.idl: Protect non-GObject DOM bound methods by C preprocessor checks.
* Modules/battery/NavigatorBattery.idl: Ditto.
* Modules/mediastream/HTMLMediaElementMediaStream.idl: Ditto.
* Modules/networkinfo/NavigatorNetworkInfoConnection.idl: Ditto.
* Modules/networkinfo/NetworkInfoConnection.idl: Ditto.
* PlatformGTK.cmake: Add build steps for building the bindings.
* dom/Document.idl: Protect non-GObject DOM bound methods by C preprocessor checks.
* html/HTMLMediaElement.idl: Ditto.

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (160366 => 160367)


--- trunk/Source/WebCore/ChangeLog	2013-12-10 16:37:35 UTC (rev 160366)
+++ trunk/Source/WebCore/ChangeLog	2013-12-10 16:41:41 UTC (rev 160367)
@@ -1,5 +1,25 @@
 2013-12-10  Martin Robinson  <mrobin...@igalia.com>
 
+        [GTK] [CMake] Add support for building the DOM bindings
+        https://bugs.webkit.org/show_bug.cgi?id=116375
+
+        Reviewed by Gustavo Noronha Silva.
+
+        The CMake build is more complete than the autotools counterpart, so autotools doesn't consider
+        some supplemental IDL attributes when building the DOM bindings. To prevent API breaks we should
+        protect these attributes from DOM binding generation.
+
+        * Modules/battery/BatteryManager.idl: Protect non-GObject DOM bound methods by C preprocessor checks.
+        * Modules/battery/NavigatorBattery.idl: Ditto.
+        * Modules/mediastream/HTMLMediaElementMediaStream.idl: Ditto.
+        * Modules/networkinfo/NavigatorNetworkInfoConnection.idl: Ditto.
+        * Modules/networkinfo/NetworkInfoConnection.idl: Ditto.
+        * PlatformGTK.cmake: Add build steps for building the bindings.
+        * dom/Document.idl: Protect non-GObject DOM bound methods by C preprocessor checks.
+        * html/HTMLMediaElement.idl: Ditto.
+
+2013-12-10  Martin Robinson  <mrobin...@igalia.com>
+
         Various fixes for the CMake GTK+ build
 
         Reviewed by Gustavo Noronha.

Modified: trunk/Source/WebCore/Modules/battery/BatteryManager.idl (160366 => 160367)


--- trunk/Source/WebCore/Modules/battery/BatteryManager.idl	2013-12-10 16:37:35 UTC (rev 160366)
+++ trunk/Source/WebCore/Modules/battery/BatteryManager.idl	2013-12-10 16:41:41 UTC (rev 160367)
@@ -18,6 +18,7 @@
  */
 
 // http://dev.w3.org/2009/dap/system-info/battery-status.html
+#if !defined(LANGUAGE_GOBJECT) || !LANGUAGE_OBJECT
 [
     NoInterfaceObject,
     Conditional=BATTERY_STATUS,
@@ -43,4 +44,4 @@
                              optional boolean useCapture);
     [RaisesException] boolean dispatchEvent(Event event);
 };
-
+#endif

Modified: trunk/Source/WebCore/Modules/battery/NavigatorBattery.idl (160366 => 160367)


--- trunk/Source/WebCore/Modules/battery/NavigatorBattery.idl	2013-12-10 16:37:35 UTC (rev 160366)
+++ trunk/Source/WebCore/Modules/battery/NavigatorBattery.idl	2013-12-10 16:41:41 UTC (rev 160367)
@@ -17,9 +17,10 @@
  *  Boston, MA 02110-1301, USA.
  */
 
+#if !defined(LANGUAGE_GOBJECT) || !LANGUAGE_GOBJECT
 [
     Conditional=BATTERY_STATUS,
 ] partial interface Navigator {
     readonly attribute BatteryManager webkitBattery;
 };
-
+#endif

Modified: trunk/Source/WebCore/Modules/mediastream/HTMLMediaElementMediaStream.idl (160366 => 160367)


--- trunk/Source/WebCore/Modules/mediastream/HTMLMediaElementMediaStream.idl	2013-12-10 16:37:35 UTC (rev 160366)
+++ trunk/Source/WebCore/Modules/mediastream/HTMLMediaElementMediaStream.idl	2013-12-10 16:41:41 UTC (rev 160367)
@@ -27,5 +27,7 @@
     Conditional=VIDEO&MEDIA_STREAM,
 ] partial interface HTMLMediaElement
 {
+#if !defined(LANGUAGE_GOBJECT) || !LANGUAGE_GOBJECT
     attribute MediaStream? srcObject;
+#endif
 };

Modified: trunk/Source/WebCore/Modules/networkinfo/NavigatorNetworkInfoConnection.idl (160366 => 160367)


--- trunk/Source/WebCore/Modules/networkinfo/NavigatorNetworkInfoConnection.idl	2013-12-10 16:37:35 UTC (rev 160366)
+++ trunk/Source/WebCore/Modules/networkinfo/NavigatorNetworkInfoConnection.idl	2013-12-10 16:41:41 UTC (rev 160367)
@@ -17,9 +17,10 @@
  * Boston, MA 02110-1301, USA.
  */
 
+#if !defined(LANGUAGE_GOBJECT) || !LANGUAGE_GOBJECT
 [
     Conditional=NETWORK_INFO,
 ] partial interface Navigator {
     readonly attribute NetworkInfoConnection webkitConnection;
 };
-
+#endif

Modified: trunk/Source/WebCore/Modules/networkinfo/NetworkInfoConnection.idl (160366 => 160367)


--- trunk/Source/WebCore/Modules/networkinfo/NetworkInfoConnection.idl	2013-12-10 16:37:35 UTC (rev 160366)
+++ trunk/Source/WebCore/Modules/networkinfo/NetworkInfoConnection.idl	2013-12-10 16:41:41 UTC (rev 160367)
@@ -20,6 +20,7 @@
  */
 
 // http://dvcs.w3.org/hg/dap/raw-file/tip/network-api/index.html
+#if !defined(LANGUAGE_GOBJECT) || !LANGUAGE_GOBJECT
 [
     NoInterfaceObject,
     Conditional=NETWORK_INFO,
@@ -40,3 +41,4 @@
                              optional boolean useCapture);
     [RaisesException] boolean dispatchEvent(Event evt);
 };
+#endif

Modified: trunk/Source/WebCore/PlatformGTK.cmake (160366 => 160367)


--- trunk/Source/WebCore/PlatformGTK.cmake	2013-12-10 16:37:35 UTC (rev 160366)
+++ trunk/Source/WebCore/PlatformGTK.cmake	2013-12-10 16:41:41 UTC (rev 160367)
@@ -360,3 +360,257 @@
             DESTINATION
                 "${DATA_INSTALL_DIR}/resources/audio")
 endif ()
+
+if (ENABLE_WEBKIT2)
+    set(DERIVED_SOURCES_GOBJECT_DOM_BINDINGS_DIR ${DERIVED_SOURCES_DIR}/webkitdom)
+
+    include_directories(
+        "${WebCore_INCLUDE_DIRECTORIES}"
+        "${DERIVED_SOURCES_DIR}"
+        "${DERIVED_SOURCES_GOBJECT_DOM_BINDINGS_DIR}"
+    )
+
+    list(APPEND GObjectDOMBindings_SOURCES
+        bindings/gobject/ConvertToUTF8String.cpp
+        bindings/gobject/ConvertToUTF8String.h
+        bindings/gobject/DOMObjectCache.cpp
+        bindings/gobject/DOMObjectCache.h
+        bindings/gobject/GObjectEventListener.cpp
+        bindings/gobject/GObjectEventListener.h
+        bindings/gobject/WebKitDOMCustom.cpp
+        bindings/gobject/WebKitDOMCustom.h
+        bindings/gobject/WebKitDOMEventTarget.cpp
+        bindings/gobject/WebKitDOMEventTarget.h
+        bindings/gobject/WebKitDOMEventTargetPrivate.h
+        bindings/gobject/WebKitDOMHTMLPrivate.cpp
+        bindings/gobject/WebKitDOMHTMLPrivate.h
+        bindings/gobject/WebKitDOMObject.cpp
+        bindings/gobject/WebKitDOMObject.h
+        bindings/gobject/WebKitDOMPrivate.cpp
+        bindings/gobject/WebKitDOMPrivate.h
+        ${DERIVED_SOURCES_GOBJECT_DOM_BINDINGS_DIR}/webkitdomdefines.h
+        ${DERIVED_SOURCES_GOBJECT_DOM_BINDINGS_DIR}/webkitdom.h
+    )
+
+    list(APPEND GObjectDOMBindings_IDL_FILES
+        Modules/battery/BatteryManager.idl
+        Modules/gamepad/Gamepad.idl
+        Modules/gamepad/GamepadList.idl
+        Modules/geolocation/Geolocation.idl
+        Modules/quota/StorageInfo.idl
+        Modules/quota/StorageQuota.idl
+        Modules/webdatabase/Database.idl
+
+        css/CSSRule.idl
+        css/CSSRuleList.idl
+        css/CSSStyleDeclaration.idl
+        css/CSSStyleSheet.idl
+        css/CSSValue.idl
+        css/DOMWindowCSS.idl
+        css/MediaList.idl
+        css/MediaQueryList.idl
+        css/StyleMedia.idl
+        css/StyleSheet.idl
+        css/StyleSheetList.idl
+
+        dom/Attr.idl
+        dom/CDATASection.idl
+        dom/CharacterData.idl
+        dom/Comment.idl
+        dom/DOMImplementation.idl
+        dom/DOMNamedFlowCollection.idl
+        dom/DOMStringList.idl
+        dom/DOMStringMap.idl
+        dom/Document.idl
+        dom/DocumentFragment.idl
+        dom/DocumentType.idl
+        dom/Element.idl
+        dom/EntityReference.idl
+        dom/Event.idl
+        dom/KeyboardEvent.idl
+        dom/MessagePort.idl
+        dom/MouseEvent.idl
+        dom/NamedNodeMap.idl
+        dom/Node.idl
+        dom/NodeFilter.idl
+        dom/NodeIterator.idl
+        dom/NodeList.idl
+        dom/ProcessingInstruction.idl
+        dom/Range.idl
+        dom/ShadowRoot.idl
+        dom/Text.idl
+        dom/TreeWalker.idl
+        dom/UIEvent.idl
+        dom/WebKitNamedFlow.idl
+        dom/WheelEvent.idl
+
+        fileapi/Blob.idl
+        fileapi/File.idl
+        fileapi/FileList.idl
+
+        html/DOMSettableTokenList.idl
+        html/DOMTokenList.idl
+        html/HTMLAnchorElement.idl
+        html/HTMLAppletElement.idl
+        html/HTMLAreaElement.idl
+        html/HTMLBRElement.idl
+        html/HTMLBaseElement.idl
+        html/HTMLBaseFontElement.idl
+        html/HTMLBodyElement.idl
+        html/HTMLButtonElement.idl
+        html/HTMLCanvasElement.idl
+        html/HTMLCollection.idl
+        html/HTMLDListElement.idl
+        html/HTMLDetailsElement.idl
+        html/HTMLDirectoryElement.idl
+        html/HTMLDivElement.idl
+        html/HTMLDocument.idl
+        html/HTMLElement.idl
+        html/HTMLEmbedElement.idl
+        html/HTMLFieldSetElement.idl
+        html/HTMLFontElement.idl
+        html/HTMLFormElement.idl
+        html/HTMLFrameElement.idl
+        html/HTMLFrameSetElement.idl
+        html/HTMLHRElement.idl
+        html/HTMLHeadElement.idl
+        html/HTMLHeadingElement.idl
+        html/HTMLHtmlElement.idl
+        html/HTMLIFrameElement.idl
+        html/HTMLImageElement.idl
+        html/HTMLInputElement.idl
+        html/HTMLKeygenElement.idl
+        html/HTMLLIElement.idl
+        html/HTMLLabelElement.idl
+        html/HTMLLegendElement.idl
+        html/HTMLLinkElement.idl
+        html/HTMLMapElement.idl
+        html/HTMLMarqueeElement.idl
+        html/HTMLMediaElement.idl
+        html/HTMLMenuElement.idl
+        html/HTMLMetaElement.idl
+        html/HTMLModElement.idl
+        html/HTMLOListElement.idl
+        html/HTMLObjectElement.idl
+        html/HTMLOptGroupElement.idl
+        html/HTMLOptionElement.idl
+        html/HTMLOptionsCollection.idl
+        html/HTMLParagraphElement.idl
+        html/HTMLParamElement.idl
+        html/HTMLPreElement.idl
+        html/HTMLQuoteElement.idl
+        html/HTMLScriptElement.idl
+        html/HTMLSelectElement.idl
+        html/HTMLStyleElement.idl
+        html/HTMLTableCaptionElement.idl
+        html/HTMLTableCellElement.idl
+        html/HTMLTableColElement.idl
+        html/HTMLTableElement.idl
+        html/HTMLTableRowElement.idl
+        html/HTMLTableSectionElement.idl
+        html/HTMLTextAreaElement.idl
+        html/HTMLTitleElement.idl
+        html/HTMLUListElement.idl
+        html/MediaController.idl
+        html/MediaError.idl
+        html/TimeRanges.idl
+        html/ValidityState.idl
+
+        loader/appcache/DOMApplicationCache.idl
+
+        page/BarProp.idl
+        page/Console.idl
+        page/DOMSecurityPolicy.idl
+        page/DOMSelection.idl
+        page/DOMWindow.idl
+        page/History.idl
+        page/Location.idl
+        page/Navigator.idl
+        page/Performance.idl
+        page/PerformanceEntry.idl
+        page/PerformanceEntryList.idl
+        page/PerformanceNavigation.idl
+        page/PerformanceTiming.idl
+        page/Screen.idl
+        page/WebKitPoint.idl
+
+        plugins/DOMMimeType.idl
+        plugins/DOMMimeTypeArray.idl
+        plugins/DOMPlugin.idl
+        plugins/DOMPluginArray.idl
+
+        storage/Storage.idl
+
+        xml/XPathExpression.idl
+        xml/XPathNSResolver.idl
+        xml/XPathResult.idl
+    )
+
+    if (ENABLE_VIDEO OR ENABLE_WEB_AUDIO)
+        list(APPEND GObjectDOMBindings_IDL_FILES
+            html/HTMLAudioElement.idl
+            html/HTMLVideoElement.idl
+
+            html/track/AudioTrack.idl
+            html/track/AudioTrackList.idl
+            html/track/TextTrack.idl
+            html/track/TextTrackCue.idl
+            html/track/TextTrackCueList.idl
+            html/track/TextTrackList.idl
+            html/track/TrackEvent.idl
+            html/track/VideoTrack.idl
+            html/track/VideoTrackList.idl
+        )
+    endif ()
+
+    foreach (file Custom EventTarget Object Deprecated ${GObjectDOMBindings_IDL_FILES})
+        get_filename_component(file ${file} NAME_WE)
+        list(APPEND GObjectDOMBindings_CLASS_LIST ${file})
+    endforeach ()
+
+    set(GOBJECT_DOM_BINDINGS_FEATURES_DEFINES "LANGUAGE_GOBJECT=1 ${FEATURE_DEFINES_WITH_SPACE_SEPARATOR}")
+    string(REPLACE "ENABLE_INDEXED_DATABASE=1" "" GOBJECT_DOM_BINDINGS_FEATURES_DEFINES ${GOBJECT_DOM_BINDINGS_FEATURES_DEFINES})
+    string(REPLACE REGEX "ENABLE_SVG[A-Z_]+=1" "" GOBJECT_DOM_BINDINGS_FEATURES_DEFINES ${GOBJECT_DOM_BINDINGS_FEATURES_DEFINES})
+
+    file(MAKE_DIRECTORY ${DERIVED_SOURCES_GOBJECT_DOM_BINDINGS_DIR})
+
+    add_custom_command(
+        OUTPUT ${DERIVED_SOURCES_GOBJECT_DOM_BINDINGS_DIR}/webkitdomdefines.h
+        COMMAND echo ${GObjectDOMBindings_CLASS_LIST} | ${PERL_EXECUTABLE} ${WEBCORE_DIR}/bindings/scripts/gobject-generate-headers.pl defines > ${DERIVED_SOURCES_GOBJECT_DOM_BINDINGS_DIR}/webkitdomdefines.h
+    )
+
+    add_custom_command(
+        OUTPUT ${DERIVED_SOURCES_GOBJECT_DOM_BINDINGS_DIR}/webkitdom.h
+        COMMAND echo ${GObjectDOMBindings_CLASS_LIST} | ${PERL_EXECUTABLE} ${WEBCORE_DIR}/bindings/scripts/gobject-generate-headers.pl gdom > ${DERIVED_SOURCES_GOBJECT_DOM_BINDINGS_DIR}/webkitdom.h
+    )
+
+    add_custom_target(fake-installed-webkitdom-headers
+        COMMAND ln -n -s -f ${WEBCORE_DIR}/bindings/gobject/* ${DERIVED_SOURCES_GOBJECT_DOM_BINDINGS_DIR}
+    )
+
+    GENERATE_BINDINGS(GObjectDOMBindings_SOURCES
+        "${GObjectDOMBindings_IDL_FILES}"
+        "${WEBCORE_DIR}"
+        "${IDL_INCLUDES}"
+        "${GOBJECT_DOM_BINDINGS_FEATURES_DEFINES}"
+        ${DERIVED_SOURCES_GOBJECT_DOM_BINDINGS_DIR}
+        WebKitDOM GObject
+        ${IDL_ATTRIBUTES_FILE}
+        ${SUPPLEMENTAL_DEPENDENCY_FILE}
+        ${WINDOW_CONSTRUCTORS_FILE}
+        ${WORKERGLOBALSCOPE_CONSTRUCTORS_FILE}
+        ${SHAREDWORKERGLOBALSCOPE_CONSTRUCTORS_FILE}
+        ${DEDICATEDWORKERGLOBALSCOPE_CONSTRUCTORS_FILE})
+
+    add_definitions(-DBUILDING_WEBKIT)
+
+    add_library(GObjectDOMBindings STATIC ${GObjectDOMBindings_SOURCES})
+
+    WEBKIT_SET_EXTRA_COMPILER_FLAGS(GObjectDOMBindings)
+
+    add_dependencies(GObjectDOMBindings
+        WebCore
+        fake-installed-webkitdom-headers
+    )
+endif ()
+

Modified: trunk/Source/WebCore/dom/Document.idl (160366 => 160367)


--- trunk/Source/WebCore/dom/Document.idl	2013-12-10 16:37:35 UTC (rev 160366)
+++ trunk/Source/WebCore/dom/Document.idl	2013-12-10 16:41:41 UTC (rev 160367)
@@ -239,7 +239,7 @@
     [Conditional=FONT_LOAD_EVENTS] readonly attribute FontLoader fontloader;
 #endif
 
-#if !defined(LANGUAGE_OBJECTIVE_C) || !LANGUAGE_OBJECTIVE_C
+#if (!defined(LANGUAGE_OBJECTIVE_C) || !LANGUAGE_OBJECTIVE_C) && (!defined(LANGUAGE_GOBJECT) || !LANGUAGE_GOBJECT)
     // Event handler DOM attributes
     [NotEnumerable] attribute EventListener onabort;
     [NotEnumerable] attribute EventListener onblur;

Modified: trunk/Source/WebCore/html/HTMLMediaElement.idl (160366 => 160367)


--- trunk/Source/WebCore/html/HTMLMediaElement.idl	2013-12-10 16:37:35 UTC (rev 160366)
+++ trunk/Source/WebCore/html/HTMLMediaElement.idl	2013-12-10 16:41:41 UTC (rev 160367)
@@ -108,7 +108,7 @@
     [ImplementedAs=setMediaKeys] void webkitSetMediaKeys(MediaKeys mediaKeys);
 #endif
 
-#if defined(ENABLE_VIDEO_TRACK) && ENABLE_VIDEO_TRACK
+#if defined(ENABLE_VIDEO_TRACK) && ENABLE_VIDEO_TRACK && (!defined(LANGUAGE_GOBJECT) || !LANGUAGE_GOBJECT)
     [RaisesException] TextTrack addTextTrack(DOMString kind, optional DOMString label, optional DOMString language);
     readonly attribute AudioTrackList audioTracks;
     readonly attribute TextTrackList textTracks;
@@ -116,7 +116,10 @@
 #endif
 
     [Reflect, TreatNullAs=NullString] attribute DOMString mediaGroup;
+
+#if !defined(LANGUAGE_GOBJECT) || !LANGUAGE_GOBJECT
     [CustomSetter] attribute MediaController controller;
-    
+#endif
+
     [Conditional=MEDIA_SOURCE] VideoPlaybackQuality getVideoPlaybackQuality();
 };
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to