package com.nvarghese.beowulf.common.http.renderer; import java.net.URL; import java.security.Policy; import java.util.ArrayList; import java.util.Collections; import java.util.List; import com.nvarghese.beowulf.common.cobra.html.HttpRequest; import com.nvarghese.beowulf.common.cobra.html.UserAgentContext; /** * This is used by HttpTransaction and should not be used by itself unless you * really know what you are doing. It may go away in the future. * * */ public class CobraUserAgent implements UserAgentContext { /** * */ private static final long serialVersionUID = 1L; private String id; private boolean enableScripting; /* * renderingMode tracks when the document rendering should be called off. * This value can be tracked from Cobra as well as from Grendel core * * This helps in terminating some of the rendering that goes dependent on * event-dispatching thread. */ private boolean renderingMode; /* Purpose is to track ajax request state */ private transient List<HttpRequest> requests; public CobraUserAgent(boolean enableScripting, String refId) { this.enableScripting = enableScripting; this.id = refId; renderingMode = true; requests = Collections.synchronizedList(new ArrayList<HttpRequest>()); } public HttpRequest createHttpRequest() { HttpRequest request = new CobraHttpRequest(this); synchronized (requests) { requests.add(request); } return request; } public boolean removeHttpRequest(HttpRequest request) { boolean removed = false; synchronized (requests) { removed = requests.remove(request); } return removed; } public String getAppCodeName() { return "huh?"; } public String getAppMinorVersion() { return "1"; } public String getAppName() { return "This is Beowulf Cobra renderer"; } public String getAppVersion() { return "0"; } public String getBrowserLanguage() { return "English"; } public String getCookie(URL arg0) { // TODO Auto-generated method stub return null; } public String getPlatform() { // TODO Auto-generated method stub return null; } public int getScriptingOptimizationLevel() { // TODO Auto-generated method stub return 0; } public Policy getSecurityPolicy() { // TODO Auto-generated method stub return null; } public String getUserAgent() { return "beowulf"; } public boolean isCookieEnabled() { // TODO Auto-generated method stub return false; } public boolean isScriptingEnabled() { // TODO Auto-generated method stub return enableScripting; } public void setCookie(URL arg0, String arg1) { // TODO Auto-generated method stub } @Override public String getProduct() { // TODO Auto-generated method stub return null; } @Override public String getVendor() { // TODO Auto-generated method stub return null; } @Override public boolean isExternalCSSEnabled() { // TODO Auto-generated method stub return false; } @Override public boolean isMedia(String mediaName) { // TODO Auto-generated method stub return false; } public String getId() { return id; } public void setRenderingMode(boolean renderingMode) { this.renderingMode = renderingMode; } /** * This method looks whether the rendering mode is disabled or enabled * * @return */ public boolean isRenderingMode() { return this.renderingMode; } /** * Inspects the active http requests and look for their state * * @return */ public boolean isRendering() { List<HttpRequest> reqs = new ArrayList<HttpRequest>(); synchronized (requests) { reqs.addAll(requests); } for (HttpRequest r : reqs) { if (!(r.getReadyState() == HttpRequest.STATE_UNINITIALIZED) && !(r.getReadyState() == HttpRequest.STATE_COMPLETE)) { return true; } } return false; } }