首页 android浏览器插件总结

android浏览器插件总结

举报
开通vip

android浏览器插件总结android浏览器插件总结 androidæµ?è?ˆå??æ??ä??å??ç?? å?šäº†ä??æ?µæ??é??çš„WebKitå,?å??ï,Œå??æ?,å?ˆç ?ç??了ä??ä?‹WebKit çš„æ??ä??ï,Œä,†ä??ç›?æ??有æ??é??æ??ç??ä??ä?‹ï,Œç??åœ?ç?ˆäº?有ç‚?æ??é??å??ä?,æ??ç?†ä??ä?‹äº†ï,Œä?Ÿå?Œæœ›èƒ,è?Ÿå,?å??å,šå,šäº,æµ? é??å…ˆè??è??æ??ä...

android浏览器插件总结
android浏览器插件 总结 初级经济法重点总结下载党员个人总结TXt高中句型全总结.doc高中句型全总结.doc理论力学知识点总结pdf androidæµ?è?ˆå??æ??ä??å??ç?? å?šäº†ä??æ?µæ??é??çš„WebKitå,?å??ï,Œå??æ?,å?ˆç ?ç??了ä??ä?‹WebKit çš„æ??ä??ï,Œä,†ä??ç›?æ??有æ??é??æ??ç??ä??ä?‹ï,Œç??åœ?ç?ˆäº?有ç‚?æ??é??å??ä?,æ??ç?†ä??ä?‹äº†ï,Œä?Ÿå?Œæœ›èƒ,è?Ÿå,?å??å,šå,šäº,æµ? é??å…ˆè??è??æ??ä??ä?‹ä??ä?ˆæ??WebKitæ??ä??ï,ŒWebKitæ??ä??å??æ??内æ ?æ??WebKitçš„æµ?è?ˆå??çš„æ??ä??ï,ŒIEçš„ä??çŸ,é??ï,Œä,†firefoxçš„æ??ä??åº?è?,ä?? WebKitæ??ä??ç??ä,,ï,Œå› ä?ºWebKitæ??ä??ä,?ç??çš„ä??è??ä??ä?ªæŠ?æœ?æˆ?è?…è??æ?,å??å??å?šNPAPIï,Œè?Œè??å,?æ?,å ?åœ?mozillaçš„ç,?ç??ä?Š é??有è??ç?†çš„ä?‹ç??ï,Œå?„ä,?有å…?è??å??ä?,å??mozilla看看ã?‚å›?è?‡å,?æ?,ï,Œå?,å??æµ?è?ˆå??æ??ä??å??ï,Ÿæˆ?è?…è??ä?ºå?,è??有è??ä? ˆä?ªä?œè,?å??åœ?ï,Ÿæˆ?çš„ç?†è??æ??ä?ºäº†æ‰?å??æµ?è?ˆå??的功èƒ,ï,Œå,?å??çŸ,é??ï,Œæµ?è?ˆå??的功èƒ,ä??è??æ??æ??æŸ?ç,?é?µï,Œç,?é?µä? ?è??æ??ç??htmlï,Œjavascriptï,Œcssç?„æˆ?ï,Œå??å,?è??包æ‹?ä??些资 æº æ?‡ä??ï,Œå?‚æ?œå?ªæ??æ??æŸ?ç,?é?µï,Œæµ?è?ˆå??ä??èˆ?å,Ÿç??了ï,Œä,†éš?ç??ç,?é?µå†…å??çš„ä??æ??å,šæ ?åŒ?ï,Œå,?æ?‚åŒ?ï,Œæ??å?‚å,šåª? ä,?æ?‡ä??çš„æ??æ??ï,Œæµ è?ˆå??å??ç??ä??èƒ,æ??ä?›è??些功èƒ,了ï,Œäº?æ??æ??ä??å??出ç??了ï,Œå…?ä??æœ?有ä??è??æ??çš„å??æ??flash了ã?‚ æ??ä??çš„åŠ è,,è?‡ç?‹ç??å??çš„è??å??æ??ï,š æµ?è?ˆå??åœ?è??æ??ç,?é?µçš„æ??å??ï,Œå??ç??æŸ?ä?ªèŠ‚ç‚?å??æ??了æŸ?ä?ªMIMEç??å?‹ æ ?æ??è??ä?ªMIMEç??å?‹æŸ,æ‰?æ??册è?‡çš„æ??ä??ï,Œæ‰?åˆ?了å??åŠ è? ?è??æ??ä?? å…?ä,?çš„è??ï,Œåœ?Androidä?Šé??è??ä?ªè?‡ç?‹å?‚ä?‹ï,š å,?å??ç??ç,?é?µä?Šå??åœ?object节ç‚?çš„æ??å??ï,ŒWebKitå?†è?›å…,åŠ è??plug-inçš„æµ?ç?‹ æŸ,æ‰?æ‰?有Intentç??å?‹ä?ºPLUGIN_ACTIONçš„serviceï,Œè??å›?æ‰?有serviceçš„æ??ä??libè??å?„ï,Œå,?å?‚/data/data/com.android.sampleplugin/libï,ˆæ??ï,šå??èƒ,è??ä,šæ?œç??/system/lib/ä?‹é??çš„soï,‰ é??å?†å?„ä?ªç›?å,?ä??çš„åŠ?æ??åº?.soæ?‡ä??ï,Œé?šè?‡é?„å…ˆå?šä?‰çš„ entryPointè??æ??出æ??ä??çš„ä??æ??ï,ŒåŒ…æ‹?å??å??ï,Œæ??è??ï,Œmimeç ??å?‹ç?‰ï,Œå??ä??å??è??些ä??æ?? æ??ä?ªWebViewåœ?layoutçš„æ??å??ä,šåˆ›å?ºplug-inï,Œåœ?è??ä?ªè?‡ç?‹ä ?,æ ?æ??mimeç??å?‹ç?‰åˆ›å?ºPluginViewï,ˆæ??ä??è?†å›?ï,Ÿï,‰ æ?,ç??ä,šå?ºç?‹PluginPackageï,Œå?ºç?‹çš„è?‡ç?‹ä??ä,šè?ƒç??NP_Initializeï,Œå?Œæˆ?Pluginçš„åˆ?å?‹åŒ?å?,ä,œ æ??ï,šåœ?3ä??å?ºç?‹PluginViewçš„æ??å??ä,šæ‰?åˆ?å??åº?mimeç??å?‹çš„PluginPackageï,ˆmimeå?ŒPluginPackageä??ä??å??åº?ï,‰ï,Œè??æ ?åœ? PluginViewçš„start里é??ä,šåˆ?ç??PluginPackageçš„æ?,å??è?ƒç??NPP_Newï,Œåˆ›å?ºpluginçš„å??ä?‹ï,ˆä??ä?ªPluginViewå?Œä??ä?ªpluginçš„å??ä?‹ä??ä??å??åº?ï,‰ï,Œå??ä??å?Œæ??创å?ºä??ä?ªå??åº?çš„NPObjectçš„å??ä?‹ï,Œè??å,?åœ?NPPçš„pdata里é??ï,ˆä??ä?ªpluginçš„å??ä?‹å??åº?ä??ä?ª NPObjectçš„å??ä?‹ï,‰ åœ?Androidå??å??å,?å??æ??ä??ï,Œä?‹é??è??4ä?ªå‡,æ??æ??å?…é??å??ç??çš„ï,š NPError NP_Initialize(NPNetscapeFuncs* browserFuncs, NPPluginFuncs* pluginFuncs, void *java_env); NPError NP_GetValue(NPP instance, NPPVariable variable, void *value); const char* NP_GetMIMEDescription(void); void NP_Shutdown(void); æ??ï,šè??ä?ªåœ?ä??å?Œçš„å??å??ä?‹é??有区åˆ?ï,Œæˆ?å??ç??åœ?mac osä?Šé??éœ?è??å??ç?? NPError NP_Initialize(NPNetscapeFuncs *browserFuncs); NPError NP_GetEntryPoints(NPPluginFuncs *pluginFuncs); void NP_Shutdown(void); è??3ä?ªå‡,æ??ï,Œæ??è?ƒä??ä?‹å?‚æ??å??çŸ,é??ï,ŒAndroidä?‹é??çš„ NP_Initialize 包æ‹?了mac osä??çš„ NP_Initialize å?Œ NP_GetEntryPoints 的功èƒ,ï,Œé? å??çš„java_envæ??å?†javaè?šæ‹Ÿæœºç??å?ƒä, ä?‹æ?,ï,Œä,œä?ºjniå?‚çš„contextï,Œè??ä?ªæ??Androidå?…é??è??çš„ï,Œä, 懂的 ä,†mac osä?ºå?,ä??éœ?è??å??ç?? NP_GetMIMEDescription å??ï,Ÿå??ï,Œè??ä?ªä?ºæ??å??æ??ç??ï,Œæœ‰è??有å…?è??çš„å??ä?,å??ç ?ç??ä??ä?‹ ä?‹é??看看 const char* NP_GetMIMEDescription(void); æ??å?‚è??å›?ï,š application/x-yourname:tst:MIME type is application/x-yourname å??ä?,å?‚è?ƒè??里ã?‚ æ?,ç??看看 NP_Initialize æ??è?ƒé‡?è??ï,Œé?šè?‡browserFuncså?†æµ?è?ˆå??çš„æ?,å??ä, ç??æ??ä??ï,Œé?šè?‡pluginFuncså??åˆ?æ??ä??çš„æ?,å??ï,Œjava_envä?Šé??æ??è?‡äº † é??é??ï,šä?ºå?,ç??è??ç?•æ??å??å?†æ?,å??ä, ç??æ??ä??å??ï,Ÿ ä??èˆ?æ?,è??ï,Œå…?å?ƒæ??å ?çš„æ?,å??ï,Œæˆ?ä??ä,šç›?æ?,å??æ??å‡,æ??çš„ï,Œè??ä,?ç??å?ƒï,ŒåŒ…å??å,?æ?‡ä??ï,Œåº?æ?‡ä??å??å??ä?,ç›?æ?,è?ƒç??了ï,Œä,†è??里有ä?ªé??é??ï,Œæˆ?ä??å,?å??çš„æ??æ??ä??ï,Œæ??ç??æµ?è?ˆå??ç??çš„ï,Œè?Œä??æ??ç›?æ?,è?ƒç??æµ?è?ˆå??ã?‚ä??è??æ??ä?Šè??æ??å??èƒ,æ›?æ?…æ,šä??些ï,Œåœ?Androidä?Šé??è??些æ??ä??éƒ,æ??appï,Œå??包å??åŠ?æ??åº?.soæ?‡ä??ï,ŒæŒ‰ç…?ä??èˆ?çš„è?ƒç??æ??å??ï,Œå?†æ? ç,ºæ‰?ä??åˆ?è??些æ?,å??çš„å??ç??ï,Œæ??çš„ï,Œç??å‡,æ??指é?ˆå?†è??å†?è??ä?ªé??é??ï,Œåœ?æ??ä??ä??è??é??æµ?è?ˆå??çš„æ?,å??éƒ,æ??é?šè? ‡å‡,æ??指é?ˆå??ç??çš„ï,Œæ„Ÿè?‰æœ‰ç‚?ç??ä,,C++ä??çš„è?šå‡,æ??ï,Œä?‡èƒ,的指é?ˆï,ŒCçš„ç?µé?‚å?Š é??é??ï,šé‚?ä?ºå?,æ??ä??çš„æ?,å??ä, ç??æµ?è?ˆå??ä?Ÿè??ç??è??ç??æ?? å??å??ï,Ÿ å??å?Šï,Œæ??ç„?è?ƒç??æ??ä??æµ?è?ˆå??åˆ?æ??ä??çš„ï,Œé‚?æ??ä??ç›?æ?,æ??ä?›å,?æ?‡ä??ï,Œæµ?è?ˆå??ç›?æ?,è?ƒç??ä??å??å,,了ï,Œä?ºå?,å?ˆè??ç??å‡,æ??指é?ˆï,Ÿè??ä?ªæˆ?ä?Ÿæ??æ??æ??ç?,ï,Œè?Œä,,ç??ç›?æ?,è?ƒç??çš„æ??å??ä?Ÿæ??å??è?Œçš„ï,Œæ??å?‚æˆ?ä??åœ?è??è?ºçš„è??4ä?ªå‡,æ??å??æ??ä??æµ?è?ˆå??ç›?æ?,è?ƒç??æ??ä??çš„ï,Œä??çŸ,é??å,?å??有æ??有åˆ?çš„ç??æ?ˆã?‚ ä?‹é??分æ??ä??ä?‹å?‚æ??browserFuncsï,Œåœ?npfunctions.hä??å?šä?‰çš„ï,š typedef struct _NPNetscapeFuncs { uint16 size; uint16 version; NPN_GetURLProcPtr geturl; NPN_PostURLProcPtr posturl; NPN_RequestReadProcPtr requestread; NPN_NewStreamProcPtr newstream; NPN_WriteProcPtr write; NPN_DestroyStreamProcPtr destroystream; NPN_StatusProcPtr status; NPN_UserAgentProcPtr uagent; NPN_MemAllocProcPtr memalloc; NPN_MemFreeProcPtr memfree; NPN_MemFlushProcPtr memflush; NPN_ReloadPluginsProcPtr reloadplugins; NPN_GetJavaEnvProcPtr getJavaEnv; NPN_GetJavaPeerProcPtr getJavaPeer; NPN_GetURLNotifyProcPtr geturlnotify; NPN_PostURLNotifyProcPtr posturlnotify; NPN_GetValueProcPtr getvalue; NPN_SetValueProcPtr setvalue; NPN_InvalidateRectProcPtr invalidaterect; NPN_InvalidateRegionProcPtr invalidateregion; NPN_ForceRedrawProcPtr forceredraw; NPN_GetStringIdentifierProcPtr getstringidentifier; NPN_GetStringIdentifiersProcPtr getstringidentifiers; NPN_GetIntIdentifierProcPtr getintidentifier; NPN_IdentifierIsStringProcPtr identifierisstring; NPN_UTF8FromIdentifierProcPtr utf8fromidentifier; NPN_IntFromIdentifierProcPtr intfromidentifier; NPN_CreateObjectProcPtr createobject; NPN_RetainObjectProcPtr retainobject; NPN_ReleaseObjectProcPtr releaseobject; NPN_InvokeProcPtr invoke; NPN_InvokeDefaultProcPtr invokeDefault; NPN_EvaluateProcPtr evaluate; NPN_GetPropertyProcPtr getproperty; NPN_SetPropertyProcPtr setproperty; NPN_RemovePropertyProcPtr removeproperty; NPN_HasPropertyProcPtr hasproperty; NPN_HasMethodProcPtr hasmethod; NPN_ReleaseVariantValueProcPtr releasevariantvalue; NPN_SetExceptionProcPtr setexception; NPN_PushPopupsEnabledStateProcPtr pushpopupsenabledstate; NPN_PopPopupsEnabledStateProcPtr poppopupsenabledstate; NPN_EnumerateProcPtr enumerate; NPN_PluginThreadAsyncCallProcPtr pluginthreadasynccall; NPN_ConstructProcPtr construct; NPN_GetValueForURLProcPtr getvalueforurl; NPN_SetValueForURLProcPtr setvalueforurl; NPN_GetAuthenticationInfoProcPtr getauthenticationinfo; NPN_ScheduleTimerProcPtr scheduletimer; NPN_UnscheduleTimerProcPtr unscheduletimer; NPN_PopUpContextMenuProcPtr popupcontextmenu; NPN_ConvertPointProcPtr convertpoint; } NPNetscapeFuncs; 有è?…è?‡50ä?ªå‡,æ??ã?‚ã?‚ã?‚ã?‚ã?‚æˆ?æ??æ‰?åˆ?è??ç?†çš„è??æ??æ?‡æ ??ï,Œé‚?å??ä?,å??ç??åˆ?了å†?ç ?ç??å??ï,Œæœ‰ä?ªæ?‚å?µï,Œé‡Œé??æ??ä?›äº†æµ?è?ˆå??ç??çš„å?„ç??æ?,å??ï,Œæ??ä?›ç??æ??ä??ä,?ç??ã?‚ ä?‹é??æ??pluginFuncsçš„ï,š typedef struct _NPPluginFuncs { uint16 size; uint16 version; NPP_NewProcPtr newp; NPP_DestroyProcPtr destroy; NPP_SetWindowProcPtr setwindow; NPP_NewStreamProcPtr newstream; NPP_DestroyStreamProcPtr destroystream; NPP_StreamAsFileProcPtr asfile; NPP_WriteReadyProcPtr writeready; NPP_WriteProcPtr write; NPP_PrintProcPtr print; NPP_HandleEventProcPtr event; NPP_URLNotifyProcPtr urlnotify; JRIGlobalRef javaClass; NPP_GetValueProcPtr getvalue; NPP_SetValueProcPtr setvalue; } NPPluginFuncs; è??ä?ªå?ªæœ‰13ä?ªå‡,æ??ï,Œæ??è?ƒå,,看å?ˆï,Œæˆ?ä?Ÿæ??æ‰?åˆ?è??ç?†çš„è??æ??æ?‡æ??ã?‚ã?‚ã?‚ã?‚ä,†çœ‹å •å,?å,?æ?‚å??ä?,猜出ä,œç??ï,Œè ??些éƒ,æ??æ??ä??æ??ä?›ç??æµ?è?ˆå??çš„å›?è?ƒï,Œæµ?è?ˆå??ä,šåœ?éœ?è ??çš„æ??å??è?ƒç??å?ƒä??ï,Œæ??å?‚创å?ºæ??ä??çš„æ??å??è?ƒç??NPP_NewProcPtrï,Œé??æ??çš„æ??å??è?ƒç??NPP_DestroyProcPtrç?‰ã?‚ åœ?è??里ï,ŒAndroidä?ºæˆ?ä??æ??ä?›äº†ä??å,?æ?,å??ï,Œæ‰?å??了æµ?è? ˆå??ç??çš„æ?,å??ï,Œå?šä?‰åœ?Android_npapi.hä??ï,š #define kLogInterfaceV0_ANPGetValue ((NPNVariable)1000) #define kAudioTrackInterfaceV0_ANPGetValue ((NPNVariable)1001) #define kCanvasInterfaceV0_ANPGetValue ((NPNVariable)1002) #define kMatrixInterfaceV0_ANPGetValue ((NPNVariable)1003) #define kPaintInterfaceV0_ANPGetValue ((NPNVariable)1004) #define kPathInterfaceV0_ANPGetValue ((NPNVariable)1005) #define kTypefaceInterfaceV0_ANPGetValue ((NPNVariable)1006) #define kWindowInterfaceV0_ANPGetValue ((NPNVariable)1007) #define kBitmapInterfaceV0_ANPGetValue ((NPNVariable)1008) #define kSurfaceInterfaceV0_ANPGetValue ((NPNVariable)1009) #define kSystemInterfaceV0_ANPGetValue ((NPNVariable)1010) #define kEventInterfaceV0_ANPGetValue ((NPNVariable)1011) #define kSupportedDrawingModel_ANPGetValue ((NPNVariable)2000) #define kJavaContext_ANPGetValue ((NPNVariable)2001) ä?Šé??åˆ?出的æ??ANPGetValueä,?ç??åˆ?çš„ç??å?‹å?‚æ??ï,Œåˆ†åˆ?å??ä??å??åˆ?ç›?å…?çš„æ?,å??ï,Œæ??å?‚Logï,Œæ??æ??éŸ?é??ï,Œç??å›?ï,Œæ??åˆ?è?†å›?ï,Œå??åˆ?å,?å‰?Contextç?‰ç?‰ï,Œè??些æ?,å??çš„å??ç??éƒ,æ??ç??WebKitå,?æ??å?šçš„ï,Œå…?ä??有ä?ªANPEventInterfaceV0ï,Œpost事ä??ä,šåœ? NPP_HandleEventProcPträ?,å??åˆ?ï,Œç›?å,?äº?å,?æ??æ??ä?›çš„ä??ä?ªæ? ˆæ??分å??ä??å?ƒï,Œè??里è?Ÿè??分å??å?„ç??ç??ç?Ÿæ?ˆæ??ï,ŒåŒ…æ‹?é, æ ‡ï,Œé??ç›?ï,Œè??æ??ï,Œç??åˆ?ç?‰ï,Œç??æˆ?ä?Ÿå??ä?,自å?šä?‰æ?ˆæ??ï,Œå…?ä,?è??å?‚è?ƒandroid_npapi.hï,Œè??里的æ?ˆæ??å?†å??é??ç??å… ?ä,?çš„æ??ä??ï,Œå??é??å?†ä?‹ç??å…?ä,?çš„æ??ä??æ??æ??ä?ˆç?Ÿæˆ?çš„ æ??æ„?ä??ä?‹ä?Šé??æ?,å??çš„NPXå‰?ç,?ï,ŒNPNè??ç,ºæµ?è?ˆå??ç??çš„æ?,å??ï,ˆNetscape-Plugin-Netscapeï,Ÿï,‰ï,Œè?ŒNPPè??ç,ºæ??ä??ç??çš„æ?,å??ï,ˆNetscape-Plugin-Pluginï,Ÿï,‰ï,Œé‚?æœ?å,?å?‹çš„NPæ?,å??å??ï,Ÿå??ï,Œä??æ?…æ,šï,Œå??èƒ,å?ªæ??ä?ºäº†å?Œè??ä?,ç??区åˆ?å,?æ?, OKï,Œåˆ?了è??里ï,Œæµ?è?ˆå??é?šè?‡MIMEæ‰?åˆ?了æ??ä??ï,Œé?šè?‡å‡,æ??指é?ˆï,Œå?Šè?‰äº†æ??ä??ï,Œæˆ?æµ?è?ˆå??æ??ä?›çš„æ?,å??ï,Œä?Ÿå?? åˆ?了æ??ä??æ??ä?›çš„æ?,å??ï,Œé?ºä??ä?ŸæŠŠjavaç??å?ƒContextä, ç??ä º†æ??ä??ã?‚ ä,†åˆ?å?‹åŒ?æ??ä??ä?,å??ï,ˆNP_Initializeï,‰ï,ŒWebKitå?†å??ä?‹åŒ?æ ?ä??ï,Œè?ƒç??ï,š NPError NPP_New(NPMIMEType pluginType, NPP instance, uint16 mode, int16 argc, char* argn[], char* argv[], NPSavedData* saved); æ‰?ä?,ä?Šä??节æ??åˆ?çš„NPå‰?ç,?ï,Œæˆ?è?,ä?ºå??ä?,ç?†è??æˆ?ç??å‡,æ??ï,Œè?ŒNPPå‰?ç,?ç›?å,?äº?å??ä?‹å‡,æ??了ï,Œè??里的NPPï,Œå??å??ä?,看æˆ?æ??this指é?ˆï,Œæˆ?è?…C里é??çš„å??æ??Handle了ï,Œçœ‹NPPçš „å?šä?‰ï,š typedef struct _NPP { void* pdata; /* plug-in private data */ void* ndata; /* netscape private data */ } NPP_t; typedef NPP_t* NPP; ä?Ÿè??å??了è??ä??ç‚?ï,Œå??äº?å?ƒå??æ??ç??å??çš„ä,?ç??å?ƒçš„pdataæ ?ä? é??å?‚æ??å?? å…ˆæ?,看看NPP_New里é??çš„å??ç??ï,š instance- pdata = browser- createobject (instance, getPluginClass()); å…?ä??browseræ??剕é ?åˆ?å?‹åŒ?çš„æ??å??ä, è?‡æ?,çš„æµ?è?ˆå??æ?,å? ?ï,Œåˆ?ç??å?ƒæ?,å??ä?‹åŒ?æ??ä??ï,ŒgetPluginClassæ??å??å?›çš„ï,Ÿ è??里的getpluginClassè??å›?NPClass指é?ˆï,Œå…?ä??å?šä?‰äº†æ??ä??çš„ä??ç??åˆ?å‡,æ??指é?ˆï,ˆå?ˆæ??å‡,æ??指é?ˆã?‚ã?‚ã?‚ã?‚ï,‰ï,Œä?‹é??æ??ä??ä?ªå??ç??çš„ä?‹å??ï,š static NPClass pluginClass = { NP_CLASS_STRUCT_VERSION, pluginAllocate, pluginDeallocate, pluginInvalidate, pluginHasMethod, pluginInvoke, pluginInvokeDefault, pluginHasProperty, pluginGetProperty, pluginSetProperty, pluginRemoveProperty, pluginEnumerate }; è??些å‡,æ??指é?ˆåº?è?,æ??é?„å…ˆå?šä?‰å,,çš„ï,Œé?ºåº?ï,Œä?ªæ??éƒ,è??ä??è??ï,Œç??äº?ä?,å‰?å,?å??è?‡ç›?å…?çš„è??éƒ?分内å??ï,Œæˆ?çŸ,é??è??些æ??æµ?è?ˆå??ç??æ?,æ??ä,œNPObjectçš„æ?,å??ï,Œä??æ„?ä??ä?ªjså??è??ï,Œè?ƒç??å?ƒçš„å??æ??æˆ?è?…æ??æ??ï,Œæœ?ç?ˆéƒ,æ??è?ƒç??åˆ?å??åº?çš„NPObjectä??æ?,çš„ï,Œè??æ ?æ?,看ï,Œè??ä?ªNPObjectä??è??了å ??åº?çš„ä??ä?ªjsçš„å??è??ï,Œæˆ?ä??è??里å??æ??å??åº?了MIMEé‚?ä?ªèŠ‚ç‚?ã?‚ æµ?è?ˆå??çŸ,é??了è??ä?ªNPObjectçš„æ?,å??ï,Œå??ç›?æ?,åˆ?ç??pluginAllocateå?ºç?‹è??ä?ªNPObjectï,Œå›?è?ƒã?‚ã?‚ã?‚å?ˆæ??å›?è?ƒï,Œæ??ä??çš„åœ?ä,?å?ˆä,?çš„ï,Œå?Šè?‰åˆ?人æ??ä?ˆæ ?è?ƒç??自å??ï,Œä,†å?,æ?? å??è??è?ƒä??æ??自å??è??了ç??çš„ å??é?…ä??ï,Œæˆ?ä??创å?ºäº†ä??ä?ªPluginObjectï,Œè??ä?ªç›?å,?äº?æ??æ??ä??è??è??çš„Handleï,Œé‡Œé??ä??å??了å?ˆå,šä?œä?œï,š typedef struct PluginObject { NPObject header; NPP npp; NPWindow* window; PluginType pluginType; SubPlugin* activePlugin; } PluginObject; å…?ä??ï,ŒNPObjectï,ŒNPPåœ?pluginAllocateä??赋å?,ï,š static NPObject *pluginAllocate(NPP npp, NPClass *theClass) { PluginObject *newInstance = (PluginObject*) malloc(sizeof(PluginObject)); newInstance- header._class = theClass; newInstance- header.referenceCount = 1; if (!identifiersInitialized) { identifiersInitialized = true; initializeIdentifiers(); } newInstance- npp = npp; return newInstance- header; } è??里å??ä?,看åˆ?ï,ŒNPObjectå??æ??NPClassçš„å??è?…ï,Œä??è??了jsçš„å??è??æœ?è??å??æ??ä??ç?„å‡,æ?? NPWindowåœ?å?ªé‡Œèµ‹å?,çš„ï,Ÿè??è??å??NPP_SetWindowå??ï,Œè??ä?ªåº?è?,æ??åœ?æ??ä??è?†å›?创å?ºå,,ä?,å??è?ƒç??çš„ã?‚ å??ï,Œè??æ??有å?Œï,Œç??ç??NPP_Newï,Œçœ‹çœ‹è??3ä?ªå?‚æ?? int16 argc,char* argn[], char* argv[] ç??ä,,mainå‡,æ??çš„å?‚æ??ï,Œargnå?Œargv分åˆ?ä??è??节ç‚?çš„å??æ??å??å?Œå??æ??å?,ï,Œæˆ?å??HTMLä??æ??å?ˆç†Ÿï,Œä??çŸ,é??æ??ä??æ??å??è??ä?ªï,Œè??æ??å??ç…?测è??ç??çš„HTMLæ?‡ä??æ ?è??释å,,ä??些ï,š object type= application/x-testbrowserplugin height=200 width=400 id= sample param name= DrawingModel value= Surface / param name= PluginType value= Paint / /object OKï,Œè??里的argc == 2ï,Œargn[0] == DrawingModel ï,Œargn[1] == Surface ï,Œè??æ ?å,?å??åº?è?,å??æ??ç?,了 æµ?è?ˆå??é?šè?‡HTMLä??æ??ä??çš„å?‚æ??ï,Œè?ƒç??NPP_Newåˆ?å?‹åŒ?æ??ä ??ï,Œå??åˆ?SubPluginå?ŒPluginType è??里的SubPluginä??è??真æ??çš„æ??ä??å??ä?‹çš„æ?,å??ï,Œå?šä?‰å?‚ä?‹ï,š class SubPlugin { public: SubPlugin(NPP inst) : m_inst(inst) {} virtual ~SubPlugin() {} virtual int16 handleEvent(const ANPEvent* evt) = 0; virtual bool supportsDrawingModel(ANPDrawingModel) = 0; int getPluginWidth(); int getPluginHeight(); NPP inst() const { return m_inst; } private: NPP m_inst; }; class SurfaceSubPlugin : public SubPlugin { public: SurfaceSubPlugin(NPP inst) : SubPlugin(inst) { m_context = NULL; } virtual ~SurfaceSubPlugin() {} virtual jobject getSurface() = 0; virtual bool supportsDrawingModel(ANPDrawingModel); void setContext(jobject context); jobject m_context; }; SubPluginï,Œæ??ä?›å,„ç?†äº‹ä??æ?,å??ï,ŒSurfaceSubPluginç??æ‰?SubPluginï,Œå??åŠ äº†Contextï,Œç??ä,œjniç›?å…?çš„è?ƒç?? å??é?…ä??ï,Œæˆ?ä??ç??æ‰?SurfaceSubPluginï,Œå??ç??è??些çº?è?šå‡,æ??ï,Œåˆ›å?ºæˆ?ä??自å??çš„æ??ä??ï,Œè?ŒHandleEvent的事ä??å??æ??å‰?é??è??åˆ?了的åœ?NPP_HandleEventä??ä, å…,çš„ OKï,Œåˆ?ç??åœ?ä?ºæ??ï,Œåˆ?å?‹åŒ?çš„å?,ä,œå?šå?Œäº†ï,ŒåŸºæœ?çš„è?ƒç ??é??è??ï,Œæ?†æ??ä?Ÿæ??å,,了ï,Œå??ä?,å,?å?‹å…?ä,?çš„æ??ä??å??ç??ä º†ã?‚
本文档为【android浏览器插件总结】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_995397
暂无简介~
格式:doc
大小:47KB
软件:Word
页数:0
分类:互联网
上传时间:2017-09-26
浏览量:5