*/
using System;
using Tizen.NUI.BaseComponents;
+using Tizen.NUI.Components;
namespace Tizen.NUI.WebViewTest
{
internal class MenuView : View
{
private WebContextMenu contextMenu;
- private TextLabel[] texts;
+ private Button[] buttons;
+
+ public event EventHandler<ItemClickedEventArgs> ClickedEvent;
+
+ public class ItemClickedEventArgs : EventArgs
+ {
+ public uint CurrentIndex;
+ }
internal MenuView(WebContextMenu menu)
{
LinearAlignment = LinearLayout.Alignment.Center
};
- texts = new TextLabel[menu.ItemList.ItemCount];
+ buttons = new Button[menu.ItemList.ItemCount];
for (uint i = 0; i < menu.ItemList.ItemCount; i++)
{
WebContextMenuItem item = menu.ItemList.GetItemAtIndex(i);
- texts[i] = new TextLabel()
+ buttons[i] = new Button()
{
Size = new Size(200, 80),
PointSize = 30.0f,
TextColor = Color.Black,
Text = item.Title,
};
- Add(texts[i]);
+ buttons[i].TouchEvent += OnMenuItemTouched;
+ Add(buttons[i]);
+ }
+ }
+
+ private bool OnMenuItemTouched(object s, TouchEventArgs e)
+ {
+ uint i = 0;
+ for (; i < buttons.Length; i++)
+ {
+ if (buttons[i] == (Button)s)
+ {
+ Log.Info("WebView", $"found button {i} is selected.");
+ break;
+ }
}
+
+ Log.Info("WebView", $"button {i} is selected.");
+
+ //WebContextMenuItem item = contextMenu.ItemList.GetItemAtIndex(i);
+ //if (item != null)
+ //{
+ // contextMenu.SelectItem(item);
+ // contextMenu.Hide();
+ //}
+
+ ItemClickedEventArgs args = new ItemClickedEventArgs();
+ args.CurrentIndex = i;
+ ClickedEvent?.Invoke(this, args);
+
+ Log.Info("WebView", $"button {i} is selected.");
+
+ return false;
}
internal void HideMenu()
{
private BaseComponents.WebView simpleWebView = null;
private TextField addressBar = null;
+ private Button backButton = null;
+ private Button forwardButton = null;
+ private Button refreshButton = null;
private int index = 0;
private const int WEBSITES_COUNT = 2;
private Timer messageTimer = null;
private ImageView faviconView = null;
+ private ImageView screenshotView = null;
+ private ImageView hitTestImageView = null;
+
private static string[] runtimeArgs = { "Tizen.NUI.WebViewTest", "--enable-dali-window", "--enable-spatial-navigation" };
protected override void OnCreate()
GetDefaultWindow().BackgroundColor = new Color((float)189 / 255, (float)179 / 255, (float)204 / 255, 1.0f);
+ backButton = new Button()
+ {
+ Position = new Position(0, 0),
+ Size = new Size(100, 100),
+ PointSize = 30.0f,
+ TextColor = Color.Black,
+ Text = "Back",
+ };
+ backButton.TouchEvent += OnBackButtonTouchEvent;
+ GetDefaultWindow().Add(backButton);
+
+ forwardButton = new Button()
+ {
+ Position = new Position(100, 0),
+ Size = new Size(100, 100),
+ PointSize = 30.0f,
+ TextColor = Color.Black,
+ Text = "Forward",
+ };
+ forwardButton.TouchEvent += OnForwardButtonTouchEvent;
+ GetDefaultWindow().Add(forwardButton);
+
+ refreshButton = new Button()
+ {
+ Position = new Position(200, 0),
+ Size = new Size(100, 100),
+ PointSize = 30.0f,
+ TextColor = Color.Black,
+ Text = "Refresh",
+ };
+ refreshButton.TouchEvent += OnRefreshButtonTouchEvent;
+ GetDefaultWindow().Add(refreshButton);
+
addressBar = new TextField()
{
+ Position = new Position(300, 0),
BackgroundColor = Color.White,
- Size = new Size(SCREEN_WIDTH, ADDRESSBAR_HEIGHT),
+ Size = new Size(SCREEN_WIDTH - 300, ADDRESSBAR_HEIGHT),
EnableGrabHandlePopup = false,
EnableGrabHandle = false,
EnableSelection = true,
{
GetDefaultWindow().Remove(menuView);
}
-
- GetDefaultWindow().Remove(simpleWebView);
+ GetDefaultWindow().Remove(backButton);
+ GetDefaultWindow().Remove(forwardButton);
+ GetDefaultWindow().Remove(refreshButton);
GetDefaultWindow().Remove(addressBar);
+ if (screenshotView != null)
+ {
+ GetDefaultWindow().Remove(screenshotView);
+ }
+
messageTimer.Tick -= OnTick;
messageTimer.Dispose();
messageTimer = null;
base.OnTerminate();
}
+ private bool OnBackButtonTouchEvent(object sender, View.TouchEventArgs e)
+ {
+ if (simpleWebView.CanGoBack())
+ {
+ simpleWebView.GoBack();
+ }
+ return false;
+ }
+
+ private bool OnForwardButtonTouchEvent(object sender, View.TouchEventArgs e)
+ {
+ if (simpleWebView.CanGoForward())
+ {
+ simpleWebView.GoForward();
+ }
+ return false;
+ }
+
+ private bool OnRefreshButtonTouchEvent(object sender, View.TouchEventArgs e)
+ {
+ simpleWebView.Reload();
+ return false;
+ }
+
private bool OnTick(object sender, EventArgs e)
{
+ Log.Info("WebView", $"------------timer tick-------");
+
if (faviconView != null)
{
GetDefaultWindow().Remove(faviconView);
faviconView = null;
}
+ if (screenshotView != null)
+ {
+ Log.Info("WebView", $"------------remove screen shot-------");
+ GetDefaultWindow().Remove(screenshotView);
+ screenshotView.Dispose();
+ screenshotView = null;
+ }
+ else
+ {
+ Log.Info("WebView", $"------------screen shot is null-------");
+ }
+
+ if (hitTestImageView != null)
+ {
+ GetDefaultWindow().Remove(hitTestImageView);
+ hitTestImageView.Dispose();
+ hitTestImageView = null;
+ }
+
return false;
}
FocusManager.Instance.SetCurrentFocusView(simpleWebView);
}
- if (args.Touch.GetState(0) == PointStateType.Up)
- {
- if (menuView == null && menuPosition == null)
- {
- menuPosition = args.Touch.GetScreenPosition(0);
- }
-
- if (menuView != null)
- {
- menuView.HideMenu();
- GetDefaultWindow().Remove(menuView);
- menuView = null;
- menuPosition = null;
- }
- }
+ //if (args.Touch.GetState(0) == PointStateType.Down && args.Touch.GetMouseButton(0) == MouseButton.Secondary)
+ //{
+ // if (menuView == null && menuPosition == null)
+ // {
+ // menuPosition = args.Touch.GetScreenPosition(0);
+ // }
+ //}
+ //else if(args.Touch.GetState(0) == PointStateType.Down && args.Touch.GetMouseButton(0) == MouseButton.Primary)
+ //{
+ // if (menuView != null)
+ // {
+ // menuView.HideMenu();
+ // GetDefaultWindow().Remove(menuView);
+ // menuView = null;
+ // menuPosition = null;
+ // }
+ //}
return false;
}
+ private void OnMenuViewItemSelected(object source, MenuView.ItemClickedEventArgs e)
+ {
+ Log.Info("WebView", $"------------menu item is selected-------");
+ GetDefaultWindow().Remove(menuView);
+ menuView = null;
+ }
+
private void OnWebViewFocusGained(object source, EventArgs args)
{
Log.Info("WebView", $"------------web view focus is gained-------");
e.HttpAuthHandler.UseCredential("", "");
}
+ private void OnHttpRequestIntercepted(object sender, WebViewHttpRequestInterceptedEventArgs e)
+ {
+ Log.Info("WebView", $"------------http request intercepted, Url: {e.HttpRequestInterceptor.Url}-------");
+
+ e.HttpRequestInterceptor.Ignore();
+
+ Log.Info("WebView", $"------------http request intercepted-------");
+ }
+
private void OnSslCertificateChanged(object sender, WebViewCertificateReceivedEventArgs e)
{
Log.Info("WebView", $"------------ssl certificate changed, IsFromMainFrame: {e.Certificate.IsFromMainFrame}-------");
private void OnPageLoadFinished(object sender, WebViewPageLoadEventArgs e)
{
Log.Info("WebView", $"------------web view finishes loading-------");
+
+ if (simpleWebView.CanGoBack())
+ {
+ backButton.IsEnabled = true;
+ }
+ else
+ {
+ backButton.IsEnabled = false;
+ }
+
+ if (simpleWebView.CanGoForward())
+ {
+ forwardButton.IsEnabled = true;
+ }
+ else
+ {
+ forwardButton.IsEnabled = false;
+ }
}
private void OnPageLoadError(object sender, WebViewPageLoadErrorEventArgs e)
Position = new Position(menuPosition),
Size = new Size(200, e.ContextMenu.ItemCount * 80),
};
+ menuView.ClickedEvent += OnMenuViewItemSelected;
GetDefaultWindow().Add(menuView);
}
private void OnScreenshotAcquired(ImageView image)
{
Log.Info("WebView", $"------------screen shot acquired-------");
+
+ if (image != null)
+ {
+ screenshotView = image;
+ screenshotView.Position = new Position(500, 500);
+ screenshotView.BackgroundColor = Color.Blue;
+ GetDefaultWindow().Add(screenshotView);
+ if (messageTimer.IsRunning())
+ {
+ messageTimer.Stop();
+ }
+ messageTimer.Start();
+ Log.Info("WebView", $"------------screen shot would be shown-------");
+ }
}
private void OnHitTestFinished(WebHitTestResult test)
ImageView imageView = test.Image;
if (imageView != null)
{
- imageView.Position = new Position(500, 500);
- GetDefaultWindow().Add(imageView);
+ hitTestImageView = imageView;
+ hitTestImageView.Position = new Position(1000, 500);
+ hitTestImageView.BackgroundColor = Color.Blue;
+ GetDefaultWindow().Add(hitTestImageView);
+ if (messageTimer.IsRunning())
+ {
+ messageTimer.Stop();
+ }
+ messageTimer.Start();
+ Log.Info("WebView", $"WebHitTestResult, Got image view");
}
}
result = true;
Log.Info("WebView", $"new url is {simpleWebView.Url}.");
}
- else if (args.Key.KeyPressedName == "XF86Back")
- {
- Log.Info("WebView", $"whether webview can go back or not: {simpleWebView.CanGoBack()}.");
- if (simpleWebView.CanGoBack())
- {
- simpleWebView.GoBack();
- }
- result = true;
- }
+ //else if (args.Key.KeyPressedName == "1")
+ //{
+ // Rectangle viewArea = new Rectangle(0, 0, 20, 20);
+ // bool succeeded = simpleWebView.GetScreenshotAsynchronously(viewArea, 1.0f, OnScreenshotAcquired);
+ // Log.Info("WebView", $"GetScreenshotAsynchronously, {succeeded}");
+
+ // succeeded = simpleWebView.HitTestAsynchronously(100, 100, BaseComponents.WebView.HitTestMode.Default, OnHitTestFinished);
+ // Log.Info("WebView", $"HitTestAsynchronously, {succeeded}");
+ //}
else if (args.Key.KeyPressedName == "XF86Red")
{
+ //simpleWebView.HttpRequestIntercepted += OnHttpRequestIntercepted;
+ //simpleWebView.HttpRequestIntercepted -= OnHttpRequestIntercepted;
FocusManager.Instance.SetCurrentFocusView(addressBar);
result = true;
}
Log.Info("WebView", $"key XF86Green is pressed.");
//greenKeyPressedCount++;
- if (greenKeyPressedCount % 2 == 0)
+ if (simpleWebView.Url.Contains("account.samsung"))
{
// webview apis
Log.Info("WebView", $"web page title is {simpleWebView.Title}");
simpleWebView.TextZoomFactor = 2.0f;
Log.Info("WebView", $"web page TextZoomFactor is {simpleWebView.TextZoomFactor}");
Log.Info("WebView", $"web page LoadProgressPercentage is {simpleWebView.LoadProgressPercentage}");
- simpleWebView.VideoHoleEnabled = true;
- Log.Info("WebView", $"web page VideoHoleEnabled is {simpleWebView.VideoHoleEnabled}");
- simpleWebView.ActivateAccessibility(true);
- simpleWebView.AddCustomHeader("test", "value");
- simpleWebView.AddDynamicCertificatePath("", "");
+ //simpleWebView.ActivateAccessibility(true);
+ //simpleWebView.AddCustomHeader("test", "value");
+ //simpleWebView.AddDynamicCertificatePath("", "");
simpleWebView.AddJavaScriptMessageHandler("", OnJavaScriptMessageReceived);
- simpleWebView.CanGoBack();
- simpleWebView.CanGoForward();
simpleWebView.CheckVideoPlayingAsynchronously(OnVideoPlaying);
- simpleWebView.ClearAllTilesResources();
- simpleWebView.ClearHistory();
+ //simpleWebView.ClearAllTilesResources();
+ //simpleWebView.ClearHistory();
simpleWebView.EvaluateJavaScript("document.body.style.backgroundColor='yellow';");
Log.Info("WebView", $"web view, ScaleFactor is {simpleWebView.GetScaleFactor()}");
- Rectangle viewArea = new Rectangle(0, 0, 20, 20);
+ //Rectangle viewArea = new Rectangle(0, 0, 20, 20);
//ImageView shotView = simpleWebView.GetScreenshot(viewArea, 1.0f);
//if (shotView != null)
//{
// GetDefaultWindow().Add(shotView);
//}
- bool succeeded = simpleWebView.GetScreenshotAsynchronously(viewArea, 1.0f, OnScreenshotAcquired);
- Log.Info("WebView", $"GetScreenshotAsynchronously, {succeeded}");
- simpleWebView.GoBack();
- Log.Info("WebView", $"web view, here");
- simpleWebView.GoForward();
- Log.Info("WebView", $"web view, here");
simpleWebView.HighlightText("test", BaseComponents.WebView.FindOption.CaseInsensitive, 2);
Log.Info("WebView", $"web view, here");
WebHitTestResult test = null;//simpleWebView.HitTest(100, 100, WebView.HitTestMode.Default);
}
}
- succeeded = simpleWebView.HitTestAsynchronously(100, 100, BaseComponents.WebView.HitTestMode.Default, OnHitTestFinished);
- Log.Info("WebView", $"HitTestAsynchronously, {succeeded}");
simpleWebView.RegisterGeolocationPermissionCallback(OnGeolocationPermission);
- Log.Info("WebView", $"web view, here");
+ Log.Info("WebView", $"Register javascript alert/confirm/prompt callback.");
simpleWebView.RegisterJavaScriptAlertCallback(OnJavaScriptAlert);
simpleWebView.RegisterJavaScriptConfirmCallback(OnJavaScriptConfirm);
simpleWebView.RegisterJavaScriptPromptCallback(OnJavaScriptPrompt);
- Log.Info("WebView", $"web view, here");
- simpleWebView.Reload();
- Log.Info("WebView", $"web view, here");
- simpleWebView.ReloadWithoutCache();
- Log.Info("WebView", $"web view, here");
- simpleWebView.RemoveCustomHeader("test");
- Log.Info("WebView", $"web view, here");
- simpleWebView.Suspend();
- simpleWebView.SuspendNetworkLoading();
- Log.Info("WebView", $"web view, here");
- simpleWebView.Resume();
- simpleWebView.ResumeNetworkLoading();
- Log.Info("WebView", $"web view, here");
-
+ //Log.Info("WebView", $"Reload without cache.");
+ //simpleWebView.ReloadWithoutCache();
+ //Log.Info("WebView", $"Remove custom header");
+ //simpleWebView.RemoveCustomHeader("test");
+ //Log.Info("WebView", $"Suspend");
+ //simpleWebView.Suspend();
+ //simpleWebView.SuspendNetworkLoading();
+ //Log.Info("WebView", $"Resume");
+ //simpleWebView.Resume();
+ //simpleWebView.ResumeNetworkLoading();
+ //Log.Info("WebView", $"load contents");
//simpleWebView.LoadContents();
//simpleWebView.LoadHtmlStringOverrideCurrentEntry();
- simpleWebView.LoadHtmlString("<Html><Head><title>Example</title></Head><Body><b>[This text is Bold......]</b></Body></Html>");
- simpleWebView.ScrollPosition = new Position(0, 200);
- simpleWebView.ScrollBy(0, 50);
- simpleWebView.ScrollEdgeBy(0, 50);
+ //simpleWebView.LoadHtmlString("<Html><Head><title>Example</title></Head><Body><b>[This text is Bold......]</b></Body></Html>");
+ //simpleWebView.ScrollPosition = new Position(0, 200);
+ //simpleWebView.ScrollBy(0, 50);
+ //simpleWebView.ScrollEdgeBy(0, 50);
- Log.Info("WebView", $"scroll position is ({simpleWebView.ScrollPosition.X}, {simpleWebView.ScrollPosition.Y}).");
- Log.Info("WebView", $"scroll size is ({simpleWebView.ScrollSize.Width}, {simpleWebView.ScrollSize.Height}).");
- Log.Info("WebView", $"content size is ({simpleWebView.ContentSize.Width}, {simpleWebView.ContentSize.Height}).");
+ //Log.Info("WebView", $"scroll position is ({simpleWebView.ScrollPosition.X}, {simpleWebView.ScrollPosition.Y}).");
+ //Log.Info("WebView", $"scroll size is ({simpleWebView.ScrollSize.Width}, {simpleWebView.ScrollSize.Height}).");
+ //Log.Info("WebView", $"content size is ({simpleWebView.ContentSize.Width}, {simpleWebView.ContentSize.Height}).");
//simpleWebView.StartInspectorServer(8080);
//simpleWebView.StopInspectorServer();
Log.Info("WebView", $"web context, ProxyBypassRule: {simpleWebView.Context.ProxyBypassRule}");
simpleWebView.Context.DefaultZoomFactor = 2.0f;
Log.Info("WebView", $"web context, DefaultZoomFactor: {simpleWebView.Context.DefaultZoomFactor}");
- simpleWebView.Context.ClearCache();
- simpleWebView.Context.DeleteAllApplicationCache();
- simpleWebView.Context.DeleteAllFormCandidateData();
- simpleWebView.Context.DeleteAllFormPasswordData();
- simpleWebView.Context.DeleteAllWebDatabase();
- simpleWebView.Context.DeleteAllWebIndexedDatabase();
- simpleWebView.Context.DeleteAllWebStorage();
- simpleWebView.Context.DeleteLocalFileSystem();
- simpleWebView.Context.FreeUnusedMemory();
+ //simpleWebView.Context.ClearCache();
+ //simpleWebView.Context.DeleteAllApplicationCache();
+ //simpleWebView.Context.DeleteAllFormCandidateData();
+ //simpleWebView.Context.DeleteAllFormPasswordData();
+ //simpleWebView.Context.DeleteAllWebDatabase();
+ //simpleWebView.Context.DeleteAllWebIndexedDatabase();
+ //simpleWebView.Context.DeleteAllWebStorage();
+ //simpleWebView.Context.DeleteLocalFileSystem();
+ //simpleWebView.Context.FreeUnusedMemory();
Log.Info("WebView", $"web view, here");
simpleWebView.Context.GetFormPasswordList(OnPasswordDataListAcquired);
Log.Info("WebView", $"web view, here");
// webcookiemanager apis
simpleWebView.CookieManager.CookieAcceptPolicy = WebCookieManager.CookieAcceptPolicyType.Never;
Log.Info("WebView", $"web cookie manager accept policy is {simpleWebView.CookieManager.CookieAcceptPolicy}");
- simpleWebView.CookieManager.ClearCookies();
+ //simpleWebView.CookieManager.ClearCookies();
simpleWebView.CookieManager.SetPersistentStorage("/root/share", WebCookieManager.CookiePersistentStorageType.SqlLite);
simpleWebView.CookieManager.CookieChanged += OnCookieChanged;
subList = simpleWebView.BackForwardList.GetBackwardItems(0);
Log.Info("WebView", $"web back forward list, backward sub list ItemCount is {subList.ItemCount}");
}
- }
- result = true;
+ //
+ result = true;
+ }
}
}
if (args.Key.State == Key.StateType.Up)
{
Log.Info("WebView", $"window key is {args.Key.KeyPressedName}.");
+
+ if (args.Key.KeyPressedName == "XF86Exit")
+ {
+ if (simpleWebView != null)
+ {
+ GetDefaultWindow().Remove(simpleWebView);
+ simpleWebView.Dispose();
+ simpleWebView = null;
+ Log.Info("WebView", $"WebView is disposed..............");
+ }
+ }
}
}