Merge CONTRIBUTING.md

This commit is contained in:
Lucas Pugliesi 2016-10-03 15:18:03 -03:00
commit 8d35576a36
15 changed files with 263 additions and 34 deletions

View file

@ -1,4 +1,4 @@
Copyright (c) 2014 GitHub Inc.
Copyright (c) 2016 GitHub Inc.
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the

View file

@ -79,3 +79,7 @@ forums
Check out [awesome-electron](https://github.com/sindresorhus/awesome-electron)
for a community maintained list of useful example apps, tools and resources.
## License
MIT © 2016 Github

View file

@ -21,6 +21,10 @@ namespace atom {
namespace {
void FreeNodeBufferData(char* data, void* hint) {
delete[] data;
}
void RunCallbackInUI(
const AtomBlobReader::CompletionCallback& callback,
char* blob_data,
@ -32,7 +36,8 @@ void RunCallbackInUI(
v8::HandleScope handle_scope(isolate);
if (blob_data) {
v8::Local<v8::Value> buffer = node::Buffer::New(isolate,
blob_data, static_cast<size_t>(size)).ToLocalChecked();
blob_data, static_cast<size_t>(size), &FreeNodeBufferData, nullptr)
.ToLocalChecked();
callback.Run(buffer);
} else {
callback.Run(v8::Null(isolate));

View file

@ -71,7 +71,8 @@ void WindowList::RemoveObserver(WindowListObserver* observer) {
void WindowList::CloseAllWindows() {
WindowVector windows = GetInstance()->windows_;
for (const auto& window : windows)
window->Close();
if (!window->IsClosed())
window->Close();
}
WindowList::WindowList() {

View file

@ -144,7 +144,7 @@ void NodeBindings::Initialize() {
// uv_init overrides error mode to suppress the default crash dialog, bring
// it back if user wants to show it.
std::unique_ptr<base::Environment> env(base::Environment::Create());
if (env->HasVar("ELECTRON_DEFAULT_ERROR_MODE"))
if (is_browser_ || env->HasVar("ELECTRON_DEFAULT_ERROR_MODE"))
SetErrorMode(GetErrorMode() & ~SEM_NOGPFAULTERRORBOX);
#endif
}

View file

@ -47,12 +47,15 @@ char* CopyPDFDataOnIOThread(
new base::SharedMemory(params.metafile_data_handle, true));
if (!shared_buf->Map(params.data_size))
return nullptr;
char* memory_pdf_data = static_cast<char*>(shared_buf->memory());
char* pdf_data = new char[params.data_size];
memcpy(pdf_data, memory_pdf_data, params.data_size);
memcpy(pdf_data, shared_buf->memory(), params.data_size);
return pdf_data;
}
void FreeNodeBufferData(char* data, void* hint) {
delete[] data;
}
} // namespace
namespace printing {
@ -126,11 +129,12 @@ void PrintPreviewMessageHandler::RunPrintToPDFCallback(
v8::HandleScope handle_scope(isolate);
if (data) {
v8::Local<v8::Value> buffer = node::Buffer::New(isolate,
data, static_cast<size_t>(data_size)).ToLocalChecked();
data, static_cast<size_t>(data_size), &FreeNodeBufferData, nullptr)
.ToLocalChecked();
print_to_pdf_callback_map_[request_id].Run(v8::Null(isolate), buffer);
} else {
v8::Local<v8::String> error_message = v8::String::NewFromUtf8(isolate,
"Fail to generate PDF");
"Failed to generate PDF");
print_to_pdf_callback_map_[request_id].Run(
v8::Exception::Error(error_message), v8::Null(isolate));
}

View file

@ -309,7 +309,7 @@ Returns:
* `matches` Integer (optional) - 일치하는 개수.
* `selectionArea` Object (optional) - 첫 일치 부위의 좌표.
[`webContents.findInPage`](web-contents.md#webcontentsfindinpage) 요청의 결과를
[`webContents.findInPage`] 요청의 결과를
사용할 수 있을 때 발생하는 이벤트입니다.
#### Event: 'media-started-playing'
@ -755,7 +755,7 @@ CSS 코드를 현재 웹 페이지에 삽입합니다.
#### `contents.stopFindInPage(action)`
* `action` String - [`webContents.findInPage`](web-contents.md#webcontentfindinpage)
* `action` String - [`webContents.findInPage`]
요청이 종료되었을 때 일어날 수 있는 작업을 지정합니다.
* `clearSelection` - 선택을 취소합니다.
* `keepSelection` - 선택을 일반 선택으로 변경합니다.
@ -1235,3 +1235,4 @@ win.webContents.debugger.sendCommand('Network.enable')
디버깅 타겟이 관련 이벤트를 발생시킬 때 마다 발생하는 이벤트입니다.
[rdp]: https://developer.chrome.com/devtools/docs/debugger-protocol
[`webContents.findInPage`]: web-contents.md#contentsfindinpagetext-options

View file

@ -0,0 +1,46 @@
# Pacto de Conduta do Colaborador de Código
## Nosso Compromisso
No interesse de promover um ambiente aberto e acolhedor, nos como colaboradores e mantenedores comprometidos a fazer participação em nosso projeto e nossa comunidade uma experiência livre de assédio para todos, independentemente da idade, estatura, deficiência, etnia, identidade de gênero e expressão, nivel de experiência, nacionalidade, aparência pessoal, raça, religião ou identidade sexual e orientação.
## Nossos Padrões
Exemplos de comportamento que contribui para criar um ambiente positivo incluem:
* Usar uma linguagem de boas-vindas e incluisiva
* Ser respeitoso com diferentes pontos de vista e experiências
* Graciosamente aceitar críticas construtivas
* Incidindo sobre o que é melhor para a comunidade
* Mostrando empatia para com outros membros da comunidade
Exemplos de comportamento inaceitável pelos participantes incluem:
* O uso de linguagem sexualizada ou imagens e atenção sexual indesejada ou avanços
* Trolando, comentários depreciativos, e ataques insultantes/pessoais ou politicos
* Assédio público ou privado
* A publicação de outras informações privadas, tais como um endereço físico ou eletrônico, sem permissão explícita
* Outra conduta que possa ser razoavelmente considerada inadequada em um ambiente profissional
## Nossas Responsabilidades
Mantenedores do projeto são responsáveis por esclarecer as normas do comportamento aceitável e espera-se que as medidas corretivas adequadas e justas em resposta a todas as instâncias do comportamento inaceitável.
Mantenedores do projeto têm o direito e a responsabilidade de remover, editar, ou rejeitar comentários, commits, código, edição de wiki, issues e outras contribuições que não estão alinhadas a este Código de Conduta, ou proibir temporária ou permamentemente qualquer colaborador por outros comportamentos que considerem inapropriado, ameaçador, ofensivo ou prejudicial.
## Escopo
Este Código de Conduta aplica-se tanto dentro dos espaços do projeto e em espaços públicos quando um indivíduo está representando o projeto ou sua comunidade. Exemplos de que representa um projeto ou comunidade incluem o uso de um endereço de e-mail do projeto oficial, postado através de uma conta oficial de mídia social, ou agindo como um representante nomeado em um evento on-line ou off-line. Representação de um projeto pode ser ainda definidos e esclarecidos pelos mantenedores do projeto.
## Aplicação
Instânicas de assédio ou comportamento abusivo, de outro modo inaceitáveis podem ser relatados em contato com a equipe do projeto em [electron@github.com](mailto:electron@github.com). Todas as reclamações serão analisadas e investigadas e irá resultar em uma resposta que for considerada necessária e adequada ás circunstâncias. A equipe do projeto é obrigada a manter a confidencialidade no que diz respeito ao relato de um incidente. Mais detalhes das políticas de aplicação específicas podem ser publicadas separadamente.
Mantenedores de projetos que não seguem ou fazem comprir o Código de Conduta de boa-fé podem enfrentar repercussões temporárias ou permanentes, conforme determinado por outros membros da liderança do projeto.
## Atribuição
Este Código de Conduta é uma adaptação do [Pacto do Colaborador][homepage], versão 1.4, disponível em [http://contributor-covenant.org/version/1/4][version]
[homepage]: http://contributor-covenant.org
[version]: http://contributor-covenant.org/version/1/4/

View file

@ -5,27 +5,27 @@
:+1::tada: Primeiramente, obrigado por utilizar seu tempo contribuindo! :tada::+1:
Esse projeto segue um [código de conduta](CODE_OF_CONDUCT.md).
Participando, é esperado que o código seja seguido. Favor reportar comportamentos inaceitáveis para atom@github.com.
Ao participar, é esperado que o código seja seguido. Favor reportar comportamentos inaceitáveis para atom@github.com.
O texto a seguir é um conjunto de diretrizes para a contribuição com o Electron.
São apenas diretrizes, e não regras, use o seu bom senso e sinta-se livre para sugerir modificações nesse documento em um pull request.
O texto a seguir é um conjunto de diretrizes para a contribuir com o Electron.
Estas são apenas diretrizes e não regras, use o seu bom senso e sinta-se livre para propor alterações nesse documento em um pull request.
## Enviando Issues
## Reportando Issues
* Você pode criar uma issue [aqui](https://github.com/electron/electron/issues/new),
porém, antes disso, por favor, leia as notas abaixo e inclua o máximo de detalhes possível em seu relato. Se puder, favor informar:
mas antes disso, por favor, leia as notas abaixo e inclua o máximo de detalhes possíveis em seu relato. Se puder, favor informar:
* A versão do Electron utilizada
* O sistema operacional utilizado
* Se possível, o que estava fazendo para que esse problema surgisse e o que era esperado que acontecesse
* Se possível, o que estava fazendo quando o problema ocorreu e o que era esperado que acontecesse
* Alguns outros meios que irão ajudar a resolver a issue:
* Imagens da tela e GIFs animados
* Capturas de tela e GIFs animados
* Saída de erro que aparece no terminal, dev tools ou algum em algum alerta
* Faça uma [pesquisa rápida](https://github.com/electron/electron/issues?utf8=✓&q=is%3Aissue+)
para verificar se já não existe uma issue similar já aberta
## Enviando Pull Requests
## Submetendo Pull Requests
* Inclua imagens da tela e GIFs animados em seu pull request sempre que possível.
* Inclua capturas de tela e GIFs animados em seu pull request sempre que possível.
* Siga os [padrões de código definidos nos documentos](/docs/development/coding-style.md) para JavaScript, C++, e Python.
* Escreva a documentação em [Markdown](https://daringfireball.net/projects/markdown).
Veja o [Guia de estilo de documentação](/docs/styleguide.md).
@ -33,16 +33,16 @@ porém, antes disso, por favor, leia as notas abaixo e inclua o máximo de detal
## Guias de estilo
### General Code
### Código Geral
* Arquivos terminam com uma nova linha.
* Terminar arquivos com uma nova linha.
* A organização deve estar na seguinte ordem:
* Módulos embutidos do Node (como o `path`)
* Módulos embutidos do Electron (como `ipc`, `app`)
* Módulos locais (usando caminhos relativos)
* Defina as propriedades da classe na seguinte ordem:
* Métodos da classe e propriedades (métodos iniciam com `@`)
* Métodos de instância e propriedades
* Métodos e propriedades da classe (métodos iniciam com `@`)
* Métodos e propriedades de instância
* Evite o uso de códigos dependentes da plataforma:
* Use `path.join()` para concatenar nomes de arquivos.
* Use `os.tmpdir()` ao invés de `/tmp` quando precisar referenciar o diretório temporário.
@ -60,13 +60,13 @@ porém, antes disso, por favor, leia as notas abaixo e inclua o máximo de detal
* :art: `:art:` quando aperfeiçoar o formato/estrutura do código
* :racehorse: `:racehorse:` quando aperfeiçoar a performance
* :non-potable_water: `:non-potable_water:` quando previnir vazamento de memória
* :memo: `:memo:` quando escrever documentos
* :penguin: `:penguin:` quando consertar algo no Linux
* :apple: `:apple:` quando consertar algo no macOS
* :checkered_flag: `:checkered_flag:` quando consertar algo no Windows
* :memo: `:memo:` quando escrever documentação
* :penguin: `:penguin:` quando corrigir algo no Linux
* :apple: `:apple:` quando corrigir algo no OSX
* :checkered_flag: `:checkered_flag:` quando corrigir algo no Windows
* :bug: `:bug:` quando corrigir um bug
* :fire: `:fire:` quando remover código ou arquivos
* :green_heart: `:green_heart:` quando consertar o build do CI
* :green_heart: `:green_heart:` quando corrigir o build do CI
* :white_check_mark: `:white_check_mark:` quando adicionar testes
* :lock: `:lock:` quando estiver lidando com segurança
* :arrow_up: `:arrow_up:` quando atualizar dependências

View file

@ -0,0 +1,67 @@
[![Electron Logo](http://electron.atom.io/images/electron-logo.svg)](http://electron.atom.io/)
[![Travis Build Status](https://travis-ci.org/electron/electron.svg?branch=master)](https://travis-ci.org/electron/electron)
[![AppVeyor Build Status](https://ci.appveyor.com/api/projects/status/kvxe4byi7jcxbe26/branch/master?svg=true)](https://ci.appveyor.com/project/Atom/electron)
[![devDependency Status](https://david-dm.org/electron/electron/dev-status.svg)](https://david-dm.org/electron/electron#info=devDependencies)
[![Join the Electron Community on Slack](http://atom-slack.herokuapp.com/badge.svg)](http://atom-slack.herokuapp.com/)
:memo: Available Translations: [Korean](https://github.com/electron/electron/tree/master/docs-translations/ko-KR/project/README.md) | [Simplified Chinese](https://github.com/electron/electron/tree/master/docs-translations/zh-CN/project/README.md) | [Brazilian Portuguese](https://github.com/electron/electron/tree/master/docs-translations/pt-BR/project/README.md)
O framework Electron permite escrever aplicações desktop multi-plataforma usando JavaScript, HTML e CSS. Baseia-se em [Node.js](https://nodejs.org/) e [Chromium](http://www.chromium.org) e é usado pelo [editor Atom](https://github.com/atom/atom) e muitas outras [aplicações](http://electron.atom.io/apps).
Siga [@ElectronJS](https://twitter.com/electronjs) no Twitter para anúncios importantes.
Este projeto adere ao código do Pacto do Colaborador [código de conduta](CODE_OF_CONDUCT.md). Ao participar, espera-se que você siga esse código. Por favor, reporte o comportamento inaceitável para electron@github.com.
## Downloads
Binários pré-construídos e símbolos de depuração do Electron para Linux, Windows e macOS podem ser encontrados na página de [releases](https://github.com/electron/electron/releases).
Você também pode usar [`npm`](https://docs.npmjs.com/) para instalar os binários do electron:
```sh
# Install the `electron` command globally in your $PATH
npm install electron -g
# Install as a development dependency
npm install electron --save-dev
```
### Mirrors
- [China](https://npm.taobao.org/mirrors/electron)
## Documentação
Guias de referência da API estão localizados no diretório [docs](https://github.com/electron/electron/tree/master/docs). Ele também contém documentos que descrevem como construir e contribuir para o Electron.
## Documentos Traduzidos
- [Brazilian Portuguese](https://github.com/electron/electron/tree/master/docs-translations/pt-BR)
- [Korean](https://github.com/electron/electron/tree/master/docs-translations/ko-KR)
- [Japanese](https://github.com/electron/electron/tree/master/docs-translations/jp)
- [Spanish](https://github.com/electron/electron/tree/master/docs-translations/es)
- [Simplified Chinese](https://github.com/electron/electron/tree/master/docs-translations/zh-CN)
- [Traditional Chinese](https://github.com/electron/electron/tree/master/docs-translations/zh-TW)
- [Turkish](https://github.com/electron/electron/tree/master/docs-translations/tr-TR)
- [Ukrainian](https://github.com/electron/electron/tree/master/docs-translations/uk-UA)
- [Russian](https://github.com/electron/electron/tree/master/docs-translations/ru-RU)
- [French](https://github.com/electron/electron/tree/master/docs-translations/fr-FR)
## Começo Rápido
Clone o repositório e execute o [`electron/electron-quick-start`](https://github.com/electron/electron-quick-start) para ver um pequeno aplicativo Electron em ação.
## Comunidade
Você pode fazer perguntas e interagir com a comunidade nos seguintes locais:
- [`electron`](http://discuss.atom.io/c/electron) categoria nos fóruns Atom
- `#atom-shell` canal na Freenode
- [`Atom`](http://atom-slack.herokuapp.com/) canal no Slack
- [`electron-br`](https://electron-br.slack.com) *(Brazilian Portuguese)*
- [`electron-kr`](http://www.meetup.com/electron-kr/) *(Korean)*
- [`electron-jp`](https://electron-jp-slackin.herokuapp.com/) *(Japanese)*
- [`electron-tr`](http://www.meetup.com/Electron-JS-Istanbul/) *(Turkish)*
- [`electron-id`](https://electron-id.slack.com) *(Indonesia)*
Confira [awesome-electron](https://github.com/sindresorhus/awesome-electron) para uma lista mantida pela comunidade de exemplos de aplicativos úteis, ferramentas e recursos.

View file

@ -0,0 +1,33 @@
# Acessibilidade
Fazendo aplicações acessíveis é importante e nós estamos felizes em apresentar uma nova funcionalidade para [Devtron](http://electron.atom.io/devtron) e [Spectron](http://electron.atom.io/spectron) que dá aos desenvolvedores a oportunidade de fazer as suas aplicações melhor para todos.
---
Preocupações de acessibilidade em aplicações Electron são semelhantes aos de websites, porque eles são ambos em última análise HTML. Com aplicativos Electron, no entanto, você não pode usar recursos on-line para auditorias de acessibilidade porque a sua aplicação não tem uma URL para apontar para o auditor.
Esses novos recursos trazem essas ferramentas de auditoria para a sua aplicação Electron. Você pode optar por adicionar auditorias aos seus testes com Spectron ou usá-los dentro do DevTools com Devtron. Leia a seguir para obter um resumo das ferramentas ou verifique nossa [documentação de acessibilidade](http://electron.atom.io/docs/tutorial/accessibility) para obter mais informações.
### Spectron
No framework de testes Spectron, agora você pode auditar cada janela e tag `<webview>` em seu aplicativo. Por exemplo:
```javascript
app.client.auditAccessibility().then(function (audit) {
if (audit.failed) {
console.error(audit.message)
}
})
```
Você pode ler mais sobre este recurso na [documentação do Spectron](https://github.com/electron/spectron#accessibility-testing).
### Devtron
Em Devtron há uma nova guia de acessibilidade que permitirá auditar uma página no seu aplicativo, classificar e filtrar os resultados.
![devtron screenshot](https://cloud.githubusercontent.com/assets/1305617/17156618/9f9bcd72-533f-11e6-880d-389115f40a2a.png)
Ambas as ferramentas estão usando a biblioteca [Accessibility Developer Tools](https://github.com/GoogleChrome/accessibility-developer-tools) construída pela Google for Chrome. Você pode aprender mais sobre as regras de auditoria da biblioteca de acessibilidade no [wiki do repositório](https://github.com/GoogleChrome/accessibility-developer-tools/wiki/Audit-Rules).
Se você souber de outras ferramentas de acessibilidade para o Electron, adicione-as à [documentação de acessibilidade](http://electron.atom.io/docs/tutorial/accessibility) através de um pull request.

View file

@ -248,7 +248,7 @@ var webContents = win.webContents;
* `matches` Integer (可选) - 匹配数量.
* `selectionArea` Object (可选) - 协调首个匹配位置.
当使用 [`webContents.findInPage`](web-contents.md#webcontentsfindinpage) 进行页内查找并且找到可用值得时候发出事件.
当使用 [`webContents.findInPage`] 进行页内查找并且找到可用值得时候发出事件.
### Event: 'media-started-playing'
@ -499,7 +499,7 @@ var currentURL = win.webContents.getURL();
### `webContents.stopFindInPage(action)`
* `action` String - 指定一个行为来接替停止
[`webContents.findInPage`](web-contents.md#webcontentfindinpage) 请求.
[`webContents.findInPage`] 请求.
* `clearSelection` - 转变为一个普通的 selection.
* `keepSelection` - 清除 selection.
* `activateSelection` - 获取焦点并点击 selection node.
@ -862,3 +862,4 @@ win.webContents.debugger.sendCommand("Network.enable");
每当调试目标发出事件时发出.
[rdp]: https://developer.chrome.com/devtools/docs/debugger-protocol
[`webContents.findInPage`]: web-contents.md#webcontentsfindinpagetext-options

View file

@ -120,4 +120,70 @@ $ ./script/cpplint.py
```bash
$ ./script/test.py
```
```
## Advanced topics
默认编译配置是针对主流 Linux 桌面发行版而言, 对于其他特定发行版或平台, 以下信息可能会帮到你.
### 本地编译 `libchromiumcontent`
可以添加参数 `--build_libchromiumcontent``bootstrap.py` 脚本以避免使用预编译的
`libchromiumcontent` 二进制文件:
```bash
$ ./script/bootstrap.py -v --build_libchromiumcontent
```
默认情况下不会以 `shared_library` 方式编译, 所以你如果使用以下模式的话, 只能编译 Electron
`Release` 版本:
```bash
$ ./script/build.py -c R
```
### 使用系统提供的 `clang`
默认情况下 Electron 使用 Chromium 项目提供的预编译的 `clang` 进行编译. 如果基于某些原因
你想要使用已经安装到系统的 `clang` 进行编译, 可以添加 `--clang_dir=<path>` 参数给
`bootstrap.py` 以指定 `clang` 安装路径. 上面参数告诉编译脚本, 在目录 `<path>/bin/` 下有
`clang` 程序.
假设你的 `clang` 安装路径为 `/user/local/bin/clang`:
```bash
$ ./script/bootstrap.py -v --build_libchromiumcontent --clang_dir /usr/local
$ ./script/build.py -c R
```
### 使用 `clang` 之外的编译器
要使用其他编译器 (如: `g++`) 编译 Electron, 首先需要使用参数 `--disable_clang` 禁用 `clang`,
然后设置 `CC``CXX` 环境变量.
假设使用 GCC 工具链:
```bash
$ env CC=gcc CXX=g++ ./script/bootstrap.py -v --build_libchromiumcontent --disable_clang
$ ./script/build.py -c R
```
### 环境变量
除了 `CC``CXX`, 你还可以设置以下环境变量来自定以编译配置:
* `CPPFLAGS`
* `CPPFLAGS_host`
* `CFLAGS`
* `CFLAGS_host`
* `CXXFLAGS`
* `CXXFLAGS_host`
* `AR`
* `AR_host`
* `CC`
* `CC_host`
* `CXX`
* `CXX_host`
* `LDFLAGS`
以上环境变量需要在执行 `bootstrap.py` 前设置, 在执行 `build.py` 的时候再设置将无效.

View file

@ -312,7 +312,7 @@ Returns:
* `selectionArea` Object - Coordinates of first match region.
Emitted when a result is available for
[`webContents.findInPage`](web-contents.md#webcontentsfindinpage) request.
[`webContents.findInPage`] request.
#### Event: 'media-started-playing'
@ -775,7 +775,7 @@ the request can be obtained by subscribing to
#### `contents.stopFindInPage(action)`
* `action` String - Specifies the action to take place when ending
[`webContents.findInPage`](web-contents.md#webcontentfindinpage) request.
[`webContents.findInPage`] request.
* `clearSelection` - Clear the selection.
* `keepSelection` - Translate the selection into a normal selection.
* `activateSelection` - Focus and click the selection node.
@ -1261,3 +1261,4 @@ Emitted when debugging session is terminated. This happens either when
Emitted whenever debugging target issues instrumentation event.
[rdp]: https://developer.chrome.com/devtools/docs/debugger-protocol
[`webContents.findInPage`]: web-contents.md#contentsfindinpagetext-options

View file

@ -24,7 +24,7 @@ You can read more about this feature in [Spectron's documentation](https://githu
### Devtron
In Devtron there is a new accessibility tab which will allow you to audit a page in your app, sort and filter the results.
In Devtron, there is a new accessibility tab which will allow you to audit a page in your app, sort and filter the results.
![devtron screenshot](https://cloud.githubusercontent.com/assets/1305617/17156618/9f9bcd72-533f-11e6-880d-389115f40a2a.png)