packages feed

awesomium-0.1.0.0: src/Graphics/UI/Awesomium/WebView/Callbacks.hs

----------------------------------------------------------------------
-- |
-- Module      :  Graphics.UI.Awesomium.WebView.Callbacks
-- Copyright   :  (c) 2012 Maksymilian Owsianny
-- License     :  LGPL-3 (see the file LICENSE)
-- 
-- Maintainer  :  Maksymilian.Owsianny+Awesomium@gmail.com
-- Stability   :  Experimental
-- Portability :  Portable? (needs FFI)
--
----------------------------------------------------------------------

module Graphics.UI.Awesomium.WebView.Callbacks
    ( BeginNavigationCallbackHandler      , setCallbackBeginNavigation
    , BeginLoadingCallbackHandler         , setCallbackBeginLoading
    , FinishLoadingCallbackHandler        , setCallbackFinishLoading
    , JSCallbackHandler                   , setCallbackJS
    , ReceiveTitleCallbackHandler         , setCallbackReceiveTitle
    , ChangeTooltipCallbackHandler        , setCallbackChangeTooltip
    , CursorType (..)
    , ChangeCursorCallbackHandler         , setCallbackChangeCursor
    , ChangeKeyboardFocusCallbackHandler  , setCallbackChangeKeyboardFocus
    , ChangeTargetUrlCallbackHandler      , setCallbackChangeTargetUrl
    , OpenExternalLinkCallbackHandler     , setCallbackOpenExternalLink
    , RequestDownloadCallbackHandler      , setCallbackRequestDownload
    , WebViewCrashedCallbackHandler       , setCallbackWebViewCrashed
    , PluginCrashedCallbackHandler        , setCallbackPluginCrashed
    , RequestMoveCallbackHandler          , setCallbackRequestMove
    , GetPageContentsCallbackHandler      , setCallbackGetPageContents
    , DomReadyCallbackHandler             , setCallbackDomReady
    , RequestFileChooserCallbackHandler   , setCallbackRequestFileChooser
    , GetScrollDataCallbackHandler        , setCallbackGetScrollData
    , JsConsoleMessageCallbackHandler     , setCallbackJsConsoleMessage
    , GetFindResultsCallbackHandler       , setCallbackGetFindResults
    , ImeState (..)
    , UpdateImeCallbackHandler            , setCallbackUpdateIme
    , MediaType (..)
    , ShowContextMenuCallbackHandler      , setCallbackShowContextMenu
    , RequestLoginCallbackHandler         , setCallbackRequestLogin
    , ChangeHistoryCallbackHandler        , setCallbackChangeHistory
    , FinishResizeCallbackHandler         , setCallbackFinishResize
    , ShowJavascriptDialogCallbackHandler , setCallbackShowJavascriptDialog
) where

import Graphics.UI.Awesomium.Raw
import Graphics.UI.Awesomium.Javascript

import Foreign (peek)
import Foreign.Ptr (FunPtr)
import Foreign.Marshal.Utils (toBool)
import Data.Aeson

(>>=>) :: Monad m => m a -> (a -> m b) -> m a
(>>=>) a f = a >>= \r -> f r >> return r

type BeginNavigationCallbackHandler = WebView -> String -> String -> IO()
defBeginNavigationCallback :: BeginNavigationCallbackHandler -> BeginNavigationCallback
defBeginNavigationCallback convcb wv a1 a0 = do
    ar1 <- fromAweString a1
    ar0 <- fromAweString a0
    convcb wv ar1 ar0

-- | Assign a callback function to be notified when a WebView begins
-- navigation to a certain URL.
setCallbackBeginNavigation :: WebView -> BeginNavigationCallbackHandler -> IO (FunPtr BeginNavigationCallback)
setCallbackBeginNavigation wv ah = 
    mkBeginNavigationCallback (defBeginNavigationCallback ah) >>=>
    awe_webview_set_callback_begin_navigation wv

type BeginLoadingCallbackHandler = WebView -> String -> String -> Int -> String -> IO()
defBeginLoadingCallback :: BeginLoadingCallbackHandler -> BeginLoadingCallback
defBeginLoadingCallback convcb wv a1 a2 a3 a0 = do
    ar1 <- fromAweString a1
    ar2 <- fromAweString a2
    let ar3 = fromIntegral a3
    ar0 <- fromAweString a0
    convcb wv ar1 ar2 ar3 ar0

