Package org.itsnat.impl.core.browser

Examples of org.itsnat.impl.core.browser.Browser


        this.parent = parent;
    }

    public static ResponseDelegStfulLoadDocByBrowserImpl createResponseDelegStfulLoadDocByBrowser(ResponseDelegateStfulLoadDocImpl parent)
    {
        Browser browser = parent.getClientDocumentStful().getBrowser();
        if (browser instanceof BrowserW3C)
            return ResponseDelegStfulLoadDocByBW3CImpl.createResponseDelegStfulLoadDocByBW3C(parent);
        else
            return new ResponseDelegStfulLoadDocByBMSIEOldImpl(parent);
    }
View Full Code Here


        super(parent);
    }

    public static ResponseDelegStfulLoadDocByBW3CImpl createResponseDelegStfulLoadDocByBW3C(ResponseDelegateStfulLoadDocImpl parent)
    {
        Browser browser = parent.getClientDocumentStful().getBrowser();
        if (browser instanceof BrowserOpera)
        {
            if (browser instanceof BrowserOpera)
                return ResponseDelegStfulLoadDocByBOperaImpl.createResponseDelegStfulLoadDocByBOpera(parent);
            else
View Full Code Here

        ItsNatStfulDocumentImpl itsNatDoc = getItsNatStfulDocument();
        Document doc = itsNatDoc.getDocument();
        AbstractView view = ((DocumentView)doc).getDefaultView();
        ClientDocumentStfulImpl clientDoc = getClientDocumentStful();
        Browser browser = clientDoc.getBrowser();

        if (isReferrerEnabled())
        {
            EventTarget target;
            String eventType;
            int commMode;
            if (browser.isClientWindowEventTarget())
            {
                target = (EventTarget)view;
                if ( CommModeImpl.isXHRDefaultMode(clientDoc) &&
                     browser.hasBeforeUnloadSupport(itsNatDoc) &&
                     itsNatDoc.isUseXHRSyncOnUnloadEvent() &&
                     (!(browser instanceof BrowserWebKit) ||
                      ((browser instanceof BrowserWebKit) && ((BrowserWebKit)browser).isXHRSyncSupported())) )
                {
                    // Si no se soporta el modo s�ncrono corremos el riesgo de que no se env�e el evento en el proceso de cerrado de la p�gina
                    // lo cual normalmente ocurre en el evento "unload"
                    eventType = "beforeunload";
                    commMode = CommMode.XHR_SYNC; // As� aseguramos que se env�a pues por ejemplo no hay seguridad en modo as�ncrono en MSIE 6 desktop
                }
                else
                {
                    // Intentamos soportar referrers tambi�n aunque de forma menos elegante.
                    // Registramos en el evento load y no cuando se carga el documento
                    // para evitar solapamiento con posibles iframes
                    eventType = "load";
                    commMode = clientDoc.getCommMode();
                }
            }
            else
            {
                target = (EventTarget)doc.getDocumentElement();
                eventType = "SVGLoad";
                commMode = clientDoc.getCommMode();
            }

            clientDoc.addEventListener(target,eventType,RegisterThisDocAsReferrerListenerImpl.SINGLETON,false,commMode);
        }

        // Es necesario usar siempre el modo s�ncrono con unload para asegurar que llega al servidor
        // sobre todo con FireFox, total es destrucci�n
        // En FireFox a veces el unload se env�a pero no llega al servidor en el caso de AJAX as�ncrono,
        // la culpa la tiene quiz�s el enviar por red as�ncronamente algo en el proceso de destrucci�n de la p�gina
        // Curiosamente esto s�lo ocurre cuando se abre un visor remoto Comet y se cierra la p�gina principal.
        // En teor�a "beforeunload" deber�a dar menos problemas que unload en FireFox
        // pero sin embargo tambi�n ocurri� con beforeunload as�ncrono (adem�s beforeunload es cancelable).
        // NOTA: es posible que en versiones recientes est� solucionado esto.
        // De todas formas es �til el modo s�ncrono porque si hubiera alg�n
        // JavaScript pendiente de enviar, pues evita que de error al haberse perdido la p�gina
        // (pues el navegador ha de esperarse, no destruye la p�gina), si fuera asincrono
        // seguir�a destruyendo la p�gina antes de retornar el evento (comprobado en MSIE y FireFox).

        super.dispatchRequestListeners();

        // En W3C en addEventListener el orden de dispatch es el mismo que el orden de inserci�n
        // y en MSIE hemos simulado lo mismo (lo natural es primero el �ltimo)
        // por ello insertamos despu�s de los listeners del usuario tal que
        // nuestro unload "destructor" (invalida/desregistra el documento) sea el �ltimo

        // Si se puede, los eventos de descarga deben enviarse como s�ncronos

        EventTarget target;
        String eventType;
        int commMode;
        int defaultCommMode = clientDoc.getCommMode();
        if (CommModeImpl.isXHRMode(defaultCommMode))
        {
            if (!itsNatDoc.isUseXHRSyncOnUnloadEvent() ||
                ((browser instanceof BrowserWebKit) &&
                 !((BrowserWebKit)browser).canSendXHRSyncUnload())) // Este problema no se ha estudiado para SVGUnLoad pero por si acaso tambi�n lo consideramos
                commMode = CommMode.XHR_ASYNC;
            else
                commMode = CommMode.XHR_SYNC;
        }
        else commMode = defaultCommMode; // Caso SCRIPT o SCRIPT_HOLD, siempre as�ncronos

        if (browser.isClientWindowEventTarget())
        {
            target = (EventTarget)view;
            eventType = "unload";
        }
        else
View Full Code Here

        super(docTemplate,source,timeStamp,request,response);
    }

    public Browser getBrowser(ItsNatServletRequestImpl itsNatRequest)
    {
        Browser browser = super.getBrowser(itsNatRequest);
        if (browser instanceof BrowserMSIEOld)
        {
            // Cuando se carga un documento SVG via iframe o por URL directa se dan dos requests:
            // El primer request lo hace el MSIE, al ver que la respuesta ha sido
            // un MIME SVG delega en el plugin, el plugin a su vez hace un nuevo request.

            // Aunque no est� documentado por Microsoft en iframe
            // este comportamiento es el normal de acuerdo al comportamiento de <embed> (http://msdn.microsoft.com/en-us/library/ms535258%28VS.85%29.aspx)
            // sin atributo type (ver "Performance Note"):
            // http://msdn.microsoft.com/en-us/library/ms535245%28VS.85%29.aspx

            // Yo creo que esta es la raz�n por la que el contentWindow en el caso de <iframe>
            // no es el window del documento SVG sino probablemente el window del primer
            // request, por lo que no es posible acceder desde el documento padre al hijo
            // (s� desde el hijo al padre).

            // S�lo tenemos una forma de distinguir entre un request
            // realizado por MSIE y uno de ASV (ASV v3, v6 ), y es a trav�s del header
            // "accept", en el caso de MSIE incluye "*/*" y m�s cosas (MIMEs de im�genes etc,
            // algunas dependen de componentes instalados tal y como .Net, Office etc),
            // en caso de ASV s�lo es "*/*"
            // Es MUY interesante distinguir entre un request MSIE y uno ASV
            // sobre todo en el caso de SVG cargado via iframe con ASV instalado, pues MSIE como no sabe
            // el MIME hace un primer request, al recibir el MIME SVG delega para el segundo request
            // al plugin SVG.
            // Si evitamos que el primer request se procese de la forma normal, ganamos
            // en rendimiento y evitamos generar y registrar un documento en la sesi�n
            // que no servir� para nada (el primer request).

            // En el caso de <object> tambi�n se producen dos requests, el problema
            // es que ambos se producen a trav�s del plugin. Quiz�s se deba
            // al doble uso de src como atributo/propiedad y como param name="src"

            // Con <embed> s�lo hay un request.

            String accept = itsNatRequest.getHeader("accept");
            if ("*/*".equals(accept))
                browser = new BrowserAdobeSVG(browser.getUserAgent());
        }
        return browser;
    }
View Full Code Here

        if (SVGWebInfoImpl.isSVGNodeProcessedBySVGWebFlash(elem,clientDoc))
            return JSRenderSVGAttributeSVGWebImpl.SINGLETON;
        else
        {
            // MSIE no reconoce elementos con namespaces ni siquiera en XHTML, pero a�n asi lo renderizamos, podr�a ser un atributo especial ItsNat por ejemplo
            Browser browser = clientDoc.getBrowser();
            if (browser instanceof BrowserMSIEOld)
                return JSRenderOtherNSAttributeMSIEOldImpl.SINGLETON;
            else
                return JSRenderOtherNSAttributeW3CImpl.SINGLETON;
        }
View Full Code Here



    protected static ItsNatHttpSessionImpl createItsNatHttpSession(HttpSession session,ItsNatServletContextImpl context,ItsNatServletRequestImpl itsNatRequest)
    {
        Browser browser = Browser.createBrowser(itsNatRequest);
        if (context.isSessionReplicationCapable())
            return new ItsNatHttpSessionReplicationCapableImpl(session,context,browser);
        else
            return new ItsNatHttpSessionStickyImpl(session,context,browser);
    }
View Full Code Here

    public boolean isInsertedScriptNotExecuted(Element script,ClientDocumentStfulImpl clientDoc)
    {
        if (NamespaceUtil.isSVGElement(script))
        {
            Browser browser = clientDoc.getBrowser();
            return browser.isInsertedSVGScriptNotExecuted();
        }
        // Si es XUL, FireFox no necesita nada especial para el script en XUL, desconocemos
        // otros namespaces de <script>
        return false;
    }
View Full Code Here

    public boolean isTextAddedToInsertedScriptNotExecuted(Element script,ClientDocumentStfulImpl clientDoc)
    {
        if (NamespaceUtil.isSVGElement(script))
        {
            Browser browser = clientDoc.getBrowser();
            return browser.isTextAddedToInsertedSVGScriptNotExecuted();
        }
        // Si es XUL, FireFox no necesita nada especial para el script en XUL, desconocemos
        // otros namespaces con <script>
        return false;
    }
View Full Code Here

        RequestNormalLoadDocAttachedServerImpl delegRequest = new RequestNormalLoadDocAttachedServerImpl(template,getRequestAttachedServerLoadDoc(),itsNatRequest);
        itsNatRequest.setRequest(delegRequest); // Para que al procesar el request el ItsNatServletRequestImpl est� correctamente conectado a request de carga normal no al attached y el c�digo del usuario obtenga el ClientDocument normal por ejemplo
        delegRequest.process(null);
        ClientDocumentStfulImpl clientDocNormal = delegRequest.getClientDocumentStful();
        Browser browser = clientDocNormal.getBrowser();

        itsNatResponse.setServletResponse(responseOriginal); // restauramos

        // Los objetos ItsNatServletRequestImpl y ItsNatServletResponseImpl quedan vinculados
        // a los objetos RequestImpl y ResponseImpl de la carga normal y est� bien as�
View Full Code Here

    public abstract String genSendMarkupCodeByMethod();

    public String genSendMarkupCode()
    {
        ClientDocumentAttachedServerImpl clientDoc = getClientDocumentAttachedServer();
        Browser browser = clientDoc.getBrowser();

        StringBuilder code = new StringBuilder();
        if ((browser instanceof BrowserMSIEOld)||(browser instanceof BrowserMSIE9)) // IE 9 no tiene XMLSerializer
        {
            // MSIE ve el <!DOCTYPE> como un comentario, en el texto del mismo est�
View Full Code Here

TOP

Related Classes of org.itsnat.impl.core.browser.Browser

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.