[geary/bug/728002-webkit2: 20/140] Depend on javascriptcore, generate webkit2 VAPI that uses it.



commit f51f55cd78a70bb842460c91ec156e5b4ed3a66d
Author: Michael James Gratton <mike vee net>
Date:   Wed Nov 23 22:56:45 2016 +1100

    Depend on javascriptcore, generate webkit2 VAPI that uses it.
    
    This gives us a means of using JS objects returned by UserContentManager
    script messages directly from Vala.
    
    * bindings/metadata/WebKit2-4.0.metadata: Tweak standard webkit2 VAPI to
      re-include methods that return javascriptcore objects.
    
    * bindings/vapi/javascriptcore-4.0.vapi: Copy generated VAPI file into
      the tree, customise it so that it actually works.
    
    * src/CMakeLists.txt: Generate the custom webkit2 VAPI, depend on
      javascriptcore and include in-tree javascriptcore VAPI in the client
      build.
    
    * bindings/metadata/JSCore-3.0.metadata: Remove obsolete file.

 bindings/metadata/JSCore-3.0.metadata  |    3 ---
 bindings/metadata/WebKit2-4.0.metadata |   14 ++++++++++++++
 bindings/vapi/javascriptcore-4.0.vapi  |   15 +++++++++++++++
 src/CMakeLists.txt                     |   23 +++++++++++++++++++++--
 test/CMakeLists.txt                    |    2 ++
 5 files changed, 52 insertions(+), 5 deletions(-)
---
diff --git a/bindings/metadata/WebKit2-4.0.metadata b/bindings/metadata/WebKit2-4.0.metadata
new file mode 100644
index 0000000..ad053ee
--- /dev/null
+++ b/bindings/metadata/WebKit2-4.0.metadata
@@ -0,0 +1,14 @@
+
+JavascriptResult
+    .get_global_context nullable=false unowned=true
+    .get_value nullable=false unowned=true
+
+//Forward upstream
+Download
+  .failed#signal.error type="WebKit.DownloadError"
+PrintOperation
+  .failed#signal.error type="WebKit.PrintError"
+WebResource
+  .failed#signal.error type="GLib.Error"
+WebView
+  .load_failed#signal.error type="GLib.Error"
diff --git a/bindings/vapi/javascriptcore-4.0.vapi b/bindings/vapi/javascriptcore-4.0.vapi
new file mode 100644
index 0000000..5d535a3
--- /dev/null
+++ b/bindings/vapi/javascriptcore-4.0.vapi
@@ -0,0 +1,15 @@
+/* javascriptcore-4.0.vapi. */
+
+[CCode (cprefix = "JS", gir_namespace = "JavaScriptCore", gir_version = "4.0", lower_case_cprefix = "JS_", 
cheader_filename = "JavaScriptCore/JavaScript.h")]
+namespace JS {
+
+       [CCode (cname = "JSGlobalContextRef")]
+    [SimpleType]
+       public struct GlobalContext {
+       }
+
+       [CCode (cname = "JSValueRef")]
+    [SimpleType]
+       public struct Value {
+       }
+}
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index bc75f41..2b11bf9 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -505,6 +505,7 @@ pkg_check_modules(DEPS REQUIRED
     gobject-introspection-1.0
     webkit2gtk-4.0>=${TARGET_WEBKIT}
     webkit2gtk-web-extension-4.0>=${TARGET_WEBKIT}
+    javascriptcoregtk-4.0>=${TARGET_WEBKIT}
     enchant>=1.6
     ${EXTRA_CLIENT_PKG_CONFIG}
 )
@@ -534,6 +535,7 @@ set(CLIENT_PACKAGES
   geary-engine
   gio-2.0
   gtk+-3.0
+  javascriptcore-4.0
   libcanberra
   libnotify
   libsecret-1
@@ -602,8 +604,8 @@ link_directories(${LIB_PATHS})
 add_definitions(${CFLAGS})
 
 set(VALAC_OPTIONS
-    --vapidir=${CMAKE_SOURCE_DIR}/bindings/vapi
     --vapidir=${CMAKE_BINARY_DIR}/src
+    --vapidir=${CMAKE_SOURCE_DIR}/bindings/vapi
     --metadatadir=${CMAKE_SOURCE_DIR}/bindings/metadata
     --target-glib=${TARGET_GLIB}
     --thread
@@ -636,6 +638,23 @@ set_property(
 )
 target_link_libraries(geary-engine m ${DEPS_LIBRARIES} sqlite3-unicodesn)
 
+# WebKit2GTK VAPI generation
+#################################################
+add_custom_target(webkit2gtk-vapi
+  DEPENDS "${CMAKE_BINARY_DIR}/src/webkit2gtk-4.0.vapi"
+)
+add_custom_command(
+    OUTPUT
+        ${CMAKE_BINARY_DIR}/src/webkit2gtk-4.0.vapi
+    DEPENDS
+        "${CMAKE_SOURCE_DIR}/bindings/metadata/WebKit2-4.0.metadata"
+        "${CMAKE_SOURCE_DIR}/bindings/vapi/javascriptcore-4.0.vapi"
+    WORKING_DIRECTORY
+        "${CMAKE_SOURCE_DIR}/bindings/metadata"
+    COMMAND
+        vapigen --library=webkit2gtk-4.0 --pkg gtk+-3.0 --pkg libsoup-2.4 --pkg javascriptcore-4.0 
--vapidir=${CMAKE_SOURCE_DIR}/bindings/vapi --metadatadir=${CMAKE_SOURCE_DIR}/bindings/metadata 
--directory=${CMAKE_BINARY_DIR}/src `${PKG_CONFIG_EXECUTABLE} --variable=girdir 
gobject-introspection-1.0`/WebKit2-4.0.gir
+)
+
 # Client library (static lib used for building client and unit tests)
 #################################################
 
@@ -652,7 +671,7 @@ OPTIONS
 )
 
 add_library(geary-client STATIC ${CLIENT_VALA_C})
-add_dependencies(geary-client resource_copy webkitgtk-vapi)
+add_dependencies(geary-client resource_copy webkit2gtk-vapi)
 target_link_libraries(geary-client m ${DEPS_LIBRARIES} geary-engine)
 
 # Main client application binary
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
index ba04bf9..9dff841 100644
--- a/test/CMakeLists.txt
+++ b/test/CMakeLists.txt
@@ -27,6 +27,7 @@ pkg_check_modules(DEPS REQUIRED
   gmime-2.6
   gthread-2.0
   gtk+-3.0
+  javascriptcoregtk-4.0
   libsoup-2.4
   webkit2gtk-4.0
 )
@@ -39,6 +40,7 @@ set(TEST_PACKAGES
   glib-2.0
   gmime-2.6
   gtk+-3.0
+  javascriptcore-4.0
   libsoup-2.4
   webkit2gtk-4.0
 )


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]