Revision 329609 of Social API temp

  • Enlace amigable (slug) de la revisión: User:Sheppy/Social_API_temp
  • Título de la revisión: Social API temp
  • Id de la revisión: 329609
  • Creada:
  • Creador: MiguelFRomeroR
  • ¿Es la revisión actual? No
  • Comentario

Contenido de la revisión

Navegador de la Referencia del Social API

https://github.com/mixedpuppy/socialapi-demo contiene una implementación del proveedor de prueba que muestra el uso de muchas de estas APIs. La lectura de esto le ayudará a ilustrar la documentación proporcionada aquí.

Referencia del trabajador de servicios

Un trabajador de servicios hereda todas las limitaciones y comportamientos que se encuentran en HTML5 Shared Workers. Puede crear XMLHttpRequests, usar WebSockets, recibir mensajes de las ventanas y el navegador, usar IndexedDB, y enviar mensajes a otras ventanas.

El trabajador puede utilizar los métodos ononline, onoffline, y navigator.online y las propiedades que están disponibles para todos los trabajadores para obtener la notificación del estado conectado/desconectado del navegador.

Además de los métodos estándar, los trabajadores de servicios tienen acceso a funcionalidades adicionales, todas ellas se implementan utilizando mensajes enviados y recibidos por los "puertos de los mensajes" del trabajador. Como los puertos de los mensajes son inherentemente asíncronos, cualquier mensaje que requiera una respuesta implicará dos mensajes - uno para la solicitud y otro para la respuesta, No todos los mensajes requieren una respuesta - esto hace parte de la especificación del mensaje. Los mensajes que no requieren respuesta son semejantes a un "evento" no solicitado. Si un mensaje requiere una respuesta, la respuesta siempre debe ser enviada al mismo puerto de la solicitud y, en general, el "asunto" de la respuesta será el asunto de la solicitud con "-respuesta" añadido.

Se espera que los trabajadores de servicios proporcionen funciones, en un ámbito global, llamadas onconnect y ondisconnect. El navegador invocará onconnect en el momento de inicio, pasando en un evento. El trabajador debe tener acceso a la propiedad de los puertos de este evento para extraer un puerto de comunicación estable de vuelta al navegador, y mantenerlo para la vida del worker, así:

var apiPort;
var ports = [];
onconnect = function(e) {
    var port = e.ports[0];
    ports.push(port);
    port.onmessage = function (msgEvent)
    {
        var msg = msgEvent.data;
        if (msg.topic == "social.port-closing") {
            if (port == apiPort) {
                apiPort.close();
                apiPort = null;
            }
            return;
        }
        if (msg.topic == "social.initialize") {
            apiPort = port;
            initializeAmbientNotifications();
        }
    }
}

// envía un mensaje a todos los contenidos del proveedor
function broadcast(topic, data) {
  for (var i = 0; i < ports.length; i++) {
    ports[i].postMessage({topic: topic, data: data});
  }
}

 

Cada mensaje tiene un elemento de datos con dos campos, "asunto" y "datos". El asunto identifica qué método o evento se está utilizando, y los datos especifican datos adicionales únicos para el asunto. Todos los métodos y eventos tienen asuntos que comienzan con "social". - Esto significa que los servicios son libres de utilizar asuntos sin prefijo como un detalle de implementación privada (por ejemplo, para la comunicación entre cierto contenido desde el servicio y el servicio del trabajador)

Mensajes de control enviados a los trabajadores de servicios

social.initialize

STATUS: DONE Fx17

Enviado por el navegador durante el arranque. Cuando el JavaScript de un trabajador se ha cargado y evaluado correctamente, el navegador enviará un mensaje con este asunto.

social.port-closing

STATUS: DONE Fx17

Sent by the browser during worker shutdown, when a MessagePort to the worker is about to be closed. This will be the last message the worker receives on the port.

Control de las notificaciones del ambiente

social.user-profile

STATUS: DONE Fx17

Enviado por el trabajador, para establecer las propiedades para el icono del proveedor y los datos del perfil de usuario utilizadas por el botón de la barra de herramientas. Si falta el retrato del usuario y el nombre de usuario el boton UI indicará un estado desconectado. Al indicar el estado desconectado, el icono de estado establecido por social.ambient-notification será eliminado.

Argumentos:

background OBSOLETO, sustituido por iconURL

String, opcional. Si se proporciona, especifica el valor de CSS para el fondo de la zona. Normalmente, esto sólo propocionará un color de fondo. ACTUALIZACIÓN: la url de los datos se analiza para proporcionar el iconURL. Esto funciona actualmente, sin embargo utilizando iconos muy pequeños produce resultados incorrectos.

iconURL

String, necesario. Si se proporciona, especifica la URL a una imagen de 16x16 pixeles, utilizados para el icono de estado. El iconURL puede ser una url de datos con la imagen codificada para evitar solicitudes http adicionales. (por ejemplo, "data:image/png;base64,...data...")

portrait

