#include <string.h>
#include <toolkit-application.h>
#include <memory>
+#include <dali/devel-api/adaptor-framework/web-engine/web-engine-user-media-permission-request.h>
namespace Dali
{
void GetPlainTextAsynchronously(PlainTextReceivedCallback callback) override
{
}
+ void WebAuthenticationCancel() override
+ {
+ }
+ void RegisterWebAuthDisplayQRCallback(WebEngineWebAuthDisplayQRCallback callback) override
+ {
+ }
+ void RegisterWebAuthResponseCallback(WebEngineWebAuthResponseCallback callback) override
+ {
+ }
+ void RegisterUserMediaPermissionRequestCallback(WebEngineUserMediaPermissionRequestCallback callback) override
+ {
+ }
private:
MockWebEngineSettings settings;
mTextFoundCallback = callback;
}
+ void WebAuthenticationCancel()
+ {
+ mWebAuthenticationCancel = true;
+ }
+
+ void RegisterWebAuthDisplayQRCallback(Dali::WebEnginePlugin::WebEngineWebAuthDisplayQRCallback callback)
+ {
+ mWebAuthDisplayQRCallback = callback;
+ }
+
+ void RegisterWebAuthResponseCallback(Dali::WebEnginePlugin::WebEngineWebAuthResponseCallback callback)
+ {
+ mWebAuthResponseCallback = callback;
+ }
+
+ void RegisterUserMediaPermissionRequestCallback(Dali::WebEnginePlugin::WebEngineUserMediaPermissionRequestCallback callback)
+ {
+ mUserMediaPermissionRequestCallback = callback;
+ }
+
std::string mUrl;
std::vector<std::string> mHistory;
size_t mCurrentPlusOnePos;
Dali::WebEnginePlugin::WebEngineFullscreenEnteredCallback mFullscreenEnteredCallback;
Dali::WebEnginePlugin::WebEngineFullscreenExitedCallback mFullscreenExitedCallback;
Dali::WebEnginePlugin::WebEngineTextFoundCallback mTextFoundCallback;
+ bool mWebAuthenticationCancel;
+ Dali::WebEnginePlugin::WebEngineWebAuthDisplayQRCallback mWebAuthDisplayQRCallback;
+ Dali::WebEnginePlugin::WebEngineWebAuthResponseCallback mWebAuthResponseCallback;
+ Dali::WebEnginePlugin::WebEngineUserMediaPermissionRequestCallback mUserMediaPermissionRequestCallback;
+};
+
+class MockUserMediaPermissionRequest : public Dali::WebEngineUserMediaPermissionRequest
+{
+public:
+ MockUserMediaPermissionRequest()
+ {
+ }
+ void Set(bool allowed) const override
+ {
+ }
+ bool Suspend() const override
+ {
+ return true;
+ }
};
namespace
{
gInstance->mTextFoundCallback(1);
}
+ if(gInstance->mWebAuthDisplayQRCallback)
+ {
+ gInstance->mWebAuthDisplayQRCallback("test-string");
+ }
+ if(gInstance->mWebAuthResponseCallback)
+ {
+ gInstance->mWebAuthResponseCallback();
+ }
+ if(gInstance->mUserMediaPermissionRequestCallback)
+ {
+ std::unique_ptr<Dali::WebEngineUserMediaPermissionRequest> request(new MockUserMediaPermissionRequest());
+ gInstance->mUserMediaPermissionRequestCallback(std::move(request), "message");
+ }
}
return false;
}
Internal::Adaptor::GetImplementation(*this).RegisterTextFoundCallback(callback);
}
+void WebEngine::WebAuthenticationCancel()
+{
+ Internal::Adaptor::GetImplementation(*this).WebAuthenticationCancel();
+}
+
+void WebEngine::RegisterWebAuthDisplayQRCallback(Dali::WebEnginePlugin::WebEngineWebAuthDisplayQRCallback callback)
+{
+ Internal::Adaptor::GetImplementation(*this).RegisterWebAuthDisplayQRCallback(callback);
+}
+
+void WebEngine::RegisterWebAuthResponseCallback(Dali::WebEnginePlugin::WebEngineWebAuthResponseCallback callback)
+{
+ Internal::Adaptor::GetImplementation(*this).RegisterWebAuthResponseCallback(callback);
+}
+
+void WebEngine::RegisterUserMediaPermissionRequestCallback(Dali::WebEnginePlugin::WebEngineUserMediaPermissionRequestCallback callback)
+{
+ Internal::Adaptor::GetImplementation(*this).RegisterUserMediaPermissionRequestCallback(callback);
+}
+
} // namespace Dali
#include <dali/integration-api/events/touch-event-integ.h>
#include <dali/integration-api/events/wheel-event-integ.h>
#include <dali/public-api/images/pixel-data.h>
+#include <dali/devel-api/adaptor-framework/web-engine/web-engine-user-media-permission-request.h>
using namespace Dali;
using namespace Toolkit;
static int gFullscreenEnteredCallbackCalled = 0;
static int gFullscreenExitedCallbackCalled = 0;
static int gTextFoundCallbackCalled = 0;
+static int gWebAuthDisplayQRCalled = 0;
+static int gWebAuthDisplayResponseCalled = 0;
+static int gUserMediaPermissionRequestCalled = 0;
struct CallbackFunctor
{
gTextFoundCallbackCalled++;
}
+static void OnWebAuthDisplayQR(const std::string&)
+{
+ gWebAuthDisplayQRCalled++;
+}
+
+static void OnWebAuthResponse()
+{
+ gWebAuthDisplayResponseCalled++;
+}
+
+static void OnUserMediaPermissionRequest(std::unique_ptr<Dali::WebEngineUserMediaPermissionRequest> request, const std::string& msg)
+{
+ gUserMediaPermissionRequestCalled++;
+}
+
} // namespace
void web_view_startup(void)
DALI_TEST_EQUALS(gTextFoundCallbackCalled, 1, TEST_LOCATION);
END_TEST;
}
+
+int UtcDaliWebViewRegisterWebAuthDisplayQRCallback(void)
+{
+ ToolkitTestApplication application;
+
+ WebView view = WebView::New();
+ DALI_TEST_CHECK(view);
+
+ view.RegisterWebAuthDisplayQRCallback(&OnWebAuthDisplayQR);
+ DALI_TEST_EQUALS(gWebAuthDisplayQRCalled, 0, TEST_LOCATION);
+
+ view.LoadUrl(TEST_URL1);
+ Test::EmitGlobalTimerSignal();
+ DALI_TEST_EQUALS(gWebAuthDisplayQRCalled, 1, TEST_LOCATION);
+ END_TEST;
+}
+
+int UtcDaliWebViewRegisterWebAuthResponseCallback(void)
+{
+ ToolkitTestApplication application;
+
+ WebView view = WebView::New();
+ DALI_TEST_CHECK(view);
+
+ view.RegisterWebAuthResponseCallback(&OnWebAuthResponse);
+ DALI_TEST_EQUALS(gWebAuthDisplayResponseCalled, 0, TEST_LOCATION);
+
+ view.LoadUrl(TEST_URL1);
+ Test::EmitGlobalTimerSignal();
+ DALI_TEST_EQUALS(gWebAuthDisplayResponseCalled, 1, TEST_LOCATION);
+ END_TEST;
+}
+
+int UtcDaliWebViewRegisterUserMediaPermissionRequestCallback(void)
+{
+ ToolkitTestApplication application;
+
+ WebView view = WebView::New();
+ DALI_TEST_CHECK(view);
+
+ view.RegisterUserMediaPermissionRequestCallback(&OnUserMediaPermissionRequest);
+ DALI_TEST_EQUALS(gUserMediaPermissionRequestCalled, 0, TEST_LOCATION);
+
+ view.LoadUrl(TEST_URL1);
+ Test::EmitGlobalTimerSignal();
+ DALI_TEST_EQUALS(gUserMediaPermissionRequestCalled, 1, TEST_LOCATION);
+ END_TEST;
+}
+
+int UtcDaliWebViewWebAuthenticationCancel(void)
+{
+ ToolkitTestApplication application;
+
+ WebView view = WebView::New();
+ DALI_TEST_CHECK(view);
+
+ try
+ {
+ // Just call API and exception check.
+ view.WebAuthenticationCancel();
+ tet_result(TET_PASS);
+ }
+ catch(...)
+ {
+ // Should not throw exception
+ tet_result(TET_FAIL);
+ }
+
+ END_TEST;
+}
Dali::Toolkit::GetImpl(*this).GetPlainTextAsynchronously(callback);
}
+void WebView::WebAuthenticationCancel()
+{
+ Dali::Toolkit::GetImpl(*this).WebAuthenticationCancel();
+}
+
+void WebView::RegisterWebAuthDisplayQRCallback(Dali::WebEnginePlugin::WebEngineWebAuthDisplayQRCallback callback)
+{
+ Dali::Toolkit::GetImpl(*this).RegisterWebAuthDisplayQRCallback(callback);
+}
+
+void WebView::RegisterWebAuthResponseCallback(Dali::WebEnginePlugin::WebEngineWebAuthResponseCallback callback)
+{
+ Dali::Toolkit::GetImpl(*this).RegisterWebAuthResponseCallback(callback);
+}
+
+void WebView::RegisterUserMediaPermissionRequestCallback(Dali::WebEnginePlugin::WebEngineUserMediaPermissionRequestCallback callback)
+{
+ Dali::Toolkit::GetImpl(*this).RegisterUserMediaPermissionRequestCallback(callback);
+}
+
+
WebView::WebView(Internal::WebView& implementation)
: Control(implementation)
{
*/
void GetPlainTextAsynchronously(Dali::WebEnginePlugin::PlainTextReceivedCallback callback);
+ /**
+ * @brief Cancel WebAuthentication(cancel in progress passkey operation).
+ */
+ void WebAuthenticationCancel();
+
+ /**
+ * @brief Register WebAuthDisplayQR callback.
+ *
+ * @param[in] callback The callback informs browser app to display QR code popup for passkey scenario.
+ */
+ void RegisterWebAuthDisplayQRCallback(Dali::WebEnginePlugin::WebEngineWebAuthDisplayQRCallback callback);
+
+ /**
+ * @brief Register WebAuthResponse callback.
+ *
+ * @param[in] callback The callback informs browser app that the passkey registration and authentication has been successful and app can close QR popup.
+ */
+ void RegisterWebAuthResponseCallback(Dali::WebEnginePlugin::WebEngineWebAuthResponseCallback callback);
+
+ /**
+ * @brief Register UserMediaPermissionRequest callback.
+ *
+ * @param[in] callback The callback to be called for handling user media permission.
+ */
+ void RegisterUserMediaPermissionRequestCallback(Dali::WebEnginePlugin::WebEngineUserMediaPermissionRequestCallback callback);
+
public: // Not intended for application developers
/// @cond internal
/**
}
}
+void WebView::WebAuthenticationCancel()
+{
+ if(mWebEngine)
+ {
+ mWebEngine.WebAuthenticationCancel();
+ }
+}
+
+void WebView::RegisterWebAuthDisplayQRCallback(Dali::WebEnginePlugin::WebEngineWebAuthDisplayQRCallback callback)
+{
+ if(mWebEngine)
+ {
+ mWebEngine.RegisterWebAuthDisplayQRCallback(std::move(callback));
+ }
+}
+
+void WebView::RegisterWebAuthResponseCallback(Dali::WebEnginePlugin::WebEngineWebAuthResponseCallback callback)
+{
+ if(mWebEngine)
+ {
+ mWebEngine.RegisterWebAuthResponseCallback(std::move(callback));
+ }
+}
+
+void WebView::RegisterUserMediaPermissionRequestCallback(Dali::WebEnginePlugin::WebEngineUserMediaPermissionRequestCallback callback)
+{
+ if(mWebEngine)
+ {
+ mWebEngine.RegisterUserMediaPermissionRequestCallback(std::move(callback));
+ }
+}
+
void WebView::OnFrameRendered()
{
if(mFrameRenderedCallback)
*/
void GetPlainTextAsynchronously(Dali::WebEnginePlugin::PlainTextReceivedCallback callback);
+ /**
+ * @copydoc Dali::Toolkit::WebView::WebAuthenticationCancel()
+ */
+ void WebAuthenticationCancel();
+
+ /**
+ * @copydoc Dali::Toolkit::WebView::RegisterWebAuthDisplayQRCallback()
+ */
+ void RegisterWebAuthDisplayQRCallback(Dali::WebEnginePlugin::WebEngineWebAuthDisplayQRCallback callback);
+
+ /**
+ * @copydoc Dali::Toolkit::WebView::RegisterWebAuthResponseCallback()
+ */
+ void RegisterWebAuthResponseCallback(Dali::WebEnginePlugin::WebEngineWebAuthResponseCallback callback);
+
+ /**
+ * @copydoc Dali::Toolkit::WebView::RegisterUserMediaPermissionRequestCallback()
+ */
+ void RegisterUserMediaPermissionRequestCallback(Dali::WebEnginePlugin::WebEngineUserMediaPermissionRequestCallback callback);
+
public: // Properties
/**
* @brief Called when a property of an object of this type is set.