1
0
Fork 0
mirror of https://github.com/juce-framework/JUCE.git synced 2026-01-25 02:04:23 +00:00

WebBrowserComponent: Added a user agent option to change the browser's user agent

This commit is contained in:
Fabian Renn-Giles 2022-10-14 11:46:50 +00:00
parent 57b07997d3
commit 542312296f
9 changed files with 425 additions and 258 deletions

View file

@ -175,7 +175,8 @@ DECLARE_JNI_CLASS (AndroidCookieManager, "android/webkit/CookieManager")
METHOD (setBuiltInZoomControls, "setBuiltInZoomControls", "(Z)V") \
METHOD (setDisplayZoomControls, "setDisplayZoomControls", "(Z)V") \
METHOD (setJavaScriptEnabled, "setJavaScriptEnabled", "(Z)V") \
METHOD (setSupportMultipleWindows, "setSupportMultipleWindows", "(Z)V")
METHOD (setSupportMultipleWindows, "setSupportMultipleWindows", "(Z)V") \
METHOD (setUserAgentString, "setUserAgentString", "(Ljava/lang/String;)V")
DECLARE_JNI_CLASS (WebSettings, "android/webkit/WebSettings")
#undef JNI_CLASS_MEMBERS
@ -197,7 +198,7 @@ class WebBrowserComponent::Pimpl : public AndroidViewComponent,
public AsyncUpdater
{
public:
Pimpl (WebBrowserComponent& o)
Pimpl (WebBrowserComponent& o, const String& userAgent)
: owner (o)
{
auto* env = getEnv();
@ -210,6 +211,9 @@ public:
env->CallVoidMethod (settings, WebSettings.setDisplayZoomControls, false);
env->CallVoidMethod (settings, WebSettings.setSupportMultipleWindows, true);
if (userAgent.isNotEmpty())
env->CallVoidMethod (settings, WebSettings.setUserAgentString, javaString (userAgent).get());
juceWebChromeClient = GlobalRef (LocalRef<jobject> (env->NewObject (JuceWebChromeClient, JuceWebChromeClient.constructor,
reinterpret_cast<jlong> (this))));
env->CallVoidMethod ((jobject) getView(), AndroidWebView.setWebChromeClient, juceWebChromeClient.get());
@ -582,13 +586,13 @@ private:
};
//==============================================================================
WebBrowserComponent::WebBrowserComponent (const bool unloadWhenHidden)
WebBrowserComponent::WebBrowserComponent (const Options& options)
: blankPageShown (false),
unloadPageWhenHidden (unloadWhenHidden)
unloadPageWhenHidden (! options.keepsPageLoadedWhenBrowserIsHidden())
{
setOpaque (true);
browser.reset (new Pimpl (*this));
browser.reset (new Pimpl (*this, options.getUserAgent()));
addAndMakeVisible (browser.get());
}
@ -719,6 +723,11 @@ void WebBrowserComponent::clearCookies()
}
}
bool WebBrowserComponent::areOptionsSupported (const Options& options)
{
return (options.getBackend() == Options::Backend::defaultBackend);
}
WebBrowserComponent::Pimpl::JuceWebViewClient16_Class WebBrowserComponent::Pimpl::JuceWebViewClient16;
WebBrowserComponent::Pimpl::JuceWebViewClient21_Class WebBrowserComponent::Pimpl::JuceWebViewClient21;
WebBrowserComponent::Pimpl::JuceWebChromeClient_Class WebBrowserComponent::Pimpl::JuceWebChromeClient;