webengine/wmlengine/src/wml/include/nw_wml_core.h
branchRCL_3
changeset 94 919f36ff910f
equal deleted inserted replaced
93:79859ed3eea9 94:919f36ff910f
       
     1 /*
       
     2 * Copyright (c) 1999 - 2001 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of the License "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description: 
       
    15 *
       
    16 */
       
    17 
       
    18 /*
       
    19     $Workfile: nw_wml_core.h $
       
    20 
       
    21     Purpose:
       
    22 
       
    23         Class: WmlBrowser
       
    24 
       
    25         Main browser engine class declaration. The exteral environment messages to this
       
    26         engine through the constructor, Start, Event, and *Resp methods. The core browser
       
    27         object directs the URL Loader to get WML deck and card bytecode. It then processes
       
    28         the WML tags and interfaces with an external UI system. The core browser also 
       
    29         interfaces with the WML script engine.
       
    30 
       
    31 */
       
    32 
       
    33 #ifndef NW_WML_CORE_H
       
    34 #define NW_WML_CORE_H
       
    35 
       
    36 #ifdef __cplusplus
       
    37 extern "C" {
       
    38 #endif
       
    39 
       
    40 #include "nwx_defs.h"
       
    41 
       
    42 #include "nw_wml_defs.h"
       
    43 #include "nw_wml_var.h"
       
    44 #include "nw_wml_decoder.h"
       
    45 #include "nw_wml_elements.h"
       
    46 #include "nw_wml_list.h"
       
    47 #include "nw_wml_api.h"
       
    48 #include "nw_nvpair.h"
       
    49 
       
    50 #include "nwx_mem.h"
       
    51 #include "nwx_http_header.h"
       
    52 #include "nwx_memseg.h"
       
    53 #include "nwx_buffer.h"
       
    54 #include "urlloader_urlresponse.h"
       
    55 #include "BrsrStatusCodes.h"
       
    56 
       
    57 #define MAX_NUMBER_INTRA_OEF 15 /* the value is so chosen that the call stack does not max out - Vishy*/
       
    58 
       
    59 /*---------------------------------------------------------------------
       
    60  * NW_Wml_History_t -- history stack element -- holds information needed
       
    61  * to reconstruct the call to access a card we've been to recently.
       
    62  --------------------------------------------------------------------*/
       
    63 typedef struct {
       
    64   NW_Ucs2             *req_url;         /* the one sent in the request */
       
    65 } NW_Wml_History_t;
       
    66 
       
    67 
       
    68 typedef struct
       
    69 {
       
    70   NW_Ucs2           *load_url;
       
    71   NW_Ucs2           *load_url_params;
       
    72   NW_Http_Header_t  *load_header;
       
    73   NW_Bool           load_prev;
       
    74   NW_Uint32         timer_time;
       
    75   NW_Bool           timerProcessing;/* NW_TRUE: timer processing complete
       
    76                                        NW_FALSE: timer processing not complete */
       
    77 } NW_Wml_Script_State_t;
       
    78 
       
    79 
       
    80 typedef struct _NW_Wml_t   NW_Wml_t;
       
    81 struct _NW_Wml_t {
       
    82   void                  *browser_app;       /* the user agent */
       
    83   NW_Wml_VarList_t      *var_list;
       
    84   NW_Wml_VarList_t      *param_list;
       
    85   NW_Wml_Task_e         curr_task;
       
    86   NW_Ucs2               *history_resp_url;
       
    87   NW_DeckDecoder_t      *decoder;
       
    88   NW_Wml_Element_t      **card_els;
       
    89   NW_Int16              prev_task_id;
       
    90   NW_Int16              do_type_prev_id;
       
    91   NW_Wml_Script_State_t script_state;
       
    92   NW_Bool               hasFocus;
       
    93   NW_Int16              outstandingLoadCount;
       
    94   NW_Mem_Segment_Id_t   mem_segment_general;
       
    95   NW_Mem_Segment_Id_t   mem_segment_card; /* DON'T ACCESS THIS FIELD DIRECTLY */
       
    96   const NW_WmlApi_t     *wml_api;    /* user agent call backs */
       
    97   NW_Uint16             IntraDeck_OefCounter; /* This counter is used to keep track of the number of 
       
    98                                               intra-deck OnEnterforward has occured continuously*/   
       
    99   NW_Bool               oefNavigation;    /* NW_TRUE = nav within oef/oeb navigation, NW_FALSE otherwise */
       
   100 };
       
   101 
       
   102 /* Type for emptyOk parameter to NW_WmlInput_ValidateInput(). */
       
   103 typedef enum NW_WmlInput_EmptyOk_e {
       
   104   NW_WmlInput_EmptyOk_None,
       
   105   NW_WmlInput_EmptyOk_True,
       
   106   NW_WmlInput_EmptyOk_False
       
   107 } NW_WmlInput_EmptyOk_t;
       
   108 
       
   109 
       
   110 /* macros */
       
   111 #define DISPLAY_API thisObj->wml_api->display
       
   112 #define TIMER_API thisObj->wml_api->timer
       
   113 
       
   114 /* interface from the user agent */
       
   115 TBrowserStatusCode NW_Wml_Init(NW_Wml_t *that,
       
   116                         const NW_WmlApi_t *wmlapi,
       
   117                         void *usrAgent);
       
   118 
       
   119 /* Use this function to init the wml 1.x interpreter 
       
   120 from the HED Wml content handler */
       
   121 TBrowserStatusCode NW_Wml_InitFromShell(NW_Wml_t *that,
       
   122                                 const NW_Ucs2 *url,
       
   123                                 const NW_WmlApi_t *wmlapi,
       
   124                                 void *usrAgent);
       
   125 
       
   126 TBrowserStatusCode NW_Wml_GetVersion(NW_Wml_t *that, NW_Uint8 *version);
       
   127 
       
   128 TBrowserStatusCode NW_Wml_Start(NW_Wml_t* that, NW_Ucs2 *initialUrl);
       
   129 
       
   130 TBrowserStatusCode NW_Wml_ReStart(NW_Wml_t *that, TBrowserStatusCode status);
       
   131 
       
   132 TBrowserStatusCode NW_Wml_Exit(NW_Wml_t *that);
       
   133 
       
   134 TBrowserStatusCode NW_Wml_GetAttribute(NW_Wml_t *that, NW_Uint16 el_id, NW_Wml_Attr_t tag, NW_Ucs2 **ret_string);
       
   135 
       
   136 TBrowserStatusCode NW_Wml_GetElementType(NW_Wml_t *that, NW_Uint16 el_id, NW_Wml_ElType_e *el_type, NW_Wml_Element_t **el);
       
   137 
       
   138 TBrowserStatusCode NW_Wml_GetDefault(NW_Wml_t *that, NW_Uint16 el_id, NW_Ucs2 **ret_string);
       
   139 
       
   140 TBrowserStatusCode NW_Wml_GUIEvent(NW_Wml_t* that, NW_Uint16 id, void *value);
       
   141 
       
   142 TBrowserStatusCode NW_Wml_GetCurrURL(NW_Wml_t *that, NW_Ucs2 **ret_string);
       
   143 
       
   144 TBrowserStatusCode NW_Wml_GetCurrReqURL(NW_Wml_t *that, NW_Ucs2 **ret_string);
       
   145 
       
   146 TBrowserStatusCode NW_Wml_GetPrevId(NW_Wml_t *that, NW_Int16 *id);
       
   147 
       
   148 NW_Bool NW_WmlInput_ValidateValue(NW_Ucs2* input_value, 
       
   149                                   NW_Ucs2* format, 
       
   150                                   NW_WmlInput_EmptyOk_t emptyok, 
       
   151                                   NW_Bool partial_validation_ok, 
       
   152                                   NW_Uint32 docPublicId);
       
   153 
       
   154 /* Returns the document public ID */
       
   155 TBrowserStatusCode NW_Wml_GetPublicId(NW_Wml_t *that, NW_Uint32 *publicId);
       
   156 
       
   157 /* Note: The NW_Wml_GetImage function is obsolete on Rainbow 2.0 and is only provided for
       
   158  compatability with WAVE. To load images use the image loader. */
       
   159 
       
   160 /* helper function to retrieve the absolute url for the image element SRC*/
       
   161 TBrowserStatusCode NW_Wml_GetImageUrl(NW_Wml_t *that, NW_Uint16 imgel_id, NW_Ucs2 **ret_string);
       
   162 
       
   163 /* helper function to retrieve the absolute url for the image element with LOCALSRC */
       
   164 TBrowserStatusCode NW_Wml_GetLocalImageUrl(NW_Wml_t *that, NW_Uint16 imgel_id, NW_Ucs2 **ret_string);
       
   165 
       
   166 TBrowserStatusCode NW_Wml_Timeout(void *that);
       
   167 
       
   168 /* user agents should call this function when they gain focus */
       
   169 TBrowserStatusCode NW_Wml_GainFocus(NW_Wml_t *that);
       
   170 
       
   171 /* user agents should call this function when they loose focus */
       
   172 TBrowserStatusCode NW_Wml_LoseFocus(NW_Wml_t *that);
       
   173 
       
   174 /* interface from the script interpreter */
       
   175 TBrowserStatusCode NW_Wml_GetVar(NW_Wml_t* that, const NW_Ucs2 *var_name, NW_Ucs2 **ret_string);
       
   176 
       
   177 NW_Wml_Var_t *NW_Wml_NextVar(NW_Wml_t* thisObj, NW_Wml_Var_t *current); 
       
   178 
       
   179 TBrowserStatusCode NW_Wml_SetVar(NW_Wml_t *that, const NW_Ucs2 *varName, const NW_Ucs2 *varValue);
       
   180 
       
   181 void NW_Wml_UnsetVar(NW_Wml_t *that, NW_Ucs2 *varName);
       
   182 
       
   183 void NW_Wml_LoadPrev(NW_Wml_t *that);
       
   184 
       
   185 void NW_Wml_NewContext(NW_Wml_t *that);
       
   186 
       
   187 /* does a newcontext but leaves the top history entry intact. */
       
   188 void NW_Wml_NewContextFromScript(NW_Wml_t *that);
       
   189 
       
   190 void NW_Wml_LoadUrl(NW_Wml_t *that, NW_Ucs2 *url, NW_Ucs2 *param, NW_Http_Header_t *header);
       
   191 
       
   192 TBrowserStatusCode NW_Wml_DisplayCard(NW_Wml_t* thisObj, NW_Bool cancelRequest);
       
   193 
       
   194 TBrowserStatusCode NW_Wml_LoadWmlResp(NW_Wml_t *thisObj, NW_Buffer_t* responseBuffer, NW_Bool contentWasPlainText, NW_Url_Resp_t* response);
       
   195 
       
   196 void NW_Wml_ClearTaskVariables(NW_Wml_t *that);
       
   197 
       
   198 TBrowserStatusCode NW_Wml_ApplyTaskVariables(NW_Wml_t *that);
       
   199 
       
   200 TBrowserStatusCode NW_Wml_HasOptionIntrinsicEvents(NW_Wml_t *that, NW_Wml_Element_t* option_el, NW_Bool execute);
       
   201 TBrowserStatusCode NW_Wml_HasOnpick(NW_Wml_t *that, NW_Uint16 el_id );
       
   202 
       
   203 NW_Mem_Segment_Id_t NW_Wml_GetCardSegment(NW_Wml_t *thisObj);
       
   204 TBrowserStatusCode NW_Wml_FreeCardSegment(NW_Wml_t *that);
       
   205 
       
   206 TBrowserStatusCode NW_Wml_HandleIntraDocRequest (NW_Wml_t *thisObj, NW_Wml_Task_e task, 
       
   207                                           NW_Bool historicRequest, const NW_Ucs2 *url);
       
   208 
       
   209 TBrowserStatusCode NW_Wml_CancelAllLoads (NW_Wml_t *thisObj);
       
   210 
       
   211 void NW_Wml_HandleError (NW_Wml_t *thisObj, NW_Int16 errorClass, NW_Int16 error);
       
   212 
       
   213 TBrowserStatusCode NW_Wml_ProcessSetvarElements(NW_Wml_t *thisObj);
       
   214 
       
   215 #ifdef __cplusplus
       
   216 } /* extern "C" */
       
   217 #endif
       
   218 
       
   219 #endif /* NW_WML_CORE_H */