cordova-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From vladimir-kotikov <...@git.apache.org>
Subject [GitHub] cordova-plugin-file-transfer pull request: CB-8761 [wp8]: Copy coo...
Date Fri, 24 Apr 2015 09:40:09 GMT
Github user vladimir-kotikov commented on a diff in the pull request:

    https://github.com/apache/cordova-plugin-file-transfer/pull/74#discussion_r29036346
  
    --- Diff: src/wp/FileTransfer.cs ---
    @@ -210,6 +216,77 @@ public FileTransferProgress(long bTotal = 0, long bLoaded = 0)
             }
     
             /// <summary>
    +        /// Helper method to copy all relevant cookies from the WebBrowser control into
a header on
    +        /// the HttpWebRequest
    +        /// </summary>
    +        /// <param name="browser">The source browser to copy the cookies from</param>
    +        /// <param name="webRequest">The destination HttpWebRequest to add the
cookie header to</param>
    +        /// <returns>Nothing</returns>
    +        private async Task CopyCookiesFromWebBrowser(HttpWebRequest webRequest)
    +        {
    +            var tcs = new TaskCompletionSource<object>();
    +
    +            // Accessing WebBrowser needs to happen on the UI thread
    +            Deployment.Current.Dispatcher.BeginInvoke(() =>
    +            {
    +                // Get the WebBrowser control
    +                if (this.browser == null)
    +                {
    +                    PhoneApplicationFrame frame = Application.Current.RootVisual as PhoneApplicationFrame;
    +                    if (frame != null)
    +                    {
    +                        PhoneApplicationPage page = frame.Content as PhoneApplicationPage;
    +                        if (page != null)
    +                        {
    +                            CordovaView cView = page.FindName("CordovaView") as CordovaView;
    +                            if (cView != null)
    +                            {
    +                                this.browser = cView.Browser;
    +                            }
    +                        }
    +                    }
    +                }
    +
    +                try
    +                {
    +                    // Only copy the cookies if the scheme and host match (to avoid any
issues with secure/insecure cookies)
    +                    // NOTE: since the returned CookieCollection appears to munge the
original cookie's domain value in favor of the actual Source domain,
    +                    // we can't know for sure whether the cookies would be applicable
to any other hosts, so best to play it safe and skip for now.
    +                    if (this.browser.Source.Scheme == webRequest.RequestUri.Scheme &&
this.browser.Source.Host == webRequest.RequestUri.Host)
    --- End diff --
    
    it is very unlikely, but `browser` still can be null here, consider adding check for 'not
null' case.
    
    Also `browser.Source.Scheme` and `browser.Source.Host` will throw an `InvalidOperationException`
if `Source` is an relative URI. IMO it's better to check if `browser.Source.IsAbsoluteUri
== true` than catch an exception here.


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@cordova.apache.org
For additional commands, e-mail: dev-help@cordova.apache.org


Mime
View raw message