-- | Assign a callback function to be notified when a WebView begins
-- to actually receive data from a server.
setCallbackBeginLoading :: WebView -> BeginLoadingCallbackHandler -> IO (FunPtr BeginLoadingCallback)
setCallbackBeginLoading wv ah = 
    mkBeginLoadingCallback (defBeginLoadingCallback ah) >>=>
    awe_webview_set_callback_begin_loading wv

type FinishLoadingCallbackHandler = WebView -> IO()
defFinishLoadingCallback :: FinishLoadingCallbackHandler -> FinishLoadingCallback
defFinishLoadingCallback convcb wv = do
    convcb wv

-- | Assign a callback function to be notified when a WebView has
-- finished all loads.
setCallbackFinishLoading :: WebView -> FinishLoadingCallbackHandler -> IO (FunPtr FinishLoadingCallback)
setCallbackFinishLoading wv ah = 
    mkFinishLoadingCallback (defFinishLoadingCallback ah) >>=>
    awe_webview_set_callback_finish_loading wv

type JSCallbackHandler = WebView -> String -> String -> [Value] -> IO()
defJSCallback :: JSCallbackHandler -> JSCallback
defJSCallback convcb wv a1 a2 a0 = do
    ar1 <- fromAweString a1
    ar2 <- fromAweString a2
    ar0 <- jsarrayToJSONValues a0
    convcb wv ar1 ar2 ar0

-- | Assign a callback function to be notified when a Javascript
-- object callback has been invoked on a page.
setCallbackJS :: WebView -> JSCallbackHandler -> IO (FunPtr JSCallback)
setCallbackJS wv ah = 
    mkJSCallback (defJSCallback ah) >>=>
    awe_webview_set_callback_js_callback wv

type ReceiveTitleCallbackHandler = WebView -> String -> String -> IO()
defReceiveTitleCallback :: ReceiveTitleCallbackHandler -> ReceiveTitleCallback
defReceiveTitleCallback convcb wv a1 a0 = do
    ar1 <- fromAweString a1
    ar0 <- fromAweString a0
    convcb wv ar1 ar0

-- | Assign a callback function to be notified when a page title is
-- received.
setCallbackReceiveTitle :: WebView -> ReceiveTitleCallbackHandler -> IO (FunPtr ReceiveTitleCallback)
setCallbackReceiveTitle wv ah = 
    mkReceiveTitleCallback (defReceiveTitleCallback ah) >>=>
    awe_webview_set_callback_receive_title wv

type ChangeTooltipCallbackHandler = WebView -> String -> IO()
defChangeTooltipCallback :: ChangeTooltipCallbackHandler -> ChangeTooltipCallback
defChangeTooltipCallback convcb wv a0 = do
    ar0 <- fromAweString a0
    convcb wv ar0

-- | Assign a callback function to be notified when a tooltip has
-- changed state.
setCallbackChangeTooltip :: WebView -> ChangeTooltipCallbackHandler -> IO (FunPtr ChangeTooltipCallback)
setCallbackChangeTooltip wv ah = 
    mkChangeTooltipCallback (defChangeTooltipCallback ah) >>=>
    awe_webview_set_callback_change_tooltip wv

type ChangeCursorCallbackHandler = WebView -> CursorType -> IO()
defChangeCursorCallback :: ChangeCursorCallbackHandler -> ChangeCursorCallback
defChangeCursorCallback convcb wv a0 = do
    let ar0 = toEnum . fromIntegral $ a0
    convcb wv ar0

-- | Assign a callback function to be notified when a cursor has
-- changed state.
setCallbackChangeCursor :: WebView -> ChangeCursorCallbackHandler -> IO (FunPtr ChangeCursorCallback)
setCallbackChangeCursor wv ah = 
    mkChangeCursorCallback (defChangeCursorCallback ah) >>=>
    awe_webview_set_callback_change_cursor wv

type ChangeKeyboardFocusCallbackHandler = WebView -> Bool -> IO()
defChangeKeyboardFocusCallback :: ChangeKeyboardFocusCallbackHandler -> ChangeKeyboardFocusCallback
defChangeKeyboardFocusCallback convcb wv a0 = do
    let ar0 = toBool a0
    convcb wv ar0

