Registrar um app como um gerenciador de arquivos no sistema operacional.
Agora que os apps da Web s�o capazes de ler e gravar arquivos, a pr�xima l�gica
� permitir que os desenvolvedores declarem esses aplicativos da Web como gerenciadores dos arquivos que eles podem
criar e processar. A API File Handling permite que voc� fa�a exatamente isso. Depois de registrar uma mensagem de texto
editor de arquivos como gerenciador de arquivos e, depois de instal�-lo, clique com o bot�o direito do mouse em um arquivo .txt
no macOS e
selecione "Obter informa��es" para instruir o SO a sempre abrir arquivos .txt
com esse app como
padr�o.
Casos de uso sugeridos para a API File Handling
Exemplos de sites que podem usar essa API incluem:
- Aplicativos do Office, como editores de texto, de planilhas e criadores de apresenta��es de slides.
- Editores gr�ficos e ferramentas de desenho.
- Ferramentas de edi��o de n�veis de videogames.
Como usar a API File Handling
Aprimoramento progressivo
A API File Handling n�o pode ser polyfill, por si s�. A funcionalidade de abrir arquivos usando uma app, no entanto, pode ser alcan�ado de duas outras formas:
- A API Web Share Target permite que os desenvolvedores especifiquem o app como um alvo de compartilhamento. para que os arquivos possam ser abertos na planilha de compartilhamento do sistema operacional.
- A API File System Access pode ser integrada com o recurso de arrastar e soltar arquivos. os desenvolvedores podem lidar com arquivos descartados no aplicativo j� aberto.
Suporte ao navegador
Detec��o de recursos
Para verificar se a API File Handling � compat�vel, use:
if ('launchQueue' in window && 'files' in LaunchParams.prototype) {
// The File Handling API is supported.
}
A parte declarativa da API File Handling
Como primeira etapa, os apps da Web precisam descrever de maneira declarativa no manifesto do app da Web.
e o tipo de arquivo que eles podem manipular. A API File Handling estende o manifesto do aplicativo web com um novo
chamada "file_handlers"
, que aceita uma matriz de gerenciadores de arquivos. Um gerenciador de arquivos �
um objeto com estas propriedades:
- Uma propriedade
"action"
que aponta para um URL no escopo do app como o valor dele. - Uma propriedade
"accept"
com um objeto de tipos MIME como chaves e listas de extens�es de arquivo como as e a distribui��o dos valores dos dados. - Uma propriedade
"icons"
com uma matriz deImageResource
�cones. Alguns sistemas operacionais permitem que uma associa��o de tipo de arquivo exiba um �cone que n�o � apenas o �cone do aplicativo associado, mas um �cone especial relacionado ao uso daquele tipo de arquivo com o aplicativo. - Uma propriedade
"launch_type"
que define se v�rios arquivos precisam ser abertos em um �nico ou em v�rios clientes. O padr�o �"single-client"
. Se o usu�rio abre v�rios arquivos e se o gerenciador de arquivos foi anotado com"multiple-clients"
como na"launch_type"
, mais de uma inicializa��o do app vai ocorrer e, para cada inicializa��o, MatrizLaunchParams.files
(consulte mais abaixo) ter� apenas um elemento.
O exemplo abaixo, que mostra apenas o trecho relevante do manifesto do app da Web, deve tornar mais claras:
{
"file_handlers": [
{
"action": "/open-csv",
"accept": {
"text/csv": [".csv"]
},
"icons": [
{
"src": "csv-icon.png",
"sizes": "256x256",
"type": "image/png"
}
],
"launch_type": "single-client"
},
{
"action": "/open-svg",
"accept": {
"image/svg+xml": ".svg"
},
"icons": [
{
"src": "svg-icon.png",
"sizes": "256x256",
"type": "image/png"
}
],
"launch_type": "single-client"
},
{
"action": "/open-graf",
"accept": {
"application/vnd.grafr.graph": [".grafr", ".graf"],
"application/vnd.alternative-graph-app.graph": ".graph"
},
"icons": [
{
"src": "graf-icon.png",
"sizes": "256x256",
"type": "image/png"
}
],
"launch_type": "multiple-clients"
}
]
}
Isto � para um aplicativo hipot�tico que lida com arquivos de valores separados por v�rgula (.csv
) em
/open-csv
, arquivos de gr�ficos vetoriais escalon�veis (.svg
) em /open-svg
e um formato de arquivo Grafr fict�cio
com qualquer .grafr
, .graf
ou .graph
como extens�o em /open-graf
. As duas primeiras ser�o abertas
em um �nico cliente, o �ltimo em v�rios clientes se v�rios arquivos estiverem sendo gerenciados.
A parte imperativa da API File Handling
Agora que o app declarou quais arquivos pode gerenciar em qual URL em escopo, ele precisa
fazer algo com os arquivos recebidos na pr�tica. � aqui que o launchQueue
vem.
em a��o. Para acessar os arquivos iniciados, um site precisa especificar um consumidor para o window.launchQueue
objeto. As inicializa��es ficam na fila at� serem processadas pelo consumidor especificado, que � invocado
exatamente uma vez para cada lan�amento. Dessa forma, todos os lan�amentos s�o tratados, independentemente de quando
consumidor foi especificado.
if ('launchQueue' in window && 'files' in LaunchParams.prototype) {
launchQueue.setConsumer((launchParams) => {
// Nothing to do when the queue is empty.
if (!launchParams.files.length) {
return;
}
for (const fileHandle of launchParams.files) {
// Handle the file.
}
});
}
Suporte ao DevTools
N�o havia suporte para o DevTools no momento desta grava��o, mas registrei um solicita��o de recurso para que o suporte seja adicionados.
Demonstra��o
Adicionei suporte ao gerenciamento de arquivos ao Excalidraw, um app de desenho animado. Para testar, primeiro instale o Excalidraw. Quando voc� cria um arquivo com ele e o armazena em algum lugar seu sistema de arquivos, abra o arquivo com um clique duplo ou clique com o bot�o direito do mouse e selecione "Excalidraw" no menu de contexto. Confira a implementa��o na fonte o c�digo-fonte.
Seguran�a
A equipe do Chrome projetou e implementou a API File Handling usando os princ�pios fundamentais definidos em Como controlar o acesso a recursos avan�ados da Web Platform, incluindo controle de usu�rio, transpar�ncia e ergonomia.
Permiss�es, persist�ncia de permiss�es e atualiza��es do gerenciador de arquivos
Para garantir a confian�a do usu�rio e a seguran�a dos usu�rios arquivos, quando a API File Handling abre um arquivo, um prompt de permiss�o � exibido antes que um PWA possa visualizar um arquivo. Esta solicita��o de permiss�o ser� mostrada logo ap�s o usu�rio selecionar o PWA para abrir um arquivo, de modo que a permiss�o seja rigidamente acoplada ao a��o de abrir um arquivo usando o PWA, tornando-o mais compreens�vel e relevante.
Essa permiss�o aparece sempre at� o usu�rio clicar em Permitir ou Bloquear o processamento de arquivos. para o site, ou ignora a solicita��o tr�s vezes (depois disso, o Chromium embarga e bloqueia permiss�o). A configura��o selecionada ser� mantida ap�s o fechamento e a reabertura do PWA.
Quando o manifesto for atualizado e modificado na se��o "file_handlers"
, as permiss�es
ser� redefinida.
Desafios relacionados a arquivos
H� uma grande categoria de vetores de ataque que s�o abertos ao permitir que os sites acessem arquivos. Eles est�o descritos nos artigo sobre a API File System Access. A capacidade adicional de seguran�a que a API File Handling oferece no sistema de arquivos A API Access � a capacidade de conceder acesso a determinados arquivos pela interface em vez de um seletor de arquivos mostrado por um aplicativo da Web.
Ainda h� o risco de os usu�rios concederem, sem querer, a um aplicativo da Web acesso a um arquivo antes de abri-lo. No entanto, geralmente se entende que abrir um arquivo permite que o aplicativo ao qual ele est� para ler e/ou manipular esse arquivo. Portanto, a escolha expl�cita do usu�rio de abrir um arquivo em um aplicativo instalado, como em um bot�o "Abrir com..." menu de contexto, pode ser lido como um recurso um sinal de confian�a no aplicativo.
Desafios do gerenciador padr�o
A exce��o � quando n�o h� aplicativos no sistema host para um determinado tipo de arquivo. Em nesse caso, alguns sistemas operacionais host podem promover automaticamente o manipulador rec�m-registrado para a gerenciador padr�o desse tipo de arquivo silenciosamente e sem qualquer interven��o do usu�rio. Isso significa que, se o usu�rio clicar duas vezes em um arquivo desse tipo, ele ser� aberto automaticamente no app da Web. Nesses sistemas operacionais host, quando o user agent determina que n�o h� gerenciador padr�o para o tipo de arquivo, uma solicita��o de permiss�o expl�cita pode ser necess�ria para evitar enviar acidentalmente o conte�do de um arquivo para um aplicativo da Web sem o consentimento do usu�rio.
Controle do usu�rio
A especifica��o afirma que os navegadores n�o devem registrar todos os sites que podem lidar com arquivos como um arquivo
. Em vez disso, o registro de tratamento de arquivos deve ser protegido pela instala��o e nunca acontecer
sem confirma��o expl�cita do usu�rio, especialmente se um site se tornar o manipulador padr�o. Em vez
do que invadir extens�es existentes, como .json
, que o usu�rio provavelmente j� tem um gerenciador padr�o.
registrar, os sites devem considerar a cria��o de suas pr�prias extens�es.
Transpar�ncia
Todos os sistemas operacionais permitem que os usu�rios alterem as associa��es de arquivos atuais. Isso est� fora do escopo do navegador.
Feedback
A equipe do Chrome quer saber mais sobre suas experi�ncias com a API File Handling.
Fale sobre o design da API
Alguma coisa na API n�o funciona como voc� esperava? Ou h� m�todos faltando ou propriedades de que precisa para implementar sua ideia? Tem uma pergunta ou coment�rio sobre a seguran�a modelo?
- Registre um problema de especifica��o no reposit�rio do GitHub correspondente ou adicione sua opini�o a um problema.
Informar um problema com a implementa��o
Voc� encontrou um bug na implementa��o do Chrome? Ou a implementa��o � diferente das especifica��es?
- Registre um bug em new.crbug.com. N�o deixe de incluir o m�ximo de detalhes
instru��es simples para reprodu��o, e digite
UI>Browser>WebAppInstalls>FileHandling
no na caixa Componentes. O Glitch � �timo para compartilhar informa��es de maneira r�pida e f�cil reprodu��es.
Mostrar suporte � API
Voc� planeja usar a API File Handling? Seu apoio p�blico ajuda a equipe do Chrome a priorizar recursos e mostrar a outros fornecedores de navegador como � fundamental oferecer suporte a eles.
- Compartilhe como voc� planeja us�-la na conversa sobre a WCG (em ingl�s).
- Envie um tweet para @ChromiumDev usando a hashtag
#FileHandling
e vamos saber onde e como voc� a est� usando.
Links �teis
- Explica��es p�blicas
- Demonstra��o da API File Handling | Origem da demonstra��o da API File Handling
- Bug de rastreamento do Chromium
- Entrada de ChromeStatus.com
- Componente Blink:
UI>Browser>WebAppInstalls>FileHandling
- Revis�o do TAG
- Posi��o de padr�es da Mozilla
Agradecimentos
A API File Handling foi especificada por Eric Willigers, Jay Harris e Raymes Khoury. Este artigo foi revisado por Jo�o Medley.