Review Request: Proper password caching when opening remote directories in KFileDialog

Dawit Alemayehu adawit at kde.org
Thu Nov 24 15:07:20 GMT 2011



> On Nov. 24, 2011, 8:35 a.m., Aaron J. Seigo wrote:
> >

KDirOperator is called from KFileWidget which is called from KFileDialog. Guess what the parent->window() would give you in this case ? The KFileDialog because it is the next valid ancestor widget that has a window-system frame. If we used that we would improve the current situation from keep the password for a short duration (~10 sec) to keep it until the file dialog is closed, but that is not what we want. We want to keep the password until the application that invoked the KFileDialog is closed. That is why we topLevelWindow to iteration through the parent widgets to find the top most level widget with a window-system frame. Failing that it falls back to parent->window().


> On Nov. 24, 2011, 8:35 a.m., Aaron J. Seigo wrote:
> > kfile/kdiroperator.cpp, line 384
> > <http://git.reviewboard.kde.org/r/103226/diff/2/?file=41891#file41891line384>
> >
> >     how is this different just calling widget->window()?
> 
> Thomas Lübking wrote:
>     As far as I can say it scans for the oldest ancestor across window borders and returns the window for this widget.
>     
>     QWidget *w1 = new QWidget; // is implicitly window
>     QWidget *w2 = new QWidget(w1, Qt::Window); // is explicitly window
>     QWidget *w3 = new QWidget(w2); // not a window
>     
>     w3->window() == w2;
>     topLevelWindow(w3) == w1;
>     
>     Just this:
>      return (w ? w->window() : (widget ? widget->window() : 0));
>     is to me actually
>      return w ? w->window() : 0; // w != 0 || widget == 0

Just this:
 return (w ? w->window() : (widget ? widget->window() : 0));
is to me actually
 return w ? w->window() : 0; // w != 0 || widget == 0

Actually that is true since I changed the while loop to (w && w->parentWidget()). I forgot to update the return statement. Will fix that as well.


- Dawit


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
http://git.reviewboard.kde.org/r/103226/#review8438
-----------------------------------------------------------


On Nov. 24, 2011, 7:37 a.m., Dawit Alemayehu wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> http://git.reviewboard.kde.org/r/103226/
> -----------------------------------------------------------
> 
> (Updated Nov. 24, 2011, 7:37 a.m.)
> 
> 
> Review request for kdelibs and David Faure.
> 
> 
> Description
> -------
> 
> The attached patch fixes the scenario outlined in bug# 179663 by making the best effort to identify and use the top most window when invoking KIO functions. That way any password information supplied by the user is cached, even if the user did not check the "Remember password" checkbox, for the duration of the application instead of just the lifetime of the file dialog. 
> 
> Right now almost all KFileDialog's KIO access does not set the widget parameter. If a site then requires authentication, no window-id information will be passed to it. That in turn results in the user supplied password being cached for only a very very short duration, ~10 secs. Afterwards, the password is removed and the user is inevitably re-prompted to supply the same credentials again.
> 
> 
> This addresses bug 179663.
>     http://bugs.kde.org/show_bug.cgi?id=179663
> 
> 
> Diffs
> -----
> 
>   kfile/kdiroperator.cpp 4c93ac9 
>   kfile/kdirselectdialog.cpp 0212e58 
>   kfile/kfilewidget.cpp 09b86d4 
>   kfile/knewfilemenu.cpp ac54041 
> 
> Diff: http://git.reviewboard.kde.org/r/103226/diff/diff
> 
> 
> Testing
> -------
> 
> Tested with the scenario outlined in the afforementioned bug report using a publicly available demo webdav server, webdav://demo.sabredav.org.
> 
> 
> Thanks,
> 
> Dawit Alemayehu
> 
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/kde-core-devel/attachments/20111124/5b87d5ea/attachment.htm>


More information about the kde-core-devel mailing list