2121
2222// //////////////////////////////////////////////////////////////////////////////
2323
24+ #define LIBBROWSER_DUMMY_URL " http://libbrowser_dummy_url/"
25+
26+ // //////////////////////////////////////////////////////////////////////////////
27+
2428bool MCAndroidWebViewBrowserFactoryCreate (MCBrowserFactoryRef &r_factory);
2529
2630MCBrowserFactoryMap s_factory_list[] =
@@ -643,6 +647,9 @@ class MCAndroidWebViewBrowser : public MCBrowserBase
643647 case kMCBrowserJavaScriptHandlers :
644648 return GetJavaScriptHandlers (r_utf8_string);
645649
650+ case kMCBrowserHTMLText :
651+ return GetHTMLText (r_utf8_string);
652+
646653 default :
647654 break ;
648655 }
@@ -660,6 +667,9 @@ class MCAndroidWebViewBrowser : public MCBrowserBase
660667 case kMCBrowserJavaScriptHandlers :
661668 return SetJavaScriptHandlers (p_utf8_string);
662669
670+ case kMCBrowserHTMLText :
671+ return SetHTMLText (p_utf8_string);
672+
663673 default :
664674 break ;
665675 }
@@ -754,6 +764,17 @@ class MCAndroidWebViewBrowser : public MCBrowserBase
754764 return true ;
755765 }
756766
767+ bool GetHTMLText (char *&r_htmltext)
768+ {
769+ return EvaluateJavaScript (" document.documentElement.outerHTML" , r_htmltext);
770+ }
771+
772+ bool SetHTMLText (const char *p_utf8_string)
773+ {
774+ MCAndroidObjectRemoteCall (m_view, " loadHtml" , " vss" , nil, LIBBROWSER_DUMMY_URL, p_utf8_string);
775+ return true ;
776+ }
777+
757778 bool GetUserAgent (char *&r_useragent)
758779 {
759780 char *t_useragent;
@@ -875,11 +896,14 @@ JNIEXPORT void JNICALL Java_com_runrev_android_libraries_LibBrowserWebView_doSta
875896 t_url = nil;
876897 /* UNCHECKED */ MCBrowserJavaStringToUtf8String (env, url, t_url);
877898
878- MCBrowser *t_browser;
879- if (MCBrowserFindWithJavaView (env, object, t_browser))
899+ if (!MCCStringBeginsWith (t_url, LIBBROWSER_DUMMY_URL))
880900 {
881- ((MCAndroidWebViewBrowser*)t_browser)->OnNavigationBegin (false , t_url);
882- ((MCAndroidWebViewBrowser*)t_browser)->OnDocumentLoadBegin (false , t_url);
901+ MCBrowser *t_browser;
902+ if (MCBrowserFindWithJavaView (env, object, t_browser))
903+ {
904+ ((MCAndroidWebViewBrowser*)t_browser)->OnNavigationBegin (false , t_url);
905+ ((MCAndroidWebViewBrowser*)t_browser)->OnDocumentLoadBegin (false , t_url);
906+ }
883907 }
884908
885909 MCCStringFree (t_url);
@@ -892,11 +916,14 @@ JNIEXPORT void JNICALL Java_com_runrev_android_libraries_LibBrowserWebView_doFin
892916 t_url = nil;
893917 /* UNCHECKED */ MCBrowserJavaStringToUtf8String (env, url, t_url);
894918
895- MCBrowser *t_browser;
896- if (MCBrowserFindWithJavaView (env, object, t_browser))
919+ if (!MCCStringBeginsWith (t_url, LIBBROWSER_DUMMY_URL))
897920 {
898- ((MCAndroidWebViewBrowser*)t_browser)->OnDocumentLoadComplete (false , t_url);
899- ((MCAndroidWebViewBrowser*)t_browser)->OnNavigationComplete (false , t_url);
921+ MCBrowser *t_browser;
922+ if (MCBrowserFindWithJavaView (env, object, t_browser))
923+ {
924+ ((MCAndroidWebViewBrowser*)t_browser)->OnDocumentLoadComplete (false , t_url);
925+ ((MCAndroidWebViewBrowser*)t_browser)->OnNavigationComplete (false , t_url);
926+ }
900927 }
901928
902929 MCCStringFree (t_url);
@@ -913,11 +940,14 @@ JNIEXPORT void JNICALL Java_com_runrev_android_libraries_LibBrowserWebView_doLoa
913940 t_error = nil;
914941 /* UNCHECKED */ MCBrowserJavaStringToUtf8String (env, error, t_error);
915942
916- MCBrowser *t_browser;
917- if (MCBrowserFindWithJavaView (env, object, t_browser))
943+ if (!MCCStringBeginsWith (t_url, LIBBROWSER_DUMMY_URL))
918944 {
919- ((MCAndroidWebViewBrowser*)t_browser)->OnDocumentLoadFailed (false , t_url, t_error);
920- ((MCAndroidWebViewBrowser*)t_browser)->OnNavigationFailed (false , t_url, t_error);
945+ MCBrowser *t_browser;
946+ if (MCBrowserFindWithJavaView (env, object, t_browser))
947+ {
948+ ((MCAndroidWebViewBrowser*)t_browser)->OnDocumentLoadFailed (false , t_url, t_error);
949+ ((MCAndroidWebViewBrowser*)t_browser)->OnNavigationFailed (false , t_url, t_error);
950+ }
921951 }
922952
923953 MCCStringFree (t_url);
0 commit comments