@@ -43,18 +43,13 @@ import Data.Monoid ((<>))
4343import Data.ByteString.Lazy (toStrict, fromStrict)
4444import qualified Data.ByteString.Lazy as LB (ByteString)
4545import Data.Aeson (encode, decode)
46−import Data.Text (Text)
4746import qualified Data.Text as T (pack)
48−import Data.Text.Foreign (fromPtr)
4947import Data.Text.Encoding (decodeUtf8, encodeUtf8)
5048
51−import Foreign.Ptr (castPtr, nullPtr)
52−
5349import Data.GI.Base.BasicTypes (GObject)
5450import Data.GI.Base.Signals
5551 (connectSignalFunPtr, SignalConnectMode(..), SignalConnectMode,
5652 SignalHandlerId)
57−import Data.GI.Base.ManagedPtr (withManagedPtr)
5853
5954import GI.GLib (timeoutAdd, idleAdd, pattern PRIORITY_HIGH, pattern PRIORITY_DEFAULT)
6055import qualified GI.Gtk as Gtk (main, init)
@@ -65,7 +60,7 @@ import GI.Gtk
6560 widgetGetToplevel, widgetShowAll, onWidgetDestroy,
6661 mainQuit)
6762import GI.Gio (noCancellable)
68−import GI.JavaScriptCore (Value(..), GlobalContext(..))
63+import GI.JavaScriptCore (valueToString)
6964import GI.WebKit2
7065 (scriptDialogPromptSetText, scriptDialogPromptGetDefaultText,
7166 scriptDialogGetMessage, scriptDialogGetDialogType,
@@ -74,7 +69,7 @@ import GI.WebKit2
7469 setSettingsEnableJavascript, webViewNewWithUserContentManager,
7570 userContentManagerNew,
7671 userContentManagerRegisterScriptMessageHandler,
77− javascriptResultGetValue, javascriptResultGetGlobalContext,
72+ javascriptResultGetJsValue,
7873 webViewGetUserContentManager,
7974 mk_UserContentManagerScriptMessageReceivedCallback,
8075 wrap_UserContentManagerScriptMessageReceivedCallback,
@@ -83,13 +78,6 @@ import GI.WebKit2
8378 onWebViewLoadChanged, setSettingsEnableDeveloperExtras,
8479 webViewSetSettings, webViewGetSettings, ScriptDialogType(..))
8580
86−import Graphics.UI.Gtk.WebKit.JavaScriptCore.JSBase
87− (JSValueRef, JSContextRef)
88−import Graphics.UI.Gtk.WebKit.JavaScriptCore.JSStringRef
89− (jsstringgetcharactersptr, jsstringgetlength, jsstringrelease)
90−import Graphics.UI.Gtk.WebKit.JavaScriptCore.JSValueRef
91− (jsvaluetostringcopy)
92−
9381import Language.Javascript.JSaddle (JSM, Results, Batch)
9482import Language.Javascript.JSaddle.Run (runJavaScript)
9583import Language.Javascript.JSaddle.Run.Files (initState, runBatch, ghcjsHelpers)
@@ -109,21 +97,6 @@ postGUIAsync :: IO () -> IO ()
10997postGUIAsync action =
11098 void . idleAdd PRIORITY_DEFAULT $ action >> return False
11199
112−withJSContextRef :: GlobalContext -> (JSContextRef -> IO a) -> IO a
113−withJSContextRef (GlobalContext ctx) f = withManagedPtr ctx (f . castPtr)
114−
115−withJSValueRef :: Value -> (JSValueRef -> IO a) -> IO a
116−withJSValueRef (Value ptr) f = withManagedPtr ptr (f . castPtr)
117−
118−valueToText :: JSContextRef -> JSValueRef -> IO Text
119−valueToText ctxRef s = do
120− jsstring <- jsvaluetostringcopy ctxRef s nullPtr
121− l <- jsstringgetlength jsstring
122− p <- jsstringgetcharactersptr jsstring
123− result <- fromPtr (castPtr p) (fromIntegral l)
124− jsstringrelease jsstring
125− return result
126−
127100run :: JSM () -> IO ()
128101run main = do
129102 _ <- Gtk.init Nothing
@@ -177,11 +150,8 @@ addJSaddleHandler :: WebView -> (Results -> IO ()) -> (Results -> IO Batch) -> I
177150addJSaddleHandler webView processResult syncResults = do
178151 manager <- webViewGetUserContentManager webView
179152 _ <- onUserContentManagerScriptMessageReceived manager $ \result -> do
180− ctx <- javascriptResultGetGlobalContext result
181− arg <- javascriptResultGetValue result
182− bs <- withJSContextRef ctx $ \ctxRef ->
183− withJSValueRef arg $ \argRef ->
184− encodeUtf8 <$> valueToText ctxRef argRef
153+ arg <- javascriptResultGetJsValue result
154+ bs <- encodeUtf8 <$> valueToString arg
185155 mapM_ processResult (decode (fromStrict bs))
186156 _ <- onWebViewScriptDialog webView $ \dialog ->
187157 scriptDialogGetDialogType dialog >>= \case