String, opcional. Si se proporciona, especifica la URL de una imagen del usuario de 48x48 pixeles. El retrato puede ser una url de datos con la imagen codificada para evitar solicitudes http adicionales.

userName

String, opcional. El nombre de la cuenta se muestra con el retrato en el menú del proveedor.

displayName

String, necesario. Nombre real del usuario que se utiliza para su visualización en varios elementos de la Interfaz de Usuario.

profileURL

String, necesario. URL para la página de perfil de los usuarios registrados. Esta se abrirá en una pestaña normal del navegador cuando el usuario haga clic sobre ella.

social.ambient-notification

STATUS: DONE Fx17

Enviado por el trabajador, para actualizar o crear un icono de notificación del ambiente. Se envía uno para cada icono. Un usuario debe estar conectado para mostrar los iconos de estado, y debes llamar al social.user-profile antes de llamar al social.ambient-notification para establecer los iconos de estado.

Argumentos:

name

String. Un identificador para el icono. La primera vez que se ve un nombre dado, efectivamente se crea un nuevo ícono. Si el mismo nombre se utiliza en llamadas posteriores, el icono existente se actualiza.

background OBSOLETO, sustituido por iconURL

String, opcional. Si se proporciona, especifica el valor de CSS para el fondo de la zona. Normalmente, esto sólo proporciona un color de fondo. ACTUALIZACIÓN: La url de datos se analiza para proporcionar la iconURL. Esto funciona actualmente, sin embargo, utilizar iconos muy pequeños produce resultados incorrectos.

iconURL

String, opcional. Si se proporciona, especifica la URL a una imagen de 16x16 pixeles, utilizados para el icono de estado. El iconURL puede ser una url de datos con la imagen codificada para evitar solicitudes http adicionales. (por ejemplo, "data:image/png;base64,...data...")

counter

Número, opcional. Especifica un número que se superpondrá sobre el icono, normalmente se utiliza para transmitir el concepto de no leído.

contentPanel

String, opcional. Especifica la URL del contenido que se muestra en el panel emergente del icono.

Control de las notificaciones activas

social.notification-create

STATUS: DONE Fx17

Enviado por el trabajador, para crear y mostrar un objeto de notificación. Este solicita que el navegador notifique inmediatamente al usuario de un cambio relevante en el estado. Ver https://developer.mozilla.org/en/DOM/navigator.mozNotification para más detalles. Cuando el usuario hace clic en la notificación, el mensaje social.notification-action se envía al trabajador. El título de la notificación siempre será el nombre del proveedor.

NOTA: Queremos aumentar el objeto mozNotification, definido en la documentación, con un campo adicional "tipo". Detalles por determinar. NOTA: No hay manera de permitir duración y no se ha expuesto una forma de "cancelar" una notificación (se supone que es de muy corta duración). ¿Está bien?

Argumentos:

id

String: Un ID para la notificación. Este ID no se muestra, pero se pasa de nuevo a través de un evento social.notification-action si el usuario hace clic en la notificación.

type

String: El tipo string debe ser consistente para cada tipo de notificación. Esto puede ser utilizado por algunos sistemas de notificación para proporcionar el filtrado de notificaciones a nivel de usuario. Un proveedor puede elegir cualquier string para el tipo, pero debe mantener el tipo de string consistente y descriptivo para cada tipo de acción. Por ejemplo, las notificaciones del chat siempre deben tener el mismo tipo de string. las notificaciones sugeridas incluyen:

  • social.providername.chat-request
  • social.providername.friend-request
  • social.providername.activity (por ejemplo, alguien publicó en su stream de actividad)

icon

String/null. La URL de una imagen que se coloca en la notificación. Aunque esta pueda ser una URL válida, se recomienda a los desarrolladores usar una URL de datos para minimizar la latencia.

body

String: El cuerpo del mensaje de notificación. Este cuerpo se representa como un hipervínculo y se puede hacer clic sobre él. No soporta el formato HTML.

action

String: Una acción a realizar cuando el usuario haga clic en la notificación. Si no se proporciona, no se puede hacer clic sobre la notificación. Actualmente las únicas acciones soportadas son link, callback y openServiceWindow. Si se define la acción, también debe definirse actionArgs.

actionArgs

Objeto: Un objeto con argumentos para las acciones (arriba). Las acciones y sus actionArgs soportadas son:

  • link
    • toURL: String: url para abrir en una nueva pestaña del navegador.

social.notification-action

STATUS: DONE Fx17

Enviado al trabajador como respuesta a una notificación de "devolución de llamada", después de que el usuario ha hecho clic en la notificación.

Argumentos:

id

String: el ID de la notificación sobre la que se ha hecho clic.

action

String: La accion enviada en social.notification-create.

actionArgs

Object: Los actionArgs establecidos en social.notification-create.

social.user-recommend-prompt

STATUS: DONE Fx17

Enviado por el navegador para solicitar el indicador visual para el elemento de la interfaz "recomendación del usuario". El trabajador debe responder con una user-recommend-prompt-response.