-- | Assign a callback function to be notified when keyboard focus has
-- changed.
setCallbackChangeKeyboardFocus :: WebView -> ChangeKeyboardFocusCallbackHandler -> IO (FunPtr ChangeKeyboardFocusCallback)
setCallbackChangeKeyboardFocus wv ah = 
    mkChangeKeyboardFocusCallback (defChangeKeyboardFocusCallback ah) >>=>
    awe_webview_set_callback_change_keyboard_focus wv

type ChangeTargetUrlCallbackHandler = WebView -> String -> IO()
defChangeTargetUrlCallback :: ChangeTargetUrlCallbackHandler -> ChangeTargetUrlCallback
defChangeTargetUrlCallback convcb wv a0 = do
    ar0 <- fromAweString a0
    convcb wv ar0

-- | Assign a callback function to be notified when the target URL has
-- changed.  This is usually the result of hovering over a link on the
-- page.
setCallbackChangeTargetUrl :: WebView -> ChangeTargetUrlCallbackHandler -> IO (FunPtr ChangeTargetUrlCallback)
setCallbackChangeTargetUrl wv ah = 
    mkChangeTargetUrlCallback (defChangeTargetUrlCallback ah) >>=>
    awe_webview_set_callback_change_target_url wv

type OpenExternalLinkCallbackHandler = WebView -> String -> String -> IO()
defOpenExternalLinkCallback :: OpenExternalLinkCallbackHandler -> OpenExternalLinkCallback
defOpenExternalLinkCallback convcb wv a1 a0 = do
    ar1 <- fromAweString a1
    ar0 <- fromAweString a0
    convcb wv ar1 ar0

-- | Assign a callback function to be notified when an external link
-- is attempted to be opened. An external link is any link that
-- normally opens in a new window in a standard browser (for example,
-- links with @target=\"_blank\"@, calls to @window.open(url)@, and
-- URL open events from Flash plugins).
setCallbackOpenExternalLink :: WebView -> OpenExternalLinkCallbackHandler -> IO (FunPtr OpenExternalLinkCallback)
setCallbackOpenExternalLink wv ah = 
    mkOpenExternalLinkCallback (defOpenExternalLinkCallback ah) >>=>
    awe_webview_set_callback_open_external_link wv

type RequestDownloadCallbackHandler = WebView -> String -> IO()
defRequestDownloadCallback :: RequestDownloadCallbackHandler -> RequestDownloadCallback
defRequestDownloadCallback convcb wv a0 = do
    ar0 <- fromAweString a0
    convcb wv ar0

-- | Assign a callback function to be notified when a page requests
-- for a certain URL to be downloaded by the user.
setCallbackRequestDownload :: WebView -> RequestDownloadCallbackHandler -> IO (FunPtr RequestDownloadCallback)
setCallbackRequestDownload wv ah = 
    mkRequestDownloadCallback (defRequestDownloadCallback ah) >>=>
    awe_webview_set_callback_request_download wv

type WebViewCrashedCallbackHandler = WebView -> IO()
defWebViewCrashedCallback :: WebViewCrashedCallbackHandler -> WebViewCrashedCallback
defWebViewCrashedCallback convcb wv = do
    convcb wv

-- | Assign a callback function to be notified when the renderer for
-- a certain WebView (which is isolated in a separate process) crashes
-- unexpectedly.
setCallbackWebViewCrashed :: WebView -> WebViewCrashedCallbackHandler -> IO (FunPtr WebViewCrashedCallback)
setCallbackWebViewCrashed wv ah = 
    mkWebViewCrashedCallback (defWebViewCrashedCallback ah) >>=>
    awe_webview_set_callback_web_view_crashed wv

type PluginCrashedCallbackHandler = WebView -> String -> IO()
defPluginCrashedCallback :: PluginCrashedCallbackHandler -> PluginCrashedCallback
defPluginCrashedCallback convcb wv a0 = do
    ar0 <- fromAweString a0
    convcb wv ar0

-- | Assign a callback function to be notified when when the renderer
-- for a certain plugin (usually Flash, which is isolated in
-- a separate process) crashes unexpectedly.
setCallbackPluginCrashed :: WebView -> PluginCrashedCallbackHandler -> IO (FunPtr PluginCrashedCallback)
setCallbackPluginCrashed wv ah = 
    mkPluginCrashedCallback (defPluginCrashedCallback ah) >>=>
    awe_webview_set_callback_plugin_crashed wv

