diff options
Diffstat (limited to 'files/es/vigilar_plugins/index.html')
-rw-r--r-- | files/es/vigilar_plugins/index.html | 110 |
1 files changed, 110 insertions, 0 deletions
diff --git a/files/es/vigilar_plugins/index.html b/files/es/vigilar_plugins/index.html new file mode 100644 index 0000000000..2e5c6a0863 --- /dev/null +++ b/files/es/vigilar_plugins/index.html @@ -0,0 +1,110 @@ +--- +title: Vigilar plugins +slug: Vigilar_plugins +tags: + - Firefox 3 + - Plugins + - Todas_las_Categorías +--- +<p>{{ Fx_minversion_header(3) }} +</p> +<h3 id="Resumen" name="Resumen">Resumen</h3> +<p>Ya está disponible un nuevo componente de los plugin que permite saber cuanto tiempo le toma a un determinado plugin (p.e. Adobe Flash) ejecutar sus llamadas. Este componente presenta el runtime del plugin usando el <a href="es/NsIObserverService">observer service</a> a cualquiera que reciba la notificación. Este artículo cuenta cómo los desarrolladores pueden hacer uso de esta facilidad. +</p><p><br> +</p> +<h3 id="Datos_del_Runtime" name="Datos_del_Runtime">Datos del Runtime</h3> +<p>La información del runtime presentada es siempre en fracciones de segundo. Ya que el componente mide el tiempo que le toma a las llamadas de bloque del plugin, el valor incluye tanto el tiempo de CPU, el tiempo de espera entre asignaciones de tiempo de CPU al proceso, como cualquier tiempo de e/s del disco. Es técnicamente incorrecto decir que el runtime es una medida del uso de CPU, sin embargo, es una buena representación de los recursos totales consumidos por el plugin. +</p> +<h3 id="Uso" name="Uso">Uso</h3> +<p>Para hacer uso del nuevo componente, debes registrarte para recibir las notificaciones del runtime usando el <a href="es/NsIObserverService">observer service</a>. El tópico de la notificación es <code>experimental-notify-plugin-call</code>. Si eres novato con el servicio de observación de Mozilla, querrás familiarizarte con él antes de proseguir. Puedes encontrar información acerca del servicio de observación <a href="es/NsIObserverService"> aquí</a> y <a href="es/NsIObserver"> aquí</a>. +</p><p>Debajo hay un número de conversaciones sobre JavaScript que podrían ser útiles para desarrolladores que quieran usar esta facilidad: +</p> +<h4 id="Registro" name="Registro">Registro</h4> +<p>Para registrase en el servicio de notificaciones con el observador debes crear una clase con un método <code>observe</code> que recibe tres parámetros (<code>subject</code>, <code>topic</code> y <code>data</code>) así como un método <code>register</code> que contiene el siguiente código: +</p><p><br> +<code> +</code></p> +<pre class="eval">var observerService = Components.classes["@mozilla.org/observer-service;1"] + .getService (Components.interfaces.nsIObserverService); +observerService.addObserver(this, "experimental-notify-plugin-call", false); +</pre> +<p> +</p><p><br> +</p> +<h4 id="Observando" name="Observando">Observando</h4> +<p>Como hemos dicho arriba, para especificar lo que quieres que se haga cuando llega una notificación, tu clase debe tener un método <code>observe</code>, que recibe tres parámetros (<code>subject</code>, <code>topic</code> y <code>data</code>). El <code>topic</code> contiene el tópico de la notificación - <code>experimental-notify-plugin-call</code> en este caso, <code>data</code> es el runtime en mili segundos y <code>subject</code> es siempre <code>null</code> y no debería usarse. +</p><p>Aquí hay un ejemplo que muestra el runtime en una caja de alerta al usuario si el runtime excede medio segundo de longitud: +</p><p><code> +</code></p> +<pre class="eval"> observe: function(subject, topic, data) { + if (topic == "experimental-notify-plugin-call" ) { + if (data > 0.500) { + alert("Runtime is: " + data); + } + } + } +</pre> +<p> +</p><p><b>NOTA: Esto es un ejemplo simplificado y se desaconseja el uso de <code>alert()</code> ya que el componente puede enviar cientos de notificaciones por segundo y puede, potencialmente, causar la parada del navegador si se abre un número excesivo de cajas de alerta.</b> +</p><p>Téngase también en cuenta que en el ejemplo anterior una sentencia if primero comprueba que el tópico de la notificación es el correcto. Esto es útil en casos en los que la clase se registra para recibir notificaciones de más de un tópico en el servicio de observación. +</p> +<h4 id="Limpieza" name="Limpieza">Limpieza</h4> +<p>Para des-registrar tu clase en el servicio de observación - cuando ya no quieres escuchar las notificaciones del runtime - tu clase debe incluir un método <code>unregister</code> que contenga el siguiente código: +</p><p><code> +</code></p> +<pre class="eval">var observerService = Components.classes["@mozilla.org/observer-service;1"] + .getService(Components.interfaces.nsIObserverService); +observerService.removeObserver(this, "experimental-notify-plugin-call"); +</pre> +<p> +</p><p><br> +</p> +<h4 id="Esquema_de_una_clase_para_el_observador" name="Esquema_de_una_clase_para_el_observador">Esquema de una clase para el observador</h4> +<p>A continuación presentamos un esquema de una clase que puedes usar para escuchar el servicio de notificaciones: +</p><p><code> +</code></p> +<pre class="eval"> function PluginObserver() { + this.registered = false; + this.register(); // se cuida de registrar esta clase en el servicio de observación como un observador para el servicio de notificación + } + + PluginWatcherObserver.prototype = { + observe: function(subject, topic, data) { + + if (topic == "experimental-notify-plugin-call") //En caso de que tu clase esté registrada para escuchar otros tópicos + //Esto es ejecutado cada vez que llega una notificación + // --AQUÍ VA TU CÓDIGO-- + } + + + }, + //Se cuida de registrar el observador para el tópico "experimental-notify-plugin-call" + register: function() { + if (this.registered == false) { //Este evento previene el doble registro -- ¡algo que quieres evitar! + var observerService = Components.classes["@mozilla.org/observer-service;1"] + .getService(Components.interfaces.nsIObserverService); + observerService.addObserver(this, "experimental-notify-plugin-call", false); + this.registered = true; + } + }, + //Des-registra del servicio de observación + unregister: function() { + if (this.registered == true) { + var observerService = Components.classes["@mozilla.org/observer-service;1"] + .getService(Components.interfaces.nsIObserverService); + observerService.removeObserver(this, "experimental-notify-plugin-call"); + this.registered = false; + } + } + } +</pre> +<p> +</p><p><br> +</p> +<h3 id="Recursos_adicionales" name="Recursos_adicionales">Recursos adicionales</h3> +<p>Más información sobre el servicio de observación: +</p> +<ul><li> <a href="es/NsIObserverService">nsIObserverService</a> +</li><li> <a href="es/NsIObserver">nsIObserver</a> +</li></ul> +{{ languages( { "ja": "ja/Monitoring_plugins" } ) }} |