Skip to content
This repository was archived by the owner on Aug 31, 2021. It is now read-only.

Commit 91fc8ad

Browse files
committed
[[ BrowserWidget ]] Implement browser "htmltext" property on Android
1 parent 92026b0 commit 91fc8ad

File tree

1 file changed

+42
-12
lines changed

1 file changed

+42
-12
lines changed

libbrowser/src/libbrowser_android.cpp

Lines changed: 42 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,10 @@
2121

2222
////////////////////////////////////////////////////////////////////////////////
2323

24+
#define LIBBROWSER_DUMMY_URL "http://libbrowser_dummy_url/"
25+
26+
////////////////////////////////////////////////////////////////////////////////
27+
2428
bool MCAndroidWebViewBrowserFactoryCreate(MCBrowserFactoryRef &r_factory);
2529

2630
MCBrowserFactoryMap 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

Comments
 (0)