type RequestMoveCallbackHandler = WebView -> Int -> Int -> IO()
defRequestMoveCallback :: RequestMoveCallbackHandler -> RequestMoveCallback
defRequestMoveCallback convcb wv a1 a0 = do
    let ar1 = fromIntegral a1
    let ar0 = fromIntegral a0
    convcb wv ar1 ar0

-- | Assign a callback function to be notified when the page requests
-- for the containing window to be moved to a certain location on the
-- screen.
setCallbackRequestMove :: WebView -> RequestMoveCallbackHandler -> IO (FunPtr RequestMoveCallback)
setCallbackRequestMove wv ah = 
    mkRequestMoveCallback (defRequestMoveCallback ah) >>=>
    awe_webview_set_callback_request_move wv

type GetPageContentsCallbackHandler = WebView -> String -> String -> IO()
defGetPageContentsCallback :: GetPageContentsCallbackHandler -> GetPageContentsCallback
defGetPageContentsCallback convcb wv a1 a0 = do
    ar1 <- fromAweString a1
    ar0 <- fromAweString a0
    convcb wv ar1 ar0

-- | Assign a callback function to be notified when the contents of
-- the page has finished loading. This occurs at the end of most page
-- loads.
setCallbackGetPageContents :: WebView -> GetPageContentsCallbackHandler -> IO (FunPtr GetPageContentsCallback)
setCallbackGetPageContents wv ah = 
    mkGetPageContentsCallback (defGetPageContentsCallback ah) >>=>
    awe_webview_set_callback_get_page_contents wv

type DomReadyCallbackHandler = WebView -> IO()
defDomReadyCallback :: DomReadyCallbackHandler -> DomReadyCallback
defDomReadyCallback convcb wv = do
    convcb wv

-- | Assign a callback function to be notified once the DOM (Document
-- Object Model) for a page is ready. This is very useful for
-- executing Javascript on a page before its content has finished
-- loading.
setCallbackDomReady :: WebView -> DomReadyCallbackHandler -> IO (FunPtr DomReadyCallback)
setCallbackDomReady wv ah = 
    mkDomReadyCallback (defDomReadyCallback ah) >>=>
    awe_webview_set_callback_dom_ready wv

type RequestFileChooserCallbackHandler = WebView -> Bool -> String -> String -> IO()
defRequestFileChooserCallback :: RequestFileChooserCallbackHandler -> RequestFileChooserCallback
defRequestFileChooserCallback convcb wv a1 a2 a0 = do
    let ar1 = toBool a1
    ar2 <- fromAweString a2
    ar0 <- fromAweString a0
    convcb wv ar1 ar2 ar0

-- | Assign a callback function to be notified whenever a page
-- requests a file chooser dialog to be displayed (usually the result
-- of an @input@ element with type @file@ being clicked by a user).
-- You will need to display your own dialog (it does not have to be
-- modal, this request does not block).  Once a file has been chosen
-- by the user, 'Graphics.UI.Awesomium.WebView.chooseFile'
-- should be called.
setCallbackRequestFileChooser :: WebView -> RequestFileChooserCallbackHandler -> IO (FunPtr RequestFileChooserCallback)
setCallbackRequestFileChooser wv ah = 
    mkRequestFileChooserCallback (defRequestFileChooserCallback ah) >>=>
    awe_webview_set_callback_request_file_chooser wv

type GetScrollDataCallbackHandler = WebView -> Int -> Int -> Int -> Int -> Int -> IO()
defGetScrollDataCallback :: GetScrollDataCallbackHandler -> GetScrollDataCallback
defGetScrollDataCallback convcb wv a1 a2 a3 a4 a0 = do
    let ar1 = fromIntegral a1
    let ar2 = fromIntegral a2
    let ar3 = fromIntegral a3
    let ar4 = fromIntegral a4
    let ar0 = fromIntegral a0
    convcb wv ar1 ar2 ar3 ar4 ar0

-- | Assign a callback function to be notified of a response to
-- 'Graphics.UI.Awesomium.WebView.requestScrollData'.
setCallbackGetScrollData :: WebView -> GetScrollDataCallbackHandler -> IO (FunPtr GetScrollDataCallback)
setCallbackGetScrollData wv ah = 
    mkGetScrollDataCallback (defGetScrollDataCallback ah) >>=>
    awe_webview_set_callback_get_scroll_data wv

