Changeset 160367 in webkit


Ignore:
Timestamp:
Dec 10, 2013 8:41:41 AM (10 years ago)
Author:
Martin Robinson
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.
Location:
trunk/Source/WebCore
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r160361 r160367  
     12013-12-10  Martin Robinson  <mrobinson@igalia.com>
     2
     3        [GTK] [CMake] Add support for building the DOM bindings
     4        https://bugs.webkit.org/show_bug.cgi?id=116375
     5
     6        Reviewed by Gustavo Noronha Silva.
     7
     8        The CMake build is more complete than the autotools counterpart, so autotools doesn't consider
     9        some supplemental IDL attributes when building the DOM bindings. To prevent API breaks we should
     10        protect these attributes from DOM binding generation.
     11
     12        * Modules/battery/BatteryManager.idl: Protect non-GObject DOM bound methods by C preprocessor checks.
     13        * Modules/battery/NavigatorBattery.idl: Ditto.
     14        * Modules/mediastream/HTMLMediaElementMediaStream.idl: Ditto.
     15        * Modules/networkinfo/NavigatorNetworkInfoConnection.idl: Ditto.
     16        * Modules/networkinfo/NetworkInfoConnection.idl: Ditto.
     17        * PlatformGTK.cmake: Add build steps for building the bindings.
     18        * dom/Document.idl: Protect non-GObject DOM bound methods by C preprocessor checks.
     19        * html/HTMLMediaElement.idl: Ditto.
     20
    1212013-12-10  Martin Robinson  <mrobinson@igalia.com>
    222
  • trunk/Source/WebCore/Modules/battery/BatteryManager.idl

    r159061 r160367  
    1919
    2020// http://dev.w3.org/2009/dap/system-info/battery-status.html
     21#if !defined(LANGUAGE_GOBJECT) || !LANGUAGE_OBJECT
    2122[
    2223    NoInterfaceObject,
     
    4445    [RaisesException] boolean dispatchEvent(Event event);
    4546};
    46 
     47#endif
  • trunk/Source/WebCore/Modules/battery/NavigatorBattery.idl

    r149170 r160367  
    1818 */
    1919
     20#if !defined(LANGUAGE_GOBJECT) || !LANGUAGE_GOBJECT
    2021[
    2122    Conditional=BATTERY_STATUS,
     
    2324    readonly attribute BatteryManager webkitBattery;
    2425};
    25 
     26#endif
  • trunk/Source/WebCore/Modules/mediastream/HTMLMediaElementMediaStream.idl

    r159797 r160367  
    2828] partial interface HTMLMediaElement
    2929{
     30#if !defined(LANGUAGE_GOBJECT) || !LANGUAGE_GOBJECT
    3031    attribute MediaStream? srcObject;
     32#endif
    3133};
  • trunk/Source/WebCore/Modules/networkinfo/NavigatorNetworkInfoConnection.idl

    r149170 r160367  
    1818 */
    1919
     20#if !defined(LANGUAGE_GOBJECT) || !LANGUAGE_GOBJECT
    2021[
    2122    Conditional=NETWORK_INFO,
     
    2324    readonly attribute NetworkInfoConnection webkitConnection;
    2425};
    25 
     26#endif
  • trunk/Source/WebCore/Modules/networkinfo/NetworkInfoConnection.idl

    r159061 r160367  
    2121
    2222// http://dvcs.w3.org/hg/dap/raw-file/tip/network-api/index.html
     23#if !defined(LANGUAGE_GOBJECT) || !LANGUAGE_GOBJECT
    2324[
    2425    NoInterfaceObject,
     
    4142    [RaisesException] boolean dispatchEvent(Event evt);
    4243};
     44#endif
  • trunk/Source/WebCore/PlatformGTK.cmake

    r160361 r160367  
    361361                "${DATA_INSTALL_DIR}/resources/audio")
    362362endif ()
     363
     364if (ENABLE_WEBKIT2)
     365    set(DERIVED_SOURCES_GOBJECT_DOM_BINDINGS_DIR ${DERIVED_SOURCES_DIR}/webkitdom)
     366
     367    include_directories(
     368        "${WebCore_INCLUDE_DIRECTORIES}"
     369        "${DERIVED_SOURCES_DIR}"
     370        "${DERIVED_SOURCES_GOBJECT_DOM_BINDINGS_DIR}"
     371    )
     372
     373    list(APPEND GObjectDOMBindings_SOURCES
     374        bindings/gobject/ConvertToUTF8String.cpp
     375        bindings/gobject/ConvertToUTF8String.h
     376        bindings/gobject/DOMObjectCache.cpp
     377        bindings/gobject/DOMObjectCache.h
     378        bindings/gobject/GObjectEventListener.cpp
     379        bindings/gobject/GObjectEventListener.h
     380        bindings/gobject/WebKitDOMCustom.cpp
     381        bindings/gobject/WebKitDOMCustom.h
     382        bindings/gobject/WebKitDOMEventTarget.cpp
     383        bindings/gobject/WebKitDOMEventTarget.h
     384        bindings/gobject/WebKitDOMEventTargetPrivate.h
     385        bindings/gobject/WebKitDOMHTMLPrivate.cpp
     386        bindings/gobject/WebKitDOMHTMLPrivate.h
     387        bindings/gobject/WebKitDOMObject.cpp
     388        bindings/gobject/WebKitDOMObject.h
     389        bindings/gobject/WebKitDOMPrivate.cpp
     390        bindings/gobject/WebKitDOMPrivate.h
     391        ${DERIVED_SOURCES_GOBJECT_DOM_BINDINGS_DIR}/webkitdomdefines.h
     392        ${DERIVED_SOURCES_GOBJECT_DOM_BINDINGS_DIR}/webkitdom.h
     393    )
     394
     395    list(APPEND GObjectDOMBindings_IDL_FILES
     396        Modules/battery/BatteryManager.idl
     397        Modules/gamepad/Gamepad.idl
     398        Modules/gamepad/GamepadList.idl
     399        Modules/geolocation/Geolocation.idl
     400        Modules/quota/StorageInfo.idl
     401        Modules/quota/StorageQuota.idl
     402        Modules/webdatabase/Database.idl
     403
     404        css/CSSRule.idl
     405        css/CSSRuleList.idl
     406        css/CSSStyleDeclaration.idl
     407        css/CSSStyleSheet.idl
     408        css/CSSValue.idl
     409        css/DOMWindowCSS.idl
     410        css/MediaList.idl
     411        css/MediaQueryList.idl
     412        css/StyleMedia.idl
     413        css/StyleSheet.idl
     414        css/StyleSheetList.idl
     415
     416        dom/Attr.idl
     417        dom/CDATASection.idl
     418        dom/CharacterData.idl
     419        dom/Comment.idl
     420        dom/DOMImplementation.idl
     421        dom/DOMNamedFlowCollection.idl
     422        dom/DOMStringList.idl
     423        dom/DOMStringMap.idl
     424        dom/Document.idl
     425        dom/DocumentFragment.idl
     426        dom/DocumentType.idl
     427        dom/Element.idl
     428        dom/EntityReference.idl
     429        dom/Event.idl
     430        dom/KeyboardEvent.idl
     431        dom/MessagePort.idl
     432        dom/MouseEvent.idl
     433        dom/NamedNodeMap.idl
     434        dom/Node.idl
     435        dom/NodeFilter.idl
     436        dom/NodeIterator.idl
     437        dom/NodeList.idl
     438        dom/ProcessingInstruction.idl
     439        dom/Range.idl
     440        dom/ShadowRoot.idl
     441        dom/Text.idl
     442        dom/TreeWalker.idl
     443        dom/UIEvent.idl
     444        dom/WebKitNamedFlow.idl
     445        dom/WheelEvent.idl
     446
     447        fileapi/Blob.idl
     448        fileapi/File.idl
     449        fileapi/FileList.idl
     450
     451        html/DOMSettableTokenList.idl
     452        html/DOMTokenList.idl
     453        html/HTMLAnchorElement.idl
     454        html/HTMLAppletElement.idl
     455        html/HTMLAreaElement.idl
     456        html/HTMLBRElement.idl
     457        html/HTMLBaseElement.idl
     458        html/HTMLBaseFontElement.idl
     459        html/HTMLBodyElement.idl
     460        html/HTMLButtonElement.idl
     461        html/HTMLCanvasElement.idl
     462        html/HTMLCollection.idl
     463        html/HTMLDListElement.idl
     464        html/HTMLDetailsElement.idl
     465        html/HTMLDirectoryElement.idl
     466        html/HTMLDivElement.idl
     467        html/HTMLDocument.idl
     468        html/HTMLElement.idl
     469        html/HTMLEmbedElement.idl
     470        html/HTMLFieldSetElement.idl
     471        html/HTMLFontElement.idl
     472        html/HTMLFormElement.idl
     473        html/HTMLFrameElement.idl
     474        html/HTMLFrameSetElement.idl
     475        html/HTMLHRElement.idl
     476        html/HTMLHeadElement.idl
     477        html/HTMLHeadingElement.idl
     478        html/HTMLHtmlElement.idl
     479        html/HTMLIFrameElement.idl
     480        html/HTMLImageElement.idl
     481        html/HTMLInputElement.idl
     482        html/HTMLKeygenElement.idl
     483        html/HTMLLIElement.idl
     484        html/HTMLLabelElement.idl
     485        html/HTMLLegendElement.idl
     486        html/HTMLLinkElement.idl
     487        html/HTMLMapElement.idl
     488        html/HTMLMarqueeElement.idl
     489        html/HTMLMediaElement.idl
     490        html/HTMLMenuElement.idl
     491        html/HTMLMetaElement.idl
     492        html/HTMLModElement.idl
     493        html/HTMLOListElement.idl
     494        html/HTMLObjectElement.idl
     495        html/HTMLOptGroupElement.idl
     496        html/HTMLOptionElement.idl
     497        html/HTMLOptionsCollection.idl
     498        html/HTMLParagraphElement.idl
     499        html/HTMLParamElement.idl
     500        html/HTMLPreElement.idl
     501        html/HTMLQuoteElement.idl
     502        html/HTMLScriptElement.idl
     503        html/HTMLSelectElement.idl
     504        html/HTMLStyleElement.idl
     505        html/HTMLTableCaptionElement.idl
     506        html/HTMLTableCellElement.idl
     507        html/HTMLTableColElement.idl
     508        html/HTMLTableElement.idl
     509        html/HTMLTableRowElement.idl
     510        html/HTMLTableSectionElement.idl
     511        html/HTMLTextAreaElement.idl
     512        html/HTMLTitleElement.idl
     513        html/HTMLUListElement.idl
     514        html/MediaController.idl
     515        html/MediaError.idl
     516        html/TimeRanges.idl
     517        html/ValidityState.idl
     518
     519        loader/appcache/DOMApplicationCache.idl
     520
     521        page/BarProp.idl
     522        page/Console.idl
     523        page/DOMSecurityPolicy.idl
     524        page/DOMSelection.idl
     525        page/DOMWindow.idl
     526        page/History.idl
     527        page/Location.idl
     528        page/Navigator.idl
     529        page/Performance.idl
     530        page/PerformanceEntry.idl
     531        page/PerformanceEntryList.idl
     532        page/PerformanceNavigation.idl
     533        page/PerformanceTiming.idl
     534        page/Screen.idl
     535        page/WebKitPoint.idl
     536
     537        plugins/DOMMimeType.idl
     538        plugins/DOMMimeTypeArray.idl
     539        plugins/DOMPlugin.idl
     540        plugins/DOMPluginArray.idl
     541
     542        storage/Storage.idl
     543
     544        xml/XPathExpression.idl
     545        xml/XPathNSResolver.idl
     546        xml/XPathResult.idl
     547    )
     548
     549    if (ENABLE_VIDEO OR ENABLE_WEB_AUDIO)
     550        list(APPEND GObjectDOMBindings_IDL_FILES
     551            html/HTMLAudioElement.idl
     552            html/HTMLVideoElement.idl
     553
     554            html/track/AudioTrack.idl
     555            html/track/AudioTrackList.idl
     556            html/track/TextTrack.idl
     557            html/track/TextTrackCue.idl
     558            html/track/TextTrackCueList.idl
     559            html/track/TextTrackList.idl
     560            html/track/TrackEvent.idl
     561            html/track/VideoTrack.idl
     562            html/track/VideoTrackList.idl
     563        )
     564    endif ()
     565
     566    foreach (file Custom EventTarget Object Deprecated ${GObjectDOMBindings_IDL_FILES})
     567        get_filename_component(file ${file} NAME_WE)
     568        list(APPEND GObjectDOMBindings_CLASS_LIST ${file})
     569    endforeach ()
     570
     571    set(GOBJECT_DOM_BINDINGS_FEATURES_DEFINES "LANGUAGE_GOBJECT=1 ${FEATURE_DEFINES_WITH_SPACE_SEPARATOR}")
     572    string(REPLACE "ENABLE_INDEXED_DATABASE=1" "" GOBJECT_DOM_BINDINGS_FEATURES_DEFINES ${GOBJECT_DOM_BINDINGS_FEATURES_DEFINES})
     573    string(REPLACE REGEX "ENABLE_SVG[A-Z_]+=1" "" GOBJECT_DOM_BINDINGS_FEATURES_DEFINES ${GOBJECT_DOM_BINDINGS_FEATURES_DEFINES})
     574
     575    file(MAKE_DIRECTORY ${DERIVED_SOURCES_GOBJECT_DOM_BINDINGS_DIR})
     576
     577    add_custom_command(
     578        OUTPUT ${DERIVED_SOURCES_GOBJECT_DOM_BINDINGS_DIR}/webkitdomdefines.h
     579        COMMAND echo ${GObjectDOMBindings_CLASS_LIST} | ${PERL_EXECUTABLE} ${WEBCORE_DIR}/bindings/scripts/gobject-generate-headers.pl defines > ${DERIVED_SOURCES_GOBJECT_DOM_BINDINGS_DIR}/webkitdomdefines.h
     580    )
     581
     582    add_custom_command(
     583        OUTPUT ${DERIVED_SOURCES_GOBJECT_DOM_BINDINGS_DIR}/webkitdom.h
     584        COMMAND echo ${GObjectDOMBindings_CLASS_LIST} | ${PERL_EXECUTABLE} ${WEBCORE_DIR}/bindings/scripts/gobject-generate-headers.pl gdom > ${DERIVED_SOURCES_GOBJECT_DOM_BINDINGS_DIR}/webkitdom.h
     585    )
     586
     587    add_custom_target(fake-installed-webkitdom-headers
     588        COMMAND ln -n -s -f ${WEBCORE_DIR}/bindings/gobject/* ${DERIVED_SOURCES_GOBJECT_DOM_BINDINGS_DIR}
     589    )
     590
     591    GENERATE_BINDINGS(GObjectDOMBindings_SOURCES
     592        "${GObjectDOMBindings_IDL_FILES}"
     593        "${WEBCORE_DIR}"
     594        "${IDL_INCLUDES}"
     595        "${GOBJECT_DOM_BINDINGS_FEATURES_DEFINES}"
     596        ${DERIVED_SOURCES_GOBJECT_DOM_BINDINGS_DIR}
     597        WebKitDOM GObject
     598        ${IDL_ATTRIBUTES_FILE}
     599        ${SUPPLEMENTAL_DEPENDENCY_FILE}
     600        ${WINDOW_CONSTRUCTORS_FILE}
     601        ${WORKERGLOBALSCOPE_CONSTRUCTORS_FILE}
     602        ${SHAREDWORKERGLOBALSCOPE_CONSTRUCTORS_FILE}
     603        ${DEDICATEDWORKERGLOBALSCOPE_CONSTRUCTORS_FILE})
     604
     605    add_definitions(-DBUILDING_WEBKIT)
     606
     607    add_library(GObjectDOMBindings STATIC ${GObjectDOMBindings_SOURCES})
     608
     609    WEBKIT_SET_EXTRA_COMPILER_FLAGS(GObjectDOMBindings)
     610
     611    add_dependencies(GObjectDOMBindings
     612        WebCore
     613        fake-installed-webkitdom-headers
     614    )
     615endif ()
     616
  • trunk/Source/WebCore/dom/Document.idl

    r159061 r160367  
    240240#endif
    241241
    242 #if !defined(LANGUAGE_OBJECTIVE_C) || !LANGUAGE_OBJECTIVE_C
     242#if (!defined(LANGUAGE_OBJECTIVE_C) || !LANGUAGE_OBJECTIVE_C) && (!defined(LANGUAGE_GOBJECT) || !LANGUAGE_GOBJECT)
    243243    // Event handler DOM attributes
    244244    [NotEnumerable] attribute EventListener onabort;
  • trunk/Source/WebCore/html/HTMLMediaElement.idl

    r160336 r160367  
    109109#endif
    110110
    111 #if defined(ENABLE_VIDEO_TRACK) && ENABLE_VIDEO_TRACK
     111#if defined(ENABLE_VIDEO_TRACK) && ENABLE_VIDEO_TRACK && (!defined(LANGUAGE_GOBJECT) || !LANGUAGE_GOBJECT)
    112112    [RaisesException] TextTrack addTextTrack(DOMString kind, optional DOMString label, optional DOMString language);
    113113    readonly attribute AudioTrackList audioTracks;
     
    117117
    118118    [Reflect, TreatNullAs=NullString] attribute DOMString mediaGroup;
     119
     120#if !defined(LANGUAGE_GOBJECT) || !LANGUAGE_GOBJECT
    119121    [CustomSetter] attribute MediaController controller;
    120    
     122#endif
     123
    121124    [Conditional=MEDIA_SOURCE] VideoPlaybackQuality getVideoPlaybackQuality();
    122125};
Note: See TracChangeset for help on using the changeset viewer.