Tenga en cuenta que normalmente este mensaje sólo se enviará cuando un proveedor se activa y la respuesta se utilizará para todas las URLs. En otras palabras, el proveedor no debe esperar que este mensaje se envíe cada vez que el agente de usuario navega o muestra una nueva URL.

Argumentos:

Ninguno.

social.user-recommend-prompt-response

STATUS: DONE Fx17

El trabajador construye y publica una user-recommend-prompt-response en respuesta a un mensaje social.user-recommend-prompt recibido desde el navegador. Ver social.user-recommend-prompt para más detalles.

Argumentos:

images

Objeto. Debe tener 2 string claves, "compartir" y "dejar de compartir", cuyo valor es la direccion URL de una imagen que se establecerá como la propiedad "src" de una imagen contenida en el objetivo del clic hecho por el usuario para la acción "recomendada". El agente de usuario hará un seguimiento de si la página actual se ha compartido - si es así, se mostrará "dejr de compartir" la imagen, de lo contrario, se mostrará "compartir" imagen. Esto puede contener una imagen direccionable en la web o una URL de datos que contenga datos de imagen generados dinámicamente. Se recomienda a los desarrolladores utilizar una URL de datos para minimizar la latencia. Se espera que cada imagen tenga un alto de 16px y un ancho de 16px.

messages

Objeto. Debe tener los siguientes string claves:

  • 'shareTooltip', 'unshareTooltip': Los strings utilizados como la descripción del objetivo cuando se muestra el "compartir" y "dejar de compartir" las imágenes respectivamente.
  • 'sharedLabel', 'unsharedLabel': Los strings que se utilizarán para actualizar un widget de etiqueta después de tomar la acción "compartir" o "dejar de compartir" para reflejar la transición de compartida a no compartida o viceversa. Tenga en cuenta que en Fx17, las etiquetas no son visibles, pero se utiliza como una ayuda de accesibilidad para que un lector de pantalla o similar pueda observar la transición.
  • 'unshareLabel': Un string que se mostrará en el "popup unshare" para reflejar que el elemento ya ha sido compartido. Por ejemplo: "Usted ha compartido previamente este elemento".
  • 'portraitLabel': Un string usado como la etiqueta aria para la imagen de perfil de usuario que se muestra en el "unshare popup". Por ejemplo: "La imagen de tu perfil".
  • 'unshareConfirmLabel': Un string que se utiliza como la etiqueta del botón del "unshare popup" utilizado para realizar el "unshare". Por ejemplo: "Deja de compartirla"
  • 'unshareConfirmAccessKey': Un string que se utiliza como clave de acceso para el botón dejar de compartir. Normalmente, esto debería ser una letra incluída en el string 'unshareConfirmLabel'.
  • 'unshareCancelLabel': Una cadena que se utiliza como la etiqueta del botón en el "unshare popup" cuando el usuario desea seguir compartiendo el elemento. Por ejmplo: "Cerrar".
  • 'unshareCancelAccessKey': Una cadena que se utiliza como clave de acceso para el boton cancelar de unshare.

social.user-recommend

Indicates that the user has clicked the "user recommendation" interface element. The message includes:

Arguments:

url

String, required. The URL that the user is viewing, including query string, but minus any hash text, of the root of the current browser viewing context.

No response is necessary; however, the service may respond on the same port with a user-recommend-prompt-response if the click target should change its appearance.

social.user-unrecommend

Indicates that the user would like to retract their previous recommendation. The message includes:

Arguments:

url

String, required. The URL that the user is viewing, including query string, but minus any hash text, of the root of the current browser viewing context.


Widgets

SidebarWidget

If a service defines a SidebarWidget, the browser will instantiate a content region with the SidebarWidget URL as the location on some browser windows. These regions will not be instantiated until the Worker has been fully loaded. The content in these regions has the additional API defined in the Service Content API reference, above.

Sidebars can be in a visible or hidden state.

  • When visible, they will receive a vertical rectangle of screen space in which to render; this rectangle is stable across changes in tab focus and has an independent scrollbar from the scrollbar of tabbed browsing content.
  • When hidden, a sidebar is completely removed from the visual hierarchy. The user agent will continue to deliver messages to it, and the sidebar may pre-render its DOM for later display.

Sidebar windows will only be instantiated on browser windows that have a full tabbed-browsing interface; windows created with window.open that do not have these interface elements will not have a sidebar.

When a tab that is rendered directly by the browser without a location bar is selected, the sidebar will automatically be placed into the hidden state. When the user navigates away from that tab, the sidebar will be made visible again. These tabs include the Add-ons management page, about:permissions, etc.

The minimized/maximized/hidden state of the sidebar widget is will be consistent across all browser windows. The most-recently-set state is remembered and used for new windows, and is persisted across browser restarts.

Messages Sent to Widgets

STATUS: DONE Fx17

socialFrameHide

DOM Event sent by the browser when the user hides the sidebar content.

socialFrameShow

DOM Event sent by the browser when the user shows the sidebar content.

Browser "Panel" Integration

STATUS: DONE Fx17

