@@ -172,6 +172,16 @@ WebView::WebView(flutter::PluginRegistrar* registrar, int viewId,
172172 webview->HandleMethodCall(call, std::move(result));
173173 });
174174
175+ auto cookieChannel =
176+ std::make_unique<flutter::MethodChannel<flutter::EncodableValue>>(
177+ GetPluginRegistrar()->messenger(),
178+ "plugins.flutter.io/cookie_manager",
179+ &flutter::StandardMethodCodec::GetInstance());
180+ cookieChannel->SetMethodCallHandler(
181+ [webview = this](const auto& call, auto result) {
182+ webview->HandleCookieMethodCall(call, std::move(result));
183+ });
184+
175185 std::string url;
176186 auto initialUrl = params[flutter::EncodableValue("initialUrl")];
177187 if (std::holds_alternative<std::string>(initialUrl)) {
@@ -198,6 +208,16 @@ WebView::WebView(flutter::PluginRegistrar* registrar, int viewId,
198208 }
199209 }
200210
211+ // TODO: Not implemented
212+ // auto media = params[flutter::EncodableValue("autoMediaPlaybackPolicy")];
213+
214+ auto userAgent = params[flutter::EncodableValue("userAgent")];
215+ if (std::holds_alternative<std::string>(userAgent)) {
216+ auto settings = webViewInstance_->GetSettings();
217+ settings.SetUserAgentString(std::get<std::string>(userAgent));
218+ webViewInstance_->SetSettings(settings);
219+ }
220+
201221 webViewInstance_->RegisterOnPageStartedHandler(
202222 [this](LWE::WebContainer* container, const std::string& url) {
203223 LOG_DEBUG("RegisterOnPageStartedHandler(url: %s)\n", url.c_str());
@@ -834,9 +854,31 @@ void WebView::HandleMethodCall(
834854 webViewInstance_->ScrollBy(x, y);
835855 result->Success();
836856 } else if (methodName.compare("getScrollX") == 0) {
837- result->NotImplemented( );
857+ result->Success(flutter::EncodableValue(webViewInstance_->GetScrollX()) );
838858 } else if (methodName.compare("getScrollY") == 0) {
859+ result->Success(flutter::EncodableValue(webViewInstance_->GetScrollY()));
860+ } else {
839861 result->NotImplemented();
862+ }
863+ }
864+
865+ void WebView::HandleCookieMethodCall(
866+ const flutter::MethodCall<flutter::EncodableValue>& method_call,
867+ std::unique_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
868+ if (webViewInstance_ == nullptr) {
869+ result->Error("Not Webview created");
870+ return;
871+ }
872+
873+ const auto methodName = method_call.method_name();
874+ const auto& arguments = *method_call.arguments();
875+
876+ LOG_DEBUG("WebView::HandleMethodCall : %s \n ", methodName.c_str());
877+
878+ if (methodName.compare("clearCookies") == 0) {
879+ LWE::CookieManager* cookie = LWE::CookieManager::GetInstance();
880+ cookie->ClearCookies();
881+ result->Success(flutter::EncodableValue(true));
840882 } else {
841883 result->NotImplemented();
842884 }
0 commit comments