public async void LoadUrl(bool fullRefresh = false, bool needCheckEtag = true)
        {
            if (Native == null || WebViewer == null)
            {
                return;
            }

            try
            {
                if (WebViewer.BrowserType == BrowserType.NewLogin)
                {
                    if (WebViewer.Uri == null)
                    {
                        return;
                    }
                    Native.LoadUrl(WebViewer.Uri);
                    return;
                }

                if (needCheckEtag)
                {
                    if (!fullRefresh && WebViewer.BrowserType != BrowserType.Background)
                    {
                        ShowLoadingOverlay();
                        //  fullRefresh = await PGService.IsWebPageContentChanged(WebViewer?.Uri);
                    }
                }

                string baseUrl = string.Empty, query = string.Empty;
                if (WebViewer == null)
                {
                    return;
                }
                if (WebViewer.BrowserType == BrowserType.Standard || WebViewer.BrowserType == BrowserType.Cached || WebViewer.BrowserType == BrowserType.Background)
                {
                    var urldata = UrlParser.Parse(WebViewer.Uri);
                    if (string.IsNullOrEmpty(homeUrl))
                    {
                        homeUrl = urldata.AbsoluteUrl;
                    }

                    /*  Native.Settings.CacheMode = HPHService.CheckConnection() ?
                     *    fullRefresh || (urldata?.Params != null && urldata.Params.ContainsKey("RefreshOnReturn")) ?
                     *        CacheModes.NoCache :
                     *        CacheModes.Normal :
                     *    CacheModes.CacheOnly;*/

                    Native.Settings.CacheMode = PGService.CheckConnection() && (fullRefresh || (urldata?.Params != null && urldata.Params.ContainsKey("RefreshOnReturn")))
                        ? CacheModes.Normal
                        : CacheModes.CacheElseNetwork;
                    var check = Native.Settings.CacheMode;
                    if (string.IsNullOrEmpty(urldata.AbsoluteUrl))
                    {
                        return;
                    }

                    if (urldata.AbsoluteUrl.StartsWith(PGService.ApiServerUrl, StringComparison.InvariantCultureIgnoreCase))
                    {
                        if (!string.IsNullOrEmpty(Core.Settings.AuthToken))
                        {
                            var headers = new Dictionary <string, string>
                            {
                                { "Authorization", "Bearer " + Core.Settings.AuthToken }
                            };
                            Native.LoadUrl(urldata.AbsoluteUrl, headers);
                        }
                        else
                        {
                            var loc = new Localize();
                            urldata.AddParam("CountryCode", loc.GetCurrentCountry());
                            urldata.AddParam("Language", loc.GetCurrentLanguage());
                            Native.LoadUrl(urldata.AbsoluteUrl);
                        }
                    }
                    else
                    {
                        /*if (urldata.Url.Contains("id.hp.com"))
                         *  SetHpIdCookie(urldata.Url);*/
                        Native.LoadUrl(urldata.AbsoluteUrl);
                    }
                }

                else if (WebViewer.BrowserType == BrowserType.Login || WebViewer.BrowserType == BrowserType.ErrorLog)
                {
                    CanExecuteJScript = true;
                    switch (WebViewer.BrowserType)
                    {
                    case BrowserType.Login:
                        Native.LoadUrl(WebViewer.Uri);
                        break;

                    case BrowserType.ErrorLog:
                        Native.LoadUrl(ErrorLogUrl);
                        break;
                    }
                }
            }
            catch { }
        }