To allow content to place an ephemeral window in front of normal browser content and chrome, the following API is used:

`navigator.mozSocial.openChatWindow( url, callback)`

The callback will receive the window object from the chat frame.

Message Serialization

For a message with topic topic and arguments (arg1:val1, arg2:val2), construct an object like:

{ topic: topic, data: { arg1: val1, arg2: val2 } }

Discovery and Service Manifest

Discovery

STATUS: NOT TARGETED

As a user browses web sites Firefox can discover new social providers and offer installation of those providers. A social providers website would include a LINK tag in the header pointing to a manifest file to enable this form of discovery. If the user either has stored authentication credentials in the Firefox password manager, or if the user frequents the website, Firefox will show a notification bar allowing the user to install the service.

Activation

STATUS: DONE Fx17

A provider can become activated by dispatching a custom event of "ActivateSocialFeature" on the document. The document's location is then checked against a built-in whitelist and if the location is found then the feature is activated for that provider.

We recommend that providers require their users to click a link or button to activate the feature so the user is aware of the new functionality.

function activate() {
  var event = new CustomEvent("ActivateSocialFeature");
  document.dispatchEvent(event);
}
 

Fuente de la revisión

<div id="wrapper">
  <h2 class="title-actions-bar" id="Browser_Social_API_Reference">Navegador de la Referencia del Social API</h2>
  <div class="site hfeed" itemscope="" itemtype="http://schema.org/WebPage">
    <div class="hentry">
      <div class="container" data-pjax-container="" id="js-repo-pjax-container">
        <div id="slider">
          <div class="frames">
            <div class="frame frame-center" data-path="docs/socialAPI.md/" data-permalink-url="/mozilla/socialapi-dev/blob/56f0d40e786438d0690e75fd9f44eb2a2d2532db/docs/socialAPI.md" data-title="socialapi-dev/docs/socialAPI.md at develop · mozilla/socialapi-dev · GitHub" data-type="blob">
              <div class="bubble" id="files">
                <div class="file">
                  <div class="blob instapaper_body" id="readme">
                    <article class="markdown-body entry-content" itemprop="mainContentOfPage">
                      <p><a href="https://github.com/mixedpuppy/socialapi-demo" title="https://github.com/mixedpuppy/socialapi-demo">https://github.com/mixedpuppy/socialapi-demo</a> contiene una implementación del proveedor de prueba que muestra el uso de muchas de estas APIs. La lectura de esto le ayudará a ilustrar la documentación proporcionada aquí.</p>
                      <h3 id="Service_Worker_Reference">Referencia del trabajador de servicios</h3>
                      <p>Un trabajador de servicios hereda todas las limitaciones y comportamientos que se encuentran en HTML5 Shared Workers. Puede crear XMLHttpRequests, usar WebSockets, recibir mensajes de las ventanas y el navegador, usar IndexedDB, y enviar mensajes a otras ventanas.</p>
                      <p>El trabajador puede utilizar los métodos <code>ononline</code>, <code>onoffline</code>, y <code>navigator.online</code> y las propiedades que están disponibles para todos los trabajadores para obtener la notificación del estado conectado/desconectado del navegador.</p>
                      <p>Además de los métodos estándar, los trabajadores de servicios tienen acceso a funcionalidades adicionales, todas ellas se implementan utilizando mensajes enviados y recibidos por los "puertos de los mensajes" del trabajador. Como los puertos de los mensajes son inherentemente asíncronos, cualquier mensaje que requiera una respuesta implicará dos mensajes - uno para la solicitud y otro para la respuesta, No todos los mensajes requieren una respuesta - esto hace parte de la especificación del mensaje. Los mensajes que no requieren respuesta son semejantes a un "evento" no solicitado. Si un mensaje requiere una respuesta, la respuesta siempre debe ser enviada al mismo puerto de la solicitud y, en general, el "asunto" de la respuesta será el asunto de la solicitud con "-respuesta" añadido.</p>
                      <p>Se espera que los trabajadores de servicios proporcionen funciones, en un ámbito global, llamadas <code>onconnect</code> y <code>ondisconnect</code>. El navegador invocará <code>onconnect</code> en el momento de inicio, pasando en un evento. El trabajador debe tener acceso a la propiedad de los <code>puertos</code> de este evento para extraer un puerto de comunicación estable de vuelta al navegador, y mantenerlo para la vida del worker, así:</p>
                      <pre>
<code>var apiPort;
var ports = [];
onconnect = function(e) {
    var port = e.ports[0];
    ports.push(port);
    port.onmessage = function (msgEvent)
    {
        var msg = msgEvent.data;
        if (msg.topic == "social.port-closing") {
            if (port == apiPort) {
                apiPort.close();
                apiPort = null;
            }
            return;
        }
        if (msg.topic == "social.initialize") {
            apiPort = port;
            initializeAmbientNotifications();
        }
    }
}

