final WebEngine webEngine = (WebEngine) engine;
Utils.execSWTThread( new Runnable() {
public void run() {
new ExternalLoginWindow(
new ExternalLoginListener()
{
private String previous_cookies;
private boolean search_done;
public void
canceled(
ExternalLoginWindow window )
{
/* gouss doesn't wan't anything on cancel
if ( !outcome_informed ){
outcome_informed = true;
Map params = getParams( webEngine );
params.put( "error", "operation cancelled" );
sendBrowserMessage("metasearch", "engineFailed", params );
}
*/
}
public void
cookiesFound(
ExternalLoginWindow window,
String cookies )
{
if ( handleCookies( cookies, false )){
window.close();
}
}
public void
done(
ExternalLoginWindow window,
String cookies )
{
handleCookies( cookies, true );
/*
if ( !outcome_informed ){
outcome_informed = true;
Map params = getParams( webEngine );
sendBrowserMessage("metasearch", "engineCompleted", params );
}
*/
}
private boolean
handleCookies(
String cookies,
boolean force_if_ready )
{
if ( search_done ){
return( false );
}
String[] required = webEngine.getRequiredCookies();
boolean skip_search = required.length == 0 && !force_if_ready;
if ( CookieParser.cookiesContain( required, cookies )){
webEngine.setCookies(cookies);
if ( previous_cookies == null || !previous_cookies.equals( cookies )){
previous_cookies = cookies;
if ( !skip_search ){
// search operation will report outcome
search_done = true;
search( decodedMap, webEngine );
}
}
}
return( search_done );
}
/*
protected Map
getParams(
Engine engine )
{
Map params = new HashMap();
params.put("id", new Long(engine.getId()));
params.put("name", engine.getName());
params.put("favicon", engine.getIcon());
params.put("dl_link_css", engine.getDownloadLinkCSS());
params.put("shareable", new Boolean( engine.isShareable()));
if ( sid != null ){
params.put( "sid", sid );
}
return( params );
}
*/
},
webEngine.getName(),
webEngine.getLoginPageUrl(),
false,
webEngine.getAuthMethod(),
engine.isMine());
}
});
}else{
Map params = new HashMap();
if ( sid != null ){
params.put( "sid", sid );
}
params.put( "error", "engine not found or not a web engine" );
sendBrowserMessage("metasearch", "engineFailed", params );
}
} else if(OP_GET_LOGIN_COOKIES.equals(opid)) {
final Map decodedMap = message.getDecodedMap();
final String url = ((String) decodedMap.get("url")).replaceAll("%s", "");
Utils.execSWTThread( new Runnable() {
public void run() {
new ExternalLoginWindow(
new ExternalLoginListener()
{
public void canceled(ExternalLoginWindow window) {
sendBrowserMessage("metasearch", "setCookiesFailed", new HashMap() );
};