2 * Copyright (c) 2020 Samsung Electronics Co., Ltd.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
18 using System.Collections.Generic;
21 using Tizen.NUI.BaseComponents;
22 using Tizen.NUI.Components;
24 namespace Tizen.NUI.WebViewTest
26 internal class MenuView : View
28 private WebContextMenu contextMenu;
29 private Button[] buttons;
31 public event EventHandler<ItemClickedEventArgs> ClickedEvent;
33 public class ItemClickedEventArgs : EventArgs
35 public uint CurrentIndex;
38 internal MenuView(WebContextMenu menu)
42 Layout = new LinearLayout()
44 LinearOrientation = LinearLayout.Orientation.Vertical,
45 HorizontalAlignment = HorizontalAlignment.Center
48 buttons = new Button[menu.ItemCount];
50 for (uint i = 0; i < menu.ItemCount; i++)
52 WebContextMenuItem item = menu.GetItemAtIndex(i);
53 buttons[i] = new Button()
55 Size = new Size(200, 80),
57 TextColor = Color.Black,
60 buttons[i].TouchEvent += OnMenuItemTouched;
65 private bool OnMenuItemTouched(object s, TouchEventArgs e)
68 for (; i < buttons.Length; i++)
70 if (buttons[i] == (Button)s)
72 Log.Info("WebView", $"found button {i} is selected.");
77 Log.Info("WebView", $"button {i} is selected.");
79 //WebContextMenuItem item = contextMenu.ItemList.GetItemAtIndex(i);
82 // contextMenu.SelectItem(item);
83 // contextMenu.Hide();
86 ItemClickedEventArgs args = new ItemClickedEventArgs();
87 args.CurrentIndex = i;
88 ClickedEvent?.Invoke(this, args);
90 Log.Info("WebView", $"button {i} is selected.");
95 internal void HideMenu()
101 public class SimpleWebViewApplication : NUIApplication
103 private BaseComponents.WebView simpleWebView = null;
104 private TextField addressBar = null;
105 private Button backButton = null;
106 private Button forwardButton = null;
107 private Button refreshButton = null;
109 private int index = 0;
110 private const int WEBSITES_COUNT = 2;
111 private string[] websites = new string[2];
113 // "https://terms.account.samsung.com/contents/legal/kor/kor/customizedservicecontent.html",
114 // "https://www.youtube.com"
117 private string invalidUrl = "https://test/";
119 private const string USER_AGENT = "Mozilla/5.0 (SMART-TV; Linux; Tizen 6.0) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/4.0 Chrome/76.0.3809.146 TV Safari/537.36";
121 private const int ADDRESSBAR_HEIGHT = 100;
123 private const int SCREEN_WIDTH = 1920;
124 private const int SCREEN_HEIGHT = 1080;
126 private const int MIN_WEBVIEW_WIDTH = 1000;
127 private const int MIN_WEBVIEW_HEIGHT = 600;
129 private const int WEBVIEW_WIDTH = SCREEN_WIDTH;
130 private const int WEBVIEW_HEIGHT = SCREEN_HEIGHT - ADDRESSBAR_HEIGHT;
132 private Vector2 menuPosition;
133 private MenuView menuView;
135 private int blueKeyPressedCount = 0;
136 private int yellowKeyPressedCount = 0;
137 private int redKeyPressedCount = 0;
138 private int greenKeyPressedCount = 0;
140 private static long startTime = 0;
142 private Timer messageTimer = null;
143 private ImageView faviconView = null;
144 private ImageView screenshotView = null;
145 private ImageView hitTestImageView = null;
147 private static string[] runtimeArgs = { "Tizen.NUI.WebViewTest", "--enable-dali-window", "--enable-spatial-navigation" };
149 protected override void OnCreate()
153 GetDefaultWindow().BackgroundColor = new Color((float)189 / 255, (float)179 / 255, (float)204 / 255, 1.0f);
155 backButton = new Button()
157 Position = new Position(0, 0),
158 Size = new Size(100, 100),
160 TextColor = Color.Black,
163 backButton.TouchEvent += OnBackButtonTouchEvent;
164 GetDefaultWindow().Add(backButton);
166 forwardButton = new Button()
168 Position = new Position(100, 0),
169 Size = new Size(100, 100),
171 TextColor = Color.Black,
174 forwardButton.TouchEvent += OnForwardButtonTouchEvent;
175 GetDefaultWindow().Add(forwardButton);
177 refreshButton = new Button()
179 Position = new Position(200, 0),
180 Size = new Size(100, 100),
182 TextColor = Color.Black,
185 refreshButton.TouchEvent += OnRefreshButtonTouchEvent;
186 GetDefaultWindow().Add(refreshButton);
188 addressBar = new TextField()
190 Position = new Position(300, 0),
191 BackgroundColor = Color.White,
192 Size = new Size(SCREEN_WIDTH - 300, ADDRESSBAR_HEIGHT),
193 EnableGrabHandlePopup = false,
194 EnableGrabHandle = false,
195 EnableSelection = true,
197 PlaceholderText = "Please input url here like Www.baidu.com.",
199 addressBar.FocusGained += OnTextEditorFocusGained;
200 addressBar.FocusLost += OnTextEditorFocusLost;
201 addressBar.KeyEvent += OnAddressBarKeyEvent;
202 addressBar.TouchEvent += OnAddressBarTouchEvent;
203 GetDefaultWindow().Add(addressBar);
205 Log.Info("WebView", $"args count is {runtimeArgs.Length}");
206 for (int i = 0; i < runtimeArgs.Length; i++)
208 Log.Info("WebView", $"arg {i} is {runtimeArgs[i]}");
211 simpleWebView = new BaseComponents.WebView(runtimeArgs)
213 Position = new Position(0, ADDRESSBAR_HEIGHT),
214 Size = new Size(WEBVIEW_WIDTH, WEBVIEW_HEIGHT),
215 UserAgent = USER_AGENT,
217 VideoHoleEnabled = true,
219 simpleWebView.FocusGained += OnWebViewFocusGained;
220 simpleWebView.FocusLost += OnWebViewFocusLost;
221 simpleWebView.KeyEvent += OnWebViewKeyEvent;
222 simpleWebView.TouchEvent += OnWebViewTouchEvent;
223 simpleWebView.SslCertificateChanged += OnSslCertificateChanged;
224 //simpleWebView.HttpAuthRequested += OnHttpAuthRequested;
225 simpleWebView.PageLoadStarted += OnPageLoadStarted;
226 simpleWebView.PageLoading += OnPageLoading;
227 simpleWebView.PageLoadFinished += OnPageLoadFinished;
228 simpleWebView.PageLoadError += OnPageLoadError;
229 simpleWebView.ContextMenuShown += OnContextMenuShown;
230 simpleWebView.ContextMenuHidden += OnContextMenuHidden;
231 simpleWebView.ScrollEdgeReached += OnScrollEdgeReached;
232 simpleWebView.UrlChanged += OnUrlChanged;
233 simpleWebView.FormRepostPolicyDecided += OnFormRepostPolicyDecided;
234 //simpleWebView.FrameRendered += OnFrameRendered;
235 simpleWebView.ConsoleMessageReceived += OnConsoleMessageReceived;
236 simpleWebView.CertificateConfirmed += OnCertificateConfirmed;
237 simpleWebView.ResponsePolicyDecided += OnResponsePolicyDecided;
238 simpleWebView.NavigationPolicyDecided += OnNavigationPolicyDecided;
239 GetDefaultWindow().Add(simpleWebView);
241 GetDefaultWindow().KeyEvent += Instance_KeyEvent;
244 websites[0] = $"file://{Tizen.Applications.Application.Current.DirectoryInfo.Resource}test1.html";
245 websites[1] = $"file://{Tizen.Applications.Application.Current.DirectoryInfo.Resource}test2.html";
247 simpleWebView.LoadUrl(websites[index]);
248 //simpleWebView.LoadHtmlString("<Html><Head><title>Example</title></Head><Body><b>[This text is Bold......]</b></Body></Html>");
249 FocusManager.Instance.SetCurrentFocusView(simpleWebView);
251 messageTimer = new Timer(10000);
252 messageTimer.Tick += OnTick;
255 protected override void OnTerminate()
257 if (menuView != null)
259 GetDefaultWindow().Remove(menuView);
261 GetDefaultWindow().Remove(backButton);
262 GetDefaultWindow().Remove(forwardButton);
263 GetDefaultWindow().Remove(refreshButton);
264 GetDefaultWindow().Remove(addressBar);
266 if (screenshotView != null)
268 GetDefaultWindow().Remove(screenshotView);
271 messageTimer.Tick -= OnTick;
272 messageTimer.Dispose();
278 private bool OnBackButtonTouchEvent(object sender, View.TouchEventArgs e)
280 if (simpleWebView.CanGoBack())
282 simpleWebView.GoBack();
287 private bool OnForwardButtonTouchEvent(object sender, View.TouchEventArgs e)
289 if (simpleWebView.CanGoForward())
291 simpleWebView.GoForward();
296 private bool OnRefreshButtonTouchEvent(object sender, View.TouchEventArgs e)
298 simpleWebView.Reload();
302 private bool OnTick(object sender, EventArgs e)
304 Log.Info("WebView", $"------------timer tick-------");
306 if (faviconView != null)
308 GetDefaultWindow().Remove(faviconView);
309 faviconView.Dispose();
313 if (screenshotView != null)
315 Log.Info("WebView", $"------------remove screen shot-------");
316 GetDefaultWindow().Remove(screenshotView);
317 screenshotView.Dispose();
318 screenshotView = null;
322 Log.Info("WebView", $"------------screen shot is null-------");
325 if (hitTestImageView != null)
327 GetDefaultWindow().Remove(hitTestImageView);
328 hitTestImageView.Dispose();
329 hitTestImageView = null;
335 private bool OnWebViewTouchEvent(object source, View.TouchEventArgs args)
337 if (!simpleWebView.HasFocus())
339 FocusManager.Instance.SetCurrentFocusView(simpleWebView);
342 if (args.Touch.GetState(0) == PointStateType.Down && args.Touch.GetMouseButton(0) == MouseButton.Secondary)
344 if (menuView == null && menuPosition == null)
346 menuPosition = args.Touch.GetScreenPosition(0);
349 else if (args.Touch.GetState(0) == PointStateType.Down && args.Touch.GetMouseButton(0) == MouseButton.Primary)
351 if (menuView != null)
354 GetDefaultWindow().Remove(menuView);
362 private void OnMenuViewItemSelected(object source, MenuView.ItemClickedEventArgs e)
364 Log.Info("WebView", $"------------menu item is selected-------");
365 GetDefaultWindow().Remove(menuView);
369 private void OnWebViewFocusGained(object source, EventArgs args)
371 Log.Info("WebView", $"------------web view focus is gained-------");
374 private void OnWebViewFocusLost(object source, EventArgs args)
376 Log.Info("WebView", $"------------web view focus is lost-------");
379 private void OnHttpAuthRequested(object sender, WebViewHttpAuthRequestedEventArgs e)
381 Log.Info("WebView", $"------------http auth requested, Realm: {e.HttpAuthHandler.Realm}-------");
382 e.HttpAuthHandler.CancelCredential();
383 e.HttpAuthHandler.Suspend();
384 e.HttpAuthHandler.UseCredential("", "");
387 private void OnHttpRequestIntercepted(WebHttpRequestInterceptor interceptor)
389 Log.Info("WebView", $"------------http request intercepted, Url: {interceptor.Url}-------");
391 //interceptor.Ignore();
392 if (interceptor.Url.Equals(invalidUrl))
394 byte[] bData = Encoding.UTF8.GetBytes("<html><body><img src='test.jpg'></body></html>");
395 interceptor.SetResponseStatus(200, "OK");
396 interceptor.AddResponseHeader("Content-Type", "text/html; charset=UTF-8");
397 interceptor.AddResponseHeader("Content-Length", bData.Length.ToString());
398 interceptor.SetResponseBody(bData);
399 Log.Info("WebView", $"------------http request intercepted set response body end-------");
401 else if (interceptor.Url.Equals($"{invalidUrl}test.jpg"))
403 string path = Tizen.Applications.Application.Current.DirectoryInfo.SharedResource + "Tizen.NUI.WebViewTest.png";
404 using (FileStream fs = File.OpenRead(path))
406 byte[] bData = new byte[1024];
407 while (fs.Read(bData, 0, bData.Length) > 0)
409 interceptor.WriteResponseChunk(bData);
411 interceptor.WriteResponseChunk((byte[])null);
412 Log.Info("WebView", $"------------http request intercepted write chunk end-------");
416 if (interceptor.InterceptedWebView == simpleWebView)
418 Log.Info("WebView", $"------------http request intercepted web view is simpleWebVew-------");
421 Log.Info("WebView", $"------------http request intercepted end-------");
424 private void OnSslCertificateChanged(object sender, WebViewCertificateReceivedEventArgs e)
426 Log.Info("WebView", $"------------ssl certificate changed, IsFromMainFrame: {e.Certificate.IsFromMainFrame}-------");
427 Log.Info("WebView", $"------------ssl certificate changed, PemData: {e.Certificate.PemData}-------");
428 Log.Info("WebView", $"------------ssl certificate changed, PemData: {e.Certificate.IsContextSecure}-------");
431 private void OnPageLoadStarted(object sender, WebViewPageLoadEventArgs e)
433 Log.Info("WebView", $"------------web view start to load time: {DateTime.Now.Ticks - startTime}-------");
436 private void OnPageLoading(object sender, WebViewPageLoadEventArgs e)
438 Log.Info("WebView", $"------------web view is loading-------");
441 private void OnPageLoadFinished(object sender, WebViewPageLoadEventArgs e)
443 Log.Info("WebView", $"------------web view finishes loading-------");
445 if (simpleWebView.CanGoBack())
447 backButton.IsEnabled = true;
451 backButton.IsEnabled = false;
454 if (simpleWebView.CanGoForward())
456 forwardButton.IsEnabled = true;
460 forwardButton.IsEnabled = false;
464 private void OnPageLoadError(object sender, WebViewPageLoadErrorEventArgs e)
466 Log.Info("WebView", $"------------web view load error, Url: {e.PageLoadError.Url}-------");
467 Log.Info("WebView", $"------------web view load error, Code: {e.PageLoadError.Code}-------");
468 Log.Info("WebView", $"------------web view load error, Description: {e.PageLoadError.Description}-------");
469 Log.Info("WebView", $"------------web view load error, Type: {e.PageLoadError.Type}-------");
472 private void OnScrollEdgeReached(object sender, WebViewScrollEdgeReachedEventArgs e)
474 Log.Info("WebView", $"------------scroll edge reached, ScrollEdge: {e.ScrollEdge}-------");
477 private void OnUrlChanged(object sender, WebViewUrlChangedEventArgs e)
479 Log.Info("WebView", $"------------url changed, NewPageUrl: {e.NewPageUrl}-------");
482 private void OnFormRepostPolicyDecided(object sender, WebViewFormRepostPolicyDecidedEventArgs e)
484 Log.Info("WebView", $"------------form repost policy decided-------");
485 e.FormRepostPolicyDecisionMaker.Reply(true);
488 private void OnFrameRendered(object sender, EventArgs e)
490 Log.Info("WebView", $"------------frame rendered-------");
493 private void OnContextMenuShown(object sender, WebViewContextMenuShownEventArgs e)
495 Log.Info("WebView", $"------------context menu is shown, -------");
497 if (menuPosition != null)
499 menuView = new MenuView(e.ContextMenu)
501 BackgroundColor = Color.Cyan,
502 Position = new Position(menuPosition),
503 Size = new Size(200, e.ContextMenu.ItemCount * 80),
505 menuView.ClickedEvent += OnMenuViewItemSelected;
506 GetDefaultWindow().Add(menuView);
509 Log.Info("WebView", $"------------context menu shown, ItemList ItemCount: {e.ContextMenu.ItemCount}-------");
510 if (e.ContextMenu.ItemCount > 0)
512 WebContextMenuItem item = e.ContextMenu.GetItemAtIndex(0);
513 Log.Info("WebView", $"------------context menu shown, Item Tag: {item.Tag}-------");
514 Log.Info("WebView", $"------------context menu shown, Item Type: {item.Type}-------");
515 Log.Info("WebView", $"------------context menu shown, Item IsEnabled: {item.IsEnabled}-------");
516 Log.Info("WebView", $"------------context menu shown, Item LinkUrl: {item.LinkUrl}-------");
517 Log.Info("WebView", $"------------context menu shown, Item ImageUrl: {item.ImageUrl}-------");
518 Log.Info("WebView", $"------------context menu shown, Item Title: {item.Title}-------");
519 if (item.ParentMenu != null)
521 Log.Info("WebView", $"------------context menu shown, ParentMenu item count: {item.ParentMenu.ItemCount}-------");
524 Log.Info("WebView", $"------------context menu shown, ItemCount: {e.ContextMenu.ItemCount}-------");
525 //Log.Info("WebView", $"------------context menu shown, Position: {e.ContextMenu.Position}-------");
526 e.ContextMenu.AppendItem(WebContextMenuItem.ItemTag.NoAction, "test1", true);
527 e.ContextMenu.AppendItem(WebContextMenuItem.ItemTag.NoAction, "test2", "", true);
528 //e.ContextMenu.Hide();
529 if (e.ContextMenu.ItemCount > 0)
531 //WebContextMenuItem item = e.ContextMenu.GetItemAtIndex(0);
532 //e.ContextMenu.SelectItem(item);
533 //e.ContextMenu.RemoveItem(item);
537 private void OnContextMenuHidden(object sender, WebViewContextMenuHiddenEventArgs e)
539 Log.Info("WebView", $"------------context menu is hidden, -------");
542 private void OnConsoleMessageReceived(object sender, WebViewConsoleMessageReceivedEventArgs e)
544 Log.Info("WebView", $"------------console message received, Source: {e.ConsoleMessage.Source}-------");
545 Log.Info("WebView", $"------------console message received, Line: {e.ConsoleMessage.Line}-------");
546 Log.Info("WebView", $"------------console message received, Level: {e.ConsoleMessage.Level}-------");
547 Log.Info("WebView", $"------------console message received, Text: {e.ConsoleMessage.Text}-------");
550 private void OnCertificateConfirmed(object sender, WebViewCertificateReceivedEventArgs e)
552 Log.Info("WebView", $"------------ssl certificate confirmed, IsFromMainFrame: {e.Certificate.IsFromMainFrame}-------");
553 Log.Info("WebView", $"------------ssl certificate confirmed, PemData: {e.Certificate.PemData}-------");
554 Log.Info("WebView", $"------------ssl certificate confirmed, PemData: {e.Certificate.IsContextSecure}-------");
555 e.Certificate.Allow(true);
558 private void OnNavigationPolicyDecided(object sender, WebViewPolicyDecidedEventArgs e)
560 Log.Info("WebView", $"------------response policy decided, Url: {e.ResponsePolicyDecisionMaker.Url}-------");
561 Log.Info("WebView", $"------------response policy decided, Cookie: {e.ResponsePolicyDecisionMaker.Cookie}-------");
562 Log.Info("WebView", $"------------response policy decided, PolicyDecisionType: {e.ResponsePolicyDecisionMaker.PolicyDecisionType}-------");
563 Log.Info("WebView", $"------------response policy decided, ResponseMime: {e.ResponsePolicyDecisionMaker.ResponseMime}-------");
564 Log.Info("WebView", $"------------response policy decided, ResponseStatusCode: {e.ResponsePolicyDecisionMaker.ResponseStatusCode}-------");
565 Log.Info("WebView", $"------------response policy decided, DecisionNavigationType: {e.ResponsePolicyDecisionMaker.DecisionNavigationType}-------");
566 Log.Info("WebView", $"------------response policy decided, Scheme: {e.ResponsePolicyDecisionMaker.Scheme}-------");
567 if (e.ResponsePolicyDecisionMaker.Frame != null)
569 Log.Info("WebView", $"------------response policy decided, Frame.IsMainFrame: {e.ResponsePolicyDecisionMaker.Frame.IsMainFrame}-------");
571 //e.ResponsePolicyDecisionMaker.Ignore();
572 //e.ResponsePolicyDecisionMaker.Suspend();
573 //e.ResponsePolicyDecisionMaker.Use();
576 private void OnResponsePolicyDecided(object sender, WebViewPolicyDecidedEventArgs e)
578 Log.Info("WebView", $"------------response policy decided, Url: {e.ResponsePolicyDecisionMaker.Url}-------");
579 Log.Info("WebView", $"------------response policy decided, Cookie: {e.ResponsePolicyDecisionMaker.Cookie}-------");
580 Log.Info("WebView", $"------------response policy decided, PolicyDecisionType: {e.ResponsePolicyDecisionMaker.PolicyDecisionType}-------");
581 Log.Info("WebView", $"------------response policy decided, ResponseMime: {e.ResponsePolicyDecisionMaker.ResponseMime}-------");
582 Log.Info("WebView", $"------------response policy decided, ResponseStatusCode: {e.ResponsePolicyDecisionMaker.ResponseStatusCode}-------");
583 Log.Info("WebView", $"------------response policy decided, DecisionNavigationType: {e.ResponsePolicyDecisionMaker.DecisionNavigationType}-------");
584 Log.Info("WebView", $"------------response policy decided, Scheme: {e.ResponsePolicyDecisionMaker.Scheme}-------");
585 if (e.ResponsePolicyDecisionMaker.Frame != null)
587 Log.Info("WebView", $"------------response policy decided, Frame.IsMainFrame: {e.ResponsePolicyDecisionMaker.Frame.IsMainFrame}-------");
589 //e.ResponsePolicyDecisionMaker.Ignore();
590 //e.ResponsePolicyDecisionMaker.Suspend();
591 //e.ResponsePolicyDecisionMaker.Use();
594 private void OnJavaScriptMessageReceived(string message)
596 Log.Info("WebView", $"------------javascript message handler, message: {message}-------");
599 private void OnVideoPlaying(bool isPlaying)
601 Log.Info("WebView", $"------------video playing, isPlaying: {isPlaying}-------");
604 private void OnScreenshotAcquired(ImageView image)
606 Log.Info("WebView", $"------------screen shot acquired-------");
610 screenshotView = image;
611 screenshotView.Position = new Position(500, 500);
612 screenshotView.BackgroundColor = Color.Blue;
613 GetDefaultWindow().Add(screenshotView);
614 if (messageTimer.IsRunning())
618 messageTimer.Start();
619 Log.Info("WebView", $"------------screen shot would be shown-------");
623 private void OnHitTestFinished(WebHitTestResult test)
625 Log.Info("WebView", $"------------hit test finished-------");
626 Log.Info("WebView", $"WebHitTestResult, TestResultContext: {test.TestResultContext}");
627 Log.Info("WebView", $"WebHitTestResult, LinkUrl: {test.LinkUrl}");
628 Log.Info("WebView", $"WebHitTestResult, LinkTitle: {test.LinkTitle}");
629 Log.Info("WebView", $"WebHitTestResult, LinkLabel: {test.LinkLabel}");
630 Log.Info("WebView", $"WebHitTestResult, ImageUrl: {test.ImageUrl}");
631 Log.Info("WebView", $"WebHitTestResult, MediaUrl: {test.MediaUrl}");
632 Log.Info("WebView", $"WebHitTestResult, TagName: {test.TagName}");
633 Log.Info("WebView", $"WebHitTestResult, NodeValue: {test.NodeValue}");
634 if (test.Attributes != null)
636 Log.Info("WebView", $"WebHitTestResult, Attributes: {test.Attributes}");
638 Log.Info("WebView", $"WebHitTestResult, ImageFileNameExtension: {test.ImageFileNameExtension}");
639 ImageView imageView = test.Image;
640 if (imageView != null)
642 hitTestImageView = imageView;
643 hitTestImageView.Position = new Position(1000, 500);
644 hitTestImageView.BackgroundColor = Color.Blue;
645 GetDefaultWindow().Add(hitTestImageView);
646 if (messageTimer.IsRunning())
650 messageTimer.Start();
651 Log.Info("WebView", $"WebHitTestResult, Got image view");
655 private void OnJavaScriptEvaluated(string message)
657 Log.Info("WebView", $"------------javascript evaluation result: {message}-------");
660 private void OnJavaScriptAlert(string message)
662 Log.Info("WebView", $"------------javascript alert {message}-------");
663 simpleWebView.JavaScriptAlertReply();
666 private void OnGeolocationPermission(string host, string protocol)
668 Log.Info("WebView", $"------------geolocation permission, host: {host}, protocol: {protocol}-------");
671 private void OnJavaScriptConfirm(string message)
673 Log.Info("WebView", $"------------javascript confirm {message}-------");
674 simpleWebView.JavaScriptConfirmReply(true);
677 private void OnJavaScriptPrompt(string message1, string message2)
679 Log.Info("WebView", $"------------javascript prompt {message1}, {message2}-------");
680 simpleWebView.JavaScriptPromptReply("test");
683 private void OnPasswordDataListAcquired(IList<WebPasswordData> list)
685 Log.Info("WebView", $"------------password data list, count: {list.Count}-------");
686 string[] passwords = new string[list.Count];
687 for (int i = 0; i < list.Count; i++)
689 WebPasswordData data = list[i];
690 passwords[i] = data.Url;
691 Log.Info("WebView", $"------------password data, Url: {data.Url}-------");
692 Log.Info("WebView", $"------------password data, FingerprintUsed: {data.FingerprintUsed}-------");
697 simpleWebView.Context.DeleteFormPasswordDataList(passwords);
701 private void OnSecurityOriginListAcquired(IList<WebSecurityOrigin> list)
703 Log.Info("WebView", $"------------security origin, count: {list.Count}-------");
704 for (int i = 0; i < list.Count; i++)
706 WebSecurityOrigin origin = list[i];
707 Log.Info("WebView", $"------------security origin, Host: {origin.Host}-------");
708 Log.Info("WebView", $"------------security origin, Protocol: {origin.Protocol}-------");
713 WebSecurityOrigin origin = list[0];
714 simpleWebView.Context.GetWebStorageUsageForOrigin(origin, OnStorageUsageAcquired);
715 simpleWebView.Context.DeleteApplicationCache(origin);
716 simpleWebView.Context.DeleteWebDatabase(origin);
717 simpleWebView.Context.DeleteWebStorage(origin);
721 private void OnStorageUsageAcquired(ulong usage)
723 Log.Info("WebView", $"------------storage usage acquired, usage: {usage}-------");
726 private void OnDownloadStarted(string url)
728 Log.Info("WebView", $"------------download started, url: {url}-------");
731 private bool OnMimeOverridden(string url, string currentMime, out string newMime)
733 Log.Info("WebView", $"------------mime overridden, url: {url}-------");
734 Log.Info("WebView", $"------------mime overridden, currentMime: {currentMime}-------");
739 private void OnCookieChanged(object sender, EventArgs e)
741 Log.Info("WebView", $"------------cookie changed-------");
744 private bool OnWebViewKeyEvent(object source, View.KeyEventArgs args)
748 Log.Info("WebView", $"----web view key is {args.Key.KeyPressedName}, state is {args.Key.State}-------");
750 if (args.Key.State == Key.StateType.Up)
752 if (args.Key.KeyPressedName == "XF86RaiseChannel")
754 Log.Info("WebView", $"old url is {simpleWebView.Url}.");
757 simpleWebView.Url = websites[--index].ToLowerInvariant();
761 simpleWebView.Url = websites[WEBSITES_COUNT - 1].ToLowerInvariant();
764 Log.Info("WebView", $"new url is {simpleWebView.Url}.");
766 else if (args.Key.KeyPressedName == "XF86LowerChannel")
768 Log.Info("WebView", $"old url is {simpleWebView.Url}.");
769 if (index != WEBSITES_COUNT - 1)
771 simpleWebView.Url = websites[++index].ToLowerInvariant();
775 simpleWebView.Url = websites[0].ToLowerInvariant();
778 Log.Info("WebView", $"new url is {simpleWebView.Url}.");
780 //else if (args.Key.KeyPressedName == "1")
782 // Rectangle viewArea = new Rectangle(0, 0, 20, 20);
783 // bool succeeded = simpleWebView.GetScreenshotAsynchronously(viewArea, 1.0f, OnScreenshotAcquired);
784 // Log.Info("WebView", $"GetScreenshotAsynchronously, {succeeded}");
786 // succeeded = simpleWebView.HitTestAsynchronously(100, 100, BaseComponents.WebView.HitTestMode.Default, OnHitTestFinished);
787 // Log.Info("WebView", $"HitTestAsynchronously, {succeeded}");
789 else if (args.Key.KeyPressedName == "1")
791 simpleWebView.Context.RegisterHttpRequestInterceptedCallback(OnHttpRequestIntercepted);
792 simpleWebView.LoadUrl(invalidUrl);
795 else if (args.Key.KeyPressedName == "XF86Red")
797 FocusManager.Instance.SetCurrentFocusView(addressBar);
800 else if (args.Key.KeyPressedName == "XF86Blue")
802 blueKeyPressedCount++;
803 if (blueKeyPressedCount % 6 == 0)
805 simpleWebView.Position = new Position(0, ADDRESSBAR_HEIGHT);
806 simpleWebView.Orientation = new Rotation(new Radian(new Degree(60 * blueKeyPressedCount)), Vector3.ZAxis);
807 blueKeyPressedCount = 0;
811 simpleWebView.Orientation = new Rotation(new Radian(new Degree(60 * blueKeyPressedCount)), Vector3.ZAxis);
815 else if (args.Key.KeyPressedName == "XF86Yellow")
817 yellowKeyPressedCount++;
818 int wdistance = (SCREEN_WIDTH - MIN_WEBVIEW_WIDTH) / 5;
819 int hdistance = (SCREEN_HEIGHT - MIN_WEBVIEW_HEIGHT - ADDRESSBAR_HEIGHT) / 5;
820 simpleWebView.Position = new Position((SCREEN_WIDTH - MIN_WEBVIEW_WIDTH - yellowKeyPressedCount * wdistance) / 2, ADDRESSBAR_HEIGHT);
821 simpleWebView.Size = new Size(MIN_WEBVIEW_WIDTH + yellowKeyPressedCount * wdistance, MIN_WEBVIEW_HEIGHT + hdistance * yellowKeyPressedCount);
822 if (yellowKeyPressedCount % 5 == 0)
824 yellowKeyPressedCount = 0;
828 else if (args.Key.KeyPressedName == "XF86Green")
830 Log.Info("WebView", $"key XF86Green is pressed.");
832 if (greenKeyPressedCount == 0 && simpleWebView.Url.Contains("test1.html"))
835 Log.Info("WebView", $"web page title is {simpleWebView.Title}");
837 //faviconView = simpleWebView.Favicon;
838 //if (faviconView != null)
840 // faviconView.Position = new Position(500, 100);
841 // GetDefaultWindow().Add(faviconView);
842 // messageTimer.Start();
845 simpleWebView.ContentBackgroundColor = new Color(1.0f, 0.0f, 0.0f, 1.0f);
846 Log.Info("WebView", $"web page ContentBackgroundColor is {simpleWebView.ContentBackgroundColor}");
847 simpleWebView.TilesClearedWhenHidden = true;
848 Log.Info("WebView", $"web page TilesClearedWhenHidden is {simpleWebView.TilesClearedWhenHidden}");
849 simpleWebView.TileCoverAreaMultiplier = 2.0f;
850 Log.Info("WebView", $"web page TileCoverAreaMultiplier is {simpleWebView.TileCoverAreaMultiplier}");
851 simpleWebView.CursorEnabledByClient = true;
852 Log.Info("WebView", $"web page CursorEnabledByClient is {simpleWebView.CursorEnabledByClient}");
853 Log.Info("WebView", $"web page SelectedText is {simpleWebView.SelectedText}");
854 simpleWebView.PageZoomFactor = 2.0f;
855 Log.Info("WebView", $"web page PageZoomFactor is {simpleWebView.PageZoomFactor}");
856 simpleWebView.TextZoomFactor = 2.0f;
857 Log.Info("WebView", $"web page TextZoomFactor is {simpleWebView.TextZoomFactor}");
858 Log.Info("WebView", $"web page LoadProgressPercentage is {simpleWebView.LoadProgressPercentage}");
860 //simpleWebView.ActivateAccessibility(true);
861 //simpleWebView.AddCustomHeader("test", "value");
862 //simpleWebView.AddDynamicCertificatePath("", "");
863 simpleWebView.AddJavaScriptMessageHandler("", OnJavaScriptMessageReceived);
864 simpleWebView.CheckVideoPlayingAsynchronously(OnVideoPlaying);
865 //simpleWebView.ClearAllTilesResources();
866 //simpleWebView.ClearHistory();
867 simpleWebView.EvaluateJavaScript("document.body.style.backgroundColor='yellow';");
868 simpleWebView.EvaluateJavaScript("document.body.innerHTML", OnJavaScriptEvaluated);
869 Log.Info("WebView", $"web view, ScaleFactor is {simpleWebView.GetScaleFactor()}");
871 //Rectangle viewArea = new Rectangle(0, 0, 20, 20);
872 //ImageView shotView = simpleWebView.GetScreenshot(viewArea, 1.0f);
873 //if (shotView != null)
875 // shotView.Position = new Position(500, 200);
876 // GetDefaultWindow().Add(shotView);
879 simpleWebView.HighlightText("test", BaseComponents.WebView.FindOption.CaseInsensitive, 2);
880 Log.Info("WebView", $"web view, here");
881 WebHitTestResult test = null;//simpleWebView.HitTest(100, 100, WebView.HitTestMode.Default);
884 Log.Info("WebView", $"WebHitTestResult, TestResultContext: {test.TestResultContext}");
885 Log.Info("WebView", $"WebHitTestResult, LinkUrl: {test.LinkUrl}");
886 Log.Info("WebView", $"WebHitTestResult, LinkTitle: {test.LinkTitle}");
887 Log.Info("WebView", $"WebHitTestResult, LinkLabel: {test.LinkLabel}");
888 Log.Info("WebView", $"WebHitTestResult, ImageUrl: {test.ImageUrl}");
889 Log.Info("WebView", $"WebHitTestResult, MediaUrl: {test.MediaUrl}");
890 Log.Info("WebView", $"WebHitTestResult, TagName: {test.TagName}");
891 Log.Info("WebView", $"WebHitTestResult, NodeValue: {test.NodeValue}");
892 if (test.Attributes != null)
894 Log.Info("WebView", $"WebHitTestResult, Attributes: {test.Attributes}");
896 Log.Info("WebView", $"WebHitTestResult, NodeValue: {test.ImageFileNameExtension}");
897 ImageView imageView = test.Image;
898 if (imageView != null)
900 imageView.Position = new Position(500, 500);
901 GetDefaultWindow().Add(imageView);
905 simpleWebView.RegisterGeolocationPermissionCallback(OnGeolocationPermission);
906 Log.Info("WebView", $"Register javascript alert/confirm/prompt callback.");
907 simpleWebView.RegisterJavaScriptAlertCallback(OnJavaScriptAlert);
908 simpleWebView.RegisterJavaScriptConfirmCallback(OnJavaScriptConfirm);
909 simpleWebView.RegisterJavaScriptPromptCallback(OnJavaScriptPrompt);
910 //Log.Info("WebView", $"Reload without cache.");
911 //simpleWebView.ReloadWithoutCache();
912 //Log.Info("WebView", $"Remove custom header");
913 //simpleWebView.RemoveCustomHeader("test");
914 //Log.Info("WebView", $"Suspend");
915 //simpleWebView.Suspend();
916 //simpleWebView.SuspendNetworkLoading();
917 //Log.Info("WebView", $"Resume");
918 //simpleWebView.Resume();
919 //simpleWebView.ResumeNetworkLoading();
920 //Log.Info("WebView", $"load contents");
921 //simpleWebView.LoadContents();
922 //simpleWebView.LoadHtmlStringOverrideCurrentEntry();
923 //simpleWebView.LoadHtmlString("<Html><Head><title>Example</title></Head><Body><b>[This text is Bold......]</b></Body></Html>");
924 //simpleWebView.ScrollPosition = new Position(0, 200);
925 //simpleWebView.ScrollBy(0, 50);
926 //simpleWebView.ScrollEdgeBy(0, 50);
928 //Log.Info("WebView", $"scroll position is ({simpleWebView.ScrollPosition.X}, {simpleWebView.ScrollPosition.Y}).");
929 //Log.Info("WebView", $"scroll size is ({simpleWebView.ScrollSize.Width}, {simpleWebView.ScrollSize.Height}).");
930 //Log.Info("WebView", $"content size is ({simpleWebView.ContentSize.Width}, {simpleWebView.ContentSize.Height}).");
932 //simpleWebView.StartInspectorServer(8080);
933 //simpleWebView.StopInspectorServer();
934 //simpleWebView.StopLoading();
937 simpleWebView.Settings.LinkMagnifierEnabled = true;
938 Log.Info("WebView", $"web settings LinkMagnifierEnabled is {simpleWebView.Settings.LinkMagnifierEnabled}");
939 simpleWebView.Settings.ViewportMetaTag = true;
940 Log.Info("WebView", $"web settings ViewportMetaTag is {simpleWebView.Settings.ViewportMetaTag}");
941 simpleWebView.Settings.DefaultTextEncodingName = "utf-8";
942 Log.Info("WebView", $"web settings DefaultTextEncodingName is {simpleWebView.Settings.DefaultTextEncodingName}");
943 simpleWebView.Settings.AutomaticImageLoadingAllowed = true;
944 Log.Info("WebView", $"web settings AutomaticImageLoadingAllowed is {simpleWebView.Settings.AutomaticImageLoadingAllowed}");
945 simpleWebView.Settings.ScriptsOpenWindowsAllowed = true;
946 Log.Info("WebView", $"web settings ScriptsOpenWindowsAllowed is {simpleWebView.Settings.ScriptsOpenWindowsAllowed}");
947 simpleWebView.Settings.ImePanelEnabled = true;
948 Log.Info("WebView", $"web settings ImePanelEnabled is {simpleWebView.Settings.ImePanelEnabled}");
949 simpleWebView.Settings.ClipboardEnabled = true;
950 Log.Info("WebView", $"web settings ClipboardEnabled is {simpleWebView.Settings.ClipboardEnabled}");
951 simpleWebView.Settings.ArrowScrollEnabled = true;
952 Log.Info("WebView", $"web settings ArrowScrollEnabled is {simpleWebView.Settings.ArrowScrollEnabled}");
953 simpleWebView.Settings.TextAutosizingEnabled = true;
954 Log.Info("WebView", $"web settings TextAutosizingEnabled is {simpleWebView.Settings.TextAutosizingEnabled}");
955 simpleWebView.Settings.TextSelectionEnabled = true;
956 Log.Info("WebView", $"web settings TextSelectionEnabled is {simpleWebView.Settings.TextSelectionEnabled}");
957 simpleWebView.Settings.FormCandidateDataEnabled = true;
958 Log.Info("WebView", $"web settings FormCandidateDataEnabled is {simpleWebView.Settings.FormCandidateDataEnabled}");
959 simpleWebView.Settings.AutofillPasswordFormEnabled = true;
960 Log.Info("WebView", $"web settings AutofillPasswordFormEnabled is {simpleWebView.Settings.AutofillPasswordFormEnabled}");
961 simpleWebView.Settings.KeypadWithoutUserActionUsed = true;
962 Log.Info("WebView", $"web settings KeypadWithoutUserActionUsed is {simpleWebView.Settings.KeypadWithoutUserActionUsed}");
963 simpleWebView.Settings.ZoomForced = true;
964 Log.Info("WebView", $"web settings ZoomForced is {simpleWebView.Settings.ZoomForced}");
965 simpleWebView.Settings.TextZoomEnabled = true;
966 Log.Info("WebView", $"web settings TextZoomEnabled is {simpleWebView.Settings.TextZoomEnabled}");
967 simpleWebView.Settings.PluginsEnabled = true;
968 Log.Info("WebView", $"web settings PluginsEnabled is {simpleWebView.Settings.PluginsEnabled}");
969 simpleWebView.Settings.AutoFittingEnabled = true;
970 Log.Info("WebView", $"web settings AutoFittingEnabled is {simpleWebView.Settings.AutoFittingEnabled}");
971 simpleWebView.Settings.JavaScriptEnabled = true;
972 Log.Info("WebView", $"web settings JavaScriptEnabled is {simpleWebView.Settings.JavaScriptEnabled}");
973 simpleWebView.Settings.FileAccessFromExternalUrlAllowed = true;
974 Log.Info("WebView", $"web settings FileAccessFromExternalUrlAllowed is {simpleWebView.Settings.FileAccessFromExternalUrlAllowed}");
975 simpleWebView.Settings.ScrollbarThumbFocusNotificationsUsed = true;
976 Log.Info("WebView", $"web settings ScrollbarThumbFocusNotificationsUsed is {simpleWebView.Settings.ScrollbarThumbFocusNotificationsUsed}");
977 simpleWebView.Settings.DoNotTrackEnabled = true;
978 Log.Info("WebView", $"web settings DoNotTrackEnabled is {simpleWebView.Settings.DoNotTrackEnabled}");
979 simpleWebView.Settings.CacheBuilderEnabled = true;
980 Log.Info("WebView", $"web settings CacheBuilderEnabled is {simpleWebView.Settings.CacheBuilderEnabled}");
981 simpleWebView.Settings.WebSecurityEnabled = true;
982 Log.Info("WebView", $"web settings WebSecurityEnabled is {simpleWebView.Settings.WebSecurityEnabled}");
983 simpleWebView.Settings.DefaultFontSize = 20;
984 Log.Info("WebView", $"web settings DefaultFontSize is {simpleWebView.Settings.DefaultFontSize}");
985 simpleWebView.Settings.SpatialNavigationEnabled = true;
986 Log.Info("WebView", $"web settings SpatialNavigationEnabled is {simpleWebView.Settings.SpatialNavigationEnabled}");
987 simpleWebView.Settings.MixedContentsAllowed = true;
988 Log.Info("WebView", $"web settings MixedContentsAllowed is {simpleWebView.Settings.MixedContentsAllowed}");
989 simpleWebView.Settings.PrivateBrowsingEnabled = true;
990 Log.Info("WebView", $"web settings PrivateBrowsingEnabled is {simpleWebView.Settings.PrivateBrowsingEnabled}");
991 simpleWebView.Settings.EnableExtraFeature("feature", true);
992 Log.Info("WebView", $"web settings EnableExtraFeature is {simpleWebView.Settings.IsExtraFeatureEnabled("feature")}");
995 simpleWebView.Context.AppType = WebContext.ApplicationType.WebBrowser;
996 Log.Info("WebView", $"web context, AppType: {simpleWebView.Context.AppType}");
997 simpleWebView.Context.AppVersion = "6.5";
998 Log.Info("WebView", $"web context, AppVersion: {simpleWebView.Context.AppVersion}");
999 simpleWebView.Context.AppId = "1.0id";
1000 Log.Info("WebView", $"web context, AppId: {simpleWebView.Context.AppId}");
1001 simpleWebView.Context.CacheEnabled = false;
1002 Log.Info("WebView", $"web context, CacheEnabled: {simpleWebView.Context.CacheEnabled}");
1003 simpleWebView.Context.CertificateFilePath = "/root/share";
1004 Log.Info("WebView", $"web context, CertificateFilePath: {simpleWebView.Context.CertificateFilePath}");
1005 simpleWebView.Context.ProxyUrl = "https://127.0.0.1";
1006 Log.Info("WebView", $"web context, ProxyUrl: {simpleWebView.Context.ProxyUrl}");
1007 simpleWebView.Context.CacheModel = WebContext.CacheModelType.DocumentBrowser;
1008 Log.Info("WebView", $"web context, cache model is {simpleWebView.Context.CacheModel}");
1009 Log.Info("WebView", $"web context, ProxyBypassRule: {simpleWebView.Context.ProxyBypassRule}");
1010 simpleWebView.Context.DefaultZoomFactor = 2.0f;
1011 Log.Info("WebView", $"web context, DefaultZoomFactor: {simpleWebView.Context.DefaultZoomFactor}");
1012 //simpleWebView.Context.ClearCache();
1013 //simpleWebView.Context.DeleteAllApplicationCache();
1014 //simpleWebView.Context.DeleteAllFormCandidateData();
1015 //simpleWebView.Context.DeleteAllFormPasswordData();
1016 //simpleWebView.Context.DeleteAllWebDatabase();
1017 //simpleWebView.Context.DeleteAllWebIndexedDatabase();
1018 //simpleWebView.Context.DeleteAllWebStorage();
1019 //simpleWebView.Context.DeleteLocalFileSystem();
1020 //simpleWebView.Context.FreeUnusedMemory();
1021 Log.Info("WebView", $"web view, here");
1022 simpleWebView.Context.GetFormPasswordList(OnPasswordDataListAcquired);
1023 Log.Info("WebView", $"web view, here");
1024 simpleWebView.Context.GetWebDatabaseOrigins(OnSecurityOriginListAcquired);
1025 Log.Info("WebView", $"web view, here");
1026 simpleWebView.Context.GetWebStorageOrigins(OnSecurityOriginListAcquired);
1027 Log.Info("WebView", $"web view, here");
1028 simpleWebView.Context.RegisterDownloadStartedCallback(OnDownloadStarted);
1029 Log.Info("WebView", $"web view, here");
1030 string[] mimes = { "txt" };
1031 simpleWebView.Context.RegisterJsPluginMimeTypes(mimes);
1032 Log.Info("WebView", $"web view, here");
1033 simpleWebView.Context.RegisterMimeOverriddenCallback(OnMimeOverridden);
1034 Log.Info("WebView", $"web view, here");
1035 string[] schemes = { "test" };
1036 simpleWebView.Context.RegisterUrlSchemesAsCorsEnabled(schemes);
1037 Log.Info("WebView", $"web view, here");
1038 simpleWebView.Context.SetProxyBypassRule("test", "");
1039 Log.Info("WebView", $"web context, ContextProxy: {simpleWebView.Context.ProxyUrl}");
1040 simpleWebView.Context.TimeOffset = 8.0f;
1041 Log.Info("WebView", $"web context, TimeOffset: {simpleWebView.Context.TimeOffset}");
1042 simpleWebView.Context.SetTimeZoneOffset(2.0f, 3.0f);
1043 simpleWebView.Context.SetDefaultProxyAuth("user", "password");
1045 // webcookiemanager apis
1046 simpleWebView.CookieManager.CookieAcceptPolicy = WebCookieManager.CookieAcceptPolicyType.Never;
1047 Log.Info("WebView", $"web cookie manager accept policy is {simpleWebView.CookieManager.CookieAcceptPolicy}");
1048 //simpleWebView.CookieManager.ClearCookies();
1049 simpleWebView.CookieManager.SetPersistentStorage("/root/share", WebCookieManager.CookiePersistentStorageType.SqlLite);
1050 simpleWebView.CookieManager.CookieChanged += OnCookieChanged;
1052 // webbackforwardlist apis
1053 Log.Info("WebView", $"web back forward list item count is {simpleWebView.BackForwardList.ItemCount}");
1054 WebBackForwardListItem item = simpleWebView.BackForwardList.GetCurrentItem();
1055 Log.Info("WebView", $"web back forward list, current item url is {item.Url}");
1056 Log.Info("WebView", $"web back forward list, current item title is {item.Title}");
1057 Log.Info("WebView", $"web back forward list, current item original url is {item.OriginalUrl}");
1058 if (simpleWebView.BackForwardList.ItemCount > 0)
1060 item = simpleWebView.BackForwardList.GetItemAtIndex(0);
1061 Log.Info("WebView", $"web back forward list, item0 url is {item.Url}");
1062 Log.Info("WebView", $"web back forward list, item0 title is {item.Title}");
1063 Log.Info("WebView", $"web back forward list, item0 original url is {item.OriginalUrl}");
1064 IList<WebBackForwardListItem> subList = simpleWebView.BackForwardList.GetForwardItems(0);
1065 Log.Info("WebView", $"web back forward list, forward sub list ItemCount is {subList.Count}");
1066 subList = simpleWebView.BackForwardList.GetBackwardItems(0);
1067 Log.Info("WebView", $"web back forward list, backward sub list ItemCount is {subList.Count}");
1072 greenKeyPressedCount++;
1080 private bool OnAddressBarTouchEvent(object source, View.TouchEventArgs args)
1082 FocusManager.Instance.SetCurrentFocusView(addressBar);
1086 private void OnTextEditorFocusGained(object source, EventArgs args)
1088 Log.Info("WebView", $"------------address bar focus is gained-------");
1090 addressBar.Text = "";
1092 addressBar.GetInputMethodContext().Activate();
1093 addressBar.GetInputMethodContext().ShowInputPanel();
1096 private void OnTextEditorFocusLost(object source, EventArgs args)
1098 Log.Info("WebView", $"------------address bar focus lost-------");
1101 private bool OnAddressBarKeyEvent(object source, View.KeyEventArgs args)
1103 Log.Info("WebView", $"------------address bar key is {args.Key.KeyPressedName}-------");
1105 if (args.Key.State == Key.StateType.Up)
1107 if (args.Key.KeyPressedName == "Select")
1109 Log.Info("WebView", $"------------address bar text is {addressBar.Text}-------");
1111 if (addressBar.Text.Length > 0)
1113 addressBar.GetInputMethodContext().HideInputPanel();
1114 addressBar.GetInputMethodContext().Deactivate();
1116 simpleWebView.Url = $"http://{addressBar.Text.ToLowerInvariant()}";
1118 // set focus to webview.
1119 FocusManager.Instance.SetCurrentFocusView(simpleWebView);
1122 else if (args.Key.KeyPressedName == "BackSpace")
1124 if (addressBar.Text.Length > 0)
1126 addressBar.Text = addressBar.Text.Substring(0, addressBar.Text.Length - 1);
1129 else if (args.Key.KeyPressedName == "XF86Red")
1131 FocusManager.Instance.SetCurrentFocusView(simpleWebView);
1138 private void Instance_KeyEvent(object sender, Window.KeyEventArgs args)
1140 if (args.Key.State == Key.StateType.Up)
1142 Log.Info("WebView", $"window key is {args.Key.KeyPressedName}.");
1144 if (args.Key.KeyPressedName == "XF86Exit")
1146 if (simpleWebView != null)
1148 GetDefaultWindow().Remove(simpleWebView);
1149 simpleWebView.Dispose();
1150 simpleWebView = null;
1151 Log.Info("WebView", $"WebView is disposed..............");
1158 static void Main(string[] args)
1160 startTime = DateTime.Now.Ticks;
1161 Log.Info("WebView", $"------------web view start time: {startTime}-------");
1162 new SimpleWebViewApplication().Run(args);