// envía un mensaje a todos los contenidos del proveedor
function broadcast(topic, data) {
  for (var i = 0; i &lt; ports.length; i++) {
    ports[i].postMessage({topic: topic, data: data});
  }
}
</code></pre>
                      <p>&nbsp;</p>
                      <p>Cada mensaje tiene un elemento de datos con dos campos, "asunto" y "datos". El asunto identifica qué método o evento se está utilizando, y los datos especifican datos adicionales únicos para el asunto. Todos los métodos y eventos tienen asuntos que comienzan con "social". - Esto significa que los servicios son libres de utilizar asuntos sin prefijo como un detalle de implementación privada (por ejemplo, para la comunicación entre cierto contenido desde el servicio y el servicio del trabajador)</p>
                      <h3 id="Control_Messages_sent_to_Service_Workers">Mensajes de control enviados a los trabajadores de servicios</h3>
                      <h4 id="social.initialize"><code>social.initialize</code></h4>
                      <p><strong>STATUS: DONE Fx17</strong></p>
                      <p>Enviado por el navegador durante el arranque. Cuando el JavaScript de un trabajador se ha cargado y evaluado correctamente, el navegador enviará un mensaje con este asunto.</p>
                      <h4 id="social.port-closing"><code>social.port-closing</code></h4>
                      <p><strong>STATUS: DONE Fx17</strong></p>
                      <p>Sent by the browser during worker shutdown, when a MessagePort to the worker is about to be closed. This will be the last message the worker receives on the port.</p>
                      <h3 id="Ambient_Notification_Control">Control de las notificaciones del ambiente</h3>
                      <h4 id="social.user-profile"><code>social.user-profile</code></h4>
                      <p><strong>STATUS: DONE Fx17</strong></p>
                      <p>Enviado por el trabajador, para establecer las propiedades para el icono del proveedor y los datos del perfil de usuario utilizadas por el botón de la barra de herramientas. Si falta el retrato del usuario y el nombre de usuario el boton UI indicará un estado desconectado. Al indicar el estado desconectado, el icono de estado establecido por&nbsp;<code>social.ambient-notification</code> será eliminado.</p>
                      <p><em>Argumentos:</em></p>
                      <p><strong>background</strong> OBSOLETO, sustituido por iconURL</p>
                      <blockquote>
                        <p>String, opcional. Si se proporciona, especifica el valor de CSS para el fondo de la zona. Normalmente, esto sólo propocionará un color de fondo. ACTUALIZACIÓN: la url de los datos se analiza para proporcionar el iconURL. Esto funciona actualmente, sin embargo utilizando iconos muy pequeños produce resultados incorrectos.</p>
                      </blockquote>
                      <p><strong>iconURL</strong></p>
                      <blockquote>
                        <p>String, necesario. Si se proporciona, especifica la URL a una imagen de 16x16 pixeles, utilizados para el icono de estado. El iconURL puede ser una url de datos con la imagen codificada para evitar solicitudes http adicionales. (por ejemplo, "data:image/png;base64,...data...")</p>
                      </blockquote>
                      <p><strong>portrait</strong></p>
                      <blockquote>
                        <p>String, opcional. Si se proporciona, especifica la URL de una imagen del usuario de 48x48 pixeles. El retrato puede ser una url de datos con la imagen codificada para evitar solicitudes http adicionales.</p>
                      </blockquote>
                      <p><strong>userName</strong></p>
                      <blockquote>
                        <p>String, opcional. El nombre de la cuenta se muestra con el retrato en el menú del proveedor.</p>
                      </blockquote>
                      <p><strong>displayName</strong></p>
                      <blockquote>
                        <p>String, necesario. Nombre real del usuario que se utiliza para su visualización en varios elementos de la Interfaz de Usuario.</p>
                      </blockquote>
                      <p><strong>profileURL</strong></p>
                      <blockquote>
                        <p>String, necesario. URL para la página de perfil de los usuarios registrados. Esta se abrirá en una pestaña normal del navegador cuando el usuario haga clic sobre ella.</p>
                      </blockquote>
                      <h4 id="social.ambient-notification"><code>social.ambient-notification</code></h4>
                      <p><strong>STATUS: DONE Fx17</strong></p>
                      <p>Enviado por el trabajador, para actualizar o crear un icono de notificación del ambiente. Se envía uno para cada icono. Un usuario debe estar conectado para mostrar los iconos de estado, y debes llamar al <code>social.user-profile</code> antes de llamar al <code>social.ambient-notification</code> para establecer los iconos de estado.</p>
                      <p><em>Argumentos:</em></p>
                      <p><strong>name</strong></p>
                      <blockquote>
                        <p>String. Un identificador para el icono. La primera vez que se ve un nombre dado, efectivamente se crea un nuevo ícono. Si el mismo nombre se utiliza en llamadas posteriores, el icono existente se actualiza.</p>
                      </blockquote>
                      <p><strong>background</strong> OBSOLETO, sustituido por iconURL</p>
                      <blockquote>
                        <p>String, opcional. Si se proporciona, especifica el valor de CSS para el fondo de la zona. Normalmente, esto sólo proporciona un color de fondo. ACTUALIZACIÓN: La url de datos se analiza para proporcionar la iconURL. Esto funciona actualmente, sin embargo, utilizar iconos muy pequeños produce resultados incorrectos.</p>
                      </blockquote>
                      <p><strong>iconURL</strong></p>
                      <blockquote>
                        <p>String, opcional. Si se proporciona, especifica la URL a una imagen de 16x16 pixeles, utilizados para el icono de estado. El iconURL puede ser una url de datos con la imagen codificada para evitar solicitudes http adicionales. (por ejemplo, "data:image/png;base64,...data...")</p>
                      </blockquote>
                      <p><strong>counter</strong></p>
                      <blockquote>
                        <p>Número, opcional. Especifica un número que se superpondrá sobre el icono, normalmente se utiliza para transmitir el concepto de <code>no leído</code>.</p>
                      </blockquote>
                      <p><strong>contentPanel</strong></p>
                      <blockquote>
                        <p>String, opcional. Especifica la URL del contenido que se muestra en el panel emergente del icono.</p>
                      </blockquote>
                      <h3 id="Active_Notification_Control">Control de las notificaciones activas</h3>
                      <h4 id="social.notification-create"><code>social.notification-create</code></h4>
                      <p><strong>STATUS: DONE Fx17</strong></p>
                      <p>Enviado por el trabajador, para crear y mostrar un objeto de notificación. Este solicita que el navegador notifique inmediatamente al usuario de un cambio relevante en el estado. Ver <a href="https://developer.mozilla.org/en/DOM/navigator.mozNotification">https://developer.mozilla.org/en/DOM/navigator.mozNotification</a> para más detalles. Cuando el usuario hace clic en la notificación, el mensaje <code>social.notification-action</code> se envía al trabajador. El título de la notificación siempre será el nombre del proveedor.</p>
                      <p>NOTA: Queremos aumentar el objeto mozNotification, definido en la documentación, con un campo adicional "tipo". Detalles por determinar. NOTA: No hay manera de permitir duración y no se ha expuesto una forma de "cancelar" una notificación (se supone que es de muy corta duración). ¿Está bien?</p>
                      <p><em>Argumentos:</em></p>
                      <p><strong>id</strong></p>
                      <blockquote>
                        <p>String: Un ID para la notificación. Este ID no se muestra, pero se pasa de nuevo a través de un evento <code>social.notification-action</code> si el usuario hace clic en la notificación.</p>
                      </blockquote>
                      <p><strong>type</strong></p>
                      <blockquote>
                        <p>String: El tipo string debe ser consistente para cada <strong>tipo</strong> de notificación. Esto puede ser utilizado por algunos sistemas de notificación para proporcionar el filtrado de notificaciones a nivel de usuario. Un proveedor puede elegir cualquier string para el tipo, pero debe mantener el tipo de string consistente y descriptivo para cada tipo de acción. Por ejemplo, las notificaciones del chat siempre deben tener el mismo tipo de string. las notificaciones sugeridas incluyen:</p>
                      </blockquote>
                      <ul>
                        <li>social.providername.chat-request</li>
                        <li>social.providername.friend-request</li>
                        <li>social.providername.activity (por ejemplo, alguien publicó en su stream de actividad)</li>
                      </ul>
                      <p><strong>icon</strong></p>
                      <blockquote>
                        <p>String/null. La URL de una imagen que se coloca en la notificación. Aunque esta pueda ser una URL válida, se recomienda a los desarrolladores usar una URL de datos para minimizar la latencia.</p>
                      </blockquote>
                      <p><strong>body</strong></p>
                      <blockquote>
                        <p>String: El cuerpo del mensaje de notificación. Este cuerpo se representa como un hipervínculo y se puede hacer clic sobre él. No soporta el formato HTML.</p>
                      </blockquote>
                      <p><strong>action</strong></p>
                      <blockquote>
                        <p>String: Una acción a realizar cuando el usuario haga clic en la notificación. Si no se proporciona, no se puede hacer clic sobre la notificación. Actualmente las únicas acciones soportadas son <strong><em>link</em></strong>, <strong><em>callback</em></strong> y <strong><em>openServiceWindow</em></strong>. Si se define la acción, también debe definirse actionArgs.</p>
                      </blockquote>
                      <p><strong>actionArgs</strong></p>
                      <blockquote>
                        <p>Objeto: Un objeto con argumentos para las acciones (arriba). Las acciones y sus actionArgs soportadas son:</p>
                      </blockquote>
                      <ul>
                        <li>link
                          <ul>
                            <li>toURL: String: url para abrir en una nueva pestaña del navegador.</li>
                          </ul>
                        </li>
                      </ul>
                      <h4 id="social.notification-action"><code>social.notification-action</code></h4>
                      <p><strong>STATUS: DONE Fx17</strong></p>
                      <p>Enviado al trabajador como respuesta a una notificación de "devolución de llamada", después de que el usuario ha hecho clic en la notificación.</p>
                      <p><em>Argumentos:</em></p>
                      <p><strong>id</strong></p>
                      <blockquote>
                        <p>String: el ID de la notificación sobre la que se ha hecho clic.</p>
                      </blockquote>
                      <p><strong>action</strong></p>
                      <blockquote>
                        <p>String: La <strong>accion</strong> enviada en <code>social.notification-create</code>.</p>
                      </blockquote>
                      <p><strong>actionArgs</strong></p>
                      <blockquote>
                        <p>Object: Los <strong>actionArgs</strong> establecidos en <code>social.notification-create</code>.</p>
                      </blockquote>
                      <h3 id="Link_Recommendation_Control">Link Recommendation Control</h3>
                      <h3 id="Link_Recommendation_Control">Control de los enlaces de recomendación</h3>
                      <h4 id="social.user-recommend-prompt"><code>social.user-recommend-prompt</code></h4>
                      <p><strong>STATUS: DONE Fx17</strong></p>
                      <p>Enviado por el navegador para solicitar el indicador visual para el elemento de la interfaz "recomendación del usuario". El trabajador debe responder con una user-recommend-prompt-response.</p>
                      <p>Tenga en cuenta que normalmente este mensaje sólo se enviará cuando un proveedor se activa y la respuesta se utilizará para todas las URLs. En otras palabras, el proveedor no debe esperar que este mensaje se envíe cada vez que el agente de usuario navega o muestra una nueva URL.</p>
                      <p><em>Argumentos:</em></p>
                      <p>Ninguno.</p>
                      <h4 id="social.user-recommend-prompt-response"><code>social.user-recommend-prompt-response</code></h4>
                      <p><strong>STATUS: DONE Fx17</strong></p>
                      <p>El trabajador construye y publica una user-recommend-prompt-response en respuesta a un mensaje <code>social.user-recommend-prompt</code> recibido desde el navegador. Ver <code>social.user-recommend-prompt</code> para más detalles.</p>
                      <p><em>Argumentos:</em></p>
                      <p><strong>images</strong></p>
                      <blockquote>
                        <p>Objeto. Debe tener 2 string claves, "compartir" y "dejar de compartir", cuyo valor es la direccion URL de una imagen que se establecerá como la propiedad "src" de una imagen contenida en el objetivo del clic hecho por el usuario para la acción "recomendada". El agente de usuario hará un seguimiento de si la página actual se ha compartido - si es así, se mostrará "dejr de compartir" la imagen, de lo contrario, se mostrará "compartir" imagen. Esto puede contener una imagen direccionable en la web o una URL de datos que contenga datos de imagen generados dinámicamente. Se recomienda a los desarrolladores utilizar una URL de datos para minimizar la latencia. Se espera que cada imagen tenga un alto de 16px y un ancho de 16px.</p>
                      </blockquote>
                      <p><strong>messages</strong></p>
                      <blockquote>
                        <p>Objeto. Debe tener los siguientes string claves:</p>
                      </blockquote>
                      <ul>
                        <li>'shareTooltip', 'unshareTooltip': Los strings utilizados como la descripción del objetivo cuando se muestra el "compartir" y "dejar de compartir" las imágenes respectivamente.</li>
                        <li>'sharedLabel', 'unsharedLabel': Los strings que se utilizarán para actualizar un widget de etiqueta después de tomar la acción "compartir" o "dejar de compartir" para reflejar la transición de compartida a no compartida o viceversa. Tenga en cuenta que en Fx17, las etiquetas no son visibles, pero se utiliza como una ayuda de accesibilidad para que un lector de pantalla o similar pueda observar la transición.</li>
                        <li>'unshareLabel': Un string que se mostrará en el "popup unshare" para reflejar que el elemento ya ha sido compartido. Por ejemplo: "Usted ha compartido previamente este elemento".</li>
                        <li>'portraitLabel': Un string usado como la etiqueta aria para la imagen de perfil de usuario que se muestra en el "unshare popup". Por ejemplo: "La imagen de tu perfil".</li>
                        <li>'unshareConfirmLabel': Un string que se utiliza como la etiqueta del botón del "unshare popup" utilizado para realizar el "unshare". Por ejemplo: "Deja de compartirla"</li>
                        <li>'unshareConfirmAccessKey': Un string que se utiliza como clave de acceso para el botón dejar de compartir. Normalmente, esto debería ser una letra incluída en el string 'unshareConfirmLabel'.</li>
                        <li>'unshareCancelLabel': Una cadena que se utiliza como la etiqueta del botón en el "unshare popup" cuando el usuario desea seguir compartiendo el elemento. Por ejmplo: "Cerrar".</li>
                        <li>'unshareCancelAccessKey': Una cadena que se utiliza como clave de acceso para el boton cancelar de unshare.</li>
                      </ul>
                      <h4 id="social.user-recommend"><code>social.user-recommend</code></h4>
                      <p>Indicates that the user has clicked the "user recommendation" interface element. The message includes:</p>
                      <p><em>Arguments:</em></p>
                      <p><strong>url</strong></p>
                      <blockquote>
                        <p>String, required. The URL that the user is viewing, including query string, but minus any hash text, of the root of the current browser viewing context.</p>
                      </blockquote>
                      <p>No response is necessary; however, the service may respond on the same port with a user-recommend-prompt-response if the click target should change its appearance.</p>
                      <h4 id="social.user-unrecommend"><code>social.user-unrecommend</code></h4>
                      <p>Indicates that the user would like to retract their previous recommendation. The message includes:</p>
                      <p><em>Arguments:</em></p>
                      <p><strong>url</strong></p>
                      <blockquote>
                        <p>String, required. The URL that the user is viewing, including query string, but minus any hash text, of the root of the current browser viewing context.</p>
                      </blockquote>
                      <br />
                      <h3 id="Widgets">Widgets</h3>
                      <h4 id="SidebarWidget">SidebarWidget</h4>
                      <p>If a service defines a SidebarWidget, the browser will instantiate a content region with the SidebarWidget URL as the location on some browser windows. These regions will not be instantiated until the Worker has been fully loaded. The content in these regions has the additional API defined in the Service Content API reference, above.</p>
                      <p>Sidebars can be in a <em>visible</em> or <em>hidden</em> state.</p>
                      <ul>
                        <li>When visible, they will receive a vertical rectangle of screen space in which to render; this rectangle is stable across changes in tab focus and has an independent scrollbar from the scrollbar of tabbed browsing content.</li>
                        <li>When hidden, a sidebar is completely removed from the visual hierarchy. The user agent will continue to deliver messages to it, and the sidebar may pre-render its DOM for later display.</li>
                      </ul>
                      <p>Sidebar windows will only be instantiated on browser windows that have a full tabbed-browsing interface; windows created with window.open that do not have these interface elements will not have a sidebar.</p>
                      <p>When a tab that is rendered directly by the browser without a location bar is selected, the sidebar will automatically be placed into the <em>hidden</em> state. When the user navigates away from that tab, the sidebar will be made <em>visible</em> again. These tabs include the Add-ons management page, about:permissions, etc.</p>
                      <p>The minimized/maximized/hidden state of the sidebar widget is will be consistent across all browser windows. The most-recently-set state is remembered and used for new windows, and is persisted across browser restarts.</p>
                      <h3 id="Messages_Sent_to_Widgets">Messages Sent to Widgets</h3>
                      <p><strong>STATUS: DONE Fx17</strong></p>
                      <h4 id="socialFrameHide"><code>socialFrameHide</code></h4>
                      <p>DOM Event sent by the browser when the user hides the sidebar content.</p>
                      <h4 id="socialFrameShow"><code>socialFrameShow</code></h4>
                      <p>DOM Event sent by the browser when the user shows the sidebar content.</p>
                      <h3 id="Browser_.22Panel.22_Integration">Browser "Panel" Integration</h3>
                      <p><strong>STATUS: DONE Fx17</strong></p>
                      <p>To allow content to place an ephemeral window in front of normal browser content and chrome, the following API is used:</p>
                      <pre>