type JsConsoleMessageCallbackHandler = WebView -> String -> Int -> String -> IO()
defJsConsoleMessageCallback :: JsConsoleMessageCallbackHandler -> JsConsoleMessageCallback
defJsConsoleMessageCallback convcb wv a1 a2 a0 = do
    ar1 <- fromAweString a1
    let ar2 = fromIntegral a2
    ar0 <- fromAweString a0
    convcb wv ar1 ar2 ar0

-- | Assign a callback function to be notified of any Javascript
-- console messages. (Usually Javascript errors encountered in
-- scripts)
setCallbackJsConsoleMessage :: WebView -> JsConsoleMessageCallbackHandler -> IO (FunPtr JsConsoleMessageCallback)
setCallbackJsConsoleMessage wv ah = 
    mkJsConsoleMessageCallback (defJsConsoleMessageCallback ah) >>=>
    awe_webview_set_callback_js_console_message wv

type GetFindResultsCallbackHandler = WebView -> Int -> Int -> Rect -> Int -> Bool -> IO()
defGetFindResultsCallback :: GetFindResultsCallbackHandler -> GetFindResultsCallback
defGetFindResultsCallback convcb wv a1 a2 a3 a4 a0 = do
    let ar1 = fromIntegral a1
    let ar2 = fromIntegral a2
    ar3 <- peek a3
    let ar4 = fromIntegral a4
    let ar0 = toBool a0
    convcb wv ar1 ar2 ar3 ar4 ar0

-- | Assign a callback function to be notified whenever we receive
-- results back from an in-page find operation
-- ('Graphics.UI.Awesomium.WebView.find').
setCallbackGetFindResults :: WebView -> GetFindResultsCallbackHandler -> IO (FunPtr GetFindResultsCallback)
setCallbackGetFindResults wv ah = 
    mkGetFindResultsCallback (defGetFindResultsCallback ah) >>=>
    awe_webview_set_callback_get_find_results wv

type UpdateImeCallbackHandler = WebView -> ImeState -> Rect -> IO()
defUpdateImeCallback :: UpdateImeCallbackHandler -> UpdateImeCallback
defUpdateImeCallback convcb wv a1 a0 = do
    let ar1 = toEnum . fromIntegral $ a1
    ar0 <- peek a0
    convcb wv ar1 ar0

-- | Assign a callback function to be notified whenever the user does
-- something that may change the position or visiblity of the IME
-- Widget.  This callback is only active when IME is activated (please
-- see 'Graphics.UI.Awesomium.WebView.activateIme').
setCallbackUpdateIme :: WebView -> UpdateImeCallbackHandler -> IO (FunPtr UpdateImeCallback)
setCallbackUpdateIme wv ah = 
    mkUpdateImeCallback (defUpdateImeCallback ah) >>=>
    awe_webview_set_callback_update_ime wv

type ShowContextMenuCallbackHandler = WebView -> Int -> Int -> MediaType -> Int {-MediaState-} -> String -> String -> String -> String -> String -> Bool -> Int {-CanEditFlags-} -> IO()
defShowContextMenuCallback :: ShowContextMenuCallbackHandler -> ShowContextMenuCallback
defShowContextMenuCallback convcb wv a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a0 = do
    let ar1 = fromIntegral a1
    let ar2 = fromIntegral a2
    let ar3 = toEnum . fromIntegral $ a3
    let ar4 = fromIntegral a4
    ar5 <- fromAweString a5
    ar6 <- fromAweString a6
    ar7 <- fromAweString a7
    ar8 <- fromAweString a8
    ar9 <- fromAweString a9
    let ar10 = toBool a10
    let ar0 = fromIntegral a0
    convcb wv ar1 ar2 ar3 ar4 ar5 ar6 ar7 ar8 ar9 ar10 ar0

-- | Assign a callback function to be notified whenever the page
-- requests a context menu to be shown (usually the result of a user
-- right-clicking somewhere on the page). It is your responsiblity to
-- display a menu for the user to select an appropriate action.
setCallbackShowContextMenu :: WebView -> ShowContextMenuCallbackHandler -> IO (FunPtr ShowContextMenuCallback)
setCallbackShowContextMenu wv ah = 
    mkShowContextMenuCallback (defShowContextMenuCallback ah) >>=>
    awe_webview_set_callback_show_context_menu wv

type RequestLoginCallbackHandler = WebView -> Int -> String -> Bool -> String -> String -> String -> IO()
defRequestLoginCallback :: RequestLoginCallbackHandler -> RequestLoginCallback
defRequestLoginCallback convcb wv a1 a2 a3 a4 a5 a0 = do
    let ar1 = fromIntegral a1
    ar2 <- fromAweString a2
    let ar3 = toBool a3
    ar4 <- fromAweString a4
    ar5 <- fromAweString a5
    ar0 <- fromAweString a0
    convcb wv ar1 ar2 ar3 ar4 ar5 ar0

-- | Assign a callback function to be notified whenever a page
-- requests authentication from the user (ex, Basic HTTP Auth, NTLM
-- Auth, etc.).  See 'Graphics.UI.Awesomium.WebView.login' and
-- 'Graphics.UI.Awesomium.WebView.cancelLogin'.
setCallbackRequestLogin :: WebView -> RequestLoginCallbackHandler -> IO (FunPtr RequestLoginCallback)
setCallbackRequestLogin wv ah = 
    mkRequestLoginCallback (defRequestLoginCallback ah) >>=>
    awe_webview_set_callback_request_login wv

type ChangeHistoryCallbackHandler = WebView -> Int -> Int -> IO()
defChangeHistoryCallback :: ChangeHistoryCallbackHandler -> ChangeHistoryCallback
defChangeHistoryCallback convcb wv a1 a0 = do
    let ar1 = fromIntegral a1
    let ar0 = fromIntegral a0
    convcb wv ar1 ar0

-- | Assign a callback function to be notified whenever the history
-- state has changed. (eg, the state of thie back/forward buttons
-- should be updated)
setCallbackChangeHistory :: WebView -> ChangeHistoryCallbackHandler -> IO (FunPtr ChangeHistoryCallback)
setCallbackChangeHistory wv ah = 
    mkChangeHistoryCallback (defChangeHistoryCallback ah) >>=>
    awe_webview_set_callback_change_history wv

type FinishResizeCallbackHandler = WebView -> Int -> Int -> IO()
defFinishResizeCallback :: FinishResizeCallbackHandler -> FinishResizeCallback
defFinishResizeCallback convcb wv a1 a0 = do
    let ar1 = fromIntegral a1
    let ar0 = fromIntegral a0
    convcb wv ar1 ar0

-- | Assign a callback function to be notified whenever a WebView has
-- finished resizing to a certain size (and has finished repainting
-- the RenderBuffer).
setCallbackFinishResize :: WebView -> FinishResizeCallbackHandler -> IO (FunPtr FinishResizeCallback)
setCallbackFinishResize wv ah = 
    mkFinishResizeCallback (defFinishResizeCallback ah) >>=>
    awe_webview_set_callback_finish_resize wv

type ShowJavascriptDialogCallbackHandler = WebView -> Int -> Int {-DialogFlags-} -> String -> String -> String -> IO()
defShowJavascriptDialogCallback :: ShowJavascriptDialogCallbackHandler -> ShowJavascriptDialogCallback
defShowJavascriptDialogCallback convcb wv a1 a2 a3 a4 a0 = do
    let ar1 = fromIntegral a1
    let ar2 = fromIntegral a2
    ar3 <- fromAweString a3
    ar4 <- fromAweString a4
    ar0 <- fromAweString a0
    convcb wv ar1 ar2 ar3 ar4 ar0

-- | Assign a callback function to be notified whenever a WebView
-- requests that a certain Javascript dialog be shown (eg, alert,
-- confirm, prompt). See
-- 'Graphics.UI.Awesomium.WebView.closeJavascriptDialog' for more
-- information.
setCallbackShowJavascriptDialog :: WebView -> ShowJavascriptDialogCallbackHandler -> IO (FunPtr ShowJavascriptDialogCallback)
setCallbackShowJavascriptDialog wv ah = 
    mkShowJavascriptDialogCallback (defShowJavascriptDialogCallback ah) >>=>
    awe_webview_set_callback_show_javascript_dialog wv