<code>`navigator.mozSocial.openChatWindow( url, callback)`
</code></pre>
                      <p>The callback will receive the window object from the chat frame.</p>
                      <h1 id="Message_Serialization">Message Serialization</h1>
                      <p>For a message with topic <code>topic</code> and arguments (arg1:val1, arg2:val2), construct an object like:</p>
                      <pre>
<code>{ topic: topic, data: { arg1: val1, arg2: val2 } }
</code></pre>
                      <h3 id="Discovery_and_Service_Manifest">Discovery and Service Manifest</h3>
                      <h4 id="Discovery">Discovery</h4>
                      <p><strong>STATUS: NOT TARGETED</strong></p>
                      <p>As a user browses web sites Firefox can discover new social providers and offer installation of those providers. A social providers website would include a LINK tag in the header pointing to a manifest file to enable this form of discovery. If the user either has stored authentication credentials in the Firefox password manager, or if the user frequents the website, Firefox will show a notification bar allowing the user to install the service.</p>
                      <h4 id="Activation">Activation</h4>
                      <p><strong>STATUS: DONE Fx17</strong></p>
                      <p>A provider can become activated by dispatching a custom event of "ActivateSocialFeature" on the document. The document's location is then checked against a built-in whitelist and if the location is found then the feature is activated for that provider.</p>
                      <p>We recommend that providers require their users to click a link or button to activate the feature so the user is aware of the new functionality.</p>
                      <pre>
<code>function activate() {
  var event = new CustomEvent("ActivateSocialFeature");
  document.dispatchEvent(event);
}
</code></pre>
                    </article>
                  </div>
                </div>
              </div>
            </div>
          </div>
        </div>
      </div>
    </div>
  </div>
</div>
<div data-copied-title="copied!" id="global-clippy-flash-bug" style="position: absolute; left: -9999px; top: -9999px; z-index: 9998; width: 14px; height: 14px;">
  &nbsp;</div>
Revertir a esta revisión